{"id":"15593023-b55d-4e86-af11-a8a0dcd22ecb","shortId":"HcsdEk","kind":"skill","title":"ship-discipline","tagline":"When to ship vs not ship. The single ship gate, six auto-decision principles for plan reviews, and the Confusion Protocol for when to stop and ask.","description":"# Ship discipline\n\nHeuristics for shipping. Pick a single gate; let the rest be informational.\n\nSource: gstack `ship/SKILL.md`, `autoplan/SKILL.md`, `land-and-deploy/SKILL.md`.\n\n## One gate, named explicitly\n\nThe ship gate is one thing only: **Eng Review passing.**\n\nCEO / Design / Adversarial / Outside-Voice reviews are shown but never block shipping.\n\nFor solo founders: pick one hard gate per workflow and refuse to let optional reviews accumulate veto power.\n\n## Six auto-decision principles\n\nWhen deciding between approaches in a plan review, apply in order:\n\n1. **Choose completeness** — pick the approach that covers more edge cases.\n2. **Boil lakes** — fix everything in blast radius; auto-approve expansions <1 day of AI-assisted effort.\n3. **Pragmatic** — *\"5 seconds choosing, not 5 minutes.\"*\n4. **DRY** — duplicates existing functionality? Reject.\n5. **Explicit over clever** — *\"10-line obvious fix > 200-line abstraction. Pick what a new contributor reads in 30 seconds.\"*\n6. **Bias toward action** — *\"Merge > review cycles > stale deliberation. Flag concerns but don't block.\"*\n\n### Phase tiebreakers\n\n- CEO review → P1+P2 (completeness, boil lakes) dominate\n- Eng review → P5+P3 (explicit, pragmatic)\n- Design review → P5+P1 (explicit, completeness)\n\n## Decision classification\n\nThree categories. Treat each differently:\n\n| Type | Action |\n|---|---|\n| **Mechanical** (one obviously correct answer) | Decide silently, mention in summary |\n| **Taste** (close call, defensible either way) | Auto-decide, surface at the end for user review |\n| **User Challenge** (both AI models disagree with the user) | NEVER auto-decide. Force the models to make the case |\n\nUser Challenge framing: *\"The user's original direction is the default.\"* Models must argue against it.\n\n## The Confusion Protocol\n\nSTOP and ask only on:\n- Architectural / data-model ambiguity\n- Destructive scope unclear\n- Contradicting patterns in the codebase\n\nNever stop for:\n- Routine work\n- Uncommitted changes\n- Version bumps\n- CHANGELOG updates\n- Commit messages\n\n> \"If you catch yourself writing fewer than 3 sentences for any review section, you are likely compressing.\"\n\n## 9 prime directives (eng review)\n\nThese are non-negotiable in code review:\n\n- **Zero silent failures** — every error has a name\n- **Catch-all `rescue StandardError` / `except Exception`** is ALWAYS a smell\n- **Data flows have shadow paths** — trace happy + nil + empty + upstream-error, all four\n- **Diagrams are mandatory** for architectural changes\n- **Everything deferred must be written down** — *\"vague intentions are lies. TODOS.md or it doesn't exist.\"*\n- **Optimize for the 6-month future**, not the 6-day present\n- **Test coverage is non-optional** — see review-and-debug for confidence calibration\n- **Prefer `Read`/`Edit`/`Grep` over `Bash` equivalents** when a dedicated tool fits\n- **No string-matching error messages** to dodge linters\n\n## Land and deploy\n\nPersona: a release engineer who has deployed thousands of times.\n\n> \"The two worst feelings in software: the merge that breaks prod, and the merge that sits in queue for 45 minutes while you stare.\"\n\nTwo hard gates remain even when automated:\n1. **First-run dry-run validation** — you need to *see* the deploy infra once\n2. **Pre-merge readiness** — reviews / tests / docs\n\nTone rule: narrate, don't go silent.\n> \"Explain why before asking — 'Deploys are irreversible, so I check X.'\"\n\nFirst run = teacher mode. Subsequent runs = efficient.\n\nSingle-pass verification (not continuous monitoring — that's canary's job).\n\n## Ship's central doctrine\n\n> \"AI makes completeness near-free… A 'lake' is boilable; an 'ocean' is not. Boil lakes, flag oceans.\"\n\n> \"'Ship the shortcut' is legacy thinking from when human engineering time was the bottleneck.\"\n\n## What ship explicitly does NOT block on\n\n- CEO / scope-expansion suggestions (informational)\n- Design review findings (informational)\n- Adversarial review (informational)\n- Outside-voice critique (informational)\n- Uncommitted changes from unrelated work\n- Version bumps\n- CHANGELOG voice / formatting\n\n## What ship explicitly DOES block on\n\n- Eng review failures\n- Test failures (any tier)\n- Plan failures\n- TODOS reorg if requested\n\nThe asymmetry is the point: the *one* hard gate is named. Everything else is information.","tags":["ship","discipline","gstack","distilled","0xabrar","agent-skills","claude-code","claude-skill","decision-making","founder","garry-tan","skills"],"capabilities":["skill","source-0xabrar","skill-ship-discipline","topic-agent-skills","topic-claude-code","topic-claude-skill","topic-decision-making","topic-founder","topic-garry-tan","topic-gstack","topic-skills","topic-startup"],"categories":["gstack-distilled"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/0xabrar/gstack-distilled/ship-discipline","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add 0xabrar/gstack-distilled","source_repo":"https://github.com/0xabrar/gstack-distilled","install_from":"skills.sh"}},"qualityScore":"0.455","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 11 github stars · SKILL.md body (4,303 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:08:05.069Z","embedding":null,"createdAt":"2026-05-09T01:05:24.182Z","updatedAt":"2026-05-18T19:08:05.069Z","lastSeenAt":"2026-05-18T19:08:05.069Z","tsv":"'/skill.md':54 '1':116,139,497 '10':164 '2':127,513 '200':168 '3':146,329 '30':178 '4':154 '45':485 '5':148,152,160 '6':180,410,415 '9':339 'abstract':170 'accumul':97 'action':183,225 'adversari':71,611 'ai':143,255,562 'ai-assist':142 'alway':368 'ambigu':300 'answer':230 'appli':113 'approach':108,121 'approv':137 'architectur':296,389 'argu':285 'ask':31,293,531 'assist':144 'asymmetri':649 'auto':16,102,136,243,263 'auto-approv':135 'auto-decid':242,262 'auto-decis':15,101 'autom':496 'autoplan/skill.md':49 'bash':437 'bias':181 'blast':133 'block':80,194,599,633 'boil':128,202,576 'boilabl':571 'bottleneck':593 'break':475 'bump':317,625 'calibr':431 'call':238 'canari':555 'case':126,271 'catch':324,361 'catch-al':360 'categori':220 'central':560 'ceo':69,197,601 'challeng':253,273 'chang':315,390,620 'changelog':318,626 'check':537 'choos':117,150 'classif':218 'clever':163 'close':237 'code':350 'codebas':308 'commit':320 'complet':118,201,216,564 'compress':338 'concern':190 'confid':430 'confus':24,289 'continu':551 'contradict':304 'contributor':175 'correct':229 'cover':123 'coverag':419 'critiqu':617 'cycl':186 'data':298,371 'data-model':297 'day':140,416 'debug':428 'decid':106,231,244,264 'decis':17,103,217 'dedic':441 'default':282 'defens':239 'defer':392 'deliber':188 'deploy':53,455,462,510,532 'design':70,211,607 'destruct':301 'diagram':385 'differ':223 'direct':279,341 'disagre':257 'disciplin':3,33 'doc':520 'doctrin':561 'dodg':451 'doesn':404 'domin':204 'dri':155,502 'dry-run':501 'duplic':156 'edg':125 'edit':434 'effici':545 'effort':145 'either':240 'els':660 'empti':379 'end':248 'eng':66,205,342,635 'engin':459,589 'equival':438 'error':356,382,448 'even':494 'everi':355 'everyth':131,391,659 'except':365,366 'exist':157,406 'expans':138,604 'explain':528 'explicit':58,161,209,215,596,631 'failur':354,637,639,643 'feel':469 'fewer':327 'find':609 'first':499,539 'first-run':498 'fit':443 'fix':130,167 'flag':189,578 'flow':372 'forc':265 'format':628 'founder':84 'four':384 'frame':274 'free':567 'function':158 'futur':412 'gate':13,40,56,61,88,492,656 'go':526 'grep':435 'gstack':47 'happi':377 'hard':87,491,655 'heurist':34 'human':588 'inform':45,606,610,613,618,662 'infra':511 'intent':398 'irrevers':534 'job':557 'lake':129,203,569,577 'land':51,453 'land-and-deploy':50 'legaci':584 'let':41,94 'lie':400 'like':337 'line':165,169 'linter':452 'make':269,563 'mandatori':387 'match':447 'mechan':226 'mention':233 'merg':184,473,479,516 'messag':321,449 'minut':153,486 'mode':542 'model':256,267,283,299 'monitor':552 'month':411 'must':284,393 'name':57,359,658 'narrat':523 'near':566 'near-fre':565 'need':506 'negoti':348 'never':79,261,309 'new':174 'nil':378 'non':347,422 'non-negoti':346 'non-opt':421 'obvious':166,228 'ocean':573,579 'one':55,63,86,227,654 'optim':407 'option':95,423 'order':115 'origin':278 'outsid':73,615 'outside-voic':72,614 'p1':199,214 'p2':200 'p3':208 'p5':207,213 'pass':68,548 'path':375 'pattern':305 'per':89 'persona':456 'phase':195 'pick':37,85,119,171 'plan':20,111,642 'point':652 'power':99 'pragmat':147,210 'pre':515 'pre-merg':514 'prefer':432 'present':417 'prime':340 'principl':18,104 'prod':476 'protocol':25,290 'queue':483 'radius':134 'read':176,433 'readi':517 'refus':92 'reject':159 'releas':458 'remain':493 'reorg':645 'request':647 'rescu':363 'rest':43 'review':21,67,75,96,112,185,198,206,212,251,333,343,351,426,518,608,612,636 'review-and-debug':425 'routin':312 'rule':522 'run':500,503,540,544 'scope':302,603 'scope-expans':602 'second':149,179 'section':334 'see':424,508 'sentenc':330 'shadow':374 'ship':2,6,9,12,32,36,60,81,558,580,595,630 'ship-disciplin':1 'ship/skill.md':48 'shortcut':582 'shown':77 'silent':232,353,527 'singl':11,39,547 'single-pass':546 'sit':481 'six':14,100 'skill' 'skill-ship-discipline' 'smell':370 'softwar':471 'solo':83 'sourc':46 'source-0xabrar' 'stale':187 'standarderror':364 'stare':489 'stop':29,291,310 'string':446 'string-match':445 'subsequ':543 'suggest':605 'summari':235 'surfac':245 'tast':236 'teacher':541 'test':418,519,638 'thing':64 'think':585 'thousand':463 'three':219 'tiebreak':196 'tier':641 'time':465,590 'todo':644 'todos.md':401 'tone':521 'tool':442 'topic-agent-skills' 'topic-claude-code' 'topic-claude-skill' 'topic-decision-making' 'topic-founder' 'topic-garry-tan' 'topic-gstack' 'topic-skills' 'topic-startup' 'toward':182 'trace':376 'treat':221 'two':467,490 'type':224 'unclear':303 'uncommit':314,619 'unrel':622 'updat':319 'upstream':381 'upstream-error':380 'user':250,252,260,272,276 'vagu':397 'valid':504 'verif':549 'version':316,624 'veto':98 'voic':74,616,627 'vs':7 'way':241 'work':313,623 'workflow':90 'worst':468 'write':326 'written':395 'x':538 'zero':352","prices":[{"id":"b8a5896e-56f4-4d62-be81-e8ee220c9b03","listingId":"15593023-b55d-4e86-af11-a8a0dcd22ecb","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"0xabrar","category":"gstack-distilled","install_from":"skills.sh"},"createdAt":"2026-05-09T01:05:24.182Z"}],"sources":[{"listingId":"15593023-b55d-4e86-af11-a8a0dcd22ecb","source":"github","sourceId":"0xabrar/gstack-distilled/ship-discipline","sourceUrl":"https://github.com/0xabrar/gstack-distilled/tree/main/skills/ship-discipline","isPrimary":false,"firstSeenAt":"2026-05-09T01:05:24.182Z","lastSeenAt":"2026-05-18T19:08:05.069Z"}],"details":{"listingId":"15593023-b55d-4e86-af11-a8a0dcd22ecb","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"0xabrar","slug":"ship-discipline","github":{"repo":"0xabrar/gstack-distilled","stars":11,"topics":["agent-skills","claude-code","claude-skill","decision-making","founder","garry-tan","gstack","skills","startup","yc"],"license":"other","html_url":"https://github.com/0xabrar/gstack-distilled","pushed_at":"2026-04-26T16:34:12Z","description":"Distilled decision-making frameworks from Garry Tan's gstack, packaged as 7 focused Agent Skills.","skill_md_sha":"5de6670945c0e5c13c1bb18049293e3d59518afb","skill_md_path":"skills/ship-discipline/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/0xabrar/gstack-distilled/tree/main/skills/ship-discipline"},"layout":"multi","source":"github","category":"gstack-distilled","frontmatter":{"name":"ship-discipline","description":"When to ship vs not ship. The single ship gate, six auto-decision principles for plan reviews, and the Confusion Protocol for when to stop and ask."},"skills_sh_url":"https://skills.sh/0xabrar/gstack-distilled/ship-discipline"},"updatedAt":"2026-05-18T19:08:05.069Z"}}