关于 beautiful-mermaid
beautiful-mermaid 是用于生成和渲染 Mermaid 图表的技能,可输出 SVG 和 PNG。它支持多种图表类型与主题,并通过浏览器截图生成 PNG。
主要功能
- 01生成 Mermaid 语法
- 02渲染 SVG 图表
- 03捕获高分辨率 PNG
- 04支持五种图表类型
- 05选择多种主题
适用场景
- 01说明流程与决策路径
- 02记录 API 调用或事务
- 03展示状态机
- 04制作 UML 或数据库图表
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ intellectronica/ agent-skills --skill beautiful-mermaid安装后在 Claude Code 中输入/beautiful-mermaid确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/mermaid-syntax.mdscripts/create-html.tsrender.ts详细介绍
精美的 Mermaid 图表渲染
使用 Beautiful Mermaid 库将 Mermaid 图表渲染为 SVG 和 PNG 图像。
依赖项
此技能需要 agent-browser 技能才能渲染 PNG。进行 PNG 截图前,请先加载该技能。
支持的图表类型
- 流程图 - 处理流程、决策树、CI/CD 管道
- 时序图 - API 调用、OAuth 流程、数据库事务
- 状态图 - 状态机、连接生命周期
- 类图 - UML 类图、设计模式
- 实体关系图 - 数据库架构、数据模型
可用主题
Default、Dracula、Solarized、Zinc Dark、Tokyo Night、Tokyo Night Storm、Tokyo Night Light、Catppuccin Latte、Nord、Nord Light、GitHub Dark、GitHub Light、One Dark。
如果未指定主题,则使用 default。
常见语法模式
流程图边标签
使用管道符语法添加边标签:
A -->|label| B
A ---|label| B
避免使用空格加连字符的语法,以免渲染不完整:
A -- label --> B # May cause issues
含特殊字符的节点标签
将含特殊字符的标签用引号括起来:
A["Label with (parens)"]
B["Label with / slash"]
工作流
步骤 1:生成或验证 Mermaid 代码
如果用户提供的是描述而非代码,请生成有效的 Mermaid 语法。完整语法详情请参阅 references/mermaid-syntax.md。
步骤 2:渲染 SVG
运行渲染脚本以生成 SVG 文件:
bun run scripts/render.ts --code "graph TD; A-->B" --output diagram --theme default
也可以从文件渲染:
bun run scripts/render.ts --input diagram.mmd --output diagram --theme tokyo-night
其他运行时:
npx tsx scripts/render.ts --code "..." --output diagram
deno run --allow-read --allow-write --allow-net scripts/render.ts --code "..." --output diagram
这会在当前工作目录中生成 <output>.svg。
步骤 3:创建 HTML 封装文件
运行 HTML 封装脚本,为截图做好准备:
bun run scripts/create-html.ts --svg diagram.svg --output diagram.html
这会创建一个简洁的 HTML 文件,用适当的内边距和背景显示 SVG。
步骤 4:使用 agent-browser 捕获高分辨率 PNG
使用 agent-browser CLI 捕获高质量截图。完整 CLI 文档请参阅 agent-browser 技能。
# Set 4K viewport for high-resolution capture
agent-browser set viewport 3840 2160
# Open the HTML wrapper
agent-browser open "file://$(pwd)/diagram.html"
# Wait for render to complete
agent-browser wait 1000
# Capture full-page screenshot
agent-browser screenshot --full diagram.png
# Close browser
agent-browser close
对于更复杂的图表,如需更高分辨率,可进一步增大视口,或在创建 HTML 封装文件时使用 --padding 选项,为图表留出更多空间。
步骤 5:清理中间文件
渲染完成后,删除所有中间文件。仅保留最终的 .svg 和 .png 文件。
需要清理的文件:
- HTML 封装文件(例如
diagram.html) - 为存放图表代码而创建的任何临时
.mmd文件 - 渲染过程中创建的任何其他文件
rm diagram.html
如果创建了临时 .mmd 文件,也请将其删除。
输出
始终会生成两种输出:
- SVG:矢量格式,可无限缩放,文件体积小
- PNG:高分辨率位图,以 4K(3840×2160)视口捕获,图表宽度至少为 1200px
除非用户明确指定其他路径,否则文件会保存到当前工作目录。
主题选择指南
| 主题 | 背景 | 最适合 |
|---|---|---|
| default | 浅灰色 | 通用场景 |
| dracula | 深紫色 | 偏好深色模式 |
| tokyo-night | 深蓝色 | 现代深色风格 |
| tokyo-night-storm | 更深的蓝色 | 更高对比度 |
| nord | 深色北极风格 | 柔和、平静的视觉效果 |
| nord-light | 浅色北极风格 | 柔和色调的浅色模式 |
| github-dark | GitHub 深色 | 与 GitHub UI 风格一致 |
| github-light | GitHub 浅色 | 与 GitHub UI 风格一致 |
| catppuccin-latte | 暖色浅色调 | 柔和的粉彩风格 |
| solarized | 棕褐色/奶油色 | Solarized 配色方案 |
| one-dark | Atom 深色 | Atom 编辑器风格 |
| zinc-dark | 中性深色 | 简约、无明显色彩倾向 |
故障排除
主题未应用
检查渲染脚本的输出中的 bg 和 fg 值,或检查 SVG 的起始标签中是否包含 --bg 和 --fg CSS 自定义属性。
图表被截断或不完整
- 检查边标签语法——使用
-->|label|管道符表示法,而非-- label --> - 确认所有节点 ID 都是唯一的
- 检查节点标签中是否有未闭合的括号
渲染结果为空或 SVG 格式错误
- 渲染前,请在 https://mermaid.live 验证 Mermaid 语法
- 检查是否有需要转义的特殊字符(用引号括起来)
- 确保已指定流程图方向(
graph TD、graph LR等)