Skip to content
Back to skills

Production Readiness

ASecurity

Use when asked whether an app, API, or service is production ready, launch ready, or safe to go live; before a first production launch or a major release; or when reviewing security, rate limiting, CI/CD, deployment, scaling, monitoring, error tracking, backups, or disaster recovery for a web application.

  • 4 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 22, 2026
ai-agentsrustgonodegitapidatabaseci/cdsecurity

Works with

  • cli
  • api
  • mcp

Security analysis

A100/100

Pro scans all 6 files and shows the line behind each finding

Scanned October 22, 2026

npx -y skills add Gladiarn/Glad-Personal --skill production-readiness --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Production Readiness?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Production Readiness
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/gladiarn-production-readiness/badge)](https://www.skillsdirectory.com/skills/gladiarn-production-readiness)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: production-readiness
description: Use when asked whether an app, API, or service is production ready, launch ready, or safe to go live; before a first production launch or a major release; or when reviewing security, rate limiting, CI/CD, deployment, scaling, monitoring, error tracking, backups, or disaster recovery for a web application.
license: MIT
metadata:
  version: 1.1.0
  author: Gladiarn
  repository: https://github.com/Gladiarn/Glad-Personal
---

# Production Readiness

## Overview

A production-readiness audit is an **evidence-backed checklist with a hard verdict**, not an opinion. Every item gets a status and the command or file that proved it. Anything not proven is not a pass.

**Core principle:** "Couldn't check" is a finding, not a footnote. Code that looks solid is not enough when backups, alerts, or CI are unproven: the verdict follows the gate, not the overall impression.

## When to Use

- "Is this production ready?" / "Can we launch?" / "What's left before go-live?"
- Before a first production launch, a big release, or handing a system to a client
- Periodic re-audit (re-run the same checklist; compare with the last report)

Not for: a code-correctness review of one change (use a code review), or a deep security audit (this skill calls for one; it does not replace a pen test).

## Process

1. **Map the stack** — read the repo (package manifests, framework config, deploy config, docs) and list: runtime/framework, database, hosting for each service, CI, monitoring. Also read project notes for open risks (roadmap, decisions log, agent memory files, issue list). Note which platform CLIs/MCP tools are available.
2. **Check live config, read-only** — platform settings are not in the repo. Use the platform's CLI/MCP read commands (see `checklist.md` → "Live platform reads"). Never mutate, never print secret values. When a setting's *value* matters (e.g. `NODE_ENV`), prove it by behaviour (a `Secure` flag on a live `Set-Cookie`, production error format) or ask the owner — don't read the variable.
3. **Work every item in `checklist.md`** — all eight areas. Mark items that don't apply `N/A` with the reason (e.g. RLS when the database is reachable only through the API). Items marked *Only if…* apply only when the app has that feature: one quick grep, and if it isn't there the row is `N/A — no <feature>`, VERIFIED. Don't dig further and don't warn about features the app doesn't have.
4. **Run the cheap commands** — `npm audit` (or equivalent), `npx tsc --noEmit`, `npx eslint` (no `--cache`). Avoid project scripts that write (codegen such as `prisma generate`, build output, caches). If `tsc` fails only because generated code is missing, record it in "Could not check" as "typecheck not run (needs codegen)" — not as a failure. These command results are evidence for the CI and dependency-audit rows, not rows of their own. Run the test suite only if it is fast or the user agrees.
5. **Write the report** in the exact shape of `report-template.md`.
6. **Apply the verdict rule** below. Then offer to turn the gaps into a plan; do not fix anything during the audit.

## Evidence Levels (REQUIRED on every line)

| Level | Meaning | Effect on status |
|---|---|---|
| `VERIFIED` | You checked it yourself: a command, file, config, or live response proves it is there — **or proves it is absent** after you searched everywhere it could be (also used for a justified `N/A`) | Status is what you found (PASS, FAIL, or N/A) |
| `CLAIMED` | Docs, comments, or the owner say so, but you could not confirm it | Never PASS: WARN for normal items, FAIL for gate items |
| `UNKNOWN` | You had no way to look (no access to where the answer lives) and nobody stated it | WARN for normal items, FAIL for gate items |

**Not found ≠ unknown.** Searched the repo, docs and notes and there is no workflow, no runbook, no recorded restore test → `FAIL`, `VERIFIED`. A control the current plan doesn't offer (e.g. GitHub branch protection on a free private repo) is `FAIL`, `VERIFIED` — the protection is absent — with the plan noted.

## Verdict Rule

**GATE items are exactly the ⛔ items in `checklist.md`** (that list wins): password hashing, session/token security, production secret check, every route guarded, secrets out of git, HTTPS + secure cookies, dependency audit, CI runs tests, deploys can't skip CI, written rollback path, error tracking with alerts, uptime monitoring with alerts, backups with known retention, a **tested** restore.

- Any gate item `FAIL` (including CLAIMED/UNKNOWN gates, which are FAIL) → **NOT READY**
- All gates pass, some non-gate `FAIL`/`WARN` → **READY WITH CONDITIONS** (list them, each with an owner/next step)
- Everything passes or is justified `N/A` → **READY**

### Static sites

**Static** = the stack map shows only static files: no server code, no serverless functions, no database, no logins, no forms that store data. Anything else is not static, and every item applies.

For a static site:
- Items about servers, auth, sessions, data, backups, restore, and the recovery runbook are `N/A — static site`. CI gates are `N/A` when there is no code to test (plain HTML/CSS).
- ⛔ Written rollback path passes when the host has one-click rollback to the previous deploy (Vercel, Netlify, Cloudflare Pages): there are no migrations to undo.
- ⛔ Uptime monitoring becomes a non-gate item (WARN when missing).
- HTTPS, secrets out of git, and the dependency audit (when there are dependencies) stay gates.

No "mostly yes", "ready for a careful launch", or percentage scores. Small team or internal app changes the urgency of fixes, not the verdict.

## Report Rules

- Gate rows appear in full in the gate table; in the area tables write `see gate table` in Evidence.
- An item listed under two areas is scored once, in the area that owns it (the other says `see area N`).

## Common Mistakes

| Mistake | Fix |
|---|---|
| Trusting the README for platform settings | Read the live config (replicas, health check, plan, restore window) |
| "Couldn't check" listed at the end, verdict unaffected | A gate that is `UNKNOWN` or only `CLAIMED` is FAIL → NOT READY |
| Backups "exist" because the provider has PITR | Gate needs: retention known **and** a restore actually tested, with a date |
| Narrative report | Use `report-template.md`: table per area, one line per item |
| "Nothing in the docs" marked UNKNOWN | You looked and it isn't there → FAIL |
| Running `npm run typecheck`/`build` in a read-only audit | They may write codegen/caches; use `tsc --noEmit` |
| Fixing things mid-audit | Audit only; offer a plan afterwards |
| Jobs "covered" because errors go to Sentry | A job that never runs throws nothing — it also needs a heartbeat/check-in monitor |
| Static site failed for no runbook / no RTO / no restore | Apply the static-site rule: those are `N/A`; host one-click rollback passes |
| Flagging RLS / multi-region / Redis by default | Only when the architecture needs it — otherwise `N/A` with reason |

## Files

- `checklist.md` — every item, by area, with how to verify it (generic + stack-specific commands)
- `report-template.md` — the required output shape

Files in this skill

  • LICENSE1 KB
  • README.md9 KB
  • SKILL.md7.1 KB
  • checklist.md9.8 KB
  • examples/sample-report.md5.9 KB
  • report-template.md1.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.