c4-diagram-generator
Specialized skill for generating C4 model architecture diagrams. Supports Structurizr DSL, PlantUML, and Mermaid formats with multi-level abstraction (Context, Container, Component, Code).
Best use case
c4-diagram-generator is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Specialized skill for generating C4 model architecture diagrams. Supports Structurizr DSL, PlantUML, and Mermaid formats with multi-level abstraction (Context, Container, Component, Code).
Teams using c4-diagram-generator should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/c4-diagram-generator/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How c4-diagram-generator Compares
| Feature / Agent | c4-diagram-generator | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Specialized skill for generating C4 model architecture diagrams. Supports Structurizr DSL, PlantUML, and Mermaid formats with multi-level abstraction (Context, Container, Component, Code).
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# c4-diagram-generator
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:
```structurizr
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:
```plantuml
@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:
```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
```javascript
// 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
```javascript
// 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
```javascript
// 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
```javascript
// 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
```bash
# 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](https://github.com/antoinebou12/uml-mcp) |
| Mermaid MCP Server | 50+ pre-built templates, 22+ diagram types | [mcpservers.org](https://mcpservers.org/servers/narasimhaponnada/mermaid-mcp.git) |
| Claude Mermaid | Preview diagrams in Claude | [GitHub](https://github.com/veelenga/claude-mermaid) |
| MCP Kroki Server | Multi-format rendering via Kroki.io | [Glama](https://glama.ai/mcp/servers/@tkoba1974/mcp-kroki) |
## Best Practices
### C4 Model Guidelines
1. **Context Diagrams** - Show the big picture, focus on users and external systems
2. **Container Diagrams** - Show high-level technology choices
3. **Component Diagrams** - Show internal structure of a container
4. **Code Diagrams** - Use sparingly, only for critical components
### Styling Conventions
```yaml
# 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 generation
- `system-design-review.js` - Architecture visualization
- `microservices-decomposition.js` - Service boundary diagrams
- `cloud-architecture-design.js` - Infrastructure visualization
## Output Format
When generating diagrams, provide structured output:
```json
{
"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 filesRelated Skills
user-flow-diagram
Generate user flow diagrams and flowcharts using Mermaid and other formats
color-palette-generator
Generate accessible color palettes with WCAG compliance
diagram-generation
Multi-format diagram generation from text descriptions. Create Mermaid, PlantUML, D2, and Graphviz diagrams including flowcharts, sequence diagrams, architecture diagrams (C4), and data models.
tracing-schema-generator
Generate distributed tracing schemas for OpenTelemetry with Jaeger/Zipkin integration
metrics-schema-generator
Generate metrics schemas for Prometheus, OpenTelemetry, and Grafana dashboards
log-schema-generator
Generate structured logging schemas with correlation ID patterns and ELK/Splunk integration
load-test-generator
Generate load test scripts for k6, Locust, and Gatling from OpenAPI specs
graphql-schema-generator
Generate GraphQL schemas from data models with resolver stubs and federation support
docs-site-generator
Generate documentation sites using Docusaurus, MkDocs, or VuePress
dependency-graph-generator
Generate module dependency graphs with circular dependency detection and coupling metrics
dashboard-generator
Generate monitoring dashboards for Grafana and DataDog with alert integration
adr-generator
Specialized skill for generating and managing Architecture Decision Records (ADRs). Supports Nygard, MADR, and custom templates with auto-numbering, linking, and status management.