team-skills 1.5.0 → 1.5.1
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/CHANGELOG.md +15 -0
- package/package.json +1 -1
- package/skills/_team-rules/task-lifecycle.md +15 -2
- package/skills/_team-rules/verification-protocol.md +23 -10
- package/skills/team-brainstorm/SKILL.md +5 -2
- package/skills/team-debug/SKILL.md +1 -0
- package/skills/team-feedback/SKILL.md +6 -3
- package/skills/team-finish/SKILL.md +10 -2
- package/skills/team-impl/SKILL.md +3 -2
- package/skills/team-orchestrator/SKILL.md +17 -14
- package/skills/team-review/SKILL.md +4 -1
- package/skills/team-spec/SKILL.md +8 -2
- package/skills/team-test/SKILL.md +8 -6
- package/skills/team-verify/SKILL.md +4 -5
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,21 @@
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.5.1] - 2026-06-28
|
|
11
|
+
|
|
12
|
+
### 修复
|
|
13
|
+
|
|
14
|
+
- team-orchestrator: slug RESOLVE 链修复——READ 动作从 RESOLVE 中独立,消除 LLM"首个命中即停"导致的重复序号 bug
|
|
15
|
+
- team-orchestrator: Step 7.3.1 分期任务去掉独立 slug 解析,统一由 Step 1 处理(消除双重解析冲突)
|
|
16
|
+
- team-orchestrator: Step 1 步骤编号连续性修复(5,6 重复→7,8)
|
|
17
|
+
|
|
18
|
+
### 变更
|
|
19
|
+
|
|
20
|
+
- 共享内容一致性同步:verify_cmd RESOLVE 5 步链(5 个 skill)、slug 解析流程(3 个 skill)、回退四要素(2 个 skill)、失败模式表 4→10 行(verification-protocol + team-verify)——全部与 canonical source 完全一致
|
|
21
|
+
- CLAUDE.md §2.2:明确 REF 仅用于声明性章节(CONSTITUTIONAL_RULES/COMPLETION),STEPS 中操作性内容必须内联
|
|
22
|
+
- 5 个 skill 补充 spec-driven-workflow.md 声明性 REF(team-test/review/orchestrator/debug/feedback)
|
|
23
|
+
- 4 个 skill 补充 verification-protocol.md / task-lifecycle.md / ai-collaboration-standards.md 声明性 REF
|
|
24
|
+
|
|
10
25
|
## [1.5.0] - 2026-06-28
|
|
11
26
|
|
|
12
27
|
### 新增
|
package/package.json
CHANGED
|
@@ -33,11 +33,24 @@ docs/tasks/{NNNN}-{keyword}/
|
|
|
33
33
|
|
|
34
34
|
格式:`{NNNN}-{keyword}`
|
|
35
35
|
|
|
36
|
-
- 序号:扫描 `docs/tasks/` 已有目录取最大序号 +1,从 `0001` 起
|
|
37
36
|
- 关键词:从任务描述提取,kebab-case
|
|
38
37
|
- 整体 ≤ 50 字符
|
|
39
38
|
- 示例:`0001-add-tooltip`、`0012-refactor-auth`
|
|
40
|
-
-
|
|
39
|
+
- 分期继承任务:使用新序号,在上期关键词后追加 `-p{N}`(N 从 2 起)。如 `0001-add-tooltip`(P1)→ `0002-add-tooltip-p2`(P2)→ `0005-add-tooltip-p3`(P3)
|
|
40
|
+
|
|
41
|
+
#### Slug 解析流程
|
|
42
|
+
|
|
43
|
+
> 所有需要生成 slug 的 Skill(`team-orchestrator`、`team-spec`、`team-brainstorm`)统一遵循此流程,不可自行实现序号计算。
|
|
44
|
+
|
|
45
|
+
1. **IF** `docs/tasks/` NOT_EXISTS → 创建目录,最大序号 = 0
|
|
46
|
+
**ELSE** → **READ** `docs/tasks/` 已有目录 → 提取所有匹配 `NNNN-*` 格式的目录名中的四位数字前缀 → 取最大值记为最大序号(无匹配目录则最大序号 = 0)
|
|
47
|
+
2. **RESOLVE** `slug`(首个命中即停):
|
|
48
|
+
1. **IF** 用户传入已有 slug 且 `docs/tasks/{slug}/` EXISTS → 复用该 slug
|
|
49
|
+
2. **IF** 分期继承任务(上下文含 `parent_slug`)→ 最大序号 +1,零填充四位,关键词追加 `-p{N}` 后缀
|
|
50
|
+
3. *DEFAULT* → 最大序号 +1,零填充四位,拼接 `{NNNN}-{keyword}`
|
|
51
|
+
3. **EXEC** 创建 `docs/tasks/{slug}/` 目录(**IF** 已存在 → 跳过)→ **ASSERT** `exit_code == 0`
|
|
52
|
+
|
|
53
|
+
> TRAP:序号计算必须基于目录扫描结果,不可硬编码 `0001`。"从 `0001` 起"仅指无已有目录时的初始值(最大序号 0 + 1 = 1)。
|
|
41
54
|
|
|
42
55
|
### 1.3 信息来源标签
|
|
43
56
|
|
|
@@ -2,16 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
> 共享规则文件。任何"测试通过""CI 通过""lint 通过"的声明 MUST 基于此协议。
|
|
4
4
|
|
|
5
|
+
## verify_cmd 解析流程
|
|
6
|
+
|
|
7
|
+
> 所有需要执行验证的 Skill(`team-impl`、`team-test`、`team-verify`、`team-feedback`、`team-finish`)统一遵循此流程解析验证命令,不可自行实现。
|
|
8
|
+
|
|
9
|
+
**RESOLVE** `verify_cmd`(首个命中即停):
|
|
10
|
+
|
|
11
|
+
1. `READ("05-risk.md", "§一验证计划")`(精简模式下不存在属于正常)
|
|
12
|
+
2. `READ("CLAUDE.md").verify_cmd` / `READ(".cursor/rules/")`
|
|
13
|
+
3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")` / `READ("CI 配置")`
|
|
14
|
+
4. 手动验证可行(截图 / curl / 日志对比)→ 标注验证方式,继续
|
|
15
|
+
5. *NONE* → **NEEDS_CONTEXT**:请用户提供验证命令
|
|
16
|
+
|
|
5
17
|
## 5 步验证流程
|
|
6
18
|
|
|
7
19
|
```
|
|
8
20
|
|
|
9
|
-
1.
|
|
10
|
-
- 05-risk.md §一验证计划
|
|
11
|
-
- CLAUDE.md / .cursor/rules/
|
|
12
|
-
- package.json scripts / Makefile / Cargo.toml
|
|
13
|
-
- 以上均无 → NEEDS_CONTEXT,请求用户提供
|
|
14
|
-
- 项目无自动化验证 → 10-test-report.md 标注,改用手动验证(截图/curl/日志对比),不可跳过
|
|
21
|
+
1. 确定验证命令 → 执行上方 verify_cmd 解析流程
|
|
15
22
|
2. 执行命令——不用缓存,不引用上一轮输出
|
|
16
23
|
3. 完整阅读输出——不截断,不跳过 warning。Warning 处理:退出码 = 0 时 warning 不阻塞通过声明,但必须在验证报告中列出 warning 内容供人类判断
|
|
17
24
|
4. 退出码 = 0 且失败数 = 0
|
|
@@ -51,7 +58,13 @@ NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE
|
|
|
51
58
|
|
|
52
59
|
| 声明 | 充分证据 | 不充分 |
|
|
53
60
|
| ---- | -------- | ------ |
|
|
54
|
-
| 测试通过 | 0
|
|
55
|
-
| Lint 干净 | 0
|
|
56
|
-
| 构建成功 |
|
|
57
|
-
| Bug 修复 |
|
|
61
|
+
| 测试通过 | `failures == 0` + `exit_code == 0` | 上一轮运行、"应该能过" |
|
|
62
|
+
| Lint 干净 | `errors == 0` + `exit_code == 0` | 部分检查、推测 |
|
|
63
|
+
| 构建成功 | `exit_code == 0` + 无 error | Lint 通过、日志看起来对 |
|
|
64
|
+
| Bug 修复 | 原始症状复现测试通过 + 回归通过 | 代码改了、假设修好了 |
|
|
65
|
+
| 回归测试通过 | 红-绿循环验证通过 | 测试通过一次 |
|
|
66
|
+
| Agent 完成 | `git diff` 显示变更 | Agent 报告"成功了" |
|
|
67
|
+
| 需求满足 | 逐条对照 checklist | 测试通过了 |
|
|
68
|
+
| 性能达标 | benchmark 通过 + baseline 对比 | "看起来快了"、仅 CI 通过 |
|
|
69
|
+
| 向后兼容 | 回归全通过 + 无 breaking API | "没改公共接口"但未运行旧版测试 |
|
|
70
|
+
| 文档已更新 | `git diff` 显示文档变更 + 链接检查通过 | "代码改了,文档应该也对" |
|
|
@@ -81,10 +81,13 @@ NO IMPLEMENTATION WITHOUT USER APPROVED DESIGN FIRST
|
|
|
81
81
|
1. 从用户需求提取核心关键词(kebab-case)
|
|
82
82
|
2. 从项目上下文推断关键词
|
|
83
83
|
3. *NONE* → **NEEDS_CONTEXT**:请用户提供任务关键词
|
|
84
|
-
6. **IF** `docs/tasks
|
|
85
|
-
|
|
84
|
+
6. **IF** `docs/tasks/` NOT_EXISTS → 创建目录,最大序号 = 0
|
|
85
|
+
**ELSE** → **READ** `docs/tasks/` 已有目录 → 提取所有匹配 `NNNN-*` 格式的目录名中的四位数字前缀 → 取最大值记为最大序号(无匹配目录则最大序号 = 0)
|
|
86
|
+
7. 最大序号 +1,零填充四位,拼接 `slug` = `{NNNN}-{keyword}`(整体 ≤ 50 字符)
|
|
86
87
|
8. **EXEC** 创建 `docs/tasks/{slug}/` 目录(**IF** 已存在 → 跳过)→ **ASSERT** `exit_code == 0`
|
|
87
88
|
|
|
89
|
+
> TRAP:序号计算必须基于目录扫描结果,不可硬编码 `0001`。
|
|
90
|
+
|
|
88
91
|
### Phase 2:需求澄清(一次性提问)
|
|
89
92
|
|
|
90
93
|
> 挖出用户未说出的假设和隐性约束。好问题比好答案更有价值——问错问题意味着后续全部方向偏移。
|
|
@@ -207,6 +207,7 @@ NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST
|
|
|
207
207
|
**REF** `_team-rules/constitutional-rules.md` — 9 条 Constitutional Rules
|
|
208
208
|
**REF** `_team-rules/first-principles.md` — 4 条第一性原理(First Principle #1 ~ #4)
|
|
209
209
|
**REF** `_team-rules/verification-protocol.md` — 5 步验证协议
|
|
210
|
+
**REF** `_team-rules/spec-driven-workflow.md` — TDD 修复循环与有向图回退规则
|
|
210
211
|
|
|
211
212
|
调试阶段尤其注意:
|
|
212
213
|
|
|
@@ -135,10 +135,11 @@ NO IMPLEMENTATION WITHOUT TECHNICAL VERIFICATION FIRST
|
|
|
135
135
|
|
|
136
136
|
**RESOLVE** `verify_cmd`(首个命中即停):
|
|
137
137
|
|
|
138
|
-
1. `READ("05-risk.md", "§一验证计划")
|
|
138
|
+
1. `READ("05-risk.md", "§一验证计划")`(精简模式下不存在属于正常)
|
|
139
139
|
2. `READ("CLAUDE.md").verify_cmd` / `READ(".cursor/rules/")`
|
|
140
|
-
3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")`
|
|
141
|
-
4.
|
|
140
|
+
3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")` / `READ("CI 配置")`
|
|
141
|
+
4. 手动验证可行(截图 / curl / 日志对比)→ 标注验证方式,继续
|
|
142
|
+
5. *NONE* → **NEEDS_CONTEXT**:请用户提供验证命令
|
|
142
143
|
|
|
143
144
|
实施顺序:
|
|
144
145
|
|
|
@@ -222,6 +223,8 @@ NO IMPLEMENTATION WITHOUT TECHNICAL VERIFICATION FIRST
|
|
|
222
223
|
|
|
223
224
|
**REF** `_team-rules/constitutional-rules.md` — 9 条 Constitutional Rules
|
|
224
225
|
**REF** `_team-rules/first-principles.md` — 4 条第一性原理(First Principle #1 ~ #4)
|
|
226
|
+
**REF** `_team-rules/spec-driven-workflow.md` — TDD 逐项验证与有向图回退规则
|
|
227
|
+
**REF** `_team-rules/verification-protocol.md` — verify_cmd 解析流程与 5 步验证协议
|
|
225
228
|
|
|
226
229
|
反馈处理阶段尤其注意:
|
|
227
230
|
|
|
@@ -66,9 +66,15 @@ NO BRANCH COMPLETION WITHOUT TEST VERIFICATION FIRST
|
|
|
66
66
|
|
|
67
67
|
> TRAP:你会倾向于引用上一轮的测试结果来跳过重新执行。Iron Law 不允许——每次进入 finish 都必须重新运行。
|
|
68
68
|
|
|
69
|
-
**
|
|
69
|
+
**RESOLVE** `verify_cmd`(首个命中即停):
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
1. `READ("05-risk.md", "§一验证计划")`(精简模式下不存在属于正常)
|
|
72
|
+
2. `READ("CLAUDE.md").verify_cmd` / `READ(".cursor/rules/")`
|
|
73
|
+
3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")` / `READ("CI 配置")`
|
|
74
|
+
4. 手动验证可行(截图 / curl / 日志对比)→ 标注验证方式,继续
|
|
75
|
+
5. *NONE* → **NEEDS_CONTEXT**:请用户提供验证命令
|
|
76
|
+
|
|
77
|
+
**EXEC** `verify_cmd` → **ASSERT** `exit_code == 0` && `failures == 0`
|
|
72
78
|
|
|
73
79
|
- 通过 → **GOTO** Step 1.5
|
|
74
80
|
- 失败 → **MATCH** `mode`:
|
|
@@ -281,6 +287,8 @@ NO BRANCH COMPLETION WITHOUT TEST VERIFICATION FIRST
|
|
|
281
287
|
|
|
282
288
|
**REF** `_team-rules/constitutional-rules.md` — 9 条 Constitutional Rules
|
|
283
289
|
**REF** `_team-rules/first-principles.md` — 4 条第一性原理(First Principle #1 ~ #4)
|
|
290
|
+
**REF** `_team-rules/verification-protocol.md` — verify_cmd 解析流程与 5 步验证协议
|
|
291
|
+
**REF** `_team-rules/task-lifecycle.md` — 进度追踪与知识合并(§3)
|
|
284
292
|
|
|
285
293
|
分支完成阶段尤其注意:
|
|
286
294
|
|
|
@@ -290,10 +290,11 @@ NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST
|
|
|
290
290
|
> 用独立的全量验证确认实现正确。此阶段的每个"通过"声明必须基于刚执行的命令输出,不是 Phase 1 的记忆。
|
|
291
291
|
|
|
292
292
|
1. **RESOLVE** `verify_cmd`(首个命中即停):
|
|
293
|
-
1. `READ("05-risk.md", "§一验证计划")
|
|
293
|
+
1. `READ("05-risk.md", "§一验证计划")`(精简模式下不存在属于正常)
|
|
294
294
|
2. `READ("CLAUDE.md").verify_cmd` / `READ(".cursor/rules/")`
|
|
295
295
|
3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")` / `READ("CI 配置")`
|
|
296
|
-
4.
|
|
296
|
+
4. 手动验证可行(截图 / curl / 日志对比)→ 标注验证方式,继续
|
|
297
|
+
5. *NONE* → **NEEDS_CONTEXT**:请用户提供验证命令,记录到 `06-tdd-log.md`
|
|
297
298
|
|
|
298
299
|
2. **EXEC** `verify_cmd`(测试)→ **ASSERT** `exit_code == 0` && `failures == 0`
|
|
299
300
|
3. **EXEC** 项目 lint 命令 → **ASSERT** `exit_code == 0`
|
|
@@ -370,20 +370,24 @@ NO AGENT DISPATCH WITHOUT CONFIRM_GOAL HUMAN CONFIRMATION FIRST
|
|
|
370
370
|
> 确保任务目标被准确理解,用户对方案方向有明确确认。跳过 CONFIRM_GOAL 是编排器最危险的错误——后续所有 Agent 的工作都建立在这个确认之上。
|
|
371
371
|
|
|
372
372
|
1. **READ** 用户参数 → 提取任务描述
|
|
373
|
-
2. **
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
3.
|
|
379
|
-
|
|
380
|
-
|
|
373
|
+
2. **IF** `docs/tasks/` NOT_EXISTS → 创建目录,最大序号 = 0
|
|
374
|
+
**ELSE** → **READ** `docs/tasks/` 已有目录 → 提取所有匹配 `NNNN-*` 格式的目录名中的四位数字前缀 → 取最大值记为最大序号(无匹配目录则最大序号 = 0)
|
|
375
|
+
3. **RESOLVE** `slug`(首个命中即停):
|
|
376
|
+
1. **IF** 用户传入已有 slug 且 `docs/tasks/{slug}/00-design-brief.md EXISTS` → 复用该 slug
|
|
377
|
+
2. **IF** 分期继承任务(checkpoint 含 `parent_slug`)→ 最大序号 +1,零填充四位,关键词追加 `-p{N}` 后缀
|
|
378
|
+
3. *DEFAULT* → 最大序号 +1,零填充四位,拼接 `{NNNN}-{keyword}`(kebab-case,≤ 50 字符)
|
|
379
|
+
|
|
380
|
+
> TRAP:序号计算必须基于目录扫描结果,不可硬编码 `0001`。"从 `0001` 起"仅指无已有目录时的初始值(最大序号 0 + 1 = 1)。
|
|
381
|
+
|
|
382
|
+
4. **EXEC** 创建 `docs/tasks/{slug}/` 目录(**IF** 已存在 → 跳过)→ **ASSERT** `exit_code == 0`
|
|
383
|
+
5. **WRITE** checkpoint:`current_step=Step 1, next_step=CONFIRM_GOAL, phase=init, status=IN_PROGRESS`
|
|
384
|
+
6. **READ** `docs/tasks/progress.md`(**IF** NOT_EXISTS → 创建含表头)→ **ASSERT** `{slug} 不在 progress.md 已完成列表中`
|
|
381
385
|
- **IF** 已存在且状态 `DONE` → 提示用户,询问是否新建变体任务
|
|
382
386
|
|
|
383
387
|
> progress.md 是跨任务进度索引,位于 `docs/tasks/` 根目录,不在 slug 子目录中。
|
|
384
388
|
|
|
385
|
-
|
|
386
|
-
|
|
389
|
+
7. **WRITE** checkpoint:`current_step=CONFIRM_GOAL, next_step=Step 1.5, status=IN_PROGRESS, pending_decision=确认目标理解`
|
|
390
|
+
8. **WRITE**(对话中)向用户展示:任务理解 + 初步方案 + 风险预判 + 分期建议
|
|
387
391
|
- **IF** `00-design-brief.md EXISTS` → **READ** 并将摘要纳入展示
|
|
388
392
|
|
|
389
393
|
**MATCH** `user_response`:
|
|
@@ -854,10 +858,8 @@ TDD 强制要求:每个功能点必须先 git commit 失败测试(test: {功
|
|
|
854
858
|
|
|
855
859
|
1. **WRITE**(对话中)候选项 + 触发条件给用户
|
|
856
860
|
2. **IF** 用户批准:
|
|
857
|
-
- **
|
|
858
|
-
- **
|
|
859
|
-
- **WRITE** 新 `.checkpoint.json`,含 `parent_slug` 指向上期
|
|
860
|
-
- **GOTO** Step 1(CONFIRM_GOAL 简化为单句确认)
|
|
861
|
+
- **WRITE** checkpoint:`phase=phasing, parent_slug={当前slug}, next_phase_n={N}`
|
|
862
|
+
- **GOTO** Step 1(CONFIRM_GOAL 简化为单句确认;Step 1 的 RESOLVE `slug` 将检测 checkpoint 中 `parent_slug` 触发分期任务分支,自动扫描目录生成新序号)
|
|
861
863
|
- team-spec 调度时额外传递上期 `01-plan.md` 候选表和 `03-sdd.md` 路径
|
|
862
864
|
|
|
863
865
|
**ELSE** → 记录用户决策,流程结束
|
|
@@ -982,6 +984,7 @@ TDD 强制要求:每个功能点必须先 git commit 失败测试(test: {功
|
|
|
982
984
|
**REF** `_team-rules/constitutional-rules.md` — 9 条 Constitutional Rules
|
|
983
985
|
**REF** `_team-rules/first-principles.md` — 4 条第一性原理(First Principle #1 ~ #4)
|
|
984
986
|
**REF** `_team-rules/ai-collaboration-standards.md` — AI 协作资产与 Prompt 工程规范
|
|
987
|
+
**REF** `_team-rules/spec-driven-workflow.md` — 有向图回退规则与回退次数上限
|
|
985
988
|
|
|
986
989
|
编排阶段尤其注意:
|
|
987
990
|
|
|
@@ -192,7 +192,7 @@ NO COMPLETION CLAIMS WITHOUT CONSTITUTIONAL COMPLIANCE CHECK FIRST
|
|
|
192
192
|
|
|
193
193
|
- 问题 ID 和严重级别
|
|
194
194
|
- 具体位置(文件 + 行号)
|
|
195
|
-
-
|
|
195
|
+
- 问题描述(不是"有 bug",而是"第 42 行空指针")
|
|
196
196
|
- 建议的修复方案
|
|
197
197
|
- **IF** 回退到 team-impl → 提供修复后的期望测试用例
|
|
198
198
|
|
|
@@ -459,6 +459,9 @@ NO COMPLETION CLAIMS WITHOUT CONSTITUTIONAL COMPLIANCE CHECK FIRST
|
|
|
459
459
|
|
|
460
460
|
**REF** `_team-rules/constitutional-rules.md` — 9 条 Constitutional Rules
|
|
461
461
|
**REF** `_team-rules/first-principles.md` — 4 条第一性原理(First Principle #1 ~ #4)
|
|
462
|
+
**REF** `_team-rules/spec-driven-workflow.md` — SDD 验证链与有向图回退规则
|
|
463
|
+
**REF** `_team-rules/task-lifecycle.md` — 来源标签规范(§1.3)
|
|
464
|
+
**REF** `_team-rules/ai-collaboration-standards.md` — 消费方契约原则(§1.2)与资产维护机制(§1.3)
|
|
462
465
|
|
|
463
466
|
审查阶段尤其注意:
|
|
464
467
|
|
|
@@ -67,8 +67,13 @@ NO CODE WITHOUT SPEC FIRST
|
|
|
67
67
|
|
|
68
68
|
**RESOLVE** `slug`(首个命中即停):
|
|
69
69
|
|
|
70
|
-
1.
|
|
71
|
-
|
|
70
|
+
1. **IF** `docs/tasks/` NOT_EXISTS → 创建目录,最大序号 = 0
|
|
71
|
+
**ELSE** → **READ** `docs/tasks/` 已有目录 → 提取所有匹配 `NNNN-*` 格式的目录名中的四位数字前缀 → 取最大值记为最大序号(无匹配目录则最大序号 = 0)
|
|
72
|
+
2. **IF** 用户传入已有 slug 且 `docs/tasks/{slug}/` EXISTS → 复用该 slug
|
|
73
|
+
3. *DEFAULT* → 最大序号 +1,零填充四位,拼接 `{NNNN}-{keyword}`(kebab-case,≤ 50 字符)
|
|
74
|
+
4. **EXEC** 创建 `docs/tasks/{slug}/` 目录(**IF** 已存在 → 跳过)→ **ASSERT** `exit_code == 0`
|
|
75
|
+
|
|
76
|
+
> TRAP:序号计算必须基于目录扫描结果,不可硬编码 `0001`。
|
|
72
77
|
|
|
73
78
|
产出到 `docs/tasks/{slug}/`。
|
|
74
79
|
|
|
@@ -294,6 +299,7 @@ NO CODE WITHOUT SPEC FIRST
|
|
|
294
299
|
**REF** `_team-rules/constitutional-rules.md` — 9 条 Constitutional Rules
|
|
295
300
|
**REF** `_team-rules/first-principles.md` — 4 条第一性原理(First Principle #1 ~ #4)
|
|
296
301
|
**REF** `_team-rules/spec-driven-workflow.md` — Spec-Driven 开发原则与 TDD 工作流
|
|
302
|
+
**REF** `_team-rules/task-lifecycle.md` — 来源标签规范(§1.3)
|
|
297
303
|
|
|
298
304
|
规格制定阶段尤其注意:
|
|
299
305
|
|
|
@@ -126,8 +126,9 @@ Phase 1 只分析,不写测试代码。
|
|
|
126
126
|
|
|
127
127
|
1. `READ("05-risk.md", "§一验证计划")`(精简模式下不存在属于正常)
|
|
128
128
|
2. `READ("CLAUDE.md").verify_cmd` / `READ(".cursor/rules/")`
|
|
129
|
-
3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")`
|
|
130
|
-
4.
|
|
129
|
+
3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")` / `READ("CI 配置")`
|
|
130
|
+
4. 手动验证可行(截图 / curl / 日志对比)→ 标注验证方式,继续
|
|
131
|
+
5. *NONE* → **NEEDS_CONTEXT**:请用户提供测试命令
|
|
131
132
|
|
|
132
133
|
### Phase 4:补充测试(填补缺口)
|
|
133
134
|
|
|
@@ -224,9 +225,9 @@ Phase 1 只分析,不写测试代码。
|
|
|
224
225
|
|
|
225
226
|
**回退时 MUST 提供**:
|
|
226
227
|
|
|
227
|
-
-
|
|
228
|
+
- 具体问题描述(不是"有 bug",而是"第 42 行空指针")
|
|
228
229
|
- 复现步骤(包括命令和输出)
|
|
229
|
-
- 期望行为(引用
|
|
230
|
+
- 期望行为(引用 SDD 条目编号)
|
|
230
231
|
- 建议修复方向
|
|
231
232
|
|
|
232
233
|
## OUTPUT_TEMPLATE
|
|
@@ -247,8 +248,9 @@ Phase 1 只分析,不写测试代码。
|
|
|
247
248
|
|
|
248
249
|
**REF** `_team-rules/constitutional-rules.md` — 9 条 Constitutional Rules
|
|
249
250
|
**REF** `_team-rules/first-principles.md` — 4 条第一性原理(First Principle #1 ~ #4)
|
|
250
|
-
|
|
251
|
-
|
|
251
|
+
**REF** `_team-rules/spec-driven-workflow.md` — SDD 验证链与有向图回退规则
|
|
252
|
+
**REF** `_team-rules/verification-protocol.md` — verify_cmd 解析流程与 5 步验证协议
|
|
253
|
+
**REF** `_team-rules/task-lifecycle.md` — 来源标签规范(§1.3)
|
|
252
254
|
|
|
253
255
|
- **Rule #8 验证先行**:覆盖率声明必须基于当次新鲜执行的完整输出,不可引用缓存结果 `_team-rules/first-principles.md: First Principle #4`
|
|
254
256
|
- **Rule #3 产出必须验证**:测试矩阵中的每个覆盖声明必须有对应的测试运行证据 `_team-rules/first-principles.md: First Principle #4`
|
|
@@ -60,10 +60,9 @@ NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE FIRST
|
|
|
60
60
|
|
|
61
61
|
1. `READ("05-risk.md", "§一验证计划")`
|
|
62
62
|
2. `READ("CLAUDE.md").verify_cmd` / `READ(".cursor/rules/")`
|
|
63
|
-
3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")`
|
|
64
|
-
4.
|
|
65
|
-
|
|
66
|
-
- *DEFAULT* → **NEEDS_CONTEXT**:请用户提供验证命令
|
|
63
|
+
3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")` / `READ("CI 配置")`
|
|
64
|
+
4. 手动验证可行(截图 / curl / 日志对比)→ 标注验证方式,继续
|
|
65
|
+
5. *NONE* → **NEEDS_CONTEXT**:请用户提供验证命令
|
|
67
66
|
|
|
68
67
|
### Step 2:执行验证
|
|
69
68
|
|
|
@@ -148,7 +147,7 @@ NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE FIRST
|
|
|
148
147
|
| 测试通过 | `failures == 0` + `exit_code == 0` | 上一轮运行、"应该能过" |
|
|
149
148
|
| Lint 干净 | `errors == 0` + `exit_code == 0` | 只检查部分文件、推测 |
|
|
150
149
|
| 构建成功 | `exit_code == 0` + 无 error | Lint 通过了、日志看起来对 |
|
|
151
|
-
| Bug 已修复 | 原始症状复现测试通过 | 代码改了、假设修好了 |
|
|
150
|
+
| Bug 已修复 | 原始症状复现测试通过 + 回归通过 | 代码改了、假设修好了 |
|
|
152
151
|
| 回归测试通过 | 红-绿循环验证通过 | 测试通过一次 |
|
|
153
152
|
| Agent 完成 | `git diff` 显示变更 | Agent 报告"成功了" |
|
|
154
153
|
| 需求满足 | 逐条对照 checklist | 测试通过了 |
|