kld-sdd 2.4.19 → 2.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/kld-sdd-guide.html +1109 -0
- package/lib/command-bridge.js +156 -0
- package/lib/deploy-codebuddy-hooks.js +99 -0
- package/lib/hook-gate-core.js +333 -0
- package/lib/init.js +136 -93
- package/lib/settings-merge.js +85 -0
- package/lib/skills-bundle.js +142 -5
- package/lib/tool-profiles.js +270 -0
- package/package.json +3 -2
- package/skywalk-sdd/index.cjs +1808 -129
- package/templates/commands/kunlunzhima/skill-bridge.md +23 -0
- package/templates/hooks/claude/hooks/sdd-apply-test-gate.cjs +175 -28
- package/templates/hooks/claude/hooks/sdd-post-tool.cjs +42 -21
- package/templates/hooks/codebuddy/hooks/sdd-apply-gate.cjs +16 -0
- package/templates/hooks/codebuddy/hooks/sdd-apply-test-gate.cjs +395 -0
- package/templates/hooks/codebuddy/hooks/sdd-post-tool.cjs +123 -0
- package/templates/hooks/codebuddy/hooks/sdd-pre-tool.cjs +16 -0
- package/templates/hooks/codebuddy/hooks/sdd-prompt.cjs +48 -0
- package/templates/hooks/codebuddy/hooks/sdd-skill-apply-gate.cjs +16 -0
- package/templates/hooks/codebuddy/hooks/sdd-stop.cjs +70 -0
- package/templates/hooks/codebuddy/settings.json +72 -0
- package/templates/openspec/proposal.md +0 -1
- package/templates/openspec/spec.md +2 -2
- package/templates/skills/kld-sdd/opsx-apply/SKILL.md +65 -356
- package/templates/skills/kld-sdd/opsx-apply/checklist.md +94 -0
- package/templates/skills/kld-sdd/opsx-apply/reference.md +403 -0
- package/templates/skills/kld-sdd/opsx-archive/SKILL.md +21 -5
- package/templates/skills/kld-sdd/opsx-archive/checklist.md +33 -0
- package/templates/skills/kld-sdd/opsx-check/SKILL.md +29 -5
- package/templates/skills/kld-sdd/opsx-check/checklist.md +37 -0
- package/templates/skills/kld-sdd/opsx-design/SKILL.md +47 -51
- package/templates/skills/kld-sdd/opsx-design/checklist.md +46 -0
- package/templates/skills/kld-sdd/opsx-design/reference.md +44 -0
- package/templates/skills/kld-sdd/opsx-explore/SKILL.md +1 -1
- package/templates/skills/kld-sdd/opsx-propose/SKILL.md +52 -96
- package/templates/skills/kld-sdd/opsx-propose/checklist.md +44 -0
- package/templates/skills/kld-sdd/opsx-propose/reference.md +94 -0
- package/templates/skills/kld-sdd/opsx-rules/SKILL.md +131 -0
- package/templates/skills/kld-sdd/opsx-rules/checklist.md +27 -0
- package/templates/skills/kld-sdd/opsx-rules/reference.md +124 -0
- package/templates/skills/kld-sdd/opsx-spec/SKILL.md +47 -51
- package/templates/skills/kld-sdd/opsx-spec/checklist.md +46 -0
- package/templates/skills/kld-sdd/opsx-spec/reference.md +49 -0
- package/templates/skills/kld-sdd/opsx-task/SKILL.md +43 -46
- package/templates/skills/kld-sdd/opsx-task/checklist.md +46 -0
- package/templates/skills/kld-sdd/opsx-task/reference.md +40 -0
- package/templates/skills/kld-sdd/opsx-test/SKILL.md +13 -1
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hooks": {
|
|
3
|
+
"UserPromptSubmit": [
|
|
4
|
+
{
|
|
5
|
+
"hooks": [
|
|
6
|
+
{
|
|
7
|
+
"type": "command",
|
|
8
|
+
"command": "node \"$CODEBUDDY_PROJECT_DIR/.codebuddy/hooks/sdd-prompt.cjs\""
|
|
9
|
+
}
|
|
10
|
+
]
|
|
11
|
+
}
|
|
12
|
+
],
|
|
13
|
+
"PreToolUse": [
|
|
14
|
+
{
|
|
15
|
+
"matcher": "Skill",
|
|
16
|
+
"hooks": [
|
|
17
|
+
{
|
|
18
|
+
"type": "command",
|
|
19
|
+
"command": "node \"$CODEBUDDY_PROJECT_DIR/.codebuddy/hooks/sdd-skill-apply-gate.cjs\""
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"matcher": "Bash",
|
|
25
|
+
"hooks": [
|
|
26
|
+
{
|
|
27
|
+
"type": "command",
|
|
28
|
+
"command": "node \"$CODEBUDDY_PROJECT_DIR/.codebuddy/hooks/sdd-pre-tool.cjs\""
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"type": "command",
|
|
32
|
+
"command": "node \"$CODEBUDDY_PROJECT_DIR/.codebuddy/hooks/sdd-apply-test-gate.cjs\""
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"matcher": "Write|Edit",
|
|
38
|
+
"hooks": [
|
|
39
|
+
{
|
|
40
|
+
"type": "command",
|
|
41
|
+
"command": "node \"$CODEBUDDY_PROJECT_DIR/.codebuddy/hooks/sdd-apply-gate.cjs\""
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
}
|
|
45
|
+
],
|
|
46
|
+
"PostToolUse": [
|
|
47
|
+
{
|
|
48
|
+
"matcher": "Bash",
|
|
49
|
+
"hooks": [
|
|
50
|
+
{
|
|
51
|
+
"type": "command",
|
|
52
|
+
"command": "node \"$CODEBUDDY_PROJECT_DIR/.codebuddy/hooks/sdd-post-tool.cjs\""
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"Stop": [
|
|
58
|
+
{
|
|
59
|
+
"hooks": [
|
|
60
|
+
{
|
|
61
|
+
"type": "command",
|
|
62
|
+
"command": "node \"$CODEBUDDY_PROJECT_DIR/.codebuddy/hooks/sdd-apply-test-gate.cjs\""
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"type": "command",
|
|
66
|
+
"command": "node \"$CODEBUDDY_PROJECT_DIR/.codebuddy/hooks/sdd-stop.cjs\""
|
|
67
|
+
}
|
|
68
|
+
]
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
2
|
name: opsx-apply
|
|
3
3
|
description: "变更实施技能 - 针对单一 Capability 按 DAG 依赖顺序实现代码"
|
|
4
4
|
argument-hint: "[change-name] [capability-name] [上下文文件...]"
|
|
@@ -29,11 +29,15 @@ allowed-tools:
|
|
|
29
29
|
> **🖥️ 跨平台执行规则**
|
|
30
30
|
> - 先确认当前终端工作目录是项目根目录;若不是,先 `cd` 到项目根目录。
|
|
31
31
|
> - Telemetry 命令默认使用 `--project=.`,兼容 Windows、macOS、Linux。
|
|
32
|
-
> -
|
|
32
|
+
> - ${SHELL_GUIDANCE}
|
|
33
33
|
> - 不要省略 `--source=opsx-command` 与 `--session-id=<会话ID>`。
|
|
34
34
|
> **📊 Telemetry(必做,不得跳过)**
|
|
35
|
-
> -
|
|
36
|
-
> -
|
|
35
|
+
> - 阶段开始 / 阶段结束 / `task_update` / `ai_adoption_review` / `worktree_finish` 的**完整命令模板**见 `./reference.md`「📊 Telemetry 命令模板」。
|
|
36
|
+
> - 不得跳过任何 telemetry 记录;`task_update` 的 `--task-id=<TASK-ID>` 必须替换为实际任务 ID,否则 E4 指标无法计算;TDD 测试骨架任务须在 `--details-json` 带 `"task_kind":"test-skeleton"`(P3,详见 `./reference.md`)。
|
|
37
|
+
> - 较大的 `--details-json` 负载可先写入文件,再通过 `--details-file=skywalk-sdd/state/<变更名称>-<type>.json` 传递(例如 `task_update` 对应 `<变更名称>-task-update.json`)。
|
|
38
|
+
> - `task_update` 记录成功后会自动调用 `check-task` 更新 `tasks.md` 中的 checkbox;录入成功后,agent 可以通过 `check-task` 命令验证该 checkbox 已更新。
|
|
39
|
+
> - **⚠️ P1-2 ai_adoption_review 必填 ai_diff**:记录 AI 产出快照时,`--details-json` 必须含 `ai_diff.files_changed`(即使=0)与 `ai_diff.files`(产出文件路径数组,非空),**不得只发 `assertions`**。`vcs_mode=readonly` 时 `ai_diff.added_lines` 不得为 null——用只读 `git diff --numstat HEAD` 取值(apply Git 只读策略允许);`vcs_mode=no-git` 时可填 null。工具侧已加记录时硬校验:`files` 空数组或 `readonly` 下 `added_lines=null` 将 **拒绝记录**(与 conformance_review 校验对称)。缺失 `ai_diff` 会导致 report 变更文件数为 null(工具侧已加 `assertions[].files` 兜底,但 `ai_diff` 是主数据源)。完整模板见 `./reference.md`「§5.1」。
|
|
40
|
+
> - **⚠️ P1-3 process_note 必记**:阶段内发生 修复/澄清/决策/API 故障/换模型 时,**必须**记 `process_note` 事件(`kind` 见 `./reference.md`「必记节点清单」)。全程 0 条 process_note 视为过程记录缺失,report 过程记录区显示空。
|
|
37
41
|
|
|
38
42
|
> **🔒 Git 策略(只读增强,不改变开发流)**
|
|
39
43
|
> - Git 只作为可选度量数据源,不是 apply 前置条件。
|
|
@@ -111,44 +115,7 @@ openspec list --json
|
|
|
111
115
|
### 1.2 【Check 门禁检查】验证质量门禁状态
|
|
112
116
|
|
|
113
117
|
> **⛔ 强制门禁**:apply 阶段开始前,必须确认 check 阶段已完成。这是 SDD 流程的关键质量保障。
|
|
114
|
-
|
|
115
|
-
**检查方式**:
|
|
116
|
-
|
|
117
|
-
1. **读取 telemetry 事件数据**,检查当前 change 是否已有完成的 check 阶段:
|
|
118
|
-
```bash
|
|
119
|
-
node skywalk-sdd/log.cjs doctor --project=. --change=<change-name>
|
|
120
|
-
```
|
|
121
|
-
或在 `skywalk-sdd/data/events/<change-name>/` 目录中搜索 `stage_end` + `command=check` + `result=success` 事件。
|
|
122
|
-
|
|
123
|
-
2. **若 check 已完成** ✅:
|
|
124
|
-
> "✅ Check 门禁已通过(事件 ID: evt_xxx),继续 apply 流程。"
|
|
125
|
-
|
|
126
|
-
3. **若 check 未完成** ❌:
|
|
127
|
-
> "⛔ **[Check 门禁未通过]** 检测到当前 change (`<change-name>`) 尚未执行 check 阶段或 check 未通过。
|
|
128
|
-
>
|
|
129
|
-
> **必须先执行质量门禁检查,再开始代码实施:**
|
|
130
|
-
>
|
|
131
|
-
> ```
|
|
132
|
-
> /opsx-check <change-name>
|
|
133
|
-
> ```
|
|
134
|
-
>
|
|
135
|
-
> **原因**:check 阶段验证文档完整性、一致性、可执行性,跳过 check 直接 apply 可能导致需求误解或设计缺陷。
|
|
136
|
-
>
|
|
137
|
-
> **操作顺序**:`/opsx-check → /opsx-apply`
|
|
138
|
-
>
|
|
139
|
-
> 是否要现在执行 check?"
|
|
140
|
-
|
|
141
|
-
- 若用户确认执行 check → 引导执行 `/opsx-check`
|
|
142
|
-
- 若用户坚持跳过 → **强制拒绝**,不得跳过 check 直接 apply
|
|
143
|
-
|
|
144
|
-
4. **若 telemetry 数据缺失**(如新项目无历史数据):
|
|
145
|
-
> "⚠️ 未找到 check 阶段记录。如果这是首次执行,请先运行 `/opsx-check <change-name>` 完成质量门禁。
|
|
146
|
-
>
|
|
147
|
-
> 是否要现在执行 check?"
|
|
148
|
-
|
|
149
|
-
> **🔗 门禁体系**:
|
|
150
|
-
> - Check:`sdd-skill-apply-gate` + `sdd-apply-gate` + 本技能 §1.2
|
|
151
|
-
> - 单元测试(`test-strategy: tdd | impl-first`):`sdd-apply-test-gate` 在 `log.cjs end` / `apply-worktree-finish` / Stop 时校验是否**真实执行**过测试
|
|
118
|
+
> 详细检查步骤、判定与门禁体系说明见 `./checklist.md`「§1.2 Check 门禁」。未完成强制拒绝。${HOOK_GATE_DESCRIPTION}
|
|
152
119
|
|
|
153
120
|
### 1.5 【本地并行】Worktree 与工作区(建议性策略)
|
|
154
121
|
|
|
@@ -166,166 +133,7 @@ openspec list --json
|
|
|
166
133
|
- 本技能单次仍只实施**一个** capability;「多 spec 并行」= 多个 apply 会话 + 多个 worktree,不是一次加载多个 capability 文档。
|
|
167
134
|
- §5 子代理并行 **不** 再建 worktree;Capability 级并行在 §1.5 决定「本次是否建 worktree」。
|
|
168
135
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
**倾向创建**(full 模式常见:`.worktrees/apply-<change>-<capability>` + `kld-sdd/<change>/<capability>`):
|
|
172
|
-
|
|
173
|
-
- `proposal.md` §3 中该 capability 与并行中的其他能力**无**「修改同一模块 / 共享表 / 必须先合入」等描述
|
|
174
|
-
- `design.md` 显示文件路径、包、表与并行中的其他 cap **基本不重叠**
|
|
175
|
-
- 用户需要在**同一集成分支**上并行推进多个 cap,且机器资源允许(多份 `node_modules`)
|
|
176
|
-
|
|
177
|
-
**倾向不建 / 串行 apply**(仍在集成分支上改,或只开一个 worktree):
|
|
178
|
-
|
|
179
|
-
- proposal 写明 capability **依赖**(B 依赖 A 已合入)
|
|
180
|
-
- 多 cap 改**同一文件/模块/配置**(merge 冲突几乎必然)
|
|
181
|
-
- 数据库迁移、公共类型、单例注册等**顺序敏感**
|
|
182
|
-
- 已有另一个 capability 的 worktree **尚未 finish merge** 到集成分支,且当前 cap 需要基于**最新**集成结果开发
|
|
183
|
-
- 沙箱禁止 `git worktree add` → 回退当前目录 + 功能分支,并告知用户
|
|
184
|
-
|
|
185
|
-
**full 模式「一 capability 一分支」**:是**命名与目录约定 + 建议**,须先通过下方 **§1.5 Step 0.1 校验** 再命名/建 worktree。simple 模式通常**一 change 一 worktree**。
|
|
186
|
-
|
|
187
|
-
#### Step 0.1 【必做】分支/隔离校验(早于 record-base 与 `git worktree add`)
|
|
188
|
-
|
|
189
|
-
> 在建议分支名 `kld-sdd/<change>/<capability>` 或创建 worktree **之前**,用 `proposal.md` + 各 capability **spec 依赖信息** 做交叉校验。未通过则**不**按 full 并行策略拆分支,改为串行或本次不建 worktree。
|
|
190
|
-
|
|
191
|
-
**Step A — 读变更级能力清单(允许读 proposal,不读其它 cap 的 design/tasks)**
|
|
192
|
-
|
|
193
|
-
从 `changes/<change-name>/proposal.md` 提取:
|
|
194
|
-
|
|
195
|
-
| 字段 | 用途 |
|
|
196
|
-
|------|------|
|
|
197
|
-
| frontmatter `mode` | `full` → 倾向 `apply-<change>-<cap>`;`simple` → 倾向 `apply-<change>` |
|
|
198
|
-
| §3.1 / §3.2 能力列表 | 本 change 下全部 capability 名 |
|
|
199
|
-
| §4.2 依赖关系图 | 能力间先后 / 上下游 |
|
|
200
|
-
| §5.3 前置依赖 checkbox | 未满足则当前 cap 不宜并行 |
|
|
201
|
-
|
|
202
|
-
**Step B — 读当前 capability 的 spec 依赖(§2 正式加载前仅此文件)**
|
|
203
|
-
|
|
204
|
-
读取**当前** capability 的 `spec.md`(路径按 mode):
|
|
205
|
-
|
|
206
|
-
- **full**:`changes/<change>/specs/<capability>/spec.md` 或 `openspec/changes/.../specs/<capability>/spec.md`(以项目实际为准)
|
|
207
|
-
- **simple**:`changes/<change>/spec.md`
|
|
208
|
-
|
|
209
|
-
只重点读 spec 中:**能力边界 / 涉及模块 / §4 内部与外部依赖**(是否写明依赖其它 capability、共享表、必须先发布的接口)。
|
|
210
|
-
|
|
211
|
-
**Step C — 跨 capability 轻量交叉(隔离例外,仅本节)**
|
|
212
|
-
|
|
213
|
-
对 §3 中**其它** capability,**只**读取其 `spec.md` 的:
|
|
214
|
-
|
|
215
|
-
- 标题与能力简述
|
|
216
|
-
- **§4 依赖**(是否依赖 `<当前 capability>` 或其它 cap)
|
|
217
|
-
- **涉及模块 / 数据表 / 公共配置**(若有)
|
|
218
|
-
|
|
219
|
-
⛔ 禁止为校验而加载其它 cap 的 `design.md`、`tasks.md`(完整实施上下文仍遵守 §2 隔离红线)。
|
|
220
|
-
|
|
221
|
-
**Step D — 判定矩阵(输出给用户)**
|
|
222
|
-
|
|
223
|
-
| 校验项 | 不通过时的处理 |
|
|
224
|
-
|--------|----------------|
|
|
225
|
-
| proposal §4.2 / §5.3 写明当前 cap **依赖** 未完成的其它 cap | **串行**:先 finish 上游,再 apply 当前;不并行拆分支 |
|
|
226
|
-
| 其它 cap 的 spec 写明 **依赖当前 cap** 且当前 cap 未 finish | 当前可并行实施,但提醒下游须等本次 finish |
|
|
227
|
-
| 多 cap spec 出现**相同模块路径 / 同表 / 同配置文件** | **不并行** worktree;串行或合并为一个 apply 范围 |
|
|
228
|
-
| 当前 cap spec §4 要求接口/表已由其它 cap 提供 | 若其它 cap 未 merge 到集成分支 → **不建** worktree,先完成上游 |
|
|
229
|
-
| `git branch --list 'kld-sdd/<change>/*'` 已存在同名分支 | 复用既有 worktree/分支,或询问用户是否清理后重建 |
|
|
230
|
-
| 沙箱 / 环境无法 `worktree add` | 不建 worktree;集成分支上直接开发 |
|
|
231
|
-
|
|
232
|
-
**Step E — 分支与目录命名(校验通过后)**
|
|
233
|
-
|
|
234
|
-
| mode | worktree 目录(建议) | apply 分支(建议) |
|
|
235
|
-
|------|----------------------|-------------------|
|
|
236
|
-
| full + 可隔离 | `.worktrees/apply-<change>-<capability>` | `kld-sdd/<change>/<capability>` |
|
|
237
|
-
| simple 或 change 内单实现体 | `.worktrees/apply-<change>` | `kld-sdd/<change>/<capability>`(cap 可与 change 同名) |
|
|
238
|
-
| 校验不通过但仍需隔离 | `.worktrees/apply-<change>-<capability>` 或单 worktree | 仍用 `kld-sdd/<change>/<capability>`,但**不得**与其它 cap 并行 |
|
|
239
|
-
|
|
240
|
-
**报告模板**(创建 worktree 前必须输出):
|
|
241
|
-
|
|
242
|
-
```
|
|
243
|
-
📋 Apply 隔离校验 — <change>/<capability>
|
|
244
|
-
- mode: full | simple
|
|
245
|
-
- 本 change 能力域: [cap-a, cap-b, …]
|
|
246
|
-
- 与当前 cap 冲突/依赖: [无 | cap-a 必须先合入 | 与 cap-b 共享模块 X]
|
|
247
|
-
- 并行建议: [可独立 worktree | 串行等待 cap-a | 不建 worktree,原地 apply]
|
|
248
|
-
- 分支(建议): kld-sdd/<change>/<capability>
|
|
249
|
-
- 集成分支(将 record-base): <当前 git 分支>
|
|
250
|
-
```
|
|
251
|
-
|
|
252
|
-
#### 多 Capability 并行时的合并顺序(本地)
|
|
253
|
-
|
|
254
|
-
1. 各 capability 在各自 worktree 内完成 + `§6.1 finish` 前,先根据 `proposal.md` 排出 **capability 依赖 DAG**。
|
|
255
|
-
2. **按 DAG 顺序**依次 `finish` merge 到**同一** `integration_base`(先 A 合入,再 B;B 的 worktree 若基于旧尖端,merge 前应在 B 的 worktree 内 `merge/rebase integration_base` 或由用户选择重建 worktree)。
|
|
256
|
-
3. 有依赖的 cap **不要**与上游 cap 同时 finish;无依赖的可并行实施,但 **merge 仍建议逐个** 以降低冲突。
|
|
257
|
-
|
|
258
|
-
向用户简要说明判断结果:
|
|
259
|
-
> "📌 并行建议:cap-A、cap-C 可并行 worktree;cap-B 依赖 A,待 A finish 后再 apply。"
|
|
260
|
-
|
|
261
|
-
#### 分支 / Worktree 创建时机(勿与子代理混淆)
|
|
262
|
-
|
|
263
|
-
| 时机 | 做什么 | 谁执行 |
|
|
264
|
-
|------|--------|--------|
|
|
265
|
-
| **§1.5 Step 0.25~1(仅一次)** | 记录集成分支 → 创建 worktree + 新建 `kld-sdd/<change>/<capability>` | **主会话** |
|
|
266
|
-
| §2~§4 | 读文档、解析 DAG | 主会话 |
|
|
267
|
-
| **§5 子代理** | 在**已有** worktree 内实现任务 | **子代理**(不建 worktree、不建分支) |
|
|
268
|
-
| **§6.1** | merge 回集成分支 → remove worktree → 删 apply 分支 | **主会话** + `apply-worktree-finish.cjs` |
|
|
269
|
-
|
|
270
|
-
- 集成分支 = Apply **开始时**主仓库 `git branch --show-current`(例:用户在 `hotfix-1` 上开始,则 merge 回 `hotfix-1`)。
|
|
271
|
-
- `git worktree add -b` 在主仓库处于集成分支时执行,apply 分支从该分支尖端分出。
|
|
272
|
-
- **子代理禁止** `EnterWorktree` / `git worktree add` / `checkout -b`;同层并行共享**同一** worktree 与 apply 分支。
|
|
273
|
-
|
|
274
|
-
**设置流程**(详见 `./worktree-setup.md`):
|
|
275
|
-
|
|
276
|
-
**Step 0: 检测当前状态**
|
|
277
|
-
- 若已是 Git Worktree → 跳过创建(集成分支应已在 state 文件中)
|
|
278
|
-
- 若非 Git 项目(`vcs_mode=no-git`)→ 跳过
|
|
279
|
-
|
|
280
|
-
**Step 0.1: 分支/隔离校验** — 见上文「Step 0.1 【必做】」,**通过后再执行** 0.25 / 0.5 / Step 1
|
|
281
|
-
|
|
282
|
-
**Step 0.25: 记录集成分支(Git 项目必做,创建 worktree 之前)**
|
|
283
|
-
|
|
284
|
-
在主仓库根目录、**尚未** `cd` 进 `.worktrees/` 时执行:
|
|
285
|
-
|
|
286
|
-
```bash
|
|
287
|
-
node skywalk-sdd/apply-worktree-finish.cjs --record-base \
|
|
288
|
-
--change=<变更名称> \
|
|
289
|
-
--capability=<capability-name>
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
- 将当前具名分支写入 `skywalk-sdd/state/apply-<change>-<capability>.json` 的 `integration_base`
|
|
293
|
-
- 若为 detached HEAD,先 `git checkout` 到具名分支再记录
|
|
294
|
-
- simple 模式可省略 `--capability`(默认与 change 相同)
|
|
295
|
-
|
|
296
|
-
**Step 0.5: 主仓库冲突预检(Git 项目必做)**
|
|
297
|
-
- 在主仓库根目录执行 `git status`,确认**无**与本次 Apply 将修改路径冲突的**未跟踪**实现文件(如 `src/`、`package.json` 等)
|
|
298
|
-
- 若存在,先移走、提交或删除;否则收尾 `merge` 会报 `untracked working tree files would be overwritten`
|
|
299
|
-
- 收尾脚本默认启用 `--check-untracked` 预检并给出明确报错
|
|
300
|
-
|
|
301
|
-
**Step 1: 创建隔离工作区**
|
|
302
|
-
|
|
303
|
-
> 确认主仓库仍检出在 **Step 0.25 记录的集成分支**(或与其一致的尖端),再创建 worktree。
|
|
304
|
-
|
|
305
|
-
- **首选**:使用 `EnterWorktree` 工具(Claude Code 原生)
|
|
306
|
-
```
|
|
307
|
-
EnterWorktree(name="apply-<change-name>-<capability-name>")
|
|
308
|
-
```
|
|
309
|
-
- **回退**:仅当原生工具不可用时,使用 `git worktree add`
|
|
310
|
-
- **full 模式**目录:`.worktrees/apply-<change-name>-<capability-name>`
|
|
311
|
-
- **simple 模式**目录:`.worktrees/apply-<change-name>`(无 capability 后缀)
|
|
312
|
-
- **分支命名**:仅当 Step 0.1 校验通过后,使用报告中的 `kld-sdd/<change-name>/<capability-name>`(勿对强依赖 cap 强行并行拆分支)
|
|
313
|
-
```bash
|
|
314
|
-
git worktree add .worktrees/apply-<change-name>-<capability-name> \
|
|
315
|
-
-b kld-sdd/<change-name>/<capability-name>
|
|
316
|
-
```
|
|
317
|
-
|
|
318
|
-
**Step 2: 项目设置**
|
|
319
|
-
- 自动检测并安装依赖(`npm install` / `pip install` 等)
|
|
320
|
-
|
|
321
|
-
**Step 3: 验证基线**
|
|
322
|
-
- 运行编译/测试,确保工作区干净
|
|
323
|
-
|
|
324
|
-
**报告**:
|
|
325
|
-
> "✅ Worktree 就绪:`<path>`
|
|
326
|
-
> 集成分支:`<integration_base>`(收尾将 merge 回此分支)
|
|
327
|
-
> 基线测试通过(N 个测试,0 失败)
|
|
328
|
-
> 准备实施 `<change-name>/<capability-name>`"
|
|
136
|
+
> **完整策略**(Step 0.1 分支/隔离校验、Step 0.25 record-base、Step 0.5 冲突预检、Step 1 创建、多 cap 合并顺序、设置流程)见 `./reference.md`「§1.5 本地并行」。**快速参考**见 `./worktree-setup.md`(与 reference §1.5 并存:reference=完整策略,worktree-setup=快速参考)。
|
|
329
137
|
|
|
330
138
|
### 2. 渐进式上下文加载
|
|
331
139
|
|
|
@@ -373,100 +181,37 @@ node skywalk-sdd/apply-worktree-finish.cjs --record-base \
|
|
|
373
181
|
4. 若前置任务已完成 → 允许执行
|
|
374
182
|
```
|
|
375
183
|
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
a. **DAG 依赖检查 & 层级收集**
|
|
379
|
-
- 解析当前层级:收集所有依赖已满足的待执行任务
|
|
380
|
-
- 若依赖未满足,暂停并提示用户先完成前置任务
|
|
381
|
-
- 同一层级多个独立任务 → 可并行派发子代理
|
|
382
|
-
|
|
383
|
-
b. **显示当前层级任务**
|
|
384
|
-
> "📍 **层级 [X]**:准备派发 [K] 个子代理并行处理 [M] 个任务
|
|
385
|
-
> - [TASK-01]: <任务描述> - 依赖 ✅ 已满足
|
|
386
|
-
> - [TASK-02]: <任务描述> - 依赖 ✅ 已满足
|
|
387
|
-
> ..."
|
|
388
|
-
|
|
389
|
-
c. **🤖 派发子代理实现代码**
|
|
390
|
-
|
|
391
|
-
> **使用 Agent 工具并行派发同层任务,每个子代理负责一个任务,上下文隔离、专注高效。**
|
|
392
|
-
> **⛔ 子代理阶段不创建 worktree/分支**——隔离环境已在 §1.5 就绪;子代理仅在 worktree 目录内实现 TASK。
|
|
393
|
-
|
|
394
|
-
**派发准备(每个子代理):**
|
|
395
|
-
1. 从 tasks.md 中提取该任务的完整描述
|
|
396
|
-
2. 从 design.md 中提取该任务相关的设计约定(类签名、数据模型、接口定义、算法逻辑)
|
|
397
|
-
3. 从 overview.md 中提取相关全局规范(命名约定、目录结构、错误处理模式)
|
|
398
|
-
4. 组合以上上下文 + `./implementer-prompt.md` 模板 → 子代理 prompt
|
|
399
|
-
|
|
400
|
-
**同层并行派发**:
|
|
401
|
-
- 同一 DAG 层级、无相互依赖的任务 → **一次性并行派发多个子代理**
|
|
402
|
-
- 不同 DAG 层级 → **等待当前层全部完成后,再派发下一层**
|
|
403
|
-
|
|
404
|
-
**派发示例**:
|
|
405
|
-
```
|
|
406
|
-
同一层级 3 个独立任务,一次性并行派发:
|
|
407
|
-
|
|
408
|
-
Agent("实现 TASK-01: 创建用户数据模型", ...)
|
|
409
|
-
Agent("实现 TASK-02: 创建角色数据模型", ...)
|
|
410
|
-
Agent("实现 TASK-03: 创建权限数据模型", ...)
|
|
411
|
-
// 三个子代理同时运行,上下文隔离,互不干扰
|
|
412
|
-
```
|
|
413
|
-
|
|
414
|
-
**等待所有子代理返回结果后,按状态处理**:
|
|
415
|
-
| 子代理状态 | 控制器处理方式 |
|
|
416
|
-
|-----------|---------------|
|
|
417
|
-
| DONE | 进入编译/测试门禁 |
|
|
418
|
-
| DONE_WITH_CONCERNS | 审查顾虑内容,判断是否需要在门禁前处理 |
|
|
419
|
-
| NEEDS_CONTEXT | 提供缺失上下文,重新派发 |
|
|
420
|
-
| BLOCKED | 补充上下文 / 换更强模型 / 拆分任务 / 升级给用户 |
|
|
421
|
-
|
|
422
|
-
> **⛔ 严禁**忽略子代理的升级请求!不改变参数就重复派发不会解决问题。
|
|
423
|
-
|
|
424
|
-
d. **⛔ 编译检查门禁**
|
|
425
|
-
|
|
426
|
-
> **⛔ 红线:每完成一个任务后,必须确保代码可以编译通过!**
|
|
427
|
-
|
|
428
|
-
- 检测项目类型并执行编译命令
|
|
429
|
-
- 编译成功 → 继续下一步
|
|
430
|
-
- **编译失败 → 必须立即修复,禁止标记为已完成!**
|
|
431
|
-
|
|
432
|
-
e. **⛔ 测试执行门禁**
|
|
433
|
-
|
|
434
|
-
> **根据 proposal.md 的 `test-strategy` 字段决定测试门禁行为**
|
|
435
|
-
|
|
436
|
-
| test-strategy | 门禁行为 |
|
|
437
|
-
|---------------|----------|
|
|
438
|
-
| `tdd` | **⛔ 强制执行**:运行相关测试,测试失败禁止继续,必须修复 |
|
|
439
|
-
| `impl-first` | **⚠️ 警告模式**:运行测试,失败时显示警告但允许继续 |
|
|
440
|
-
| `none` | **跳过**:不执行测试门禁 |
|
|
441
|
-
|
|
442
|
-
f. **⛔ 立即更新任务状态**
|
|
443
|
-
- 修改 tasks.md:将 `- [ ]` 替换为 `- [x]`(包括拓扑图和任务详情中的复选框)
|
|
444
|
-
- 同时修改:`- **状态**: [ ] 未完成` → `- **状态**: [x] 已完成`
|
|
445
|
-
- **两种格式必须同步更新**,不可遗漏
|
|
446
|
-
- 验证修改成功
|
|
447
|
-
- 显示进度:`✅ [TASK-ID] 已完成 [N/M]`
|
|
448
|
-
- 记录任务级 Telemetry:
|
|
449
|
-
```bash
|
|
450
|
-
node skywalk-sdd/log.cjs record --type=task_update --command=apply --project=. --change=<变更名称> --capability=<capability-name> --task-id=<TASK-ID> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --status=completed --result=success --summary="<TASK-ID> 完成" --details-json="{\"files_changed\":[],\"build_results\":{\"command\":\"<实际编译命令>\",\"success\":true,\"duration_ms\":0,\"error_count\":0},\"test_results\":{\"command\":\"<实际测试命令>\",\"passed\":0,\"failed\":0,\"skipped\":0,\"coverage\":null,\"duration_ms\":0}}"
|
|
451
|
-
```
|
|
452
|
-
**⚠️ 注意**:`--task-id=<TASK-ID>` 必须替换为实际任务 ID,否则 E4 指标无法计算。
|
|
453
|
-
|
|
454
|
-
g. **继续下一个层级**
|
|
455
|
-
- 重新检查 DAG,找出所有依赖已满足的下一层级任务
|
|
456
|
-
- 若同层有多个可执行任务 → 并行派发子代理
|
|
457
|
-
- 若当前层级有未完成的任务 → 等待或重新派发
|
|
184
|
+
**执行每个任务**(a-g 步骤):
|
|
458
185
|
|
|
459
|
-
|
|
186
|
+
a. **DAG 依赖检查 & 层级收集** — 收集依赖已满足的待执行任务;同层多个独立任务可并行派发子代理。
|
|
187
|
+
b. **显示当前层级任务** — `📍 层级 [X]:准备派发 [K] 个子代理并行处理 [M] 个任务`。
|
|
188
|
+
c. **🤖 派发子代理实现代码** — 使用 Agent 工具并行派发同层任务,⛔ 子代理阶段不创建 worktree/分支。**派发模板与状态处理见 `./reference.md`「§5c 子代理派发模板」+ `./implementer-prompt.md`**。
|
|
189
|
+
d. **⛔ 编译检查门禁** — 每完成一个任务后必须编译通过;**详细见 `./checklist.md`「§5d 编译检查门禁」**。
|
|
190
|
+
e. **⛔ 测试执行门禁** — 按 `proposal.md` 的 `test-strategy` 决定(tdd=强制, impl-first=警告, none=跳过);**详细见 `./checklist.md`「§5e 测试执行门禁」**。
|
|
191
|
+
f. **⛔ 立即更新任务状态** — tasks.md `- [ ]`→`- [x]` 与 `**状态**: [ ]`→`[x]` 两种格式同步;显示 `✅ [TASK-ID] 已完成 [N/M]`;记录任务级 Telemetry(`task_update`,命令模板见 `./reference.md`)。
|
|
192
|
+
g. **继续下一个层级** — 重新检查 DAG,找出依赖已满足的下一层级任务。
|
|
460
193
|
|
|
461
|
-
|
|
194
|
+
**【S2 逐任务红绿节奏】**:每个任务完成后,在编译检查(d)和测试门禁(e)之外,如果 `test-strategy` 为 `tdd`,要求:
|
|
195
|
+
1. 先写/确认该任务相关的测试存在且 RED(失败原因与该任务目标直接相关)
|
|
196
|
+
2. 实现代码使测试 GREEN
|
|
197
|
+
3. 再进入下一个任务
|
|
462
198
|
|
|
463
|
-
|
|
464
|
-
- 若用户进行了人工 review 并确认保留率,可补录 `--status=final` 事件(`review_status: "final"`),P2 指标将优先使用 final 数据
|
|
199
|
+
这确保每个任务都有对应的测试保护,而非最后统一跑测试。
|
|
465
200
|
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
201
|
+
### 5f. 【S3 apply 结束前 checkbox 全量自检】
|
|
202
|
+
|
|
203
|
+
在 apply 阶段结束前(所有任务完成后),执行全量自检:
|
|
204
|
+
1. 遍历 tasks.md 所有任务行(`- [ ]`/`- [x]` 和 `**状态**: [ ]`/`[x]` 两种格式)
|
|
205
|
+
2. 确认所有任务状态与实际完成情况一致
|
|
206
|
+
3. 确认手动验证清单(如有)已勾选
|
|
207
|
+
4. 确认文档更新(如有)已完成
|
|
208
|
+
5. 若有不一致,提示用户确认后再进入收尾
|
|
209
|
+
|
|
210
|
+
此自检确保 tasks.md 的 checkbox 与实际代码状态完全同步。
|
|
211
|
+
|
|
212
|
+
### 5.1 【Telemetry 必做】记录 AI 产出快照
|
|
213
|
+
|
|
214
|
+
当前 Capability 的 AI 代码产出完成后,必须记录 `ai_adoption_review`,但不得为了采集快照自动提交 commit。**完整命令模板与说明见 `./reference.md`「§5.1 记录 AI 产出快照」**。
|
|
470
215
|
|
|
471
216
|
### 6. 完成或暂停时显示状态
|
|
472
217
|
|
|
@@ -485,80 +230,44 @@ node skywalk-sdd/log.cjs record --type=ai_adoption_review --command=apply --proj
|
|
|
485
230
|
|
|
486
231
|
### 6.0 【条件必做】单元测试真实执行(`test-strategy` 非 `none`)
|
|
487
232
|
|
|
488
|
-
当 `proposal.md` 的 `test-strategy` 为 **`tdd`** 或 **`impl-first`**
|
|
489
|
-
|
|
490
|
-
1. **在结束 apply 或执行 §6.1 收尾之前**,必须在项目根或 worktree 内**真实运行**单元测试命令(`npm test` / `pytest` / `go test` 等)。
|
|
491
|
-
2. 须留下可核验的 telemetry 证据(任选其一):
|
|
492
|
-
- `node skywalk-sdd/log.cjs record --type=test_result ...`(`test_results.command` 非空,且 `passed`/`failed`/`duration_ms` 有实际值)
|
|
493
|
-
- `task_update` 的 `details-json` 中 `test_results` 含真实执行数据
|
|
494
|
-
- 或单独运行 `/opsx-test` 并完成 `command=test` 的 `stage_end`
|
|
495
|
-
3. **Claude Code**:`sdd-apply-test-gate.cjs` 会在 `log.cjs end`、`apply-worktree-finish`、会话 Stop 时自动校验;无证据则**阻断**并提示补跑测试。
|
|
496
|
-
|
|
497
|
-
| test-strategy | 行为 |
|
|
498
|
-
|---------------|------|
|
|
499
|
-
| `tdd` | 无测试证据不得结束 apply / 不得 finish worktree |
|
|
500
|
-
| `impl-first` | 同上,实现后必须补跑并记录 |
|
|
501
|
-
| `none` | 跳过本节与 test gate |
|
|
233
|
+
当 `proposal.md` 的 `test-strategy` 为 **`tdd`** 或 **`impl-first`** 时,在结束 apply 或执行 §6.1 收尾之前,必须真实运行单元测试并留 telemetry 证据。**详细执行要求与证据形式见 `./reference.md`「§6.0」+ `./checklist.md`「§6.0 单元测试真实执行自检」**。${HOOK_GATE_DESCRIPTION}
|
|
502
234
|
|
|
503
235
|
### 6.1 【条件必做】Worktree 收尾(仅当 §1.5 已创建 worktree)
|
|
504
236
|
|
|
505
|
-
> **⛔ 本次 Apply 若创建了 worktree**:DAG 全部完成且
|
|
237
|
+
> **⛔ 本次 Apply 若创建了 worktree**:DAG 全部完成且 §6.0 测试门禁(若适用)通过后,必须在**主仓库根目录**执行收尾脚本(禁止在 `.worktrees/...` 内执行)。
|
|
506
238
|
> 若 §1.5 判定未建 worktree(串行、强依赖、沙箱回退),跳过本节。
|
|
507
239
|
|
|
508
|
-
|
|
509
|
-
- worktree 内 `git status` 干净(实现代码已全部 commit)
|
|
510
|
-
- 主仓库无与 merge 冲突的未跟踪文件(见 §1.5 Step 0.5)
|
|
511
|
-
- `test-strategy` 为 `tdd`/`impl-first` 时,§6.0 测试证据已存在
|
|
512
|
-
|
|
513
|
-
**执行**(主仓库根目录):
|
|
514
|
-
```bash
|
|
515
|
-
node skywalk-sdd/apply-worktree-finish.cjs \
|
|
516
|
-
--change=<变更名称> \
|
|
517
|
-
--capability=<capability-name>
|
|
518
|
-
```
|
|
519
|
-
|
|
520
|
-
- **默认 merge 目标**:§1.5 `--record-base` 写入的 `integration_base`(**不是**默认 master)
|
|
521
|
-
- 仅当 state 缺失或需覆盖时传 `--target=<集成分支>`
|
|
522
|
-
- **simple 模式**:`--capability` 可省略;目录为 `.worktrees/apply-<change>`
|
|
523
|
-
- **full 模式**:目录为 `.worktrees/apply-<change>-<capability>`
|
|
524
|
-
|
|
525
|
-
**脚本行为**:`checkout 集成分支` → `merge --no-ff` apply 分支 → `worktree remove` → 删临时目录 → `branch -d` apply 分支
|
|
240
|
+
**前置条件、执行命令、脚本行为、常用 flags、回退方式见 `./reference.md`「§6.1 Worktree 收尾」+ `./checklist.md`「§6.1 Worktree 收尾前置条件自检」**。
|
|
526
241
|
|
|
527
|
-
|
|
242
|
+
> **与 Git 只读策略的关系**:Apply **实施过程**禁止 Agent 随意 commit;**收尾**由本脚本执行 merge/remove,属于流程必做步骤,不视为「随意提交业务代码」。
|
|
528
243
|
|
|
529
|
-
|
|
530
|
-
```bash
|
|
531
|
-
node skywalk-sdd/log.cjs record --type=worktree_finish \
|
|
532
|
-
--command=apply --project=. --change=<变更名称> --capability=<capability-name> \
|
|
533
|
-
--agent=<Agent类型> --source=opsx-command --session-id=<会话ID> \
|
|
534
|
-
--result=success --summary="merge+remove completed" \
|
|
535
|
-
--details-json='{"integration_base":"<branch>","merge_commit":"<sha>","worktree_removed":true}'
|
|
536
|
-
```
|
|
244
|
+
---
|
|
537
245
|
|
|
538
|
-
|
|
539
|
-
- `EnterWorktree`:`ExitWorktree(action="remove", discard_changes=false)`
|
|
540
|
-
- `git worktree add`:`git worktree remove` + `git branch -D`
|
|
246
|
+
## Guardrails
|
|
541
247
|
|
|
542
|
-
>
|
|
248
|
+
> 完整 ⛔ 强制项勾选清单见 `./checklist.md`「Guardrails ⛔ 强制项」。核心红线:
|
|
249
|
+
|
|
250
|
+
- **⛔ Check 门禁检查**:apply 前必须确认 check 已完成;未完成强制拒绝。${HOOK_GATE_DESCRIPTION}
|
|
251
|
+
- **⛔ 渐进式加载 + 隔离红线**:只加载当前 Capability 的四文档链,禁止加载同级其他 Capability 的文档。
|
|
252
|
+
- **⛔ DAG 依赖拦截**:执行任务前必须检查依赖,前置未完成必须拦截。
|
|
253
|
+
- **⛔ 编译检查门禁**:每完成一个任务后必须运行编译检查,编译失败禁止标记已完成。
|
|
254
|
+
- **⛔ 测试执行门禁**:根据 `test-strategy` 决定(tdd=强制, impl-first=强制补跑, none=跳过);须真实执行并留 telemetry。${HOOK_GATE_DESCRIPTION}
|
|
255
|
+
- **⛔ 必须实时更新任务状态**:每完成一个任务立即改 tasks.md,两种格式同步。
|
|
256
|
+
- **Git 只读策略**:禁止为了度量自动初始化 Git、创建分支或提交 commit;非 Git 项目用 `vcs_mode=no-git` 继续执行。
|
|
257
|
+
- **⛔ Step 0.1 隔离校验必做**:建 worktree / 建议分支名前必须完成 proposal + 跨 cap spec 依赖校验并输出报告。
|
|
258
|
+
- **Worktree 为加速手段,非必选项**:校验通过且解耦方可多 worktree;有依赖或共享修改面则串行。
|
|
259
|
+
- **本地集成分支**:使用 worktree 时 `--record-base` 记录用户当前本地分支为 merge 目标,禁止默认写死 `master`。
|
|
260
|
+
- **⛔ 已建 worktree 则收尾必做**:`apply-worktree-finish.cjs` merge 回 `integration_base`;多 cap 并行时按依赖顺序逐个 finish。
|
|
261
|
+
- **⛔ 子代理不建分支**:worktree/apply 分支仅在 §1.5(主会话)创建一次,§5 子代理不得再建。
|
|
262
|
+
- **显示进度反馈**:每完成一个任务显示「✅ [TASK-ID] 已完成 [N/M]」。
|
|
263
|
+
- **保持任务聚焦**:每次只处理一个任务。
|
|
264
|
+
- **遇到问题时暂停**:任务描述模糊、编译失败、测试失败或发现设计问题时暂停询问。
|
|
543
265
|
|
|
544
266
|
---
|
|
545
267
|
|
|
546
|
-
##
|
|
268
|
+
## 渐进披露
|
|
547
269
|
|
|
548
|
-
-
|
|
549
|
-
-
|
|
550
|
-
-
|
|
551
|
-
-
|
|
552
|
-
- **⛔ 编译检查门禁**:每完成一个任务后,**必须运行编译检查**,编译失败禁止标记已完成
|
|
553
|
-
- **⛔ 测试执行门禁**:根据 `test-strategy` 决定测试门禁行为(tdd=强制, impl-first=强制补跑, none=跳过);须真实执行并留 telemetry,`sdd-apply-test-gate` 会校验非占位数据
|
|
554
|
-
- **⛔ 必须实时更新任务状态**:每完成一个任务,**立即**修改 tasks.md 中的 `- [ ]` 为 `- [x]`,**同时修改** `**状态**: [ ] 未完成` 为 `**状态**: [x] 已完成`,两种格式不可遗漏
|
|
555
|
-
- **Git 只读策略**:禁止为了度量自动初始化 Git、创建分支或提交 commit;非 Git 项目使用 `vcs_mode=no-git` 继续执行
|
|
556
|
-
- **⛔ Step 0.1 隔离校验必做**:建 worktree / 建议分支名前,必须完成 proposal + 跨 cap spec 依赖校验并输出报告;未通过不得按 full 并行策略拆 `kld-sdd/<change>/<cap>`
|
|
557
|
-
- **Worktree 为加速手段,非必选项**:校验通过且解耦方可多 worktree;有依赖或共享修改面则串行
|
|
558
|
-
- **本地集成分支**:使用 worktree 时,`--record-base` 记录用户**当前本地分支**为 merge 目标,禁止默认写死 `master`
|
|
559
|
-
- **⛔ 已建 worktree 则收尾必做**:`apply-worktree-finish.cjs` merge 回 `integration_base`;多 cap 并行时按依赖顺序逐个 finish
|
|
560
|
-
- **⛔ 子代理不建分支**:worktree/apply 分支仅在 §1.5(主会话)创建一次,§5 子代理不得再建
|
|
561
|
-
- **Capability 级并行**:多个 `/opsx-apply` 会话 = 多个 worktree;禁止为未解耦的 cap 仅因 full 模式而拆分支
|
|
562
|
-
- **显示进度反馈**:每完成一个任务,显示「✅ [TASK-ID] 已完成 [N/M]」
|
|
563
|
-
- **保持任务聚焦**:每次只处理一个任务
|
|
564
|
-
- **遇到问题时暂停**:任务描述模糊、编译失败、测试失败或发现设计问题时暂停询问
|
|
270
|
+
- Read `checklist.md` 仅在执行 apply 需要校验门禁/自检时 — 含 §1.2 Check 门禁检查点、§5d/§5e 编译/测试门禁自检、§6.0 单元测试真实执行自检、§6.1 worktree 收尾前置条件、Guardrails ⛔ 强制项勾选表。
|
|
271
|
+
- Read `reference.md` 仅在需要参考详细模板时 — 含 📊 Telemetry 命令模板(start/end/task_update/ai_adoption_review/worktree_finish)、§1.5 worktree 全套策略(Step 0.1-3 + record-base + 多 cap 合并顺序)、§5c 子代理派发、§5.1 AI 产出快照、§6.0 单元测试、§6.1 worktree 收尾脚本。
|
|
272
|
+
- `implementer-prompt.md` 为子代理派发提示模板(§5c 派发时组合 tasks/design/overview 上下文使用)。
|
|
273
|
+
- `worktree-setup.md` 为 worktree 快速参考(§1.5 策略的精简版,与 reference.md §1.5 完整版并存:reference=完整策略,worktree-setup=快速参考)。
|