domain-modeling
The home for domain-doc reasoning — the CONTEXT.md Ubiquitous Language format, the ADR format, and the Domain-Driven Design book-rules.
Skill by ZunoSmartLabs
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/zunosmartlabs-domain-modeling
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, design, writing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/domain-modeling
What's inside
- Skill name
domain-modeling- Description
- The home for domain-doc reasoning — the CONTEXT.md Ubiquitous Language format, the ADR format, and the Domain-Driven Design book-rules. Use when capturing or sharpening a project's domain language, deciding whether a decision deserves an ADR, classifying subdomains, naming bounded-context relationships, or writing/structuring CONTEXT.md or docs/adr/. Composed by grill-with-docs and improve-codebase-architecture.
- License
- MIT
- Instructions
- 187 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- files: referenced but missing: scripts/sync_book_rules.py
Files (3)
- ADR-FORMAT.md
- CONTEXT-FORMAT.md
- SKILL.md
SKILL.md (first lines)
# Domain Modeling The single home for how this repo captures domain reasoning in docs: the `CONTEXT.md` Ubiquitous Language, the ADR format, and the Domain-Driven Design rules that inform both. Other skills — `grill-with-docs`, `improve-codebase-architecture` — compose this skill instead of carrying their own copies, so the formats and the reasoning stay in one place. This is **model-invoked**: it activates when domain language, subdomain classification, bounded-context relationships, or ADR/CONTEXT writing is in play. It doesn't run a session of its own — it supplies the formats and the rules the user-invoked skills apply. ## The two domain documents ### `CONTEXT.md` — the Ubiquitous Language `CONTEXT.md` is the Bounded Context's canonical glossary: the terms that carry specific meaning inside this part of the system, written so devs and domain experts speak one language. It follows the Bounded Context / Ubiquitous Language discipline from *Domain-Driven Design Distilled* (bundled below). The full structure, the writing rules (be opinionated, flag conflicts, keep definitions tight, only domain-specific terms), the single- vs multi-context layout (`CONTEXT-MAP.md`), and the nine context-relationship types (Partnership, Shared Kernel, Customer/Supplier, Conformist, Anticorruption Layer, Open Host Service, Published Language, Separate Ways, contained Big Ball of Mud) live in [CONTEXT-FORMAT.md](CONTEXT-FORMAT.md). ### ADRs — recording load-bearing decisions ADRs live in `docs/adr/` with sequential numbering (`0001-slug.md`). An ADR can be a single paragraph — its value is recording *that* a decision was made and *why*. Offer one only when the decision is **hard to reverse**, **surprising without context**, and **the result of a real trade-off**. The template, the optional sections, the numbering rule, and the full "what qualifies" list (architectural shape, subdomain classification, integration patterns, aggregate boundaries, lock-in tech choices, scope decisions, deliberate deviations, hidden constraints, non-obvious rejected alternatives) live in [ADR-FORMAT.md](ADR-FORMAT.md). ## Why these live together Subdomain classification and bounded-context relationships are recorded *in* ADRs but reasoned about *with* the DDD rules and named *with* the Ubiquitous Language — so the CONTEXT format, the ADR format, and the DDD book-rules belong in one skill. Re-keying `scripts/sync_book_rules.py` to embed the two DDD rule sets here (below) means the rules follow the reasoning into every consumer. <!-- BEGIN bundled-book-rules --> ## Bundled book rules Do not hand-edit content between the `BEGIN`/`END` markers — `scripts/sync_book_rules.py` overwrites it from `vendor/agent-rules-books/`. ### Rules from "Domain-Driven Design Distilled" by Vaughn Vernon <!-- BEGIN domain-driven-design-distilled.mini.md v0.5 --> # OBEY Domain-Driven Design Distilled by Vaughn Vernon ## When to use Use when business software has enough domain complexity, language ambiguity, strategic differentiation, or integration risk that modeling changes implementation decisions, but the project still needs the smallest effective DDD practice rather than ceremony. ## Primary bias to correct Use DDD selectively, but seriously. Start from business capability, subdomain importance, bounded context, and local language before tactical patterns, frameworks, persistence, APIs, or class shapes. ## Decision rules - Before designing code, identify the business capability, classify the subdomain as Core, Supporting, or Generic, define the Bounded Context, use its Ubiquitous Language, and choose only tactical patterns that earn their cost. - Put the most modeling effort into the Core Domain. Keep Supporting and Generic Subdomains simpler unless their own complexity proves otherwise. - Do not apply full tactical DDD to simple CRUD, generic subsystems, or mainly technical problems; strengthen the model only when invariants, lifecycle, language complexity, or integration risk justify it. - Give every meaningful model one explicit Bounded Context. The context owns its language, rules, semantics, code structure, tests, and integration contracts. - Treat the same word in different contexts as potentially different concepts. Translate at context boundaries instead of sharing domain classes or leaking foreign language into the local model. - Choose context relationships deliberately: Partnership, Shared Kernel, Customer/Supplier, Conformist, Anticorruption Layer, Open Host Service, Published Language, Separate Ways, or Big Ball of Mud containment all imply different ownership and translation duties. - Select integration style from business coupling and failure semantics: RPC requires acceptable request/response coupling; REST resources must not expose Aggregate internals; messaging must tolerate lag, duplicates, and ordering limits. - Keep integration contracts separate from internal models and test translations wherever meanings cross a boundary. - Use local domain terms in code, tests, Commands, Domain Events, APIs, and conversations. One concept gets one term, one term does not carry multiple meanings inside a context, and code is renamed when understanding improves. - Use Entities when identity and lifecycle matter; make identity explicit and protect meaningful state transitions rather than exposing unrestricted setters. - Use immutable, self-validating Value Objects when primitives hide domain meaning. - Use Aggregates only as invariant and transactional consistency boundaries. Keep them small, modify through the root, reference other Aggregates by identity, avoid large object graphs, and usually change one Aggregate per transaction. - Use Domain Events for meaningful past-tense business facts that clarify collaboration or integration; do not publish noisy field-change events. - Application Services coordinate use cases by loading Aggregates, invoking domain behavior, saving results, and triggering integration work. They must not become the real domain model. - Keep frameworks, persistence mechanics, transport formats, REST representations, and infrastructure types out of the domain model. Translate external data at the boundary and persist Aggregates without letting storage define the model. - Prefer code that teaches the model: make domain assumptions explicit in names, tests, and events; expose richer concepts instead of hiding meaning behind flags, status codes, booleans, enums, helpers, or utilities. - Use Event Storming, scenarios, acceptance tests, modeling spikes, and domain-expert walkthroughs when workflow, terminology, policies, or acceptance criteria are unclear. Timebox modeling and track modeling debt instead of drifting into detached analysis. - Estimate and plan DDD work from modeling uncertainty, integration risk, implementation cost, team skill, and access to domain experts, not only from feature count. ## Trigger rules - When language is fuzzy, generic, overloaded, or imported from another context, pause coding and sharpen the local Ubiquitous Language. - When the core concern drifts, terms stop matching code, or supporting complexity hides the core, reassess subdomains, boundaries, and modeling investment. - When one model spreads across billing, identity, catalog, fulfillment, support, permissions, or other separate concerns, split or translate instead of reusing shared domain classes. - When an upstream model, schema, UI, framework, API payload, transport object, or database shape starts defining the domain model, restore boundary translation. - When using Shared Kernel, require small stable overlap, joint ownership, and tests; without governance, choose another relationship. - When calling something an Anticorruption Layer, verify that real translation exists. - When a request wants to load and mutate a large graph or several Aggregate roots, revisit the invariant boundary and ask whether eventual consistency is acceptable. - When controllers, helpers, services, or transport-shaped application services contain business decisions, move behavior into the domain model or name the missing concept. - When a Domain Event is command-like, vague, trivial, or emitted for every field change, redesign it as a specific business fact or remove it. - When a concept is represented as a primitive, flag, status code, enum, or boolean but carries domain rules, promote it to a richer concept or Value Object. - When delivery pressure tempts the team to skip design, use a short modeling spike, scenario, or acceptance test and record known modeling debt. ## Final checklist - Correct subdomain and Core Domain investment? - Explicit Bounded Context and relationship to neighboring contexts? - Ubiquitous Language visible in code, tests, Commands, Events, APIs, and conversations? - Translation tested where external or foreign meanings cross boundaries? - Tactical patterns used only where they clarify meaning or protect invariants? - Aggregates small, root-protected, identity-referenced, and not graph-shaped? - Application Services coordinating rather than owning business logic? - Infrastructure, persistence, REST, and transport details kept out of the domain model? - Modeling discoveries, acceptance tests, expert input, and modeling debt captured before shipping? <!-- END domain-driven-design-distilled.mini.md -->
From ZunoSmartLabs/zsl-superpowers, MIT.
More from ZunoSmartLabs/zsl-superpowers
- 0.563score
setup-zsl-superpowers
ZunoSmartLabs
Sets up an `## Agent skills` block in AGENTS.md/CLAUDE.md and `docs/agents/` so the engineering skills know this repo's issue tracker (GitHub, local markdown…
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
codebase-design
ZunoSmartLabs
Shared vocabulary and refinements for reasoning about module depth, interfaces, seams, and adapters — the deep-module design language.
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
commit
ZunoSmartLabs
Plan and create git commits autonomously for changes made in this session (no per-commit approval prompt).
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
commit-push-pr
ZunoSmartLabs
Commit session changes, push the branch, and open a PR — in one shot.
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
decision-mapping
ZunoSmartLabs
Turn a loose, multi-session idea into a sequenced map of the decisions and tickets it implies, so it matures before becoming a PRD.
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
git-branch
ZunoSmartLabs
Create a git branch with the prefix convention (`feature/`, `fix/`, `chore/`, `refactor/`, `env/`) required by GitHub auto-PR workflows.
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
human-itl
ZunoSmartLabs
Walk a human through the manual-action [HITL] sub-tasks of a parent (PRD) issue — the steps a coding agent physically cannot perform — recording each as an…
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
ask-zsl
ZunoSmartLabs
Interactive router that helps you find the right ZSL skill for what you're doing right now, without leaving your work.
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
teach-me-the-codebase
ZunoSmartLabs
On-the-fly conversational tutor that teaches you an unfamiliar repo's domain, architecture, and conventions interactively — reading the canonical docs and…
SkillBFreshness: B★ 2Claude Code +9 - 0.553score
tdd-parallel
ZunoSmartLabs
Full-auto PRD pipeline.
SkillBFreshness: B★ 2Claude Code +9 - 0.553score
code-review
ZunoSmartLabs
Comprehensive pre-PR code review of the current branch with an issues-only tone and an approval gate before applying fixes.
SkillBFreshness: B★ 2Claude Code +9 - 0.533score
diagnose
ZunoSmartLabs
Disciplined diagnosis loop for hard bugs and performance regressions.
SkillBFreshness: B★ 2Claude Code +9
Signals
- Stars
- 2
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Jun 19, 2026 (4 months ago)
- Last release
- Sep 18, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/ZunoSmartLabs/zsl-superpowers
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from ZunoSmartLabs
- 0.563score
setup-zsl-superpowers
ZunoSmartLabs
Sets up an `## Agent skills` block in AGENTS.md/CLAUDE.md and `docs/agents/` so the engineering skills know this repo's issue tracker (GitHub, local markdown…
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
codebase-design
ZunoSmartLabs
Shared vocabulary and refinements for reasoning about module depth, interfaces, seams, and adapters — the deep-module design language.
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
commit
ZunoSmartLabs
Plan and create git commits autonomously for changes made in this session (no per-commit approval prompt).
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
commit-push-pr
ZunoSmartLabs
Commit session changes, push the branch, and open a PR — in one shot.
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
decision-mapping
ZunoSmartLabs
Turn a loose, multi-session idea into a sequenced map of the decisions and tickets it implies, so it matures before becoming a PRD.
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
ask-zsl
ZunoSmartLabs
Interactive router that helps you find the right ZSL skill for what you're doing right now, without leaving your work.
SkillBFreshness: B★ 2Claude Code +9
Cite this page
domain-modeling skill. Agent Mart. https://agentmart.dev/skills/zunosmartlabs-domain-modeling (last updated 2026-10-24)