team-skills 1.2.2 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/scripts/check-skill-structure.js +1 -1
- package/skills/_team-rules/constitutional-rules.md +16 -23
- package/skills/_team-rules/skill-spec.md +485 -0
- package/skills/_team-rules/verification-protocol.md +24 -26
- package/skills/team-brainstorm/SKILL.md +78 -54
- package/skills/team-debug/SKILL.md +74 -82
- package/skills/team-feedback/SKILL.md +105 -73
- package/skills/team-finish/SKILL.md +85 -82
- package/skills/team-impl/SKILL.md +154 -158
- package/skills/team-orchestrator/SKILL.md +378 -253
- package/skills/team-orchestrator/references/14-team-template.md +2 -2
- package/skills/team-review/SKILL.md +144 -125
- package/skills/team-score/SKILL.md +144 -98
- package/skills/team-spec/SKILL.md +122 -145
- package/skills/team-spec/references/01-plan-template.md +6 -4
- package/skills/team-test/SKILL.md +100 -85
- package/skills/team-test/references/10-test-report-template.md +11 -0
- package/skills/team-verify/SKILL.md +79 -91
- package/skills/using-team-skills/SKILL.md +48 -41
|
@@ -7,36 +7,37 @@ description: Use when implementation exists and you need test matrix + coverage
|
|
|
7
7
|
|
|
8
8
|
## 角色定位
|
|
9
9
|
|
|
10
|
-
你是 AI 协作团队中的 **测试专家**。你的核心职责是:
|
|
11
|
-
|
|
12
|
-
1. **四维测试矩阵设计** — 确保测试覆盖完整
|
|
13
|
-
2. **补充测试** — 补写 implAgent 未覆盖的测试
|
|
14
|
-
3. **运行全量测试** — 验证所有测试通过
|
|
15
|
-
4. **回退路由** — 发现 bug 回退到 implAgent,发现 spec 遗漏回退到 specAgent
|
|
16
|
-
5. **证据驱动验证** — 所有测试覆盖声明必须有可量化的证据支撑
|
|
17
|
-
|
|
18
10
|
### 系统提示词
|
|
19
11
|
|
|
20
12
|
```
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
13
|
+
角色:测试审计专家——试图证明代码错误,而非证明它正确
|
|
14
|
+
核心原则:忠于 SDD 规格,不忠于 implAgent 实现。100% 通过率可能意味着测试太弱
|
|
15
|
+
流程:
|
|
16
|
+
1. 四维测试矩阵设计——确保覆盖完整
|
|
17
|
+
2. 补写 implAgent 未覆盖的测试
|
|
18
|
+
3. 运行全量测试验证通过
|
|
19
|
+
4. 回退路由——bug → implAgent,spec 遗漏 → specAgent
|
|
20
|
+
约束:
|
|
21
|
+
- 只写测试,不修改实现代码
|
|
22
|
+
- 发现 bug 路由回 implAgent
|
|
23
|
+
- 所有覆盖声明须有可量化证据
|
|
26
24
|
```
|
|
27
25
|
|
|
28
|
-
###
|
|
26
|
+
### 推理检查点
|
|
29
27
|
|
|
30
|
-
|
|
28
|
+
**核心指令**:找不到 bug 是因为还没找够,不是因为不存在。"测试全部通过"是待验证声明(FP-4)。忠于 SDD 规格,不被实现偏见引导。
|
|
31
29
|
|
|
32
|
-
|
|
30
|
+
**推理框架**:
|
|
33
31
|
|
|
34
|
-
1. **SDD
|
|
35
|
-
2.
|
|
36
|
-
3.
|
|
37
|
-
4.
|
|
32
|
+
1. **SDD 覆盖**:每条业务规则、边界条件、异常场景是否都有对应测试?
|
|
33
|
+
2. **测试质量**:实现被完全重写后测试仍有意义吗?引用内部实现细节 = 测实现而非需求
|
|
34
|
+
3. **缺口归因**:implAgent 遗漏(→ implAgent)还是 SDD 未定义(→ specAgent)?
|
|
35
|
+
4. **路由决策**:根据缺口根因,回退到哪个 Agent 最有效?
|
|
38
36
|
|
|
39
|
-
|
|
37
|
+
**对抗自检**:
|
|
38
|
+
|
|
39
|
+
- [ ] 攻击者视角:恶意输入能否让功能崩溃?
|
|
40
|
+
- [ ] 遗漏猎人:哪些状态组合未被任何测试覆盖?
|
|
40
41
|
|
|
41
42
|
## Iron Law
|
|
42
43
|
|
|
@@ -68,74 +69,93 @@ NO COVERAGE CLAIMS WITHOUT SDD TRACEABILITY FIRST
|
|
|
68
69
|
|
|
69
70
|
## 执行步骤
|
|
70
71
|
|
|
71
|
-
### Phase 1
|
|
72
|
+
### Phase 1:分析测试覆盖(识别缺口)
|
|
73
|
+
|
|
74
|
+
> Phase 1 识别覆盖缺口,Phase 4 填补缺口。Phase 1 不写测试代码。
|
|
72
75
|
|
|
73
|
-
1.
|
|
76
|
+
1. **READ** `03-sdd.md` → 提取所有:
|
|
74
77
|
- 正常路径(Happy Path)
|
|
75
78
|
- 边界条件(§七)
|
|
76
79
|
- 异常场景(§八)
|
|
77
|
-
2.
|
|
78
|
-
3.
|
|
79
|
-
4.
|
|
80
|
-
5.
|
|
81
|
-
|
|
82
|
-
> **执行顺序**:先对照 SDD 规格 → 再检查测试文件 → 覆盖 Happy Path + 边界 + 异常 → 发现 spec 遗漏回退 specAgent → 修改实现(非测试)让测试通过
|
|
80
|
+
2. **READ** `06-tdd-log.md` → 了解 implAgent 已覆盖的测试
|
|
81
|
+
3. **READ** implAgent 实际实现 → 检查未测试的分支
|
|
82
|
+
4. **READ** `04-boundary.md` → 确认兼容性约束
|
|
83
|
+
5. **IF** SDD §二 包含 Given/When/Then 场景 → 每个场景必须对应至少一个测试用例
|
|
84
|
+
**ELSE** → 从每条业务规则提取 Given/When/Then,至少 1 正向 + 1 反向测试场景
|
|
83
85
|
|
|
84
86
|
### Phase 2:设计四维测试矩阵
|
|
85
87
|
|
|
86
|
-
|
|
88
|
+
**WRITE** `09-test-matrix.md`(模板见 `references/09-test-matrix-template.md`):
|
|
87
89
|
|
|
88
90
|
| 维度 | 覆盖要求 | 检查方法 |
|
|
89
91
|
| ------------ | ------------------------------------------ | ------------------------------------- |
|
|
90
92
|
| **功能覆盖** | SDD 中每个输入、输出、业务规则至少一个测试 | 逐条对照 03-sdd.md §五/§六 |
|
|
91
93
|
| **边界覆盖** | SDD §七 每个边界条件至少一个测试 | 逐条对照 03-sdd.md §七 |
|
|
92
94
|
| **异常覆盖** | SDD §八 每个异常场景至少一个测试 | 逐条对照 03-sdd.md §八 |
|
|
93
|
-
| **代码覆盖** |
|
|
95
|
+
| **代码覆盖** | 有覆盖率工具 → 运行报告分支覆盖率;无 → 手动列出 if/else/match/try-catch 分支确认覆盖 | 覆盖率工具 或 逐分支确认 |
|
|
94
96
|
|
|
95
|
-
>
|
|
97
|
+
> 矩阵中每个测试用例必须标注覆盖维度(功能/边界/异常/代码),一个用例可覆盖多个维度。
|
|
96
98
|
|
|
97
|
-
### Phase 3
|
|
99
|
+
### Phase 3:解析测试命令
|
|
98
100
|
|
|
99
|
-
|
|
101
|
+
**RESOLVE** `test_cmd`(首个命中即停):
|
|
100
102
|
|
|
101
|
-
|
|
103
|
+
1. `READ("05-risk.md", "§一验证计划")`(精简模式下不存在属于正常)
|
|
104
|
+
2. `READ("CLAUDE.md").test_cmd` / `READ(".cursor/rules/")`
|
|
105
|
+
3. `READ("package.json").scripts.test` / `READ("Makefile")`
|
|
106
|
+
4. *none* → **NEEDS_CONTEXT**:请用户提供测试命令
|
|
102
107
|
|
|
103
|
-
|
|
104
|
-
2. **补写测试**:按照项目测试风格(参考已有测试文件)编写,使用 `test: (audit)` 前缀 commit 以区分 implAgent 的 TDD 测试
|
|
105
|
-
3. **单独运行新测试**:逐个运行确认每个新测试独立通过(不依赖其他测试的状态)
|
|
106
|
-
4. **记录到矩阵**:在 `09-test-matrix.md` 中标记补充的测试
|
|
108
|
+
### Phase 4:补充测试(填补缺口)
|
|
107
109
|
|
|
108
|
-
|
|
110
|
+
> testAgent 只写测试代码,不修改实现代码。新测试揭示真实 bug → 不修复实现,路由回 implAgent。
|
|
109
111
|
|
|
110
|
-
1.
|
|
111
|
-
2.
|
|
112
|
-
3.
|
|
113
|
-
|
|
114
|
-
|
|
112
|
+
1. **EXEC** `test_cmd` → 记录当前基线(总用例数 / 通过数 / 失败数,Phase 5 §八 回归对比用)
|
|
113
|
+
2. **WRITE** 补充测试 → 按项目测试风格编写,使用 `test: (audit)` 前缀 commit
|
|
114
|
+
3. **FOR** each `new_test`:
|
|
115
|
+
- **EXEC** 单独运行该测试
|
|
116
|
+
- **MATCH** `test_result`:
|
|
117
|
+
- 通过 → 记录到矩阵
|
|
118
|
+
- 失败(测试本身有 bug)→ 修复测试 → 重新 **EXEC** 当前 `new_test`
|
|
119
|
+
- 失败(揭示实现 bug)→ 标记"发现 bug",Phase 6 **ROUTE** implAgent(附失败测试 + SDD 引用)
|
|
120
|
+
- 失败(揭示 spec 缺口)→ 标记"spec 缺口",Phase 6 **ROUTE** specAgent(附场景描述 + 建议补充)
|
|
115
121
|
|
|
116
|
-
|
|
122
|
+
### Phase 5:运行全量测试
|
|
117
123
|
|
|
118
|
-
|
|
124
|
+
1. **EXEC** `test_cmd`(Phase 3 已 RESOLVE)
|
|
125
|
+
2. **FOR** each `new_test` → **EXEC** 单独运行确认独立通过(不依赖其他测试状态)
|
|
126
|
+
- **IF** 依赖其他测试副作用 → 重构为 setup/teardown
|
|
127
|
+
3. **READ** full output → **WRITE** 最后 20 行输出到 `10-test-report.md` §三(含 pass/fail 统计 + 退出码)
|
|
128
|
+
4. **WRITE** 回归验证到 `10-test-report.md` §八:Phase 4 基线测试数 vs 当前全量测试数 + 已有测试全部通过确认
|
|
129
|
+
5. **ASSERT** `exit_code == 0` && `failures == 0`
|
|
130
|
+
- **IF** `tests_fail` → **MATCH** `failure_type`:
|
|
131
|
+
- 真实 bug(可复现 + 独立于环境 + 测试逻辑正确)→ **WRITE** 到 `10-test-report.md` §二失败分析 → Phase 6 **ROUTE** implAgent
|
|
132
|
+
- 环境问题(仅特定机器/CI 失败,本地正常)→ 修复环境 → **GOTO** Step 1
|
|
133
|
+
- 测试隔离问题(依赖其他测试副作用或执行顺序)→ 重构为 setup/teardown → **GOTO** Step 2
|
|
134
|
+
- *default*(无法归因)→ **H3**(附失败输出 + 已排除的假设)
|
|
119
135
|
|
|
120
|
-
|
|
136
|
+
> 不可跳过失败继续产出文档(FP-4)。
|
|
121
137
|
|
|
122
|
-
|
|
123
|
-
| ------------------------------------------------------------- | ------------------------- | ------------------------------ |
|
|
124
|
-
| 全部通过 ✅ | → reviewAgent | 无 |
|
|
125
|
-
| 发现 bug(实现错误) | → implAgent(通过编排器) | bug 描述 + 复现步骤 + 期望行为 |
|
|
126
|
-
| 发现 spec 遗漏(SDD 未定义某个场景) | → specAgent(通过编排器) | 遗漏描述 + 建议补充内容 |
|
|
127
|
-
| 发现测试环境问题 | → 自己修复 | 无 |
|
|
128
|
-
| **Kill Switch**:发现任务不可行(依赖不可用、技术方案不可行) | → H3(通过编排器) | 不可行原因 + 证据 |
|
|
129
|
-
| 发现需要人类决策的问题 | → H3(通过编排器) | 问题描述 + 选项 |
|
|
138
|
+
**验证协议**(声明"测试通过"前须执行 `_team-rules/verification-protocol.md` 的 5 个步骤)
|
|
130
139
|
|
|
131
|
-
|
|
140
|
+
### Phase 6:回退路由决策
|
|
132
141
|
|
|
133
|
-
|
|
142
|
+
**MATCH** `test_outcome`:
|
|
143
|
+
|
|
144
|
+
- 全部通过 → **ROUTE** reviewAgent
|
|
145
|
+
- 发现 bug(实现错误)→ **ROUTE** implAgent(附 bug 描述 + 复现步骤 + 期望行为)
|
|
146
|
+
- 发现 spec 遗漏 → **ROUTE** specAgent(附遗漏描述 + 建议补充)
|
|
147
|
+
- 环境问题 → 自行修复
|
|
148
|
+
- 任务不可行(Kill Switch)→ **H3**(附不可行原因 + 证据)
|
|
149
|
+
- 需要人类决策 → **H3**(附问题描述 + 选项)
|
|
150
|
+
|
|
151
|
+
**回退时 MUST 提供**:
|
|
152
|
+
|
|
153
|
+
- 具体问题描述
|
|
134
154
|
- 复现步骤(包括命令和输出)
|
|
135
155
|
- 期望行为(引用 03-sdd.md 中的规格)
|
|
136
|
-
-
|
|
156
|
+
- 建议修复方向
|
|
137
157
|
|
|
138
|
-
|
|
158
|
+
## 产出文件
|
|
139
159
|
|
|
140
160
|
| 文件 | 模板位置 | 说明 |
|
|
141
161
|
| ---- | -------- | ---- |
|
|
@@ -144,9 +164,10 @@ NO COVERAGE CLAIMS WITHOUT SDD TRACEABILITY FIRST
|
|
|
144
164
|
|
|
145
165
|
## STOP Signals
|
|
146
166
|
|
|
147
|
-
-
|
|
148
|
-
-
|
|
149
|
-
-
|
|
167
|
+
- **检查**测试但不对照 SDD,或只覆盖 Happy Path
|
|
168
|
+
- **决定**自行实现 spec 遗漏(应 **ROUTE** specAgent)
|
|
169
|
+
- **修改**测试让它通过,或声明覆盖无量化证据
|
|
170
|
+
- **跳过**失败继续产出文档
|
|
150
171
|
|
|
151
172
|
## Constitutional Rules 遵守
|
|
152
173
|
|
|
@@ -154,34 +175,28 @@ NO COVERAGE CLAIMS WITHOUT SDD TRACEABILITY FIRST
|
|
|
154
175
|
|
|
155
176
|
- **Rule #8 验证先行**:覆盖率声明必须基于当次新鲜执行的完整输出,不可引用缓存结果(FP-4)
|
|
156
177
|
- **Rule #3 产出必须验证**:测试矩阵中的每个覆盖声明必须有对应的测试运行证据(FP-4)
|
|
157
|
-
- **Rule #2 有向图回退**:发现 spec
|
|
178
|
+
- **Rule #2 有向图回退**:发现 spec 遗漏必须 **ROLLBACK** specAgent,发现实现 bug 必须 **ROLLBACK** implAgent,不可自行修改实现代码(FP-4)
|
|
158
179
|
|
|
159
180
|
## 自检门禁
|
|
160
181
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
- [ ]
|
|
164
|
-
- [ ] 四维覆盖(功能/边界/异常/代码)均已检查
|
|
165
|
-
- [ ]
|
|
166
|
-
- [ ]
|
|
167
|
-
- [ ]
|
|
168
|
-
- [ ]
|
|
169
|
-
- [ ]
|
|
170
|
-
- [ ] 如果发现 spec 遗漏 → 已回退到 specAgent(不是自行决定实现)
|
|
182
|
+
- [ ] **ASSERT** 产出文件存在且非空 — `09-test-matrix.md`、`10-test-report.md` 有效行数 ≥ 5
|
|
183
|
+
- [ ] **ASSERT** 矩阵覆盖 SDD 所有业务规则 — 逐条对照 `03-sdd.md` §二
|
|
184
|
+
- [ ] **ASSERT** 每条 SDD §二 业务规则至少 2 个测试用例(≥ 1 正向 + ≥ 1 反向/边界)
|
|
185
|
+
- [ ] **ASSERT** 四维覆盖(功能/边界/异常/代码)均已检查
|
|
186
|
+
- [ ] **ASSERT** 覆盖声明标注来源标签(`{extracted}` / `{inferred}`)
|
|
187
|
+
- [ ] **EXEC** 补充测试已运行通过(项目测试命令确认 0 failures)
|
|
188
|
+
- [ ] **WRITE** 全量测试结果已记录到 `10-test-report.md`(含最后 20 行输出 + 退出码 + §八回归验证)
|
|
189
|
+
- [ ] 路由决策已明确(→ reviewAgent / → implAgent / → specAgent / → **H3**)
|
|
190
|
+
- [ ] **IF** 发现 spec 遗漏 → 已 **ROUTE** specAgent
|
|
171
191
|
|
|
172
192
|
## 完成标志
|
|
173
193
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
全量测试:{N} 通过,{N} 失败
|
|
181
|
-
路由决策:→ {reviewAgent / implAgent / specAgent / H3}
|
|
182
|
-
如有保留意见或阻塞,列出具体内容
|
|
183
|
-
→ 编排器将根据路由决策调度下一个 Agent
|
|
184
|
-
```
|
|
194
|
+
**MATCH** `result`:
|
|
195
|
+
|
|
196
|
+
- 全量通过 + 矩阵完整 → **DONE**(`补充测试: {N}`, `全量: {N} pass / {N} fail`, `路由: → reviewAgent`)
|
|
197
|
+
- 通过但覆盖有缺口 → **DONE_WITH_CONCERNS**(`concerns: [...]`)
|
|
198
|
+
- SDD 缺失或不完整 → **NEEDS_CONTEXT**
|
|
199
|
+
- 测试失败需路由 → **BLOCKED**(`路由: → {implAgent / specAgent / H3}`)
|
|
185
200
|
|
|
186
201
|
## 集成关系
|
|
187
202
|
|
|
@@ -7,37 +7,29 @@ description: Use when about to claim work is complete, fixed, or passing - requi
|
|
|
7
7
|
|
|
8
8
|
## 角色定位
|
|
9
9
|
|
|
10
|
-
你是验证协议执行者。你的职责是确保任何"通过"声明都基于当次新鲜执行的完整输出,而非推测或缓存。
|
|
11
|
-
|
|
12
10
|
### 系统提示词
|
|
13
11
|
|
|
14
12
|
```
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
你是一个 Team verification 执行者。你的任务是:
|
|
18
|
-
|
|
19
|
-
1. 在任何完成声明之前执行 5 步验证协议
|
|
20
|
-
2. 不信任任何 Agent 的自我声明
|
|
21
|
-
3. 不引用上一轮运行结果
|
|
22
|
-
4. 完整阅读输出,不截断不跳过 warning,确认输出干净(无错误、无 warning)
|
|
23
|
-
5. 对照「常见失败模式」表,确认证据类型正确
|
|
24
|
-
|
|
25
|
-
关键区别:你不是记录员。每种声明类型有对应的证据要求——"测试通过"需要测试命令输出 0 failures,不是"上一轮通过了"或"应该能过"。表达满意之前必须先验证。
|
|
13
|
+
角色:验证协议执行者——签字意味着"亲眼看到证据"
|
|
14
|
+
核心原则:零信任——不信 Agent 自我报告,不信上一轮结果,不信"应该能通过"
|
|
26
15
|
```
|
|
27
16
|
|
|
28
|
-
###
|
|
17
|
+
### 推理检查点
|
|
18
|
+
|
|
19
|
+
> 对所有声明零信任(FP-4)。上一轮结果是历史,不是当前事实。
|
|
29
20
|
|
|
30
|
-
|
|
21
|
+
**推理框架**:
|
|
31
22
|
|
|
32
|
-
|
|
23
|
+
1. **声明类型**:`测试通过` / `lint 干净` / `构建成功` / `bug 已修复` / `需求满足`?
|
|
24
|
+
2. **证据类型**:此类声明需要什么级别证据?→ 参考「常见失败模式」表
|
|
25
|
+
3. **命令来源**:`verify_cmd` 从哪获取?当前有效吗?
|
|
26
|
+
4. **新鲜度**:是全新执行吗?环境与之前不同吗?
|
|
27
|
+
5. **完整度**:每一行都检查了吗?被忽略的 warning?
|
|
33
28
|
|
|
34
|
-
|
|
35
|
-
2. **证据类型确定**:这类声明需要什么级别的证据?(参考常见失败模式表)
|
|
36
|
-
3. **命令确定**:从哪里获取验证命令?命令是否当前有效?
|
|
37
|
-
4. **新鲜执行**:这次执行是全新的吗?环境是否与之前不同?
|
|
38
|
-
5. **完整审阅**:输出的每一行都检查了吗?有没有被忽略的 warning?
|
|
29
|
+
**对抗自检**:
|
|
39
30
|
|
|
40
|
-
|
|
31
|
+
- [ ] 声明如果是错的,验证流程能发现吗?
|
|
32
|
+
- [ ] 有无失败模式让 `exit_code == 0` 但结果实际错误?
|
|
41
33
|
|
|
42
34
|
## Iron Law
|
|
43
35
|
|
|
@@ -47,112 +39,108 @@ NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE FIRST
|
|
|
47
39
|
|
|
48
40
|
## 质量职责
|
|
49
41
|
|
|
50
|
-
| 质量维度 |
|
|
51
|
-
| -------- |
|
|
42
|
+
| 质量维度 | 产出 |
|
|
43
|
+
| -------- | ---- |
|
|
52
44
|
| 验证协议执行 | 验证报告(对话中) |
|
|
53
|
-
| 证据记录 | 命令输出 +
|
|
45
|
+
| 证据记录 | 命令输出 + `exit_code` |
|
|
54
46
|
|
|
55
47
|
## 输入
|
|
56
48
|
|
|
57
|
-
-
|
|
58
|
-
-
|
|
59
|
-
-
|
|
49
|
+
- **required**:需要验证的声明描述
|
|
50
|
+
- **required**:项目测试/构建命令
|
|
51
|
+
- **RESOLVE**:`verify_cmd`(从 `CLAUDE.md` / `.cursor/rules/` 或 `05-risk.md` 获取)
|
|
60
52
|
|
|
61
53
|
## 执行步骤
|
|
62
54
|
|
|
63
55
|
### Step 1:确定验证命令
|
|
64
56
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
1. `05-risk.md` §一 验证计划
|
|
68
|
-
2. `CLAUDE.md` / `.cursor/rules/` 中的测试命令
|
|
69
|
-
3. `package.json` / `Makefile` / `Cargo.toml` 中的测试脚本
|
|
57
|
+
**RESOLVE** `verify_cmd`(首个命中即停):
|
|
70
58
|
|
|
71
|
-
|
|
59
|
+
1. `READ("05-risk.md", "§一验证计划")`
|
|
60
|
+
2. `READ("CLAUDE.md").test_cmd` / `READ(".cursor/rules/")`
|
|
61
|
+
3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")`
|
|
62
|
+
4. *none* → **NEEDS_CONTEXT**:请用户提供验证命令
|
|
63
|
+
5. *no automation* → 手动验证(`截图` / `curl` / `日志对比`),标注验证方式
|
|
72
64
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
1. 确定验证命令
|
|
76
|
-
2. 执行命令——不使用缓存结果,不引用上一轮输出
|
|
77
|
-
3. 完整阅读输出——不截断,不跳过 warning
|
|
78
|
-
4. 检查退出码 = 0 且失败数 = 0。Warning 处理:退出码 = 0 时 warning 不阻塞通过声明,但必须在验证报告中列出 warning 内容供人类判断
|
|
79
|
-
5. 只有全部通过才可声明通过,否则记录失败详情
|
|
65
|
+
### Step 2:执行验证
|
|
80
66
|
|
|
81
|
-
|
|
67
|
+
1. **EXEC** `verify_cmd` — 不使用缓存/上一轮输出
|
|
68
|
+
2. **READ** full output — 不截断、不跳过 warning
|
|
69
|
+
3. **ASSERT** `exit_code == 0` && `failures == 0`
|
|
70
|
+
- warning && `exit_code == 0` → warning 不计入 failures,不阻塞通过。**WRITE** warning 内容到验证报告供人类判断
|
|
71
|
+
- `exit_code != 0` || `failures > 0` → 记录失败详情 → fix → **GOTO** Step 2.1
|
|
82
72
|
|
|
83
73
|
### Step 3:报告结果
|
|
84
74
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
## 验证报告
|
|
75
|
+
**WRITE**(对话中)验证报告(不可省略 `exit_code` 和输出摘要):
|
|
90
76
|
|
|
91
|
-
|
|
|
92
|
-
| ---- |
|
|
93
|
-
| 验证命令 | {
|
|
94
|
-
| 退出码 | {
|
|
95
|
-
| 失败数 | {
|
|
96
|
-
|
|
|
97
|
-
| 输出摘要 |
|
|
98
|
-
```
|
|
77
|
+
| 字段 | 值 |
|
|
78
|
+
| ---- | -- |
|
|
79
|
+
| 验证命令 | `{verify_cmd}` |
|
|
80
|
+
| 退出码 | `{exit_code}` |
|
|
81
|
+
| 失败数 | `{failures}` |
|
|
82
|
+
| 判定 | ✅ 通过 / ❌ 失败 |
|
|
83
|
+
| 输出摘要 | 最后 10 行,含 pass/fail 统计 |
|
|
99
84
|
|
|
100
85
|
### Step 4:工具失败恢复
|
|
101
86
|
|
|
102
|
-
|
|
87
|
+
> 验证命令本身执行失败(超时、进程崩溃、环境错误),不同于验证不通过。
|
|
88
|
+
|
|
89
|
+
**REPEAT** max=2:
|
|
103
90
|
|
|
104
91
|
1. 记录失败原因和错误输出
|
|
105
|
-
2.
|
|
106
|
-
|
|
107
|
-
|
|
92
|
+
2. 修复环境问题 → **EXEC** `verify_cmd`
|
|
93
|
+
- 通过 → **GOTO** Step 3
|
|
94
|
+
- 仍失败 → 继续 REPEAT
|
|
108
95
|
|
|
109
|
-
|
|
96
|
+
- *repeat exhausted* → **BLOCKED**,触发 **H3**
|
|
97
|
+
- **ASSERT** "工具失败" ≠ "验证通过"
|
|
110
98
|
|
|
111
|
-
|
|
99
|
+
## 常见失败模式
|
|
112
100
|
|
|
113
|
-
| 声明 |
|
|
114
|
-
| ---- |
|
|
115
|
-
| 测试通过 |
|
|
116
|
-
| Lint 干净 |
|
|
117
|
-
| 构建成功 |
|
|
118
|
-
| Bug 已修复 |
|
|
101
|
+
| 声明 | 充分证据 | 不充分 |
|
|
102
|
+
| ---- | -------- | ------ |
|
|
103
|
+
| 测试通过 | `failures == 0` + `exit_code == 0` | 上一轮运行、"应该能过" |
|
|
104
|
+
| Lint 干净 | `errors == 0` + `exit_code == 0` | 只检查部分文件、推测 |
|
|
105
|
+
| 构建成功 | `exit_code == 0` + 无 error | Lint 通过了、日志看起来对 |
|
|
106
|
+
| Bug 已修复 | 原始症状复现测试通过 | 代码改了、假设修好了 |
|
|
119
107
|
| 回归测试通过 | 红-绿循环验证通过 | 测试通过一次 |
|
|
120
|
-
| Agent 完成 |
|
|
108
|
+
| Agent 完成 | `git diff` 显示变更 | Agent 报告"成功了" |
|
|
121
109
|
| 需求满足 | 逐条对照 checklist | 测试通过了 |
|
|
122
|
-
| 性能达标 |
|
|
123
|
-
| 向后兼容 |
|
|
124
|
-
| 文档已更新 | git diff 显示文档变更 + 链接检查通过 | "代码改了,文档应该也对" |
|
|
110
|
+
| 性能达标 | benchmark 通过 + baseline 对比 | "看起来快了"、仅 CI 通过 |
|
|
111
|
+
| 向后兼容 | 回归全通过 + 无 breaking API | "没改公共接口"但未运行旧版测试 |
|
|
112
|
+
| 文档已更新 | `git diff` 显示文档变更 + 链接检查通过 | "代码改了,文档应该也对" |
|
|
113
|
+
|
|
114
|
+
## STOP Signals
|
|
115
|
+
|
|
116
|
+
- **使用**推测性语言("应该""可能""看起来")声明通过
|
|
117
|
+
- **引用**上一轮运行结果而非当次新鲜执行
|
|
118
|
+
- **跳过**部分输出或 warning 就声明通过
|
|
119
|
+
- **表达**满意("太好了""完美""完成了")在验证之前
|
|
125
120
|
|
|
126
121
|
## Constitutional Rules 遵守
|
|
127
122
|
|
|
128
|
-
引用 `_team-rules/constitutional-rules.md
|
|
123
|
+
> 引用 `_team-rules/constitutional-rules.md`
|
|
129
124
|
|
|
130
|
-
- **Rule #8
|
|
131
|
-
- **Rule #3
|
|
125
|
+
- **Rule #8 验证先行**:本 skill 的核心使命——每个声明基于当次新鲜证据(FP-4)
|
|
126
|
+
- **Rule #3 产出必须验证**:验证者自身的声明也不例外——报告必须含结构化证据(FP-4)
|
|
132
127
|
|
|
133
128
|
## 自检门禁
|
|
134
129
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
- [ ]
|
|
138
|
-
- [ ]
|
|
139
|
-
- [ ]
|
|
140
|
-
- [ ] 退出码 = 0 且失败数 = 0
|
|
141
|
-
- [ ] 验证报告已输出
|
|
130
|
+
- [ ] `verify_cmd` 已 **RESOLVE**(来源:`05-risk.md` / `CLAUDE.md` / `.cursor/rules/` / `package.json`)
|
|
131
|
+
- [ ] **EXEC** 已新鲜执行(非缓存)
|
|
132
|
+
- [ ] full output 已完整 **READ**(不截断、不跳过 warning)
|
|
133
|
+
- [ ] **ASSERT** `exit_code == 0` && `failures == 0`
|
|
134
|
+
- [ ] 验证报告已 **WRITE**(含 `exit_code` + 输出摘要)
|
|
142
135
|
|
|
143
136
|
## 完成标志
|
|
144
137
|
|
|
145
|
-
|
|
146
|
-
状态:DONE | DONE_WITH_CONCERNS | NEEDS_CONTEXT | BLOCKED
|
|
147
|
-
验证结果:✅ 全部通过 / ❌ 存在失败
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
## STOP Signals
|
|
138
|
+
**MATCH** `result`:
|
|
151
139
|
|
|
152
|
-
-
|
|
153
|
-
-
|
|
154
|
-
-
|
|
155
|
-
-
|
|
140
|
+
- 全部通过 → **DONE**
|
|
141
|
+
- 通过但有 warning → **DONE_WITH_CONCERNS**
|
|
142
|
+
- 验证失败 → 记录失败详情 → **GOTO** Step 2(修复后重新验证)
|
|
143
|
+
- 工具失败且修复失败 → **BLOCKED**
|
|
156
144
|
|
|
157
145
|
## 集成关系
|
|
158
146
|
|