关于 dependency-graph
将代码模块、包或插件之间的导入和依赖关系整理为 Mermaid 流程图的 Skill,可用于依赖分析、循环依赖检测和重构规划。
主要功能
- 01生成 Mermaid 依赖流程图
- 02区分内部与外部导入
- 03标示关键和可选依赖
- 04检测并标记循环依赖
- 05汇总入度与出度
适用场景
- 01检查代码库中的依赖关系
- 02查找模块间的循环依赖
- 03评估重构影响范围
MCP 相关
工作流会调用 Mermaid Chart MCP,验证并渲染生成的流程图。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ athola/ claude-night-market --skill dependency-graph安装后在 Claude Code 中输入/dependency-graph确认已加载。
详细介绍
依赖关系图
生成 Mermaid 流程图,展示模块、包或插件之间的导入和依赖关系。
适用场景
- 了解各项内容之间的依赖关系
- 查找循环依赖
- 分析模块之间的耦合
- 通过查看依赖影响来规划重构
- 回答“如果我更改此项,会有哪些内容受到影响?”
不适用场景
- 运行时调用路径(使用
cartograph:call-chain) - 类型层次结构(使用
cartograph:class-diagram)
工作流
步骤 1:探索代码库
调度代码库探索 Agent:
Agent(cartograph:codebase-explorer)
Prompt: Explore [scope] and return a structural model.
Focus on import statements and cross-module dependencies
for a dependency graph. Track both internal and external
imports.
步骤 2:生成 Mermaid 语法
将结构模型转换为 Mermaid 流程图, 用有向边表示依赖关系。
依赖关系图规则:
- 使用
flowchart LR(从左到右)表示依赖方向 - 每个节点代表一个模块或包
- 边从依赖方指向其依赖项(A --> B 表示 “A 依赖 B”)
- 按依赖类型使用不同颜色:
- 内部依赖使用默认箭头
- 外部或可选依赖使用点状箭头(
-.->) - 关键路径依赖使用粗箭头(
==>)
- 按包或插件划分子图
- 如果给定深度参数,则限制传递依赖
- 使用红色样式突出显示循环依赖
输出示例:
flowchart LR
subgraph sanctum[Sanctum]
commit[commit]
pr_prep[pr_prep]
workspace[workspace]
end
subgraph leyline[Leyline]
git[git_platform]
errors[error_patterns]
end
subgraph external[External]
subprocess[subprocess]
json[json]
end
commit --> git
commit --> json
pr_prep --> workspace
pr_prep --> git
workspace --> errors
workspace -.-> subprocess
步骤 3:通过 MCP 渲染
调用 Mermaid Chart MCP 进行渲染:
mcp__claude_ai_Mermaid_Chart__validate_and_render_mermaid_diagram
prompt: "Dependency graph of [scope]"
mermaidCode: [generated syntax]
diagramType: "flowchart"
clientName: "claude-code"
如果渲染失败,请修正语法并重试(最多重试 2 次)。
步骤 4:呈现结果
展示渲染后的图表和分析说明:
- 模块总数和依赖数量
- 被依赖最多的模块(入度高)
- 依赖项最多的模块(出度高)
- 检测到的循环依赖(如有)
退出条件
- 已生成 Mermaid
flowchart LR语法,并使用从依赖方指向依赖项的有向边(A --> B 表示“A 依赖 B”) - 已调用
mcp__claude_ai_Mermaid_Chart__validate_and_render_mermaid_diagram,且调用成功、没有错误 - 分析说明包含模块总数、入度最高的模块和出度最高的模块
- 如果检测到循环依赖,则使用红色样式突出显示,并在分析说明中明确列出
- 外部依赖使用点状箭头(
-.->),以区别于内部依赖箭头
评论
支持 Markdown