Help us improve
Share bugs, ideas, or general feedback.
Implements liveness, readiness, startup, and deep health check endpoints with dependency monitoring. Use for Kubernetes probes, load balancers, auto-scaling, or fixing probe failures and startup delays.
npx claudepluginhub secondsky/claude-skills --plugin health-check-endpointsHow this skill is triggered — by the user, by Claude, or both
Slash command
/health-check-endpoints:health-check-endpointsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Implement health checks for monitoring service availability and readiness.
Implements health check endpoints (liveness, readiness, startup) for service monitoring in Kubernetes and load balancers.
Wires health-check endpoints (/health, /readyz, /livez) in Go services using xgodev/boost/extra/health. Covers liveness vs readiness, checkers, and aggregation.
Configures health checks for .NET apps: database (PostgreSQL), external HTTP services, Redis, RabbitMQ, and custom checks. Includes liveness/readiness endpoints for container orchestration.
Share bugs, ideas, or general feedback.
Implement health checks for monitoring service availability and readiness.
| Probe | Purpose | Failure Action |
|---|---|---|
| Liveness | Is process alive? | Restart container |
| Readiness | Can handle traffic? | Remove from LB |
| Startup | Has app started? | Delay other probes |
| Deep | All deps healthy? | Trigger alerts |
class HealthChecker {
async checkDatabase() {
const start = Date.now();
try {
await db.query('SELECT 1');
return { status: 'healthy', latency: Date.now() - start };
} catch (err) {
return { status: 'unhealthy', error: String(err?.message || err) };
}
}
async checkRedis() {
try {
await redis.ping();
return { status: 'healthy' };
} catch (err) {
return { status: 'unhealthy', error: err.message };
}
}
async getReadiness() {
const checks = await Promise.all([
this.checkDatabase(),
this.checkRedis()
]);
const healthy = checks.every(c => c.status === 'healthy');
return { healthy, checks };
}
}
// Liveness - lightweight
app.get('/health/live', (req, res) => {
res.json({ status: 'ok', timestamp: new Date().toISOString() });
});
// Readiness - check dependencies
app.get('/health/ready', async (req, res) => {
const health = await healthChecker.getReadiness();
res.status(health.healthy ? 200 : 503).json(health);
});
livenessProbe:
httpGet:
path: /health/live
port: 3000
initialDelaySeconds: 15
periodSeconds: 10
failureThreshold: 3
readinessProbe:
httpGet:
path: /health/ready
port: 3000
initialDelaySeconds: 5
periodSeconds: 10
See references/implementations.md for: