关于 skills-audit
skills-audit 用于定期检查项目本地 `.agents/skills/`,发现内容重叠、触发边界不清、过时内容和失效引用。它为维护者提供审查流程,并要求依据证据报告可执行的问题。
主要功能
- 01盘点技能并包含符号链接
- 02查找内容重叠和边界不清
- 03检查过时技能与引用
- 04依据证据报告问题
适用场景
- 01新增或重命名技能后复查
- 02定位相互竞争的技能触发条件
- 03核验交叉引用和目标文件
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ lobehub/ lobehub --skill skills-audit安装后在 Claude Code 中输入/skills-audit确认已加载。
附带文件agents/openai.yaml
详细介绍
技能审查
定期审查 .agents/skills/ 下项目本地的技能集。目的是在目录变得混乱之前发现偏差——技能过多、触发条件重叠、描述与正文不再匹配,以及引用了已重命名或删除的技能。
建议频率: 每周一次,或在新增/重命名技能超过 1 个的一周之后进行。
流程
1 — 清点
建立当前清单,包括符号链接的技能。检查 package.json 脚本和 .agents/scripts/ 中是否有清点/检查辅助工具;如有,请复用,并检查其支持的选项,而不是重复编写检查逻辑。阅读每项技能的描述,并在需要调查路由、重叠或过期引用时检查正文。若没有清点辅助工具:
find -L .agents/skills -name SKILL.md | wc -l # total count, including symlinked skills
find -L .agents/skills -name SKILL.md -exec wc -l {} \; | sort -rn # by body length, including symlinked skills
在脑中按领域归类(数据库/状态/UI/Agent/测试/工作流/文档等)。记录上次审查后新增的技能(git log --since="1 week ago" -- .agents/skills/)。
2 — 检测重叠/冗余
对于同一领域中的每一对技能,询问:
- 描述相同? → 可能是重复项(其中一个可能是已重命名技能的遗留项,或全局与本地技能冲突)。
- 同一任务符合多个描述? → 检查这些技能是互补还是实际存在竞争;仅在选择含糊时明确划分界限。
- 某项技能的正文写着“另请参阅:foo”? → 确认
foo仍然存在,并确认交叉引用仍有意义(被引用的技能可能已纳入引用方关注的内容)。 - 技能与
AGENTS.md中的内容重复? → 合并到 AGENTS.md,或精简技能,只保留差异部分。
常见误报(不要合并):
db-migrations与drizzle—— 工作流不同(迁移文件与架构编写)。agent-runtime-hooks、agent-tracing与agent-signal—— Agent 系统的不同方面。testing与acceptance—— 测试类型不同。
3 — 描述与调用边界
检查描述是否清楚说明技能用途和选择边界,并与正文相符。标记会吸引无关任务的宽泛触发条件、重叠技能之间缺失的区别,以及过时的名称或引用。
不要强制要求使用 Use when 或 Triggers on 等固定短语、固定句式,或要求描述长度与正文成比例。这些是写作选择,不是运行时路由控制。将脚本的措辞启发式视为审查提示,而不是缺陷证据。
根据当前运行框架支持的元数据,核实仅显式调用设置,例如 frontmatter 中的 disable-model-invocation 或 agents/openai.yaml 中的 policy.allow_implicit_invocation。不要假设不同运行框架识别相同字段。保留预期策略;不要仅凭描述措辞推断运行时行为。
4 — 过期技能检查
对于范围狭窄的领域技能(例如 response-compliance、一次性的 CLI 工作流):
# Confirm the referenced code surface still exists
rg -l "response-compliance|openresponses" packages/ src/ # adjust per skill
git log --since="3 months ago" -- '.agents/skills/<skill>/SKILL.md' # replace <skill>
如果相关功能已不存在,且技能已有 3 个月以上未编辑 → 标记为待归档。
4b — 持续日志新鲜度(common-mistakes.md、probe-mock-patterns.md)
这两层(.agents/skills/acceptance/references/ 通用层,.agents/acceptance/
项目层)都会注入每轮 acceptance,因此过期条目就是过期指令。检查每条:
rg -n '^`since|holds-while' .agents/acceptance/common-mistakes.md # every entry must carry both
rg -n 'holds-while: (?!always)' -P .agents/acceptance/common-mistakes.md # the mechanism-bound ones
- 缺少
since/holds-while→ 该条目早于准入规则;要么补上这些字段,要么移至 field-notes。 - 对于每个非
always的holds-while,检查所指机制是否仍然存在(脚本默认值、摄取缺口、平台行为)。若已不存在 → 删除该条目(PROCESS.md Step 0 退出规则);历史记录由 field notes 保留。 - 在通用层中提及项目脚本或产品名词的条目,所在层级不正确。
- 重复的 id(
rg -o '^### [ML]-?[A-Z]?\d+' | sort | uniq -d)。
5 — 交叉引用完整性
检查实际的技能链接、命名的交接项和引用文件是否指向其所属根目录,包括符号链接目标。反引号中的代码符号或 CLI 命令不一定是技能引用。报告断链前,先解析已重命名或移动的目标;获准编辑时,修复已确认的引用。
6 — 输出报告
报告可执行的发现,提供文件引用、证据和建议的更改。区分已确认的问题和不确定的候选项。只有在有助于用户决策时,才提供清单统计或执行顺序;无需固定标题、模板或行数估算。
仅审计的请求应提供建议。用户通过 --apply 或普通语言授权修复后,应在授权范围内直接应用安全的更改,无需再次询问。删除操作需要获得涵盖目标的授权;若用户已授权,则无需再次请求。
输出规则
- 具体说明。“技能 X 与 Y 重叠”这种说法毫无用处,必须指出重叠的触发条件。
- 指出描述或正文问题时,注明行号。
- 除非调用点确实会在同一上下文中加载合并后的技能,否则不要建议合并。
- 不要建议删除近期未修改过的技能——“未使用”可能意味着“稳定”,而非“废弃”。
不要做的事
- ❌ 不要因为表格中的部分字段已过时就删除整张表或整个章节。应更新过时的字段(状态、路径、数量),并保留代码无法复现的决策信息:优先级、负责人、日期、理由。
- ❌ 未检查交叉引用以及提及旧 slug 的用户记忆条目之前,不要重命名技能目录。
- ❌ 不要仅为缩短描述或符合模板而移除有意义的选择边界。
- ❌ 不要仅因领域相同,就把 200 行以上的大型技能合并到另一项技能中——大型技能会按需选择性加载,合并会导致所有内容都被加载。
- ❌ 除非用户明确要求,否则不要建议重组为
.agents/skills/INDEX.md或重命名为<domain>-<skill>前缀形式——这样做的成本大于外观整理带来的收益。