Ready to release
Deep release-readiness gate for a single letterbox service — checks CI green, contracts in sync, deploy-order prereqs satisfied, feature toggle present, and unpushed work vs the live deploy. Emits a gate table and a single verdict. Use before deciding to ship one service.From its SKILL.md
npx -y skills add flurdy/agent-skills --skill ready-to-releaseAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 7 stars7 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.3 KB, ~1.0k tokens by cl100k_base, as published. Nobody here has run it
Ready to Release
A focused, per-service readiness gate. Where /release-manager scans everything and prompts,
this answers one question thoroughly: is <service> safe to ship right now? Read-only —
it reports a verdict, it does not push.
This is the deploy-side cousin of /ready-to-merge (which gates a PR merge). This gates a
release of an already-merged service: built locally, CI green, contracts honoured, deploy
order respected, toggle in place.
Usage
/ready-to-release dispatch
A service argument is required.
Instructions
Run these checks for the named service and present a gate table (✅ / ⚠️ / ❌ per row):
-
Unpushed work —
make git-status <service>. Show commits ahead (N) and whether the tree is dirty (*).N = 0→ nothing to release (note it and stop). Dirty tree → ⚠️ (commit first). List the unpushed commits with./scripts/mgit log <service> --oneline @{u}..HEAD. -
CI —
make ci-status <service>.success→ ✅;running→ ⚠️ (wait);failed/error→ ❌ (blocker);unknown(noCIRCLECI_TOKEN) → ⚠️. -
Contracts — if the service has connectors/pacts, run
Skill /contract-check statusand read the rows for this service. Covers both contract state (staleness / unsynced / uncommitted → ❌) and verification coverage — if this service is a provider with a coverageGAP(CI doesn't verify all its consumer pacts, e.g. commented-out consumers), flag ⚠️ (a contract change may break an unverified consumer). -
Deploy order — run
./scripts/pact-graph(a project symlink installed by /release-manager — see its Setup if missing) and readdocs/release-manifest.yaml. Build the effective dependency map =(order.derived ∪ order.manual) − order.suppress, and take this service's prereqs. A prereq blocks only if it is co-changing — has unpushed commits, is mid-rollout (make deploy-status <prereq>shows a DeploymentN/M, N<M, or a CronJob service — digest/patrol/reconciler — showingcron:rollout), or was pushed-but-not-rolled. A stable, already-live prereq (a Deployment1/1at current tag, or a CronJob service showing the settledcronmarker) does not block. All clear → ✅; any co-changing prereq → ❌ (waiting on<prereq>). (Contract coverage is checked in step 3, not here — this step is purely deploy ordering.) -
Feature toggle — if
docs/release-manifest.yamltoggleshas an entry whoseserviceis this one, report the flag, its live value (make feature-toggles), and theflip_whencondition so you know whether shipping needs a follow-up toggle flip. Missing-but-expected toggle → ⚠️. A toggle withstatus: dark-releasemeans the service is in a shadow launch — report it as🌓 dark-release(flip is a later manual call), not a blocker. If the service has aparkedflag, note it as informational only (deliberately off,superseded_by/reconsider_if) — never treat it as a pending flip. -
Live deploy —
make deploy-status <service>: show currentready/tag/ageso you can see what's running versus what you're about to ship. For a CronJob service (digest/patrol/reconciler) this is thecron/cron:rolloutmarker + tag + last-run age, not replicas.
Verdict
End with one line:
- READY ✅ — unpushed commits, CI green, contracts in sync, prereqs rolled out. Suggest
make git-push <service>(the user runs it, or use/release-manager). - NOT READY ❌ — list the blocking rows.
- HOLD ⚠️ — only soft warnings (CI running, dirty tree, toggle follow-up); say what to wait for.
Read-only: never push here. Pushing is an explicit action via /release-manager or make git-push.
What ships with it: 1 file
1.8 KB alongside SKILL.md, 1 of them executable
tests/
- test-skill-contract.shruns1.8 KB