acc-diagram-knowledge
SKILL.md
Diagram Knowledge Base
Quick reference for technical diagrams, Mermaid syntax, and C4 model.
Diagram Types Overview
| Type | Use Case | When to Use |
|---|---|---|
| C4 Context | System boundaries | External actors, systems |
| C4 Container | Deployable units | Apps, databases, services |
| C4 Component | Internal structure | Classes, modules in container |
| Sequence | Interactions | Request flows, protocols |
| Class | Structure | Domain model, relationships |
| ER | Data | Database schema |
| Flowchart | Process | Algorithms, decisions |
| State | Lifecycle | Entity states, transitions |
Mermaid Basics
Flowchart
flowchart TD
A[Start] --> B{Decision}
B -->|Yes| C[Action 1]
B -->|No| D[Action 2]
C --> E[End]
D --> E
Syntax:
flowchart TD|TB|BT|LR|RL
id[Rectangle]
id(Rounded)
id{Diamond}
id([Stadium])
id[[Subroutine]]
id[(Database)]
id((Circle))
Sequence Diagram
sequenceDiagram
participant C as Client
participant A as API
participant D as Database
C->>A: POST /users
A->>D: INSERT user
D-->>A: user_id
A-->>C: 201 Created
Syntax:
->> Solid arrow (sync)
-->> Dashed arrow (async/response)
-) Open arrow
--) Dashed open arrow
Note right of A: Note text
loop Loop name
actions
end
alt Condition
actions
else Other
actions
end
Class Diagram
classDiagram
class Order {
-OrderId id
-OrderStatus status
+confirm() void
+cancel() void
}
class OrderItem {
-ProductId productId
-int quantity
}
Order "1" *-- "*" OrderItem : contains
Relationships:
<|-- Inheritance
*-- Composition
o-- Aggregation
--> Association
-- Link
..> Dependency
..|> Implementation
State Diagram
stateDiagram-v2
[*] --> Pending
Pending --> Confirmed : confirm()
Pending --> Cancelled : cancel()
Confirmed --> Shipped : ship()
Confirmed --> Cancelled : cancel()
Shipped --> Delivered : deliver()
Delivered --> [*]
Cancelled --> [*]
ER Diagram
erDiagram
USER ||--o{ ORDER : places
ORDER ||--|{ ORDER_ITEM : contains
ORDER_ITEM }o--|| PRODUCT : references
USER {
uuid id PK
string email UK
string name
}
ORDER {
uuid id PK
uuid user_id FK
string status
}
Cardinality:
||--|{ One to many
}|--|{ Many to many
||--|| One to one
||--o{ One to zero-or-many
C4 Model
Level 1: Context Diagram
Shows system and external actors.
flowchart TB
subgraph boundary[System Boundary]
S[("π₯οΈ E-Commerce System")]
end
U[("π€ Customer")]
PS[("π³ Payment Service")]
ES[("π§ Email Service")]
U -->|"Browse, Order"| S
S -->|"Process payment"| PS
S -->|"Send notifications"| ES
Level 2: Container Diagram
Shows deployable units.
flowchart TB
subgraph boundary[E-Commerce System]
WA[("π Web App\nReact")]
API[("βοΈ API\nPHP/Symfony")]
DB[("ποΈ Database\nPostgreSQL")]
CACHE[("πΎ Cache\nRedis")]
MQ[("π¬ Queue\nRabbitMQ")]
end
WA -->|"REST/JSON"| API
API -->|"SQL"| DB
API -->|"Cache"| CACHE
API -->|"Publish"| MQ
Level 3: Component Diagram
Shows internal structure.
flowchart TB
subgraph api[API Container]
direction TB
subgraph presentation[Presentation]
AC[Action]
RS[Responder]
end
subgraph application[Application]
UC[UseCase]
SV[Service]
end
subgraph domain[Domain]
EN[Entity]
VO[ValueObject]
RP[Repository Interface]
end
subgraph infra[Infrastructure]
RI[Repository Impl]
AD[Adapter]
end
end
AC --> UC
UC --> EN
UC --> RP
RI -.-> RP
Best Practices
Diagram Guidelines
| Principle | Description | Example |
|---|---|---|
| 7Β±2 Rule | Max 5-9 elements | Aggregate related items |
| Clear labels | Descriptive names | "User Service" not "S1" |
| Consistent style | Same shapes = same type | Rectangles for services |
| Flow direction | Top-down or left-right | Pick one per diagram |
| Context first | Start high-level | C4 Context β Container |
Naming Conventions
β
Good:
- "Payment Service" (descriptive)
- "PostgreSQL Database" (specific)
- "POST /orders" (action-based)
β Bad:
- "Service A" (meaningless)
- "DB" (ambiguous)
- "Process" (vague)
Layout Tips
# Top-down flow (recommended for hierarchies)
flowchart TD
# Left-right (recommended for timelines)
flowchart LR
# Subgraphs for grouping
subgraph name[Label]
content
end
# Styling
style id fill:#f9f,stroke:#333
classDef className fill:#f9f
class id1,id2 className
Common Antipatterns
| Antipattern | Problem | Fix |
|---|---|---|
| Spaghetti | Too many crossing lines | Reorder, use subgraphs |
| Kitchen sink | Everything in one diagram | Split by level/aspect |
| Mystery meat | Cryptic labels | Use full names |
| Outdated | Doesn't match code | Automate from code |
| No legend | Unknown symbols | Add legend/key |
| Invisible boundaries | Unclear scope | Add subgraphs |
Tool Comparison
| Tool | Type | Best For | Pros | Cons |
|---|---|---|---|---|
| Mermaid | Text-based | Documentation-as-code | Git-friendly, embeds in MD, live preview | Limited styling, complex layouts hard |
| PlantUML | Text-based | UML diagrams | Full UML support, more diagram types | Requires Java, slower rendering |
| Draw.io | GUI | Quick prototypes, business diagrams | Free, intuitive, many templates | Binary files, merge conflicts |
| Excalidraw | GUI | Sketches, whiteboarding | Hand-drawn style, collaborative | Less precise, limited exports |
| Lucidchart | GUI | Enterprise, presentations | Professional output, integrations | Paid, not text-based |
Tool Selection Guide
| Scenario | Recommended Tool |
|---|---|
| Code documentation (README, docs/) | Mermaid |
| Strict UML compliance required | PlantUML |
| Quick whiteboard session | Excalidraw |
| Stakeholder presentations | Draw.io or Lucidchart |
| CI/CD pipeline diagrams | Mermaid (auto-generate) |
| Living documentation (auto-update) | Mermaid + code generation |
Tool Features Matrix
| Feature | Mermaid | PlantUML | Draw.io | Excalidraw |
|---|---|---|---|---|
| Version control friendly | β | β | β | β οΈ JSON |
| GitHub/GitLab rendering | β | β | β | β |
| No install required | β | β | β | β |
| Offline support | β οΈ | β | β | β |
| C4 model support | β | β | Manual | Manual |
| Export to PNG/SVG | β | β | β | β |
| Real-time collaboration | β | β | β | β |
Diagram Selection Guide
What are you documenting?
β
ββ System overview β C4 Context
β
ββ Deployment units β C4 Container
β
ββ Internal structure β C4 Component / Class
β
ββ Data flow
β ββ Request/Response β Sequence
β ββ Data processing β Flowchart
β
ββ Data structure
β ββ Domain model β Class
β ββ Database β ER
β
ββ Behavior
ββ State machine β State
ββ Algorithm β Flowchart
PHP-Specific Diagrams
DDD Layers
flowchart TB
subgraph presentation[Presentation Layer]
direction LR
A[Action]
R[Responder]
end
subgraph application[Application Layer]
direction LR
UC[UseCase]
DTO[DTO]
end
subgraph domain[Domain Layer]
direction LR
E[Entity]
VO[Value Object]
DS[Domain Service]
RI[Repository Interface]
end
subgraph infrastructure[Infrastructure Layer]
direction LR
RImpl[Repository]
Adapter[Adapter]
end
presentation --> application
application --> domain
infrastructure -.-> domain
CQRS Pattern
flowchart LR
subgraph commands[Write Side]
CMD[Command] --> CH[CommandHandler]
CH --> AR[Aggregate]
AR --> EV[Event]
end
subgraph queries[Read Side]
Q[Query] --> QH[QueryHandler]
QH --> RM[ReadModel]
end
EV -.-> RM
References
For detailed information, load these reference files:
references/mermaid-syntax.mdβ Complete Mermaid syntax referencereferences/c4-model.mdβ C4 model detailed guidereferences/sequence-patterns.mdβ Common sequence diagram patternsreferences/diagram-tools.mdβ Tools and automation
Weekly Installs
1
Repository
dykyi-roman/aweβ¦ude-codeGitHub Stars
39
First Seen
Feb 11, 2026
Installed on
opencode1
claude-code1