deploy-gate
Skill6 starsChanged 51 days agoMITView on GitHub
Use when preparing to ship or release — before pushing to production, promoting a build, or finalizing a branch — to confirm CI is green, no WIP commits remain, and version and design artifacts are in order
1 other project uses a version of this.
Adopted by
Most recently taken up by
- austin-starks/Public-Portfolio-Challengetheir own version, first seen Aug 2, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- austin-starks/Public-Portfolio-Challenge★ 82same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository27 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- agent-safety-reviewSkill
- agent-team-executionSkill
- agent-team-reviewSkill
- alert-hygieneSkill
- authorial-judgmentSkill
- batch-scriptingSkill
- capture-knowledgeSkill
- design-debateSkill
- implementation-drift-checkSkill
- improvement-minerSkill
- incident-analysisSkill
- incident-trend-analyzerSkill
- openspec-shipSkill
- outcome-reviewSkill
- panelSkill
- product-discoverySkill
- project-verificationSkill
- prototype-labSkill
- runtime-validationSkill
- second-opinionSkill
- security-scannerSkill
- skill-scaffoldSkill
- supply-chain-investigationSkill
- synthesizeSkill
- unified-context-stackSkill
The file
We split this skill into the rules it gives an agent
9 rules. About 0 are common, 6 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 28
Run each check. Report pass/fail with evidence.
- Very specific: line 57
Check if CHANGELOG.md, package.json, or version file was modified in this branch.
- Very specific: line 61
Check session state for design_path.
- Very specific: line 81
If .deploy-checklist.yml exists in the repo root, read it and use its checklist instead of the defaults above.
- Distinctive: line 142
Rollback is the default, not the exception: If a trigger trips, revert first and diagnose after — do not "wait and see" while widening.
- Distinctive: line 146
If any required check FAILS, report the failure clearly and stop.
- Distinctive: line 150
Before reporting GO, confirm -- with evidence, not assumption:
- Distinctive: line 152
Every Required Check ran and its result was observed this session (CI status fetched, not presumed green).
- Distinctive: line 153
No required check sits in an unknown or skipped state being treated as a pass.
≈ “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
Deploy Gate v0.1
A thin checklist-runner that verifies deployment readiness before shipping. This skill checks preconditions — it does NOT execute deployments, manage rollbacks, or monitor rollouts.
When This Activates
- Part of the SHIP phase composition chain
- Runs after
verification-before-completionconfirms code correctness - Runs before
openspec-shipgenerates documentation - Can also be triggered explicitly: "check deployment readiness", "run deploy gate"
Checklist
Run each check. Report pass/fail with evidence. Do not block on warnings — report them and let the human decide.
Required Checks (must pass)
CI Status (fail-closed: absent ≠ green)
_concl="$(gh pr checks --fail-fast >/dev/null 2>&1 && echo PASS \ || gh run list --limit 1 --json conclusion -q '.[0].conclusion')" if [ -z "$_concl" ]; then echo "GATE FAIL: no CI checks reported — absent ≠ green. Treating as FAIL." else echo "CI conclusion: $_concl" fiGate: distinguish three states — green (
$_concl= PASS/success), red (any failure conclusion), absent-or-broken (empty$_concl, or a run that concluded with zero completed steps). Absent-or-broken is a FAIL, never a pass. Do not read an emptystatusCheckRollupas "nothing blocking → ship". Ifgh pr checksitself reports failing checks, that is red regardless of whatgh run listreturns — do not let a stale prior run'ssuccessconclusion mask currently-red PR checks.Local verification of record: when hosted CI is absent, you MAY accept a fresh
~/.claude/.skill-project-verified-<token>evidence file as verification performed on substratelocalONLY when itsfailedlist is empty, itscould_not_verifylist is empty,gate_gaming_statusis exactlyclean, ANDcoverage_adequacy_statusis notsuspect. Any other value forgate_gaming_status—suspect(a possibly-gamed gate),unverified(the gate-gaming check could not run), or the field absent — MUST NOT be accepted: require the positivecleanassertion, because absence is not proof (just as a non-emptycould_not_verify, a gate that could not run, is not).coverage_adequacy_statushas a deliberately different acceptance rule thangate_gaming_status, in parity withproject-verification's own tri-state contract for the field. Asuspectvalue (new code shipping below the changed-line coverage floor) BLOCKS acceptance the same waygate_gaming_status: suspectdoes — both are positive evidence of a problem, not mere absence of proof. Butunverifiedor an absentcoverage_adequacy_statusdoes NOT block acceptance, unlike an absentgate_gaming_status. This asymmetry is intentional:project-verification's adequacy check is itself fail-open by contract —unverified(no coverage tooling present, or an unparseable artifact) MUST NOT block there — so treating an absent orunverifiedfield as a rejection here would silently re-impose a block the upstream check explicitly disclaims, penalizing repos that simply lack coverage tooling rather than repos with a demonstrated coverage gap.Since absence-of-failure is not proof-of-pass, when rejecting evidence surface the specific reason (which gates could not be verified, that gate-gaming was detected/unverified in the diff, or that
coverage_adequacy_statuswassuspect) rather than only reporting that hosted CI was absent. Still surface that hosted CI was absent rather than claiming hosted-CI green. This evidence is advisory provenance, not a non-bypassable gate.- No WIP Commits
Gate: No WIP-pattern commits on the branch.git log --oneline origin/main..HEAD | grep -iE '(wip|fixup|squash|todo|hack|tmp)' - Version/Changelog Updated (if applicable)
Check if
CHANGELOG.md,package.json, or version file was modified in this branch. Gate: Soft — warn if no version change detected. - Design Intent Exists (if DESIGN phase was executed)
Check session state for
design_path. If set, verify the file exists atdocs/plans/. Gate: Soft — warn if design_path is set but file is missing.
Advisory Checks (warn only)
- Branch Protection
Report whether branch protection is configured.gh api repos/{owner}/{repo}/branches/main/protection 2>/dev/null | jq '.required_status_checks' - Dependent Services Notified Prompt: "Does this change affect any downstream services or consumers? If yes, have they been notified?" This is a human checkpoint, not an automated check.
- Feature Flags Prompt: "Is this change behind a feature flag? If yes, confirm the flag default is OFF."
Project-Local Override
If .deploy-checklist.yml exists in the repo root, read it and use its checklist instead of the defaults above. Format:
required:
- name: CI green
command: gh pr checks --fail-fast
gate: exit_code_zero
- name: No WIP commits
command: git log --oneline origin/main..HEAD | grep -iE '(wip|fixup|squash)'
gate: exit_code_nonzero # grep returns 1 when no match = good
advisory:
- name: Migration reviewed
prompt: "Have database migrations been reviewed by the DBA?"Output
Report as a structured checklist:
## Deploy Gate Results
| # | Check | Status | Evidence |
|---|-------|--------|----------|
| 1 | CI Status | PASS | Last run: success (run 12345) |
| 2 | No WIP commits | PASS | 0 WIP-pattern commits found |
| 3 | Version updated | WARN | No version change detected |
| 4 | Design intent | PASS | docs/plans/2026-04-15-feature-design.md exists |
| 5 | Branch protection | INFO | Required status checks: [ci/build] |
| 6 | Dependent services | HUMAN | User confirmed: no downstream impact |
| 7 | Feature flags | SKIP | No feature flags in this change |
**Result: PASS** (2 warnings, 0 failures)Staged Rollout & Rollback Plan (advisory)
This gate checks readiness; it does not execute the rollout. But a "go" is only meaningful against a pre-agreed rollout and rollback plan. Before promoting, confirm the human has these defined (surface them; do not enforce):
Progressive canary stages. Ship to a small slice first, bake, then widen. A typical ladder — adjust to traffic and risk:
| Stage | Traffic | Bake (target soak) | Advance when |
| Canary | ~5% | long enough to cover peak + one full request mix | no trigger tripped |
| Early | ~25% | shorter than canary — request mix already characterized | no trigger tripped |
| Half | ~50% | shorter still | no trigger tripped |
| Full | 100% | monitor | stable |
Rollback triggers (define BEFORE rollout, measured against the pre-deploy baseline — not against zero):
- Error rate — e.g. roll back if 5xx / error-event rate exceeds baseline by a pre-set margin (a relative bump, e.g. +0.5pp absolute or +50% relative, whichever the team picks) sustained over the bake window.
- Latency — e.g. roll back if p95 (and/or p99) exceeds the baseline by a pre-set margin sustained over the bake window. Use the same percentile the SLO is written in.
- Saturation — CPU/memory/connection-pool/queue-depth nearing limits at the current canary share (it will scale ~linearly as traffic widens).
Rollback is the default, not the exception. If a trigger trips, revert first and diagnose after — do not "wait and see" while widening. Prefer a fast revert path (redeploy previous image / flip the flag) over a forward-fix under load.
If any required check FAILS, report the failure clearly and stop. Do not proceed to openspec-ship.
Verification
Before reporting GO, confirm -- with evidence, not assumption:
- Every Required Check ran and its result was observed this session (CI status fetched, not presumed green).
- No required check sits in an unknown or skipped state being treated as a pass.
- Version and design-artifact checks reference the actual files, not memory.
- On any required-check FAIL, the verdict is STOP -- openspec-ship is not invoked.
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.

