done
Scannednpx machina-cli add skill endlessblink/master-plan/done --openclawTask Completion Workflow
Finalize a completed task: verify tests pass, commit changes, update MASTER_PLAN.md, and push.
Triggers
/master-plan:done- Main command- "mark done", "task complete", "finish task", "ship it"
Workflow
Step 1: Check What Changed
Run git status to see what files were modified:
git status
git diff --stat
Output immediately:
Files changed:
- [list of modified files]
Step 2: Get Task Information
Use AskUserQuestion to collect:
-
Task ID (header: "Task ID")
- Options: "Tracked task (enter ID)" or "Quick fix (no task ID)"
-
Run tests? (header: "Tests")
- Options: "Yes — run test suite (Recommended)" or "Skip tests"
Then ask in plain text: "What's a brief summary of the changes? (1-2 sentences)"
IMPORTANT: Wait for user to provide the summary before proceeding.
Step 3: Run Tests (unless skipped)
Detect and run the project's test command. Check in order:
- If
package.jsonexists →npm test - If
Cargo.tomlexists →cargo test - If
pyproject.tomlorsetup.pyexists →pytest - If
Makefilewithtesttarget →make test - If
go.modexists →go test ./...
If tests fail: STOP immediately. Report failures. Do NOT proceed. If tests pass: Continue. If no test command found: Warn user and continue.
Step 4: Update MASTER_PLAN.md (if tracked task)
Skip this step if user selected "Quick fix (no task ID)".
CRITICAL: Tasks may appear in multiple locations. Update ALL of them:
4a. Summary/Roadmap Table
Find the task row and update:
# Before:
| **TASK-XXX** | **Title** | **P2** | PLANNED | ... |
# After:
| ~~**TASK-XXX**~~ | ✅ **Title** | **P2** | ✅ DONE (YYYY-MM-DD) | ... |
4b. Subtask/Bullet Lists
# Before:
- TASK-XXX: Description
# After:
- ~~TASK-XXX~~: ✅ Description
4c. Detailed Section Header
# Before:
### TASK-XXX: Title (IN PROGRESS)
# After:
### ~~TASK-XXX~~: Title (✅ DONE)
4d. Verify All Updated
Search for the task ID and confirm all occurrences show strikethrough or ✅ DONE:
grep "TASK-XXX" docs/MASTER_PLAN.md
Step 5: Commit and Push
Stage all relevant files. NEVER commit:
.env*filescredentials*.jsonor files containing secretsnode_modules/,__pycache__/,target/,.venv/- Backup files, generated stats, lock files (unless intentional)
Prefer staging specific files by name over git add -A.
# Stage code files
git add <changed-files>
git add docs/MASTER_PLAN.md # if tracked task
# Commit
git commit -m "$(cat <<'EOF'
feat(TASK-XXX): Brief summary from user
- Key change 1
- Key change 2
Co-Authored-By: Claude <noreply@anthropic.com>
EOF
)"
# Push
git push
For quick fixes (no task ID):
git commit -m "$(cat <<'EOF'
fix: Brief summary from user
Co-Authored-By: Claude <noreply@anthropic.com>
EOF
)"
git push
Commit prefix conventions:
feat(TASK-XXX):— New featurefix(BUG-XXX):— Bug fixchore(TASK-XXX):— Maintenancerefactor(TASK-XXX):— Code refactoringdocs(TASK-XXX):— Documentation only
Step 6: Report Completion
Output this summary:
## Task Complete
- **Task**: TASK-XXX (or "Quick fix")
- **Summary**: [user's summary]
- **Tests**: ✅ Passed (or ⏭️ Skipped)
- **Commit**: [short hash] — [message]
- **Push**: ✅ Pushed to origin
- **MASTER_PLAN.md**: Updated / N/A
Important Rules
- NEVER skip commit/push — Changes must be pushed to the remote
- ALWAYS collect summary — Don't proceed without knowing what changed
- Update ALL locations in MASTER_PLAN.md for tracked tasks
- Verify with grep after updating MASTER_PLAN.md
- Wait for user input — Don't assume or skip questions
- Test failures block completion — If tests fail, stop and report
Files to NEVER Commit
.env*files (secrets)credentials*.json- Private keys, tokens
- Generated/cached files (
node_modules/,dist/,__pycache__/) - OS files (
.DS_Store,Thumbs.db)
Source
git clone https://github.com/endlessblink/master-plan/blob/master/skills/done/SKILL.mdView on GitHub Overview
The done skill automates shipping a finished task by running tests, committing changes, pushing to the repo, and updating MASTER_PLAN.md across all tracked locations. It activates when you say /master-plan:done or phrases like 'mark done', 'task complete', 'finish task', or 'ship it'.
How This Skill Works
Technically, the workflow surfaces changes with git status and git diff, then prompts for Task ID (or Quick fix) and whether to run tests. It auto-detects and runs the project's test command in order (npm test, cargo test, pytest, make test, go test) and stops on failure. For tracked tasks, it updates MASTER_PLAN.md in all locations, then commits and pushes with conventional prefixes, and finally outputs a Task Complete summary.
When to Use It
- After finishing a feature or bug fix and it is ready to ship.
- When a tracked TASK-XXX is completed and MASTER_PLAN.md needs updates in all locations.
- For a quick fix (no task ID) where you still want a fast commit and push.
- When you want to verify repository status with git status and git diff before committing.
- When summarizing the change in 1-2 sentences and pushing the updates to origin.
Quick Start
- Step 1: Trigger with /master-plan:done (or one of the phrases) and provide Task ID (if tracked) plus a 1-2 sentence summary.
- Step 2: Inspect changes with git status and git diff to see what changed.
- Step 3: Run tests if requested, update MASTER_PLAN.md for tracked tasks, then commit and push with proper prefixes.
Best Practices
- Always collect a 1-2 sentence summary before proceeding.
- Let tests guide you; run the project’s standard test command in order.
- Update all MASTER_PLAN.md locations for tracked tasks.
- Never commit or push sensitive files; avoid secret and lock files.
- Use conventional commit prefixes (feat, fix, docs, chore) for TASK-XXX.
Example Use Cases
- TASK-123: Implement user authentication flow
- TASK-452: Fix memory leak in data loader
- TASK-789: Update onboarding docs
- Quick fix (no task ID): adjust config for debug mode
- TASK-999: Refactor API error handling