--- name: 创建skill description: 当用户请求新增能力或系统发现能力缺口时,自动创建并完善 skill,必要时生成新 tool 代码并完成测试。 --- # Skill: 创建skill ## 1. 触发条件 当出现以下任一情况时触发: - 用户明确要求“创建/新增一个 skill”。 - 现有技能无法覆盖用户目标(无 skill 命中或执行失败)。 - 高频 capability_gap 指向同一类能力缺口。 ## 2. 目标 1. 生成可执行的 `skills//skill.md`。 2. 若需要新工具,生成 `internal/tools//` 下 Go 代码。 3. 生成或补充测试代码并执行 `go test ./...`。 4. 输出结果中说明新增内容、测试结果与后续建议。 ## 3. 可用工具 - `file`:创建目录与文件、写入 skill/tool/test 内容。 - `shell`:执行测试、检索代码位置、检查文件结构。 ## 4. 执行流程 1. **澄清能力边界**:提炼该 skill 要解决的问题与触发信号。 2. **命名与路径规划**: - 技能路径:`skills//skill.md` - 工具路径(如需):`internal/tools//...` 3. **创建 skill 文件**:写入完整字段(用途、触发、工具、ReAct 指南、失败回退、输出规范)。 4. **判断是否需要新 tool**: - 若现有 `shell/file` 足够,直接结束。 - 若不够,进入工具生成。 5. **生成 tool 代码(如需)**: - 实现 `Name/Description/Call`。 - 保持白名单与安全边界。 - 在主注册逻辑或 toolhost 注册逻辑中接入。 6. **生成测试并执行**: - 补充 `*_test.go`。 - 执行 `go test ./...`。 7. **结果汇报**:给出新增文件清单、测试结果、风险说明。 ## 5. 质量约束 - 不覆盖已有稳定 skill,优先新增目录。 - 避免引入高风险命令;遵循 `ALLOWED_COMMANDS` 与 `ALLOWED_DIRS`。 - 生成代码必须尽量小步、可测试、可回滚。 - 无法可靠完成时,明确说明缺失信息并给出最短下一步。 ## 6. 输出模板 - 新增技能:`skills//skill.md` - 新增工具(可选):`internal/tools//...` - 测试结果:`go test ./...` 的通过/失败摘要 - 后续动作:是否需要热加载、是否需要补充环境变量