mermaid-diagrams
TraeWork 内置 skill —— 用 Mermaid 文本语法创建专业软件图表。类图、时序图、流程图、ERD、C4、状态图、Git Graph、甘特图等。Mermaid 渲染文本 → 图,图表可版本控制。
一、定位
| 字段 | 值 |
|---|---|
| 所属 | TraeWork 内置 skill(图表工具) |
| 触发条件 | 用户要求画图、可视化、建模、map out |
| 核心方法 | 文本语法 → 渲染成图 |
| 关键优势 | 图表和代码一起版本控制 |
二、9 种图表类型选择
| 类型 | 用途 |
|---|---|
| Class Diagram(类图) | 领域建模、OOP 设计、实体关系 |
| Sequence Diagram(时序图) | API 请求/响应、用户认证、系统组件交互 |
| Flowchart(流程图) | 用户旅程、业务流程、算法逻辑、部署流水线 |
| ERD(实体关系图) | 数据库 schema、数据建模 |
| C4 Diagram | 软件架构(系统 / 容器 / 组件 / 代码) |
| State Diagram(状态图) | 状态机、生命周期 |
| Git Graph | 版本控制分支策略 |
| Gantt Chart | 项目时间线、调度 |
| Pie/Bar Chart | 数据可视化 |
三、核心语法结构
关键原则:
- 第一行声明图表类型(如
classDiagram、sequenceDiagram、flowchart) %%是注释- 缩进和换行提升可读性,但不是必须
- 未知单词会破坏图表;参数错误会静默失败
四、4 种图表示例
4.1 Class Diagram(领域模型)
classDiagram
Title -- Genre
Title *-- Season
Title *-- Review
User --> Review : creates
class Title {
+string name
+int releaseYear
+play()
}
class Genre {
+string name
+getTopTitles()
}4.2 Sequence Diagram(API 流程)
sequenceDiagram
participant User
participant API
participant Database
User->>API: POST /login
API->>Database: Query credentials
Database-->>API: Return user data
alt Valid credentials
API-->>User: 200 OK + JWT token
else Invalid credentials
API-->>User: 401 Unauthorized
end4.3 Flowchart(用户旅程)
flowchart TD
Start([User visits site]) --> Auth{Authenticated?}
Auth -->|No| Login[Show login page]
Auth -->|Yes| Dashboard[Show dashboard]
Login --> Creds[Enter credentials]
Creds --> Validate{Valid?}
Validate -->|Yes| Dashboard
Validate -->|No| Error[Show error]
Error --> Login4.4 ERD(数据库 Schema)
erDiagram
USER ||--o{ ORDER : places
ORDER ||--|{ LINE_ITEM : contains
PRODUCT ||--o{ LINE_ITEM : includes
USER {
int id PK
string email UK
string name
datetime created_at
}
ORDER {
int id PK
int user_id FK
decimal total
datetime created_at
}五、6 个最佳实践
- 从简单开始 — 从核心实体/组件开始,逐步增加细节
- 用有意义的命名 — 清晰的标签让图表自解释
- 大量注释 — 用
%%解释复杂关系 - 保持聚焦 — 一个图一个概念;大图拆成多个聚焦视图
- 版本控制 —
.mmd文件和代码一起存 - 加上下文 — 标题和说明解释图表用途
- 迭代 — 随理解深入优化图表
六、配置和主题
---
config:
theme: base
themeVariables:
primaryColor: "#ff6b6b"
---
flowchart LR
A --> B可用主题:default、forest、dark、neutral、base
布局选项:
dagre(默认):经典平衡布局elk:复杂图高级布局
外观选项:
classic:传统 Mermaid 风格handDrawn:手绘风格
七、导出和渲染
原生支持:
- GitHub / GitLab:自动渲染 Markdown
- VS Code:装 Markdown Mermaid 扩展
- Notion / Obsidian / Confluence:内建支持
导出工具:
- Mermaid Live Editor:在线编辑器,支持 PNG/SVG 导出
- Mermaid CLI:
npm install -g @mermaid-js/mermaid-cli→mmdc -i input.mmd -o output.png - Docker:
docker run --rm -v $(pwd):/data minlag/mermaid-cli -i /data/input.mmd -o /data/output.png
八、5 个常见陷阱
- 破坏字符:注释中避免
{},特殊字符用转义 - 语法错误:拼写错误破坏图表;在 Mermaid Live 中验证
- 过于复杂:拆成多个聚焦图
- 缺少关系:文档化所有重要连接
- 过度节点:核心概念就够,不要把所有字段都画上
九、什么时候画图
永远画图当:
- 启动新项目或功能
- 文档化复杂系统
- 解释架构决策
- 设计数据库 schema
- 计划重构工作
- 新人入职
画图目的:
- 让 stakeholder 在技术决策上对齐
- 协作文档化领域模型
- 可视化数据流和系统交互
- 编码前规划
- 创建活的文档
十、深度参考
仓库的 references/ 文件夹:
class-diagrams.md:领域建模、关系(关联、组合、聚合、继承)、多重性、方法/属性sequence-diagrams.md:actor、参与者、消息(同步/异步)、激活、循环、alt/opt/par 块、注释flowcharts.md:节点形状、连接、决策逻辑、子图、样式erd-diagrams.md:实体、关系、基数、键、属性c4-diagrams.md:系统上下文、容器、组件图、边界advanced-features.md:主题、样式、配置、布局选项
十一、引用来源
- TraeWork 实际 skill 路径 —— 本文内容完全来自此文件
- Mermaid 官方文档 —— 完整语法
- Mermaid Live Editor —— 在线编辑导出
十二、一句话总结
mermaid-diagrams 是「用文本语法画专业图表」的技能——类图、时序图、流程图、ERD、C4 等 9 种类型,图表和代码一起版本控制。从简单开始、按场景选类型、注释清晰、命名有意义。