Apply when writing stateful logic, or when code branches a lot or repeats a shape assumption across files. Encode the domain in a structure instead of scattered conditionals.
Collected from public GitHub. Every version is saved exactly as it was and never changes. Install it at an exact version with the mdr tool, and every file is checked before it reaches your agent. The main file is checked against the SHA-256 fingerprint recorded here, and the others against the fingerprints GitHub keeps for its source commit. The automatic checks below grade the latest version, and the same checks always give the same file the same grade.
What the file says
# Model the Domain
Encode the real domain in a data structure instead of scattering it across conditionals.
**Why:** Scattered booleans, repeated shape assumptions, and branching spread across files are accidental complexity. A structure that matches the domain makes invalid states unrepresentable and deletes branches. Choosing it at write time is cheap; recovering it later reads as a refactor and gets deferred.
**Reach for structures like these:**
- A state machine instead of scattered booleans, phases, or lifecycle checks.
- A typed object/model instead of loose parameters or repeated shape assumptions.
- A map, registry, lookup table, or discriminated union instead of branching spread across files.
- A reducer or command/event model instead of ad hoc state mutations.
- A module organized around one body of domain knowledge instead of a sequence such as load, validate, transform, and save. Execution order is not ownership.
- A small module boundary that gathers repeated behavior, ownership, or invariants.
- A queue, cache, index, graph/tree, or normalized collection where the data access pattern calls for it.
…
The line at the top of this page pins the label git:20260827.04830a9, which is what most people want. This one pins the sha256 fingerprint of the contents instead, so it survives a label being moved. Either way the exact version is written to mdr.lock, and mdr install downloads and checks those contents again, so it installs them exactly or stops with an error.
GET https://markdownregistry.com/api/v1/artifacts/art_zwtwavkssrdr2gpl
GET https://markdownregistry.com/api/v1/resolve?ref=painhardcore/pstack/principle-model-the-domain
GET https://markdownregistry.com/api/v1/blob/5c3c1a3db2af1452a742b4c3d50ef34118e0ea2cf90c6042749abe2abc31a0e0
Your AI assistant does the legwork. You hear about the deals worth your word. Hand yours the standing instructions at modelranch.com and it joins the network that reads files like this one.
painhardcore/pstack · .opencode/skills/architect/SKILL.md · Sketch types, signatures, and module structure before code, then stay in the loop while implementation fills in. Use…
painhardcore/pstack · .opencode/skills/arena/SKILL.md · Spawn N parallel candidates at the same task, pick a base, graft the strongest parts of the losers into it. Use for…
painhardcore/pstack · .opencode/skills/blast-radius/SKILL.md · Find what a change could break somewhere else before it ships, beyond the diff, and prove the one fact it's safe…
painhardcore/pstack · .opencode/skills/create-verification-skill/SKILL.md · Generate a project-local verification skill that drives your app the way a user does — any language, framework, or…
painhardcore/pstack · .opencode/skills/figure-it-out/SKILL.md · Design an auditable playbook when no narrower one fits: a large migration, an ambitious multi-part change, or work a…
painhardcore/pstack · .opencode/skills/how/SKILL.md · Explain how a subsystem works, trace a runtime flow, or determine where code and ownership belong before making a…
painhardcore/pstack · .opencode/skills/interrogate/SKILL.md · Use for "interrogate", "adversarial review", "multi-model review", "challenge this", "stress test this code", "find…
painhardcore/pstack · .opencode/skills/principle-boundary-discipline/SKILL.md · Apply when wiring validation, error handling, or framework adapters. Concentrate guards at system boundaries (CLI…
cursor/plugins · harness/pstack/claude-code/skills/principle-model-the-domain/SKILL.md · Apply when writing stateful logic, or when code branches a lot or repeats a shape assumption across files.
cursor/plugins · pstack/skills/principle-model-the-domain/SKILL.md · Apply when writing stateful logic, or when code branches a lot or repeats a shape assumption across files.
michael-denyer/pstack-claude · plugins/pstack/skills/principle-model-the-domain/SKILL.md · Apply when writing stateful logic, or when code branches a lot or repeats a shape assumption across files.
backnotprop/pstack · skills/principle-model-the-domain/SKILL.md · Apply when writing stateful logic, or when code branches a lot or repeats a shape assumption across files.
j-star-films-studios/vibecode-protocol-suite · assets/.agent/skills/engineering-principles/model-the-domain/SKILL.md · Apply when writing stateful logic, or when code branches a lot or repeats a shape assumption across files. Encode the…
creedants/pstack-t3 · skills/principle-model-the-domain/SKILL.md · Apply when writing stateful logic, or when code branches a lot or repeats a shape assumption across files.
arjitj2/open-pstack · plugins/pstack/skills/principle-model-the-domain/SKILL.md · Apply when writing stateful logic, or when code branches a lot or repeats a shape assumption across files.
shiwenbin1617/pstack · skills/principle-model-the-domain/SKILL.md · Apply when writing stateful logic, or when code branches a lot or repeats a shape assumption across files. Encode the…