{"id":"399d703c-88f1-46fb-a7ee-a6b197d5a61f","shortId":"nngDwp","kind":"skill","title":"ship","tagline":"Commit, push, and optionally create or update a PR for the current staged changes. Use when the user asks to \"ship\", \"ship it\", \"ship changes\", \"commit push and PR\", or \"ship this\".","description":"# Ship\n\nCommit, push, and optionally create or update a PR for the current staged changes.\n\n## Step 1: Determine Intent\n\nDetect the repository's default branch via `gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name'`. Check the current branch name and whether a PR already exists for it using `gh pr view`.\n\nUse `AskUserQuestion` to ask the user how to proceed. Present the options based on the current state:\n\n- **On a feature branch with an existing PR** — commit, push, and update the PR; or commit and push\n- **On a feature branch without a PR** — commit, push, and create a PR; or commit and push\n- **On the default branch** — create a feature branch, commit, push, and create a PR; or commit and push\n- **Abort** — leave changes staged, do not commit\n\n## Step 2: Branch (if Needed)\n\nIf the user wants a PR and the current branch is the default branch:\n\n1. Suggest a branch name based on the changes and use `AskUserQuestion` to confirm or adjust\n2. Create and switch to the new branch: `git checkout -b <branch-name>`\n\n## Step 3: Check for Unstaged Changes\n\nRun `git status` to check for unstaged changes. If any exist, stage them. This catches files modified by auto-formatters that were not re-staged.\n\n## Step 4: Run `/commit-staged-push` Skill\n\nRun the `/commit-staged-push` skill.\n\nIf the commit fails due to a pre-commit hook (formatter, linter), fix the issues — or run the project's format/lint script to auto-fix — then **re-stage all modified files** before retrying. Pre-commit hooks may modify files in the working tree without updating the staging area.\n\n## Step 5: Create or Update PR (if Requested)\n\n- **Create PR** — run the `/create-pr` skill\n- **Update PR** — run the `/update-pr` skill\n\nThen use the TaskList tool and proceed to any remaining task.\n\n## Rules\n\n- Never stage or commit files containing secrets (`.env`, credentials, API keys). Warn if detected.","tags":["ship","turbo","tobihagemann","agent-skills","claude-code","claude-skills","developer-tools","skills"],"capabilities":["skill","source-tobihagemann","skill-ship","topic-agent-skills","topic-claude-code","topic-claude-skills","topic-developer-tools","topic-skills"],"categories":["turbo"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/tobihagemann/turbo/ship","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add tobihagemann/turbo","source_repo":"https://github.com/tobihagemann/turbo","install_from":"skills.sh"}},"qualityScore":"0.590","qualityRationale":"deterministic score 0.59 from registry signals: · indexed on github topic:agent-skills · 280 github stars · SKILL.md body (1,900 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T00:54:12.194Z","embedding":null,"createdAt":"2026-04-18T22:04:06.786Z","updatedAt":"2026-04-22T00:54:12.194Z","lastSeenAt":"2026-04-22T00:54:12.194Z","tsv":"'/commit-staged-push':243,247 '/create-pr':313 '/update-pr':319 '1':50,180 '2':162,196 '3':208 '4':241 '5':302 'abort':154 'adjust':195 'alreadi':76 'api':342 'area':300 'ask':20,87 'askuserquest':85,191 'auto':232,274 'auto-fix':273 'auto-formatt':231 'b':206 'base':96,185 'branch':58,70,104,122,139,143,163,175,179,183,203 'catch':227 'chang':15,26,48,156,188,212,220 'check':67,209,217 'checkout':205 'commit':2,27,35,109,116,126,133,144,151,160,251,258,287,336 'confirm':193 'contain':338 'creat':6,39,129,140,147,197,303,309 'credenti':341 'current':13,46,69,99,174 'default':57,138,178 'defaultbranchref':64 'defaultbranchref.name':66 'detect':53,346 'determin':51 'due':253 'env':340 'exist':77,107,223 'fail':252 'featur':103,121,142 'file':228,282,291,337 'fix':262,275 'format/lint':270 'formatt':233,260 'gh':60,81 'git':204,214 'hook':259,288 'intent':52 'issu':264 'jq':65 'json':63 'key':343 'leav':155 'linter':261 'may':289 'modifi':229,281,290 'name':71,184 'need':165 'never':333 'new':202 'option':5,38,95 'pr':10,30,43,75,82,108,114,125,131,149,171,306,310,316 'pre':257,286 'pre-commit':256,285 'present':93 'proceed':92,327 'project':268 'push':3,28,36,110,118,127,135,145,153 're':238,278 're-stag':237,277 'remain':330 'repo':61 'repositori':55 'request':308 'retri':284 'rule':332 'run':213,242,245,266,311,317 'script':271 'secret':339 'ship':1,22,23,25,32,34 'skill':244,248,314,320 'skill-ship' 'source-tobihagemann' 'stage':14,47,157,224,239,279,299,334 'state':100 'status':215 'step':49,161,207,240,301 'suggest':181 'switch':199 'task':331 'tasklist':324 'tool':325 'topic-agent-skills' 'topic-claude-code' 'topic-claude-skills' 'topic-developer-tools' 'topic-skills' 'tree':295 'unstag':211,219 'updat':8,41,112,297,305,315 'use':16,80,84,190,322 'user':19,89,168 'via':59 'view':62,83 'want':169 'warn':344 'whether':73 'without':123,296 'work':294","prices":[{"id":"462c18e3-0ee4-41db-8add-6d24c7abb150","listingId":"399d703c-88f1-46fb-a7ee-a6b197d5a61f","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"tobihagemann","category":"turbo","install_from":"skills.sh"},"createdAt":"2026-04-18T22:04:06.786Z"}],"sources":[{"listingId":"399d703c-88f1-46fb-a7ee-a6b197d5a61f","source":"github","sourceId":"tobihagemann/turbo/ship","sourceUrl":"https://github.com/tobihagemann/turbo/tree/main/skills/ship","isPrimary":false,"firstSeenAt":"2026-04-18T22:04:06.786Z","lastSeenAt":"2026-04-22T00:54:12.194Z"}],"details":{"listingId":"399d703c-88f1-46fb-a7ee-a6b197d5a61f","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"tobihagemann","slug":"ship","github":{"repo":"tobihagemann/turbo","stars":280,"topics":["agent-skills","claude-code","claude-skills","developer-tools","skills"],"license":"mit","html_url":"https://github.com/tobihagemann/turbo","pushed_at":"2026-04-21T12:22:12Z","description":"A composable dev process for Claude Code, packaged as modular skills.","skill_md_sha":"d3ee3537ff3b9c18cf98dc11ba15d7280d1e5054","skill_md_path":"skills/ship/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/tobihagemann/turbo/tree/main/skills/ship"},"layout":"multi","source":"github","category":"turbo","frontmatter":{"name":"ship","description":"Commit, push, and optionally create or update a PR for the current staged changes. Use when the user asks to \"ship\", \"ship it\", \"ship changes\", \"commit push and PR\", or \"ship this\"."},"skills_sh_url":"https://skills.sh/tobihagemann/turbo/ship"},"updatedAt":"2026-04-22T00:54:12.194Z"}}