Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when describing, planning, or drawing architecture diagrams for a software system: structure them as C4 zoom levels (System Context, then Container, then Component) with every box labeled name + element type + technology + one-line responsibility, and every arrow labeled with its purpose and protocol. Do NOT use for UML class or sequence diagrams, database ER diagrams, network topology maps, or picking a diagram rendering tool.
.claude/skills/c4-architecture-levels/SKILL.md| Model | Eval pass | Runs |
|---|---|---|
| gemini-3.6-flash | 100% | 11 |
| gemini-3.1-pro-previewlowest | 0% | 1 |
| Model | Lift | Δ tokens | Δ turns | Cases | Verified |
|---|---|---|---|---|---|
| gemini-3.6-flashbest | +23% | +40% | 0% | 22 | 54d ago |
| gemini-3.5-flash | pending re-run | — | |||
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-10 | ✗→✓ | ▲ Improved | — | — |
| case-18 | ✗→✓ | ▲ Improved | — | — |
| case-02 | ✗→✓ | ▲ Improved | — | — |
| case-08 | ✗→✓ | ▲ Improved | — | — |
| case-03 | ✗→✓ | ▲ Improved | — | — |
Enforces the C4 model's zoom-level discipline on every architecture diagram you produce or describe: separate System Context / Container / Component views matched to the audience, typed and technology-tagged boxes with one-line responsibilities, and purpose+protocol labels on every relationship. Apply when the task is architecture diagrams or an architecture overview; not for UML behavior diagrams, data models, or diagram-tool selection.
Level 3 Component, Level 4 Code. Zooming happens by switching diagrams — never by cramming roles, services, and classes into one picture.
surrounded only by the people who use it and the external systems it touches. No technology choices appear at this level.
deployable units inside the system, each with its technology.
few genuinely complex components.
single-page app, a mobile app, a database, a message bus, a scheduled job runner, a serverless function: each is a container whether or not anything is containerized.
[Person],[Software System], [Container: <technology>], [Component: <technology>]); the technology where applicable; and a one-line description of its responsibility. A name-only box is incomplete at every level.
source, verb phrase, target, then the technology in brackets — e.g. "Submits transfer batches to [SFTP]". A bare line fails; so does a label that is only a protocol with no purpose.
actor in full detail.
Mixed-zoom default → a proper Level 1. BEFORE (one picture, name-only boxes, bare arrows): Admin -> Web -> API -> DB -> AWS, with a PayrollCalculator class floating beside the services.
AFTER — System Context (the whole system is one box):
[Person] Payroll Administrator
Runs the monthly pay cycle and approves corrections.
[Software System] Payroll System
Computes salaries, withholds tax, issues payslips.
[Software System — external] BankGate
The bank's transfer-execution platform.
Payroll Administrator -> Payroll System : Approves pay runs using [HTTPS]
Payroll System -> BankGate : Submits transfer batches to [SFTP]AFTER — Container (zooming INTO the Payroll System box, one level down):
[Container: React] Admin Web
Single-page UI for pay-run review and approval.
[Container: Spring Boot] Payroll API
Pay-cycle orchestration, tax rules, payslip generation.
[Container: PostgreSQL] Payroll Store
Employee records, pay runs, audit trail.
Admin Web -> Payroll API : Calls [JSON/HTTPS]
Payroll API -> Payroll Store : Reads/writes [JDBC]
Payroll API -> BankGate : Submits transfer batches to [SFTP]Bare arrow → labeled relationship (ride-hailing):
BEFORE Driver App -> Backend
AFTER Driver App -> Trip API : Streams location updates to [gRPC]Audience mix-up → level pick. Asked by a steering committee for "the architecture", the default dumps the whole microservice mesh. Conforming: the committee sees the System Context view; the engineers see the Container view; a team deep-diving one service gets that container's Component view.
diagrams until someone needs the Component view of that specific service.
technology tag and a responsibility line like everything else.
optional landscape view can sit above Level 1, but it stays type-labeled like any other view.
per level, and the type/technology/description live in the node text.
name + [type: technology] + responsibility. Don't ship name-only boxes.[protocol]. Don't leave bare arrows or protocol-only labels.Web, API, DB with no element type, technology, or responsibility line.[element type: technology], one-line responsibility.[protocol].| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-04 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +23 percentage points is the difference between those two pass rates over the 22 comparable cases.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.5-flash | verified | 7/10/2026 | +73% |
Other measured skills in the registry, with their headline benchmark lift.