Interact with FlowDeck Project Management API (projects, cycles, tasks). Use for CRUD + archive/unarchive operations via the FlowDeck REST API through Supabase Edge Functions. Trigger when user asks about project status, cycle progress, task management, or implementing work from a Flow task.
Interact with the FlowDeck project management module via the REST API gateway
(base URL: https://<supabase_url>/functions/v1/api-gateway).
Run the script using the absolute path (do NOT cd to the skill directory):
uv run ~/.codex/skills/flow-pms/scripts/flow_api.py <action> <resource> [options]
Important: Always run from the user's current working directory so any output files are saved where the user is working.
| Action | Description | Example |
|---|---|---|
list | List resources (paginated) | uv run ... list projects --limit 50 |
get| Get single resource |
uv run ... get projects --id <uuid> |
create | Create resource | uv run ... create projects --data '{"name":"X","prefix":"X"}' |
update | Update resource | uv run ... update tasks --id <uuid> --data '{"status":"done"}' |
delete | Delete resource | uv run ... delete tasks --id <uuid> |
archive | Archive project | uv run ... archive projects --id <uuid> |
unarchive | Unarchive project (to on_hold) | uv run ... unarchive projects --id <uuid> |
| Resource | Endpoint | Notes |
|---|---|---|
projects | /projects | Project management |
cycles | /projects/{projectId}/cycles | Sprints, scoped to project |
tasks | /projects/{projectId}/tasks | Tasks, scoped to project |
comments | /tasks/{taskId}/comments | Comments on tasks |
list--limit N (default 50, max 200)--offset N (default 0)--status — filter by status enum--priority — filter task priority (tasks)--cycle-id — filter tasks by cycle--assignee-id — filter tasks by assignee--project-id — parent project ID for scoped resources (cycles, tasks, comments)briefing, planning, in_progress, review, completed, post_launch, on_hold, continuous_support, archived
draft, active, completed, cancelled
backlog -> todo -> in_progress -> in_review -> done / cancelled
none, low, medium, high, urgent
feature, bug, improvement, task
For prompts like Me atualize sobre o status do projeto X no flow:
list projects to resolve project by nameget projects --id <uuid> for full detailslist cycles --project-id <uuid> to find active cycle (prefer status=active, fallback to latest)list tasks --project-id <uuid> to get taskslist cycles --project-id <uuid>status=active; mention if none existslist tasks --project-id <uuid> --cycle-id <uuid> for task-level detailRequired fields for project create: name, prefix
Required fields for task create: only title by API, but you MUST at minimum also:
cycle_id to itPRJ-42) or titleAsk for confirmation before:
Do not ask when the user already clearly requested the destructive action and the target is unambiguous.
The script checks for API key in this order:
--api-key argument (use if user provided key in chat)FLOWBOARD_API_KEY environment variableIf neither is available, the script exits with an error message.
FLOWBOARD_API_KEY — Bearer API keyFLOWBOARD_BASE_URL — API base URL (default: https://mycivgjuujlnyoycuwrz.supabase.co/functions/v1/api-gateway)command -v uv (must exist)test -n "$FLOWBOARD_API_KEY" (or pass --api-key)Error: No API key provided. -> set FLOWBOARD_API_KEY or pass --api-keyHTTP 401 -> invalid/revoked keyHTTP 404 -> resource not found or doesn't belong to workspace"quota/permission/403" -> wrong key, no access, or quota exceededList projects in progress:
uv run ~/.codex/skills/flow-pms/scripts/flow_api.py list projects --status in_progress --limit 20
Create a task in a project:
uv run ~/.codex/skills/flow-pms/scripts/flow_api.py create tasks \
--project-id <uuid> \
--data '{"title":"Implementar login social","priority":"high","type":"feature"}'
Move task to in_progress:
uv run ~/.codex/skills/flow-pms/scripts/flow_api.py update tasks \
--id <uuid> --data '{"status":"in_progress"}'
Archive a project:
uv run ~/.codex/skills/flow-pms/scripts/flow_api.py archive projects --id <uuid>