Guidelines for managing task lists in markdown files to track progress on completing a PRD
- One sub-task at a time: Do NOT start the next sub‑task until you ask the user for permission and they say "yes" or "y"
- Completion protocol:
- When you finish a sub‑task, immediately mark it as completed by changing
[ ]to[x]. - If all subtasks underneath a parent task are now
[x], follow this sequence:
- First: Run the full test suite (
pytest,npm test,bin/rails test, etc.) - Only if all tests pass: Stage changes (
git add .) - Clean up: Remove any temporary files and temporary code before committing
- Commit: Use a descriptive commit message that:
-
Uses conventional commit format (
feat:,fix:,refactor:, etc.) -
Summarizes what was accomplished in the parent task
-
Lists key changes and additions
-
References the task number and PRD context
-
Formats the message as a single-line command using
-mflags, e.g.:git commit -m "feat: add payment validation logic" -m "- Validates card type and expiry" -m "- Adds unit tests for edge cases" -m "Related to T123 in PRD"
-
- Once all the subtasks are marked completed and changes have been committed, mark the parent task as completed.
- When you finish a sub‑task, immediately mark it as completed by changing
- Stop after each sub‑task and wait for the user's go‑ahead.
-
Update the task list as you work:
- Mark tasks and subtasks as completed (
[x]) per the protocol above. - Add new tasks as they emerge.
- Mark tasks and subtasks as completed (
-
Maintain the "Relevant Files" section:
- List every file created or modified.
- Give each file a one‑line description of its purpose.
When working with task lists, the AI must:
- Regularly update the task list file after finishing any significant work.
- Follow the completion protocol:
- Mark each finished sub‑task
[x]. - Mark the parent task
[x]once all its subtasks are[x].
- Mark each finished sub‑task
- Add newly discovered tasks.
- Keep "Relevant Files" accurate and up to date.
- Before starting work, check which sub‑task is next.
- After implementing a sub‑task, update the file and then pause for user approval.