---
name: mermaid
description: Create and edit mermaid diagrams in markdown files. Use when creating flowcharts, sequence diagrams, or any mermaid syntax in .md files.
hooks:
PreToolUse:
- matcher: "*"
hooks:
- type: command
command: "echo '[SKILL: mermaid] Creating or editing mermaid diagram...'"
once: true
---
# Mermaid Diagram Creation
Create professional, color-coded mermaid diagrams with consistent styling for architecture documentation.
## When to Use
- Creating flowcharts, sequence diagrams, or state diagrams
- Documenting architecture or component relationships
- Visualizing workflows or data flows
## Critical Constraints
**ALWAYS:**
- Use the standard color palette defined below
- Include a color legend table after the diagram
- Use `%%{init: {...}}%%` for diagram configuration
- Group related nodes in subgraphs
- Apply class styling to all nodes
**NEVER:**
- Use inline styles (use classDef instead)
- Create diagrams without color coding
- Omit the color legend
---
## Instructions
1. **Identify all nodes**: List every distinct state, action, or decision point
2. **Categorize each node** by type:
- Input/CLI elements
- State/Data nodes
- Handlers/Processors
- Phase/Control nodes
- New/Proposed components
- Output/Artifacts
- Gaps/Warnings (optional)
3. **Choose direction**: Pick `TB` for hierarchical flows, `LR` for sequential/parallel flows
4. **Assess grouping**: Look for distinct logical phases or stages
- If phases exist, use subgraphs with descriptive names
- Keep start/end/error nodes outside subgraphs
5. **Draft the diagram** using the template below
6. **Add color legend table** after the diagram
7. **Review**: Verify all connections and class assignments
---
## Standard Color Palette
| Category | Fill | Stroke | Text | Use For |
|----------|------|--------|------|---------|
| cli | #1a237e | #7986cb | #fff | CLI options, inputs, entry points |
| stateNode | #004d40 | #4db6ac | #fff | State fields, data storage, context |
| handler | #e65100 | #ffb74d | #fff | Handlers, processors, business logic |
| phase | #6a1b9a | #ba68c8 | #fff | Phase nodes, control flow, analysis |
| newComponent | #2e7d32 | #81c784 | #fff | New/proposed components |
| output | #00695c | #4db6ac | #fff | Output artifacts, files, results |
| detector | #b71c1c | #ef5350 | #fff | Detection, validation, guards |
| gap | #ff6f00 | #ffa726 | #000 | Gaps, warnings, missing items |
| integration | #c62828 | #ef9a9a | #fff | Integration points, external systems |
| terminal | #1a237e | #7986cb | #fff | Start/End/Error terminals |
---
## Diagram Template
````markdown
```mermaid
%%{init: {'flowchart': {'nodeSpacing': 50, 'rankSpacing': 60, 'curve': 'basis'}}}%%
graph TB
%% CLASS DEFINITIONS %%
classDef cli fill:#1a237e,stroke:#7986cb,stroke-width:2px,color:#fff;
classDef stateNode fill:#004d40,stroke:#4db6ac,stroke-width:2px,color:#fff;
classDef handler fill:#e65100,stroke:#ffb74d,stroke-width:2px,color:#fff;
classDef phase fill:#6a1b9a,stroke:#ba68c8,stroke-width:2px,color:#fff;
classDef newComponent fill:#2e7d32,stroke:#81c784,stroke-width:2px,color:#fff;
classDef output fill:#00695c,stroke:#4db6ac,stroke-width:2px,color:#fff;
classDef detector fill:#b71c1c,stroke:#ef5350,stroke-width:2px,color:#fff;
classDef gap fill:#ff6f00,stroke:#ffa726,stroke-width:2px,color:#000;
classDef terminal fill:#1a237e,stroke:#7986cb,stroke-width:2px,color:#fff;
%% TERMINAL NODES %%
START([START])
END([END])
%% SUBGRAPHS %%
subgraph GroupName ["Group Title"]
direction TB
Node1["Label Line 1
━━━━━━━━━━
Detail line"]
Node2["Another Node"]
end
%% CONNECTIONS %%
START --> Node1
Node1 --> Node2
Node2 --> END
%% CLASS ASSIGNMENTS %%
class Node1,Node2 handler;
class START,END terminal;
```
**Color Legend:**
| Color | Category | Description |
|-------|----------|-------------|
| Dark Blue | Terminal | Start and end points |
| Orange | Handler | Processing components |
````
---
## Node Shape Reference
```
A([Label]) # Rounded: Start/End terminals
A{Label} # Diamond: Decision points
A[Label] # Rectangle: Standard nodes
A[(Label)] # Cylinder: Database/storage
A[[Label]] # Subroutine: Subgraph call
A{{Label}} # Hexagon: Preparation step
```
---
## Multiline Labels
Use `
` for line breaks and `━━━━━━━━━━` as visual separator:
```
Node["Title
━━━━━━━━━━
Description line 1
Description line 2"]
```
---
## Status Symbols
Use symbols to indicate component status:
| Symbol | Meaning |
|--------|---------|
| ★ | New component to implement |
| ● | Existing component with modifications |
| _(none)_ | Existing, unchanged component |
Example:
```
Node["★ NewHandler
━━━━━━━━━━
Proposed feature"]
```
---
## Example: Simple Workflow
```mermaid
%%{init: {'flowchart': {'nodeSpacing': 40, 'rankSpacing': 50}}}%%
flowchart LR
classDef phase fill:#6a1b9a,stroke:#ba68c8,stroke-width:2px,color:#fff;
classDef handler fill:#e65100,stroke:#ffb74d,stroke-width:2px,color:#fff;
classDef terminal fill:#1a237e,stroke:#7986cb,stroke-width:2px,color:#fff;
START([START])
subgraph Workflow ["T → I → V Workflow"]
T["TestCreator (T)
━━━━━━━━━━
Create tests first"]
I["Implementer (I)
━━━━━━━━━━
Implement code"]
V["Verifier (V)
━━━━━━━━━━
Validate results"]
end
END([END])
START --> T --> I --> V --> END
class T,I,V handler;
class START,END terminal;
```
**Color Legend:**
| Color | Category | Description |
|-------|----------|-------------|
| Dark Blue | Terminal | Start and end points |
| Orange | Handler | Role-based execution nodes |
---
## Example: Complex Architecture
```mermaid
%%{init: {'flowchart': {'nodeSpacing': 50, 'rankSpacing': 60, 'curve': 'basis'}}}%%
graph TB
classDef cli fill:#1a237e,stroke:#7986cb,stroke-width:2px,color:#fff;
classDef stateNode fill:#004d40,stroke:#4db6ac,stroke-width:2px,color:#fff;
classDef handler fill:#e65100,stroke:#ffb74d,stroke-width:2px,color:#fff;
classDef phase fill:#6a1b9a,stroke:#ba68c8,stroke-width:2px,color:#fff;
classDef output fill:#00695c,stroke:#4db6ac,stroke-width:2px,color:#fff;
subgraph CLI_Layer ["CLI Entry Layer"]
TaskOpt["--task / -t
━━━━━━━━━━
Task description"]
PathOpt["--project-path
━━━━━━━━━━
Project location"]
end
subgraph State_Layer ["State Management"]
State["GraphState
━━━━━━━━━━
Mutable context
Phase tracking"]
end
subgraph Processing ["Processing Pipeline"]
Init["init_node
━━━━━━━━━━
Initialize state"]
Handler["MainHandler
━━━━━━━━━━
Process request"]
Complete["complete_node
━━━━━━━━━━
Finalize output"]
end
subgraph Output ["Output Artifacts"]
Result["result.json
━━━━━━━━━━
Final output"]
end
TaskOpt --> State
PathOpt --> State
State --> Init
Init --> Handler
Handler --> Complete
Complete --> Result
class TaskOpt,PathOpt cli;
class State stateNode;
class Init,Complete phase;
class Handler handler;
class Result output;
```
**Color Legend:**
| Color | Category | Description |
|-------|----------|-------------|
| Dark Blue | CLI | Command-line interface options |
| Teal | State | State management and context |
| Purple | Phase | Control flow and phase nodes |
| Orange | Handler | Processing and business logic |
| Dark Teal | Output | Generated artifacts and results |