Point an agent at a PRD and it starts writing code — inventing boundaries, contracts, and data stores one file at a time. architecture makes it decide the shape first — service boundaries, interface contracts, NFR budgets as real numbers, a threat model, and the ADRs that record why — at the Shape stage between product and the build skills, precisely enough that frontend, backend, data, and ai build the right thing in parallel without re-deriving it.
runs onClaude CodeCodexCursorAntigravityopencodeGrok BuildHermes
system-design.mdsurface-agentic.md
2 of 14 loaded · read fully
Route before acting. Pick one job and at most one surface, read only those references — never the whole library. An LLM/agent system always adds its overlay, because it changes topology, the eval gate, and the security model.
The router is the skill. There is no fixed pipeline to run start-to-finish — each job stands alone and enters where your question is. The animation traces one path; the sections below map the whole surface it routes across.
architecture owns the Shape stage — the consequential, hard-to-reverse decisions between product (what to build and why) and the build skills (the production code): service boundaries, public API shape, data-store and consistency choice, the auth model, SLO targets. It hands those decisions down as a contract, a budget, a threat model, and a durable record — and recommends the build skills by name rather than silently doing their work.
the decision, contract, budget & threat model
contribute to; own none
Own the shape, not the implementation behind it. When compatible upstream artifacts are supplied — a PRD, a product handoff, an existing ADR log — architecture uses them without silently overriding decisions already made.
SKILL.md is a router, not a script. Requirements are gated first; then every request selects the smallest sufficient route: one primary job — the eight below — combined with at most one surface overlay that reshapes boundaries, contracts, and budgets for the system type. Read the selected references completely; load two or three at most, never the whole pack. Eight jobs and five surfaces compose into 8 × 5 = 40 routes — from a single-ADR two-file read to a full architecture pass — without ever reading all fourteen references at once.
| facet | options | rule |
|---|---|---|
| ① Primary job | system design · decomposition · contracts · data · NFR budgets · security · migration · ADR & governance | Exactly one. Pick the single job the request needs; the default entry is system design. |
| ② Surface overlay | web / SaaS · mobile · agentic · data-intensive · internal platform | At most one. It reshapes boundaries, contracts, and budgets for the system type — agentic always added when a model acts. |
Each job is one reference, read fully only when its route is selected — grounded in named canon, producing a checkable artifact. This is the whole surface, not a headline slice.
| I need to… | Read | Grounded in | Produces |
|---|---|---|---|
| Design / architect the system, or review a design for gaps | system-design.md |
C4 model · arc42 · 4+1 views · back-of-envelope numbers | Requirements gate, leveled C4/arc42 design, trade-offs, capacity math |
| Break this up · "should this be a microservice" · fix coupling | decomposition.md |
DDD bounded contexts · Khononov coupling · monolith-first (Fowler) · Team Topologies | Bounded contexts, monolith/modular/micro call with a named disintegrator |
| Design the API · define the contract · version / deprecate | contracts.md |
OpenAPI · AsyncAPI · REST / gRPC / GraphQL trade-offs · versioning | Contract skeleton, versioning + deprecation plan, review checklist |
| Design data flow · choose consistency · CQRS / ES · identifiers | data-architecture.md |
CAP / PACELC · DDIA concept map · CQRS / ES · outbox · microservices.io | Consistency decision per flow, CQRS/ES score, store selection |
| Set perf / SLO / scaling / cost targets · Well-Architected review | nfr-budgets.md |
Well-Architected pillars · Google SRE error budget · numeric budgets | Perf-budget table, SLO + error budget, scaling triggers, WA self-audit |
| Threat-model · decide the auth / authz model · tenant isolation | security-architecture.md |
STRIDE · Threat Modeling Manifesto · zero-trust · OWASP | STRIDE register, auth/authz decision, zero-trust posture, data-classification |
| Migrate / replatform · extract a service · deprecate an API | migration.md |
Strangler Fig (Fowler) · AWS 7 Rs · extraction order · comparison-read cutover | 7 Rs / Strangler pick, extraction order, cutover gate, deprecation timeline |
| Write an ADR · record / govern a decision · detect drift | adr-and-governance.md |
Nygard / MADR ADR · Y-Statement · fitness functions (Ford / Parsons / Kua) | ADR (right-weight), lifecycle/immutability rule, drift detection, fitness functions |
Full router table & invariants: SKILL.md.
One overlay, at most, reshapes the job for the system type — the same contract job is bounded differently for a multi-tenant SaaS than for a data platform. Agentic is the first-class differentiator, expanded below.
Generic system design is well-covered; agentic-system architecture is the open frontier. When a model acts under uncertainty, the architecture questions change: reliability is empirical, the topology is a decision, context is a finite budget, and the eval set is what gates release. The reference carries the 2026 primary material — thin-model / thick-harness, multi-agent economics, agent memory tiers, agent security — that the textbooks don't yet.
# the model is thin; the harness is where the reliability lives topology: workflow # workflow | single-agent | multi-agent context: finite budget # compaction + JIT retrieval, not a dump memory: [episodic, semantic, procedural] retrieval: RAG + reranker # topology is an architecture choice eval_gate: 40-case set # blocks release on regression hitl: approve on irreversible action security: [prompt-injection, tool-scope, exfil]
Six rules govern every route, whichever references it loads — the behavioral spine, condensed.
Architecture's deliverables are decisions made durable. A full pass emits up to five downstream artifacts — plus the DDD canvases and arc42 skeleton where the job calls for them. Each records the decision and options, the trade-off accepted, facts/decisions/assumptions distinguished, and the reversibility lens on any hard-to-reverse call. Fillable templates ship in the pack.
arc42-shaped: documents decisions and contracts, not implementation — survives a framework change.
The interfaces frontend and backend build to in parallel — versioned, with a deprecation plan.
Perf, scale, reliability, and cost as numbers — SLO targets, error budgets, scaling triggers.
The durable decision log — cite, don't re-litigate. MADR / Nygard / Y-Statement variants.
A STRIDE table with a self-audit count — backend implements, quality independently verifies.
Boundary and aggregate canvases (ddd-crew) and the arc42 skeleton, where the job calls for them.
When downstream build work is expected, architecture emits a compact handoff.yaml
beside the human artifacts — a routing index into the solution doc, contracts, budgets, ADRs,
and threat model, never a copy of them. Standalone by default; the companion appears only in pipeline
mode, when a consumer will actually read it.
skill: architecture status: complete objective: "" # only required field artifacts_created: [contracts, nfr-budgets, adrs, threat-model] decisions: · assumptions: · constraints: risks: [R-01, R-04] # pointers, by id validation: performed / remaining recommended_next: frontend · backend · data · ai · quality
The API/event contracts, NFR budgets that gate technical choices, and the ADRs — enough to build behind the interface in parallel, without re-deriving the shape.
Store & consistency decisions, the threat-model register to implement and independently verify, and the eval thresholds an agentic system must clear.
Seam discipline. The human artifacts are the real deliverables; if a consumer needs more than the index gives, the artifact itself is incomplete — the yaml never grows to compensate. Every downstream skill tolerates every field but objective being absent.
Install once. It's a plain SKILL.md router — no flags, no config, no scripts — so it
activates on natural-language phrasing ("design the system", "should this be a microservice", "write
an ADR", "threat-model this") rather than a fixed command.
The same install runs on any Agent Skills
host. Codex installs to ${CODEX_HOME:-$HOME/.codex}/skills and triggers with
$architecture; agents remains a separate cross-agent installation target.
| host | install target | command |
|---|---|---|
| Claude Code | ~/.claude/skills | ./install.sh claude |
| Codex | ${CODEX_HOME:-$HOME/.codex}/skills | ./install.sh codex |
| Cross-agent path | ~/.agents/skills | ./install.sh agents |
| Cursor CLI | ~/.cursor/skills | ./install.sh cursor |
| Antigravity (IDE + agy) | ~/.gemini/…/skills | ./install.sh antigravity |
| opencode | ~/.config/opencode/skills | ./install.sh opencode |
| Grok Build | ~/.grok/skills | ./install.sh grok |
| Hermes | ~/.hermes/skills | ./install.sh hermes |
Prefer npx skills add gabros20/architecture-skill -g -y when you have Node — it maps supported clients itself.
More docs: docs/installation.md · docs/usage.md · docs/recipes.md.