← ClaudeAtlas

domain-modelinglisted

Details the domain and application layer of an already-designed use case — aggregate, value objects, invariants, ports, and events — into the `10-dominio.md` partial. Use when the request involves modeling the domain, defining an aggregate or value object, designing a use case's ports, or detailing a spec already created by `use-case-design`. Piece of the `/new-feature` pipeline: requires `00-caso-de-uso.md` in the given folder and stops without it.
ice-lfernandes/claude-spring-architect · ★ 3 · AI & Automation · score 79
Install: claude install-skill ice-lfernandes/claude-spring-architect
## Available specs !`find "${CLAUDE_PROJECT_DIR:-.}/docs/use-cases" -mindepth 1 -maxdepth 1 -type d -name 'UC-*' 2>/dev/null | sort` Empty above → none yet, run `/use-case-design` first. (`find`, not an `ls` glob: under zsh an unmatched glob aborts the command before any fallback runs.) ## Target $ARGUMENTS --- # Domain Modeling Details the **interior** of a use case: what the mother spec named, this skill gives shape to. Signatures, types, invariants, and where each lives. **Entry rule: without a mother spec, there's nothing to detail.** This skill reads `docs/use-cases/UC-NNN-<slug>/00-caso-de-uso.md` and treats it as a contract. Without that file, it stops and tells you to run `/use-case-design` — modeling a domain from a loose request reinvents the boundary the mother spec exists to fix. **Exit rule: it doesn't write code.** It emits `10-dominio.md`. The Java classes come from the executor agent, which reads the partial and the `templates/` exemplars. ## How it's invoked Two paths, and both matter: `/domain-modeling` by hand, or chained by `/new-feature` once that orchestrator exists. That's why it does **not** carry `disable-model-invocation` — that field hides the skill from the model, and a skill the model can't see is a skill the orchestrator can't call. The guard against out-of-order firing isn't the frontmatter: it's the **entry rule** above. Without the previous partial, the skill stops and says what needs to run first. Recorded in `@.claude/decisions/0