todo-features
Updates todo.md and features.md to reflect current project state. Invoke explicitly with /todo-features — do NOT auto-trigger after other skills.
Todo & Features
Maintain two living documents: todo.md (what needs doing now) and features.md (what the thing does and will do). These are intentionally separate from project-plan.md — three different lenses on the same project.
The Three Lenses
- project-plan.md — How we're building it. Phases, work units, dependencies, sequencing. The builder's view.
- todo.md — What needs doing right now. Actionable items, ordered by priority. The operator's view.
- features.md — What the thing does and will do. Capabilities, status, user-facing behavior. The product view.
These overlap intentionally. A work unit in the plan might generate three todos and describe one feature. Keeping them separate means each document answers its own question cleanly.
Instructions
Updating todo.md
-
Read the current todo.md (if it exists) and project-plan.md. Understand what's already tracked and what the plan says is next.
-
Sync with reality. Remove or check off items that are done. Add items discovered during recent work. Re-prioritize based on current blockers and dependencies.
-
Format consistently. Use this structure:
# Todo ## Now (current sprint / immediate) - [ ] Item with enough context to act on without re-reading the plan - [ ] Item referencing work unit if applicable (WU-N) ## Next (queued, unblocked) - [ ] Item - [ ] Item ## Later (blocked or low priority) - [ ] Item — blocked by [what] - [ ] Item — low priority, revisit after [milestone] ## Done (recent, for context) - [x] Item — completed YYYY-MM-DD -
Each item should be actionable. "Fix auth" is too vague. "Add JWT expiry validation to auth middleware (WU-3)" tells someone what to do. Include enough context that the item stands alone.
-
Keep the Done section short. Only the last 5-10 completed items, for context. Older items get removed — the plan changelog is the permanent record.
Updating features.md
-
Read the current features.md (if it exists) and project-context.md. Understand what capabilities are documented and what the project currently supports.
-
Sync with reality. Update feature statuses based on what's been built. Add newly discovered features. Mark features that were cut or deferred.
-
Format consistently. Use this structure:
# Features ## Shipped - **Feature Name** — Brief description of what it does, from the user's perspective. ## In Progress - **Feature Name** — What it will do. What's left to finish. (WU-N if applicable) ## Planned - **Feature Name** — What it will do. Why it matters. Expected phase. ## Deferred / Cut - **Feature Name** — What it was. Why it was deferred/cut. Revisit condition. -
Write from the user's perspective. Features describe what the product does, not how the code works. "JWT-based authentication" is a feature. "AuthMiddleware class with RS256 validation" is an implementation detail for the plan.
Creating from Scratch
If neither file exists (first run, typically during init):
- Read
project-context.mdandproject-plan.md. - Derive the initial todo list from the plan's first phase and any prerequisites.
- Derive the initial feature list from the project scope and planned capabilities.
- Write both files using the formats above.
Examples
User: /todo-features
Read both files and the plan/context. Update todo.md with newly completed items checked off and any new items. Update features.md with any status changes.
User: update the todos — we just finished the auth layer
Read todo.md. Check off auth-related items. Add any follow-up items that emerged. Move items from "Next" to "Now" if they're unblocked.
User: /todo-features features
Only update features.md. Read project-context.md for current state. Move features between Shipped/In Progress/Planned as appropriate.
Before completing, read and follow ../references/cross-cutting-rules.md.