Generates Application Use Cases for PHP 8.4. Creates orchestration services that coordinate domain objects, handle transactions, and dispatch events. Includes unit tests.
From accnpx claudepluginhub dykyi-roman/awesome-claude-code --plugin accThis skill uses the workspace's default tool permissions.
references/examples.mdreferences/templates.mdGenerate Application-layer Use Cases that orchestrate domain operations.
| Scenario | Example |
|---|---|
| Create operation | CreateOrderUseCase |
| State transition | ConfirmOrderUseCase |
| External service integration | ProcessPaymentUseCase |
| Multi-step workflow | CheckoutUseCase |
Path: src/Application/{BoundedContext}/UseCase/
{Name}UseCase.php — Main orchestration classPath: src/Application/{BoundedContext}/DTO/
{Name}Input.php — Input data containerPath: src/Application/{BoundedContext}/DTO/
{Name}Output.php — Result data containerPath: tests/Unit/Application/{BoundedContext}/UseCase/
| Component | Path |
|---|---|
| Use Case | src/Application/{BoundedContext}/UseCase/ |
| Input DTO | src/Application/{BoundedContext}/DTO/ |
| Output DTO | src/Application/{BoundedContext}/DTO/ |
| Unit Tests | tests/Unit/Application/{BoundedContext}/UseCase/ |
| Pattern | Example |
|---|---|
| Use Case | {Verb}{Entity}UseCase |
| Input DTO | {Name}Input |
| Output DTO | {Name}Output or {Entity}{Result}Output |
final readonly class {Name}UseCase
{
public function __construct(
private {Repository}Interface $repository,
private EventDispatcherInterface $events,
private TransactionManagerInterface $transaction
) {}
public function execute({Name}Input $input): {Name}Output
{
return $this->transaction->transactional(function () use ($input) {
$aggregate = $this->repository->findById($input->id);
$aggregate->doSomething($input->data);
$this->repository->save($aggregate);
foreach ($aggregate->releaseEvents() as $event) {
$this->events->dispatch($event);
}
return new {Name}Output(...);
});
}
}
final readonly class {Name}Input
{
public function __construct(
public {ValueObject} $id,
{additionalProperties}
) {}
}
final readonly class {Name}Output
{
public function __construct(
public string $id,
{resultProperties}
) {}
public function toArray(): array
{
return ['id' => $this->id, ...];
}
}
| Anti-pattern | Problem | Solution |
|---|---|---|
| Business Logic | Decisions in use case | Delegate to domain |
| Multiple Aggregates | Transaction spans aggregates | One aggregate per transaction |
| Direct Repo Calls | Bypassing use case | Always use use case |
| Missing Transaction | No atomicity | Wrap in transaction |
| External in Transaction | Long-running transactions | External calls outside |
For complete PHP templates and examples, see:
references/templates.md — UseCase, Input, Output, Test templates with design principlesreferences/examples.md — CreateOrder, ConfirmOrder, ProcessPayment examples and testsProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.