원클릭으로
ship
Use when review is complete, user says "ship", "create PR", "ready to merge", or after /review approval.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use when review is complete, user says "ship", "create PR", "ready to merge", or after /review approval.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
Use when the plan is approved, user says "create beads", "beads for...", or plan documents exist.
Use when beads are created (/beads completed), user says "review beads", "check beads", "bead review", or before starting /execute.
Use when design is approved, user says "write the plan", "plan this", "create plan for...", or a design document exists.
Use when a plan is complete (/plan finished), user says "review the plan", "check the plan", or before running /beads on a new plan.
Use when beads exist and are ready for implementation. Triggers on "execute", "start implementation", "run beads", or when ready beads exist in the tracker.
Use after /execute completes, user says "review execution", "verify beads", or before creating a PR for executed work.
SOC 직업 분류 기준
| name | ship |
| description | Use when review is complete, user says "ship", "create PR", "ready to merge", or after /review approval. |
| argument-hint | [feature-name] or [branch-name] |
Philosophy: Shipping is the last mile — where reviewed, tested code becomes a pull request ready for merge. The skill automates the mechanical steps (branch, changelog, PR creation) while enforcing quality gates that prevent shipping incomplete work. Every PR traces back to the requirements and beads that produced it, creating an auditable chain from intent to code.
Duration targets: BRIEF ~5-10 minutes (small change, few files), STANDARD ~10-20 minutes (typical feature), COMPREHENSIVE ~20-40 minutes (multi-service, release candidate).
The gap between "review approved" and "PR merged" is where things fall through cracks: forgotten changelog entries, missing test coverage for review fixes, incomplete commit messages, PRs with no context for human reviewers. Automating this step ensures consistent quality and traceability.
Run this skill when:
/review approved)Do NOT use for:
/review firstAt every PAUSE point in this skill, call the AskUserQuestion tool to present structured options to the user. Do not present options as plain markdown text — use the tool. The YAML blocks at each PAUSE point show the exact parameters to pass.
For pattern details and examples: ../_shared/references/stage-gates.md
Fallback: Only if
AskUserQuestionis not available as a tool (check your tool list), fall back to presenting options as markdown text and waiting for freeform response.
| Mode | When | Behaviour |
|---|---|---|
| BRIEF | Small change (<50 lines, 1-5 files) | Skip adversarial checks, minimal changelog, fast PR |
| STANDARD | Typical feature (50-500 lines) | Full changelog, review readiness check, PR with traceability |
| COMPREHENSIVE | Large feature, release candidate (500+ lines) | Full changelog, regression test audit, version bump decision, PR with full traceability |
Phase 1: Pre-Flight Checks
Phase 2: Review Readiness Dashboard
── PAUSE 1: "Review readiness. Proceed or address gaps?" ──
Phase 3: Generate Changelog & Version
Phase 4: Create Pull Request
── PAUSE 2: "PR ready. Create?" ──
Phase 5: Post-Ship Documentation
Before starting, verify:
git status)docs/reviews/review-*.md)gh CLI is installed and authenticated (gh auth status). If gh is not available, fall back to providing the user a manual PR creation command with the generated description.Step 1.1 — Verify Clean State:
git status # No uncommitted changes
git log --oneline -20 # Review recent commits
Ensure all changes are committed. If uncommitted changes exist, ask the user what to do.
Step 1.2 — Verify Tests & Build:
Run the project's build and test commands. Both MUST pass. If either fails, stop and report — do not create a PR with failing tests.
Step 1.3 — Determine Scope:
git diff main --stat # Files changed
git diff main --shortstat # Lines changed
git log main..HEAD --oneline # Commits
Count files, lines, and commits to determine mode (BRIEF/STANDARD/COMPREHENSIVE).
Step 1.4 — Locate Upstream Artifacts:
Check for existing documentation that feeds into the PR:
docs/execution/{feature}/manifest.md (FR/bead traceability)docs/reviews/review-*.md (review findings and resolutions)docs/prd/{feature}/prd.md (requirements context)docs/brainstorm/{feature}/brainstorm.md (problem context)Record which artifacts exist — they feed into the PR description.
Step 2.1 — Build Readiness Dashboard:
## Review Readiness Dashboard
| Check | Status | Details |
|-------|--------|---------|
| Build passes | ✅/❌ | {result} |
| All tests pass | ✅/❌ | {pass count}/{total count} |
| Review completed | ✅/❌ | {review file path or "no review found"} |
| Review findings resolved | ✅/❌/⚠️ | {N must-fix resolved, M remaining} |
| No uncommitted changes | ✅/❌ | {git status summary} |
| Branch up to date with main | ✅/❌ | {ahead/behind count} |
| Execution manifest exists | ✅/❌ | {path or "not found"} |
### Traceability
| Source | Coverage |
|--------|----------|
| FRs implemented | {list from manifest or commit messages} |
| Beads completed | {count from manifest or issue tracker} |
| UCs verified | {list from manifest} |
Step 2.2 — Assess Readiness:
/review firstPAUSE 1: Present the readiness dashboard as formatted markdown, then:
AskUserQuestion:
question: "Review readiness assessment complete. How should we proceed?"
header: "Readiness"
multiSelect: false
options:
- label: "Ship it (Recommended)"
description: "All checks pass. Proceed to changelog and PR creation."
- label: "Address gaps"
description: "Fix the flagged issues before shipping."
- label: "Ship anyway"
description: "Override readiness checks and proceed (adds warning to PR)."
- label: "Cancel"
description: "Don't ship yet."
If the user selects "Ship anyway" with failing checks, add a prominent warning to the PR description:
⚠️ **Shipped with readiness overrides:** {list of overridden checks}
Step 3.1 — Draft Changelog Entry:
Analyze all commits since divergence from main. Categorize changes.
Match the existing CHANGELOG.md format. If no changelog exists, use the Keep a Changelog format:
### Added
- {new features}
### Changed
- {modifications to existing features}
### Fixed
- {bug fixes}
If an execution manifest exists, use FR references for richer changelog entries:
### Added
- **FR-APP-REGISTER:** Application registration with validation (bd-001, bd-002, bd-003)
Step 3.2 — Version Decision (COMPREHENSIVE only):
In COMPREHENSIVE mode, assess version bump:
If a VERSION or package.json file exists, present the version bump recommendation.
AskUserQuestion:
question: "Version bump recommendation: {PATCH/MINOR}. Accept?"
header: "Version"
multiSelect: false
options:
- label: "{Recommended bump} (Recommended)"
description: "Bump from {current} to {new}"
- label: "Different bump"
description: "I want a different version increment."
- label: "No bump"
description: "Skip version bump for this release."
Step 3.3 — Update Changelog:
If a CHANGELOG.md exists, prepend the new entry under a new version header. Follow the existing changelog format and conventions.
Step 4.1 — Ensure Remote Branch:
git push -u origin HEAD # Push current branch
Step 4.2 — Draft PR Description:
Build a PR description with traceability:
## Summary
{1-3 bullet points describing what this PR does and why}
## Changes
{Changelog entry from Phase 3}
## Traceability
| Type | Reference |
|------|-----------|
| PRD | {link or "N/A"} |
| Beads | {bead IDs from manifest} |
| FRs | {FR IDs from manifest} |
| UCs | {UC IDs from manifest} |
| Review | {review file path} |
| Manifest | {manifest file path} |
## Test Plan
- [ ] All tests pass ({count} tests)
- [ ] Build succeeds
- [ ] Review findings resolved
{additional test items from execution manifest}
🤖 Generated with [Claude Code](https://claude.com/claude-code)
PAUSE 2: Present the PR title and description as formatted markdown, then:
AskUserQuestion:
question: "PR ready to create. Proceed?"
header: "PR"
multiSelect: false
options:
- label: "Create PR (Recommended)"
description: "Create the pull request with this title and description."
- label: "Edit"
description: "I want to modify the title or description."
- label: "Cancel"
description: "Don't create the PR yet."
Step 4.3 — Create PR:
Write the PR description to a temporary file, then create the PR:
gh pr create --title "{title}" --body-file /tmp/pr-description.md
This avoids shell escaping issues with markdown content containing quotes, backticks, and special characters.
Add --base {main-branch} if the repository's default branch differs from the target.
Record the PR URL.
Step 5.1 — Verify PR Created:
Confirm the PR was created successfully and record the URL.
Step 5.2 — Update Issue Tracker:
If the project uses an issue tracker, update relevant issues:
Step 5.3 — Report Completion:
## Ship Complete
**PR:** {URL}
**Branch:** {branch name}
**Changes:** {files changed}, {lines added/removed}
**Changelog:** Updated with {N} entries
**Traceability:** {N} FRs, {N} beads, {N} UCs referenced
Next: Merge the PR when CI passes, then run `/compound` to capture learnings.
Shipping Without Review — Creating a PR before running /review. The review skill catches bugs, security issues, and design deviations that automated tests miss. Skipping it is a false economy — the time saved is paid back in PR review comments and post-merge fixes.
Empty PR Descriptions — A PR with just a title tells reviewers nothing. The traceability section connects the PR to requirements, beads, and review findings — giving reviewers the context to review efficiently. Time spent on the PR description saves multiples in review time.
Force-Pushing to Shared Branches — Never force-push to main or shared branches. If the branch needs rebasing, do it locally and push normally. Force-push can destroy other people's work.
Skipping Changelog — "It's just a small change" — every change deserves a changelog entry. Small changes that accumulate without documentation become invisible technical debt. The changelog is the user-facing record of what changed.
Shipping Failing Tests — Tests exist to catch regressions. Shipping with failing tests means either the tests are wrong (fix them) or the code is wrong (fix it). "They were already failing" is not an excuse — fix or skip them explicitly with documented reasoning.
Version Bump Without Checking — Automated version bumps can be wrong. A "patch" that adds a new API endpoint is actually a minor bump. Always verify the semantic versioning classification against actual changes.
| Signal | Meaning | Next Action |
|---|---|---|
| PR created | Ship complete | Merge when CI passes, then /compound |
| Readiness failed | Not ready to ship | Fix gaps, re-run /review if needed |
| User cancelled | Decided not to ship | Return to development |
When PR created: "PR created at {URL}. Merge when CI passes, then run /compound to capture learnings."
Skill Version: 1.0 v1.0: Initial release. Pre-flight checks, review readiness dashboard, changelog generation with FR traceability, version bump decision, PR creation with traceability section, post-ship documentation. Inspired by gstack's /ship release pipeline.