Claude-skill-registry ln-774-healthcheck-setup
Configures health check endpoints for Kubernetes readiness/liveness/startup
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/levn-ln-774-healthcheck-setup" ~/.claude/skills/majiayu000-claude-skill-registry-ln-774-healthcheck-setup && rm -rf "$T"
skills/data/levn-ln-774-healthcheck-setup/SKILL.mdln-774-healthcheck-setup
Type: L3 Worker Category: 7XX Project Bootstrap Parent: ln-770-crosscutting-setup
Configures health check endpoints for Kubernetes probes and monitoring.
Overview
| Aspect | Details |
|---|---|
| Input | Context Store from ln-770 |
| Output | Health check endpoints and Kubernetes probe configuration |
| Stacks | .NET (AspNetCore.Diagnostics.HealthChecks), Python (FastAPI routes) |
Phase 1: Receive Context + Identify Dependencies
Accept Context Store and scan for dependencies to monitor.
Required Context:
: .NET or PythonSTACK
: Project directory pathPROJECT_ROOT
Idempotency Check:
- .NET: Grep for
orAddHealthChecksMapHealthChecks - Python: Grep for
route/health - If found: Return
{ "status": "skipped" }
Dependency Detection:
| Dependency | .NET Detection | Python Detection |
|---|---|---|
| PostgreSQL | in csproj | or in requirements |
| MySQL | in csproj | in requirements |
| Redis | in csproj | in requirements |
| RabbitMQ | in csproj | or in requirements |
| MongoDB | in csproj | in requirements |
Phase 2: Design Health Check Strategy
Define three types of health endpoints per Kubernetes best practices.
Endpoint Types
| Endpoint | Probe Type | Purpose | Checks |
|---|---|---|---|
| Liveness | Is app alive? | App responds (no dependency checks) |
| Readiness | Can app serve traffic? | All dependencies healthy |
| Startup (K8s 1.16+) | Is app initialized? | Initial warmup complete |
When Each Probe Fails
| Probe | Failure Action | Kubernetes Behavior |
|---|---|---|
| Liveness | Container restart | kubelet restarts container |
| Readiness | Remove from service | Traffic stopped, no restart |
| Startup | Delay other probes | Liveness/Readiness paused |
Phase 3: Research Health Check Patterns
Use MCP tools for current documentation.
For .NET:
MCP ref: "ASP.NET Core health checks Kubernetes probes" Context7: /dotnet/aspnetcore
For Python:
MCP ref: "FastAPI health check endpoint Kubernetes" Context7: /tiangolo/fastapi
Key Patterns to Research:
- Database health checks (connection pool)
- Redis connectivity check
- Custom health check implementation
- Health check response writer customization
Phase 4: Configure Kubernetes Probes
Determine probe timing based on application characteristics.
Probe Configuration
| Parameter | Liveness | Readiness | Startup |
|---|---|---|---|
| 10 | 5 | 0 |
| 10 | 5 | 5 |
| 5 | 3 | 3 |
| 3 | 3 | 30 |
| 1 | 1 | 1 |
Startup Probe Calculation:
Max startup time = initialDelaySeconds + (periodSeconds × failureThreshold) Default: 0 + (5 × 30) = 150 seconds
Phase 5: Generate Implementation
.NET Output Files
| File | Purpose |
|---|---|
| Health check registration |
| Custom startup check |
Generation Process:
- Use MCP ref for current ASP.NET Core health checks API
- Generate HealthCheckExtensions with:
- AddHealthChecks registration
- Database health check (if detected)
- Redis health check (if detected)
- Custom StartupHealthCheck
- Configure three endpoints with proper tags
Packages to Add:
(if PostgreSQL)AspNetCore.HealthChecks.NpgSql
(if Redis)AspNetCore.HealthChecks.Redis
(if MySQL)AspNetCore.HealthChecks.MySql
Registration Code:
builder.Services.AddHealthCheckServices(builder.Configuration); // ... app.MapHealthCheckEndpoints();
Python Output Files
| File | Purpose |
|---|---|
| Health check router |
| Dependency health checks |
Generation Process:
- Use MCP ref for FastAPI health patterns
- Generate health router with:
- /health/live endpoint (simple)
- /health/ready endpoint (with dependency checks)
- /health/startup endpoint
- Generate health_checker service for dependency verification
Registration Code:
from routes.health import health_router app.include_router(health_router)
Kubernetes Manifest Snippet
Generate for inclusion in deployment.yaml:
livenessProbe: httpGet: path: /health/live port: 5000 initialDelaySeconds: 10 periodSeconds: 10 timeoutSeconds: 5 failureThreshold: 3 readinessProbe: httpGet: path: /health/ready port: 5000 initialDelaySeconds: 5 periodSeconds: 5 timeoutSeconds: 3 failureThreshold: 3 startupProbe: httpGet: path: /health/startup port: 5000 periodSeconds: 5 failureThreshold: 30
Phase 6: Validate
Validation Steps:
-
Syntax check:
- .NET:
dotnet build --no-restore - Python:
python -m py_compile routes/health.py
- .NET:
-
Endpoint test:
curl http://localhost:5000/health/live curl http://localhost:5000/health/ready curl http://localhost:5000/health/startup -
Verify response format:
{ "status": "Healthy", "checks": { "database": { "status": "Healthy", "duration": "00:00:00.0234" }, "redis": { "status": "Healthy", "duration": "00:00:00.0012" } }, "totalDuration": "00:00:00.0250" } -
Dependency failure test:
- Stop database
- Verify
returns 503/health/ready - Verify
still returns 200/health/live
Return to Coordinator
{ "status": "success", "files_created": [ "Extensions/HealthCheckExtensions.cs", "HealthChecks/StartupHealthCheck.cs" ], "packages_added": [ "AspNetCore.HealthChecks.NpgSql" ], "registration_code": "builder.Services.AddHealthCheckServices(configuration);", "message": "Configured health checks with liveness, readiness, and startup probes" }
Reference Links
Version: 2.0.0 Last Updated: 2026-01-10