Communitygithub.com

架构解释器

构建交互式、自包含的HTML架构解释文档——通过受众角色、分析视角、演进阶段和导览讲解来呈现一个单一拓扑,最终交付为一个零网络依赖的.html文件,既可以作为文章阅读,也可以全屏展示或嵌入任何页面。

架构解释器 是什么?

这个技能专注于打造**自包含的HTML架构解释文档**。它遵循“一次建模,多维度呈现”的理念:用户只需定义一次包含节点、边和元数据的完整拓扑,然后通过**受众角色**(Persona,决定词汇和展示深度)、**分析视角**(Lens,过滤关注点如数据流、延迟或安全)、**演进阶段**(Era,展示过去/现在/未来状态)和**叙事节拍**(Beat,构成引导式讲解的系列步骤)这四种投影来选择性地呈现系统。 该技能在需要**可视化或解释复杂系统**时尤为适用,比如回答“X是如何工作的”、“画出我们的架构图”、“系统概览”、“组件地图”或“解释这条流水线”。它生成的HTML文件完全自包含,无运行时网络调用,可托管在任何地方、离线打开、嵌入iframe甚至附加到邮件中。 关键强约束包括:颜色仅用于视角区分(节点形状表示类型),必须有至少6个叙事节拍(否则构建失败),以及每个节点必须有存在理由(`why`字段)。它优先于Mermaid、ASCII Art或静态SVG,尤其当系统包含嵌套分组、多个受众或需要为新读者解释时。 工作流程包括:用户访谈(避免臆想系统确定5-8个顶层层级)、选择主维度(时间/演进/视角/深度)、编写遵循严格格式的规范、在克隆的运行时目录中构建、在不同视口下验证(桌面和手机),最后交付自包含的HTML文件。该技能适用于Claude Code、Cursor、Codex等AI代理平台。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/vibbs/agent-skills/tree/HEAD/skills/architecture-explainer

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

架构解释器 是做什么的?

每个解释器生成一个自包含的HTML文件:运行时、拓扑、文字、字体和样式全部内联,运行时无需网络调用。可以放在任何地方托管、离线打开、通过<iframe>嵌入页面,或附加到邮件中。

模型

一个拓扑,多种投影。 系统只需要一次性地完整建模。其他所有内容都是对该单一图的选择器——绝不会出现第二个图。

拓扑     节点 + 边 + 元数据        ← 你只需建模这个
──────────────────────────────────────
角色     解析策略 —— 词汇、折叠深度、展示哪些事实
视角     关注点叠加层 —— 哪些边存在,每个节点展示哪个事实
阶段     过去 / 现在 / 计划 —— 存在状态和样式
节拍     叙事 —— 镜头、焦点、文字、顺序

运行时强制两条规则,你不得打破:

  1. 颜色属于视角。 节点的种类用形状表示——圆角表示数据源、书脊表示存储、人物表示人工步骤、倒角表示网关。永远不要引入按种类配色的方案;否则会变成彩虹图并使视角切换失去意义。
  2. 没有导览讲解的图是不完整的。 零节拍时,构建检查会失败。这条规则确保这些图是自解释的,而不是只有漂亮的外表。

工作流程——按顺序执行

1. 采访。不要臆想系统。

最大的失败模式是生成一个看起来合理但用户从未描述过的架构。在写任何东西之前先提问。如果工具支持,使用其结构化提问功能。

覆盖以下内容:

  • 层级。 顶级阶段或分组有哪些(5-8个)?这些将成为L1方框。
  • 每层的组件。 只展示值得展示的内容。“PostgreSQL”是一个方框;它的表则不是。
  • 生命周期。 完整走一遍一个典型的请求或任务的端到端流程。这会生成边。
  • 读者是谁。 通常是高管/架构师/工程师,但需要询问——可能是“客户/我们团队”或“学生/实践者”。
  • 哪些关注点重要。 数据流加上2-4个:成本、延迟、信任与治理、故障模式、所有权、安全。每个视角需要自己的一组边或事实。
  • 是否有历史。 v0→今天→计划是客户工作和路线图中最有价值的轴线。如果系统没有有意义的历史,可以跳过。
  • 核心论据。 读者阅读后应该相信什么?这将形成节拍。如果用户没有核心论据,解释器就没有灵魂——迫使对方思考。

2. 选择主维度

深度很少是最有趣的维度。询问这个图是为了什么:

目的主维度
教学工作原理时间 —— 节拍逐步引导一个请求
客户/利益相关者演示阶段 —— 存在什么、提议什么
设计评审、风险评估视角 —— 故障模式、信任边界
入职培训、参考资料深度 —— 层级再到组件

3. 编写规范

在编写之前完整阅读references/spec-format.md。 它包含节点/边/节拍的完整参考和所有可选字段。

复制assets/runtime/specs/llm-eval.js作为工作示例——它使用了所有特性,是一个很好的模仿模板。将新规范写入specs/<name>.js,然后将src/spec.js指向它(只需一行——入口点和构建检查都通过它读取)。

4. 构建

首先将assets/runtime复制到一个工作目录并在其中构建。不要在已安装的技能文件夹内运行npm install——它通常是共享或符号链接的安装位置。

cp -R <skill-dir>/assets/runtime ./解释器
cd 解释器
npm install            # 需要网络;约20秒
npm run build          # 先检查规范,然后生成 dist/index.html

构建检查输出会告诉你投影数量。如果失败,修复规范——永远不要削弱检查器。 它强制执行的每一条规则都是因为之前某个实际交付的图因缺少该规则而效果更差。关于每条规则的含义,参见references/spec-format.md。

5. 视觉验证——必做,两种尺寸

这是最常被跳过、也是最关键的步骤。布局计算非常复杂,失败通常是静默的:标签被裁剪、边穿过五个方框、镜头框住空白区域。不检查就绝不能宣布完成。

node scripts/shots.mjs        # 桌面矩阵 → shots/

然后以手机尺寸(390×844)自行截图并检查图片。检查:

  • 每个角色 × 阶段组合渲染时无重叠或裁剪。
  • 每个视角实际改变了画面——如果两个视角看起来一样,说明它们的边集配置错误。
  • 节拍框定。 逐个浏览节拍;每个节拍应该框定其焦点并保持上下文可见,而不是空白区域也不是整个系统。
  • 标签。 没有任何标签被裁剪或覆盖在方框之上。
  • 手机。 自适应为单列,100%缩放可读,控件不溢出。
  • 控制台。 零错误,包括在沙箱化的iframe中。

如果有什么看起来不对,在更改布局代码之前先阅读references/troubleshooting.md。

6. 交付

将构建好的dist/index.html交给用户。告诉用户该文件是自包含的,可以托管、嵌入或离线打开。

仅限Claude Code / Claude应用。 使用SendUserFile发送文件。如果用户会反复查看(大多数解释器都是),也使用create_artifact持久化。

不可协商规则

  • 每个节点都有why——一句话说明该方框存在的原因,而不是它是什么。
  • 高管能看到的内容,需用高管词汇并提供detail。
  • 至少6个节拍,每个都有实质性文字。过于单薄的节拍只会产生幻灯片效果,而不是论证。
  • ≤34个叶子节点。超出则拆分为多个解释器,而不是硬塞。
  • 每次构建一个主题。读者可以获得亮/暗切换,仅此而已。

定制

  • 不同视觉方向 —— src/themes.js包含五个主题(house, swiss, editorial, draft, shadcn)。修改src/App.jsx中的THEME_ID。如果添加字体,必须正确设置metrics.charFactor否则每个标签都会裁剪;参见references/troubleshooting.md。
  • 更多角色/视角/阶段 —— 纯规范数据,无需代码更改。
  • 从源码生成 —— 编写一个脚本遍历代码仓库并生成DIAGRAM树是一种合理的扩展,但why、detail和节拍仍然需要来自人类。

适用范围

此技能用于构建解释性图表,而不是实时仪表盘、自由绘图工具或基础设施清单。如果用户想要一个可以随时拖拽编辑的图表,他们应该使用drawio。如果他们想在一个页面上展示一个数字,他们应该使用图表。

相关技能