什么是 Skills?
在 AI 与智能编程工具中,Skill(技能) 可以理解为对某一类任务的'能力封装'或'可复用指令单元'。它不是一次性的 Prompt,而是经过抽象、总结、可以反复使用的能力描述。
简单来说,Prompt 是单次提问,而 Skill 则是可以反复调用的'能力模板'。例如生成一个 Java Getter 方法、根据接口文档生成 Controller 代码,或是把自然语言需求转换成 SQL,这些都可以被定义为 Skill。
为什么要使用 Skills?
实际开发中常遇到每次都要重新描述需求、AI 输出风格不统一、Prompt 越写越复杂等问题。Skill 的核心价值在于标准化、复用以及稳定输出。
使用 Skills 能提高效率,一次编写多次使用;降低心智负担,不用反复组织 Prompt;同时有明确规则约束,输出更稳定,方便团队协作共享沉淀。
如何编写一个 Skill?
一个好的 Skill,本质是把隐性经验变成显性规则。基本结构包括名称、目标、输入参数、约束规则和输出格式。你可以在输出格式里放入自己的代码风格要求,比如规定每个方法开始必须加上日志,格式为 log.xxx 记录入参。
通用模板如下:
Skill 名称:XXX
目标:用于完成 XXX 类型任务
输入参数:
- 参数 1
- 参数 2
规则:
- 遵循编码规范
- 不生成无关内容
输出:
- 指定格式结果
- 你的例子
实战示例:用 Skill 生成一个 Java 方法
我们以'生成标准 Java 方法'为例。这个 Skill 的目标是根据给定信息生成符合 Java 编码规范的业务方法。
输入参数包括方法名、返回类型、参数列表、业务描述,以及每行加上 log 日志的要求。
约束规则则强调使用 Java 命名规范、包含方法注释、逻辑清晰可读。
假设我们输入以下信息:
方法名:calculateTotalPrice
返回类型:BigDecimal
参数:BigDecimal unitPrice, int quantity
业务描述:根据单价和数量计算总价
生成的代码会是这样:
/**
* 根据单价和数量计算总价
*
* @param unitPrice 商品单价
* @param quantity 商品数量
* @return 总价
*/
public BigDecimal calculateTotalPrice(BigDecimal unitPrice, int quantity) {
log.info("入参是 商品单价:{} 商品数量:{}", unitPrice, quantity);
if (unitPrice == null || quantity <= 0) {
return BigDecimal.ZERO;
}
return unitPrice.multiply(BigDecimal.valueOf(quantity));
}
可以看到,代码不仅包含了必要的注释,还自动添加了符合规范的日志记录。


