mcpField
G
graph-easy

graph-easy

github.com/terrylica文档处理1131 次安装1 天前更新
代码仓库

关于 graph-easy

graph-easy 是用于在 GitHub Flavored Markdown 中制作 ASCII 架构图的技能,涵盖语法、渲染和嵌入可复现的图表源码。

主要功能

  1. 01生成 ASCII 图表
  2. 02Graph-easy DSL 模板
  3. 03流程与组件布局
  4. 04嵌入 Markdown 源码
  5. 05渲染与对齐检查

适用场景

  1. 01在 README 中记录系统架构
  2. 02展示流程管线
  3. 03在规范文档中加入可复现图表

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/terrylica/cc-skills --skill graph-easy

安装后在 Claude Code 中输入/graph-easy确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
diagram-patterns.md
dsl-syntax.md
embedding-guide.md
evolution-log.md
monospace-symbols.md
preflight-check.md
scripts/
graph-easy

详细介绍

Graph-Easy 图表技能

使用 graph-easy 为任意 GitHub Flavored Markdown 文件创建 ASCII 架构图。纯文本输出,自动布局,无需渲染图像。

自我演进的技能:此技能会在使用过程中不断改进。如果说明有误、参数发生偏移,或需要采用变通方案,请立即修复此文件,不要拖延。仅针对真实且可复现的问题进行更新。

何时使用此技能

  • 在 README 文件中添加图表
  • 设计规范文档
  • 任何需要架构可视化的 GFM Markdown 文件
  • 创建流程图、管道图或系统图
  • 用户提到“图表”“ASCII 图表”“graph-easy”或“架构图”

不适用于 ADR——架构决策记录请使用 adr-graph-easy-architect(包含 ADR 专用模式,例如必须提供 2 张图和前后对比模板)。

预检

渲染前,请确保已安装 graph-easy 且能够正常运行。完整的分层安装指南(优先使用 mise,适用于 macOS + Linux)请参阅预检。

快速验证:

echo "[Test] -> [OK]" | graph-easy &>/dev/null && echo "✓ graph-easy ready"

DSL 快速参考

完整语法参考:DSL 语法

基本内容
[Node] -> [Node]              # Basic edge
[A] -- label --> [B]          # Labeled edge
[A] <-> [B]                   # Bidirectional
( Group: [Node A] [Node B] )  # Container
[n] { label: "Display Name"; }  # Custom label
必需的图表属性
graph { label: "Title"; flow: south; }   # Top-to-bottom
graph { label: "Title"; flow: east; }    # Left-to-right
  • 每张图表都必须包含带有语义表情符号和标题的 label:
  • 每张图表都必须明确指定 flow: 方向
字符安全性
位置图形表情符号Unicode 符号ASCII 标记
节点内部绝不可用可以使用始终安全
图表标签安全可以使用可以使用

ASCII 标记:[x] [+] [!] [OK] [>] [*] [~] [?] [=]

节点和边样式
样式语法用途
圆角{ shape: rounded; }起始/结束节点
双边框{ border: double; }关键内容/强调
粗边框{ border: bold; }重要节点
点线边框{ border: dotted; }可选(GH 注意事项)
实线箭头-> / <->常规/顺利路径
点线箭头..>条件/备用路径
粗箭头==>关键路径

常见模式

完整示例(管道、多组件、决策、分组、双向、分层架构)请参阅图表模式。

快速模板:

# Pipeline (left-to-right)
graph { label: "Pipeline"; flow: east; }
[Input] -> [Process] -> [Output]

# Multi-component (top-down)
graph { label: "System"; flow: south; }
[Gateway] -> [Service A]
[Gateway] -> [Service B]
[Service A] -> [Database]
[Service B] -> [Database]

渲染

命令(适用于不同平台)
# For GitHub markdown (RECOMMENDED) - renders as solid lines
graph-easy --as=ascii << 'EOF'
graph { flow: south; }
[A] -> [B] -> [C]
EOF

# For terminal/local viewing - prettier Unicode lines
graph-easy --as=boxart << 'EOF'
graph { flow: south; }
[A] -> [B] -> [C]
EOF
输出模式
模式命令使用场景
ascii--as=asciiGitHub Markdown——+--+ 在任何地方都会渲染为实线
boxart--as=boxart仅限终端——┌──┐ 在本地显示效果不错,但在 GitHub 上会显示为点线

为什么 GitHub 上要使用 ASCII? GitHub 会将 Unicode 框线字符(┌─┐│└─┘)渲染为点线。纯 ASCII(+---+、|)在任何地方都能正确显示。

生成后的对齐验证(推荐)

嵌入后,使用 Skill(doc-tools:ascii-diagram-validator) 进行验证:

  • 检测复制粘贴造成的对齐偏差和字体渲染问题
  • 如果图表刚生成且尚未手动编辑,可跳过

在 Markdown 中嵌入

包含 GFM 可折叠区段语法的完整指南:嵌入指南

重要:每张图表都必须包含 <details> 源代码块。 此要求不可协商。

## Architecture

```
+----------+     +----------+     +----------+
|  Input   | --> | Process  | --> |  Output  |
+----------+     +----------+     +----------+
```

<details>
<summary>graph-easy source</summary>

```
graph { flow: east; }
[Input] -> [Process] -> [Output]
```

</details>

等宽字体安全符号

完整参考:等宽字体符号

常用标记:[+] 已添加 | [x] 已移除 | [*] 已更改 | [!] 警告 | [>] 进行中


图表标签(强制要求:每个图表都必须包含表情符号 + 标题)

警告:这是最常被忘记的要求。没有标签的图表无效。

正确示例
graph { label: "Deployment Pipeline"; flow: east; }
[Build] -> [Test] -> [Deploy]
反面示例(无效 - 切勿这样做)
graph { flow: east; }
[Build] -> [Test] -> [Deploy]

错误原因:缺少带表情符号的 label:。每个图表都需要让人一眼就能了解其上下文。


强制检查清单(渲染前)

图表级别(必须满足)
  • graph { label: "Title"; } - 语义表情符号 + 标题(最常被忘记 - 请先检查!)
  • graph { flow: south; } 或 graph { flow: east; } - 明确指定方向
  • GitHub Markdown 使用 --as=ascii,仅用于终端时使用 --as=boxart
嵌入(必须满足 - 不容妥协)
  • 包含源代码的 <details> 块 - 每个图表都必须有可折叠的源代码块
  • 切勿提交没有可复现源代码的图表
嵌入后验证(建议)
  • 嵌入图表后,对文件运行 ascii-diagram-validator
  • 如果图表在生成后经过手动编辑,这一步尤其重要
节点和边的样式
  • 起点/终点:{ shape: rounded; } | 关键项:{ border: double; } | 可选项:{ border: dotted; }
  • 主路径:-> | 条件路径:..> | 关键路径:==> | 标签:1-3 个词
  • 节点内不得使用图形表情符号;表情符号只能放在 graph { label: "..."; } 中
结构
  • 对 4 个或更多相关节点使用分组 ( Name: ... )
  • 节点 ID 简短,标签清晰:[db] { label: "PostgreSQL"; }
  • 每个图表最多包含 7-10 个节点(更多时拆分)

成功标准

正确性
  1. 解析无错误 - graph-easy 能够接受该 DSL
  2. 渲染整洁 - 没有错位的框或断开的线
  3. 内容匹配 - 描述中的所有关键元素都得到体现
  4. 保留源代码(强制要求) - 每个图表都必须有包含 graph-easy DSL 源代码的 <details> 块
美观性
  1. 输出适合目标平台 - GitHub 使用 --as=ascii,终端使用 --as=boxart
  2. 标签清晰易读 - 使用 \n 换行,不要截断
  3. 流程清晰 - 方向符合自然阅读顺序(自上而下或从左到右)
  4. 样式一致 - 相同的边框样式始终表示相同的语义
完整性
  1. 边的语义 - 实线 = 普通,点线 = 条件,粗线 = 关键
  2. 逻辑分组 - 使用 ( Group: ... ) 容器对相关节点进行分组

故障排除

问题原因解决方案
command not found未安装 graph-easy运行预检
GH 上显示点线使用了 --as=boxartGitHub Markdown 请使用 --as=ascii
框线断裂节点中使用了图形表情符号移除表情符号,使用 ASCII 标记 [x][+]
节点重叠图表过于复杂拆分成多个图表(每个最多 7-10 个节点)
边标签被截断标签过长缩短至 1-3 个词
未显示标题语法错误使用 graph { label: "Title"; flow: south; }
布局异常未指定流程方向添加 graph { flow: south; } 或 flow: east
解析错误节点中包含特殊字符转义或简化节点名称

资源

执行后反思

此技能执行完毕后,关闭前请检查:

  1. 命令是否成功? — 如果没有,修复导致失败的指令或错误表。
  2. 参数或输出是否发生变化? — 如果底层工具的接口发生偏移,请更新 Usage 示例和 Parameters 表以保持一致。
  3. 是否需要变通方案? — 如果你不得不临时调整(更换标志、增加步骤),请更新此 SKILL.md,以便下次调用时无需采用相同的变通方案。

只有问题确实存在且可复现时才进行更新,不要基于猜测更新。

评论

支持 Markdown