关于 skill-graph-audit
skill-graph-audit 构建 marketplace 中 Skill 调用关系的有向图,供维护者检查组合结构和引用完整性。它可识别高引用节点、编排型 Skill、孤立节点及失效引用,并支持 JSON 输出。
主要功能
- 01从 Skill(plugin:name) 调用构建有向图
- 02识别高引用节点和编排型 Skill
- 03发现孤立节点与失效引用
- 04按类别区分失效引用
- 05支持 JSON 格式报告
适用场景
- 01重命名或弃用后检查断裂引用
- 02审查 Skill 组合文档
- 03季度检查孤立 Skill
- 04评估合并候选项的影响
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ athola/ claude-night-market --skill skill-graph-audit安装后在 Claude Code 中输入/skill-graph-audit确认已加载。
附带文件modules/interpretation.mdmodules/usage.md
详细介绍
技能图谱审计
概述
构建一个有向图,展示整个 marketplace 中的 Skill(plugin:name) 调用,并呈现组合模式:哪些技能被大量引用(枢纽),哪些技能会编排多个其他技能(编排者),哪些技能没有入向或出向引用(孤立节点),以及哪些技能引用了不存在的技能(悬空引用)。
现在可以根据源代码推导出联邦图谱,而不必手动维护。
适用场景
- 在审查技能组合相关文档之前
- 重命名或停用技能后,检查是否存在失效的
Skill()引用 - 在季度审计期间,找出孤立技能
- 评估适合合并的候选项时(枢纽合并风险更高)
- 需要对新技能的出向引用进行合理性检查时
不适用场景
- 如需对单个技能进行质量评分,请改用
Skill(abstract:skills-eval) - 如需验证 frontmatter/结构,请改用
Skill(abstract:plugin-review) - 如需进行钩子专项审计,请改用
Skill(abstract:hooks-eval)
快速开始
# Positive control first. The fixture tree has a known answer (1
# bug-class dangling ref, 1 isolate, 2 edges); a regex that stopped
# matching would report plugins/ as clean, and this catches it.
uv run pytest -o addopts= -q plugins/abstract/tests/scripts/test_skill_graph.py -k Planted
python3 plugins/abstract/scripts/skill_graph.py \
--plugins-root plugins --top-n 10
如需机器可读的输出:
python3 plugins/abstract/scripts/skill_graph.py \
--plugins-root plugins --format json --output reports/skill-graph.json
完整的 CLI 参考和工作流示例请参阅 modules/usage.md。
核心输出
| 输出 | 含义 | 数值较高时的处理方式 |
|---|---|---|
| 枢纽 | 被引用次数最多的技能 | 将其视为核心 API;停用时务必格外谨慎 |
| 编排者 | 会调用多个其他技能的技能 | 确认每个引用仍然有效 |
| 孤立节点 | 入向和出向引用均为零 | 检查其作用:是库?入口点?还是拼写错误? |
| 悬空引用:错误 | 缺失的内部目标 | 立即修复(拼写错误或已停用的技能) |
| 悬空引用:外部 | 对外部插件的引用 | 记录插件依赖 |
| 悬空引用:占位符 | 类似 -NAME 的模板文本 | 确认是否有意保留 |
关于误报的指导和孤立节点分类,请参阅 modules/interpretation.md。
Dogfood 证据
此技能本身采用 TDD 优先的方式搭建;首次针对
plugins/ 运行时,它发现了两个真实的悬空引用,而人工
审计(2026-04-25)未能发现:
attune:makefile-generation -> abstract:makefile-dogfooder(脚本名称与技能名称混淆)imbue:karpathy-principles -> spec-kit:speckit-clarify(命令被引用为技能)
两处引用都在同一会话中改为正确的命令式引用。
验证
有两种方法可验证审计输出是否可信:
- 测试套件正确性检查:运行
pytest -o addopts= plugins/abstract/tests/scripts/test_skill_graph.py,确认当前代码中的 提取、图构建、排名、孤立节点检测和悬空引用分类均通过。-o addopts=标志会绕过整个包的覆盖率门槛,否则单文件运行 会导致失败。 - 往返冒烟检查:记录基线运行的悬空引用数量,修复一条或多条 标记出的引用,然后重新运行并确认数量至少减少修复数量。 如果数量没有变化,则报告已过时,或正则表达式未匹配到某种 语法变体。
完成标准
- 在运行审计之前,预置样例测试已通过;若未通过,则不能将
plugins/上的干净报告视为有效报告 - 图谱成功构建:
skill_graph.py在plugins/上运行时 不报错,并输出节点/边数量。 - 悬空引用已分类为错误、外部和占位符(
核心输出中的三行 均得到处理)。 - 每个“悬空引用:错误”条目都已在同一会话中修复,或已登记为 可跟踪的问题。
-
pytest -o addopts= plugins/abstract/tests/scripts/test_skill_graph.py通过。 - 往返冒烟检查显示,悬空引用数量至少减少了已修复的引用数量。
相关技能
Skill(abstract:skills-eval):单个技能的质量评分Skill(abstract:plugin-review):插件清单和结构Skill(abstract:hooks-eval):钩子专项验证Skill(abstract:rules-eval):规则目录验证
参考资料
- 实现:
plugins/abstract/scripts/skill_graph.py - 测试:
plugins/abstract/tests/scripts/test_skill_graph.py - 组合文档:
docs/quality-gates.md#skill-level-quality-gate-composition - 技能角色分类:
docs/skill-integration-guide.md#skill-role-taxonomy
评论
支持 Markdown