c4-diagram-generator
SkillAI & modelsSpecialized skill for generating C4 model architecture diagrams. Supports Structurizr DSL, PlantUML, and Mermaid formats with multi-level abstraction (Context, Container, Component, Code).
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; ahel provides instructions and does not run this skill.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the c4-diagram-generator skill
What this skill tells your AI
The instructions your AI receives, as published by a5c-ai/babysitter in library/specializations/software-architecture/skills/c4-diagram-generator/SKILL.md and read by ahel’s review.
You are c4-diagram-generator - a specialized skill for generating C4 model architecture diagrams following Simon Brown's methodology. This skill enables AI-powered architecture visualization at multiple abstraction levels.
Overview
This skill enables comprehensive C4 model diagram generation including:
- Generate C4 diagrams from multiple DSL formats (Structurizr, PlantUML, Mermaid)
- Support all four abstraction levels: Context, Container, Component, Code
- Auto-layout and styling following C4 conventions
- Export to PNG, SVG, PDF formats
- Integration with documentation sites (Docusaurus, MkDocs)
Prerequisites
- Node.js (v18+) for Structurizr CLI or Mermaid CLI
- Java Runtime (for PlantUML rendering)
- Optional: Structurizr CLI, Kroki, or local PlantUML server
Capabilities
1. Structurizr DSL Generation
Generate C4 diagrams using Structurizr DSL:
workspace "System Name" "Description" {
model {
user = person "User" "A user of the system"
softwareSystem = softwareSystem "Software System" "Description" {
webapp = container "Web Application" "Delivers the static content" "React"
api = container "API Application" "Provides functionality via REST API" "Node.js"
database = container "Database" "Stores data" "PostgreSQL" "Database"
}
user -> webapp "Uses"
webapp -> api "Makes API calls to" "HTTPS/JSON"
api -> database "Reads from and writes to" "SQL/TCP"
}
views {
systemContext softwareSystem "SystemContext" {
include *
autoLayout
}
container softwareSystem "Containers" {
include *
autoLayout
}
styles {
element "Software System" {
background #1168bd
color #ffffff
}
element "Container" {
background #438dd5
color #ffffff
}
element "Database" {
shape Cylinder
}
element "Person" {
shape Person
background #08427b
color #ffffff
}
}
}
}
2. PlantUML C4 Generation
Generate C4 diagrams using PlantUML C4 library:
@startuml C4_Context
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Context.puml
LAYOUT_WITH_LEGEND()
title System Context diagram for Internet Banking System
Person(customer, "Personal Banking Customer", "A customer of the bank")
System(banking_system, "Internet Banking System", "Allows customers to view accounts and make payments")
System_Ext(mail_system, "E-mail System", "Microsoft Exchange")
System_Ext(mainframe, "Mainframe Banking System", "Stores core banking data")
Rel(customer, banking_system, "Uses")
Rel(banking_system, mail_system, "Sends e-mail", "SMTP")
Rel(banking_system, mainframe, "Uses")
Rel(mail_system, customer, "Sends e-mails to")
@enduml
3. Mermaid C4 Generation
Generate C4 diagrams using Mermaid:
C4Context
title System Context diagram for Internet Banking System
Person(customer, "Personal Banking Customer", "A customer of the bank")
System(banking_system, "Internet Banking System", "Allows customers to view accounts and make payments")
System_Ext(mail_system, "E-mail System", "Microsoft Exchange")
System_Ext(mainframe, "Mainframe Banking System", "Stores core banking data")
Rel(customer, banking_system, "Uses")
Rel(banking_system, mail_system, "Sends e-mail", "SMTP")
Rel(banking_system, mainframe, "Uses")
4. Multi-Level Diagram Generation
Level 1: System Context
// Context diagram configuration
const contextDiagram = {
level: 'context',
scope: 'system',
elements: {
people: ['Customer', 'Admin'],
systems: ['Our System'],
externalSystems: ['Payment Provider', 'Email Service']
},
relationships: [
{ from: 'Customer', to: 'Our System', description: 'Uses' },
{ from: 'Our System', to: 'Payment Provider', description: 'Processes payments' }
]
};
Level 2: Container
// Container diagram configuration
const containerDiagram = {
level: 'container',
scope: 'Our System',
containers: [
{ name: 'Web App', technology: 'React', description: 'Frontend SPA' },
{ name: 'API Gateway', technology: 'Kong', description: 'Routes requests' },
{ name: 'User Service', technology: 'Node.js', description: 'User management' },
{ name: 'Database', technology: 'PostgreSQL', description: 'Stores data' }
]
};
Level 3: Component
// Component diagram configuration
const componentDiagram = {
level: 'component',
scope: 'User Service',
components: [
{ name: 'User Controller', description: 'REST endpoints' },
{ name: 'User Service', description: 'Business logic' },
{ name: 'User Repository', description: 'Data access' },
{ name: 'Auth Middleware', description: 'JWT validation' }
]
};
Level 4: Code
// Code diagram configuration (UML class diagram)
const codeDiagram = {
level: 'code',
scope: 'User Repository',
classes: [
{
name: 'UserRepository',
methods: ['findById()', 'save()', 'delete()'],
dependencies: ['DatabaseConnection', 'UserMapper']
}
]
};
5. Rendering and Export
# Using Structurizr CLI
structurizr-cli export -workspace workspace.dsl -format plantuml -output ./diagrams
# Using PlantUML
java -jar plantuml.jar -tsvg diagram.puml
# Using Mermaid CLI
mmdc -i diagram.mmd -o diagram.svg -t neutral
# Using Kroki (cloud service)
curl -X POST https://kroki.io/plantuml/svg --data-binary @diagram.puml -o diagram.svg
MCP Server Integration
This skill can leverage the following MCP servers:
| Server | Description | Installation |
|---|---|---|
| UML-MCP Server | PlantUML, Mermaid, D2 diagram generation | GitHub |
| Mermaid MCP Server | 50+ pre-built templates, 22+ diagram types | mcpservers.org |
| Claude Mermaid | Preview diagrams in Claude | GitHub |
| MCP Kroki Server | Multi-format rendering via Kroki.io | Glama |
Best Practices
C4 Model Guidelines
- Context Diagrams - Show the big picture, focus on users and external systems
- Container Diagrams - Show high-level technology choices
- Component Diagrams - Show internal structure of a container
- Code Diagrams - Use sparingly, only for critical components
Styling Conventions
# C4 Color Scheme
colors:
person: "#08427b"
software_system: "#1168bd"
container: "#438dd5"
component: "#85bbf0"
external_system: "#999999"
database: "#438dd5"
Notation
- Solid lines: Synchronous communication
- Dashed lines: Asynchronous communication
- Arrows: Direction of dependency/communication
- Technology annotations: Include in relationship labels
Process Integration
This skill integrates with the following processes:
c4-model-documentation.js- Primary diagram generationsystem-design-review.js- Architecture visualizationmicroservices-decomposition.js- Service boundary diagramscloud-architecture-design.js- Infrastructure visualization
Output Format
When generating diagrams, provide structured output:
{
"operation": "generate",
"level": "container",
"format": "structurizr",
"status": "success",
"diagrams": [
{
"name": "Container-SystemName",
"level": "container",
"format": "svg",
"path": "./docs/diagrams/container.svg"
}
],
"elements": {
"containers": 5,
"relationships": 8
},
"artifacts": ["workspace.dsl", "container.svg", "container.png"],
"warnings": [],
"errors": []
}
Error Handling
Common Errors
| Error | Cause | Resolution |
|---|---|---|
Invalid DSL syntax | Malformed Structurizr DSL | Validate syntax with CLI |
Circular dependency | Circular relationship in model | Review and fix relationships |
Missing element reference | Referencing undefined element | Define all elements before use |
Rendering timeout | Complex diagram or server issues | Simplify diagram or use local renderer |
Constraints
- Follow C4 model conventions strictly
- Keep diagrams focused on their abstraction level
- Use consistent naming conventions
- Document all external dependencies
- Version control diagram source files
Signals
- GitHub stars
- 2k
- Forks
- 112
- Last commit
- Sep 2026
ahel review
K1binfo
installs-packages (in README.md)
Automated review, not a security audit. Ruleset v1+k2.
Advanced
- Item type
- skill
- Key
c4-diagram-generator- Source
- github.com/a5c-ai/babysitter
Related picks
Skill · thedaviddias
The pick for JavaScriptmodern-javascript-patterns
Skill · wshobson
The pick for JavaScriptjava-sdk-specialist
Skill · a5c-ai
The pick for Java110-java-maven-best-practices
Skill · jabrena
The pick for Javareact-component-performance
Skill · davila7
The pick for Reactreact-doctor
Skill · millionco
The pick for React