Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Execute production deployment checklist for Claude API integrations. Use when deploying Claude-powered features to production, preparing for launch, or implementing go-live validation. Trigger with phrases like "anthropic production", "deploy claude", "claude go-live", "anthropic launch checklist", "production ready claude".
.claude/skills/jeremylongshore-anth-prod-checklist/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 67% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 3% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 26% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -21% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -12% | 0% |
Complete checklist for deploying Claude API integrations to production with reliability, observability, and cost controls.
authentication_error, invalid_request_error, rate_limit_error, api_error, overloaded_errormaxRetries set (recommended: 3-5 for production)request-id capturedmax_tokens set to realistic values (not inflated)timeout parameter, recommended 60-120s)pythonasync def health_check(): try: # Use token counting as a cheap health probe (no generation cost) count = client.messages.count_tokens( model="claude-haiku-4-20250514", messages=[{"role": "user", "content": "ping"}] ) return {"status": "healthy", "tokens": count.input_tokens} except Exception as e: return {"status": "degraded", "error": str(e)}
pythonimport logging import time logger = logging.getLogger("anthropic") def tracked_create(**kwargs): start = time.monotonic() try: response = client.messages.create(**kwargs) duration = time.monotonic() - start logger.info( "claude_request", extra={ "request_id": response._request_id, "model": response.model, "input_tokens": response.usage.input_tokens, "output_tokens": response.usage.output_tokens, "duration_ms": int(duration * 1000), "stop_reason": response.stop_reason, } ) return response except Exception as e: duration = time.monotonic() - start logger.error("claude_error", extra={"error": str(e), "duration_ms": int(duration * 1000)}) raise
anth-incident-runbook)| Metric | Warning | Critical | |--------|---------|----------| | Error rate (5xx) | > 1% | > 5% | | p99 latency | > 10s | > 30s | | 429 rate | > 5/min | > 20/min | | Daily cost | > 80% budget | > 100% budget | | Auth failures (401/403) | > 0 | > 0 (immediate) |
Produce a go-live receipt containing artifact/config digests, workspace/model classes, checklist evidence, synthetic test results, canary and threshold outcomes, approvals, rollout state, retention cleanup, and rollback reference. Exclude API keys, prompts, responses, customer identifiers, and raw exception text.
| Gate failure | Required response | |---|---| | Authentication, workspace, or permission check fails | Do not deploy; verify secret binding and scope, then rotate/revoke only through the approved process. | | 429/5xx, timeout, latency, or budget threshold fails | Halt promotion, apply bounded degradation/circuit breaking, and roll back to the prior revision. | | Redaction, content-safety, or retention check fails | Stop traffic, quarantine affected artifacts, correct the boundary, and rerun staging evidence. | | Missing approval or unverifiable evidence | Mark release not ready; do not bypass the gate. |
For artifact=sha256:fixture in staging, run synthetic fixture-request-001, assert sensitive_content_logged=0; contacts_exported=0; rollback_test=pass, then canary 1% internal traffic. A failed 429 gate records go_live=halted; rollback=prior-revision and sends no further production traffic.
For version upgrades, see anth-upgrade-migration.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 14,542 | 16,374 | +13% | 1 | 1 | 0% | 2,635 | 4,400 | +67% | 0 | 0 | — |
case-02 | fail→fail | 12,426 | 9,393 | -24% | 1 | 1 | 0% | 2,481 | 2,991 | +21% | 0 | 0 | — |
case-03 | fail→pass | 17,954 | 12,948 | -28% | 1 | 1 | 0% | 3,773 | 3,900 | +3% | 0 | 0 | — |
case-04 | pass→pass | 14,031 | 4,708 | -66% | 1 | 1 | 0% | 2,838 | 2,039 | -28% | 0 | 0 | — |
case-05 | fail→pass | 10,583 | 8,404 | -21% | 1 | 1 | 0% | 1,986 | 2,506 | +26% | 0 | 0 | — |
case-06 | fail→pass | 9,855 | 1,967 | -80% | 1 | 1 | 0% | 1,806 | 1,432 | -21% | 0 | 0 | — |
case-07 | fail→pass | 15,201 | 7,850 | -48% | 1 | 1 | 0% | 3,070 | 2,698 | -12% | 0 | 0 | — |
case-08 | pass→pass | 17,059 | 11,706 | -31% | 1 | 1 | 0% | 3,431 | 3,500 | +2% | 0 | 0 | — |
case-09 | fail→pass | 14,343 | 8,694 | -39% | 1 | 1 | 0% | 2,467 | 2,634 | +7% | 0 | 0 | — |
case-10 | pass→pass | 11,265 | 3,169 | -72% | 1 | 1 | 0% | 2,000 | 1,585 | -21% | 0 | 0 | — |
case-11 | pass→pass | 14,613 | 12,050 | -18% | 1 | 1 | 0% | 2,667 | 3,436 | +29% | 0 | 0 | — |
case-12 | pass→pass | 4,979 | 4,782 | -4% | 1 | 1 | 0% | 922 | 1,985 | +115% | 0 | 0 | — |
case-13 | pass→pass | 11,522 | 9,966 | -14% | 1 | 1 | 0% | 2,256 | 2,899 | +29% | 0 | 0 | — |
case-14 | pass→pass | 4,337 | 2,230 | -49% | 1 | 1 | 0% | 694 | 1,416 | +104% | 0 | 0 | — |
case-15 | pass→pass | 11,931 | 12,257 | +3% | 1 | 1 | 0% | 2,045 | 3,291 | +61% | 0 | 0 | — |
case-16 | pass→pass | 16,855 | 17,500 | +4% | 1 | 1 | 0% | 2,988 | 4,024 | +35% | 0 | 0 | — |
case-17 | pass→pass | 10,691 | 10,423 | -3% | 1 | 1 | 0% | 1,893 | 2,980 | +57% | 0 | 0 | — |
case-18 | pass→pass | 13,043 | 9,850 | -24% | 1 | 1 | 0% | 2,585 | 2,888 | +12% | 0 | 0 | — |
case-19 | pass→pass | 15,385 | 16,123 | +5% | 1 | 1 | 0% | 2,688 | 3,777 | +41% | 0 | 0 | — |
case-20 | pass→pass | 4,294 | 3,465 | -19% | 1 | 1 | 0% | 835 | 1,739 | +108% | 0 | 0 | — |
case-21 | pass→fail | 16,784 | 13,576 | -19% | 1 | 1 | 0% | 3,444 | 3,994 | +16% | 0 | 0 | — |
case-22 | pass→pass | 17,669 | 15,663 | -11% | 1 | 1 | 0% | 3,107 | 4,056 | +31% | 0 | 0 | — |
case-23 | fail→pass | 18,346 | 18,663 | +2% | 1 | 1 | 0% | 3,406 | 4,444 | +30% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +26 percentage points is the difference between those two pass rates over the 23 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
The publisher has shipped newer versions since this run, so these numbers describe v1, not the version currently listed.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.