create-health-check
Health Check Generator
Creates Health Check infrastructure for monitoring application and dependency health.
When to Use
| Scenario | Example |
|---|---|
| Load balancer routing | Kubernetes liveness/readiness probes |
| Monitoring | Prometheus health scraping |
| Deployment readiness | Verify all dependencies before serving traffic |
| Dependency status | Check Database, Redis, RabbitMQ availability |
Component Characteristics
HealthCheckInterface
name(): string— unique identifier for the checkcheck(): HealthCheckResult— execute the health check
HealthStatus Enum
- Healthy: All systems operational
- Degraded: Partially operational, non-critical issues
- Unhealthy: System is down or critical failure
HealthCheckResult
- Immutable value object
- Properties:
name,status(HealthStatus),durationMs(float),details(array) - Static factory methods:
healthy(),unhealthy(),degraded()
HealthCheckRunner
- Accepts iterable of HealthCheckInterface implementations
- Runs all checks with configurable timeout
- Aggregates overall status (worst status wins)
- Catches exceptions as unhealthy results
Generation Process
Step 1: Generate Domain Components
Path: src/Domain/Shared/Health/
HealthCheckInterface.php— Interface for health checksHealthStatus.php— Enum with Healthy/Degraded/Unhealthy statesHealthCheckResult.php— Immutable result value object
Step 2: Generate Infrastructure Checkers
Path: src/Infrastructure/Health/
DatabaseHealthCheck.php— PDO connectivity checkRedisHealthCheck.php— Redis connectivity checkRabbitMqHealthCheck.php— RabbitMQ connectivity checkHealthCheckRunner.php— Runs all checks and aggregates status
Step 3: Generate Presentation Endpoint
Path: src/Presentation/Api/Action/
HealthCheckAction.php— PSR-15 handler returning JSON response
Step 4: Generate Tests
HealthCheckResultTest.php— Result construction and serializationHealthCheckRunnerTest.php— Aggregation and error handlingHealthCheckActionTest.php— HTTP response codes and format
File Placement
| Component | Path |
|---|---|
| Domain Interfaces & VOs | src/Domain/Shared/Health/ |
| Infrastructure Checkers | src/Infrastructure/Health/ |
| Presentation Action | src/Presentation/Api/Action/ |
| Unit Tests (Domain) | tests/Unit/Domain/Shared/Health/ |
| Unit Tests (Infra) | tests/Unit/Infrastructure/Health/ |
| Unit Tests (Presentation) | tests/Unit/Presentation/Api/Action/ |
Naming Conventions
| Component | Pattern | Example |
|---|---|---|
| Interface | HealthCheckInterface |
HealthCheckInterface |
| Status Enum | HealthStatus |
HealthStatus |
| Result VO | HealthCheckResult |
HealthCheckResult |
| Checker | {Service}HealthCheck |
DatabaseHealthCheck |
| Runner | HealthCheckRunner |
HealthCheckRunner |
| Action | HealthCheckAction |
HealthCheckAction |
| Test | {ClassName}Test |
HealthCheckResultTest |
Quick Template Reference
HealthCheckInterface
interface HealthCheckInterface
{
public function name(): string;
public function check(): HealthCheckResult;
}
HealthStatus
enum HealthStatus: string
{
case Healthy = 'healthy';
case Degraded = 'degraded';
case Unhealthy = 'unhealthy';
public function isOperational(): bool;
public function merge(self $other): self;
}
HealthCheckResult
final readonly class HealthCheckResult
{
public function __construct(
public string $name,
public HealthStatus $status,
public float $durationMs,
public array $details = []
) {}
public static function healthy(string $name, float $durationMs): self;
public static function unhealthy(string $name, float $durationMs, string $error): self;
public static function degraded(string $name, float $durationMs, string $reason): self;
public function toArray(): array;
}
Usage Example
// GET /health
$runner = new HealthCheckRunner($checkers, timeoutSeconds: 5);
$result = $runner->run();
// $result['status'] is HealthStatus, $result['checks'] is array<string, HealthCheckResult>
Response Format (RFC Health Check JSON)
{
"status": "healthy",
"checks": {
"database": {
"name": "database",
"status": "healthy",
"duration_ms": 1.23,
"details": {}
},
"redis": {
"name": "redis",
"status": "healthy",
"duration_ms": 0.45,
"details": {}
},
"rabbitmq": {
"name": "rabbitmq",
"status": "degraded",
"duration_ms": 15.7,
"details": {
"reason": "High latency detected"
}
}
}
}
Anti-patterns to Avoid
| Anti-pattern | Problem | Solution |
|---|---|---|
| Slow checks | Health endpoint times out | Set per-check timeouts |
| No timeouts | Single check blocks entire response | Use configurable timeout per runner |
| Exposing internals | Leaking credentials or internal IPs | Return only status, duration, generic details |
| Missing checks | Silent dependency failures | Register checkers for all critical dependencies |
| Synchronous only | Sequential checks increase latency | Consider parallel execution for many checks |
| No degraded state | Binary healthy/unhealthy is too rigid | Use three-state model with Degraded |
References
For complete PHP templates and examples, see:
references/templates.md— HealthCheckInterface, HealthStatus, HealthCheckResult, checkers, runner, action templatesreferences/examples.md— DI wiring, custom checker, and unit tests
More from dykyi-roman/awesome-claude-code
psr-overview-knowledge
PHP Standards Recommendations (PSR) overview knowledge base. Provides comprehensive reference for all accepted PSRs including PSR-1,3,4,6,7,11,12,13,14,15,16,17,18,20. Use for PSR selection decisions and compliance audits.
22detect-code-smells
Detects code smells in PHP codebases. Identifies God Class, Feature Envy, Data Clumps, Long Parameter List, Long Method, Primitive Obsession, Message Chains, Inappropriate Intimacy. Generates actionable reports with refactoring recommendations.
15clean-arch-knowledge
Clean Architecture knowledge base. Provides patterns, antipatterns, and PHP-specific guidelines for Clean Architecture and Hexagonal Architecture audits.
15ddd-knowledge
DDD architecture knowledge base. Provides patterns, antipatterns, and PHP-specific guidelines for Domain-Driven Design audits.
14testing-knowledge
Testing knowledge base for PHP 8.4 projects. Provides testing pyramid, AAA pattern, naming conventions, isolation principles, DDD testing guidelines, and PHPUnit patterns.
12bug-root-cause-finder
Root cause analysis methods for PHP bugs. Provides 5 Whys technique, fault tree analysis, git bisect guidance, and stack trace parsing.
12