编写与调用 Skills
创建 SKILL.md,控制用户调用、模型发现与文件路径激活。
Skill 把可重复的工作方法保存在一个目录中,核心文件是 SKILL.md,还可以附带说明、脚本和模板。模型依据描述选择相关 Skill;你也可以直接调用它。
先选存放位置
| 范围 | 路径 | 用途 |
|---|---|---|
| 个人 | ~/.qwen/skills/<name>/SKILL.md | 跨项目的个人工作方法 |
| 项目 | .qwen/skills/<name>/SKILL.md | 随仓库共享的团队工作方法 |
| 扩展 | 已启用扩展的 skills/ | 扩展提供的能力 |
| 内置 | 随 Qwen Code 提供 | 产品附带的 Skills |
同注册名按项目、个人、扩展、内置的顺序选择。扩展名称和设置匹配另见发现与冲突。
写最小文件
例如在 .qwen/skills/review-tests/SKILL.md 中写:
---
name: review-tests
description: Review changed unit tests for missing edge cases and unreliable assertions.
---
Read the changed tests and the implementation they exercise.
Report concrete missing cases and explain which behavior each case verifies.name、description 都必须是非空字符串。名称允许 Unicode 字母、数字以及 _、:、.、-,不允许空白、斜杠或括号;共享时优先使用小写 ASCII 加连字符。名称中的冒号本身不能证明它来自扩展。
可选 priority 必须是有限数字。较高值只会在 /skills 列表提前;斜杠补全与 /help 自定义命令列表仍按字母序。省略或无效时按未设置处理,效果相当于 0;负数排在未设置项后。
描述要同时说明任务和触发条件。正文写操作步骤、证据要求和输出方式;大型参考材料可以另存为 reference.md,在正文中用相对链接引用,脚本放在 scripts/。
两条调用路径
/review-tests
/skills第一行调用指定 Skill;第二行在交互终端打开浏览、搜索和切换面板。/skills review-tests 不会运行该 Skill,额外名称会被忽略。也可以自然语言提出测试审查任务,让模型自行选择。
| frontmatter | 用户直接调用 | 模型调用 |
|---|---|---|
| 未设置以下字段 | 可用 | 可用,受发现条件限制 |
user-invocable: false | 从斜杠入口和选择器隐藏 | 仍可用 |
disable-model-invocation: true | 仍可用 | 隐藏 |
| 两者同时设置 | 不可通过正常入口调用 | 不可通过正常入口调用 |
按文件激活
paths:
- 'src/**/*.tsx'
- 'packages/*/src/**/*.tsx'把以上字段加入 frontmatter,模型列表会先隐藏该 Skill,直到工具触及匹配文件。glob 由 picomatch 相对项目根目录匹配,项目外文件不会触发。
激活后保留到会话结束;新会话或编辑任意 Skill 文件触发缓存刷新会重置激活。用户直接输入 Skill 命令可以绕过这层发现条件,但不会替模型解锁后续调用;若要模型继续调用,仍需先触及匹配文件。设置了 disable-model-invocation: true 时,匹配路径也不会让它出现在模型列表。
修改和验证
常规会话会监听个人和项目 Skill 目录,增删或编辑后稍等即可刷新列表与调用状态。Bare 模式不发现 Skills,也不会启动这些监听,不适合测试 Skill 加载。
检查文件路径、首行和正文前的 ---、YAML 缩进,再用匹配描述的真实任务测试。运行 qwen --debug 可以查看加载错误。若列表存在而模型不用,优先检查描述、路径激活和调用开关,而不是反复复制同一份 Skill。