# 模块 5:Skill 的难点是决策边界
Skill 的价值不在于堆叠说明,而在于把任务拆成可核对的输入条件、决策顺序、交接结果和停止边界。 只有这些边界被显式定义,复杂任务才能在不同项目事实下保持可控。
输入条件
决策顺序
交接结果
停止边界
--- # 一个真实 Skill 包如何按职责拆开
```text skill-name/ ├── SKILL.md # 触发条件、输入、工作流、输出与门禁 ├── agents/ │ └── openai.yaml # 展示名、简介与默认触发提示 ├── assets/ │ ├── 生成.prompt.md # 可复用任务 Prompt │ ├── 检查清单.md # 固定遗漏点 │ └── 报告.template.md # 结构化输出模板 ├── references/ # 稳定背景知识与兼容性说明 └── scripts/ # 可重复执行的机械检查 ```
`SKILL.md` 负责决策和编排;模板、检查单、参考资料和脚本各自承担单一职责,避免同一约束出现多个版本。
--- # SKILL.md 的核心结构
```md --- name: state-change-safety description: 当任务涉及业务状态写入、资源占用或释放时使用。 --- ## Inputs 变更目标、相关源码、状态规则、测试或 diff、项目约束。 ## Workflow 提取事实 -> 判断状态与副作用 -> 比较候选方案 -> 生成验证清单。 ## Output Contract 事实表、影响链路、最小改动建议、验证项、待确认事项。 ## Stop Conditions 证据不足、规则冲突、范围越界或关键验证失败时停止并说明原因。 ```
--- # agent 配置只解决“如何被发现”
```yaml interface: display_name: "状态变更安全审查" short_description: "分析状态写入、资源副作用与验证边界" default_prompt: "Use $state-change-safety to review this change." policy: allow_implicit_invocation: true ```
配置文件:让 Agent 找得到
SKILL.md:让 Agent 做得对
--- # 什么不该做成 Skill?
| 情况 | 更合适的资产 | 原因 | |---|---|---| | 只有一条永远成立的约束 | Rule | 没有多步决策必要 | | 只需固定格式生成一段内容 | Prompt 或 Command | 不需要上下文编排 | | 只检查五个固定项目 | Checklist | 不需要 Agent 主动分析 | | 只有一个项目的临时异常 | 任务记录或 Example | 复用价值不足 | | 需要读取、判断、生成、验证并输出结构化结果 | Skill | 需要多个资产协同 |