acc-create-bulkhead
Generates Bulkhead pattern for PHP 8.5. Creates resource isolation with semaphore-based concurrency limiting and thread pool isolation. Includes unit tests.
Best use case
acc-create-bulkhead is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Generates Bulkhead pattern for PHP 8.5. Creates resource isolation with semaphore-based concurrency limiting and thread pool isolation. Includes unit tests.
Teams using acc-create-bulkhead should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/acc-create-bulkhead/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How acc-create-bulkhead Compares
| Feature / Agent | acc-create-bulkhead | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Generates Bulkhead pattern for PHP 8.5. Creates resource isolation with semaphore-based concurrency limiting and thread pool isolation. Includes unit tests.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Bulkhead Pattern Generator
Creates Bulkhead pattern infrastructure for resource isolation and fault containment.
## When to Use
| 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 |
## Component Characteristics
### BulkheadInterface
- Common interface for all isolation strategies
- Acquire and release semantics
- Capacity monitoring
### Strategies
- **Semaphore Bulkhead**: Limits concurrent executions
- **Thread Pool Bulkhead**: Isolates execution with dedicated pool
- **Queue-based Bulkhead**: Limits with waiting queue
### BulkheadFullException
- Thrown when bulkhead capacity exhausted
- Contains bulkhead name and capacity info
---
## Generation Process
### Step 1: Generate Core Components
**Path:** `src/Infrastructure/Resilience/Bulkhead/`
1. `BulkheadInterface.php` — Common interface
2. `BulkheadConfig.php` — Configuration value object
3. `BulkheadFullException.php` — Exception with capacity info
### Step 2: Generate Bulkhead Implementation
Choose based on use case:
1. `SemaphoreBulkhead.php` — Local semaphore-based limiting
2. `DistributedSemaphoreBulkhead.php` — Redis-based for multi-instance
### Step 3: Generate Registry (Optional)
1. `BulkheadRegistry.php` — Manages multiple bulkheads
### Step 4: Generate Tests
1. `SemaphoreBulkheadTest.php` — Bulkhead behavior tests
2. `BulkheadConfigTest.php` — Configuration tests
---
## File Placement
| Component | Path |
|-----------|------|
| All Classes | `src/Infrastructure/Resilience/Bulkhead/` |
| Unit Tests | `tests/Unit/Infrastructure/Resilience/Bulkhead/` |
---
## Naming Conventions
| 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` |
---
## Quick Template Reference
### BulkheadInterface
```php
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;
}
```
### BulkheadConfig
```php
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;
}
```
---
## Usage Example
```php
// 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 Selection
| 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-patterns to Avoid
| 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 |
---
## References
For complete PHP templates and examples, see:
- `references/templates.md` — BulkheadInterface, Config, SemaphoreBulkhead, DistributedSemaphoreBulkhead, Registry
- `references/examples.md` — PaymentGatewayAdapter, ConnectionPool, OrderService examples and testsRelated Skills
acc-create-value-object
Generates DDD Value Objects for PHP 8.5. Creates immutable, self-validating objects with equality comparison. Includes unit tests.
acc-create-use-case
Generates Application Use Cases for PHP 8.5. Creates orchestration services that coordinate domain objects, handle transactions, and dispatch events. Includes unit tests.
acc-create-unit-test
Generates PHPUnit unit tests for PHP 8.5. Creates isolated tests with AAA pattern, proper naming, attributes, and one behavior per test. Supports Value Objects, Entities, Services.
acc-create-test-double
Generates test doubles (Mocks, Stubs, Fakes, Spies) for PHP 8.5. Creates appropriate double type based on testing needs with PHPUnit MockBuilder patterns.
acc-create-test-builder
Generates Test Data Builder and Object Mother patterns for PHP 8.5. Creates fluent builders with sensible defaults and factory methods for test data creation.
acc-create-strategy
Generates Strategy pattern for PHP 8.5. Creates interchangeable algorithm families with context class, strategy interface, and concrete implementations. Includes unit tests.
acc-create-state
Generates State pattern for PHP 8.5. Creates state machines with context, state interface, and concrete states for behavior changes. Includes unit tests.
acc-create-specification
Generates DDD Specification for PHP 8.5. Creates reusable business rule objects for validation, filtering, and querying with composite pattern support. Includes unit tests.
acc-create-saga-pattern
Generates Saga pattern components for PHP 8.5. Creates Saga interfaces, steps, orchestrator, state management, and compensation logic with unit tests.
acc-create-retry-pattern
Generates Retry pattern for PHP 8.5. Creates resilience component with exponential backoff, jitter, and configurable retry strategies. Includes unit tests.
acc-create-responder
Generates ADR Responder classes for PHP 8.5. Creates HTTP response builders with PSR-7/PSR-17 support. Includes unit tests.
acc-create-repository
Generates DDD Repository interfaces and implementation stubs for PHP 8.5. Creates domain interfaces in Domain layer, implementation in Infrastructure.