Skills flow-pms
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.
git clone https://github.com/openclaw/skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/araujodgdev/flow-pms" ~/.claude/skills/openclaw-skills-flow-pms && rm -rf "$T"
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/araujodgdev/flow-pms" ~/.openclaw/skills/openclaw-skills-flow-pms && rm -rf "$T"
skills/araujodgdev/flow-pms/SKILL.mdFlowDeck Project Management API
Interact with the FlowDeck project management module via the REST API gateway (base URL:
https://<supabase_url>/functions/v1/api-gateway).
Usage
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.
Actions
| Action | Description | Example |
|---|---|---|
| List resources (paginated) | |
| Get single resource | |
| Create resource | |
| Update resource | |
| Delete resource | |
| Archive project | |
| Unarchive project (to on_hold) | |
PMS Resources
| Resource | Endpoint | Notes |
|---|---|---|
| | Project management |
| | Sprints, scoped to project |
| | Tasks, scoped to project |
| | Comments on tasks |
Filters for list
list
(default 50, max 200)--limit N
(default 0)--offset N
— filter by status enum--status
— filter task priority (tasks)--priority
— filter tasks by cycle--cycle-id
— filter tasks by assignee--assignee-id
— parent project ID for scoped resources (cycles, tasks, comments)--project-id
Status/Stage/Priority Enums
Projects
briefing, planning, in_progress, review, completed, post_launch, on_hold, continuous_support, archived
Cycles
draft, active, completed, cancelled
Tasks (status)
backlog -> todo -> in_progress -> in_review -> done / cancelled
Tasks (priority)
none, low, medium, high, urgent
Tasks (type)
feature, bug, improvement, task
Core workflows
Project status update
For prompts like
Me atualize sobre o status do projeto X no flow:
to resolve project by namelist projects
for full detailsget projects --id <uuid>
to find active cycle (preferlist cycles --project-id <uuid>
, fallback to latest)status=active
to get taskslist tasks --project-id <uuid>- Summarize: project status, deadline, active cycle progress, task counts by status/priority, risk signals (urgent open tasks, blocked high-priority items)
Current cycle status
- Resolve project
list cycles --project-id <uuid>- Pick cycle with
; mention if none existsstatus=active
for task-level detaillist tasks --project-id <uuid> --cycle-id <uuid>- Report: progress, scope, completed_scope, dates, deadline risk signals
Create a task
- Resolve the target project
- Determine status and cycle from the project's active cycle
- Include optional fields only when the user specified them or when you need one clarification
Required fields for project create:
name, prefix
Required fields for task create: only
title by API, but you MUST at minimum also:
- Resolve the project (ask if missing)
- Check for an active cycle and default
to itcycle_id - Check for an assignee
Implement what is in a task
- Resolve the project
- Resolve the task by identifier (e.g.
) or titlePRJ-42 - Fetch the full task
- Summarize scope from title, description, type, priority, due date, cycle
- Use the task content as the implementation brief
- If code changes are made outside Flow, suggest or perform a task status update afterward
Mutation safety
Ask for confirmation before:
- Deleting projects, cycles, or tasks
- Broad updates when the target match is ambiguous
Do not ask when the user already clearly requested the destructive action and the target is unambiguous.
API Key
The script checks for API key in this order:
argument (use if user provided key in chat)--api-key
environment variableFLOWBOARD_API_KEY
If neither is available, the script exits with an error message.
API Key + Base URL Environment Variables
— Bearer API keyFLOWBOARD_API_KEY
— API base URL (default:FLOWBOARD_BASE_URL
)https://mycivgjuujlnyoycuwrz.supabase.co/functions/v1/api-gateway
Preflight + Common Failures
- Preflight:
(must exist)command -v uv
(or passtest -n "$FLOWBOARD_API_KEY"
)--api-key
- Common failures:
-> setError: No API key provided.
or passFLOWBOARD_API_KEY--api-key
-> invalid/revoked keyHTTP 401
-> resource not found or doesn't belong to workspaceHTTP 404
-> wrong key, no access, or quota exceeded"quota/permission/403"
Examples
List 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>