Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
josiahsiegel avatar

C4 Model

  • 60 installs
  • 50 repo stars
  • Updated June 18, 2026
  • josiahsiegel/claude-plugin-marketplace

c4-model turns architect-confirmed elements into a canonical Simon Brown C4 model in LikeC4 DSL - one Context view, one Container view, optional Deployment - and refuses every non-canonical LikeC4 feature outright.

About

Generates a strictly canonical Simon Brown C4 model in LikeC4 DSL: one Context view, one Container view, optional Deployment, scaffolded across model.c4, views.c4, and likec4.config.js. Ships in the doc-master plugin beside the ADR skills - an 8-phase workflow takes architect-confirmed elements, runs an 11-item canonical-C4 lint, applies changes only after per-hunk diff approval, and flags name drift between ADRs and the model. Refuses component views, dynamic views, and custom kinds or styles outright.

  • Locked specification block: 4 element kinds and 5 relationship kinds - uses, reads, writes, publishes, consumes
  • Refuses 7 non-canonical LikeC4 features, from component views to nested systems, with verbatim refusal scripts
  • 11-item canonical-C4 lint prints PASS or FAIL before any file is written
  • Per-hunk diff approval, then npx likec4 validate; validation failures are surfaced, never auto-fixed
  • Phase 8 drift check compares component names in ADR directories against the LikeC4 model

C4 Model by the numbers

  • 60 all-time installs (skills.sh)
  • +4 installs in the week ending Aug 2, 2026 (Skillselion tracking)
  • Ranked #755 of 1,879 Documentation skills by installs in the Skillselion catalog
  • Data as of Aug 3, 2026 (Skillselion catalog sync)
npx skills add https://github.com/josiahsiegel/claude-plugin-marketplace --skill c4-model

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs60
repo stars50
Last updatedJune 18, 2026
Repositoryjosiahsiegel/claude-plugin-marketplace

What it does

Turn ADR-confirmed elements into canonical C4 Context and Container diagrams in LikeC4, with one system per .c4 file, a description on every relationship, and npx likec4 validate as the gate.

Who is it for?

Teams documenting system architecture alongside ADRs who want C4 diagrams that stay recognizably canonical instead of drifting into custom LikeC4 notation.

Skip if: Component-level or code-level diagrams, sequence and runtime flows, custom-styled or multi-system diagrams - the skill refuses these by design; use LikeC4 directly or a separate sequence diagram tool.

When should I use this skill?

Say 'add a C4 diagram', 'create a context diagram', 'container view', 'LikeC4 model', 'draw the architecture', or 'diagram this decision' while working on ADRs.

What you get

A model.c4, system-scoped .c4, views.c4, and likec4.config.js set that passes an 11-item canonical-C4 lint and npx likec4 validate, with ADR name drift reported instead of silently diverging.

  • model.c4 containing the locked specification block plus the model
  • A .c4 file scoped to the single system in focus
  • views.c4 with one Context view and one Container view (optionally one Deployment view)

By the numbers

  • 8-phase workflow from intake to ADR drift check
  • 11-item canonical-C4 lint checklist
  • 7 refused LikeC4 features in the SKILL.md refusal table

Files

SKILL.mdMarkdownGitHub ↗

c4-model

Produces a canonical-C4 LikeC4 model — Context and Container views by default, Deployment optional. Refuses every LikeC4 feature that would push the diagram beyond Simon Brown's canonical C4. The canonical-C4 features used here are stable across LikeC4 versions; re-validate with npx likec4 validate to confirm against your installed version.

What this skill makes

  • A model.c4 file containing the specification + the model
  • A <system>.c4 file scoped to the single system in focus
  • A views.c4 file with one Context view and one Container view (optionally one Deployment view)
  • A likec4.config.js file

What this skill refuses

Refused thingWhyArchitect alternative
Component views"Component views belong at a deeper level than ADRs work at."Use a code-level diagram tool (e.g., Mermaid in source) — outside C4.
Dynamic viewsSequence/runtime flows are not canonical C4.Use a sequence diagram tool separately.
Custom element kindsCanonical C4 has Person / Software System / Container — period.Use container and put the type in the technology attribute.
Custom relationship kindsCanonical relationships: uses, reads, writes, publishes, consumes.Pick the closest canonical kind.
Custom stylesDiagram should look recognizably C4.If styling matters more than canonicality, use LikeC4 directly outside this skill.
Nested systemsC4 has Context and Container; nesting systems-in-systems muddies the levels.Split into separate models.
Multiple systems in focusOne system per .c4 file is canonical.Make separate models for each, link via externalSystem.

The refusals are the point. An architect who wants full LikeC4 freedom should not use this skill.

Vocabulary

  • Actor — a Person in C4 terms (a human role). Render outside the system boundary.
  • External system — a system the team does not own. Render outside the system boundary.
  • System — the one bounded product in focus. Exactly one per file.
  • Container — a runnable/deployable unit inside the system in focus. Not a code class.
  • Relationship — directed edge with a one-line description; the description is required.

Hard rules

1. Every relationship has a one-line description. No description → no edge. 2. Element names match what the architect confirmed in discovery. Don't translate, abbreviate, or pluralize. 3. No invented styling unless the architect explicitly requests it. 4. Exactly one `system` definition per `.c4` file.

Locked specification block

Use this specification block verbatim. Do not edit, extend, or rename.

specification {
  element actor {
    style {
      shape person
    }
  }
  element externalSystem {
    style {
      color secondary
    }
  }
  element system
  element container

  relationship uses
  relationship reads
  relationship writes
  relationship publishes
  relationship consumes

  tag open-question {
    style {
      color red
      border dashed
    }
  }
}

Open-question convention

For elements or relationships that exist but have unresolved details:

  • Add the tag #open-question
  • Prefix the description with OPEN Q<N>: matching the entry number in docs/architecture/open-questions.md
  • The style renders red + dashed — visually obvious

Example:

container payments-service "Payments Service" "OPEN Q7: tech stack unconfirmed" {
  #open-question
}

The eight phases

Phase 1 — Intake

If docs/architecture/discovery-brief.md exists with CONFIRMED elements, use it directly — do not re-ask. Otherwise walk the architect through each element one at a time (one question per turn, same discipline as adr-discovery).

Phase 2 — Locate or scaffold

Glob **/*.c4 and **/likec4.config.*. Two cases:

  • Files exist: read them. Identify the system in focus. Add to the existing model if the architect confirms scope.
  • No files: scaffold model.c4, <system>.c4, views.c4, likec4.config.js at the architect's chosen path (default likec4/ at the repo root).

Phase 3 — Generate DSL

Three blocks in model.c4:

1. Specification — verbatim from the locked block above. 2. Model — actors and external systems at top level; containers nested inside the system block. See references/likec4-dsl-cheatsheet.md. 3. Views — in views.c4: one context view (the system + its actors + external systems), one container view (containers inside the system), optionally one deployment view.

Phase 4 — Canonical-C4 lint

Before validation, run the 11-item checklist:

#Check
1Exactly one system definition.
2All containers nested inside that one system.
3All actors at top level (not inside the system).
4All external systems at top level.
5Every relationship has a non-empty description.
6No relationship kinds outside the canonical five.
7No element kinds beyond actor, externalSystem, system, container.
8No nested systems.
9No views beyond context, container, deployment.
10Specification block matches the locked block verbatim.
11No #open-question tagged element lacks a OPEN Q<N>: description prefix.

Print PASS or FAIL with a numbered list of violations. Do not proceed on FAIL.

Phase 5 — Show diff, not apply

Render the proposed file changes as a diff, hunk by hunk. Per-hunk approval. Do not write files until the architect approves.

Phase 6 — Validate syntax

Run npx likec4 validate. If validation fails, surface the error to the architect — do not auto-fix.

Phase 7 — Render guidance

Tell the architect how to view the diagram. Do not start a server uninvited.

To view: npx likec4 start    # interactive browser at http://localhost:5173
To serve: npx likec4 serve   # static export

Phase 8 — Drift check

Glob ADR directories (docs/adr/, docs/decisions/, docs/architecture/decisions/, **/adr/*.md; also check legacy architecture/decisions/). For each ADR, compare component names mentioned in the text against names in the LikeC4 model. Report name mismatches as drift candidates — let the architect choose which side is canonical. Do not auto-rename either side.

DSL notes

For complex DSL questions (scoped views, extend, deployment specs), consult references/likec4-dsl-cheatsheet.md. For features that fall outside canonical C4, refer the architect to the upstream LikeC4 documentation rather than implementing them in this skill.

References

  • references/likec4-dsl-cheatsheet.md — minimal cheat-sheet of canonical-C4 LikeC4 DSL
  • references/canonical-c4-refusals.md — verbatim refusal scripts for the disallowed features
  • The adr-discovery skill — upstream source of confirmed elements and relationships
  • The adr-critique skill — downstream consumer for drift detection against ADRs

Related skills

How it compares

Deliberately narrower than raw LikeC4: it locks the specification block and refuses dynamic views, component views, and custom styling; developers who want full LikeC4 freedom should use LikeC4 directly.

FAQ

Why does c4-model refuse component views?

Component views belong at a deeper level than ADRs work at. The skill limits itself to Context and Container views plus an optional Deployment view, and points you to code-level tools such as Mermaid in source for module diagrams.

Can I add custom element or relationship kinds?

No. The specification block is locked to actor, externalSystem, system, and container plus five relationship kinds (uses, reads, writes, publishes, consumes). Put specifics like 'queue' or 'lambda' in the container's technology attribute instead.

Does it write files automatically?

No. Phase 5 renders proposed changes as a per-hunk diff and waits for approval, and if npx likec4 validate fails the error is surfaced to the architect rather than auto-fixed.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.