production-ready

May 9, 2026 · View on GitHub

A Claude Code skill that asks what production means to you, then enforces it on every line of code.

Install

In Claude Code, run:

/plugin marketplace add josharsh/production-ready

Or manually:

mkdir -p ~/.claude/skills/production-ready
curl -sL https://raw.githubusercontent.com/josharsh/production-ready/main/skills/production-ready/SKILL.md \
  -o ~/.claude/skills/production-ready/SKILL.md

Manual: Copy skills/production-ready/SKILL.md to ~/.claude/skills/production-ready/.

Why I Built This

Every time I start a new project with Claude, it writes MVP code. Happy path works. Error handling is a generic try-catch. Input validation is TypeScript interfaces with zero runtime checks. Tests are "coming later." Secrets are hardcoded. And there's a trail of TODO comments that nobody will ever come back to.

The problem isn't that Claude can't write production code — it can. The problem is it defaults to tutorial quality unless you explicitly ask for more. And even then, "make it production ready" means different things for different projects. A weekend side project doesn't need rate limiting. An enterprise API does. Claude doesn't know the difference unless you tell it.

/production-ready fixes this by asking YOU what production means at the start of the session, then enforcing those standards on everything it writes. No silent shortcuts. No "we'll add that later." If it's going to skip something, it tells you first.

How It Works

The Calibration (30 seconds)

You: /production-ready

Claude: These are always on (unless you disable one):
  - No hardcoded secrets — use environment variables
  - Input validation on external boundaries
  - Error handling with specific types, not generic catch-all
  - No TODO/FIXME/placeholder code left behind
  - No debug logs left in
  - Functions do one thing

  Want to disable any of these, or are we good?

You: Good.

Claude: Which of these matter for this project?
  - Tests (unit? integration? framework?)
  - Structured error responses
  - Auth on every endpoint
  - Database migrations / connection pooling
  - Logging with levels
  - CI/CD config
  - Rate limiting
  - Environment config validation
  - Runtime type validation (zod, etc.)

You: Unit tests with Vitest, zod validation, structured errors.

Claude: Anything else specific to your project?

You: All API responses must include a requestId header.

Claude: Production standards locked:
  Baseline: secrets, validation, error handling, no TODOs, no debug logs
  Tests: unit tests with Vitest
  Types: zod validation on all inputs
  Errors: structured { error, code, details }
  Custom: requestId header on all responses

30 seconds. Now every line of code in this session meets YOUR standards.

The Enforcement

You don't have to remember to ask. Claude writes production code by default:

  • Validation at entry points, not buried in business logic
  • Error handling with specific types and status codes
  • Tests written alongside code, not promised for later
  • Environment variables for anything that changes between environments
  • Your custom rules applied automatically

The "I'm in a Hurry" Moment

You: Just quickly write me a login function, skip the extras.

Claude: I can do a quick version, but here's what I'd skip:
  - Input validation on the endpoint
  - Unit tests
  - Structured error response

  Want the quick version, or should I build it right?

Never silently downgrades. You choose with full information.

The Check

You: /production-ready check

Claude: Production Review: src/api/users.ts

  ✓ Input validation — zod schema on POST /users
  ✗ Error handling — catch returns generic 500
  ✓ Auth — middleware applied
  ✗ Tests — no test file found
  ✓ No hardcoded secrets
  ✗ Custom — missing requestId header

  3/6 standards met. Want me to fix the gaps?

Commands

CommandWhat it does
/production-readyCalibrate your standards, then enforce them
/production-ready checkReview code against your defined standards
/production-ready standardsShow current standards in effect

Testing

Tested with skillmother:

skillmother test skills/production-ready/

Uninstalling

rm -rf ~/.claude/skills/production-ready

License

MIT