Tasks

The spine of a session: states, dependencies, and what blocked actually means.

Actionable breakdown of a feature's PRD.

Scope

Tasks belong to a feature. A feature can have many tasks. A task can be moved to a different feature.

Fields

  • title, description
  • status - todo / inProgress / done
  • priority - low / medium / high
  • assignee - optional string (who's working on it)
  • blockedBy - array of task UUIDs that must complete first
  • order - position in the list
  • completedAt - auto-set when status flips to done

The "NEXT" task

get_tasks highlights the first unblocked todo task - its blockedBy list contains only done tasks.

This gives the agent a deterministic "what do I work on next?" answer without needing to re-read the whole PRD.

In the UI, the NEXT task shows a blue NEXT badge above its title.

Dependencies

When tasks are created via create_tasks, dependencies are given as 0-based array indices (blocked_by_indices). The tool resolves them to UUIDs after creating all tasks.

Adding dependencies later:

  • "Task X is blocked by task Y" → the agent adjusts dependencies

Managing

In the UI:

  • Each task row has an X button to delete
  • Right-click → Delete task

Via natural language:

  • "Mark task X as done" → status change, sets completedAt
  • "Move all these tasks to [other feature]" → reassigns featureId
  • "Delete this task"
  • "Assign X to me"
  • "What's next?" → shows NEXT task

When a feature is deleted

All its tasks cascade-delete. No orphans.