I went down a pretty similar pathway that you have, born out of frustration in April when Claude was producing terrible results/code during all the regressions they had, to the point it was ignoring specific project rules in CLAUDE.md :/
I have settled on these:
User agents (/Users/x/.claude/agents)
domain-cartographer · claude-opus-4-6
go-tactical-modeler · claude-opus-4-6
python-tactical-modeler · claude-opus-4-6
reviewer-refactorer · inherit
strategic-architect · claude-opus-4-6
tactical-modeler · inherit
test-steward · inherit
uat-api-tester · sonnet · project memory
My hypothesis was that the LLM was trained with these books (or maybe not) but there is a lot of noise around DDD / architecture, and a lot of what the LLM was trained on via the internet is probably bad interpretations at best. So build the agent files to direct the LLM on the original authoritative source material. Then I found that distilling some specific books into Go and Python variants has helped a lot to force the LLM to use specific language conventions.
Interestingly:
- when running code reviews the original
tactical-modeler built on just DDD knowledge finds more then the language specific versions.
- I run 3 agents post task Implementation for reviews (test-steward, reviewer-refactorer, strategic-architect) and usually find ~10 things to fix up.
I feel like the learnings in the pragmatic programmer are next - I am constantly telling these agents (and the LLM) there is no tomorrow, there is no future where all your defered issues are fixed, we do not walk past broken windows and build up tech debt, the time to fix everything is now.
DDD Agents — Usage Guide
A set of six agents that together cover Domain-Driven Design end to end. Each agent owns one kind of thinking, not one phase of work. They are deliberately split so strategic decisions cannot be crowded out by tactical ones, and tests cannot be written to match the code instead of the language.
The agents
| Agent |
Mode of thinking |
Model |
Touches code? |
| Domain Cartographer |
Problem space — language, subdomains, glossary |
claude-opus-4-6 |
Reads only |
| Strategic Architect |
Solution space — boundaries, relationships, contracts, distillation |
claude-opus-4-6 |
Reads only |
| Tactical Modeler |
Implementation in any language — aggregates, VOs, use cases |
inherited |
Writes |
| Go Tactical Modeler |
Same as above, Go-specific idioms |
claude-opus-4-6 |
Writes |
| Test Steward |
All four test layers; UL test naming |
inherited |
Writes tests |
| Reviewer / Refactorer |
Independent review; anti-patterns; refactors |
inherited |
Blocks / refactors |
All agents share _shared-operator-protocol.md as their constitution for when and how to escalate to the human operator.
...snip...
I went down a pretty similar pathway that you have, born out of frustration in April when Claude was producing terrible results/code during all the regressions they had, to the point it was ignoring specific project rules in CLAUDE.md :/
I have settled on these:
My hypothesis was that the LLM was trained with these books (or maybe not) but there is a lot of noise around DDD / architecture, and a lot of what the LLM was trained on via the internet is probably bad interpretations at best. So build the agent files to direct the LLM on the original authoritative source material. Then I found that distilling some specific books into Go and Python variants has helped a lot to force the LLM to use specific language conventions.
Interestingly:
tactical-modelerbuilt on just DDD knowledge finds more then the language specific versions.I feel like the learnings in the pragmatic programmer are next - I am constantly telling these agents (and the LLM) there is no tomorrow, there is no future where all your defered issues are fixed, we do not walk past broken windows and build up tech debt, the time to fix everything is now.
DDD Agents — Usage Guide
A set of six agents that together cover Domain-Driven Design end to end. Each agent owns one kind of thinking, not one phase of work. They are deliberately split so strategic decisions cannot be crowded out by tactical ones, and tests cannot be written to match the code instead of the language.
The agents
claude-opus-4-6claude-opus-4-6claude-opus-4-6All agents share
_shared-operator-protocol.mdas their constitution for when and how to escalate to the human operator....snip...