Skills Engineering 是一套面向 Agent Skills 的工程化编写与迭代方法,围绕 SKILL.md 协议展开,目标是让技能作者以可测试、可评估、可改进的方式构建技能。
用途 该技能用于指导智能体编写、评估并迭代改进 Agent Skills。它采用严格的 TDD 生命周期,共包含九个阶段:spec、behavioral、script-test、script、skill、adversary、eval、improve、refactor。每个阶段只有一个职责,且每个阶段的产出会成为下一阶段的“红”状态输入。
主要能力
- 分阶段路由:每个阶段对应特定的 TDD 状态与任务,从声明意图到编写 BDD 契约、先写脚本验收测试、再实现脚本、编写 SKILL.md、构造对抗性测试、全量评估、修复失败,最后可选地重构。
- 调用方式:通过
bash skills/skills-engineering/scripts/generate.sh --phase <phase> --skill-path .agents/skills/<skill-name>调用。脚本会输出针对性提示词和下一阶段名称,由脚本处理层级检测、测试集选择与阶段排序;作者视角不会看到评估标准,评估视角也不会看到编写指令。 - 技能目录结构:包含 SKILL.md(必填,YAML frontmatter + 指令)、spec.md(轻量意图与脚本契约)、references/(按需加载的文档)、scripts/(可执行代码,Bash、Python)、assets/(模板、图片、数据文件)以及 tests/(behavioral-tests.json、adversarial-tests.json、smoke-tests.json 和每个脚本的验收测试)。
- 渐进式披露:元数据(name + description)在启动时加载,用于告知智能体何时使用该技能;SKILL.md 主体在激活时加载,并路由到 references 获取细节;references 按需加载,承载百科全书式知识、模式与详细流程。
- 复杂度分层:阶段路由会根据改动范围选择测试级别,包括 Smoke(拼写、措辞、单行非结构性改动,使用 smoke-tests.json)、Behavioral(新增引用、修改工作流、修改阶段指令,使用 behavioral-tests.json)和 Full(路由表变更、阶段增删、spec.md 变更、结构性重做,使用 behavioral-tests.json + adversarial-tests.json)。
使用方式
调用时使用 --phase 指定阶段,使用 --skill-path 指定技能路径。脚本输出即为指导内容,脚本会负责层级检测、测试集选择与阶段排序,用户无需跨阶段参考内容。
设计原则
- 每个脚本都遵循 TDD:先写验收测试(script-test 阶段),再逐条实现(script 阶段)。
- 基于代码的预评分可捕获确定性失败:测试 JSON 支持 assert_sh 断言,在调用 LLM 评分器之前执行,任一断言失败即立即判定失败。
- 对抗性测试在技能存在之后编写:adversary 阶段会研究具体技能并构造针对性攻击。
- 上下文窗口即 API:阶段隔离保护上下文。
- 技能即代码:非平凡编辑需要 worktree 隔离。
- 描述即触发器:description 字段是主要发现机制,应同时说明技能做什么与何时使用。
- 行为期望存放在技能内而非智能体记忆中:用户对技能行为的反馈必须编码进 SKILL.md、引用文件或脚本/模板中,记忆仅用于跨技能、跨项目的协作偏好。
- 结构化输出使用 Jinja2 模板:当技能产生结构化输出时,应在 assets/ 放置 Jinja2 模板,用变量槽、条件与循环声明输出形态,智能体默认按模板手动编写输出。
适用场景 适用于需要以工程化、可测试方式开发 Agent Skills 的场景,尤其是需要严格 TDD 生命周期、行为契约、对抗性测试与分层测试选择的技能开发项目。
限制 资料未提供该技能的具体运行环境要求、依赖版本、许可协议与收费方式等信息,暂未提供。官方文本为空。