AI can write the code. Production Guard asks whether the resulting behavior is safe to ship — validating regressions, failure modes, security boundaries, data integrity, performance and operations, then returning one verdict backed by checks it actually ran.
npx skills add soumyaRauth/skills-hub --skill production-guard
code generation ≠ production correctness
A change can pass its tests, compile, look reasonable and satisfy the ticket — and still break an existing workflow, expose another tenant's data, corrupt records under concurrency, double-charge on retry, time out at real data volumes, silently swallow errors, or leave no trace of what it did at 3 AM.
code change → behavior model → regression model → failure model
→ security / data / performance / operations
→ execute available validation
→ readiness report → ship / conditional ship / do not ship
No slash command needed. Installed, it is loaded when a request needs it and stays out of the way otherwise — and when it does shape the work, one ⚡ line says so. How the skills work together →
| Engages | Someone asks whether a change is safe to merge, release or deploy — or high-risk work on money, auth, migrations, bulk or destructive operations, tenancy or integrations is wrapping up. |
| Stays quiet | Work in progress, low-risk changes, prototypes not headed to production. |
| Depth | Gating when a person asks for the ship decision. Otherwise a consult: the two or three failure scenarios that most need checking. It never blocks work nobody asked it to gate. |
| Works with | ProofBuild, Impact Map, Standards Compass, Dependency Guard |
| Code review asks | Production Guard asks |
|---|---|
| Does this code look correct? | What happens when this reaches real users? |
| Are there bugs in the diff? | What existing behavior could this break? |
| Is this readable and idiomatic? | How does this fail, and can it recover? |
| Does it have tests? | What do the tests prove, and what is still unverified? |
| — | If this runs twice, does it do the thing twice? |
| — | If it fails halfway, what state is left behind? |
The single most important rule. Production Guard never emits this:
Code quality: 94% Security: 87% Overall: 91%
Those numbers feel authoritative and mean nothing. It reports what it actually did:
FUNCTIONAL VALIDATION 14/14 passed REGRESSION VALIDATION 21/23 passed SECURITY 8/8 passed DATA INTEGRITY 5/6 passed FAILURE SCENARIOS 6/9 validated PERFORMANCE 3/4 validated OBSERVABILITY 2/4 validated
and derives the verdict from explicit rules:
| Verdict | Rule |
|---|---|
| 🟢 Ship | No blockers, no unresolved HIGH findings, all risk-required categories validated |
| 🟠 Conditional ship | No blockers, but a HIGH finding or a required category left unverified |
| 🔴 Do not ship | At least one BLOCKER |
The other rule that makes the report trustworthy. Every check is labeled:
EXECUTED pytest tests/payments/ -q → 24 passed npx tsc --noEmit → PASS ANALYZED (not executed) Behavior at 100k records → STATUS: UNVERIFIED Provider timeout handling → STATUS: UNVERIFIED — no sandbox creds
Reasoning is legitimate evidence — reading a loop is enough to prove a missing transaction. Presenting reasoning as an observed test result is not. A failure scenario only gets an actual result when it was actually exercised.
Abbreviated, from the bulk-deletion example:
CHANGE Add bulk deletion to user management.
RISK High — destructive, multi-record, irreversible.
VERDICT 🔴 DO NOT SHIP
BLOCKERS 2 HIGH 2 MEDIUM 1 LOW 1
🔴 #1 Authorization is checked once for the actor, never per target.
Evidence: BulkDeleteController.php:34 authorizes once, then deletes every
id in the request body. The single-delete path checks per record.
Risk: A team admin can delete users outside their team by supplying
their ids. The UI never offers them; the ids come from the body.
Confidence: High — observed, a test posting a foreign id deleted it.
🔴 #2 Partial failure leaves the operation half-applied with no record.
Evidence: BulkDeleteService.php:28-41 commits per item inside a loop.
Risk: Failure at item 47 of 100 leaves 46 deleted, 1 failed and 53
untouched. The client cannot tell which, and retrying deletes
an arbitrary further subset.
Five full worked reports ship with the skill: payment, bulk operation, API change, database migration, and authentication. One ends in 🟢 SHIP deliberately — a gate that never passes anything is not a gate.
Not every change earns every check. The skill classifies first.
| Risk | Examples | What runs |
|---|---|---|
| Low | Copy, styling, isolated UI, docs | Functional, regression, basic UX |
| Medium | Business logic, API changes, schema changes, shared components | + failure, security, data integrity, relevant performance |
| High | Payments, auth, destructive operations, migrations, multi-tenancy, external integrations | + concurrency, idempotency, observability, recovery, integration behavior |
npx skills add soumyaRauth/skills-hub --skill production-guard
npx skills add soumyaRauth/skills-hub --skill production-guard --agent claude-code --copy
Production Guard runs your project's own checks where it can — targeted tests first, then type checks, lint, integration tests and build. It establishes a baseline first, so a pre-existing failure is never blamed on your change, and it states the scope of what it ran rather than implying a full suite.
It will not drop databases, reset environments, delete data, destroy containers, rewrite git history, force push, deploy, or touch production-like systems. It reads git state and never modifies it — no commits, no resets, no stashing.
ticket → impact-map → implement → production-guard → ship
Impact Map runs before implementation and maps what a change will touch. Production Guard runs after and validates that what was built is safe to ship. Neither requires the other.
Production Guard improves the evidence available before shipping. It does not guarantee production safety, and no tool that reads your code can.