create-entity
Create a new immutable domain entity following DDD patterns. Use when user needs to create a new business entity with domain logic, value objects, and behavior methods. Generates entity class with private constructor, static factory, and domain methods.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
Create Entity
Generate immutable domain entity following DDD patterns.
When to Use
- New business entity
- Domain model in BC
- Aggregate root
- Entity with domain behavior
Inputs/Outputs
| Input | Example | Output |
|---|---|---|
| bc | Admin | BC/Entities/EntityName.php |
| entity | Article | - |
| fields | ['uuid' => 'ResourceUuid', 'name' => 'NameField'] | - |
| behaviors | ['rename', 'activate'] | - |
Process
| Step | Action |
|---|---|
| Create | Use template: entity.php.tpl |
| Validate | make cs-fixer && make stan |
Structure
Entity (final, private constructor, static factory):
final class EntityName {
private function __construct(
private ResourceUuid $uuid,
private NameField $name,
) {}
public static function create(string $name): self {
return new self(ResourceUuid::generate(), NameField::fromString($name));
}
public function uuid(): ResourceUuid { return $this->uuid; }
public function name(): NameField { return $this->name; }
public function rename(string $name): void {
$this->name = NameField::fromString($name);
}
}
See: docs/GLOSSARY.md#entity for detailed definition
Rules
Class Structure:
-
finalclass, private constructor - Static factory:
create(),createFrom*(),reconstitute() - No public properties, no setters
Methods:
- Getters return Value Objects:
name()(notgetName()) - Behaviors modify state:
rename(),activate(),deactivate() - Validate in behaviors, encapsulate business rules
Value Objects:
- Use existing VOs:
Shared\Entities\VO\(ResourceUuid, NameField, EmailField, PriceField) - Create new VO if needed (skill:
create-value-object)
Templates
-
entity.php.tpl
Location: .claude/templates/
References
- Entity definition:
docs/GLOSSARY.md#entity - Entity pattern:
docs/QUICK_REF.md#entity-pattern - Architecture:
docs/architecture.md#entity
Related Skills
-
create-value-object- Create new Value Object -
create-use-case- Create use case using entity -
create-repository- Create repository for entity
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-01-26
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!