agentleFS
etretr/groundwork/skills/domain-modeling/SKILL.md

domain-modeling

Skill45 starsChanged 4 days agoMITView on GitHub

Use when designing a product or feature and the project lacks shared, agreed terminology - builds and maintains a pure domain glossary so agents speak one language

195 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use setup-ts-deep-modules, decision-mapping and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • liufeng1976Skill

    setup-ts-deep-modules

    Wire dependency-cruiser into a TypeScript repo so each package is a deep module — implementation hidden in subfolders, reachable only through its entry-point files. User-invoked.

    Also in 43 projects that use this

  • FabienDehopreSkill

    decision-mapping

    Turn a loose idea into a sequenced map of investigation tickets, then drive them to resolution one at a time.

    Also in 8 projects that use this

  • LesaniSkill

    writing-beats

    Shape an article as a journey of beats, choose-your-own-adventure style. The user picks a starting beat from the raw material, you write only that beat, then offer options for where to pivot next, beat by beat, until the article reaches a natural end. Use when the user has raw material and wants to assemble it as a narrative rather than an argument.

    Also in 62 projects that use this

  • RoentekSkill

    loop-me

    Grill me about specs for the workflows I want to build, within this workspace.

    Also in 56 projects that use this

  • AWSSkill

    wizard

    Generate an interactive bash wizard that walks a human through steps only they can perform. Use when provisioning infrastructure, setting up credentials or CI secrets, walking an unfamiliar third-party dashboard, or running a one-off migration or cutover. Don't invoke this for steps the agent can perform itself.

    Also in 134 projects that use this

  • LesaniSkill

    writing-shape

    Take a markdown file of raw material and shape it into an article through a conversational session — drafting candidate openings, growing the piece paragraph by paragraph, arguing about format (lists, tables, callouts, quotes) at each step. Use when the user has a pile of notes, fragments, or a rough draft and wants help turning it into something publishable.

    Also in 60 projects that use this

  • +1 more from Lesani

The file

We split this skill into the rules it gives an agent

2 rules. 0 are common, 1 is distinctive, and 1 is very specific to this project.

  • 0

    Common

    Most of the 183 edited versions we read keep these.

  • 1

    Distinctive

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Challenge vague or conflicting language on the spot: When usage drifts, name it: *"Your glossary defines X as A, but you're using it as B — …

    line 31
  2. Very specific:

    Follow the entry format in the sibling.

    line 35

“Common” is measured: kept by at least 6 in 10 of the 183 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Domain Modeling

Overview

A project's agents are verbose and misaligned when they lack a shared language: the same concept gets three names, one name covers three concepts, and every prompt re-explains what a term means. A tight glossary fixes this — it collapses ambiguity and tokens at once.

Core principle: the glossary is terminology only. One authoritative definition per term, and nothing else. It is never a spec, never an architecture doc, never a scratchpad. The moment an entry carries implementation detail or a design decision, it stops being a glossary and starts rotting.

The glossary lives at {{specs_dir}}/glossary.md.

When to Use

  • Defining a product or feature and a term keeps getting used loosely or two ways ([[design-product]], [[understanding-feature-requests]])
  • Architecture work surfaces concepts the team has no agreed name for ([[design-architecture]])
  • You catch yourself re-explaining the same concept across prompts or docs

Lazy Creation

{{specs_dir}}/glossary.md does not exist until the first term resolves. Do not scaffold an empty file or a placeholder. An empty glossary is sediment; create the file when you have a real first entry, not before.

Process

Capture terms inline, as they crystallize during design and requirements work — never in a batch at the end. Batching loses the context that made the term precise.

  1. Capture on crystallization. A concept earns an entry the moment it has a stable, agreed meaning. Write it immediately, in the format below. Do not wait for a "glossary pass."
  2. Challenge vague or conflicting language on the spot. When usage drifts, name it: "Your glossary defines X as A, but you're using it as B — which is it?" Resolve to one definition; update the entry or the usage, never both meanings.
  3. Stress-test relationships with concrete edge cases. Walk a real scenario at the boundary — empty, zero, expired, two-at-once — and check the definition and its links still hold. If the scenario breaks the entry, the term was underspecified; tighten it.
  4. Cross-check terms against the code. Surface contradictions where the code's structures and names disagree with the agreed term. A glossary that contradicts the codebase is worse than none — reconcile the name, the definition, or the code.

Follow the entry format in the sibling. See CONTEXT-FORMAT.md.

Glossary vs. decision

A glossary entry records what a word means, not why a path was chosen. When resolving a term forces a real architectural trade-off, that's a decision record (see the decision-record gate in ${CLAUDE_PLUGIN_ROOT}/references/engineering-principles.md), not a glossary entry. Record it in the architecture doc via [[design-architecture]] and link the term to it. Do not narrate the decision inside the definition.

Rationalizations

ExcuseReality
"I'll add the schema/endpoint so it's all in one place"That makes it a spec. The glossary holds meaning only; implementation rots the entry out of sync.
"I'll collect all the terms at the end in one pass"The precision came from the context you had when the term crystallized. Batching loses it.
"Both teams use the word slightly differently — I'll note both"Two meanings is the bug, not the entry. One authoritative definition; redirect the rest.
"I'll explain why we defined it this way here"Rationale belongs in the architecture decision record, not the glossary. The definition states what, not why.
"Let me stub an empty glossary so it exists"Empty file = sediment. Create on the first resolved term.

Red Flags

  • An entry contains a table name, function signature, file path, or library choice
  • The same concept has two entries under different names
  • One entry's definition contradicts how the code names or structures the thing
  • You're writing the glossary in a single batch after design is "done"
  • An entry argues why a choice was made instead of stating what the term means
  • A placeholder or empty glossary.md committed before any term resolved

Verification

  • glossary.md exists only because at least one term has resolved; no placeholder entries
  • Every entry follows CONTEXT-FORMAT.md (Term, Definition, Relationships, Edge cases; alphabetical)
  • No entry contains implementation detail or decision rationale
  • Each concept appears exactly once; no synonym has its own definition
  • Every term was stress-tested against at least one concrete edge-case scenario
  • Terms checked against the code; no name or meaning contradicts the codebase
  • Any trade-off uncovered while resolving a term is recorded as an architecture decision (see [[design-architecture]]), not inside the definition

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.