From 7546a56736665525374f017209a44235888a389a Mon Sep 17 00:00:00 2001 From: yangjianbo Date: Sat, 7 Feb 2026 22:21:39 +0800 Subject: [PATCH] feat: update skills --- skills/bug-fix-expert/SKILL.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/skills/bug-fix-expert/SKILL.md b/skills/bug-fix-expert/SKILL.md index 558b70d7..8be764db 100644 --- a/skills/bug-fix-expert/SKILL.md +++ b/skills/bug-fix-expert/SKILL.md @@ -48,7 +48,7 @@ metadata: 1. **没有可重复的证据,不改代码**:至少满足"稳定复现"或"静态分析可严格证明存在"。 2. **多角度确认**:至少使用 3 种不同方式交叉验证(P0 可降至 2 种,但必须注明理由)。 3. **先写失败用例**:优先用最小化单元测试/集成测试把 bug "钉住"。 -4. **修复必须带测试**:新增/完善测试覆盖 bug 场景与关键边界,确保回归保护。 +4. **修复必须带测试**:新增/完善测试覆盖 bug 场景与关键边界,确保回归保护。**改动代码的单元测试覆盖率必须 ≥ 85%**(以变更行为统计口径,非全仓覆盖率)。 5. **不引入新问题**:尽量小改动、低耦合;遵守项目既有分层与编码规范。 6. **修复与审查角色隔离**:修复者不得自审,必须由独立角色执行代码审查。 7. **安全前后双检**:修复前预扫描 + 修复后 diff 复核,两次都通过才算合格。 @@ -135,10 +135,17 @@ metadata: - 覆盖 bug 场景(必须) - 覆盖关键边界与回归场景(必须) - 必要时增加集成/端到端验证(按影响面决定) + - **改动代码覆盖率门禁**:对本次修改/新增的代码,单元测试行覆盖率必须 ≥ 85%。 + 使用项目对应的覆盖率工具(Go: `go test -coverprofile` + 分析变更行覆盖; + JS/TS: `--collectCoverageFrom` 指定变更文件;Python: `coverage run` + `coverage report --include`) + 仅统计本次变更文件中变更行的覆盖情况,不要求全仓覆盖率达标。 + 若因代码结构原因(如纯配置、接口声明等不可测代码)无法达到 85%, + 必须在 Beacon 中说明原因和实际覆盖率。 3. 运行质量门禁(与项目 CI 对齐): - 最小集合:受影响模块的单元测试 + 静态检查(lint/格式化/类型检查)。 - 必要时:集成测试、端到端测试、兼容性验证、性能回归检查。 - 不确定时:跑全量测试。 + - **覆盖率检查**:修复完成后运行覆盖率工具,确认变更代码覆盖率 ≥ 85%,将结果写入 Beacon。 4. 若引入新失败:优先修复新失败;不要用"忽略测试/删除用例"掩盖问题。 **安全预扫描(与修复并行)**:扫描修复方案**将要触及的代码区域的修复前基线版本**,检查已有安全隐患,评估修复方案是否可能引入新风险。注意:预扫描的对象是修复前的基线代码,而非修复进行中的中间状态。 @@ -151,7 +158,7 @@ metadata: - **并发**:竞态、锁粒度、goroutine 泄漏、通道关闭时序。 - **兼容性**:API/配置/数据迁移影响,旧数据是否可读。 - **可维护性**:命名、结构、可读性、分层依赖是否违规。 -- **测试质量**:是否会偶发失败?是否覆盖根因?是否能防回归? +- **测试质量**:是否会偶发失败?是否覆盖根因?是否能防回归?变更代码覆盖率是否 ≥ 85%? **安全最终复核**:对修复 diff 审查鉴权/越权、注入(SQL/命令/模板)、敏感信息泄露;若修复涉及依赖变更,额外检查依赖安全。主控在启动安全复核子智能体时,必须将第 3 步安全预扫描的 Beacon 结论作为上下文传入 prompt,复核者对比两次扫描结果,确认未引入新安全问题。 @@ -405,6 +412,7 @@ Worktree: [worktree 实际路径,无则填 N/A] - path/to/file1.go [新增/修改/删除] - path/to/file2_test.go [新增/修改/删除] 测试结果: [PASS x/y | FAIL x/y | 未执行] +变更代码覆盖率: [xx% (≥85% PASS / <85% FAIL) | 未检测 | N/A(只读角色)] 结论: [一句话核心结论] 置信度: [高/中/低](高=有确凿证据;中=有间接证据;低=推测性结论) @@ -496,6 +504,8 @@ Worktree: [worktree 实际路径,无则填 N/A] - 测试中禁止使用真实密钥/token/凭据,必须使用 mock 数据 - 测试中禁止使用固定端口号,使用 0 端口让 OS 分配随机端口 - 如果尝试 5 轮后仍无法完成任务,立即输出 FAILED 状态的 Beacon 并停止 +- **变更代码覆盖率 ≥ 85%**:修复/验证角色完成后,必须运行覆盖率工具检测本次变更代码的行覆盖率; + 低于 85% 时须补充测试直到达标,或在 Beacon 中说明无法达标的原因(如纯接口声明/配置等不可测代码) - 返回结果必须精简:Beacon 的「证据摘要」每条不超过 80 字符 - 禁止在 Beacon 中复制大段源码,只引用 file:line - Beacon 之前的工作过程输出(调试日志、中间推理)不需要结构化,主控不会读取这些内容 @@ -510,6 +520,7 @@ Worktree: {worktree 路径} 变更文件: - path/to/file.go [新增/修改/删除] 测试结果: [PASS x/y | FAIL x/y | 未执行] +变更代码覆盖率: [xx% | 未检测 | N/A] 结论: [一句话核心结论] 置信度: [高/中/低] 证据摘要: