transition_task
Move a task through todo, in_progress, done, blocked, or cancelled status, requiring a check for done and reason for cancelled.
Instructions
Use it when work starts, finishes, stalls or is dropped (start, finish, block or cancel a task).
Move a task to a new status: todo | in_progress | done | blocked | cancelled. The
only tool that changes status — title, content and tags are update_task.
`task_id` is the full id, e.g. DLY-042; the project is derived from that prefix, so
`key` may be omitted (if given it must match). Call when work starts (in_progress,
ideally with the branch name) and when it finishes (done); the server stamps
started_at and completed_at itself.
`done` requires `check`: one line, at most 300 characters, saying **what proves the work
done** — the command you ran and what it printed ("uv run pytest -q: 96 passed"), or the
observable a reader can go and see ("GET /healthz returns 200 on the deployed host").
You are the only one who can write it; by the next session the run is gone and all that
is left is your word. A restatement of the title proves nothing, so do not write one.
get_status shows it beside the finished task, and reopening a task drops it.
`cancelled` is the soft delete — there is no hard one: the record is kept but hidden
from queries by default, and `reason` is required. Use blocked for work that may
resume, cancelled for work that will not happen. Transitioning a cancelled task to
any other status restores it.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | ||
| check | No | ||
| branch | No | ||
| reason | No | ||
| status | Yes | ||
| task_id | Yes |