先准备一个小任务
GitHub 文档把 Agent skills 描述为装有指令、脚本和资源的文件夹,Copilot 在任务相关时加载。文档举的发布说明例子里,就包括模板、收集变更的脚本和分组说明。
第一次可以先省去脚本,只做“按给定材料起草发布说明”。准备一个本地项目,并确认你使用的 Copilot 客户端支持项目级技能。这份示例只在对话里返回文本,不涉及提交或发布。
建立目录并放入两个文件
- 在项目中建立下面的目录。这里使用 Copilot 指南列出的项目级位置,其他客户端应先查各自支持的位置。
.github/skills/release-notes/
├── SKILL.md
└── template.md
- 将下面的完整内容保存为
SKILL.md。开头的 name 是技能名称,description 写清用途与触发场景,后面的正文才是实际处理步骤。
---
name: release-notes
description: 根据用户提供的版本号和变更列表起草发布说明。用于整理版本更新记录。
---
# 起草发布说明
只根据本次提供的材料在对话里返回草稿,不运行命令,不提交或发布。
1. 检查版本号和变更列表。缺少任意一项时,只输出“待补充信息”和缺失项,停止起草,不自行猜测。
2. 读取与本文件同目录的 `template.md`。如果读不到,说明缺少模板并停止起草。
3. 将变更分为新增、修复、改进,每项只出现一次。无法确定分类时先询问。
4. 按模板填入版本号和各组变更,保留变更的原意,没有变更的分组整段省略。
5. 检查每条输出能否对应输入,确认无遗漏、无重复,不添加未提供的日期、功能或效果。
6. 只返回 Markdown 发布说明草稿,不附加生成过程。
- 将下面内容保存为同目录下的
template.md。两份文件的名称与引用要一致,否则上面的步骤会因缺少模板而停止。
# {{版本号}} 发布说明
## 新增
{{新增变更}}
## 修复
{{修复变更}}
## 改进
{{改进变更}}
用完整材料和缺项材料各试一次
- 在目标客户端打开这个项目,发出下面的请求。版本号和变更都是演示数据,不代表真实产品更新。
请按 release-notes 技能整理发布说明,只在对话里返回草稿。
版本号 v1.2.0
变更列表
- 新增文章收藏功能。
- 修复移动端目录无法关闭的问题。
- 改进搜索结果的空状态提示。
参考输出如下。措辞可以不同,但三项变更应各出现一次,版本号与输入一致,不应多出其他功能或效果。
# v1.2.0 发布说明
## 新增
- 新增文章收藏功能。
## 修复
- 修复移动端目录无法关闭的问题。
## 改进
- 改进搜索结果的空状态提示。
- 再开一轮独立对话,删掉请求中的“版本号 v1.2.0”这一行,保留其余内容,重新发送。不要让上一轮对话里的版本号成为隐含输入。这次应停止起草,只说明缺少的信息。
待补充信息
- 版本号
如果它仍写出完整公告,或自行补了一个版本号,就没有达到本示例的检查要求。回头检查第一步是否写清“缺项时停止”,再重试。
用 Fal Claude 跑了两组测试
2026 年 10 月 22 日,我们用 Fal 提供的 Claude Sonnet 5.5 测了上面的两组输入。程序先读取真实的 SKILL.md 和 template.md,核对文件内容,再把文字随请求提供给模型。两组请求相互独立,不携带上一组对话,也没有把参考答案发给模型。
正常输入的返回与上面的参考输出一致,版本号为 v1.2.0,三项变更各出现一次,没有增加其他功能或效果。
删掉版本号后,Claude 停止起草,只返回了下面的缺项提示。它比参考输出多了一句解释,没有猜测版本号,也没有继续生成发布说明。
待补充信息
- 版本号:本次输入没有提供版本号,请补充后再起草发布说明。
两组各调用一次,没有重试。Fal 接口报告的费用合计为 0.00388 美元。
这次验证了程序读取文件并把文字提供给模型后的执行结果。Copilot、Claude Code 等客户端是否会自动发现和加载技能,以及模型能否自行读取文件,仍需在对应客户端另行验证。
确认技能是否被加载
查看目标客户端提供的技能加载提示或记录,确认读到了 release-notes,有条件时再检查是否读取了 template.md。若未加载,先核对项目位置、文件名和 description,再按该客户端指南排查支持情况。
如果客户端没有提供这类记录,仅凭输出像模板,还不能确认技能已经加载。可以先检查产出是否符合要求,把加载情况留待进一步确认。
文件格式参考 GitHub 的 Agent skills 概念说明和添加指南。项目级与个人级技能的位置、云端与本机的支持情况,应以目标客户端为准。