什么是 Skills?
在 AI 辅助编程的语境下,Skill(技能) 可以理解为对某一类任务的'能力封装'或'可复用指令单元'。它不同于一次性 Prompt,而是经过抽象总结、能够反复调用的能力描述。
简单来说,Prompt 是单次提问,而 Skill 则是可以反复调用的'能力模板'。比如生成一个 Java Getter 方法、根据接口文档生成 Controller 代码、或者把自然语言需求转换成 SQL,这些都可以被定义为一个 Skill。
为什么要使用 Skills?
实际开发中常遇到这些问题:每次都要重新描述需求、AI 输出风格不统一、Prompt 越写越复杂、团队成员使用方式不一致。Skills 的核心价值在于标准化、复用和稳定输出。
它的优势很明显:
- 提高效率:一次编写,多次使用
- 降低心智负担:不用反复组织 Prompt
- 输出更稳定:有明确规则约束
- 方便团队协作:可共享、可沉淀
如何构建一个 Skill?
一个好的 Skill,本质是把隐性经验变成显性规则。虽然不同平台实现略有差异,但基本结构通常包含以下要素:
- Skill 名称:清晰标识用途
- 目标描述:说明任务目的
- 输入参数:定义必要的数据项
- 约束规则:编码规范、格式要求等
- 输出格式:期望返回的结构
比如在输出格式里,你可以放入自己的代码风格偏好。如果你习惯在每个方法开始加上日志记录入参,就可以在这里规定格式为 log.xxx。
通用模板参考
Skill 名称:XXX
目标:用于完成 XXX 类型任务
输入参数:
- 参数 1
- 参数 2
规则:
- 遵循编码规范
- 不生成无关内容
输出:
- 指定格式结果
实战示例:用 Skill 生成 Java 方法
下面我们通过一个具体案例,看看如何定义并调用 Skill 来生成符合规范的 Java 业务方法。
配置参数
我们设定一个名为'生成标准 Java 方法'的 Skill,输入包括方法名、返回类型、参数列表和业务描述。同时加入一条特殊约束:每行加上 log 日志,格式为 log.xxx 打印入参。
输入示例:
方法名:calculateTotalPrice
返回类型:BigDecimal
参数:BigDecimal unitPrice, int quantity
业务描述:根据单价和数量计算总价
预期输出
当 Skill 被正确调用后,生成的代码应该包含注释、逻辑判断以及你预设的日志格式。注意这里修复了原始示例中的语法问题,确保代码可直接编译运行。
/**
* 根据单价和数量计算总价
*
* @param unitPrice 商品单价
* @param quantity 商品数量
* @return 总价
*/
public BigDecimal calculateTotalPrice {
log.info(, unitPrice, quantity);
(unitPrice == || quantity <= ) {
BigDecimal.ZERO;
}
unitPrice.multiply(BigDecimal.valueOf(quantity));
}


