From acc
Generates Bulkhead pattern for PHP 8.4 with semaphore concurrency limits, thread pool isolation, Redis distribution, and queue strategies for resource isolation. Includes unit tests for API calls, DB pools, CPU work.
How this skill is triggered — by the user, by Claude, or both
Slash command
/acc:create-bulkheadThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Creates Bulkhead pattern infrastructure for resource isolation and fault containment.
Creates Bulkhead pattern infrastructure for resource isolation and fault containment.
| Scenario | Example |
|---|---|
| External API calls | Limit concurrent requests to payment gateway |
| Database connections | Pool size limiting |
| CPU-intensive work | Limit by CPU cores |
| Multi-instance | Redis-based coordination |
Path: src/Infrastructure/Resilience/Bulkhead/
BulkheadInterface.php — Common interfaceBulkheadConfig.php — Configuration value objectBulkheadFullException.php — Exception with capacity infoChoose based on use case:
SemaphoreBulkhead.php — Local semaphore-based limitingDistributedSemaphoreBulkhead.php — Redis-based for multi-instanceBulkheadRegistry.php — Manages multiple bulkheadsSemaphoreBulkheadTest.php — Bulkhead behavior testsBulkheadConfigTest.php — Configuration tests| Component | Path |
|---|---|
| All Classes | src/Infrastructure/Resilience/Bulkhead/ |
| Unit Tests | tests/Unit/Infrastructure/Resilience/Bulkhead/ |
| Component | Pattern | Example |
|---|---|---|
| Interface | BulkheadInterface | BulkheadInterface |
| Semaphore | SemaphoreBulkhead | SemaphoreBulkhead |
| Distributed | DistributedSemaphoreBulkhead | DistributedSemaphoreBulkhead |
| Config | BulkheadConfig | BulkheadConfig |
| Registry | BulkheadRegistry | BulkheadRegistry |
| Exception | BulkheadFullException | BulkheadFullException |
| Test | {ClassName}Test | SemaphoreBulkheadTest |
interface BulkheadInterface
{
public function execute(callable $operation): mixed;
public function tryAcquire(): bool;
public function release(): void;
public function getAvailablePermits(): int;
public function getActiveCount(): int;
public function getName(): string;
}
final readonly class BulkheadConfig
{
public function __construct(
public int $maxConcurrentCalls = 10,
public int $maxWaitDuration = 0,
public bool $fairness = true
) {}
public static function default(): self;
public static function forCpuBound(int $cpuCores): self;
public static function forIoBound(int $cpuCores): self;
public static function forExternalService(int $maxConnections): self;
}
// Create limiter
$bulkhead = new SemaphoreBulkhead(
name: 'payment-gateway',
config: BulkheadConfig::forExternalService(maxConnections: 20),
logger: $logger
);
// Execute with isolation
try {
$result = $bulkhead->execute(fn() => $client->charge($request));
} catch (BulkheadFullException $e) {
return Result::serviceOverloaded();
}
| Use Case | Bulkhead Type | Config |
|---|---|---|
| External API calls | Semaphore | Limited by API rate limits |
| Database connections | Semaphore | Limited by pool size |
| CPU-intensive work | Semaphore | Limited by CPU cores |
| Multi-instance | Distributed | Redis-based coordination |
| Mixed workloads | Registry | Per-service configuration |
| Anti-pattern | Problem | Solution |
|---|---|---|
| Global Bulkhead | Single point of contention | Per-service bulkheads |
| No Release | Permit leak | Always release in finally |
| Wrong Size | Too small = rejected, too large = no protection | Right-size per service |
| No Metrics | Can't monitor usage | Track acquired/rejected |
| Infinite Wait | Thread starvation | Set maxWaitDuration |
| No Fallback | Hard failure on full | Provide degraded response |
For complete PHP templates and examples, see:
references/templates.md — BulkheadInterface, Config, SemaphoreBulkhead, DistributedSemaphoreBulkhead, Registryreferences/examples.md — PaymentGatewayAdapter, ConnectionPool, OrderService examples and testsnpx claudepluginhub dykyi-roman/awesome-claude-code --plugin accGenerates PHP 8.4 rate limiter pattern with token bucket, sliding window, fixed window algorithms, Redis storage, and unit tests for API protection and request throttling.
Isolates downstream failures with semaphore-based bulkheads and thread pools. Includes TypeScript implementation for limiting concurrent calls to slow services and fast-fail when queue is full.
Assists implementing circuit breakers, retries, bulkheads, and resilience patterns for fault-tolerant distributed systems.