Todo Update
Purpose
Modify an existing todo's properties (status, priority, due date) or add execution notes and related information.
Execution Flow
Phase 1: Identify Todo
If user specifies todo in command:
-
Parse the todo identifier
-
Example: /todo-update Review design docs
If not specified:
-
List active todos
-
Ask user to select: { "question": "Which todo do you want to update?", "header": "Select Todo", "options": [ {"label": "#1 Reply to client email", "description": "High priority, due 2025-01-15"}, {"label": "#2 Review design docs", "description": "Medium priority, in progress"}, {"label": "#3 Update documentation", "description": "Low priority"} ], "multiSelect": false }
Phase 2: Determine Update Type
Ask what to update:
{ "question": "What would you like to update?", "header": "Update Type", "options": [ {"label": "Status", "description": "Change to pending, in_progress, or blocked"}, {"label": "Priority", "description": "Change to high, medium, or low"}, {"label": "Due Date", "description": "Set or change the deadline"}, {"label": "Add Note", "description": "Add an entry to the execution log"}, {"label": "Add Dependency", "description": "Link this todo to another todo"}, {"label": "Add Related File", "description": "Link to a file in the knowledge base"} ], "multiSelect": true }
Phase 3: Collect New Values
Based on selection, gather the new values:
Status Change:
{ "question": "New status?", "header": "Status", "options": [ {"label": "pending", "description": "Not started yet"}, {"label": "in_progress", "description": "Currently working on this"}, {"label": "blocked", "description": "Waiting for something else"} ], "multiSelect": false }
If blocked, also ask for reason:
What is blocking this todo? (e.g., "Waiting for client response")
Priority Change:
{ "question": "New priority?", "header": "Priority", "options": [ {"label": "High", "description": "Urgent or time-sensitive"}, {"label": "Medium", "description": "Normal priority"}, {"label": "Low", "description": "Can wait"} ], "multiSelect": false }
Due Date Change:
{ "question": "New due date?", "header": "Due Date", "options": [ {"label": "Remove deadline", "description": "Clear the due date"}, {"label": "Today", "description": "Due by end of today"}, {"label": "Tomorrow", "description": "Due by end of tomorrow"}, {"label": "This week", "description": "Due by end of this week"}, {"label": "Next week", "description": "Due by end of next week"} ], "multiSelect": false }
Add Note:
What note would you like to add? (This will be added to the execution log with today's date)
Add Dependency:
-
List other active todos
-
Ask user to select which one this depends on
-
Update dependencies list in frontmatter
Add Related File:
Enter the path to the related file (relative to knowledge base root):
Phase 4: Update File
Read current file
Update frontmatter fields:
Updated fields only
status: [new status] priority: [new priority] due_date: [new date or null] blocking_reason: [if blocked] dependencies:
-
path: [new dependency path] status: [current status of that todo] related_files:
-
[new file path]
Add execution log entry:
[Current Date]
- [Description of change]
- [Field]: [old value] → [new value]
Examples:
2025-01-13
- Priority updated
- Priority: medium → high
2025-01-13
- Status changed to blocked
- Status: pending → blocked
- Reason: Waiting for client response
2025-01-13
- Added note: "Discussed requirements with team, need more details"
Phase 5: Handle Status Changes
If changed TO blocked:
-
Require blocking_reason
-
Add to frontmatter
If changed FROM blocked:
-
Clear blocking_reason
-
Log unblock reason in execution log
If changed TO in_progress:
- Log when work started
Phase 6: Update Governance
-
If title or priority changed, update Todos/active/README.md
-
Update "Last updated" timestamp
Phase 7: Report
✅ Todo updated: "Review design docs"
Changes made:
- Priority: medium → high
- Due date: (none) → 2025-01-20
- Added note: "Client requested by end of week"
Current state:
- Status: pending
- Priority: high
- Due: 2025-01-20
View all todos: /todo-list
Bulk Update
For updating multiple todos at once:
{ "question": "Select todos to update", "header": "Batch Update", "options": [ {"label": "#1 Reply to client email", "description": "High priority"}, {"label": "#2 Review design docs", "description": "Medium priority"}, {"label": "#3 Update documentation", "description": "Low priority"} ], "multiSelect": true }
Then ask what change to apply to all:
-
Common use case: Change priority of multiple items
-
Apply same change to all selected
Quick Updates
Support shorthand commands:
-
/todo-update #1 priority high → Change todo #1 to high priority
-
/todo-update "Review docs" status in_progress → Start working on todo
-
/todo-update #2 due tomorrow → Set due date to tomorrow
Parse these patterns and skip confirmation if unambiguous.
Error Handling
Todo Not Found
Todo not found: "[search term]"
Active todos:
- Reply to client email
- Review design docs
Try again with the correct title or number.
Invalid Value
Invalid priority value: "urgent"
Valid options:
- high
- medium
- low
Circular Dependency
If adding a dependency would create a loop:
Cannot add dependency: This would create a circular dependency.
[Todo A] → depends on → [Todo B] → depends on → [Todo A]
Please choose a different todo or remove an existing dependency first.