Fetch and display ClickUp tasks ready for development
Fetch and display user stories/bugs from ClickUp filtered by status.
/clickup:list # Default: "To Do" tasks
/clickup:list --status "in progress" # Tasks currently being worked on
/clickup:list --status "to review" # Tasks ready for review
/clickup:list --all # All tasks (all statuses)
| Status | Use Case |
|---|---|
to do |
Tasks ready to start (default) |
in progress |
Tasks currently being worked on |
to review |
Tasks awaiting review |
done |
Completed tasks |
--all |
All tasks across all statuses |
When this command is invoked:
Load Environment: Read ClickUp credentials from the project's .env file:
CLICKUP_TOKEN - API authentication tokenCLICKUP_LIST_ID - The ClickUp list to fetch tasks fromParse Status Filter:
To Do--status provided, use that status (URL encode spaces as %20)Fetch Tasks: Call ClickUp API with the specified status and format with jq:
# IMPORTANT:
# - Always use jq to format output compactly to avoid truncation
# - Use subtasks=true to ensure ALL tasks are returned (not just first page)
# - The API may paginate results; subtasks=true bypasses this for most cases
# Default (To Do) - formatted output
curl -s "https://api.clickup.com/api/v2/list/${CLICKUP_LIST_ID}/task?statuses[]=To%20Do&include_closed=false&subtasks=true" \
-H "Authorization: ${CLICKUP_TOKEN}" | jq -r '
"š Tasks Ready for Development (To Do)\n",
(.tasks[] | "⢠[\(.id)] \(if (.tags | map(.name) | contains(["bug"])) then "š" elif (.tags | map(.name) | contains(["story"])) then "š" else " " end) \(.name)"),
"",
"Found \(.tasks | length) tasks ready for development.",
"",
"š” Use: /clickup:process <id> to set up a worktree and start"
'
# In Progress - with branch info
curl -s "https://api.clickup.com/api/v2/list/${CLICKUP_LIST_ID}/task?statuses[]=in%20progress&include_closed=false&subtasks=true" \
-H "Authorization: ${CLICKUP_TOKEN}" | jq -r '
"š Tasks In Progress\n",
(.tasks[] | "⢠[\(.id)] \(if (.tags | map(.name) | contains(["bug"])) then "š" elif (.tags | map(.name) | contains(["story"])) then "š" else " " end) \(.name)\n Branch: \((.custom_fields[] | select(.name == "branch") | .value) // "not set")"),
"",
"Found \(.tasks | length) tasks in progress.",
"",
"š” Use: /clickup:work <id> to spawn a subagent to work on a task",
"š” Use: /clickup:work --all to work on all in-progress tasks",
"š” Use: /clickup:done to complete a task"
'
# All statuses - comprehensive view
curl -s "https://api.clickup.com/api/v2/list/${CLICKUP_LIST_ID}/task?include_closed=false&subtasks=true" \
-H "Authorization: ${CLICKUP_TOKEN}" | jq -r '
"š All Tasks\n",
(.tasks[] | "⢠[\(.id)] \(if (.tags | map(.name) | contains(["bug"])) then "š" elif (.tags | map(.name) | contains(["story"])) then "š" else " " end) [\(.status.status)] \(.name)"),
"",
"Found \(.tasks | length) total tasks."
'
Format Output: Display tasks in a formatted table with:
/clickup:process or /clickup:work)Show Next Steps: Context-aware suggestions based on status
š Tasks Ready for Development (To Do)
⢠[86bqy2f6j] š Fix payment webhook race condition
⢠[86bqy3abc] š Add user profile avatar upload
⢠[def456uvw] š Update dashboard layout for better mobile responsiveness
Found 48 tasks ready for development.
š” Use: /clickup:process <id> to set up a worktree and start
š Tasks In Progress
⢠[86bqy2f6j] š Fix payment webhook race condition
Branch: fix/86bqy2f6j-payment-webhook
⢠[abc123def] š Add user profile feature with avatar upload support
Branch: feature/abc123def-user-profile
Found 2 tasks in progress.
š” Use: /clickup:work <id> to spawn a subagent to work on a task
š” Use: /clickup:work --all to work on all in-progress tasks
š” Use: /clickup:done to complete a task
š All Tasks
⢠[86bqy2f6j] š [in progress] Fix payment webhook race condition
⢠[86bqy3abc] š [to do] Add user profile avatar upload
⢠[def456uvw] š [to review] Update dashboard layout for better mobile responsiveness
Found 50 total tasks.
CLICKUP_TOKEN is not set: Show error with instructions to set it in .envCLICKUP_LIST_ID is not set: Show error with instructions.env file to get credentialsARGUMENTS: $ARGUMENTS