Domain Modelling — the steady-state kit
Goal: produce a provenance-clean domain-reference kit and, above all, a decision queue of precise, role-tagged questions a human can close. The queue is the primary output — artifact count and model sophistication are explicitly not the metric.
/kk:model is the first producer of the architecture flow: it runs at information-architecture altitude (what the domain's concepts are, where they bind to code, and which questions about them only a human can close), upstream of feature /kk:design and never called by it. It writes files and interacts with you mid-flow — it is a main-session skill, not a read-only reviewer.
Conventions
- Capy knowledge base — read shared-capy-knowledge-protocol.md; searched at intake (
kk:arch-decisions, kk:project-conventions), indexed at close.
- Shared producer guards — four workflow guards, each citing the field failure it prevents. Load all four before acting:
- shared-requirements-harvesting.md — quote the real asks before modelling (F1).
- shared-open-question-pass.md — verification asks new questions, not just re-confirms (F4).
- shared-fact-flip-propagation.md — a contradicted fact is fixed everywhere in-session (F2).
- shared-contact-ratio-guard.md — at N:0 artifacts-to-contacts, the next step is a conversation (F5).
- Profiles are not consulted —
/kk:model is language-agnostic in M2; archaeology reads code directly. Profile enrichment is deferred (design §8).
Workflow
Mandatory order — instructions before subject matter. The flow is strictly sequential. Do not read code to model it, draft any kit page, or engage the domain beyond a mode-detecting directory/keyword scan until every instruction file is loaded: this SKILL.md, the process file model-process.md, the reading method archaeology.md, the output contract kit-contract.md, all four shared guards above, and the shared capy protocol. This ordering is load-bearing: with domain code in context before the contracts load, the model emits plausible terms and skips the methodology that makes them trustworthy.
- Load instructions. Read model-process.md (the detailed seven-phase workflow), archaeology.md, kit-contract.md, all four shared guards — shared-requirements-harvesting.md, shared-open-question-pass.md, shared-fact-flip-propagation.md, shared-contact-ratio-guard.md — and shared-capy-knowledge-protocol.md. Minimal early scope — a directory listing or a keyword scan of the request — is permitted only to drive mode detection.
- Execute the seven phases per model-process.md:
- Scope intake — establish the bounded context, the forcing question (the feature/ticket that bounds what is worth modelling), and the mode (greenfield: no kit exists → produce the two pages; brownfield: an existing kit is read in full first and all changes are deltas, status markers never flipped unilaterally). Run the capy knowledge search.
- Requirements-harvesting gate (guard, F1) — read every linked ticket + one hop; quote the actual asks into working notes before any modelling.
- Archaeology — read code state → time → invariants per archaeology.md; two-clock discipline (code-clock facts verifiable, intent stays
proposed).
- Draft the kit per kit-contract.md — glossary page + divergences/traps page (+ conventions index if the home has none).
- Verify — at least one confirm-pass plus at least one open-question pass (guard, F4).
- Self-check — conventions-bind-author lint: the produced pages obey the kit's own declared conventions.
- Surface & close — present the decision queue (each RQ precise, decidable, role-tagged); apply the contact-ratio guard (F5); in brownfield, fact-flip propagation (F2) on any contradicted recorded fact; index non-obvious rationale to
kk:arch-decisions.
Required Outputs
1---2name: model-23description: Produce or update a domain-reference kit — the durable glossary + divergences/traps pages for a bounded context. Use for domain modelling, information architecture, building a domain glossary or domain model, mapping domain concepts to code (bindings), or surfacing the decidable questions stakeholders must close before design. Runs upstream of feature /kk:design as the first producer of the architecture flow, and emits artifacts /kk:review-architecture verifies. Triggers: "model the domain", "build a glossary", "domain reference", "bounded context", "what are the concepts here". NOT for behavioral code review or writing a feature design doc.4---56# Domain Modelling — the steady-state kit78**Goal: produce a provenance-clean domain-reference kit and, above all, a decision queue of precise, role-tagged questions a human can close.** The queue is the primary output — artifact count and model sophistication are explicitly not the metric.910`/kk:model` is the first **producer** of the architecture flow: it runs at information-architecture altitude (what the domain's concepts are, where they bind to code, and which questions about them only a human can close), upstream of feature `/kk:design` and never called by it. It writes files and interacts with you mid-flow — it is a main-session skill, not a read-only reviewer.1112## Conventions1314- **Capy knowledge base** — read [shared-capy-knowledge-protocol.md](shared-capy-knowledge-protocol.md); searched at intake (`kk:arch-decisions`, `kk:project-conventions`), indexed at close.15- **Shared producer guards** — four workflow guards, each citing the field failure it prevents. Load all four before acting:16 - [shared-requirements-harvesting.md](shared-requirements-harvesting.md) — quote the real asks before modelling (F1).17 - [shared-open-question-pass.md](shared-open-question-pass.md) — verification asks new questions, not just re-confirms (F4).18 - [shared-fact-flip-propagation.md](shared-fact-flip-propagation.md) — a contradicted fact is fixed everywhere in-session (F2).19 - [shared-contact-ratio-guard.md](shared-contact-ratio-guard.md) — at N:0 artifacts-to-contacts, the next step is a conversation (F5).20- **Profiles are not consulted** — `/kk:model` is language-agnostic in M2; archaeology reads code directly. Profile enrichment is deferred (design §8).2122## Workflow2324**Mandatory order — instructions before subject matter.** The flow is strictly sequential. Do **not** read code to model it, draft any kit page, or engage the domain beyond a mode-detecting directory/keyword scan until every instruction file is loaded: this SKILL.md, the process file [model-process.md](model-process.md), the reading method [archaeology.md](archaeology.md), the output contract [kit-contract.md](kit-contract.md), all four shared guards above, and the shared capy protocol. This ordering is load-bearing: with domain code in context before the contracts load, the model emits plausible terms and skips the methodology that makes them trustworthy.25261. **Load instructions.** Read [model-process.md](model-process.md) (the detailed seven-phase workflow), [archaeology.md](archaeology.md), [kit-contract.md](kit-contract.md), all four shared guards — [shared-requirements-harvesting.md](shared-requirements-harvesting.md), [shared-open-question-pass.md](shared-open-question-pass.md), [shared-fact-flip-propagation.md](shared-fact-flip-propagation.md), [shared-contact-ratio-guard.md](shared-contact-ratio-guard.md) — and [shared-capy-knowledge-protocol.md](shared-capy-knowledge-protocol.md). Minimal early scope — a directory listing or a keyword scan of the request — is permitted only to drive mode detection.272. **Execute the seven phases** per [model-process.md](model-process.md):28 1. **Scope intake** — establish the bounded context, the **forcing question** (the feature/ticket that bounds what is worth modelling), and the **mode** (greenfield: no kit exists → produce the two pages; brownfield: an existing kit is read in full first and all changes are deltas, status markers never flipped unilaterally). Run the capy knowledge search.29 2. **Requirements-harvesting gate** *(guard, F1)* — read every linked ticket + one hop; quote the actual asks into working notes before any modelling.30 3. **Archaeology** — read code **state → time → invariants** per [archaeology.md](archaeology.md); two-clock discipline (code-clock facts verifiable, intent stays `proposed`).31 4. **Draft the kit** per [kit-contract.md](kit-contract.md) — glossary page + divergences/traps page (+ conventions index if the home has none).32 5. **Verify** — at least one confirm-pass **plus at least one open-question pass** *(guard, F4)*.33 6. **Self-check** — conventions-bind-author lint: the produced pages obey the kit's own declared conventions.34 7. **Surface & close** — present the **decision queue** (each RQ precise, decidable, role-tagged); apply the **contact-ratio guard** *(F5)*; in brownfield, **fact-flip propagation** *(F2)* on any contradicted recorded fact; index non-obvious rationale to `kk:arch-decisions`.3536## Required Outputs3738- [ ] The two durable kit pages (glossary + traps) for the context, provenance-clean, per [kit-contract.md](kit-contract.md) (+ conventions index if the home lacked one).39- [ ] The **decision queue** — precise, decidable, role-tagged questions — presented inline and appended to the active feature's `docs/wip/<feature>/design.md` under an **Open Questions** heading when that directory exists.40- [ ] Contact-ratio guard applied; brownfield fact-flips propagated across the workspace.41- [ ] Non-obvious modelling rationale indexed to `kk:arch-decisions`.