Ask an agent to ship a change and it deploys it — code is running, a health check is green, the PR is merged. Nobody separated deploy from release from launch, no abort criteria were written before exposure started, and a clean canary got read as proof for the whole population instead of the cohort it actually covered. operate runs what's already shipped — release and rollout, environments and secrets, CI/CD, infrastructure, observability, SLOs, incidents, recoverability, security posture, cost, decommissioning, and dependency lifecycle — and keeps it that way on the night nobody is awake.
runs onClaude CodeCodexCursorAntigravityopencodeGrok BuildHermes
observed only for the cohort it actually reached — everyone else is, at best, inferred. Never extend it past its conditions.release-and-rollout.mdsurface-managed-platform.md
2 of 20 loaded · read fully
Route before acting. One job, at most one base surface — org-scale is added only when a rota, role separation, or a formal change-approval process actually exist, never assumed.
The router is the skill. There is no fixed pipeline to run start-to-finish — each job stands alone and enters where your request is. The animation traces one path (a rollout, judged for what it actually proves); the sections below map the whole surface it routes across.
Release the product and keep it available, observable, secure, recoverable, and cost-effective — and keep it that way on the night nobody is awake. operate is the only skill in the family whose subject is a running system rather than an artifact: every sibling produces something and hands it on; operate receives an artifact and owns what exists afterwards, indefinitely. It writes infrastructure, pipeline, configuration, policy, and observability code — it does not modify product code to fix a defect it observes; that routes to the owning skill. It may make an emergency change to restore service and must then file it back: stop the bleeding, do not perform the surgery.
what keeps a shipped product alive, once it's live
the "Not this skill" table — eight asks this skill declines by design
The default reader is one person, or a small team, on a managed platform, with no rota.
That inverts the published canon deliberately: the SRE canon claims its lessons apply "regardless of
size or maturity" while publishing a five-to-eight-person floor in the same chapter, and never
resolves the contradiction. Org-scale assumptions — rotas, role separation, change boards — live in
surface-org-scale.md and are added, not assumed.
SKILL.md is a router, not a script. Every request selects the smallest sufficient route: one primary job — the twelve below — combined with at most one base surface that reshapes how the job applies to what's actually running, plus the additive org-scale overlay when a rota, role separation, or formal change approval exist. Read the selected references completely; load two or three at most, never the whole pack.
| facet | options | rule |
|---|---|---|
| ① Primary job | release-and-rollout ⭐ · environments-and-configuration · delivery-pipeline · infrastructure-provisioning · observability · slo-and-alerting · incident-response · recoverability · production-security-posture · capacity-and-cost · decommissioning · dependency-lifecycle | Exactly one. Pick the single job the request needs; the flagship — deploy≠release≠launch, graded by evidence class — is the layer every rollout decision rests on. |
| ② Base surface | managed-platform (default) · self-managed-cloud · serverless-edge · mobile-release · data-pipeline · ai-system | At most one. The surface reshapes what each job means for what's actually running — it points to the job references, it doesn't redefine them. |
| ③ Org-scale overlay ⭐ | surface-org-scale — rota sizing, role separation in incidents, error-budget policy as a contract between parties, change management with an audit trail | Additive. Stacks on top of the base surface, only when a rota or change-approval process actually exists. Inverts the canon: every other reference in this pack writes the solo/small-team case as default. |
Each job is one reference, read fully only when its route is selected. Jobs 10–12 — decommissioning, dependency-lifecycle, and the cost-to-serve bridge inside capacity-and-cost — are the three facets the research found grep-verified absent from competitor ops content; this is the whole surface, not a headline slice.
| I need to… | Read | Contribution |
|---|---|---|
| Ship this change safely — canary, flags, rollout, rollback ⭐ | release-and-rollout.md |
Flagship. Deploy≠release≠launch; what each rollout mechanism does not establish; abort criteria written first; the peeking problem |
| Set up environments, config, secrets, version pinning | environments-and-configuration.md |
Environment strategy that earns its cost, rotation over storage, pinning anything that can change underneath you |
| Build or fix the CI/CD pipeline; supply-chain integrity | delivery-pipeline.md |
Build once and promote; CI is production; SLSA/SBOM/signing; DORA with its report year attached |
| Provision infrastructure, IaC, GitOps, drift | infrastructure-provisioning.md |
Declarative + reconciled, the emergency-intervention tension, and the licence-and-liveness check |
| Decide what to instrument, and what it will cost | observability.md |
USE/RED/Golden and which applies where; cardinality as the cost driver; three pillars shipped as contested; OTel as exit cost |
| Set SLOs, decide what pages, stop the noise | slo-and-alerting.md |
Burn-rate windows including the slow-burn ticket row; page only on user-visible harm; error-budget policy, and why it doesn't transfer to n=1 |
| Something is broken right now; or write the postmortem | incident-response.md |
Command roles and their collapse at n=1; severity by user impact; root cause shipped as contested |
| Prove we can come back — backups, DR, restore | recoverability.md |
Restore drills over backups; the RTO validity envelope; what the platform does not do for you |
| Harden production — patching, rotation, access | production-security-posture.md |
Posture as an ongoing SLA, deploy-identity least privilege, backups as a ransomware control |
| What does this cost to run, and how do we cap it | capacity-and-cost.md |
Cost-to-serve per unit of value; autoscaling is not a cost control; activity-scaled spend needs a circuit breaker |
| Turn something off for good | decommissioning.md |
Sunset as an owned stage — evidence nothing depends on it, the reversibility window, obligations that outlive the service |
| A dependency is being retired, or changed under us | dependency-lifecycle.md |
Withdrawal and substitution; notice periods as a purchasable property; liveness is re-checked, never inherited |
Full router table & invariants: SKILL.md.
One base surface, at most, reshapes every job for what's actually running — the same rollout job
is bounded differently on a managed platform than on a mobile app that can only roll forward.
The org-scale overlay is additive — it stacks on top of whichever base you picked,
never replaces it — and carries a distinct violet identity throughout this page, the same convention
quality uses for its own regulated overlay.
Most treatments of a rollout stop at "it went out clean." The pack's sharpest synthesis is that a rollout result is evidence with a class and a population — a canary tells you something true and specific about the cohort it reached, and something much weaker, or nothing, about everyone else. Confusing the two is how a clean canary precedes a failed rollout.
| Term (I1) | What actually happened | Who owns it |
|---|---|---|
| Deploy | New code is running somewhere — possibly behind a flag, possibly at 0% traffic | operate |
| Release | Some or all users now receive the new behavior | operate executes; quality gated whether it may happen |
| Launch | Someone told the market this exists | marketing / product |
The load-bearing table — a clean result from each mechanism earns evidence of a specific class and scope, never a blanket "it works":
| Mechanism | Establishes | Does not establish |
|---|---|---|
| Canary, statistically judged | The exposed cohort's metrics weren't distinguishable from a freshly matched baseline, on the monitored metrics, over the window. | Behavior for cohorts outside the split; effects needing longer than the window; anything on an unmonitored metric. |
| Blue / green | The new environment passed pre-cutover tests and gives a fast rollback path. | Real production load at cutover — Fowler names "missed transactions while the green environment was live" during rollback directly. |
| Feature-flag percentage rollout | Behavioral equivalence, on watched metrics, between the flagged and unflagged path, for the cohort routed to each. | Combinatorial flag-interaction states — "a combinatoric explosion of possible toggle states" with multiple toggles live. |
| Health check, deep | The checked dependency chain was reachable at check time. | Independence from the dependency graph — one real outage can flip every upstream check to failing at once. |
| Post-deploy smoke test | The paths exercised in the suite returned the expected response, right then. | Anything outside the suite; load behavior; correctness under real data; slow-onset failure. |
Solo default — no rota watching the canary: automated abort on the pre-registered threshold, not a person deciding in the moment · longer bake time before widening the ring · a smaller default blast radius · a kill switch tested before you need it. The roles do not disappear at n=1 (I13) — substitute mechanism for headcount.
Two stances set operate apart from the technique libraries it sits beside: it writes the solo/small-team case as the default rather than an afterthought, and it subtracts the folk number everywhere the field cites a round threshold with no published rationale.
Grep-verified: the strongest competitor's 14,591 lines of ops content mention a one-person operator zero times and list "you have on-call rotations" as a prerequisite.
surface-org-scale.md, stated as an addition, never the default this pack teaches fromCite provenance or do not cite — including when the correction makes the claim stronger, not more comfortable.
Four SDKs' actual agent-loop circuit-breaker defaults, read from source — the spread is the finding:
"25" is the folk number people cite for LangGraph's recursion limit. The real default is 10007 — high enough to function as no cap at all in most runaway scenarios.
References cite these by number; the numbering is canonical. These rules govern every route, whichever files it loads.
observed for its cohort, inferred for everyone else. Never extend it past its conditions.operate's core workflow runs against whatever upstream artifacts exist — a quality
ship decision, an architecture SLO target, a build skill's handoff — and says so
explicitly when none were supplied, rather than inventing one.
The "does not establish" row, fillable for any rollout mechanism this skill meets — the pattern, not a fixed table.
Metric, threshold, covered population, and one named halt authority — filled in before exposure starts.
A real backup restored, timed, and torn down on a schedule — a drill you ran, not a maxim you repeated.
Registrar, payment method, recovery email, root account, and the human — not just the servers.
An alert that fires twice without producing action gets deleted or downgraded — checked, not assumed.
The per-unit-of-value ratio, tracked over time — total spend rising while the ratio falls is a win, not a red flag.
Evidence nothing depends on it, the reversibility window, and obligations that outlive the service.
The routing companion carrying rollout evidence, residual risk (inherited and new), and every volatile fact with its re-verify trigger.
operate consumes upstream artifacts without silently overriding them — the ship/claim decision
and residual-risk register from quality, SLO targets from architecture, a
handoff from whichever build skill produced the artifact — and says so explicitly when none exist,
rather than inventing a target or a decision to fill the gap. It is rarely terminal: it emits a
compact handoff.yaml beside the deploy record whenever downstream work is expected.
release_id: <identifier> deploy_release_launch: [deployed_at, released_at, launched_at] rollout.result: evidence_class + scope residual_risk: [inherited_from_quality, newly_surfaced] — owner + expiry emergency_fixes_filed: [routes_to, change] volatile_facts: [fact, value_at_handoff, reverify]
The rollout evidence result feeding whether a claim may widen — never used by operate itself to upgrade one (I12) — plus any newly surfaced residual risk added to its register.
A filed emergency fix under I10 — exactly what changed to stop the bleeding — and any decommission or dependency-withdrawal notice that forces a migration.
When a rollout is also an experiment, operate owns the flag's lifecycle and debt; growth owns the readout — handed the evidence-class scope, never a verdict on the experiment.
Most solo, single-skill deploys need no handoff.yaml at all. When nothing downstream will read it, skip the companion and keep the rollout record in the deploy log instead. When one is written, only deploy_release_launch.deployed_at is required; the other two timestamps may be explicit "not yet" or "not this skill's call." Never silently invoke a sibling skill — name it in recommended_next.
Install once. It's a plain SKILL.md router — no flags, no config, no scripts — so it
activates on natural-language phrasing ("can we widen this rollout," "what's our real RTO for this
database," "page just fired at 3am, is it real," "what's this actually costing per tenant") rather
than a fixed command.
The same install runs on any Agent Skills
host. Codex installs to ${CODEX_HOME:-$HOME/.codex}/skills and triggers with
$operate; agents remains a separate cross-agent installation target.
| host | install target | command |
|---|---|---|
| Claude Code | ~/.claude/skills | ./install.sh claude |
| Codex | ${CODEX_HOME:-$HOME/.codex}/skills | ./install.sh codex |
| Cross-agent path | ~/.agents/skills | ./install.sh agents |
| Cursor CLI | ~/.cursor/skills | ./install.sh cursor |
| Antigravity (IDE + agy) | ~/.gemini/…/skills | ./install.sh antigravity |
| opencode | ~/.config/opencode/skills | ./install.sh opencode |
| Grok Build | ~/.grok/skills | ./install.sh grok |
| Hermes | ~/.hermes/skills | ./install.sh hermes |
Prefer npx skills add gabros20/operate-skill when you have Node — it maps supported clients itself.
More docs: docs/installation.md · docs/usage.md · docs/recipes.md.