kensaurus/cursor-kenji

docs-domain-modeling

>- Build and sharpen a project's domain model — a CONTEXT.md glossary and ubiquitous language. Use when pinning down terminology, or the agent "uses the wrong words". Repo decision-memory system (INDEX.md, rejected alternatives) → docs-adr.

Installation

$ npx skills add kensaurus/cursor-kenji --skill docs-domain-modeling

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from kensaurus/cursor-kenji · top by installs.

npx skills add kensaurus/cursor-kenji

Browse all from kensaurus/cursor-kenji

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 9
License LICENSE
Default branch main
Open issues 0
Status Active

Skill metadata

Parsed from SKILL.md frontmatter.

LicenseMIT

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,265 B
  • docs SUMMARY.md 269 B

History

  1. First recorded snapshot · 1 installs

SKILL.md

Domain Modeling

Degree of freedom: MIXED. Which term is canonical [HIGH freedom]; CONTEXT.md shape, lazy create, and the three ADR gates [LOW freedom — run exactly].

A shared language between user, agent, and codebase pays off every session:
consistent naming, fewer tokens spent describing concepts, and a codebase the
agent can navigate by vocabulary. Adapted from
mattpocock/skills (MIT).

This is the active discipline — challenging terms, inventing edge-case scenarios, and writing the glossary and decisions down the moment they crystallize. Merely reading CONTEXT.md for vocabulary is a one-line habit any skill can do; this skill is for changing the model, not consuming it.

How to reason

  1. Observe — the word just used, and what CONTEXT.md already pins
  2. Interpret — conflict, overload, or a genuine new concept
  3. Classify — challenge / sharpen / write the glossary entry / offer an ADR
  4. Capture — write the moment it crystallizes; do not batch

Worked example

Observe: user says "account" for both the billing Customer and the login User; CONTEXT.md is empty; accounts and auth.users both exist.
Interpret: one word, two entities — the next session will keep writing the wrong one.
Classify: sharpen now — Customer (billing party) vs User (login). Not an ADR: naming is still reversible.
Write immediately: Customer: the billing party. Avoid: account, user

Self-critique before reporting

  • Domain language — definitions are not table or column names
  • Avoid filled — rejected synonyms are listed
  • Inline, not batched — each resolved term is in CONTEXT.md this turn
  • Right owner — INDEX.md / rejected alternatives → docs-adr; interview-the-user → workflow-grilling

File structure [LOW freedom — this shape]

/
├── CONTEXT.md            ← the glossary (create on first resolved term)
├── docs/adr/             ← architectural decision records
│   └── 0001-<dash-case-title>.md
└── src/

Create files lazily — only when there is something to write. CONTEXT.md is a glossary and nothing else: no implementation details, no spec content, no scratch notes.

CONTEXT.md entry format

**<Canonical term>**:
<One- or two-line definition in domain language, not implementation language.>
_Avoid_: <rejected synonyms, comma-separated>

During the session [HIGH freedom]

  • Challenge against the glossary. When the user uses a term that conflicts

with CONTEXT.md, call it out immediately: "Your glossary defines 'cancellation' as X, but you seem to mean Y — which is it?"

  • Sharpen fuzzy language. When a term is vague or overloaded, propose a

precise canonical term: "You're saying 'account' — do you mean the Customer or the User?"

  • Stress-test with concrete scenarios. Invent edge-case scenarios that force

precision about the boundaries between concepts.

  • Cross-reference with code. When the user states how something works, check

whether the code agrees, and surface contradictions.

  • Update CONTEXT.md inline. Capture each resolved term the moment it is

resolved — don't batch.

ADRs — offer sparingly [LOW freedom — all three gates]

Only offer to create an ADR when all three hold:

  1. Hard to reverse — changing your mind later costs something real.
  2. Surprising without context — a future reader will ask "why this way?"
  3. A real trade-off — genuine alternatives existed and one was picked for

specific reasons.

ADR body: Status, Context (the forces), Decision (what and why), Consequences (what becomes easier/harder). Number sequentially in docs/adr/.

Related: workflow-grilling (use both in one session to interview and capture the language), design-prd, docs-coauthor.