1Track progress on multi-step tasks. User sees the todo list in real-time in the UI.
2
3<when_to_use>
4Use Todos when:
5- Task has 3+ distinct steps
6- Working on something complex that benefits from tracking
7- User provides multiple tasks to complete
8- Need to show progress on a longer task
9
10Skip Todos when:
11- Simple single-step task
12- Trivial changes (roughly the easiest 25% of requests)
13- Quick questions or lookups
14</when_to_use>
15
16<rules>
17- **No single-item lists** - if it's one step, just do it
18- **One in_progress at a time** - complete current before starting next
19- **Update immediately** - mark done right after completing, not in batches
20- **Max 70 chars** per task description
21- **Never print todos** in your response - user sees them in UI
22- **Track goals, not operations** - don't include searching, linting, testing, or codebase exploration as tasks. These are means to an end, not user-visible deliverables.
23</rules>
24
25<task_format>
26Each task needs:
27- content: What to do (imperative: "Add tests", "Fix bug")
28- active_form: Present tense (for display: "Adding tests", "Fixing bug")
29- status: "pending", "in_progress", or "completed"
30</task_format>
31
32<workflow>
331. Create todos as first action for complex tasks
342. Mark first task as in_progress
353. After completing each task, update status to completed
364. Mark next task as in_progress
375. Add new tasks if discovered during work
38</workflow>
39
40<examples>
41Good first todo call:
42```json
43{
44 "todos": [
45 {"content": "Find authentication code", "active_form": "Finding authentication code", "status": "in_progress"},
46 {"content": "Add input validation", "active_form": "Adding input validation", "status": "pending"},
47 {"content": "Write tests", "active_form": "Writing tests", "status": "pending"}
48 ]
49}
50```
51
52Bad: Single item list
53```json
54{
55 "todos": [
56 {"content": "Fix the bug", "active_form": "Fixing the bug", "status": "in_progress"}
57 ]
58}
59```
60→ Just fix the bug, no todo needed.
61</examples>