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 agentmods add skills/plazmodium/odin-workflow/domain-driven-designnpx skills add Plazmodium/odin-workflow --skill domain-driven-designgit clone --depth 1 https://github.com/Plazmodium/odin-workflowWrote 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/plazmodium/odin-workflow/domain-driven-design)<a href="https://agentmods.dev/skills/plazmodium/odin-workflow/domain-driven-design"><img src="https://agentmods.dev/badge/skills/plazmodium/odin-workflow/domain-driven-design.svg" alt="Measured on agentmods" 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 | $0.00018 | $0.00981 |
| Opus 5 | $0.00009 | $0.00491 |
| Sonnet 5 | $0.00004 | $0.00196 |
| Haiku 4.5 | $0.00002 | $0.00098 |
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 4d 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 — 130 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Domain-Driven Design (DDD)
Overview
DDD is a software design approach that models complex business domains through a shared ubiquitous language, bounded contexts, and tactical patterns like aggregates and domain events.
Strategic Design
Bounded Contexts
┌─────────────────┐ ┌──────────────────┐ ┌───────────────┐
│ Identity & │ │ Ordering │ │ Shipping │
│ Access │ │ │ │ │
│ │ │ Order │ │ Shipment │
│ User │◄──►│ LineItem │◄──►│ Tracking │
│ Role │ │ Cart │ │ Address │
│ Permission │ │ Payment │ │ Carrier │
└─────────────────┘ └──────────────────┘ └───────────────┘
Context Map: Published Language / Anti-Corruption Layer
Each bounded context has its own:
- Ubiquitous language — "User" in Identity vs "Customer" in Ordering
- Models — same real-world concept, different representations
- Data store — ideally its own database/schema
Context Mapping
| Pattern | When to Use |
|---|---|
| Shared Kernel | Two teams co-own a small shared model |
| Customer-Supplier | Upstream provides what downstream needs |
| Anti-Corruption Layer | Translate between contexts to prevent leaking |
| Published Language | Well-defined API/events for integration |
Tactical Patterns
Aggregate
// Aggregate Root — consistency boundary
class Order {
private items: OrderItem[] = [];
private status: OrderStatus = 'draft';
addItem(product: ProductRef, quantity: number, price: Money): void {
if (this.status !== 'draft') throw new DomainError('Cannot modify submitted order');
const existing = this.items.find(i => i.productId === product.id);
if (existing) {
existing.increaseQuantity(quantity);
} else {
this.items.push(new OrderItem(product.id, quantity, price));
}
}
submit(): DomainEvent[] {
if (this.items.length === 0) throw new DomainError('Cannot submit empty order');
this.status = 'submitted';
return [new OrderSubmitted(this.id, this.total(), this.items.length)];
}
get total(): Money {
return this.items.reduce((sum, item) => sum.add(item.subtotal()), Money.zero());
}
}
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.
- 4d ago First seen · 130 lines · 18 tokens per session scan A 4c0b9de42559
domain-driven-design is a skill published in the GitHub repository Plazmodium/odin-workflow (0 stars, last pushed 3mo ago), licensed MIT. It adds 18 tokens to every session and 981 once invoked, about $0.0001 per session on Opus 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-01.
Other skills, from other repositories
csv-to-sif
Export a project's FF&E product-library CSV as dealer-system SIF. Use to produce a .sif schedule; use sif-to-csv for the reverse direction.
environmental-analysis
Research climate, sun, flood, seismic, soil, contamination, and topography for a site. Use for environmental site analysis or hazard questions tied to a location.
product-research
Find and compare current FF&E candidates from a design brief, with sourced purchasing facts and optional CSV-library save. Use to research or source products; not to match from an image or pair coordinating items.
site-history
Neighborhood context and history — adjacent uses, architectural character, landmarks, commercial activity, and planned development from an address. Use when the user asks about a site's history or surroundings, "what's around this site", neighborhood character, or nearby planned development.
nyc-landmarks
Check whether a NYC building is landmarked or in a historic district using LPC data. Use when the user asks "is this building landmarked", whether a site sits in a historic district, or whether LPC review applies. NYC only.
b123d-modeling
Use this skill when asked to model, build, or modify a 3D part or assembly with build123d — from a text description, a technical drawing (image or PDF), dimensions in a spec, or an existing STEP/STL file.