{"slug":"model-2","title":"model","summary":"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 ","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-09-20T17:02:54.856086Z","repo":{"url":"https://github.com/serpro69/claude-toolbox","stars":149,"forks":31,"license":null,"updatedAt":"2026-09-25T15:21:56Z"},"bodyHtml":"<hr>\n<h2>name: model\ndescription: |\nProduce 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.</h2>\n\n<h1>Domain Modelling — the steady-state kit</h1>\n<p><strong>Goal: produce a provenance-clean domain-reference kit and, above all, a decision queue of precise, role-tagged questions a human can close.</strong> The queue is the primary output — artifact count and model sophistication are explicitly not the metric.</p>\n<p><code>$kk:model</code> is the first <strong>producer</strong> 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 <code>$kk:design</code> 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.</p>\n<h2>Conventions</h2>\n<ul>\n<li><strong>Capy knowledge base</strong> — read <a href=\"shared-capy-knowledge-protocol.md\">shared-capy-knowledge-protocol.md</a>; searched at intake (<code>kk:arch-decisions</code>, <code>kk:project-conventions</code>), indexed at close.</li>\n<li><strong>Shared producer guards</strong> — four workflow guards, each citing the field failure it prevents. Load all four before acting:\n<ul>\n<li><a href=\"shared-requirements-harvesting.md\">shared-requirements-harvesting.md</a> — quote the real asks before modelling (F1).</li>\n<li><a href=\"shared-open-question-pass.md\">shared-open-question-pass.md</a> — verification asks new questions, not just re-confirms (F4).</li>\n<li><a href=\"shared-fact-flip-propagation.md\">shared-fact-flip-propagation.md</a> — a contradicted fact is fixed everywhere in-session (F2).</li>\n<li><a href=\"shared-contact-ratio-guard.md\">shared-contact-ratio-guard.md</a> — at N:0 artifacts-to-contacts, the next step is a conversation (F5).</li>\n</ul>\n</li>\n<li><strong>Profiles are not consulted</strong> — <code>$kk:model</code> is language-agnostic in M2; archaeology reads code directly. Profile enrichment is deferred (design §8).</li>\n</ul>\n<h2>Workflow</h2>\n<p><strong>Mandatory order — instructions before subject matter.</strong> The flow is strictly sequential. Do <strong>not</strong> 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 <a href=\"model-process.md\">model-process.md</a>, the reading method <a href=\"archaeology.md\">archaeology.md</a>, the output contract <a href=\"kit-contract.md\">kit-contract.md</a>, 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.</p>\n<ol>\n<li><strong>Load instructions.</strong> Read <a href=\"model-process.md\">model-process.md</a> (the detailed seven-phase workflow), <a href=\"archaeology.md\">archaeology.md</a>, <a href=\"kit-contract.md\">kit-contract.md</a>, all four shared guards — <a href=\"shared-requirements-harvesting.md\">shared-requirements-harvesting.md</a>, <a href=\"shared-open-question-pass.md\">shared-open-question-pass.md</a>, <a href=\"shared-fact-flip-propagation.md\">shared-fact-flip-propagation.md</a>, <a href=\"shared-contact-ratio-guard.md\">shared-contact-ratio-guard.md</a> — and <a href=\"shared-capy-knowledge-protocol.md\">shared-capy-knowledge-protocol.md</a>. Minimal early scope — a directory listing or a keyword scan of the request — is permitted only to drive mode detection.</li>\n<li><strong>Execute the seven phases</strong> per <a href=\"model-process.md\">model-process.md</a>:\n<ol>\n<li><strong>Scope intake</strong> — establish the bounded context, the <strong>forcing question</strong> (the feature/ticket that bounds what is worth modelling), and the <strong>mode</strong> (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.</li>\n<li><strong>Requirements-harvesting gate</strong> <em>(guard, F1)</em> — read every linked ticket + one hop; quote the actual asks into working notes before any modelling.</li>\n<li><strong>Archaeology</strong> — read code <strong>state → time → invariants</strong> per <a href=\"archaeology.md\">archaeology.md</a>; two-clock discipline (code-clock facts verifiable, intent stays <code>proposed</code>).</li>\n<li><strong>Draft the kit</strong> per <a href=\"kit-contract.md\">kit-contract.md</a> — glossary page + divergences/traps page (+ conventions index if the home has none).</li>\n<li><strong>Verify</strong> — at least one confirm-pass <strong>plus at least one open-question pass</strong> <em>(guard, F4)</em>.</li>\n<li><strong>Self-check</strong> — conventions-bind-author lint: the produced pages obey the kit's own declared conventions.</li>\n<li><strong>Surface &amp; close</strong> — present the <strong>decision queue</strong> (each RQ precise, decidable, role-tagged); apply the <strong>contact-ratio guard</strong> <em>(F5)</em>; in brownfield, <strong>fact-flip propagation</strong> <em>(F2)</em> on any contradicted recorded fact; index non-obvious rationale to <code>kk:arch-decisions</code>.</li>\n</ol>\n</li>\n</ol>\n<h2>Required Outputs</h2>\n<ul>\n<li><input disabled=\"disabled\" type=\"checkbox\"> The two durable kit pages (glossary + traps) for the context, provenance-clean, per <a href=\"kit-contract.md\">kit-contract.md</a> (+ conventions index if the home lacked one).</li>\n<li><input disabled=\"disabled\" type=\"checkbox\"> The <strong>decision queue</strong> — precise, decidable, role-tagged questions — presented inline and appended to the active feature's <code>docs/feat/wip/&lt;feature&gt;/design.md</code> under an <strong>Open Questions</strong> heading when that directory exists.</li>\n<li><input disabled=\"disabled\" type=\"checkbox\"> Contact-ratio guard applied; brownfield fact-flips propagated across the workspace.</li>\n<li><input disabled=\"disabled\" type=\"checkbox\"> Non-obvious modelling rationale indexed to <code>kk:arch-decisions</code>.</li>\n</ul>\n","files":[{"path":"archaeology.md","sizeBytes":3129,"isText":true},{"path":"evals/brownfield-update/eval.json","sizeBytes":4285,"isText":true},{"path":"evals/brownfield-update/oracle/gold-deltas.json","sizeBytes":4025,"isText":true},{"path":"evals/brownfield-update/test-files/docs/architecture/index.md","sizeBytes":1161,"isText":true},{"path":"evals/brownfield-update/test-files/docs/architecture/routesetting.md","sizeBytes":2836,"isText":true},{"path":"evals/brownfield-update/test-files/docs/architecture/routesetting-traps.md","sizeBytes":1328,"isText":true},{"path":"evals/brownfield-update/test-files/gym/go.mod","sizeBytes":20,"isText":false},{"path":"evals/brownfield-update/test-files/gym/grading.go","sizeBytes":492,"isText":false},{"path":"evals/brownfield-update/test-files/gym/route.go","sizeBytes":992,"isText":false},{"path":"evals/brownfield-update/test-files/gym/wall.go","sizeBytes":377,"isText":false},{"path":"evals/hidden-invariant/eval.json","sizeBytes":3684,"isText":true},{"path":"evals/hidden-invariant/oracle/gold-invariant.json","sizeBytes":2713,"isText":true},{"path":"evals/hidden-invariant/test-files/campground/booking.go","sizeBytes":1199,"isText":false},{"path":"evals/hidden-invariant/test-files/campground/gate.go","sizeBytes":455,"isText":false},{"path":"evals/hidden-invariant/test-files/campground/go.mod","sizeBytes":27,"isText":false},{"path":"evals/hidden-invariant/test-files/campground/occupancy.go","sizeBytes":378,"isText":false},{"path":"evals/hidden-invariant/test-files/campground/site.go","sizeBytes":189,"isText":false},{"path":"evals/kit-format/eval.json","sizeBytes":6075,"isText":true},{"path":"evals/kit-format/oracle/kit-conventions-checklist.json","sizeBytes":5414,"isText":true},{"path":"evals/kit-format/test-files/bikeshare/bike.go","sizeBytes":545,"isText":false},{"path":"evals/kit-format/test-files/bikeshare/dock.go","sizeBytes":409,"isText":false},{"path":"evals/kit-format/test-files/bikeshare/go.mod","sizeBytes":45,"isText":false},{"path":"evals/kit-format/test-files/bikeshare/policy.go","sizeBytes":527,"isText":false},{"path":"evals/kit-format/test-files/bikeshare/ride.go","sizeBytes":614,"isText":false},{"path":"evals/requirements-gate/eval.json","sizeBytes":3622,"isText":true},{"path":"evals/requirements-gate/oracle/gold-harvest.json","sizeBytes":2883,"isText":true},{"path":"evals/requirements-gate/test-files/ferry/boarding.go","sizeBytes":499,"isText":false},{"path":"evals/requirements-gate/test-files/ferry/go.mod","sizeBytes":22,"isText":false},{"path":"evals/requirements-gate/test-files/ferry/reservation.go","sizeBytes":983,"isText":false},{"path":"evals/requirements-gate/test-files/ferry/sailing.go","sizeBytes":493,"isText":false},{"path":"evals/requirements-gate/test-files/ferry/tickets/FERRY-12.md","sizeBytes":488,"isText":true},{"path":"evals/requirements-gate/test-files/ferry/tickets/FERRY-31.md","sizeBytes":600,"isText":true},{"path":"evals/scope-pushback/eval.json","sizeBytes":3494,"isText":true},{"path":"evals/scope-pushback/test-files/apiary/colony.go","sizeBytes":436,"isText":false},{"path":"evals/scope-pushback/test-files/apiary/go.mod","sizeBytes":23,"isText":false},{"path":"evals/scope-pushback/test-files/apiary/harvest.go","sizeBytes":418,"isText":false},{"path":"evals/scope-pushback/test-files/apiary/hive.go","sizeBytes":443,"isText":false},{"path":"evals/scope-pushback/test-files/apiary/inspection.go","sizeBytes":474,"isText":false},{"path":"kit-contract.md","sizeBytes":12568,"isText":true},{"path":"model-process.md","sizeBytes":8802,"isText":true},{"path":"shared-capy-knowledge-protocol.md","sizeBytes":1845,"isText":true},{"path":"shared-contact-ratio-guard.md","sizeBytes":2553,"isText":true},{"path":"shared-fact-flip-propagation.md","sizeBytes":2370,"isText":true},{"path":"shared-open-question-pass.md","sizeBytes":2847,"isText":true},{"path":"shared-requirements-harvesting.md","sizeBytes":2455,"isText":true},{"path":"SKILL.md","sizeBytes":5834,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-09-20T17:03:30.600923Z","sha256":"6395CC971A568F79900E788115B7FCB462734D0BB5E937B1622A9F00CABEDBFB","sizeBytes":50281},"review":null,"source":{"repositoryUrl":"https://github.com/serpro69/claude-toolbox","path":"kodex-plugin/skills/model","license":null,"commit":"6121a1cf32d47972deef60944bf3d1a5e309f287","subtreeSha":"CC757C0AE0172FB80D8254B32C60046223023E730C8623470C13DB5C82733A27","lastSyncedAt":"2026-09-28T20:55:47.763582Z"},"reviewedAt":"2026-09-20T17:04:30.299734Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/serpro69/claude-toolbox/tree/master/kodex-plugin/skills/model"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install serpro69-claude-toolbox@llmmart"},{"target":"git","command":"git clone https://github.com/serpro69/claude-toolbox.git"}]}