SuperAPI AI 工具集

skills-manager

智能体与模型

查看项目

更新于 10-16 08:27

技能介绍

用途

Skills Manager(智能路由器)是 anyproto/anytype-swift 项目中的一个元技能,用于对技能(skills)与钩子(hooks)进行上下文感知的路由与管理。它帮助排查技能激活问题、微调关键词,并管理自动化文档系统。

自动激活时机

  • 讨论技能激活或钩子时
  • 创建新技能时
  • 调试技能为何未激活或激活错误时

关键词包括:skill activation、hook、troubleshoot、fine-tune、keyword、skill-rules.json、create skill、new skill、agentskills。

关键规则

  • 日志是首要排查依据:始终先检查 .claude/logs/skill-activations.log
  • 修改后必须测试:对 skill-rules.json 的任何修改都要验证是否生效
  • 校验 JSON:提交前用 jq 校验 skill-rules.json
  • 关键词应具体:过于宽泛的关键词会导致误报

快速诊断流程

问题:技能未激活

  1. 检查日志:tail -20 .claude/logs/skill-activations.log
  2. 查看当前关键词:cat .claude/hooks/skill-rules.json | jq '.skills."SKILL-NAME".promptTriggers.keywords'
  3. 添加缺失关键词:可让 Claude 执行“Add 'KEYWORD' to SKILL-NAME”,或直接编辑 .claude/hooks/skill-rules.json
  4. 测试:echo '{"prompt":"test prompt"}' | .claude/hooks/skill-activation-prompt.sh

问题:技能在不该激活时激活

  1. 定位触发源:查看日志确认匹配了哪个关键词
  2. 删除或使其更具体:如“Remove 'text' from localization-developer”,或将“text”替换为“localized text”
  3. 验证:tail .claude/logs/skill-activations.log

常见任务

  • 添加关键词:可让 Claude 执行“Add 'refactoring' to ios-dev-guidelines keywords”,或手动编辑 skill-rules.json 的 keywords 数组
  • 删除关键词:可让 Claude 执行“Remove 'text' from localization-developer, it's too broad”,或手动编辑删除
  • 查看激活情况:tail -20 .claude/logs/skill-activations.log,关注“✓ Matched: skill-name”或“No matches found”
  • 手动测试激活:echo '{"prompt":"add feature flag"}' | .claude/hooks/skill-activation-prompt.sh,若匹配则输出技能建议

自动学习功能

当较长提示(100+ 字符或 3+ 行)未激活任何技能时,系统会提示可用技能,并根据反馈自动更新关键词。流程:提交较长提示 → 无技能激活 → 系统询问“Should any of these skills be activated?” → 用户回复如“Yes, localization-developer should activate” → Claude 从提示中提取关键词 → 执行 .claude/hooks/utils/add-keywords-to-skill.sh localization-developer <keywords> → 更新 skill-rules.json → 未来类似提示自动激活。

手动提取关键词示例:

# 测试关键词提取
echo "Update space settings localization for membership tiers" | .claude/hooks/utils/extract-keywords.sh
# 输出: membership, settings, localization, tiers, update

# 手动添加关键词
.claude/hooks/utils/add-keywords-to-skill.sh localization-developer "membership" "tiers"

相关日志:未激活记录 .claude/logs/skill-activations-missed.log;学习更新 .claude/logs/skill-learning.log。

系统组件

钩子(自动化)

位置:.claude/hooks/

  • skill-activation-prompt.sh - 根据提示建议技能
  • post-tool-use-tracker.sh - 跟踪文件编辑
  • swiftformat-post-edit.sh - 编辑后立即自动格式化 Swift 文件
  • notification-alert.sh - Claude 需要输入时发送 macOS 通知

技能(路由器)

位置:.claude/skills/*/SKILL.md

共 7 个技能:

  • ios-dev-guidelines - Swift/iOS 模式
  • localization-developer - 本地化
  • code-generation-developer - 功能开关、make generate
  • design-system-developer - 图标、排版、颜色
  • skills-manager - 本技能(元技能)
  • code-review-developer - 代码审查标准
  • feature-toggle-developer - 功能开关移除、清理检测

配置

位置:.claude/hooks/skill-rules.json

包含:每个技能的关键词、意图模式(正则)、文件路径模式、优先级设置。

配置结构示例:

{
  "skills": {
    "skill-name": {
      "type": "domain",
      "priority": "high",
      "description": "Smart router to...",
      "promptTriggers": {
        "keywords": ["keyword1", "keyword2"],
        "intentPatterns": ["(create|add).*?something"]
      },
      "fileTriggers": {
        "pathPatterns": ["**/*.swift"],
        "contentPatterns": ["SomePattern"]
      }
    }
  },
  "config": {
    "maxSkillsPerPrompt": 2,
    "logActivations": true
  }
}

创建新技能(agentskills.io 规范)

技能必须遵循 agentskills.io 规范。每个 SKILL.md 必须以 YAML frontmatter 开头:

---
name: skill-name
description: What this skill does and when to use it (max 1024 chars).
---

# Skill Title

## Purpose
...

名称字段规则:1-64 字符;仅小写 a-z、0-9、-;首尾不能有连字符;不能有连续连字符;必须与目录名一致。

描述字段:1-1024 字符;必须说明做什么以及何时使用;包含有助于代理识别相关任务的关键词。

可选 frontmatter 字段:license、compatibility、metadata(如 author、version)。

目录结构:

skill-name/
├── SKILL.md          # 必需 - 主技能文件
├── scripts/          # 可选 - 可执行脚本
├── references/       # 可选 - 附加文档
└── assets/           # 可选 - 模板、图片

新技能快速检查清单:目录名与 name 字段一致;YAML frontmatter 含 name 和 description;名称小写且仅含连字符;描述说明做什么和何时用;SKILL.md 少于 500 行(细节放 references/);已加入 skill-rules.json 并配置关键词;用示例提示测试激活。

常见问题

  • 钩子未执行:症状为无激活消息、日志为空。修复:chmod +x .claude/hooks/*.sh,并用 ls -l .claude/hooks/*.sh 验证权限。
  • JSON 无效:症状为钩子静默失败。修复:jq . .claude/hooks/skill-rules.json 校验,若有错误可让 Claude 修复。
  • 误报过多:症状为技能激活过于频繁。修复:使关键词更具体,如“text”改为“localized text”。

健康检查命令

# 检查钩子权限
ls -l .claude/hooks/*.sh

# 校验配置
jq . .claude/hooks/skill-rules.json

# 查看最近激活
tail -20 .claude/logs/skill-activations.log

# 按技能统计激活次数
grep "Matched:" .claude/logs/skill-activations.log | sort | uniq -c

# 测试特定提示
echo '{"prompt":"your test"}' | .claude/hooks/skill-activation-prompt.sh

实用提示

  • 让 Claude 检查日志:“Check the logs for my last prompt”
  • 用日志进行调优:定期查看以发现模式
  • 从宽泛开始:先加宽泛关键词,误报过多再收窄
  • 一切都要测试:修改 skill-rules.json 后务必测试
  • 记录变更:在 skill-rules.json 中添加注释

相关文档

  • .claude/hooks/README.md - 完整钩子文档
  • .claude/skills/README.md - 技能系统概览
  • CLAUDE.md - 主文档
  • .claude/SKILLS_MANAGEMENT_GUIDE.md - 完整管理指南(深入排查与管理细节)

快速求助:直接问“Check skills system health”或“Why didn't X skill activate?”