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:
json
{ "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:
json
{
"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:
json
{
"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:
code
What is blocking this todo? (e.g., "Waiting for client response")
Priority Change:
json
{
"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:
json
{
"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:
code
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:
code
Enter the path to the related file (relative to knowledge base root):
Phase 4: Update File
- •
Read current file
- •
Update frontmatter fields:
yaml# 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:
markdown### [Current Date] - [Description of change] - [Field]: [old value] → [new value]
Examples:
markdown### 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
code
✅ 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:
json
{
"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
code
Todo not found: "[search term]" Active todos: 1. Reply to client email 2. Review design docs Try again with the correct title or number.
Invalid Value
code
Invalid priority value: "urgent" Valid options: - high - medium - low
Circular Dependency
If adding a dependency would create a loop:
code
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.