Create and maintain a domain glossary with entities, relationships, and Protected Terms that must never be renamed.
"Name things once. Name them right."
Invoked after requirements elicitation to establish a shared vocabulary. The domain model becomes the single source of truth for naming conventions throughout the project.
Steps:
Steps:
glossary.mdcleanup → safe-renaming).Steps:
| Field | Type | Description |
|---|---|---|
glossary | markdown | The domain glossary file |
er_diagram | string | Mermaid ER diagram |
protected_terms | string[] | Terms that must never be renamed |
OrderStatus not Status).glossary.md).requirements-elicitation).database-design).data-access).api-contract-design).Pause and ask the user when:
| Situation | Decision | Rationale |
|---|---|---|
| Same word, two meanings | Create two glossary entries with context tags | Prevents ambiguity in downstream skills |
| Term conflicts with language keyword | Prefix with domain abbreviation | Avoids compile/runtime errors |
| Uncertain cardinality | Default to one-to-many and flag for review | Most common relationship; easy to adjust |
| Entity vs. value object debate | If it has an identity lifecycle, it's an entity | Aligns with DDD principles |
| User introduces a synonym | Add as alias to existing term, do not create duplicate | Keeps glossary canonical |
| Glossary grows beyond 50 terms | Group terms by aggregate/bounded context | Maintains navigability |
glossary.md at project root).| Failure | Symptom | Mitigation |
|---|---|---|
| Unprotected critical term | A downstream skill renames a key entity causing inconsistency | Mark critical terms as Protected during initial modeling |
| Ambiguous term left unresolved | Different parts of the codebase use the same word differently | Always disambiguate before closing the session |
| Missing relationship | Entities exist in glossary but their connections are undocumented | Cross-check every entity pair for potential relationships |
| Glossary drift | Glossary diverges from actual code naming | Re-validate glossary against codebase periodically |
| Over-modeling | Too many fine-grained entities slow down development | Focus on aggregates first; decompose only when needed |
| Diagram staleness | ER diagram doesn't match current glossary | Update diagram in the same session as any glossary change |
Every domain modeling session must produce an entry in the project's audit log:
| Timestamp | Skill | Action | Detail | Confirmed By |
|-----------|-------|--------|--------|--------------|
| <ISO8601> | domain-modeling | session-started | Domain modeling session begun | — |
| <ISO8601> | domain-modeling | entities-extracted | N entities identified from requirements | user |
| <ISO8601> | domain-modeling | glossary-created | glossary.md created with N terms | user |
| <ISO8601> | domain-modeling | protected-terms-set | N terms marked as Protected | user |
| <ISO8601> | domain-modeling | er-diagram-generated | Mermaid ER diagram produced with N entities | user |
| <ISO8601> | domain-modeling | glossary-updated | Term X added/modified | user |
Log entries are append-only. Corrections are recorded as new rows, never as overwrites.