mcpField
D
diagram-generator

diagram-generator

github.com/oimiragieo开发45146 次安装18 周前更新
代码仓库

关于 diagram-generator

diagram-generator 是用于生成 Mermaid 图表及独立 HTML 导出的技能,面向需要展示架构、模式、流程等内容的开发者。它支持多种图表类型,并为大型代码库提供分块和节点限制指引。

主要功能

  1. 01生成多种 Mermaid 图表
  2. 02导出独立 HTML 文件
  3. 03支持架构、流程与数据库图
  4. 04大型代码库分块建议
  5. 05限定输出目录与图表规模

适用场景

  1. 01绘制代码库架构或组件关系
  2. 02展示 API 交互与请求流程
  3. 03制作数据库实体关系图
  4. 04生成可分享的交互式 HTML 图表

安装

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

$npx skills add https://github.com/oimiragieo/agent-studio --skill diagram-generator

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

包含的文件

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

commands/
diagram-generator.md
hooks/
post-execute.cjs
pre-execute.cjs
references/
research-requirements.md
rules/
diagram-generator.md
schemas/
input.schema.json
output.schema.json
scripts/
main.cjs
templates/
implementation-template.md

详细介绍

图表生成器 — 可创建 Mermaid 图表和独立 HTML 导出文件,用于架构、架构设计、流程以及所有支持的图表类型。

图表类型

类型关键字适用场景
流程图flowchart TB/LR决策流程、过程
时序图sequenceDiagramAPI 交互、协议
类图classDiagramOOP 结构、接口
状态图stateDiagram-v2生命周期、状态机
ER 图erDiagram数据库架构
甘特图gantt项目时间线
饼图pie分布、组成
思维导图mindmap层级思维导图
时间线timeline按时间顺序排列的事件
Git 图gitGraph分支可视化
看板kanban任务看板
象限图quadrantChart2x2 矩阵

处理限制

  • 每个图表的文件分块限制:1000 个文件(硬性限制)
  • 可视化限制:每个图表最多约 200 个节点
  • 大型代码库:按子系统/层拆分;先生成概览,再生成详情

独立 HTML 输出模式

触发短语:“导出为 HTML”、“独立图表”、“交互式图表”

生成一个自包含的 HTML 文件,其中嵌入 Mermaid.js CDN、深色/浅色切换按钮,以及响应式 CSS(max-width: 1200px):

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>TITLE</title>
    <script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
    <script>
      mermaid.initialize({ startOnLoad: true, theme: 'dark' });
    </script>
    <style>
      body {
        font-family: system-ui;
        max-width: 1200px;
        margin: 2rem auto;
        background: #1e1e2e;
        color: #cdd6f4;
      }
    </style>
  </head>
  <body>
    <h1>TITLE</h1>
    <button
      onclick="let d=!d;mermaid.initialize({startOnLoad:false,theme:d?'dark':'default'});document.querySelector('.mermaid').removeAttribute('data-processed');mermaid.run()"
    >
      Toggle Theme
    </button>
    <div class="mermaid">MERMAID_CONTENT</div>
  </body>
</html>

**默认:**深色模式(background: #1e1e2e,color: #cdd6f4) 输出:.claude/context/artifacts/diagrams/{subject}-{YYYY-MM-DD}.html

输出位置

  • Mermaid 文件:.claude/context/artifacts/diagrams/{subject}-{type}-{YYYY-MM-DD}.mmd
  • HTML 文件:.claude/context/artifacts/diagrams/{subject}-{YYYY-MM-DD}.html

铁律

  1. 仅使用 Mermaid 语法 — 禁止使用 ASCII 艺术或 PlantUML。
  2. 每个图表的节点数不得超过 200 个。
  3. 图表只能写入 .claude/context/artifacts/diagrams/。
  4. 为所有不明显的连接添加标签。
  5. 执行 1000 个文件的硬性限制 — 对大型代码库进行分块。

Mermaid 插件生成模式

使用 Claude Code 插件模式从代码分析生成图表(参考:agentic-coding-school/mermaid-diagram-plugin):

步骤 1:分析代码库结构
# Identify components to diagram
pnpm search:code "class|interface|module|service|component" | head -50
步骤 2:生成 Mermaid 源码

使用 Claude 将代码分析结果转换为图表语法。始终指定具体的图表类型和范围:

"Generate a Mermaid flowchart TB of the authentication flow in src/auth/"
"Create an ER diagram for the database tables in prisma/schema.prisma"
"Make a sequence diagram for the API request lifecycle in src/api/"
步骤 3:渲染交互式 HTML

对于可独立分享的图表,请使用完整的 HTML 模板:

// Plugin invocation pattern (from mermaid-diagram-plugin)
const mermaidContent = `
flowchart TB
  A[User Request] --> B{Auth Check}
  B -- Valid --> C[Route Handler]
  B -- Invalid --> D[401 Response]
  C --> E[Database Query]
  E --> F[Response]
`;

// Render to interactive HTML
const html = `<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>${title}</title>
    <script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
    <script>mermaid.initialize({ startOnLoad: true, theme: 'dark' });</script>
    <style>
      body { font-family: system-ui; max-width: 1200px; margin: 2rem auto;
             background: #1e1e2e; color: #cdd6f4; }
      .controls { margin-bottom: 1rem; }
      button { padding: 0.5rem 1rem; margin-right: 0.5rem; cursor: pointer; }
    </style>
  </head>
  <body>
    <h1>${title}</h1>
    <div class="controls">
      <button onclick="toggleTheme()">Toggle Theme</button>
      <button onclick="downloadSVG()">Download SVG</button>
    </div>
    <div class="mermaid">${mermaidContent}</div>
    <script>
      let dark = true;
      function toggleTheme() {
        dark = !dark;
        mermaid.initialize({ startOnLoad: false, theme: dark ? 'dark' : 'default' });
        document.querySelector('.mermaid').removeAttribute('data-processed');
        mermaid.run();
      }
      function downloadSVG() {
        const svg = document.querySelector('.mermaid svg');
        if (!svg) return;
        const blob = new Blob([svg.outerHTML], { type: 'image/svg+xml' });
        const a = document.createElement('a'); a.href = URL.createObjectURL(blob);
        a.download = '${title.replace(/\s+/g, '-')}.svg'; a.click();
      }
    </script>
  </body>
</html>`;
步骤 4:保存输出
# Save interactive HTML to standard location
# .claude/context/artifacts/diagrams/{subject}-{YYYY-MM-DD}.html
从 Agent 调用插件

当 Agent 需要在工作流中生成图表时:

// Invoke diagram-generator skill, then request specific type
Skill({ skill: 'diagram-generator' });

// Then describe what to diagram with context
// "Create a class diagram for src/lib/routing/ — show all classes and their relationships"

何时调用

对于架构图、HTML 导出、思维导图、时间线、Git 可视化、看板和象限图,请使用 Skill({ skill: 'diagram-generator' })。

评论

支持 Markdown