thomascothran/pavlov/pavlov-domain-modeling
Claude Code and agent skill by thomascothran/pavlov
- community
Checking that the SKILL.md file is still in the repository.
Facilitate iterative domain modeling with Pavlov bthreads. Use only when requested
Install
npx vskill@latest install thomascothran/pavlov/pavlov-domain-modelingSKILL.md
Pavlov domain modeling
Use this skill to guide a domain expert through a structured modeling session and emit the bthread scaffolding as Clojure files. The outcome will be the domain model captured in Clojure source code and written using the pavlov library.
Guidelines
ALWAYS evaluate clojure source code to verify your understanding.
This will be primarily done with the model checker, but secondarily, you can use:
- tech.thomascothran.pavlov.graph
- tech.thomascothran.pavlov.nav
- tech.thomascothran.pavlov.search
DO NOT JUST READ CODE AND SAY WHAT YOU THINK IT DOES, EXECUTE AND VERIFY IT AT THE REPL
Modeling rules
- Keep the following things in separate namespaces:
- Business rules and processes
- Side-effecting bthreads, such as database interactions or HTTP calls
- Keep the bthreads that perform side effects separate from the bthreads that simulate those side effects.
- Safety property bthreads
- Safety properties can also live in other bthreads (including production bthreads) when that keeps the invariant close to the relevant behavior.
- Progress requirements
- To assert that a bthread must progress, a bthread can return a
:hotbid. - Test code
- Model event vocabulary as data when helpful: an event registry namespace or EDN value may hold event kind, payload schema, evidence IDs, confidence, status, and legacy/source names.
- Use Malli schemas for payload shape when available and useful.
- Do not introduce local event-constructor helpers when the project already has one.
- Model business rules as linear scenarios with
b/scenariowhere possible. - Avoid branching inside a scenario bthread. Prefer multiple scenario bthreads per feature.
- Use
:blockto add constraints without rewriting an existing scenario. - In test scenarios, use namespaced completion events.
- Model checks are not like traditional unit tests that test one scenario. They test a whole slice of the program, or even a whole feature.
- Prefer fewer model-check tests, ideally one per feature.
- Pass a set of
:possibleevent types to ensure the model checker verifies that event is possible. - This should be used with the concluding, namespaced, unique event that ends every test scenario, and can be asserted quite broadly of almost all event types.
Choose references
- Use
references/business-scenarios.mdwhen writing the main scenario namespace for a feature. - Use
references/safety-and-policy-bthreads.mdwhen adding safety invariants or additive blocking rules. - Use
references/state-and-environment-bthreads.mdwhen modeling external systems, user actions, or stateful test doubles. - Use
references/check-clj-template.mdwhen assembling the model checker config - Use
references/viz-template.mdwhen building a navigation or graph visualization namespace.
Related guidance
- Use the model-checking guidance, refer to the
pavlov-model-checkingskill and the docstring for - The
tech.thomascothran.pavlov.model.checknamespace, and - The
tech.thomascothran.pavlov.model.check/checkfunction
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingmodules/pavlov-skills/skills/pavlov-domain-modeling/SKILL.md
Popularity
- Repository stars
- 45
- Repository forks
- 1
- 7-day trend score
- 19
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 20 Mar 2026, 7 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/thomascothran/pavlov/pavlov-domain-modeling)