dotnet-mermaid-diagrams
Mermaid diagram reference for .NET projects: architecture diagrams (C4-style context, container, component views,
layered architecture, microservice topology), sequence diagrams (API request flows, async/await patterns, middleware
pipeline, authentication flows), class diagrams (domain models, DI registration graphs, inheritance hierarchies,
interface implementations), deployment diagrams (container deployment, Kubernetes pod layout, CI/CD pipeline flow), ER
diagrams (EF Core model relationships, database schema visualization), state diagrams (workflow states, order
processing, saga patterns, state machine patterns), and flowcharts (decision trees, framework selection, architecture
choices). Includes diagram-as-code conventions for naming, grouping, GitHub rendering, and dark mode considerations.
Version assumptions: Mermaid v10+ (supported by GitHub, Starlight, Docusaurus natively). GitHub renders Mermaid in
Markdown files, issues, PRs, and discussions. .NET 8.0+ baseline for code examples.
For complete diagram examples, see examples.md in this skill directory.
Scope
- Architecture diagrams (C4-style, layered, microservice topology)
- Sequence diagrams (API flows, async/await, middleware pipeline)
- Class diagrams (domain models, DI graphs, inheritance)
- Deployment diagrams (containers, Kubernetes, CI/CD flow)
- ER diagrams (EF Core models, database schema)
- Diagram-as-code conventions (naming, grouping, dark mode)
Out of scope
- Documentation platform configuration for Mermaid rendering -- see [skill:dotnet-documentation-strategy]
- GitHub-native doc structure and README patterns -- see [skill:dotnet-github-docs]
- CI/CD pipeline deployment of doc sites -- see [skill:dotnet-gha-deploy]
Cross-references: [skill:dotnet-documentation-strategy] for Mermaid rendering setup across doc platforms,
[skill:dotnet-github-docs] for embedding diagrams in GitHub-native docs, [skill:dotnet-gha-deploy] for doc site
deployment.
Supported Diagram Types
Architecture Diagrams
- C4-Style Context -- system in its environment with external actors (10-12 nodes max)
- C4-Style Container -- high-level technology choices and interactions (15-20 nodes max)
- C4-Style Component -- internal structure of a single service (15-20 nodes max)
- Layered Architecture -- Presentation, Application, Domain, Infrastructure layers
- Microservice Topology -- services, messaging, observability connections
Sequence Diagrams
- API Request Flow -- HTTP request through middleware, auth, controller, service, database
- Async/Await Pattern -- thread pool behavior, cache miss/hit, await points
- Middleware Pipeline -- request/response flow through ASP.NET Core middleware chain
- Authentication Flow -- OAuth 2.0/OIDC with BFF pattern
Class Diagrams
- Domain Model -- entities, value objects, enumerations, relationships
- DI Registration Graph -- singleton/scoped/transient lifetime visualization
- Interface Implementation Hierarchy -- generic repository pattern with inheritance
Deployment Diagrams
- Container Deployment -- Docker host with app, database, cache, reverse proxy
- Kubernetes Pod Layout -- cluster, namespace, deployments, services, config
- CI/CD Pipeline Flow -- build, test, package, deploy stages
ER Diagrams
- EF Core Relationship Visualization -- one-to-many, one-to-one, many-to-many with entity details
- Database Schema with Indexes -- audit logs, soft delete, multi-tenant patterns
State Diagrams
- Order Processing Workflow -- draft through delivery with payment states
- Saga Pattern -- distributed transaction with compensation steps
- State Machine Pattern -- MassTransit-style event-driven state transitions
Flowcharts
- Framework Selection Decision Tree -- web vs desktop, API vs UI, framework choices
- Architecture Decision Flowchart -- monolith vs microservices, communication patterns
Diagram-as-Code Conventions
Naming Conventions
- Use PascalCase for node IDs:
OrderService, CustomerDB
- Use descriptive labels with technology:
API["Order API<br/>(ASP.NET Core)"]
- Use consistent abbreviations: DB (database), API (endpoint), SVC (service), MQ (message queue)
- Prefix subgraphs with the layer or tier name:
subgraph DataTier["Data Tier"]
Grouping Patterns
- Group by architectural layer (Presentation, Application, Domain, Infrastructure)
- Group by deployment boundary (containers, pods, VMs)
- Group by team ownership in microservice diagrams
- Use subgraphs for visual grouping -- limit nesting to 2 levels for readability
GitHub Rendering Tips
- GitHub renders Mermaid in fenced code blocks with the
mermaid language identifier in Markdown files, issues, PRs,
and discussions
- Maximum recommended diagram size: ~50 nodes for readable rendering
- GitHub uses a light theme by default -- avoid light-colored fill that disappears on white backgrounds
- Diagrams auto-size to container width -- keep node labels concise (under 30 characters per line)
- Use
<br/> for line breaks within node labels (not \n)
- Test diagrams in GitHub before merging -- syntax errors render as raw text
Dark Mode Considerations
- Avoid hardcoded colors that fail in dark mode -- use Mermaid theme variables when possible
- Default Mermaid colors work in both light and dark themes on GitHub
- If using custom
style directives, test in both GitHub light and dark modes
- Prefer semantic
classDef styles over inline style for maintainability
- The
neutral theme (%%{init: {'theme': 'neutral'}}%%) provides the best cross-theme compatibility on GitHub
Diagram Size Guidelines
| Diagram Type |
Recommended Max Nodes |
Notes |
| C4 Context |
10-12 |
One system + external actors |
| C4 Container |
15-20 |
Internal containers + data stores |
| C4 Component |
15-20 |
Single service internals |
| Sequence |
8 participants |
More becomes unreadable |
| Class |
10-15 classes |
Split into multiple diagrams |
| ER |
10-12 entities |
Split by bounded context |
| State |
12-15 states |
Split complex workflows |
| Flowchart |
15-20 nodes |
Keep decision trees focused |
Agent Gotchas
Always use .NET-specific content in diagrams -- do not generate generic diagrams. Use real .NET types
(DbContext, IRepository, MediatR), real .NET tools (EF Core, MassTransit, YARP), and real .NET patterns (middleware
pipeline, DI registration).
Keep diagrams under 50 nodes -- larger diagrams render poorly on GitHub and doc sites. Split complex
architectures into multiple focused diagrams (context, container, component) rather than one monolithic diagram.
Use <br/> for line breaks in node labels, not \n -- Mermaid renders \n literally as text. Multi-line labels
require <br/> HTML tags.
Test Mermaid syntax before committing -- syntax errors cause GitHub to render raw text instead of a diagram. Use
the Mermaid Live Editor (https://mermaid.live) or a local preview tool to validate.
ER diagram relationship notation follows Mermaid syntax, not UML -- use ||--o{ for one-to-many, ||--|| for
one-to-one. Do not use UML multiplicity notation.
Use the neutral theme for GitHub compatibility -- %%{init: {'theme': 'neutral'}}%% provides the best
rendering in both light and dark modes.
Sequence diagram participant names cannot contain special characters -- use participant DB as "SQL Server"
alias syntax for names with spaces or special characters.
Nested generics (Task~List~T~~) may not render on all Mermaid versions -- the double ~~ at the end of nested
generic types requires Mermaid v10.3+. Test rendering in your target environment before committing complex generic
type diagrams.
Do not use Font Awesome icon syntax (fa:fa-user) in diagrams intended for GitHub -- GitHub's native Mermaid
renderer does not load Font Awesome CSS. Icons render as literal text. Use plain text labels instead.
Do not configure Mermaid rendering in doc platforms -- platform setup (Starlight remark plugin, Docusaurus theme,
DocFX template) belongs to [skill:dotnet-documentation-strategy]. This skill provides the diagram content only.
Code Navigation (Serena MCP)
Primary approach: Use Serena symbol operations for efficient code navigation:
- Find definitions:
serena_find_symbol instead of text search
- Understand structure:
serena_get_symbols_overview for file organization
- Track references:
serena_find_referencing_symbols for impact analysis
- Precise edits:
serena_replace_symbol_body for clean modifications
When to use Serena vs traditional tools:
- Use Serena: Navigation, refactoring, dependency analysis, precise edits
- Use Read/Grep: Reading full files, pattern matching, simple text operations
- Fallback: If Serena unavailable, traditional tools work fine
Example workflow:
# Instead of:
Read: src/Services/OrderService.cs
Grep: "public void ProcessOrder"
# Use:
serena_find_symbol: "OrderService/ProcessOrder"
serena_get_symbols_overview: "src/Services/OrderService.cs"
1---2name: dotnet-mermaid-diagrams-83description: Creates Mermaid diagrams for .NET. Architecture, sequence, class, deployment, ER, flowcharts.4---5# dotnet-mermaid-diagrams67Mermaid diagram reference for .NET projects: architecture diagrams (C4-style context, container, component views,8layered architecture, microservice topology), sequence diagrams (API request flows, async/await patterns, middleware9pipeline, authentication flows), class diagrams (domain models, DI registration graphs, inheritance hierarchies,10interface implementations), deployment diagrams (container deployment, Kubernetes pod layout, CI/CD pipeline flow), ER11diagrams (EF Core model relationships, database schema visualization), state diagrams (workflow states, order12processing, saga patterns, state machine patterns), and flowcharts (decision trees, framework selection, architecture13choices). Includes diagram-as-code conventions for naming, grouping, GitHub rendering, and dark mode considerations.1415**Version assumptions:** Mermaid v10+ (supported by GitHub, Starlight, Docusaurus natively). GitHub renders Mermaid in16Markdown files, issues, PRs, and discussions. .NET 8.0+ baseline for code examples.1718For complete diagram examples, see `examples.md` in this skill directory.1920## Scope2122- Architecture diagrams (C4-style, layered, microservice topology)23- Sequence diagrams (API flows, async/await, middleware pipeline)24- Class diagrams (domain models, DI graphs, inheritance)25- Deployment diagrams (containers, Kubernetes, CI/CD flow)26- ER diagrams (EF Core models, database schema)27- Diagram-as-code conventions (naming, grouping, dark mode)2829## Out of scope3031- Documentation platform configuration for Mermaid rendering -- see [skill:dotnet-documentation-strategy]32- GitHub-native doc structure and README patterns -- see [skill:dotnet-github-docs]33- CI/CD pipeline deployment of doc sites -- see [skill:dotnet-gha-deploy]3435Cross-references: [skill:dotnet-documentation-strategy] for Mermaid rendering setup across doc platforms,36[skill:dotnet-github-docs] for embedding diagrams in GitHub-native docs, [skill:dotnet-gha-deploy] for doc site37deployment.3839---4041## Supported Diagram Types4243### Architecture Diagrams4445- **C4-Style Context** -- system in its environment with external actors (10-12 nodes max)46- **C4-Style Container** -- high-level technology choices and interactions (15-20 nodes max)47- **C4-Style Component** -- internal structure of a single service (15-20 nodes max)48- **Layered Architecture** -- Presentation, Application, Domain, Infrastructure layers49- **Microservice Topology** -- services, messaging, observability connections5051### Sequence Diagrams5253- **API Request Flow** -- HTTP request through middleware, auth, controller, service, database54- **Async/Await Pattern** -- thread pool behavior, cache miss/hit, await points55- **Middleware Pipeline** -- request/response flow through ASP.NET Core middleware chain56- **Authentication Flow** -- OAuth 2.0/OIDC with BFF pattern5758### Class Diagrams5960- **Domain Model** -- entities, value objects, enumerations, relationships61- **DI Registration Graph** -- singleton/scoped/transient lifetime visualization62- **Interface Implementation Hierarchy** -- generic repository pattern with inheritance6364### Deployment Diagrams6566- **Container Deployment** -- Docker host with app, database, cache, reverse proxy67- **Kubernetes Pod Layout** -- cluster, namespace, deployments, services, config68- **CI/CD Pipeline Flow** -- build, test, package, deploy stages6970### ER Diagrams7172- **EF Core Relationship Visualization** -- one-to-many, one-to-one, many-to-many with entity details73- **Database Schema with Indexes** -- audit logs, soft delete, multi-tenant patterns7475### State Diagrams7677- **Order Processing Workflow** -- draft through delivery with payment states78- **Saga Pattern** -- distributed transaction with compensation steps79- **State Machine Pattern** -- MassTransit-style event-driven state transitions8081### Flowcharts8283- **Framework Selection Decision Tree** -- web vs desktop, API vs UI, framework choices84- **Architecture Decision Flowchart** -- monolith vs microservices, communication patterns8586---8788## Diagram-as-Code Conventions8990### Naming Conventions9192- Use PascalCase for node IDs: `OrderService`, `CustomerDB`93- Use descriptive labels with technology: `API["Order API<br/>(ASP.NET Core)"]`94- Use consistent abbreviations: DB (database), API (endpoint), SVC (service), MQ (message queue)95- Prefix subgraphs with the layer or tier name: `subgraph DataTier["Data Tier"]`9697### Grouping Patterns9899- Group by architectural layer (Presentation, Application, Domain, Infrastructure)100- Group by deployment boundary (containers, pods, VMs)101- Group by team ownership in microservice diagrams102- Use subgraphs for visual grouping -- limit nesting to 2 levels for readability103104### GitHub Rendering Tips105106- GitHub renders Mermaid in fenced code blocks with the `mermaid` language identifier in Markdown files, issues, PRs,107 and discussions108- Maximum recommended diagram size: ~50 nodes for readable rendering109- GitHub uses a light theme by default -- avoid light-colored fill that disappears on white backgrounds110- Diagrams auto-size to container width -- keep node labels concise (under 30 characters per line)111- Use `<br/>` for line breaks within node labels (not `\n`)112- Test diagrams in GitHub before merging -- syntax errors render as raw text113114### Dark Mode Considerations115116- Avoid hardcoded colors that fail in dark mode -- use Mermaid theme variables when possible117- Default Mermaid colors work in both light and dark themes on GitHub118- If using custom `style` directives, test in both GitHub light and dark modes119- Prefer semantic `classDef` styles over inline `style` for maintainability120- The `neutral` theme (`%%{init: {'theme': 'neutral'}}%%`) provides the best cross-theme compatibility on GitHub121122### Diagram Size Guidelines123124| Diagram Type | Recommended Max Nodes | Notes |125| ------------ | --------------------- | --------------------------------- |126| C4 Context | 10-12 | One system + external actors |127| C4 Container | 15-20 | Internal containers + data stores |128| C4 Component | 15-20 | Single service internals |129| Sequence | 8 participants | More becomes unreadable |130| Class | 10-15 classes | Split into multiple diagrams |131| ER | 10-12 entities | Split by bounded context |132| State | 12-15 states | Split complex workflows |133| Flowchart | 15-20 nodes | Keep decision trees focused |134135---136137## Agent Gotchas1381391. **Always use `.NET-specific content` in diagrams** -- do not generate generic diagrams. Use real .NET types140 (DbContext, IRepository, MediatR), real .NET tools (EF Core, MassTransit, YARP), and real .NET patterns (middleware141 pipeline, DI registration).1421431. **Keep diagrams under 50 nodes** -- larger diagrams render poorly on GitHub and doc sites. Split complex144 architectures into multiple focused diagrams (context, container, component) rather than one monolithic diagram.1451461. **Use `<br/>` for line breaks in node labels, not `\n`** -- Mermaid renders `\n` literally as text. Multi-line labels147 require `<br/>` HTML tags.1481491. **Test Mermaid syntax before committing** -- syntax errors cause GitHub to render raw text instead of a diagram. Use150 the Mermaid Live Editor (https://mermaid.live) or a local preview tool to validate.1511521. **ER diagram relationship notation follows Mermaid syntax, not UML** -- use `||--o{` for one-to-many, `||--||` for153 one-to-one. Do not use UML multiplicity notation.1541551. **Use the `neutral` theme for GitHub compatibility** -- `%%{init: {'theme': 'neutral'}}%%` provides the best156 rendering in both light and dark modes.1571581. **Sequence diagram participant names cannot contain special characters** -- use `participant DB as "SQL Server"`159 alias syntax for names with spaces or special characters.1601611. **Nested generics (`Task~List~T~~`) may not render on all Mermaid versions** -- the double `~~` at the end of nested162 generic types requires Mermaid v10.3+. Test rendering in your target environment before committing complex generic163 type diagrams.1641651. **Do not use Font Awesome icon syntax (`fa:fa-user`) in diagrams intended for GitHub** -- GitHub's native Mermaid166 renderer does not load Font Awesome CSS. Icons render as literal text. Use plain text labels instead.1671681. **Do not configure Mermaid rendering in doc platforms** -- platform setup (Starlight remark plugin, Docusaurus theme,169 DocFX template) belongs to [skill:dotnet-documentation-strategy]. This skill provides the diagram content only.170171## Code Navigation (Serena MCP)172173**Primary approach:** Use Serena symbol operations for efficient code navigation:1741751. **Find definitions**: `serena_find_symbol` instead of text search1762. **Understand structure**: `serena_get_symbols_overview` for file organization1773. **Track references**: `serena_find_referencing_symbols` for impact analysis1784. **Precise edits**: `serena_replace_symbol_body` for clean modifications179180**When to use Serena vs traditional tools:**181182- **Use Serena**: Navigation, refactoring, dependency analysis, precise edits183- **Use Read/Grep**: Reading full files, pattern matching, simple text operations184- **Fallback**: If Serena unavailable, traditional tools work fine185186**Example workflow:**187188```text189# Instead of:190Read: src/Services/OrderService.cs191Grep: "public void ProcessOrder"192193# Use:194serena_find_symbol: "OrderService/ProcessOrder"195serena_get_symbols_overview: "src/Services/OrderService.cs"196```