SuperAPI AI 工具集

auto-skill

办公与效率

查看项目

更新于 10-13 16:35

技能介绍

Auto-Skill 介绍

Auto-Skill 是一个用于 Claude Code 的技能,主要用途是评估当前会话中的工作流程,并把值得复用的复杂操作保存为新的技能。它强调遵循 Agent Skills 规范并执行质量门禁,避免生成低质量或重复的技能。

触发方式

  • 用户运行 /auto-skill
  • 在复杂会话后由 Stop 钩子建议触发(会话需满足 8 个以上变更操作、跨 4 种以上工具类型)
  • 用户说出“save this as a skill”、“capture this workflow”等类似指令

命令与路由

运行 auto-skill 或 /auto-skill 后可解析不同参数:

  • 无参数:执行完整评估流程
  • auto-skill off:全局禁用,创建 ~/.claude/auto-skill.disable 并确认
  • auto-skill on:全局启用,删除 ~/.claude/auto-skill.disable 并确认
  • auto-skill off --project:为当前项目禁用,创建 .claude/auto-skill.disable
  • auto-skill on --project:为当前项目启用,删除 .claude/auto-skill.disable
  • auto-skill status:显示当前状态
  • auto-skill pending:显示 ~/.claude/auto-skill/pending.log 中过去可能被忽略的建议
  • auto-skill clear:在确认后清空待处理日志

状态查看

auto-skill status 会检查并报告:全局开关、项目开关、钩子脚本是否安装、当前会话跟踪是否活跃,并以简短表格形式呈现。

评估流程

创建技能前,Auto-Skill 会执行多步流程:

  1. 评估会话:判断是否为多步骤工作流(3 个以上不同动作)、是否可复用、是否新颖、是否可教学。任一条件不满足则停止并说明原因。
  2. 重复检测:检查现有技能名称与描述。若存在完全同名、名称词重叠 60% 以上、描述词重叠 50% 以上,则阻止创建并建议扩展现有技能。
  3. 草拟技能:向用户提议名称、描述、步骤和所需工具,并请用户确认或调整。
  4. 质量门禁:校验名称格式、描述长度、步骤结构、正文最小 200 字符、许可证、元数据、顶层键等。任一失败会说明并帮助修复。
  5. 创建技能:写入 .claude/skills/<skill-name>/,生成 SKILL.md 以及 scripts、references、assets 目录。SKILL.md 使用 Agent Skills 规范的前置元数据和正文结构。
  6. 验证:检查文件写入、前置元数据合法性、步骤段是否存在,并告知用户如何调用。

待处理日志

由于 Stop 钩子的 systemMessage 输出发送给 Claude 而非直接展示给用户,建议可能被忽略。钩子每次触发会向 ~/.claude/auto-skill/pending.log 追加一行记录,字段包括 ISO8601 时间戳、短会话 ID、触发时的工作目录、变更操作数、唯一工具类型数、总工具调用数、前 6 工具直方图。/sync 会在会话开始时读取该日志,并在最近 72 小时内的条目中呈现“Skill Suggestions”。

钩子设置与配置

Auto-Skill 使用两个全局钩子:

  • ~/.claude/auto-skill/track-tools.sh:PostToolUse 钩子,统计每个会话的工具调用
  • ~/.claude/auto-skill/evaluate.sh:Stop 钩子,在会话足够复杂时建议创建技能

两个钩子均静默失败,不会产生错误输出或阻止 Claude。需要在 ~/.claude/settings.json 中合并钩子配置,示例配置包含 PostToolUse 和 Stop。

建议门禁

Stop 钩子仅在以下条件全部满足时建议创建技能:变更操作 8 个以上、工具类型 4 种以上、没有加载非 harness 技能、每个会话仅一次、未禁用。只读工具不计入统计。

设计决策

  • 使用 Stop 钩子而非循环内钩子:Claude Code 不暴露 agent 循环,Stop 钩子在上下文仍在内存时触发。
  • systemMessage 输出:Stop 钩子输出 JSON,由 Claude Code 展示给用户,非阻塞、可忽略。
  • 重视多样性而非数量:工具类型数量比原始调用数更重要。
  • 每会话冷却:使用以会话 ID 为键的临时文件,每个新会话都有机会。
  • 跟踪上限 500 行:防止失控会话填满 /tmp。
  • 静默失败:两个钩子都使用 2>/dev/null 并始终退出 0。