Help us improve
Share bugs, ideas, or general feedback.
From acc
Provides Symfony framework reference with architecture patterns, DDD integration, clean architecture checklists, common violations, and antipatterns for auditing PHP projects.
npx claudepluginhub dykyi-roman/awesome-claude-code --plugin accHow this skill is triggered — by the user, by Claude, or both
Slash command
/acc:symfony-knowledgeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Quick reference for Symfony framework patterns, DDD integration, and PHP implementation guidelines for auditing and generating Symfony-based applications.
references/antipatterns.mdreferences/architecture.mdreferences/ddd-integration.mdreferences/dependency-injection.mdreferences/event-system.mdreferences/infrastructure-components.mdreferences/messenger-advanced.mdreferences/persistence.mdreferences/routing-http.mdreferences/security.mdreferences/testing.mdreferences/workflow.mdImplements Clean Architecture, Hexagonal (Ports & Adapters), and Domain-Driven Design patterns in PHP 8.3+ with Symfony 7.x. For enterprise app architecture, legacy refactoring, DDD, and testable backends.
Applies production-grade Symfony architecture and execution workflows with controlled scope, checkpoints, and validation for safe medium/complex changes.
Provides 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.
Share bugs, ideas, or general feedback.
Quick reference for Symfony framework patterns, DDD integration, and PHP implementation guidelines for auditing and generating Symfony-based applications.
src/.config/, src/, public/, var/, migrations/, tests/, templates/.services.yaml binds interfaces to implementationsEventDispatcherInterface (not Symfony's)use Symfony\ in Domain or Application layersuse Doctrine\ in Domain layer| Violation | Where to Look | Severity |
|---|---|---|
| Doctrine attributes in Domain entities | Domain/**/*.php with #[ORM\ | Critical |
| Symfony Request/Response in Application layer | Application/**/*.php | Critical |
| Business logic in Controller | Controllers with if/switch on domain state | Warning |
| Fat Controller (multiple actions) | Controllers with 2+ public methods | Warning |
| Entity used as DTO across layers | Entity passed to templates/serializers directly | Warning |
| Service Locator via ContainerInterface | $container->get() in services | Critical |
| Doctrine EventListener with domain logic | EventListener classes with business rules | Warning |
| Hard-coded service IDs | $container->get('service.id') | Warning |
| UserInterface in Domain | Domain/**/*.php with implements UserInterface | Critical |
| Missing Messenger retry strategy | messenger.yaml without retry_strategy | Warning |
| Business logic in Workflow listener | Guard/transition listeners with domain rules | Warning |
| Symfony EventDispatcher in Domain | Domain/**/*.php with use Symfony\Contracts\EventDispatcher | Critical |
| Direct infrastructure in Application | Application/**/*.php with CacheInterface, LockFactory | Warning |
<?php
declare(strict_types=1);
namespace App\Order\Presentation\Api;
use App\Order\Application\Command\CreateOrderCommand;
use App\Order\Application\UseCase\CreateOrderUseCase;
use Symfony\Component\HttpFoundation\{JsonResponse, Request, Response};
use Symfony\Component\Routing\Attribute\Route;
#[Route('/api/orders', methods: ['POST'])]
final readonly class CreateOrderAction
{
public function __construct(private CreateOrderUseCase $createOrder) {}
public function __invoke(Request $request): JsonResponse
{
$data = $request->toArray();
$orderId = $this->createOrder->execute(new CreateOrderCommand(
customerId: $data['customer_id'],
items: $data['items'],
));
return new JsonResponse(['id' => $orderId->value], Response::HTTP_CREATED);
}
}
<?php
declare(strict_types=1);
namespace App\Order\Application\UseCase;
use App\Order\Domain\Entity\Order;
use App\Order\Domain\Repository\OrderRepositoryInterface;
use App\Shared\Domain\EventDispatcherInterface;
final readonly class CreateOrderUseCase
{
public function __construct(
private OrderRepositoryInterface $orders,
private EventDispatcherInterface $events,
) {}
public function execute(CreateOrderCommand $command): OrderId
{
$order = Order::create($command->customerId, $command->items);
$this->orders->save($order);
foreach ($order->releaseEvents() as $event) {
$this->events->dispatch($event);
}
return $order->id();
}
}
<?php
declare(strict_types=1);
namespace App\Order\Application\Handler;
use App\Order\Application\Command\ConfirmOrderCommand;
use App\Order\Domain\Repository\OrderRepositoryInterface;
use Symfony\Component\Messenger\Attribute\AsMessageHandler;
#[AsMessageHandler(bus: 'command.bus')]
final readonly class ConfirmOrderHandler
{
public function __construct(private OrderRepositoryInterface $orders) {}
public function __invoke(ConfirmOrderCommand $command): void
{
$order = $this->orders->findById($command->orderId);
$order->confirm();
$this->orders->save($order);
}
}
For detailed information, load these reference files:
references/architecture.md — Bundle system, Flex recipes, standard vs DDD-aligned directory layoutreferences/ddd-integration.md — Domain purity, Messenger CQRS, Domain Events, Value Objects with Doctrinereferences/routing-http.md — Invokable controllers, EventSubscribers, attribute routing, validationreferences/persistence.md — Doctrine ORM mapping, repositories, migrations, keeping Doctrine out of Domainreferences/dependency-injection.md — services.yaml, auto-wiring, tagged services, compiler passes, interface bindingreferences/testing.md — WebTestCase, KernelTestCase, functional tests, fixtures, Messenger handler testingreferences/security.md — UserInterface adapter, Voters with Specifications, firewalls, password hashing, auth eventsreferences/messenger-advanced.md — Multiple buses, transports, retry strategy, DLQ, middleware, workers, serializationreferences/workflow.md — StateMachine for aggregates, enum places, guards with Specifications, audit trailreferences/event-system.md — EventDispatcher patterns, kernel events, domain event dispatching, PSR-14references/infrastructure-components.md — Cache, Lock, RateLimiter, HTTP Client, Serializer, Scheduler with DDD portsreferences/antipatterns.md — Fat controllers, entity as DTO, Doctrine in Domain, Service Locator, detection patterns