Claude-skill-registry acc-ddd-knowledge
DDD architecture knowledge base. Provides patterns, antipatterns, and PHP-specific guidelines for Domain-Driven Design audits.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/acc-ddd-knowledge" ~/.claude/skills/majiayu000-claude-skill-registry-acc-ddd-knowledge && rm -rf "$T"
manifest:
skills/data/acc-ddd-knowledge/SKILL.mdsource content
DDD Knowledge Base
Quick reference for DDD architecture patterns and PHP implementation guidelines.
Core Principles
Layer Dependencies (Clean Architecture)
Presentation → Application → Domain ← Infrastructure ↓ Domain (center)
Rule: Dependencies point INWARD. Domain has ZERO external dependencies.
Layer Responsibilities
| Layer | Contains | Depends On |
|---|---|---|
| Domain | Entities, Value Objects, Aggregates, Domain Services, Repository Interfaces, Domain Events | Nothing |
| Application | Use Cases, DTOs, Application Services | Domain |
| Infrastructure | Repository Implementations, External APIs, DB, Cache, Queue | Domain, Application |
| Presentation | Controllers, Actions, Request/Response, CLI | Application |
Quick Checklists
Domain Layer Checklist
- No framework imports (Doctrine, Eloquent, Symfony)
- Entities have behavior, not just data
- Value Objects for domain concepts (Email, Money, Id)
- Repository INTERFACES defined here
- Enums for fixed value sets
- Domain Events for side effects
- No
methodspublic function set*()
Application Layer Checklist
- UseCases orchestrate, don't decide
- DTOs for input/output
- No business logic (if/switch on domain state)
- Transaction boundaries here
- No HTTP/CLI concerns
Infrastructure Layer Checklist
- Implements Domain interfaces
- No business logic in repositories
- External service adapters
- Caching, queuing implementations
Presentation Layer Checklist
- Validates input
- Maps to DTOs
- Calls UseCase
- Formats response
- No business logic
Common Violations Quick Reference
| Violation | Where to Look | Severity |
|---|---|---|
in Domain | Domain/*.php | Critical |
in Domain | Domain/*.php | Critical |
in Domain | Domain/*.php | Critical |
| Only getters/setters in Entity | Domain/Entity/*.php | Warning |
magic strings | Any PHP file | Warning |
| Domain/Entity/*.php | Warning |
| Business logic in Controller | Presentation/*.php | Warning |
| Business logic in Repository | Infrastructure/*.php | Warning |
PHP 8.5 DDD Patterns
Value Object
final readonly class Email { public function __construct( public string $value ) { if (!filter_var($value, FILTER_VALIDATE_EMAIL)) { throw new InvalidArgumentException('Invalid email'); } } public function equals(self $other): bool { return $this->value === $other->value; } }
Entity with Behavior
final class Order { private OrderStatus $status; public function __construct( private readonly OrderId $id, private readonly CustomerId $customerId ) { $this->status = OrderStatus::Pending; } public function confirm(): void { if (!$this->status->canTransitionTo(OrderStatus::Confirmed)) { throw new DomainException('Cannot confirm order'); } $this->status = OrderStatus::Confirmed; } }
Repository Interface
// Domain/Repository/OrderRepositoryInterface.php interface OrderRepositoryInterface { public function findById(OrderId $id): ?Order; public function save(Order $order): void; }
References
For detailed information, load these reference files:
— Detailed layer rules and boundariesreferences/layer-architecture.md
— Entity, VO, Aggregate, Repository patternsreferences/domain-patterns.md
— UseCase, DTO, Command/Query patternsreferences/application-patterns.md
— Common violations with detection patternsreferences/antipatterns.md
— PHP 8.5 specific implementationsreferences/php-specific.md
Assets
— Structured audit report templateassets/report-template.md