{"id":"1e8d8333-92e6-4ec0-8395-0eb5858e1505","shortId":"srzqWK","kind":"skill","title":"ship","tagline":">-","description":"!../principles/SKILL_BODY.md\n\n!../tool-gitnexus/SKILL_BODY.md\n\n---\n\n# Ship / Release Preparation Workflow\n\n## Core Principle\n\nCode is not done when it compiles — it is done when it is safely merged, documented, and verifiable by the next person who touches it. This skill bridges the gap between \"implementation complete\" and \"PR merged.\"\n\n> **Scope:** This skill produces Markdown output only. It does not run CI commands, open browsers, push branches, or execute `git` commands on your behalf. Human-in-the-loop actions are listed as explicit checklist items.\n\n> **Distinct from sextant:review-code:** Review evaluates code quality before merging. Ship prepares the logistics — changelog, PR description, version bump, and post-merge verification — for code that has already passed review.\n\n---\n\n## Complete Execution Workflow\n\n### Step 1: Assess Change Scope\n\nRead the diff and classify the changes:\n\n**Change classification:**\n- `bug fix` — corrects broken behavior, no new functionality\n- `feature` — adds new user-visible capability\n- `refactor` — restructures internals without behavior change\n- `chore` — dependency updates, build config, tooling\n- `breaking change` — removes or incompatibly changes a public interface\n\n```\n─── Change Scope Assessment ─────────────────────────\nClassification:           <bug fix / feature / refactor / chore / breaking change>\nFiles changed:            <count> files, ~<count> insertions, ~<count> deletions\nPublic interface changes: Yes (list) / No\nBreaking changes:         Yes (list affected callers) / No\nNew dependencies:         Yes (list) / No\n─────────────────────────────────────────────────────\n```\n\n### Step 2: Pre-Ship Checklist\n\nWork through this checklist before generating the PR description. Items marked ❌ must be resolved before shipping; items marked ⚠️ should be resolved or explicitly accepted as known gaps.\n\n```\n─── Pre-Ship Checklist ──────────────────────────────\n[ ] CHANGELOG entry written (or N/A for internal-only change)\n[ ] Version bumped if this is a releasable unit\n[ ] Breaking changes annotated with @deprecated or migration notes\n[ ] No debug-only code left in (console.log, print, TODO: remove)\n[ ] Public interface documentation updated (docstrings, README, OpenAPI spec)\n[ ] Tests cover new behavior (link sextant:write-tests if coverage is missing)\n[ ] No hardcoded credentials, tokens, or environment-specific values\n[ ] No accidental file inclusions (build artifacts, .env files, IDE configs)\n─────────────────────────────────────────────────────\n```\n\n### Step 3: Generate PR Description\n\nProduce a structured PR description ready to paste:\n\n```\n─── PR Description ──────────────────────────────────\n\n## Summary\n<1–3 bullets: what this PR does, why it was needed, and the approach taken>\n\n## Changes\n<File-by-file or logically grouped list of what changed>\n\n## Breaking Changes\n<List each breaking change with the old and new interface signature.>\n<If none: \"None.\">\n\n## Testing\n<How was this tested? What scenarios are covered? What is explicitly not covered?>\n\n## Impact\n<What systems, callers, or users are affected? Any deployment prerequisites?>\n─────────────────────────────────────────────────────\n```\n\n### Step 4: Post-Merge Verification Checklist\n\nAfter the PR merges, confirm these items manually:\n\n```\n─── Post-Merge Verification ─────────────────────────\n[ ] Public interfaces confirmed working in the target environment\n[ ] Callers not covered by CI have been manually verified\n[ ] Deployment configuration changes applied (env vars, feature flags, DB migrations)\n[ ] Downstream consumers notified of breaking changes (if any)\n[ ] Observability confirms new behavior is active (logs, metrics, alerts)\n─────────────────────────────────────────────────────\n```\n\n---\n\n## Forbidden Actions\n\n- Do not run CI pipelines, push branches, or execute `git` commands\n- Do not open pull requests, GitHub issues, or post to external services on the user's behalf\n- Do not generate a CHANGELOG or version bump without reading the actual diff first — classification must come from the code, not assumptions\n\n---\n\n## Reply Format\n\nShip Summary:\n\n| # | Item | Detail |\n|---|------|--------|\n| [1] | Change scope | <classification + file counts + breaking change status> |\n| [2] | Pre-ship status | <N/N items passed ✅> / <items flagged ⚠️ with details> |\n| [3] | PR description | <produced above> |\n| [4] | Post-merge items | <checklist items requiring human action after merge> |\n| [5] | Needs your input | <blocking gaps to resolve before merging> |","tags":["ship","sextant","hellotern","agent-skills","claude-code","skill-md"],"capabilities":["skill","source-hellotern","skill-ship","topic-agent-skills","topic-claude-code","topic-skill-md"],"categories":["Sextant"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/hellotern/Sextant/ship","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add hellotern/Sextant","source_repo":"https://github.com/hellotern/Sextant","install_from":"skills.sh"}},"qualityScore":"0.457","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 14 github stars · SKILL.md body (4,531 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-22T13:03:26.632Z","embedding":null,"createdAt":"2026-04-19T00:40:26.949Z","updatedAt":"2026-04-22T13:03:26.632Z","lastSeenAt":"2026-04-22T13:03:26.632Z","tsv":"'/principles/skill_body.md':2 '/tool-gitnexus/skill_body.md':3 '1':119,325,476 '2':196,485 '3':310,326,497 '4':356,500 '5':505 'accept':224 'accident':300 'action':75,419 'activ':414 'actual':459 'add':141 'affect':187,351 'alert':417 'alreadi':112 'annot':252 'appli':394 'approach':338 'artifact':304 'assess':120,170 'assumpt':469 'behalf':69,447 'behavior':136,151,280,412 'branch':62,426 'break':159,183,250,341,405,482 'bridg':37 'broken':135 'browser':60 'bug':132 'build':156,303 'bullet':327 'bump':102,243,455 'caller':188,347,382 'capabl':146 'chang':121,129,130,152,160,164,168,173,179,184,241,251,340,342,393,406,477,483 'changelog':98,232,452 'checklist':80,200,204,231,361 'chore':153 'ci':57,386,423 'classif':131,171,462,479 'classifi':127 'code':10,87,90,109,262,467 'come':464 'command':58,66,430 'compil':16 'complet':42,115 'config':157,308 'configur':392 'confirm':366,376,410 'console.log':265 'consum':402 'core':8 'correct':134 'count':481 'cover':278,384 'coverag':287 'credenti':292 'db':399 'debug':260 'debug-on':259 'delet':176 'depend':154,191 'deploy':353,391 'deprec':254 'descript':100,209,313,318,323,499 'detail':475,496 'diff':125,460 'distinct':82 'docstr':273 'document':25,271 'done':13,19 'downstream':401 'entri':233 'env':305,395 'environ':296,381 'environment-specif':295 'evalu':89 'execut':64,116,428 'explicit':79,223 'extern':441 'featur':140,397 'file':172,174,301,306,480 'first':461 'fix':133 'flag':398,494 'forbidden':418 'format':471 'function':139 'gap':39,227 'generat':206,311,450 'git':65,429 'github':436 'hardcod':291 'human':71 'human-in-the-loop':70 'ide':307 'impact':344 'implement':41 'inclus':302 'incompat':163 'input':508 'insert':175 'interfac':167,178,270,375 'intern':149,239 'internal-on':238 'issu':437 'item':81,210,217,368,474,491,493,504 'known':226 'left':263 'link':281 'list':77,181,186,193 'log':415 'logist':97 'loop':74 'manual':369,389 'mark':211,218 'markdown':50 'merg':24,45,93,106,359,365,372,503 'metric':416 'migrat':256,400 'miss':289 'must':212,463 'n/a':236 'n/n':490 'need':335,506 'new':138,142,190,279,411 'next':30 'note':257 'notifi':403 'observ':409 'open':59,433 'openapi':275 'output':51 'pass':113,492 'past':321 'person':31 'pipelin':424 'post':105,358,371,439,502 'post-merg':104,357,370,501 'pr':44,99,208,312,317,322,330,364,498 'pre':198,229,487 'pre-ship':197,228,486 'prepar':6,95 'prerequisit':354 'principl':9 'print':266 'produc':49,314 'public':166,177,269,374 'pull':434 'push':61,425 'qualiti':91 'read':123,457 'readi':319 'readm':274 'refactor':147 'releas':5,248 'remov':161,268 'repli':470 'request':435 'resolv':214,221 'restructur':148 'review':86,88,114 'review-cod':85 'run':56,422 'safe':23 'scope':46,122,169,478 'servic':442 'sextant':84,282 'ship':1,4,94,199,216,230,472,488 'skill':36,48 'skill-ship' 'source-hellotern' 'spec':276 'specif':297 'status':484,489 'step':118,195,309,355 'structur':316 'summari':324,473 'system':346 'taken':339 'target':380 'test':277,285,343 'todo':267 'token':293 'tool':158 'topic-agent-skills' 'topic-claude-code' 'topic-skill-md' 'touch':33 'unit':249 'updat':155,272 'user':144,349,445 'user-vis':143 'valu':298 'var':396 'verif':107,360,373 'verifi':27,390 'version':101,242,454 'visibl':145 'without':150,456 'work':201,377 'workflow':7,117 'write':284 'write-test':283 'written':234 'yes':180,185,192","prices":[{"id":"b1a145f2-3e68-4e81-ad8a-487bcf09f7b4","listingId":"1e8d8333-92e6-4ec0-8395-0eb5858e1505","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"hellotern","category":"Sextant","install_from":"skills.sh"},"createdAt":"2026-04-19T00:40:26.949Z"}],"sources":[{"listingId":"1e8d8333-92e6-4ec0-8395-0eb5858e1505","source":"github","sourceId":"hellotern/Sextant/ship","sourceUrl":"https://github.com/hellotern/Sextant/tree/main/skills/ship","isPrimary":false,"firstSeenAt":"2026-04-19T00:40:26.949Z","lastSeenAt":"2026-04-22T13:03:26.632Z"}],"details":{"listingId":"1e8d8333-92e6-4ec0-8395-0eb5858e1505","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"hellotern","slug":"ship","github":{"repo":"hellotern/Sextant","stars":14,"topics":["agent-skills","claude-code","skill-md"],"license":"mit","html_url":"https://github.com/hellotern/Sextant","pushed_at":"2026-04-07T00:57:27Z","description":"init","skill_md_sha":"caf584020056d618f77e75e5a72b680d98f9f79f","skill_md_path":"skills/ship/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/hellotern/Sextant/tree/main/skills/ship"},"layout":"multi","source":"github","category":"Sextant","frontmatter":{"description":">-"},"skills_sh_url":"https://skills.sh/hellotern/Sextant/ship"},"updatedAt":"2026-04-22T13:03:26.632Z"}}