Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add clubpay/ronykit --skill domain-driven-designgit clone --depth 1 https://github.com/clubpay/ronykitWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/clubpay/ronykit/domain-driven-design)<a href="https://agentmods.dev/skills/clubpay/ronykit/domain-driven-design"><img src="https://agentmods.dev/badge/skills/clubpay/ronykit/domain-driven-design/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/clubpay/ronykit/domain-driven-design"><img src="https://agentmods.dev/badge/skills/clubpay/ronykit/domain-driven-design.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00122 | $0.04171 |
| Opus 5.5 | $0.00049 | $0.01668 |
| Sonnet 5.5 | $0.00024 | $0.00834 |
| Haiku 4.5 | $0.00012 | $0.00417 |
Grade A, and why
domain-driven-design scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 23d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 243 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Domain-Driven Design Framework
Framework for tackling software complexity by modeling code around the business domain. The greatest risk in software is not technical failure -- it is building a model that does not reflect how the business actually works.
When to use
- Writing the SRS glossary (§1.3) or the SDD domain design (§4) for a new feature.
- Deciding whether a capability is a new feature module or belongs in an existing one.
- Designing
internal/domainentities, value objects, enums, and errors. - A handler, app method, or SQL query enforces a rule the domain type should own (anemic model).
- Calling another service or a third-party API and its model starts leaking into yours.
RonyKit mapping (scaffolded apps)
| DDD concept | RonyKit home | Rule |
|---|---|---|
| Bounded context | One feature module (feature/<name>, package <name>mod) |
Own contract, settings, schema, and ubiquitous language. Split modules by model boundary, not by table or team size. |
| Ubiquitous language | SRS glossary → SDD → Go identifiers, contract names, SQL names | A term in the SRS appears verbatim in internal/domain and the API contract. |
| Entity / aggregate root | internal/domain struct with guarded methods |
Invariant-backing fields unexported; constructors return (T, error). |
| Value object | internal/domain type with validating constructor |
Immutable, compared by value (Money, Email, type-safe enum structs). |
| Repository | internal/repo/port.go (interface) + internal/repo/v0 (sqlc) |
Methods speak the domain (ListOverdueInvoices), return domain types — never sqlc rows. One interface per aggregate / domain concept. |
| Application service | internal/app |
Orchestrates aggregates and ports; never re-implements invariants. |
| Domain errors | internal/domain/errors.go via rony/errs |
Named after business outcomes (ErrInsufficientFunds). |
| Anti-corruption layer | Generated stub (di.StubProvider) wrapped by an app-side port |
Translate the other service's DTOs into your domain types at the boundary. |
| Open host / published language | Rony contract + make gen-stub + x/apidoc |
Your contract is the published language; version it deliberately. |
| Domain events / long processes | flow workflows (characteristics/workflow) |
Cross-aggregate or cross-service processes; never import the Temporal SDK directly. |
What ships with it
6 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 23d ago First seen · 243 lines · 122 tokens per session scan A a1c4db560091
domain-driven-design is a skill published in the GitHub repository clubpay/ronykit (38 stars, last pushed today), licensed BSD-3-Clause. It adds 122 tokens to every session and 4,171 once invoked, about $0.0005 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-26.
Other skills, from other repositories
procedure
Vovk.ts procedures in depth (base already has a complete endpoint, validation, errors and status codes) — atomic unit of server-side logic in Vovk project. Use whenever user asks to build ANYTHING producing or consuming data on server — page loading data ("users page", "dashboard", "product list"), endpoint, API…
tools
Building LLM tools with Vovk.ts — deriveTools() (procedures → tools) returning a StandardToolV0[] array, standalone tools via the standard-tool package, @operation.tool({ name, title, description, hidden, meta }) decorator, x-tool metadata, ToModelOutput formatters (DEFAULT, MCP, RAW), the merged inputSchema, the meta…
rpc
Vovk.ts RPC client — how vovk generate turns controllers into type-safe client modules, composed vs segmented clients, call shape (apiRoot, params, body, query, meta, init, disableClientValidation, validateOnClient, interpretAs, transform, fetcher), customizing generation via outputConfig.imports.fetcher +…
base
Vovk.ts essentials — ALWAYS load first for any Vovk.ts task, including building a back end or API in a project that has vovk.config. or .vovk-schema/. Holds what a typical build needs, checked against vovk 4's code - project layout, a complete endpoint, how requests, validation and errors behave, status codes, a…
decorators
Vovk.ts decorators — built-in (@prefix, @operation, @get/@post/@put/@patch/@del, .auto()) and custom via createDecorator. Covers authorization / auth decorators, middleware-style wrapping (pre-handler + post-handler logic), req.vovk.meta() for cross-decorator state, stacking order, and the local (.fn()) vs HTTP…
jsonlines
Vovk.ts JSON Lines streaming — generator handlers (function, async function), the iteration validation option, validateEachIteration, the JSONLinesResponder manual API, progressive responses via progressive(), consuming streams from the RPC client (async iteration, using, asPromise, onIterate, abortController), and…