From claude-dev-kit
Finalizes tests, docs, and changelog, then merges the PR to make a branch deployment-ready. Runs in a git worktree with checkpoint verification between phases.
How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-dev-kit:shipThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
<!-- AUTO-GENERATED by scripts/gen_skills.py — DO NOT EDIT. Edit SKILL.md.tmpl instead. -->
Run silently at the start:
python3 scripts/kit_update_check.py 2>/dev/null
If exit code is 1 (update available), show the output to the user once. Do not block the workflow.
Run these checks silently at the start. Use results to adapt behavior:
[ -f issues.md ] — if true, this project uses the sprint system. Respect issue numbering and STATUS.md.[ -f docs/sprint_state.md ] — if true and Status shows running, a sprint is active. Be aware of parallel work in worktrees.[ -f docs/prd_digest.md ] — if true, read it for quick project context before starting.gh auth status before any GitHub operation.Every phase has a mandatory checkpoint. Run the verification command and check exit code. If exit code is not 0, STOP immediately and report failure. Do NOT proceed to the next phase. Standard prefix:
bash scripts/checkpoint.sh
Append --skill <name> --phase <phase> --issue <ID> for the specific check.
checkpoint.sh resolves the main repo root internally, so the command stays
a single prefix-matchable form (safe to allowlist as Bash(bash scripts/checkpoint.sh *)).
Pipeline skills operate in git worktrees to isolate changes from main.
WT="$(bash scripts/wt_setup.sh <branch>)" — creates the
worktree via scripts/worktree.sh create and writes .claude-kit/freeze-dir.txt
inside it in a single step.bash scripts/worktree.sh rootbash scripts/wt_cleanup.sh <branch> — cd's to main root
inside a subshell, then removes the worktree (never leaves CWD dangling).
All file operations happen inside $WT/. Shared files live on main only.Shared files (issues.md, STATUS.md, CHANGELOG.md) are managed on main only.
Always use registry_edit.sh for concurrent-safe writes — it resolves the
main repo root internally and delegates to flock_edit.sh:
bash scripts/registry_edit.sh issues.md -- bash -c '<update command>'
Never commit these files to feature branches.
Before completing any major phase, pause and verify:
At the start of this skill, check if contributor mode is enabled:
python3 scripts/kit_config.py get contributor_mode
If the result is true:
python3 scripts/contributor_report.py --skill <name> --step "<step>" --rating <N> --notes "<friction or suggestion>"
CHECKPOINT — MANDATORY — NEVER SKIP Run:
bash scripts/checkpoint.sh --skill ship --phase checks --issue $ARGUMENTSIf exit code ≠ 0: STOP immediately and report the failure. Do NOT proceed.
3.5) Ask documenter subagent to review and update project documentation:
Update shared files via the registry wrapper:
bash scripts/registry_edit.sh STATUS.md -- bash -c '<update command>'
gh pr merge (merge/squash per repo rules) and delete branch.CHECKPOINT — MANDATORY — NEVER SKIP Run:
bash scripts/checkpoint.sh --skill ship --phase merge --issue $ARGUMENTSIf exit code ≠ 0: STOP immediately and report the failure. Do NOT proceed.
wt_cleanup.sh wrapper — it cd's to the main repo root and
removes the worktree in a single subshell, so the caller's CWD is
never left inside a deleted directory:
bash scripts/wt_cleanup.sh <branch>
CHECKPOINT — MANDATORY — NEVER SKIP Run:
bash scripts/checkpoint.sh --skill ship --phase cleanup --issue $ARGUMENTSIf exit code ≠ 0: STOP immediately and report the failure. Do NOT proceed.
git checkout main && git pull
pytest -q --tb=shortnpm testverify_gates.py runs automatically via checkpoint
(e2e-web, e2e-mobile, api, integration, load — as configured in docs/test_plan.md).git revert -m 1 <merge_commit>.CHECKPOINT — MANDATORY — NEVER SKIP Run:
bash scripts/checkpoint.sh --skill ship --phase smoke --issue $ARGUMENTSIf exit code ≠ 0: STOP immediately and report the failure. Do NOT proceed.
git diff --name-only HEAD~1 HEADsrc/module.py → tests/test_module.pysrc/component.ts → src/component.test.ts or src/component.spec.tsTest coverage gaps detected in shipped code:
- src/auth.py → no corresponding test file
- src/webhook.py → test exists but may lack coverage for new functions
Suggestion: run `/testgen <path>` to generate missing tests.
IMPORTANT: Never commit issues.md, STATUS.md, or CHANGELOG.md to the feature branch.
These are registry files managed only on main. Always use bash scripts/registry_edit.sh <file> -- bash -c '<update command>' — the wrapper resolves the main repo root internally.
gh pr checks <pr> — all CI checks must be green.gh pr merge fails: report the error (e.g., merge conflicts, branch protection rules).git revert -m 1 <merge_commit> to revert the merge.git revert -m 1 <merge_commit_sha> on main.npx claudepluginhub pillip/claude-dev-kit --plugin claude-dev-kitAutomates the final handoff process: local verification, git commit/push, PR creation or update, and iterative fix loop until CI passes and PR is merge-ready.
Automates end-to-end branch shipping: merge base, run tests with failure triage, audit coverage, review diffs, bump version, commit, push, create PR. Use for 'ship', 'push to main', or 'create PR' requests.
End-to-end ship workflow — merge base, run tests, review diff, bump version, commit, push, create PR. Use when asked to "ship", "push to main", "create a PR", "get this merged", or "deploy this branch".