The plugin for coding agents: Claude Code, Codex, GitHub Copilot
The ddd-ts-kit repository is the marketplace of the plugin for the three agents:
| Agent | Install | A skill is called |
|---|---|---|
| Claude Code | /plugin marketplace add gbourgeat/ddd-ts-kit, then /plugin install ddd-ts-kit@ddd-ts-kit |
/ddd-ts-kit:start |
| Codex | codex plugin marketplace add gbourgeat/ddd-ts-kit, then install ddd-ts-kit from /plugins and trust its hooks in /hooks |
$start |
| Copilot CLI | copilot plugin marketplace add gbourgeat/ddd-ts-kit, then copilot plugin install ddd-ts-kit@ddd-ts-kit |
by its name, start |
| Copilot cloud agent, VS Code | declared by the .github/copilot/settings.json that init writes: the cloud agent installs it, VS Code recommends it |
by its name, start |
Twenty-two skills, in the order a project meets them:
| Skill | Use |
|---|---|
start |
conduct a project from a statement of needs to working contexts (run by the user) |
discover-domain |
a light event storming in writing |
bounded-contexts |
find the contexts and classify them core, supporting or generic |
glossary |
the ubiquitous language of a context and its CONTEXT.md, before any code |
context-map |
upstream, downstream and relationship pattern for each pair of contexts |
bootstrap |
choose the stack and create the project (run by the user) |
plan-slices |
the work as vertical slices per context, ordered, with their generator commands |
parallel-work |
split the slices between several agents or people without collision |
scaffold |
one file of any role, from a template |
use-case |
one feature end to end, test first |
integration-event |
make two contexts collaborate through a versioned event |
wiring |
ports as abstract classes, declarations, the composition root, fakes in tests |
persistence |
repositories, unit of work, outbox, read models, migrations, whatever the ORM |
access-control |
authentication, permissions per use case, the explicit actor, policies |
cross-cutting |
logging, metrics, tracing, error reporting, audit trail, resilience and caching from outside |
testing |
fakes instead of mocks, builders, given / when / then, end to end |
clean-code |
naming, function order, comments, testability |
document |
OpenAPI contract and its typed clients, event catalog, AsyncAPI, generated lists, decision records |
extract-service |
keep each context ready to run as its own service, and extract it |
deviation |
what to do when asked to go around a rule |
quality-gate |
run the checks at the right scope and fix at the root cause |
commit-discipline |
one slice per commit, generated files with what generated them |
Four agents: domain-explorer (read-only answers about what exists and where),
context-builder (builds the slices of one context in its own worktree),
domain-test-writer (turns it.todo entries into specs) and architecture-reviewer
(read-only review of a diff, a branch or a context).
The hook is the part that makes the rest binding. In a project that has a
ddd-ts-kit.config.json it reminds the workflow and the context map at session start, says
when the installed packages are not the version the skills describe, refuses
a hand-written file where a generator exists and any edit of a generated contract, asks the
project owner before a suppression, a skipped test or a change of the rules is written, checks
every written file and returns the violations with their fix, and refuses to finish while
architecture errors remain. It reminds, without blocking, when the uncommitted changes exceed
the advised size of a commit, and in a worker's worktree (.ddd-ts-kit/worker.json) it
refuses a write outside the worker's context. It fails open: a broken guard never blocks work. Set
"guard": "advise" in the config to be asked instead of refused, "off" to silence it.
Each agent gets what its host runs. The skills work in all three. The four agents are sub-agents
of Claude Code; Codex loads no agent from a plugin, and one session per worktree takes the place
of context-builder. The hook runs wherever the host runs the hooks of a plugin: it reads the
patches of Codex and the tool calls of Copilot as well as those of Claude Code. Codex cannot put
a question to the user, so what Claude Code asks the project owner is said to the user there,
and left to the checks of the pipeline.
Without any plugin, a project still guides every agent: init writes AGENTS.md, the guide
Codex, Copilot and most agents read (CLAUDE.md imports it), the rules by layer for Claude Code
in .claude/rules/ and the same rules for Copilot in .github/instructions/, scoped by
applyTo, and, with the GitHub pipeline, copilot-setup-steps.yml, which installs the project
before the Copilot cloud agent starts. npm run verify and the pipeline hold every agent to
the same rules.