--- name: markdown-mermaid-writing description: 全面的markdown和Mermaid图表写作技能。用于创建任何科学文档、报告、分析或可视化。以文本图表为默认文档标准,包含完整样式指南(markdown + mermaid)、24种图表类型参考和9个文档模板。 allowed-tools: Read Write Edit Bash license: Apache-2.0 metadata: {"version": "1.1", "skill-author": "Clayton Young / Superior Byte Works, LLC (@borealBytes)", "skill-source": "https://github.com/SuperiorByteWorks-LLC/agent-project", "skill-version": "1.0.0", "skill-contributors": "Clayton Young (Superior Byte Works, LLC / @borealBytes; Author and originator); K-Dense Team (K-Dense Inc.; Integration target and community feedback)"} --- # Markdown和Mermaid写作 ## 概述 本技能教授并强制执行使用**带有嵌入式Mermaid图表的Markdown作为默认和规范格式**创建科学文档的标准。 核心观点:在`.md`文件中用Mermaid图表表达的关系比任何图像都更有价值。它是文本,因此在git中差异清晰。不需要构建步骤。在GitHub、GitLab、Notion、VS Code和任何Markdown查看器中原生渲染。与相同关系的散文描述相比,它使用更少的tokens。并且它总是可以稍后转换为精美的图像——但文本版本仍然是事实的来源。 > "你越多地将你的报告和文件放在.md中,以普通文本形式,mermaid也是如此,同时也是一种简单的'脚本语言'。这有助于任何下游渲染,尤其是AI生成的图像(使用mermaid而不是仅使用长文本描述关系 < tokens)。此外,mermaid可以与markdown一起渲染,以便人类或AI几乎在任何地方轻松使用。" > > — Clayton Young (@borealBytes), K-Dense Discord, 2026-02-19 ## 何时使用此技能 在以下情况下使用此技能: - 创建**任何科学文档** — 报告、分析、手稿、方法部分 - 编写**任何文档** — README、操作指南、决策记录、项目文档 - 制作**任何图表** — 工作流程、数据管道、架构、时间线、关系 - 生成**任何将被版本控制的输出** — 如果它要进入git,它应该是markdown - 与**任何其他技能**一起工作 — 此技能定义了包装所有其他输出的文档层 - 有人要求你"添加图表"或"可视化关系" — 始终首选Mermaid 不要为结构或关系图开始使用Python matplotlib、seaborn或AI图像生成。这些是第2阶段和第3阶段 — 仅在Mermaid无法表达所需内容时使用(例如,带有真实数据的散点图、逼真图像)。 ## 🎨 源格式哲学 ### 为什么基于文本的图表胜出 | 重要因素 | Mermaid in Markdown | Python / AI 图像 | | ----------------------------- | :-----------------: | :---------------: | | Git 差异可读 | ✅ | ❌ 二进制 blob | | 无需重新生成即可编辑 | ✅ | ❌ | | 与散文相比令牌高效 | ✅ 更小 | ❌ 更大 | | 无需构建步骤即可渲染 | ✅ | ❌ 需要托管 | | 无需视觉即可被AI解析 | ✅ | ❌ | | 在 GitHub / GitLab / Notion 中工作 | ✅ | ⚠️ 如果托管 | | 可访问性(屏幕阅读器) | ✅ accTitle/accDescr | ⚠️ 需要 alt 文本 | | 稍后可转换为图像 | ✅ 随时 | — 已是图像 | ### 三阶段工作流 ```mermaid flowchart LR accTitle: 三阶段文档工作流 accDescr: 第1阶段 Mermaid in markdown 始终是必需的,是事实的来源。第2阶段和第3阶段是可选的下游转换,用于精美的输出。 p1["📄 第1阶段
Mermaid in Markdown
(始终 — 事实的来源)"] p2["🐍 第2阶段
Python 生成
(可选 — 数据图表)"] p3["🎨 第3阶段
AI 生成视觉效果
(可选 — 润色)"] out["📊 最终交付物"] p1 --> out p1 -.->|"需要时"| p2 p1 -.->|"需要时"| p3 p2 --> out p3 --> out classDef required fill:#dbeafe,stroke:#2563eb,stroke-width:2px,color:#1e3a5f classDef optional fill:#fef9c3,stroke:#ca8a04,stroke-width:2px,color:#713f12 classDef output fill:#dcfce7,stroke:#16a34a,stroke-width:2px,color:#14532d class p1 required class p2,p3 optional class out output ``` **第1阶段是强制性的。** 即使你进行到第2阶段或第3阶段,Mermaid 源文件仍需提交。 ### Mermaid可以表达什么 Mermaid 涵盖 24 种图表类型。几乎所有科学关系都适合其中一种: | 使用场景 | 图表类型 | 文件 | | -------------------------------------------- | ---------------- | ---------------------------------------------------- | | 实验工作流 / 决策逻辑 | 流程图 | `references/diagrams/flowchart.md` | | 服务交互 / API 调用 / 消息传递 | 序列图 | `references/diagrams/sequence.md` | | 数据模型 / 模式 | ER 图 | `references/diagrams/er.md` | | 状态机 / 生命周期 | 状态图 | `references/diagrams/state.md` | | 项目时间线 / 路线图 | 甘特图 | `references/diagrams/gantt.md` | | 比例 / 组成 | 饼图 | `references/diagrams/pie.md` | | 系统架构(缩放级别) | C4 | `references/diagrams/c4.md` | | 概念层次结构 / 头脑风暴 | 思维导图 | `references/diagrams/mindmap.md` | | 时间顺序事件 / 历史 | 时间线 | `references/diagrams/timeline.md` | | 类层次结构 / 类型关系 | 类图 | `references/diagrams/class.md` | | 用户旅程 / 满意度地图 | 用户旅程 | `references/diagrams/user_journey.md` | | 双轴比较 / 优先级 | 象限图 | `references/diagrams/quadrant.md` | | 需求可追溯性 | 需求图 | `references/diagrams/requirement.md` | | 流大小 / 资源分配 | 桑基图 | `references/diagrams/sankey.md` | | 数值趋势 / 条形 + 折线图 | XY 图表 | `references/diagrams/xy_chart.md` | | 组件布局 / 空间排列 | 方块图 | `references/diagrams/block.md` | | 工作项状态 / 任务列 | 看板 | `references/diagrams/kanban.md` | | 云基础设施 / 服务拓扑 | 架构图 | `references/diagrams/architecture.md` | | 多维比较 / 技能雷达 | 雷达图 | `references/diagrams/radar.md` | | 层次比例 / 预算 | 树图 | `references/diagrams/treemap.md` | | 二进制协议 / 数据格式 | 数据包图 | `references/diagrams/packet.md` | | Git 分支 / 合并策略 | Git 图 | `references/diagrams/git_graph.md` | | 代码风格序列(编程语法) | ZenUML | `references/diagrams/zenuml.md` | | 多图表组合模式 | 复杂示例 | `references/diagrams/complex_examples.md` | > 💡 **选择正确的类型,而不是简单的类型。** 不要默认使用流程图来处理所有事情。对于时间顺序事件,时间线优于流程图。对于服务交互,序列图优于流程图。扫描表格并匹配。 --- ## 🔧 核心工作流 ### 步骤 1:识别文档类型 在从头开始编写之前,检查是否存在模板: | 文档类型 | 模板 | | ------------------------------ | ----------------------------------------------- | | 拉取请求记录 | `templates/pull_request.md` | | 问题 / 缺陷 / 功能请求 | `templates/issue.md` | | 冲刺 / 项目看板 | `templates/kanban.md` | | 架构决策(ADR) | `templates/decision_record.md` | | 演示 / 简报 | `templates/presentation.md` | | 研究论文 / 分析 | `templates/research_paper.md` | | 项目文档 | `templates/project_documentation.md` | | 操作指南 / 教程 | `templates/how_to_guide.md` | | 状态报告 | `templates/status_report.md` | ### 步骤 2:阅读样式指南 在编写任何 `.md` 文件之前:阅读 `references/markdown_style_guide.md`。 需要内化的关键规则: - **每个文档一个 H1** — 标题。永远不要更多。 - **仅 H2 标题使用表情符号** — 每个 H2 一个表情符号,H3/H4 中不使用 - **引用所有内容** — 每个外部声明都使用脚注 `[^N]` 并提供完整 URL - **谨慎使用粗体** — 每段最多 2-3 个粗体术语,永远不要整句 - **每个 `` 后使用水平分隔线** — 强制性 - **比较、配置、结构化数据使用表格而非散文** - **图表优于文字墙** — 如果描述流程、结构或关系,添加 Mermaid ### 步骤 3:选择图表类型并阅读其指南 在创建任何 Mermaid 图表之前:阅读 `references/mermaid_style_guide.md`。 然后打开特定类型文件(例如 `references/diagrams/flowchart.md`)获取示例、提示和复制粘贴模板。 每个图表的强制性规则: ``` accTitle: 简短名称 3-8 字 accDescr: 一两个句子解释此图表显示的内容。 ``` - **不使用 `%%{init}` 指令** — 破坏 GitHub 暗色模式 - **不使用内联 `style`** — 仅使用 `classDef` - **每个节点最多一个表情符号** — 在标签开始处 - **`snake_case` 节点 ID** — 与标签匹配 ### 步骤 4:编写文档 从模板开始。应用 Markdown 样式指南。将图表与相关文本内联放置 — 而不是在单独的“图”部分。 ### 步骤 5:作为文本提交 带有嵌入式 Mermaid 的 `.md` 文件是要提交的内容。如果您还生成了 PNG 或 AI 图像,这些是补充性的 — Markdown 是源。 --- ## ⚠️ 常见陷阱 ### 雷达图语法 (`radar-beta`) **错误:** ```mermaid radar title Example x-axis ["A", "B", "C"] "Series" : [1, 2, 3] ``` **正确:** ```mermaid radar-beta title Example axis a["A"], b["B"], c["C"] curve series["Series"]{1, 2, 3} max 3 ``` - **使用 `radar-beta`** 而不是 `radar`(裸关键字不存在) - **使用 `axis`** 定义维度,**不** 使用 `x-axis` - **使用 `curve`** 定义数据系列,**不** 使用带冒号的引用标签 - **没有 `accTitle`/`accDescr`** — radar-beta 不支持可访问性注释;始终在图表上方添加描述性斜体段落 ### XY 图表与雷达图混淆 | 图表 | 关键字 | 轴语法 | 数据语法 | | ------- | ------- | ----------- | ----------- | | **XY 图表**(条形/折线) | `xychart-beta` | `x-axis ["Label1", "Label2"]` | `bar [10, 20]` 或 `line [10, 20]` | | **雷达图**(蜘蛛/网络) | `radar-beta` | `axis id["Label"]` | `curve id["Label"]{10, 20}` | ### 忘记在支持的类型上使用 `accTitle`/`accDescr` 只有部分图表类型支持 `accTitle`/`accDescr`。对于不支持的类型,始终在代码块正上方放置描述性斜体段落: > _雷达图比较三种方法在五个性能维度上的表现。注意:雷达图不支持 accTitle/accDescr。_ ```mermaid radar-beta ... ``` --- ## 🔗 与其他技能的集成 ### 与 `scientific-schematics` 集成 `scientific-schematics` 生成 AI 驱动的出版质量图像(PNG)。使用 Mermaid 图表作为示意图的**简报**: ``` 工作流: 1. 在 .md 中创建 Mermaid 概念(此技能 — 第 1 阶段) 2. 向 scientific-schematics 描述相同概念以获取精美的 PNG(第 3 阶段) 3. 提交两者 — .md 作为源,PNG 作为补充图 ``` ### 与 `scientific-writing` 集成 当 `scientific-writing` 生成手稿时,所有图表和结构图形应使用此技能的标准。写作技能处理散文和引用;此技能处理视觉结构。 ``` 工作流: 1. 使用 scientific-writing 起草手稿 2. 对于显示工作流、架构或关系的每个图: - 用遵循此技能指南的 Mermaid 图表替换占位符 3. 仅对真正需要逼真/复杂渲染的图使用 scientific-schematics ``` ### 与 `literature-review` 集成 文献综述产生包含大量关系数据的摘要。使用此技能: - 创建文献景观的概念图(思维导图) - 显示出版物时间线(时间线或甘特图) - 比较方法(象限图或雷达图) - 绘制论文中描述的数据流(序列图或流程图) ### 与产生输出文档的任何技能集成 在最终确定任何技能的任何文档之前,应用此技能的清单: - [ ] 文档是否使用模板?如果是,我是否从正确的模板开始? - [ ] 所有图表是否都在 Mermaid 中并带有 `accTitle` + `accDescr`? - [ ] 没有 `%%{init}`,没有内联 `style`,只有 `classDef`? - [ ] 所有外部声明是否都用 `[^N]` 引用? - [ ] 一个 H1,仅 H2 使用表情符号? - [ ] 每个 `` 后有水平分隔线? --- ## 📚 参考索引 ### 样式指南 | 指南 | 路径 | 行数 | 涵盖内容 | | ----------------------- | ------------------------------------------- | ----- | -------------------------------------------------- | | Markdown 样式指南 | `references/markdown_style_guide.md` | ~733 | 标题、格式、引用、表格、Mermaid 集成、模板、质量清单 | | Mermaid 样式指南 | `references/mermaid_style_guide.md` | ~458 | 可访问性、表情符号集、颜色类、主题中性、类型选择、复杂度级别 | ### 图表类型指南(24 种类型) 每个文件包含:生产质量示例、特定于该类型的提示和复制粘贴模板。 `references/diagrams/` — architecture, block, c4, class, complex\_examples, er, flowchart, gantt, git\_graph, kanban, mindmap, packet, pie, quadrant, radar, requirement, sankey, sequence, state, timeline, treemap, user\_journey, xy\_chart, zenuml ### 文档模板(9 种类型) `templates/` — decision\_record, how\_to\_guide, issue, kanban, presentation, project\_documentation, pull\_request, research\_paper, status\_report ### 示例 `assets/examples/example-research-report.md` — 完整的科学研究报告,展示了正确的标题层次结构、多种图表类型(流程图、序列图、甘特图)、表格、脚注引用、可折叠部分以及所有样式指南规则的应用。 --- ## 📝 归因 本技能中的所有样式指南、图表类型指南和文档模板均从 `SuperiorByteWorks-LLC/agent-project` 存储库移植,在 Apache-2.0 许可下。 - **来源**:https://github.com/SuperiorByteWorks-LLC/agent-project - **作者**:Clayton Young / Superior Byte Works, LLC (@borealBytes) - **许可**:Apache-2.0 此技能(作为 scientific-agent-skills 的一部分)在 MIT 许可下分发。包含的 Apache-2.0 内容兼容下游使用,保留归因,如本技能中文件头中所保存。 --- [^1]: GitHub Blog. (2022). "Include diagrams in your Markdown files with Mermaid." https://github.blog/2022-02-14-include-diagrams-markdown-files-mermaid/ [^2]: Mermaid. "Mermaid Diagramming and Charting Tool." https://mermaid.js.org/ ## 工具和编辑器 ### Mermaid Live Editor Mermaid Live Editor是一个在线编辑器,允许您实时预览Mermaid图表。 - 访问:https://mermaid.live - 在左侧编辑器中输入Mermaid代码 - 在右侧预览图表 - 导出为SVG、PNG等格式 ### Markdown编辑器 许多Markdown编辑器支持Mermaid语法: - **Obsidian**:原生支持Mermaid - **Typora**:原生支持Mermaid - **VS Code**:通过插件支持Mermaid - **GitHub**:原生支持Mermaid - **GitLab**:原生支持Mermaid ## 最佳实践 1. **保持简单**:避免过于复杂的图表 2. **使用清晰的标签**:使用描述性的节点和边标签 3. **保持一致性**:在整个文档中使用一致的样式 4. **测试图表**:在Mermaid Live Editor中测试图表 5. **文档化图表**:为图表添加标题和描述 6. **使用子图**:对于复杂图表,使用子图进行组织 7. **考虑可访问性**:为图表提供文本描述 ## 常见问题 **Q: Mermaid支持哪些图表类型?** A: Mermaid支持流程图、序列图、类图、状态图、ER图、甘特图、饼图、思维导图、时序图、Git图、用户旅程图、C4图等。 **Q: 如何在Markdown中使用Mermaid?** A: 使用 ```mermaid 代码块包围Mermaid代码。 **Q: Mermaid图表可以导出吗?** A: 是的,可以使用Mermaid Live Editor将图表导出为SVG、PNG等格式。 **Q: Mermaid支持自定义样式吗?** A: 是的,Mermaid支持自定义样式,包括颜色、字体、大小等。 ## 资源 - **Mermaid官方文档**:https://mermaid.js.org/intro/ - **Mermaid Live Editor**:https://mermaid.live - **Mermaid GitHub**:https://github.com/mermaid-js/mermaid