ai/skills/ship/SKILL.md
Run the full pre-merge pipeline and create a PR. Use when user says 'ship', 'ship it', 'ready to ship', 'let\'s ship', 'prep for PR', 'create PR', or 'ready to merge'.
npx skillsauth add steveclarke/dotfiles shipInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Run the full pre-merge pipeline in one command: simplify → code review → adversarial review → finalize → update docs → readiness dashboard → create PR.
No steps to remember. /ship handles everything.
Check $ARGUMENTS for flags:
--status — show the readiness dashboard only, don't run anything--adversarial — force adversarial review even on small changes# Project name from git remote (or directory name as fallback)
PROJECT="$(basename "$(git remote get-url origin 2>/dev/null | sed 's/.*\///' | sed 's/\.git$//')" 2>/dev/null || basename "$PWD")"
# Current branch
BRANCH="$(git branch --show-current)"
# Base branch — try existing PR first, then repo default
BASE="$(gh pr view --json baseRefName -q .baseRefName 2>/dev/null || gh repo view --json defaultBranchRef -q .defaultBranchRef.name 2>/dev/null || echo main)"
# Readiness script
READINESS="$HOME/.claude/skills/ship/scripts/readiness.sh"
Abort if on the base branch. Nothing to ship — tell the user to create a feature branch first.
Ensure readiness directory exists:
"$READINESS" dir "$PROJECT"
If --status was passed:
"$READINESS" dashboard "$PROJECT" "$BRANCH"
Print the dashboard and stop. Do not run any pipeline steps.
For each step below, follow this pattern:
"$READINESS" check "$PROJECT" "$BRANCH" <skill>"✓ <Step>: SKIPPED (done <time>)" and move to the next step.Use the Skill tool to invoke simplify. This is a plugin skill that reviews
changed code for reuse, quality, and efficiency, then fixes issues directly.
After it completes, log the result:
"$READINESS" log "$PROJECT" "$BRANCH" simplify clean
If the skill reports issues it couldn't resolve, log failed instead of clean.
Use the Skill tool to invoke code-review. This dispatches 5 parallel review
agents, scores findings by confidence, auto-fixes mechanical issues, and asks
for judgment on critical findings.
After it completes, log the result with metadata:
"$READINESS" log "$PROJECT" "$BRANCH" code-review clean \
critical=0 suggestions=2 auto_fixed=2 coverage_ok=true
Replace the numbers with actual counts from the review output. If there are
unresolved critical findings, log status: failed.
If code review fails (unresolved critical findings), stop the pipeline. Show the dashboard and report the failure.
Determine if adversarial review should run:
# Check diff size
DIFF_LINES="$(git diff --stat "$BASE"..."$BRANCH" | tail -1 | grep -o '[0-9]* insertion' | grep -o '[0-9]*')"
Run adversarial review if:
--adversarial flag was passed, ORDIFF_LINES exceeds 500If neither condition is met, skip this step (it's informational, not required).
If running, use the Skill tool to invoke adversarial-review with argument --pr.
After it completes, log the result:
"$READINESS" log "$PROJECT" "$BRANCH" adversarial-review clean \
rounds=2 result=clean
Replace with actual values from the review output.
Use the Skill tool to invoke finalize. This runs lint, tests, code quality
sweep, documentation check, UI audit (if applicable), and git hygiene.
After it completes, log the result:
"$READINESS" log "$PROJECT" "$BRANCH" finalize clean \
tests_passed=true lint_passed=true
If tests fail or lint fails, log the appropriate fields as false and
status: failed. If finalize fails, stop the pipeline. Show the dashboard
and report the failure.
Check if the current project has an update-docs skill:
ls .claude/skills/update-docs/SKILL.md 2>/dev/null
If found, use the Skill tool to invoke update-docs.
After it completes, log the result:
"$READINESS" log "$PROJECT" "$BRANCH" update-docs clean
If not found, skip this step. It's informational — absence doesn't block shipping.
"$READINESS" dashboard "$PROJECT" "$BRANCH"
Print the full dashboard output.
Large changeset advisory: If the diff exceeds 500 lines and adversarial review was not run, add a note:
"Consider running
/adversarial-review— this is a large changeset (N lines)"
Read the dashboard verdict.
Proceed to create the PR:
Push the branch:
git push -u origin "$BRANCH"
Generate PR description:
git log --oneline "$BASE".."$BRANCH"Create the PR:
gh pr create --title "..." --body "$(cat <<'EOF'
## Summary
...
## Readiness
...
## Test Plan
...
EOF
)"
Report:
ls .claude/skills/release/SKILL.md 2>/dev/null/release"Show what's missing or failed:
No git remote: Run the full pipeline (steps 3a-3e). At step 5, report:
"No git remote configured. Run git remote add origin <url> or gh repo create,
then run /ship again — all steps are cached and will be skipped."
gh not authenticated: Report: "GitHub CLI not authenticated. Run gh auth login."
Step failure: Log status: failed, show dashboard with failure visible,
stop the pipeline. Report what failed and why. User fixes the issue and
runs /ship again — passed steps are skipped via smart skip.
Ctrl+C / cancel: Readiness file only has entries for completed steps.
Next /ship run picks up naturally.
content-media
Download content from YouTube including transcripts, captions, subtitles, music, MP3s, and playlists. Use when the user provides a YouTube URL or asks to download, transcribe, or get content from YouTube videos or playlists.
development
Apply VueUse composables where appropriate to build concise, maintainable Vue.js / Nuxt features.
development
Review UI for visual consistency, layout structure, and design system compliance. Two modes — code review (check view files against patterns) and visual audit (screenshot all routes and analyze). Use when reviewing UI code, checking consistency, auditing views, or when user says "review the UI", "check consistency", "UI audit", "design review".
tools
Improves typography by fixing font choices, hierarchy, sizing, weight, and readability so text feels intentional. Use when the user mentions fonts, type, readability, text hierarchy, sizing looks off, or wants more polished, intentional typography.