{"id":"fb96128e-3991-4330-9af6-f863ae04a8bc","shortId":"PjgL32","kind":"skill","title":"ship-it","tagline":"End-to-end shipping workflow. Formats, lints, tests, creates a changelog entry, commits with conventional commits, pushes, updates PR description, and suggests reviewers. Use when the user says \"ship it\", \"commit and push\", \"fmt lint test commit push\", or similar shipping command","description":"# Ship It\n\nRun the full pre-commit pipeline, commit, push, and handle PR housekeeping.\n\n## 1. Verify\n\nRun verification per [verify-when-complete](../verify-when-complete/SKILL.md). Stop if any step fails.\n\n## 2. Changelog\n\nCheck if the project has a changelog convention:\n\n1. If `Taskfile.yaml` has a `changelog` task, run `task changelog` and follow its output.\n2. Otherwise, look for existing changelog entries:\n   - Per-PR fragment directories like `.changeset/` (JS/TS via `@changesets/cli`), `.changes/` (Python via `towncrier`), or similar project-defined conventions\n   - `CHANGELOG.md` at the repo root\n3. If a convention is found, create a terse entry following the existing format and patterns.\n4. If no changelog convention exists, skip this step.\n\n## 3. Commit\n\nStage all changes and commit using [Conventional Commits](https://www.conventionalcommits.org/) format:\n\n```\n<type>[optional scope]: <description>\n```\n\nCommon types: `feat`, `fix`, `refactor`, `test`, `docs`, `chore`, `ci`, `build`.\n\nAlways create a new commit. Never amend.\n\nApply `terse-output` commit-message tone: imperative subject ≤72 chars, body explains *why* (the diff shows what), no \"this commit does X\" / \"I\" / \"we\" / \"now\". Keep the `Co-Authored-By: Claude…` attribution.\n\n## 4. Push and PR\n\nPush the current branch:\n\n```bash\ngit push -u origin HEAD\n```\n\nIf a PR exists for the current branch, update its title and description to reflect the current state:\n\n```bash\ngh pr edit --title \"<title>\" --body-file /tmp/pr-body.md\n```\n\nFor PRs with diffs over ~20 files or ~500 lines, **delegate body authoring to a subagent** (`model: sonnet` per `subagent-model-routing` — PR-body authoring from a non-trivial diff requires real synthesis reasoning) per `parallelize-subagents` and `subagent-prompt-contract`: paste the commit list and `git diff --stat` inline, ask for a summary section + bullet list of notable changes capped at ~200 words, and have the subagent return with the four-state Status line. Main writes `/tmp/pr-body.md` from the summary. Small PRs stay inline.\n\nIf no PR exists, run [create-pr](../create-pr/SKILL.md) to open one.\n\n## 5. Suggest Reviewers\n\nIf a PR exists, query reviewer state and present suggestions:\n\n```bash\ngh api graphql -f query='\n{ repository(owner:\"OWNER\", name:\"REPO\") { pullRequest(number:NUM) {\n  reviewRequests(first:10) { nodes { requestedReviewer { ... on User { login } ... on Team { slug } } } }\n  latestReviews(first:10) { nodes { author { login } state } }\n  suggestedReviewers { reviewer { login } isAuthor isCommenter }\n} } }'\n```\n\nLogic:\n- If someone already reviewed, suggest re-requesting the same reviewer.\n- If a review is already requested, note who.\n- If no reviewer yet, present GitHub's `suggestedReviewers` list.\n- For deeper git-history-based suggestions, use `/analyze-knowledge`. It fans out per-area analysis to subagents for PRs with >20 files, so keep the parent context clean.\n- Do **not** auto-assign. Present suggestions and let the user decide.","tags":["ship","skill","issue","paultyng","agent-skills","ai-tools","claude-code","cursor","dotfiles"],"capabilities":["skill","source-paultyng","skill-ship-it","topic-agent-skills","topic-ai-tools","topic-claude-code","topic-cursor","topic-dotfiles"],"categories":["skill-issue"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/paultyng/skill-issue/ship-it","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add paultyng/skill-issue","source_repo":"https://github.com/paultyng/skill-issue","install_from":"skills.sh"}},"qualityScore":"0.454","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 8 github stars · SKILL.md body (2,997 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-05-18T19:09:03.209Z","embedding":null,"createdAt":"2026-05-18T13:21:28.272Z","updatedAt":"2026-05-18T19:09:03.209Z","lastSeenAt":"2026-05-18T19:09:03.209Z","tsv":"'/)':170 '/analyze-knowledge':457 '/create-pr/skill.md':366 '/tmp/pr-body.md':266,350 '/verify-when-complete/skill.md':71 '1':62,87 '10':399,410 '2':77,101 '20':272,470 '200':334 '3':133,158 '4':149,226 '5':370 '500':275 '72':201 'alreadi':423,436 'alway':184 'amend':190 'analysi':464 'api':385 'appli':191 'area':463 'ask':322 'assign':482 'attribut':225 'author':222,279,293,412 'auto':481 'auto-assign':480 'base':454 'bash':234,258,383 'bodi':203,264,278,292 'body-fil':263 'branch':233,247 'build':183 'bullet':327 'cap':332 'chang':118,162,331 'changelog':15,78,85,92,96,106,152 'changelog.md':128 'changeset':114 'changesets/cli':117 'char':202 'check':79 'chore':181 'ci':182 'claud':224 'clean':477 'co':221 'co-authored-bi':220 'command':46 'commit':17,20,35,41,54,56,159,164,167,188,196,212,315 'commit-messag':195 'common':174 'complet':70 'context':476 'contract':312 'convent':19,86,127,136,153,166 'creat':13,139,185,364 'create-pr':363 'current':232,246,256 'decid':489 'deeper':450 'defin':126 'deleg':277 'descript':24,252 'diff':207,270,299,319 'directori':112 'doc':180 'edit':261 'end':5,7 'end-to-end':4 'entri':16,107,142 'exist':105,145,154,243,361,376 'explain':204 'f':387 'fail':76 'fan':459 'feat':176 'file':265,273,471 'first':398,409 'fix':177 'fmt':38 'follow':98,143 'format':10,146,171 'found':138 'four':344 'four-stat':343 'fragment':111 'full':51 'gh':259,384 'git':235,318,452 'git-history-bas':451 'github':445 'graphql':386 'handl':59 'head':239 'histori':453 'housekeep':61 'imper':199 'inlin':321,357 'isauthor':418 'iscomment':419 'js/ts':115 'keep':218,473 'latestreview':408 'let':486 'like':113 'line':276,347 'lint':11,39 'list':316,328,448 'logic':420 'login':404,413,417 'look':103 'main':348 'messag':197 'model':283,288 'name':392 'never':189 'new':187 'node':400,411 'non':297 'non-trivi':296 'notabl':330 'note':438 'num':396 'number':395 'one':369 'open':368 'option':172 'origin':238 'otherwis':102 'output':100,194 'owner':390,391 'parallel':306 'parallelize-subag':305 'parent':475 'past':313 'pattern':148 'per':66,109,285,304,462 'per-area':461 'per-pr':108 'pipelin':55 'pr':23,60,110,229,242,260,291,360,365,375 'pr-bodi':290 'pre':53 'pre-commit':52 'present':381,444,483 'project':82,125 'project-defin':124 'prompt':311 'prs':268,355,468 'pullrequest':394 'push':21,37,42,57,227,230,236 'python':119 'queri':377,388 're':427 're-request':426 'real':301 'reason':303 'refactor':178 'reflect':254 'repo':131,393 'repositori':389 'request':428,437 'requestedreview':401 'requir':300 'return':340 'review':27,372,378,416,424,431,434,442 'reviewrequest':397 'root':132 'rout':289 'run':49,64,94,362 'say':32 'scope':173 'section':326 'ship':2,8,33,45,47 'ship-it':1 'show':208 'similar':44,123 'skill' 'skill-ship-it' 'skip':155 'slug':407 'small':354 'someon':422 'sonnet':284 'source-paultyng' 'stage':160 'stat':320 'state':257,345,379,414 'status':346 'stay':356 'step':75,157 'stop':72 'subag':282,287,307,310,339,466 'subagent-model-rout':286 'subagent-prompt-contract':309 'subject':200 'suggest':26,371,382,425,455,484 'suggestedreview':415,447 'summari':325,353 'synthesi':302 'task':93,95 'taskfile.yaml':89 'team':406 'ters':141,193 'terse-output':192 'test':12,40,179 'titl':250,262 'tone':198 'topic-agent-skills' 'topic-ai-tools' 'topic-claude-code' 'topic-cursor' 'topic-dotfiles' 'towncrier':121 'trivial':298 'type':175 'u':237 'updat':22,248 'use':28,165,456 'user':31,403,488 'verif':65 'verifi':63,68 'verify-when-complet':67 'via':116,120 'word':335 'workflow':9 'write':349 'www.conventionalcommits.org':169 'www.conventionalcommits.org/)':168 'x':214 'yet':443","prices":[{"id":"b669fe70-e69d-4081-bea7-43e2c9ff5bc0","listingId":"fb96128e-3991-4330-9af6-f863ae04a8bc","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"paultyng","category":"skill-issue","install_from":"skills.sh"},"createdAt":"2026-05-18T13:21:28.272Z"}],"sources":[{"listingId":"fb96128e-3991-4330-9af6-f863ae04a8bc","source":"github","sourceId":"paultyng/skill-issue/ship-it","sourceUrl":"https://github.com/paultyng/skill-issue/tree/main/skills/ship-it","isPrimary":false,"firstSeenAt":"2026-05-18T13:21:28.272Z","lastSeenAt":"2026-05-18T19:09:03.209Z"}],"details":{"listingId":"fb96128e-3991-4330-9af6-f863ae04a8bc","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"paultyng","slug":"ship-it","github":{"repo":"paultyng/skill-issue","stars":8,"topics":["agent-skills","ai-tools","claude-code","cursor","dotfiles"],"license":"mit","html_url":"https://github.com/paultyng/skill-issue","pushed_at":"2026-05-18T18:26:54Z","description":"Personal Claude Code / Cursor agent skills, rules, and config","skill_md_sha":"4ef8737afb98017b36e32c68f8ce65541f1f0e19","skill_md_path":"skills/ship-it/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/paultyng/skill-issue/tree/main/skills/ship-it"},"layout":"multi","source":"github","category":"skill-issue","frontmatter":{"name":"ship-it","description":"End-to-end shipping workflow. Formats, lints, tests, creates a changelog entry, commits with conventional commits, pushes, updates PR description, and suggests reviewers. Use when the user says \"ship it\", \"commit and push\", \"fmt lint test commit push\", or similar shipping commands."},"skills_sh_url":"https://skills.sh/paultyng/skill-issue/ship-it"},"updatedAt":"2026-05-18T19:09:03.209Z"}}