Skip to content
Development
Skill

/domain-modeling

Use when changing or sharpening 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. In read-only mode it reads CONTEXT.md and obeys it, emitting a

From plugin
cc10x
16722 skills14 agents

Claude Code

$ npx -y skills add romiluz13/cc10x --skill domain-modeling --agent claude-code

SKILL.md

domain-modeling.SKILL.md
name: domain-modeling
description: |
  Use when changing or sharpening 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. In read-only mode it reads CONTEXT.md and
  obeys 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 glossary entries avoid parallel-write clashes when multiple shaping phases run.

`CONTEXT.md` should be totally dev

Read more
@romiluz13
Ships withcc10x

The Loop Engine for Claude Code — engineer the loop, not the prompt. 1 router · 14 agents · 21 skills · 8 workflows. Fail-closed gates, test honesty, anti-anchored review.

16722 skills14 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
167
Star history of romiluz13/cc10x on GitHub, a chart by star-history.com

Other skills on cc10x.

agent-common

agent-common

Use when a cc10x agent starts a task: the shared preamble for the memory protocol, the contract format, and the output rules.

@romiluz13@romiluz13Install Skill
architecture

architecture

Greenfield architecture design: map functionality flows, draw components, design APIs, classify dependencies, plan observability.…

@romiluz13@romiluz13Install Skill
building

building

Use when writing production code test-first: the RED-GREEN-REFACTOR cycle, false-RED detection, vertical slicing, scope…

@romiluz13@romiluz13Install Skill
cc10x-guide

cc10x-guide

Answers questions about cc10x itself — what it is, how to install and configure it, how the router, workflows, memory, and hooks…

@romiluz13@romiluz13Install Skill
cc10x-router

cc10x-router

Routes build, debug, review, plan, QA, and triage requests through the cc10x workflows (task graphs, workflow artifacts, gates);…

@romiluz13@romiluz13Install Skill
code-review

code-review

Two-mode skill: (1) adversarial review — spec compliance + code quality + security, confidence-scored findings with file:line…

@romiluz13@romiluz13Install Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills12d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc13d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react3d252k
@facebook@facebookInstall Skill

Questions about domain-modeling.

Which coding agents can use domain-modeling?
domain-modeling installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.