Skip to main content

production-check

Full production readiness audit with 0-100 score — scans the entire project across security, error handling, observability, deployment readiness, database patterns, and container hygiene. Launches parallel analysis, classifies findings by severity, and produces a prioritized action plan. Use this skill when user says /production check, /production score, asks 'is this production ready', 'audit this project', 'how production ready is this', or wants a comprehensive codebase health check.

Quellinformationen

Repository
vstorm-co/production-stack-skills
Letzte Quellaktivität
16. April 2026 um 17:54
Erkannte Sprache von SKILL.md
Englisch
Sterne
26
Forks
7

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
2 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
production-check
description
Full production readiness audit with 0-100 score — scans the entire project across security, error handling, observability, deployment readiness, database patterns, and container hygiene. Launches parallel analysis, classifies findings by severity, and produces a prioritized action plan. Use this skill when user says /production check, /production score, asks 'is this production ready', 'audit this project', 'how production ready is this', or wants a comprehensive codebase health check.
# Production Check The comprehensive production readiness audit. This skill scans your entire project, evaluates it across six categories, assigns a score from 0-100, and gives you a prioritized action plan to get production-ready. This is not a code review. A code review looks at diffs. This looks at the entire system — from your Dockerfile to your error handling to whether your migrations will lock a table for 45 minutes. --- ## How It Works When the user runs `/production check`, execute these steps in order: ### Step 1: Detect the Stack Before auditing, identify what you're working with: ``` Scan for: - Language: Python (pyproject.toml, requirements.txt), Node.js (package.json), Go (go.mod), Java (pom.xml) - Framework: FastAPI, Django, Flask, Express, Fastify, Gin, Spring Boot - Database: PostgreSQL, MySQL, MongoDB, Redis (check connection strings, ORM configs) - Infrastructure: Dockerfile, docker-compose.yml, Kubernetes manifests, serverless configs - CI/CD: .github/workflows/, .gitlab-ci.yml, Jenkinsfile ``` Report the detected stack to the user before proceeding. ### Step 2: Run the Six-Category Audit Evaluate the project against each category below. For each finding, note: - **What**: the issue - **Where**: file and line - **Why**: what happens in production if this isn't fixed - **Fix**: concrete recommendation (code when possible) - **Severity**: CRITICAL / HIGH / MEDIUM / LOW #### Category 1: Security Fundamentals (25% weight) Check for: **Authentication & Authorization:** - Every endpoint has explicit auth (not just "hidden") - Object-level access control (user A can't access user B's data) - Admin endpoints are protected, not just unlisted **Secrets Management:** - No hardcoded secrets in code (`grep -r "password\s*=\s*\"" --include="*.py" --include="*.js"`) - `.env` in `.gitignore` - No secrets in Dockerfile ARG/ENV - No secrets in docker-compose.yml **Input Validation:** - All user input validated at the API boundary - SQL queries use parameterized statements (no f-strings in SQL) - No `shell=True` with user input - No `eval()` or `exec()` with user input **CORS:** - Not `allow_origins=["*"]` with credentials - Specific origin whitelist **Rate Limiting:** - Auth endpoints have strict rate limits - Public endpoints have rate limits **Security Headers:** - HSTS, X-Content-Type-Options, X-Frame-Options, CSP present **Dependencies:** - No known HIGH/CRITICAL CVEs in dependencies **Scoring:** - CRITICAL finding: -15 points from this category - HIGH finding: -8 points - MEDIUM finding: -4 points - LOW finding: -2 points - Maximum deduction: entire category weight (25 points) #### Category 2: Error Handling & Resilience (20% weight) Check for: **Exception Handling:** - No bare `except: pass` or `except Exception: pass` - No swallowed exceptions on critical paths - Structured error responses (consistent JSON format) - Different status codes for different error types (not everything is 500) **External Call Protection:** - All HTTP calls have explicit timeouts - Database queries have timeouts - Redis/cache calls have timeouts - Retry logic on transient failures - Circuit breakers for external services (for microservices) **Graceful Degradation:** - Non-critical features can be disabled without taking down the service - Cache failures don't crash the application - Analytics/logging failures don't affect the request **Error Logging:** - Errors are logged with context (request_id, user_id, stack trace) - No sensitive data in error logs - No stack traces in API responses **Scoring:** - CRITICAL: -12 points - HIGH: -6 points - MEDIUM: -3 points - LOW: -1 point #### Category 3: Observability (20% weight) Check for: **Structured Logging:** - Uses structlog/loguru/pino/zap (not `print()` or `console.log` for production logging) - JSON format in production configuration - Log levels used correctly (ERROR/WARNING/INFO/DEBUG) - No sensitive data logged **Request Tracing:** - Correlation IDs / request IDs present - IDs propagated to log entries - IDs returned in error responses **Health Endpoints:** - `/health/live` or `/health` endpoint exists - `/health/ready` endpoint checks dependencies - Health endpoints excluded from auth middleware **Metrics:** - Request count/rate tracked - Latency percentiles tracked - Error rate tracked - Custom business metrics present (bonus) **Scoring:** - Missing structured logging entirely: -12 - Missing health endpoints: -8 - Missing correlation IDs: -6 - Missing metrics: -4 - print() statements used as logging: -4 #### Category 4: Deployment Readiness (15% weight) Check for: **Configuration:** - All config from environment variables (not hardcoded) - Config validation at startup (fail fast) - No `localhost` or `127.0.0.1` in application code - No `DEBUG = True` in production paths **Graceful Shutdown:** - SIGTERM handler registered - In-flight requests completed before exit - Database connections closed on shutdown - Background tasks cancelled on shutdown **API Compatibility:** - No breaking changes without versioning - Pagination on list endpoints - Request/response validation **Migrations:** - All `CREATE INDEX` use `CONCURRENTLY` - `SET lock_timeout` on every migration - No `NOT NULL` additions without the 3-step pattern on large tables - Rollback scripts exist **Scoring:** - Missing graceful shutdown: -8 - Hardcoded config: -6 per instance (max -12) - Unsafe migration: -8 per instance - Missing config validation: -4 #### Category 5: Database Patterns (10% weight) Check for: **Connection Management:** - Connection pooling configured (not connect-per-request) - Pool size appropriate for the workload - Idle connection timeout set - `pool_pre_ping` or equivalent enabled **Query Safety:** - No N+1 queries in list endpoints - No `SELECT *` in production queries - Parameterized queries everywhere - Indexes on foreign key columns **Schema Design:** - Timestamps on all tables (created_at, updated_at) - UUID or non-sequential public IDs (not exposing internal auto-increment) **Scoring:** - No connection pooling: -6 - N+1 queries: -4 per instance (max -8) - Missing FK indexes: -3 per instance #### Category 6: Container Hygiene (10% weight) Check for: **Dockerfile Quality:** - Multi-stage build (builder + runtime) - Non-root user (`USER` directive present) - Pinned base image versions (no `latest`) - `HEALTHCHECK` directive present - `.dockerignore` exists and excludes .git, .env, node_modules **Image Security:** - No secrets in build args or env - No dev dependencies in production image - Minimal base image (slim/distroless/alpine) **Compose Quality (if present):** - Resource limits set - Health check conditions on depends_on - Named volumes for persistent data - Network isolation **Scoring:** - Running as root: -6 - No .dockerignore: -4 - Using `latest` tag: -3 - Missing HEALTHCHECK: -3 - Single-stage build: -3 - Secrets in layers: -6 ### Step 3: Calculate the Score ``` Total Score = Σ(category_score × category_weight) Where category_score = max(0, 100 - total_deductions_for_category) Weights: Security fundamentals: 25% Error handling & resilience: 20% Observability: 20% Deployment readiness: 15% Database patterns: 10% Container hygiene: 10% ``` Round to the nearest integer. ### Step 4: Assign a Grade | Score | Grade | Meaning | |-------|-------|---------| | 90-100 | A | Production-ready. Ship it. | | 80-89 | B | Solid. Minor improvements needed, nothing blocking. | | 70-79 | C | Acceptable for staging. Address HIGH items before production. | | 50-69 | D | Needs significant work. Multiple areas require attention. | | 0-49 | F | Not production-ready. Critical issues present. | ### Step 5: Generate the Prioritized Action Plan Sort all findings by impact. Show the user: 1. **Quick wins** — fixes that take < 5 minutes but improve the score significantly 2. **Critical fixes** — must be done before production, regardless of effort 3. **High-impact improvements** — biggest score improvement per effort 4. **Nice-to-haves** — low-priority improvements for later For each action item, show the estimated score improvement: > "Fix bare except handlers in api/routes.py → +4 points (Error Handling)" --- ## Output Format Present the audit results in this format: ``` ## Production Readiness Audit **Project**: [detected project name] **Stack**: [detected stack] **Score**: [XX/100] — Grade [A-F] **Date**: [current date] ### Score Breakdown | Category | Score | Weight | Weighted | |----------|-------|--------|----------| | Security Fundamentals | XX/100 | 25% | XX | | Error Handling & Resilience | XX/100 | 20% | XX | | Observability | XX/100 | 20% | XX | | Deployment Readiness | XX/100 | 15% | XX | | Database Patterns | XX/100 | 10% | XX | | Container Hygiene | XX/100 | 10% | XX | | **Total** | | | **XX/100** | ### Critical Issues (fix before any deployment) 1. **[Category] [Title]** — `file:line` [Description and why it matters] **Fix**: [concrete fix with code] ### High Priority (fix before production traffic) 1. ... ### Quick Wins (< 5 minutes each, biggest score impact) 1. **[+N points]** [what to do] ### Medium Priority (next sprint) 1. ... ### What's Done Well - [Acknowledge good practices already in place] --- **Action Plan**: Fix the [N] critical issues and [N] quick wins first. Your score jumps from [XX] to ~[estimated new score]. --- *Audited by production-stack-skills v1.0 — vstorm.co* ``` --- ## Quick Score Mode When the user runs `/production score`, give a fast 60-second version: - Scan for the most impactful indicators only - Report headline score and top 3 findings - Skip the detailed breakdown - End with: "Run `/production check` for the full audit with action plan." --- ## Report Generation When the user runs `/production report`: 1. Run the full `/production check` audit 2. Format as a polished Markdown document suitable for sharing with stakeholders 3. Include: executive summary, detailed findings, action plan, methodology 4. Add header: "Production Readiness Report — [Project Name] — [Date]" 5. Add footer: "Generated by production-stack-skills — vstorm.co" --- ## Detection Patterns Quick Reference Run these at the start of every audit: ```bash # Security rg '(password|secret|api_key|token)\s*=\s*"[^"]{8,}"' -i # hardcoded secrets rg 'allow_origins.*\*' # CORS wildcard rg 'f"(SELECT|INSERT|UPDATE|DELETE)' --type py # SQL injection rg 'shell=True' --type py # command injection rg 'DEBUG\s*=\s*True' --type py # debug mode # Error Handling rg 'except:$' --type py # bare except rg 'except.*:.*pass$' --type py # swallowed exception rg 'catch\s*\(.*\)\s*\{\s*\}' --type js --type ts # empty catch # Observability rg 'print\(' --type py # print as logging rg 'console\.log' --type js --type ts # console as logging # Deployment rg 'localhost|127\.0\.0\.1' --type py --type js --type ts # hardcoded hosts # Database rg 'SELECT \*' --type py --type js # SELECT star # Docker (check Dockerfile directly) # Look for: USER directive, HEALTHCHECK, .dockerignore existence ``` --- ## Cross-References Each category maps to a specialized skill for detailed fixes: - **Security** → `production-security` for hardening patterns, `production-review` for OWASP detection - **Error Handling** → `production-error-handling` for retry/circuit breaker patterns - **Observability** → `production-monitoring` for OTEL/logging/metrics setup - **Deployment** → `production-deploy` for pre-deployment checklist - **Database** → `production-postgres` for migration safety and indexing - **Container** → `production-docker` for multi-stage builds and hardening - **Architecture** → `production-planner` for system design with production constraints
Auf GitHub ansehen