/domain-modeling
Actively build and sharpen a project's domain model — challenge terms against the glossary, sharpen fuzzy language, stress-test with edge-case scenarios, update CONTEXT.md inline, and offer ADRs sparingly. The active discipline loaded by language-shaping agents (planner,
$ npx -y skills add romiluz13/cc10x --skill domain-modeling --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/domain-modeling
Context preview
The summary Claude sees to decide when to auto-load this skill.
Actively build and sharpen a project's domain model — challenge terms against the glossary, sharpen fuzzy language, stress-test with edge-case scenarios, update CONTEXT.md inline, and offer ADRs sparingly. The active discipline loaded by language-shaping agents (planner,
SKILL.md
domain-modeling.SKILL.mdname: domain-modeling
description: |
Actively build and sharpen a project's domain model — challenge terms against
the glossary, sharpen fuzzy language, stress-test with edge-case scenarios,
update CONTEXT.md inline, and offer ADRs sparingly. The active discipline
loaded by language-shaping agents (planner, doc-syncer, exploration). Builders
load a read-only/obey variant: they read CONTEXT.md and obey it, emitting a
proposal on contradiction rather than resolving it. See the Active vs
read-only section for which mode applies.
allowed-tools: Read Edit Write Glob Grep
user-invocable: false
<!-- Upstream: github.com/mattpocock/skills @ e9fcdf95b402d360f90f1db8d776d5dd450f9234 Classification: ADAPTED (autonomous transform on human-gates; read-only builder variant added; cc10x frontmatter). Companions (CONTEXT-FORMAT.md, ADR-FORMAT.md) ported verbatim. -->
Domain Modeling
Actively build and sharpen the project's domain model as you design. This is the *active* discipline — challenging terms, inventing edge-case scenarios, and writing the glossary and decisions down the moment they crystallise. (Merely *reading* `CONTEXT.md` for vocabulary is not this skill — that's a one-line habit any skill can do. This skill is for when you're changing the model, not just consuming it.)
Active vs read-only
This skill loads in two modes depending on which agent invoked it:
- **ACTIVE** (planner, doc-syncer, exploration in DESIGN mode): you shape the domain model. You challenge terms, sharpen language, write `CONTEXT.md` inline, and offer ADRs. You are a designated CONTEXT.md writer.
- **READ-ONLY / OBEY** (component-builder, bug-investigator): you read `CONTEXT.md` and use the project's domain vocabulary in all output. You do NOT write or edit `CONTEXT.md`. If you discover a contradiction between the glossary and the code, **emit a proposal** in your Memory Notes (`**Domain proposal:** term X is defined as Y in CONTEXT.md but the code does Z — which is right?`) or block (`STATUS: FAIL`, `REMEDIATION_REASON: "Domain glossary contradicts code at term X"`) — do NOT resolve the contradiction yourself. Resolving domain language is the job of shaping phases, not build phases.
The agent's persona prompt determines which mode is in effect. If unsure, default to READ-ONLY — the cost of an opportunistic glossary rewrite during a build is higher than the cost of a deferred proposal.
Autonomous transform (how human-gates route here)
Matt's original skill is human-gated ("ask the user", "challenge the user"). In cc10x's autonomous workflow, every gate routes through **evidence + blast radius**, not reversibility alone:
| Situation | Transform | | --- | --- | | The repo/spec/code already proves one interpretation, AND the choice has no external semantic impact | Proceed. Record the resolved term in `CONTEXT.md` inline. | | No proof in repo, but low blast radius (no contracts, persistence, or user-language affected) | Proceed with the recommended interpretation, record it in `CONTEXT.md` with an explicit `**Assumed:**` note, and continue. | | Domain ambiguity affecting contracts, persistence, or user language (e.g. "account" = Customer or User?) | **STOP.** Return `STATUS: NEEDS_CLARIFICATION` (planner) or emit the proposal and block (builder). Do NOT auto-answer. | | A hard-to-reverse decision with no proof | **STOP.** Failure-stop. Offer the ADR only after the human decides. |
**Grilling is NOT auto-answered.** Auto-answering an interview removes its information source. In JUST_GO mode, the exploration interview asks questions, records the recommended answer + assumption, and proceeds ONLY for low-blast-radius decisions. Domain-shaping questions always stop for human input.
File structure
Most repos have a single context:
/
├── CONTEXT.md
├── docs/
│ └── adr/
│ ├── 0001-event-sourced-orders.md
│ └── 0002-postgres-for-write-model.md
└── src/
If a `CONTEXT-MAP.md` exists at the root, the repo has multiple contexts. The map points to where each one lives:
/
├── CONTEXT-MAP.md
├── docs/
│ └── adr/ ← system-wide decisions
├── src/
│ ├── ordering/
│ │ ├── CONTEXT.md
│ │ └── docs/adr/ ← context-specific decisions
│ └── billing/
│ ├── CONTEXT.md
│ └── docs/adr/
Create files lazily — only when you have something to write. If no `CONTEXT.md` exists, create one when the first term is resolved. If no `docs/adr/` exists, create it when the first ADR is needed.
During the session (ACTIVE mode)
Challenge against the glossary
When the user uses a term that conflicts with the existing language in `CONTEXT.md`, call it out immediately. "Your glossary defines 'cancellation' as X, but you seem to mean Y — which is it?" In autonomous mode, if the contradiction affects contracts/persistence/user-language, STOP per the transform table; otherwise surface it and proceed with the sharpened term.
Sharpen fuzzy language
When the user uses vague or overloaded terms, propose a precise canonical term. "You're saying 'account' — do you mean the Customer or the User? Those are different things." Domain-shaping sharpening stops for human input; low-blast-radius sharpening proceeds with a recorded assumption.
Discuss concrete scenarios
When domain relationships are being discussed, stress-test them with specific scenarios. Invent scenarios that probe edge cases and force precision about the boundaries between concepts.
Cross-reference with code
When the user states how something works, check whether the code agrees. If you find a contradiction, surface it: "Your code cancels entire Orders, but you just said partial cancellation is possible — which is right?"
Update CONTEXT.md inline
When a term is resolved, update `CONTEXT.md` right there. Don't batch these up — capture them as they happen. Use the format in [CONTEXT-FORMAT.md](./CONTEXT-FORMAT.md). Append-only g
Read more
name: domain-modeling description: | Actively build and sharpen a project's domain model — challenge terms against the glossary, sharpen fuzzy language, stress-test with edge-case scenarios, update CONTEXT.md inline, and offer ADRs sparingly. The active discipline loaded by language-shaping agents (planner, doc-syncer, exploration). Builders load a read-only/obey variant: they read CONTEXT.md and obey it, emitting a proposal on contradiction rather than resolving it. See the Active vs read-only section for which mode applies. allowed-tools: Read Edit Write Glob Grep user-invocable: false
<!-- Upstream: github.com/mattpocock/skills @ e9fcdf95b402d360f90f1db8d776d5dd450f9234 Classification: ADAPTED (autonomous transform on human-gates; read-only builder variant added; cc10x frontmatter). Companions (CONTEXT-FORMAT.md, ADR-FORMAT.md) ported verbatim. -->
Domain Modeling
Actively build and sharpen the project's domain model as you design. This is the *active* discipline — challenging terms, inventing edge-case scenarios, and writing the glossary and decisions down the moment they crystallise. (Merely *reading* `CONTEXT.md` for vocabulary is not this skill — that's a one-line habit any skill can do. This skill is for when you're changing the model, not just consuming it.)
Active vs read-only
This skill loads in two modes depending on which agent invoked it:
- **ACTIVE** (planner, doc-syncer, exploration in DESIGN mode): you shape the domain model. You challenge terms, sharpen language, write `CONTEXT.md` inline, and offer ADRs. You are a designated CONTEXT.md writer.
- **READ-ONLY / OBEY** (component-builder, bug-investigator): you read `CONTEXT.md` and use the project's domain vocabulary in all output. You do NOT write or edit `CONTEXT.md`. If you discover a contradiction between the glossary and the code, **emit a proposal** in your Memory Notes (`**Domain proposal:** term X is defined as Y in CONTEXT.md but the code does Z — which is right?`) or block (`STATUS: FAIL`, `REMEDIATION_REASON: "Domain glossary contradicts code at term X"`) — do NOT resolve the contradiction yourself. Resolving domain language is the job of shaping phases, not build phases.
The agent's persona prompt determines which mode is in effect. If unsure, default to READ-ONLY — the cost of an opportunistic glossary rewrite during a build is higher than the cost of a deferred proposal.
Autonomous transform (how human-gates route here)
Matt's original skill is human-gated ("ask the user", "challenge the user"). In cc10x's autonomous workflow, every gate routes through **evidence + blast radius**, not reversibility alone:
| Situation | Transform | | --- | --- | | The repo/spec/code already proves one interpretation, AND the choice has no external semantic impact | Proceed. Record the resolved term in `CONTEXT.md` inline. | | No proof in repo, but low blast radius (no contracts, persistence, or user-language affected) | Proceed with the recommended interpretation, record it in `CONTEXT.md` with an explicit `**Assumed:**` note, and continue. | | Domain ambiguity affecting contracts, persistence, or user language (e.g. "account" = Customer or User?) | **STOP.** Return `STATUS: NEEDS_CLARIFICATION` (planner) or emit the proposal and block (builder). Do NOT auto-answer. | | A hard-to-reverse decision with no proof | **STOP.** Failure-stop. Offer the ADR only after the human decides. |
**Grilling is NOT auto-answered.** Auto-answering an interview removes its information source. In JUST_GO mode, the exploration interview asks questions, records the recommended answer + assumption, and proceeds ONLY for low-blast-radius decisions. Domain-shaping questions always stop for human input.
File structure
Most repos have a single context:
/ ├── CONTEXT.md ├── docs/ │ └── adr/ │ ├── 0001-event-sourced-orders.md │ └── 0002-postgres-for-write-model.md └── src/
If a `CONTEXT-MAP.md` exists at the root, the repo has multiple contexts. The map points to where each one lives:
/ ├── CONTEXT-MAP.md ├── docs/ │ └── adr/ ← system-wide decisions ├── src/ │ ├── ordering/ │ │ ├── CONTEXT.md │ │ └── docs/adr/ ← context-specific decisions │ └── billing/ │ ├── CONTEXT.md │ └── docs/adr/
Create files lazily — only when you have something to write. If no `CONTEXT.md` exists, create one when the first term is resolved. If no `docs/adr/` exists, create it when the first ADR is needed.
During the session (ACTIVE mode)
Challenge against the glossary
When the user uses a term that conflicts with the existing language in `CONTEXT.md`, call it out immediately. "Your glossary defines 'cancellation' as X, but you seem to mean Y — which is it?" In autonomous mode, if the contradiction affects contracts/persistence/user-language, STOP per the transform table; otherwise surface it and proceed with the sharpened term.
Sharpen fuzzy language
When the user uses vague or overloaded terms, propose a precise canonical term. "You're saying 'account' — do you mean the Customer or the User? Those are different things." Domain-shaping sharpening stops for human input; low-blast-radius sharpening proceeds with a recorded assumption.
Discuss concrete scenarios
When domain relationships are being discussed, stress-test them with specific scenarios. Invent scenarios that probe edge cases and force precision about the boundaries between concepts.
Cross-reference with code
When the user states how something works, check whether the code agrees. If you find a contradiction, surface it: "Your code cancels entire Orders, but you just said partial cancellation is possible — which is right?"
Update CONTEXT.md inline
When a term is resolved, update `CONTEXT.md` right there. Don't batch these up — capture them as they happen. Use the format in [CONTEXT-FORMAT.md](./CONTEXT-FORMAT.md). Append-only g
Showing the first part of this file.
The Loop Engine for Claude Code — engineer the loop, not the prompt. 1 router · 9 agents · 16 skills · 4 workflows. Fail-closed gates, test honesty, anti-anchored review.
Repo: romiluz13/cc10x
Other skills on cc10x.
- /agent-common
Shared preamble loaded by all cc10x agents — memory protocol, contract format, output rules.
Open skill - /architecture
Greenfield architecture design: map functionality flows, draw components, design APIs, classify dependencies, plan observability. For multi-component, API, schema, auth, or integration-heavy work. For retrofitting existing code, use codebase-hygiene instead.
Open skill - /building
Implementation skill for writing production code with TDD. Covers the RED-GREEN-REFACTOR cycle, false-RED detection, vertical slicing, scope escalation, test process discipline, and code generation patterns. Loaded by component-builder and bug-investigator.
Open skill - /cc10x-router
THE ONLY ENTRY POINT FOR CC10X. Activate this skill for build, debug, review, and plan requests. Use when the user asks to implement, fix, review, plan, test, refactor, or continue code work. Trigger keywords: build, implement, create, write, add, review, audit, debug, fix,
Open skill - /code-review
Two-mode skill: (1) adversarial review — spec compliance + code quality + security, confidence-scored findings with file:line evidence; (2) receiving review — verify-before- agreeing discipline for acting on external/human review feedback.
Open skill - /codebase-design
Canonical deep-module vocabulary (module, interface, depth, seam, adapter, leverage, locality) for designing a module's shape — a lot of behaviour behind a small interface at a clean seam, testable through that interface. The single source of truth for these terms; other skills
Open skill

