Manage TODOs
Overview
Use the repository's existing TODO conventions first. If no convention exists, prefer a root TODO.md with stable IDs and simple Markdown sections.
Canonical Format
Use this default format unless the repository already defines another one:
- [ ] TODO-0001: Short imperative title
- Status: todo
- Area: docs
- Goal: One sentence describing the outcome.
- Done when: Concrete acceptance criteria.
Allowed statuses:
todo: Not started or not currently active.in-progress: Started but incomplete.blocked: Cannot proceed until something changes.done: Completed and verified.cancelled: Intentionally abandoned.
When marking a TODO done, set the checkbox to [x]. For every other status, keep [ ].
Write TODOs
- Inspect existing TODO files before adding anything. Prefer root
TODO.md; also checkdocs/todos/if it exists. - Reuse the next numeric ID in the existing sequence. If no sequence exists, start at
TODO-0001. - Write the title as a short action, not a vague theme.
- Include
Area,Goal, andDone whenunless the existing file uses a leaner format. - Keep TODOs small enough to complete in one focused change. Split large features into a parent TODO plus concrete child TODOs only when useful.
- Avoid hiding important follow-up work only in chat; add it to the TODO file when the user wants persistent tracking.
List TODOs
When listing TODOs:
- Read the TODO source directly.
- Group by status or by the file's sections, whichever is clearer.
- Include each TODO ID, title, status, and any blocker/cancel reason.
- Keep the response concise. Do not paste the full file unless the user asks.
Change Status
When changing a TODO status:
- Identify the TODO by ID. If the user gives only a title, match conservatively and ask if ambiguous.
- Update the checkbox and
Statusfield together. - Move the TODO between sections only if the file already uses status sections.
- For
done, addCompleted: YYYY-MM-DDif the file already tracks dates. - For
blocked, add or updateBlocked reason: .... - For
cancelled, add or updateCancelled reason: ....
If the user asks to mark a TODO blocked or cancelled without a reason, ask for the reason before editing unless they explicitly say to skip it. A short prompt is enough:
What should I record as the blocked reason for TODO-0003?
Do not invent blocker or cancellation reasons. If the reason is obvious from the user's message, use it and do not ask.
Handoff
After editing TODOs, summarize:
- TODOs added or changed.
- Any status reasons recorded.
- Any verification performed, such as Markdown link checks or file review.