shipfast
Skill0 starsChanged 5 months agoMITView on GitHub
Emergency deploy pipeline. Something's broken in prod, you fixed it, get it live NOW. Lint, test, build, commit, push, deploy. Minimum viable safety checks, maximum speed.
- Commits and pushes
In this repository55 other files it gives its agents.
- AGENTS.mdAGENTS.md
- scripts/AGENTS.mdAGENTS.md
- src/AGENTS.mdAGENTS.md
- .cursor/rules/publish-version-bump.mdcCursor rule
- .cursor/rules/release-version-sync.mdcCursor rule
- antigravitySkill
- auditSkill
- autoplanSkill
- bootstrapSkill
- brainstormSkill
- browseSkill
- ceo-reviewSkill
- clarifySkill
- cleanupSkill
- code-reviewSkill
- codexSkill
- component-inventorySkill
- context-restoreSkill
- context-saveSkill
- critiqueSkill
- cronSkill
- csoSkill
- cursorSkill
- debugSkill
- deepen-planSkill
- design-reviewSkill
- devex-reviewSkill
- document-reviewSkill
- eng-reviewSkill
- executing-plansSkill
- fableSkill
- finishSkill
- frontend-designSkill
- grill-meSkill
- grokSkill
- implementSkill
- learnSkill
- office-hoursSkill
- onboardSkill
- plan-design-reviewSkill
- planSkill
- polishSkill
- qaSkill
- reviewSkill
- shipthoroughSkill
- simplifySkill
- specSkill
- statusSkill
- subagent-driven-developmentSkill
- test-driven-developmentSkill
- ui-auditSkill
- ui-ux-pro-maxSkill
- using-git-worktreesSkill
- verification-before-completionSkill
- writing-plansSkill
The file
We split this skill into the rules it gives an agent
9 rules. About 0 are common, 7 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈7
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 11
If you are running this skill in Codex, read ../references/codex-compatibility.md before following host-specific tool instructions.
- Distinctive: line 44
Run these steps sequentially.
- Distinctive: line 50
If lint fails with auto-fixable issues, fix them and continue.
- Distinctive: line 51
If lint fails with real errors, fix them before proceeding.
- Distinctive: line 57
If tests fail, determine if the failure is related to your changes or pre-existing.
- Distinctive: line 65
Must pass. If build fails, fix before proceeding.
- Distinctive: line 84
Write a concise commit message with the appropriate prefix:
- Very specific: line 89
If the commit is feat: or fix:, check that CHANGELOG.md was updated.
- Distinctive: line 90
If not, add a one-line entry to the [Unreleased] section.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Host Compatibility
If you are running this skill in Codex, read ../references/codex-compatibility.md before following host-specific tool instructions. Claude Code should continue to use the Claude-specific tools and command wrappers described here.
Soloship Ship Fast
This is the emergency path. Use when something is broken in production and the fix needs to go live immediately.
Model posture (see .claude/rules/model-mode.md)
Standard posture (Opus/Sonnet/Codex — the default): run the pipeline exactly as written, stopping on first failure.
Fable posture (model id contains fable/mythos): read this carefully —
this pipeline ships to production and is nearly ALL gates. Every one of these
remains binding: Steps 1–3 lint, test, and build evidence · Step 4's Scope
Ledger Gate — the ledger, the Touch Map, and the repo-wide grep of the
changed value with every hit resolved · the CHANGELOG check · specific
staging (no git add -A) · Step 5 push · Step 6's shared deploy sequence in
full — clean synced default branch, deploy lock, manifest, the one go/no-go
question, prod tag moved and pushed, lock released on failure paths too ·
Step 7 Verify Live in full — live URL fetched, the exact broken flow
browser-QA'd on the live site, the evidence loop for any live-data claim,
browser teardown · every Verification checklist box.
What the Fable posture buys you here is narrow: Steps 1–3 may run concurrently (all must pass before Step 4 commits anything), and platform detection is method — how you find the deploy command is yours; that the shared deploy sequence wraps it is not. Emergency pressure is exactly when these gates earn their keep — "it's a hotfix" is never grounds to thin them, and if the pipeline feels slow, that is the gate working.
The Pipeline
Run these steps sequentially. Stop on first failure.
1. Lint
npm run lint 2>&1 || npx eslint . 2>&1If lint fails with auto-fixable issues, fix them and continue. If lint fails with real errors, fix them before proceeding.
2. Test
npm test 2>&1If tests fail, determine if the failure is related to your changes or pre-existing.
- Related to your changes → fix before proceeding
- Pre-existing → note it, continue (don't block a production hotfix for unrelated test failures)
3. Build
npm run build 2>&1Must pass. If build fails, fix before proceeding.
4. Commit
Scope Ledger Gate (Soloship — required even in an emergency): Before this
commit, invoke verification-before-completion and emit its Scope Ledger
(shipped / remaining / out-of-scope) and Touch Map. Emergency fixes are the
highest-risk place for stale-state bugs — a hotfix that patches 1 of 4 copies
of the broken value ships the bug right back. git grep the changed value/name
across the whole repo; resolve every hit with evidence before committing. If
anything is REMAINING, the "Shipped." report must say so.
<!-- concern:verification-sufficiency -->This gate's named evidence, once produced for the current state, is sufficient —
stacking further passes or reviewer dispatches on top is scope creep, not rigor.
A changed state (post-fix, post-edit) still requires fresh evidence; see
references/verification-sufficiency.md.
Stage the changed files (be specific — don't git add -A).
Write a concise commit message with the appropriate prefix:
fix:for bug fixesfeat:for new featuresrefactor:for refactoring
If the commit is feat: or fix:, check that CHANGELOG.md was updated.
If not, add a one-line entry to the [Unreleased] section.
5. Push
git push6. Deploy (via the shared production deploy sequence)
This is a production deploy, so it runs the shared sequence in
references/deploy-sequence.md (the deploy-from-main-only rule): verify
clean, synced default branch in the main checkout → acquire the deploy lock →
git fetch --tags origin → show the manifest (git log prod..HEAD --oneline,
which includes other sessions' merged work) → one go/no-go question →
deploy → move + push the prod tag → release the lock (on failure paths too).
Even in emergency mode the manifest is shown and one confirmation asked — that single keystroke is what prevents unknowingly shipping (or rolling back) another session's work. Speed cost ≈ 5 seconds.
Platform detection for the deploy command itself:
firebase.jsonexists →firebase deployvercel.jsonexists →vercel --prodnetlify.tomlexists →netlify deploy --prodfly.tomlexists →fly deployDockerfileexists → follow project-specific deploy instructions in CLAUDE.md- None detected → ask the user how to deploy
7. Verify Live (do NOT skip — this is the recurring prod-gap fix)
A deploy command exiting 0 does not mean the fix is live. The single most expensive recurring failure is "shipped" being reported when a stale bundle or unapplied migration meant the fix never reached users. Before reporting Done:
- Get the live URL (deploy command output, CLAUDE.md, or
wrangler pages deployment list/firebase hosting:channel:list). - Fetch it and confirm it is the NEW version, not cached/old:
A 200 alone is not proof; the old version also returns 200.curl -sS -o /dev/null -w "%{http_code}" <live-url> # expect 2xx - Browser-QA the actual fixed flow on the live URL (per the auto-loaded
browser-qa-gaterule, applied to the live site). Open it with/soloship:browseand reproduce the exact scenario that was broken — confirm the fixed behavior now happens, not just that a string is present in the HTML. If the broken flow is behind a login, use the project's documented test account (docs/testing/test-accounts.md); if none exists, ask the user for credentials rather than skipping — a hotfix you couldn't actually exercise isn't verified. - If the live page does not reflect the change, or the flow still misbehaves: the artifact was stale, the deploy hit the wrong target, or the fix is incomplete. Rebuild/redeploy or fix, then re-verify. Do not report Done until the fixed behavior is observably live in the browser.
- If this deploy asserts any live-data fact (a row count, a reconciled total, "these now match"): run the evidence loop (
references/evidence-loop.md) and show the provenance-complete Claims-Table row before reporting Done. Perlive-data-evidence-gate, a data claim with no shown query is inferred, not confirmed. - Tear down browser sessions before reporting Done (per
browser-qa-gate): close Claude in Chrome tabs you created (tabs_close_mcp), release credential grants (release_credentials), close built-in-browser pages. Leave the/soloship:browsedaemon running — its logins are shared by design.
Done
Shipped.
Commit: [hash] [message]
Deployed to: [platform]What Ship Fast Does NOT Do
- Code review
- Coverage audit
- PR creation
- Registry updates
- Plan lifecycle cleanup
- Frill sync
Those are /shipthorough responsibilities. Ship fast is for getting fixes live.
Verification
Ship fast is not complete until ALL of these are true:
- Lint passed (or auto-fixed and re-passed)
- Tests passed (or pre-existing failures documented)
- Build succeeded
- Changes committed with appropriate prefix (fix:/feat:/refactor:)
- Pushed to remote
- Deployed to detected platform (or user-specified target)
- Shared deploy sequence followed (
references/deploy-sequence.md): manifest shown + go/no-go answered, deploy lock acquired and released,prodtag moved + pushed after success - Live URL fetched and the specific change confirmed visible on it (not just a 2xx)
- "Shipped." summary presented with commit hash and deploy target
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

