finish
Complete verified feature — create PR, merge, or keep branch
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Complete verified feature — create PR, merge, or keep branch
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Use when a feature plan has been verified and is ready for implementation — executes tasks with atomic commits
Use when you want to auto-run all remaining Ship steps for a feature without manual step-by-step invocation
Use when a feature has been brainstormed and needs a detailed implementation plan with tasks
Use when a brainstormed feature needs architectural decisions — presents 2-3 approaches for user to choose before planning
Use when a plan has been created and needs independent verification against codebase patterns before building
Use when beginning new feature work, adding functionality, or fixing a bug — runs intensive brainstorming to capture requirements before planning
| name | finish |
| description | Complete verified feature — create PR, merge, or keep branch |
| when_to_use | TRIGGER when: user says "finish", "ship it", "create PR", or feature status is "verified". DO NOT TRIGGER when: not yet verified. |
| effort | medium |
| allowed-tools | Read, Bash, Glob, AskUserQuestion |
| argument-hint | [feature-name] |
!for f in .planning/features/*/CONTEXT.md; do [ -f "$f" ] && d=$(dirname "$f") && echo "$(basename "$d"): $(sed -n 's/^status: *//p' "$f")"; done 2>/dev/null; true
!for f in .planning/features/*/PLAN.md; do [ -f "$f" ] && d=$(dirname "$f") && echo "$(basename "$d") plan: $(grep -c 'status="done"' "$f" 2>/dev/null || echo 0) done, $(grep -c 'status="pending"' "$f" 2>/dev/null || echo 0) pending"; done 2>/dev/null; true
Finish the active feature after verification passes.
.planning/features/ for feature directoriesCONTEXT.md and check the status fielddone$ARGUMENTS is provided, use it as the feature nameRun the project's test suite to confirm everything passes:
# Auto-detect test command from package.json, Cargo.toml, etc.
# If unclear, ask the user for the test command
If tests fail, stop and report failures. Do not proceed.
Feature '{name}' is verified and complete.
1. Create a Pull Request (push branch + gh pr create)
2. Merge to {base-branch} locally
3. Keep as-is (I'll handle it later)
Which option?
Use AskUserQuestion to get the user's choice.
First, check that gh is available: gh auth status. If it fails, tell the user to install/authenticate gh and abort.
# Detect base branch
git rev-parse --verify main &>/dev/null && echo main || echo master
# Determine PR title type from branch commits
# Look at commit prefixes (feat, fix, refactor, etc.) — use the most common one
# If mixed or unclear, default to "feat"
# Get feature summary from CONTEXT.md for PR body
# Push and create PR
git push -u origin HEAD
gh pr create --title "{type}: {feature-name}" --body "$(cat <<'EOF'
## Summary
{2-3 bullets from CONTEXT.md acceptance criteria}
## Test plan
{key verify commands from PLAN.md}
Built with [Ship](https://github.com/dilhanz/ship)
EOF
)"
Report the PR URL to the user.
# Detect base branch
BASE=$(git rev-parse --verify main &>/dev/null && echo main || echo master)
git checkout $BASE
git merge {feature-branch}
Run tests again on the merged result. If tests pass, report success.
Report: "Feature '{name}' kept on current branch. Run /ship:finish again when ready."
## FEATURE FINISHED
Feature: {name}
Action: {PR created / Merged to main / Kept as-is}
{If PR:} PR: {url}
{If merged:} Branch merged and tests passing
$ARGUMENTS