Todo Complete
Purpose
Mark a todo as completed, update its execution log, move it to the completed/ directory, and handle dependency unblocking for other todos.
Execution Flow
Phase 1: Identify Todo
If user specifies todo in command:
-
Parse the todo identifier (title, filename, or number from list)
-
Example: /todo-complete Reply to client email
If not specified:
List active todos using compact format:
Which todo would you like to complete?
- Reply to client email (High, due 2025-01-15)
- Review design docs (Medium, in progress)
- Update documentation (Low)
Ask user to select:
{ "question": "Which todo do you want to complete?", "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: Confirm Completion
Ask for confirmation:
{ "question": "Mark 'Reply to client email' as complete?", "header": "Confirm", "options": [ {"label": "Yes, complete it", "description": "Archive this todo"}, {"label": "No, cancel", "description": "Keep todo as active"} ], "multiSelect": false }
Phase 3: Update Todo File
Read current file content
Update frontmatter:
status: completed completed_at: [Current date YYYY-MM-DD]
Add completion entry to execution log:
[Current Date]
- Marked as completed
- Status: [previous status] → completed
- Completion confirmed by user
Phase 4: Move to Completed
Move file:
-
From: Todos/active/[filename]
-
To: Todos/completed/[filename]
Update Todos/active/README.md :
-
Remove the entry for this todo
-
Update "Last updated" timestamp
Update Todos/completed/README.md :
-
Add entry for the completed todo
-
Format: - filename - [title] (Completed: [date])
-
Update "Last updated" timestamp
Update Todos/README.md :
-
Decrement active count
-
Increment completed count
-
Add to "Recent Changes" section
Phase 5: Handle Dependencies
Search for dependent todos:
Use Grep to search Todos/active/ for files containing this todo's path:
grep -l "[completed todo filename]" Todos/active/*.md
For each dependent todo found: a. Read the todo file b. Parse dependencies list c. Update this todo's status to completed in the dependencies d. Check if ALL dependencies are now completed e. If yes:
-
Change status from blocked to pending
-
Clear blocking_reason
-
Add log entry:
[Current Date]
- Dependency completed: [completed todo title]
- Status: blocked → pending
- All dependencies now satisfied
f. Add to unblocked list for reporting
Phase 6: Report
Standard completion:
✅ Todo completed: "Reply to client email"
- Previous status: in_progress
- Completed at: 2025-01-13
- Archived to: Todos/completed/2025-01-10_reply-client-email.md
With unblocked todos:
✅ Todo completed: "Reply to client email"
- Previous status: in_progress
- Completed at: 2025-01-13
- Archived to: Todos/completed/2025-01-10_reply-client-email.md
🔓 Unblocked todos:
- "Prepare client presentation" is now ready to start
- "Send follow-up email" is now ready to start
Would you like to start working on any of these?
Error Handling
Todo Not Found
Todo not found: "[search term]"
Active todos:
- Reply to client email
- Review design docs
- Update documentation
Try again with the correct title or number.
Already Completed
"[todo title]" is already completed.
Completed on: 2025-01-10 Location: Todos/completed/[filename]
Has Incomplete Dependencies
If completing a todo that other todos depend on, proceed normally (this unblocks those todos).
Blocked Status
If the todo being completed is currently blocked:
Note: This todo was marked as blocked, but you're completing it anyway. Proceeding with completion...
Batch Completion
If user wants to complete multiple todos:
{ "question": "Select todos to complete", "header": "Batch Complete", "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 }
Process each selected todo in sequence, collecting results for a summary report.