with one click
health-checks
Implement liveness, readiness, and dependency health checks
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Implement liveness, readiness, and dependency health checks
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Track cache hit rates, latency, and detect cache-related issues
Instrument database queries, connection pools, and detect N+1 queries
Capture errors with rich context for debugging and alerting
Plan backend observability using RED + USE + 4 Golden Signals + JTBD
Monitor message queues, job processing, and detect backpressure
Instrument HTTP/gRPC endpoints with distributed tracing and RED metrics
| name | health-checks |
| description | Implement liveness, readiness, and dependency health checks |
| triggers | ["health check endpoints","liveness probe","readiness probe","kubernetes health checks"] |
| priority | 1 |
Different checks serve different purposes. Don't conflate them.
| Endpoint | Purpose | On Failure | Should Check |
|---|---|---|---|
/health/live | Process alive? | K8s restarts pod | Only process responsiveness |
/health/ready | Can handle traffic? | K8s removes from LB | DB, cache, critical deps |
/health/startup | Init complete? | K8s waits | Initialization status |
Return 200 OK immediately. Never check dependencies.
Checking DB in liveness = pod restarts when DB is down = cascading failure.
For each dependency:
→ Check with timeout (1-2s)
→ Record healthy/unhealthy status
Return 503 if any critical dependency unhealthy
{
"status": "healthy|unhealthy",
"version": "1.2.3",
"dependencies": {
"database": "healthy",
"cache": "unhealthy: connection refused"
}
}
livenessProbe:
httpGet: { path: /health/live, port: 8080 }
periodSeconds: 10
failureThreshold: 3
readinessProbe:
httpGet: { path: /health/ready, port: 8080 }
periodSeconds: 5
failureThreshold: 3
startupProbe:
httpGet: { path: /health/startup, port: 8080 }
periodSeconds: 5
failureThreshold: 30 # 150s max startup
references/platforms/{platform}/health-checks.md