원클릭으로
event-modeling
Designs systems using Event Modeling.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Designs systems using Event Modeling.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Applies Domain-Driven Design with hexagonal (ports & adapters) architecture. Use when designing backend application structure, separating domain from infrastructure, creating testable boundaries, or when user mentions DDD, ports, adapters, hexagonal, or clean architecture.
Implement code with TDD following a deterministic state machine (understand → scout → architecture → tdd → simplify → test_quality → complexity → commit). Driven by issues in plan.md.
Design before code. Runs the Discovery state machine (clarify → model → architecture → slice) to produce issues in plan.md. Use when designing a new project, feature, or system.
Applies feature-based architecture for React frontends. Use when designing frontend structure, organizing components, hooks, and features, or when user mentions frontend architecture, React structure, or feature-based design.
Test-driven development (TDD) process used when writing code. Use whenever you are adding any new code, unless the user explicitly asks to skip TDD or the code is exploratory/spike.
Reviews technical proposals against 30 complexity dimensions. Questions necessity of scale, consistency, and resilience. Use when proposing technologies (Kafka, microservices, event sourcing) or designing systems. Pushes for simplest viable approach.
| name | event-modeling |
| description | Designs systems using Event Modeling. |
icon: 📊
A set of vertical slices that fully describe a system's behavior. Each slice is independently implementable and testable. The model uses business language throughout — no infrastructure or technical terms.
Three types. Every behavior in the system fits one:
STATE_CHANGE — user does something
STATE_VIEW — system shows something
AUTOMATION — system reacts to something
See references/slice-types.md for element rules, dependency patterns, and naming conventions.
Existing codebases: Read the code to extract domain concepts. Map operations to slice types (writes → STATE_CHANGE, reads → STATE_VIEW, background → AUTOMATION). Extract specs from unit tests and comments.
Produce markdown. Design for human readability.
Write model artifacts to files. Ask the user where they want them. Update the files as the model evolves.
High-level model:
# [System Name] Event Model
## Aggregates
- Owner — pet owners who use the clinic
- Pet — animals registered to owners
## Slices
### Register Owner [STATE_CHANGE]
Aggregate: Owner
Screen: Owner Registration Form
Command: Register Owner → Event: Owner Registered
Error: → Owner Registration Failed
### View Owner Profile [STATE_VIEW]
Aggregate: Owner
Events: Owner Registered, Pet Registered → Read Model: Owner Profile
Screen: Owner Profile
### Notify Vet of New Patient [AUTOMATION]
Trigger: Pet Registered → Processor: New Patient Notifier
Command: Send Notification → Event: Vet Notified
Detailed slice:
## Register Owner [STATE_CHANGE]
Aggregate: Owner
### Command: Register Owner
firstName: String — "George"
lastName: String — "Franklin"
address: String — "110 W. Liberty St."
city: String — "Madison"
telephone: String — "6085551023"
### Event: Owner Registered
ownerId: UUID — <generated>
firstName: String — "George"
lastName: String — "Franklin"
address: String — "110 W. Liberty St."
city: String — "Madison"
telephone: String — "6085551023"
### Event: Owner Registration Failed
errors: Map — {"lastName": "required"}
### Specifications
#### Successfully register with valid data
Given: (no prior state)
When: Register Owner
firstName: George, lastName: Franklin
address: 110 W. Liberty St., city: Madison
telephone: 6085551023
Then: Owner Registered
ownerId: <generated>, firstName: George, lastName: Franklin
#### Fail when required fields missing
Given: (no prior state)
When: Register Owner
firstName: George, city: Madison
Then: Owner Registration Failed
errors: {address: required, telephone: required}
#### Business rules
- All fields mandatory: firstName, lastName, address, city, telephone
- Telephone must be numeric, max 10 digits
Adapt the format to the domain — what matters is that a person can scan it and quickly validate correctness.