Domain Analysis
Reasoning Schema
Before analysis: domain being explored, stakeholder terminology, existing system context, integration boundaries.
After analysis: ubiquitous language captured, entity boundaries defined, aggregate roots identified, context map complete, agent recommendations justified.
Invariant Principles
- Language Is the Model: Ubiquitous language IS the domain model. Misaligned terminology → misaligned code.
- Boundaries Reveal Architecture: Bounded context boundaries become service boundaries.
- Aggregates Protect Invariants: An aggregate exists to enforce business rules atomically.
- Events Reveal Causality: Domain events capture what the business cares about.
- Context Maps Are Politics: Upstream/downstream relationships reflect power dynamics.
- Recommendations Follow Characteristics: Agent/skill recommendations emerge from domain properties.
Inputs / Outputs
| Input | Required | Description |
|---|---|---|
problem_description |
Yes | Natural language description of the problem space |
stakeholder_vocabulary |
No | Terms already used by domain experts |
| Output | Type | Description |
|---|---|---|
domain_glossary |
Inline | Ubiquitous language definitions |
context_map |
Mermaid | Bounded contexts and relationships |
entity_sketch |
Mermaid | Entities, value objects, aggregates |
agent_recommendations |
Table | Recommended skills with justification |
Domain Analysis Framework
Phase 1: Language Mining
Extract from: user request, codebase (class/method names), docs, stakeholder conversations.
Extract: Nouns (entities/VOs), Verbs (commands/events), Compound terms (aggregates/contexts).
Flag: SYNONYM CONFLICT (multiple terms, one concept) or HOMONYM CONFLICT (one term, multiple concepts).
Phase 2: Ubiquitous Language
For each term: Definition (one sentence), Examples (2-3), Non-examples, Context (bounded context).
Resolve synonyms (choose canonical) and homonyms (add context qualifiers).
Phase 3: Entity vs Value Object
| Question | Entity | Value Object |
|---|---|---|
| Has lifecycle? | Yes | No (immutable) |
| Identity matters? | Yes | No (only attributes) |
Phase 4: Aggregate Boundary Detection
Identify invariants (rules that must ALWAYS be true, span entities, require atomic enforcement).
Form aggregates: Root entity + contained entities/VOs + invariants + boundary (reference by ID across aggregates).
Fractal exploration (optional): When invariants span 3+ entities, invoke fractal-thinking with intensity pulse and seed: "What are the correct aggregate boundaries for [domain] given these invariants?". Use the synthesis for multi-angle boundary validation.
Phase 5: Domain Event Identification
For each state change: What happened? (past tense), Who cares? (handlers), What data?
Phase 6: Bounded Context Mapping
Signals: Different meanings for same term, different stakeholder groups, different change rates, different consistency needs.
Relationships: Shared Kernel, Customer-Supplier, Conformist, Anti-Corruption Layer, Open Host Service, Published Language.
Phase 7: Agent Recommendations
| Characteristic | Signal | Recommended Skill |
|---|---|---|
| Complex state machines | Multiple status fields | designing-workflows |
| Multiple bounded contexts | Different vocabularies | brainstorming |
| Security-sensitive | PII, auth | gathering-requirements (Hermit) |
| Complex aggregates | Many invariants | test-driven-development |
Example
- Language: Order, LineItem, Customer, Product, Cart, Checkout, Payment, Shipment
- Synonyms: Customer = User = Buyer → canonical: "Customer"
- Entities: Order (tracked by ID), Customer (tracked by ID)
- Value Objects: Money, Address, LineItem (immutable snapshot)
- Aggregates: Order (root) contains LineItems; Invariant: total = sum of line items
- Events: OrderPlaced, OrderShipped, PaymentReceived
- Contexts: Sales (Order, Customer), Fulfillment (Shipment), Billing (Payment)
- Recommendation: Medium complexity → design doc first, implementing-features Phase 1-4
Quality Gates
| Gate | Criteria |
|---|---|
| Language complete | All terms defined |
| Conflicts resolved | No unresolved synonyms/homonyms |
| Entities classified | Every noun categorized |
| Aggregates bounded | Every entity in one aggregate |
| Events identified | State changes have events |
| Context map complete | All contexts with relationships |
Self-Check
- All terms from problem in glossary
- Conflicts resolved
- Every entity has identity justification
- Every aggregate has invariant
- Domain events past tense
- Context map complete
- Agent recommendations cite domain characteristics
If ANY unchecked: revise before completing.