Skip to content
Productivity
Skill

/done

Task completion workflow — run tests, commit, push, and update MASTER_PLAN.md. Use when a task is finished and ready to ship. Triggers on "/done", "mark done", "task complete", "finish task", "ship it".

From plugin
master-plan
264 skills

Claude Code

$ npx -y skills add endlessblink/master-plan --skill done --agent claude-code

SKILL.md

done.SKILL.md
name: done
description: Task completion workflow — run tests, commit, push, and update MASTER_PLAN.md. Use when a task is finished and ready to ship. Triggers on "/done", "mark done", "task complete", "finish task", "ship it".

Task 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:

1. **Task ID** (header: "Task ID")

  • Options: "Tracked task (enter ID)" or "Quick fix (no task ID)"

2. **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: 1. If `package.json` exists → `npm test` 2. If `Cargo.toml` exists → `cargo test` 3. If `pyproject.toml` or `setup.py` exists → `pytest` 4. If `Makefile` with `test` target → `make test` 5. If `go.mod` exists → `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*` files
  • `credentials*.json` or files containing secrets
  • `node_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 feature
  • `fix(BUG-XXX):` — Bug fix
  • `chore(TASK-XXX):` — Maintenance
  • `refactor(TASK-XXX):` — Code refactoring
  • `docs(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

1. **NEVER skip commit/push** — Changes must be pushed to the remote 2. **ALWAYS collect summary** — Don't proceed without knowing what changed 3. **Update ALL locations** in MASTER_PLAN.md for tracked tasks 4. **Verify with grep** after updating MASTER_PLAN.md 5. **Wait for user input** — Don't assume or skip questions 6. **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`)
Read more
@endlessblink
Ships withmaster-plan

AI-native task management for Claude Code. Track tasks in a MASTER_PLAN.md file, pick what to work on, save progress, and ship — all through agent skills.

Stars on GitHub

Momentum

stars in total
26
Star history of endlessblink/master-plan on GitHub, a chart by star-history.com

Other skills on master-plan.

next

next

Analyze and pick the next task to work on. Reads MASTER_PLAN.md, scores tasks by priority and status, and presents interactive…

save

save

Save work-in-progress and push to remote. Like /done but keeps task IN PROGRESS. Use when switching machines, ending a session,…

task

task

Create a new task in MASTER_PLAN.md with auto-generated sequential IDs. Supports TASK, BUG, FEATURE, and INQUIRY types. Triggers…

More skills from other plugins.

i-have-adhd

i-have-adhd

Shape output for a reader with ADHD: lead with the next action, number multi-step work, restate state across turns, suppress…

@ayghri@ayghriInstall Skill
ab-test-analysis

ab-test-analysis

Analyze A/B test results with statistical significance, sample size validation, confidence intervals, and ship/extend/stop…

@phuryn@phurynInstall Skill
distilly

distilly

Set up the owner profile so a personal agent knows who it works for (first-run setup, \"get to know me\"), or distill colleague,…

Questions about done.

Which coding agents can use done?
done installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.