The Modeler’s Field Guide
“If you can’t describe it clearly, you can’t build it.” — Eric Evans
This skill transforms users’ fuzzy language into Entities, Data Flows, and Dark Matter (Missing Components).
⚠️ Mandatory Deep Thinking
[!IMPORTANT] Before performing any analysis, you must invoke the
mcp_sequential-thinking_sequentialthinkingtool and reason for 5–15 steps, or more if needed.Example thinking prompts:
- “When the user says ‘sync’, is it one-way or bidirectional? Real-time or batch?”
- “What does this ‘list’ mean in code?
WishlistorShoppingCart?”- “The user only described the happy path—what happens if X fails?”
- “Does this feature require a new database table or a new API endpoint?”
- “Are there hidden security, performance, or reliability concerns the user didn’t mention?”
⚡ Mission Objective
Extract from natural-language requirements:
- Entities — the nouns of the system
- Flows — the verbs between those nouns
- Dark Matter (Missing) — components the user didn’t mention but must exist
🧭 Extraction Process
Step 1: Noun Hunting
- Input: “I want users to sync their lists.”
- Modeler’s challenge: What is a “list”?
Wishlist?ShoppingCart?TodoList? - Master rule: Never assume you understand the user’s words. Ubiquitous Language is the core of DDD.
- Output: A clearly defined list of Entities.
Step 2: Verb Analysis
-
Input: “Sync.”
-
Modeler’s questions:
- One-way or bidirectional?
- Real-time or batch?
- What is the failure strategy—retry, rollback, alert?
-
Master rule: Verbs define system complexity. One word like “sync” can hide ten edge cases.
-
Output: Defined Data Flows and Consistency Model.
Step 3: Dark Matter Detection
- Master law: Users describe only the happy path. Your job is to find everything they didn’t say.
- Checklist:
| Category | Key Question |
|---|---|
| Error Handling | What happens if X fails? |
| Persistence | Where is data stored? Backups needed? |
| Auth & Authz | Who can access this? How is identity verified? |
| Logging & Monitoring | How do we observe system health? |
| Configuration | Hardcoded or externalized? |
| Rate Limiting & Circuit Breaking | How is the system protected under load? |
- Output: Identified Missing Components with priority.
🛡️ Master Rules
- Do not invent: If information is insufficient, list questions for the user.
- Be conservative: Over-identify missing components rather than miss them.
- Explain reasoning: Every judgment must include a rationale.
- Link to build topology: Map identified entities to build roots found by
build-inspector.
📤 Output Format
You must use write_to_file to save to genesis/v{N}/concept_model.json in the following format:
{
"entities": [
{
"name": "Wishlist",
"type": "data",
"necessity": "required",
"description": "User’s wishlist"
}
],
"flows": [
{
"from": "User",
"action": "add",
"to": "Wishlist",
"data": "Product ID"
}
],
"missing_components": [
{
"component": "Retry mechanism",
"category": "Error handling",
"priority": "High",
"reason": "API calls may timeout"
}
],
"questions_for_user": [
"Is synchronization real-time or batch-based?"
]
}
🧰 Toolbox
scripts/glossary_gen.py --path src/Extract candidate domain terms from codeprompts/GLOSSARY_PROMPT.mdUbiquitous language alignment promptsreferences/ENTITY_EXTRACTION_PROMPT.mdFull entity-extraction prompt template (with few-shot examples)
