Skills: 触发器与自动激活

最后更新:2026-08-31

好的 Skill 应该像空气——你需要时它就在,不需要时它不碍事。触发器就是那个"需要时"的开关。


1. 触发器类型

(1) 关键词触发

最常用的触发方式,匹配用户输入中的关键词:

YAML
triggers:
  - keyword: "review|审查代码"
  - keyword: "debug|调试|排错"
匹配规则 说明 示例
精确匹配 完全等于关键词 "deploy"
模糊匹配 包含关键词即可 "review" 匹配 "请 review 一下"
正则匹配 正则表达式 "fix.*bug"
多关键词 任一匹配即触发 "refactor|重构"

(2) 文件类型触发

根据操作文件的扩展名或路径自动激活:

YAML
triggers:
  - file_pattern: "**/*.py"
  - file_pattern: "src/components/**/*.tsx"

(3) 上下文条件触发

根据项目环境或对话状态激活:

YAML
triggers:
  - context: "git_diff_available"
  - context: "test_failed"
  - context: "has_package_json"

2. 触发优先级

当多个 Skill 同时匹配时,按优先级选择:

TEXT 📖 仅展示
优先级从高到低:
1. 手动指定调用(用户明确要求)
2. 关键词精确匹配
3. 上下文条件匹配
4. 文件类型模糊匹配
5. 默认兜底 Skill

(1) 优先级配置

YAML
triggers:
  - keyword: "紧急修复"
    priority: 100
  - keyword: "修复"
    priority: 50

(2) 冲突解决

当两个 Skill 竞争时:

TEXT 📖 仅展示
用户输入: "review 这个 Python 文件的 bug"

匹配结果:
├── code-review Skill (keyword: "review") → 优先级 80
├── python-review Skill (keyword: "review" + file: *.py) → 优先级 90 ✅
└── debug Skill (keyword: "bug") → 优先级 70

结果: 选择 python-review,因为它匹配更精确

3. 组合触发器

(1) AND 组合

所有条件同时满足才触发:

YAML
triggers:
  - and:
      - keyword: "部署"
      - context: "main_branch"

(2) OR 组合

任一条件满足即触发:

YAML
triggers:
  - or:
      - keyword: "测试|test"
      - file_pattern: "**/*test*.py"

(3) NOT 排除

满足条件时不触发:

YAML
triggers:
  - keyword: "重构"
  - not:
      - context: "production_branch"

4. 触发器实战

▶ 示例:智能调度系统

Alice 为团队设计了一套自动触发系统:

YAML
# .claude/skills/auto-test.md
---
name: auto-test
triggers:
  - and:
      - file_pattern: "src/**/*.py"
      - context: "file_modified"
  - not:
      - file_pattern: "src/**/migrations/**"
---

修改 Python 源文件后自动运行测试......

Bob 评价:"这套系统让团队不需要记得调用哪个 Skill——只要正常工作,该来的支援自动就来了。"

(1) 常见触发场景

场景 触发方式 示例 Skill
打开某类文件 文件类型 Python 代码审查
提交代码前 上下文条件 Pre-commit 检查
测试失败 上下文条件 自动调试
输入特定指令 关键词 部署、发布
PR 创建 上下文条件 代码审查

❓ 常见问题

Q 关键词太多会不会互相冲突?
A 会。建议每个 Skill 用 1-2 个核心关键词,避免大范围重叠。冲突时靠优先级和精确度解决。
Q 上下文条件支持哪些?
A 各平台不同,常见有:git_diff_available、test_failed、branch_name、file_modified、has_config_file 等。
Q 能不能禁用某个 Skill 的自动触发?
A 可以,在配置中设置 auto_trigger: false,该 Skill 只能手动调用。

📖 小节


📝 作业

  1. 基础题(难度⭐):为之前创建的 code-review Skill 添加两种不同类型的触发器。
  2. 进阶题(难度⭐⭐):设计一个组合触发器,当修改 Python 测试文件时自动运行测试,但排除迁移文件。
  3. 挑战题(难度⭐⭐⭐):设计一个团队级触发器调度系统,处理 5+ 个 Skill 之间的优先级和冲突。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏