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,38 +7,38 @@ description: Use when receiving code review feedback, before implementing sugges
|
|
|
7
7
|
|
|
8
8
|
## 角色定位
|
|
9
9
|
|
|
10
|
-
你是代码审查反馈的接收者。你的核心职责是:**先验证再实施**,不是表演性同意。
|
|
11
|
-
|
|
12
10
|
### 系统提示词
|
|
13
11
|
|
|
14
12
|
```
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
1.
|
|
19
|
-
2.
|
|
20
|
-
3.
|
|
21
|
-
4.
|
|
22
|
-
5.
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
关键区别:你不是表演性同意。禁止使用"你说得太对了""好主意"等无技术内容的回应。每项修改必须单独测试。
|
|
13
|
+
角色:审查反馈应对——先验证再实施,禁止表演性同意
|
|
14
|
+
核心原则:忠于代码库健康,不忠于审查者感受
|
|
15
|
+
流程:
|
|
16
|
+
1. 完整阅读反馈,重述需求或提问澄清
|
|
17
|
+
2. 对照代码库验证技术正确性
|
|
18
|
+
3. 技术性回应或基于推理的推回
|
|
19
|
+
4. 逐项实施,每项单独测试
|
|
20
|
+
5. 反馈揭示 spec 遗漏 → 路由 team-spec;架构问题 → 触发 H3
|
|
21
|
+
约束:
|
|
22
|
+
- 禁止"你说得太对了""好主意"等无技术内容回应
|
|
23
|
+
- 每项修改须单独测试验证
|
|
27
24
|
```
|
|
28
25
|
|
|
29
|
-
###
|
|
26
|
+
### 推理检查点
|
|
27
|
+
|
|
28
|
+
**核心指令**:每条反馈是待验证假设,不是待执行命令。技术正确性用 grep 验证,不凭印象。推回须基于技术理由,不基于改动成本。
|
|
30
29
|
|
|
31
|
-
|
|
30
|
+
**推理框架**:
|
|
32
31
|
|
|
33
|
-
|
|
32
|
+
1. **技术正确性**:建议在当前代码库中正确吗?(grep 验证)
|
|
33
|
+
2. **兼容性**:实施后会破坏现有功能或与已有测试矛盾吗?
|
|
34
|
+
3. **上下文完整性**:审查者了解完整上下文吗?(缺失约束 = 建议基于不完整信息)
|
|
35
|
+
4. **决策一致性**:与 08-ai-decisions.md 中已有决策冲突吗?
|
|
36
|
+
5. **YAGNI**:改进在当前代码中有实际使用场景吗?
|
|
34
37
|
|
|
35
|
-
|
|
36
|
-
2. **兼容性**:实施这条建议会破坏现有功能吗?与已有测试矛盾吗?
|
|
37
|
-
3. **上下文完整性**:审查者是否了解完整上下文?(如果审查者不知道某个约束,他的建议可能基于不完整信息)
|
|
38
|
-
4. **决策一致性**:这条建议与用户之前做出的设计决策冲突吗?(检查 08-ai-decisions.md)
|
|
39
|
-
5. **YAGNI 检查**:建议的改进在当前代码中有实际使用场景吗?还是预防性过度设计?
|
|
38
|
+
**对抗自检**:
|
|
40
39
|
|
|
41
|
-
|
|
40
|
+
- [ ] 无条件接受此反馈会否引入新问题?
|
|
41
|
+
- [ ] 推回理由是技术性的还是因为改动成本高?
|
|
42
42
|
|
|
43
43
|
## Iron Law
|
|
44
44
|
|
|
@@ -54,52 +54,86 @@ NO IMPLEMENTATION WITHOUT TECHNICAL VERIFICATION FIRST
|
|
|
54
54
|
| 技术验证记录 | 验证结果(对话中) |
|
|
55
55
|
| 修改实施记录 | 代码 diff + 测试结果 |
|
|
56
56
|
|
|
57
|
+
## 输入
|
|
58
|
+
|
|
59
|
+
- **required**:代码审查反馈内容
|
|
60
|
+
- **required**:项目测试/构建命令
|
|
61
|
+
- **RESOLVE**:`verify_cmd`(从 `CLAUDE.md` / `.cursor/rules/` 或 `05-risk.md` 获取)
|
|
62
|
+
|
|
57
63
|
## 执行步骤
|
|
58
64
|
|
|
59
65
|
### Phase 1:理解反馈
|
|
60
66
|
|
|
61
|
-
|
|
67
|
+
> 收到反馈后先理解、再验证、最后回应。禁止跳过验证直接实施。
|
|
62
68
|
|
|
63
|
-
1.
|
|
64
|
-
2.
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
+
1. **READ** 所有反馈项 — 不立即反应
|
|
70
|
+
2. **FOR** each `feedback_item`:
|
|
71
|
+
- 用自己的话重述审查者的要求
|
|
72
|
+
- **IF** 含义不确定 → 先提问澄清,暂不处理该项
|
|
73
|
+
3. **FOR** each `feedback_item`:
|
|
74
|
+
- **EXEC** `grep` / **READ** 实际代码 — 验证该建议在当前代码库中的技术正确性
|
|
75
|
+
- **ASSERT** `验证基于代码证据`(不凭印象)
|
|
76
|
+
4. **FOR** each `feedback_item`:
|
|
77
|
+
- **IF** 技术正确 → 记录确认,标记待实施
|
|
78
|
+
- **ELSE** → 用技术理由推回(参考「推回指南」)
|
|
79
|
+
5. 分析完成 → **IF** 存在「增加功能/完善」建议 → Phase 2 YAGNI 检查;**IF** 存在外部反馈 → Phase 3 验证。最终 → **GOTO** Phase 4 实施
|
|
69
80
|
|
|
70
81
|
### Phase 2:YAGNI 检查
|
|
71
82
|
|
|
72
|
-
当审查者建议"实现得更完善"
|
|
83
|
+
> 当审查者建议"实现得更完善"或添加新功能时,用代码证据判断是否真正需要。
|
|
73
84
|
|
|
74
|
-
1. grep
|
|
75
|
-
2. 如果是 exported/public API → 即使当前项目未直接调用也不应删除(可能有外部消费方)
|
|
76
|
-
3. 如果是 internal 且无引用 → 建议删除,向审查者回应:"该功能当前未被调用,建议删除(YAGNI)"
|
|
77
|
-
4. 如果有引用 → 按建议实现
|
|
78
|
-
5. 如果不确定 → 标注 {ambiguous} 并询问用户
|
|
85
|
+
1. **EXEC** `grep` 在代码库中查找该功能/接口的实际使用
|
|
79
86
|
|
|
80
|
-
|
|
87
|
+
2. **MATCH** `usage_result`:
|
|
88
|
+
- exported / public API 且有外部消费方可能 → 保留,即使当前项目未直接调用
|
|
89
|
+
- internal 且无引用 → 建议删除,向审查者回应:"该功能当前未被调用,建议删除(YAGNI)"
|
|
90
|
+
- 有引用 → 按建议实现
|
|
91
|
+
- *not found* 且无法确定 → 标注 `{ambiguous}` → **NEEDS_CONTEXT**:询问用户
|
|
81
92
|
|
|
82
|
-
|
|
93
|
+
### Phase 3:外部反馈处理
|
|
83
94
|
|
|
84
|
-
|
|
85
|
-
2. **决策一致性**:建议与用户之前做出的设计决策冲突吗?
|
|
95
|
+
> 外部反馈可能基于不完整上下文。验证技术正确性之外,还需检查上下文和决策一致性。
|
|
86
96
|
|
|
87
|
-
|
|
97
|
+
1. **FOR** each `external_feedback_item`:
|
|
98
|
+
- **EXEC** `grep` / **READ** 实际代码 — 验证技术正确性(同 Phase 1 步骤 3)
|
|
99
|
+
- **READ** `08-ai-decisions.md` — 检查与已有决策是否冲突
|
|
100
|
+
- **ASSERT** `验证基于代码证据`(不凭印象)
|
|
88
101
|
|
|
89
|
-
|
|
90
|
-
-
|
|
91
|
-
-
|
|
92
|
-
-
|
|
93
|
-
-
|
|
102
|
+
2. **MATCH** `check_result`:
|
|
103
|
+
- 技术正确 + 无冲突 → 标记待实施(**GOTO** Phase 4)
|
|
104
|
+
- 技术上不正确 → 用技术理由推回(参考「推回指南」)
|
|
105
|
+
- 无法验证 → **NEEDS_CONTEXT**:明确回应"我需要 `{具体信息}` 才能验证这条建议"
|
|
106
|
+
- 与已有决策冲突 → **H3**:暂停,展示冲突点,等待用户决策
|
|
107
|
+
- 反馈揭示 spec 遗漏 → **ROUTE** `team-spec`
|
|
108
|
+
- 反馈揭示架构问题 → **H3**
|
|
94
109
|
|
|
95
110
|
### Phase 4:实施
|
|
96
111
|
|
|
97
|
-
|
|
112
|
+
> 逐项实施、逐项测试。不可批量实施后再测试(FP-2 实现偏见污染验证)。全部单项通过后再跑全量测试确认无交叉回归。
|
|
113
|
+
|
|
114
|
+
**RESOLVE** `verify_cmd`(首个命中即停):
|
|
115
|
+
|
|
116
|
+
1. `READ("05-risk.md", "§一验证计划")`
|
|
117
|
+
2. `READ("CLAUDE.md").test_cmd` / `READ(".cursor/rules/")`
|
|
118
|
+
3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")`
|
|
119
|
+
4. *none* → **NEEDS_CONTEXT**:请用户提供验证命令
|
|
120
|
+
|
|
121
|
+
实施顺序:
|
|
98
122
|
|
|
99
|
-
1.
|
|
100
|
-
2.
|
|
101
|
-
3.
|
|
102
|
-
|
|
123
|
+
1. **ASSERT** `不明确项 == 0`(所有不明确项已在 Phase 1 步骤 2 中澄清)
|
|
124
|
+
2. 按优先级排序:阻塞问题 → 简单修复 → 复杂修复
|
|
125
|
+
3. **FOR** each `impl_item`(按排序顺序):
|
|
126
|
+
- 实施修改
|
|
127
|
+
- **EXEC** `verify_cmd` — 单独测试该项修改
|
|
128
|
+
- **ASSERT** `exit_code == 0` && `failures == 0`
|
|
129
|
+
- **IF** `tests_fail` → 立即定位原因并修复 → **GOTO** Step 3 当前项重新测试
|
|
130
|
+
4. **EXEC** `verify_cmd` — 全量测试,确认无回归
|
|
131
|
+
- **ASSERT** `exit_code == 0` && `failures == 0`
|
|
132
|
+
- **IF** `regression_detected` → 定位引入问题的修改 → **ROLLBACK** 该修改 → 重新实施 → **GOTO** Step 3 该项
|
|
133
|
+
5. **IF** 任务目录存在(编排模式):
|
|
134
|
+
- **WRITE** 每项修改的实施结果(反馈项 + 修改内容 + 测试结果)到 `08-ai-decisions.md`
|
|
135
|
+
|
|
136
|
+
**验证协议**(步骤 3-4 声明"通过"前必须执行 `_team-rules/verification-protocol.md` 的 5 个步骤)
|
|
103
137
|
|
|
104
138
|
## 禁止回应
|
|
105
139
|
|
|
@@ -129,40 +163,38 @@ NO IMPLEMENTATION WITHOUT TECHNICAL VERIFICATION FIRST
|
|
|
129
163
|
6. 建议修复了不存在的 bug
|
|
130
164
|
7. 建议的方案比现有代码更复杂
|
|
131
165
|
|
|
166
|
+
## STOP Signals
|
|
167
|
+
|
|
168
|
+
- **实施**反馈建议前没有验证技术正确性
|
|
169
|
+
- **回应**"你说得太对了""好主意"等表演性同意
|
|
170
|
+
- **批量**实施多项反馈而不逐项测试
|
|
171
|
+
- **忽略**外部反馈与代码库现实的冲突而不推回
|
|
172
|
+
|
|
132
173
|
## Constitutional Rules 遵守
|
|
133
174
|
|
|
134
175
|
引用 `_team-rules/constitutional-rules.md`。反馈处理阶段尤其注意:
|
|
135
176
|
|
|
136
177
|
- **Rule #9 TDD 顺序不可逆**:每项修改必须单独测试,不可批量实施后再测试(FP-2)
|
|
137
|
-
- **Rule #2
|
|
138
|
-
- **Rule #1
|
|
178
|
+
- **Rule #2 有向图回退**:反馈揭示 spec 遗漏 → 回退 specAgent,不可自行决定(FP-4)
|
|
179
|
+
- **Rule #1 人类介入是一等公民**:反馈揭示架构问题 → 触发 H3(FP-1)
|
|
139
180
|
|
|
140
181
|
## 自检门禁
|
|
141
182
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
- [ ]
|
|
145
|
-
- [ ]
|
|
146
|
-
- [ ]
|
|
147
|
-
- [ ]
|
|
148
|
-
- [ ] 如果反馈揭示 spec 遗漏 → 已路由到 team-spec
|
|
149
|
-
- [ ] 如果反馈揭示架构问题 → 已触发 H3
|
|
183
|
+
- [ ] **ASSERT** 每项反馈都经过技术验证(不是表演性同意)
|
|
184
|
+
- [ ] **ASSERT** 不明确项已澄清后才实施
|
|
185
|
+
- [ ] **ASSERT** 每项修改单独 **EXEC** `verify_cmd` 测试过
|
|
186
|
+
- [ ] **ASSERT** 无回归(**EXEC** 全量测试确认)
|
|
187
|
+
- [ ] **IF** 反馈揭示 spec 遗漏 → 已 **ROUTE** `team-spec`
|
|
188
|
+
- [ ] **IF** 反馈揭示架构问题 → 已触发 **H3**
|
|
150
189
|
|
|
151
190
|
## 完成标志
|
|
152
191
|
|
|
153
|
-
|
|
154
|
-
状态:DONE | DONE_WITH_CONCERNS | NEEDS_CONTEXT | BLOCKED
|
|
155
|
-
反馈项:{N} 项
|
|
156
|
-
已实施:{N} 项
|
|
157
|
-
已推回:{N} 项(含理由)
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
## STOP Signals
|
|
192
|
+
**MATCH** `result`:
|
|
161
193
|
|
|
162
|
-
-
|
|
163
|
-
-
|
|
164
|
-
-
|
|
165
|
-
-
|
|
194
|
+
- 全部实施且测试通过 → **DONE**(`反馈项: {N}`, `已实施: {N}`, `已推回: {N}`)
|
|
195
|
+
- 已实施但有保留意见 → **DONE_WITH_CONCERNS**(`concerns: [...]`)
|
|
196
|
+
- 缺少关键信息无法验证 → **NEEDS_CONTEXT**(`missing: [...]`)
|
|
197
|
+
- 被阻塞 → **BLOCKED** → **H3**
|
|
166
198
|
|
|
167
199
|
## 集成关系
|
|
168
200
|
|
|
@@ -7,38 +7,31 @@ description: Use when implementation is complete, all tests pass, and you need t
|
|
|
7
7
|
|
|
8
8
|
## 角色定位
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
> **分支生命周期**:`team-orchestrator` 在 H1 确认后创建功能分支(Step 1.5),本 Skill 在流程尾部(Step 7.3)负责分支收尾。两者配合形成完整的分支生命周期闭环。
|
|
10
|
+
> **分支生命周期**:`team-orchestrator` 在 H1 确认后创建功能分支(Step 1.5),本 Skill 在流程尾部(Step 7)负责分支收尾。
|
|
13
11
|
|
|
14
12
|
### 系统提示词
|
|
15
13
|
|
|
16
14
|
```
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
1. 验证所有测试通过
|
|
21
|
-
2. 确定基准分支
|
|
22
|
-
3. 展示 4 个结构化选项
|
|
23
|
-
4. 执行用户选择
|
|
24
|
-
5. 清理工作目录
|
|
25
|
-
|
|
26
|
-
关键区别:你不是在帮你合并代码。测试没通过之前不能展示选项。丢弃必须用户输入 "discard" 确认。不要 force-push 除非用户明确要求。
|
|
15
|
+
角色:分支完成处理——验证测试 → 展示选项 → 执行选择 → 清理
|
|
16
|
+
核心原则:测试未通过不展示选项,用户未选择不执行操作
|
|
27
17
|
```
|
|
28
18
|
|
|
29
|
-
###
|
|
19
|
+
### 推理检查点
|
|
30
20
|
|
|
31
|
-
|
|
21
|
+
> 测试未通过 = 不展示合并选项(FP-4)。用户未选择 = 不执行操作(FP-1)。每步有明确前置条件。
|
|
32
22
|
|
|
33
|
-
|
|
23
|
+
**推理框架**:
|
|
34
24
|
|
|
35
|
-
1.
|
|
36
|
-
2.
|
|
37
|
-
3.
|
|
38
|
-
4.
|
|
39
|
-
5.
|
|
25
|
+
1. **门禁状态**:测试全部通过?(当次新鲜执行,非上一轮结果)
|
|
26
|
+
2. **基准确定**:相对于哪个基准分支?合并基点在哪?
|
|
27
|
+
3. **用户意图**:合并、创建 PR、保留还是丢弃?(须等待明确选择)
|
|
28
|
+
4. **操作风险**:不可逆后果是什么?(force-push、分支删除)
|
|
29
|
+
5. **清理验证**:操作完成后工作区干净吗?合并后测试仍通过吗?
|
|
40
30
|
|
|
41
|
-
|
|
31
|
+
**对抗自检**:
|
|
32
|
+
|
|
33
|
+
- [ ] 前置条件是否真的满足?未满足时最坏后果?
|
|
34
|
+
- [ ] 用户后悔时操作是否可逆?
|
|
42
35
|
|
|
43
36
|
## Iron Law
|
|
44
37
|
|
|
@@ -58,76 +51,95 @@ NO BRANCH COMPLETION WITHOUT TEST VERIFICATION FIRST
|
|
|
58
51
|
|
|
59
52
|
### Step 1:验证测试
|
|
60
53
|
|
|
61
|
-
|
|
54
|
+
**EXEC** 项目测试命令(声明"通过"前须执行 `_team-rules/verification-protocol.md` 的 5 个步骤)
|
|
62
55
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
56
|
+
**ASSERT** `exit_code == 0` && `failures == 0`
|
|
57
|
+
|
|
58
|
+
- 通过 → **GOTO** Step 2
|
|
59
|
+
- 失败 → **MATCH** `mode`:
|
|
60
|
+
- 编排模式 → **ROLLBACK** 编排器,由编排器 **ROUTE** implAgent(附上失败输出)
|
|
61
|
+
- 独立使用 → **WRITE** 失败详情给用户,推荐 `team-debug`,修复后 **GOTO** Step 1
|
|
68
62
|
|
|
69
|
-
|
|
63
|
+
> 不可忽略失败继续展示选项(FP-4)。
|
|
70
64
|
|
|
71
65
|
### Step 2:确定基准分支
|
|
72
66
|
|
|
73
|
-
|
|
67
|
+
**RESOLVE** `base_branch`(首个命中即停):
|
|
74
68
|
|
|
75
|
-
1.
|
|
76
|
-
2.
|
|
77
|
-
3.
|
|
78
|
-
4.
|
|
79
|
-
5.
|
|
69
|
+
1. `READ("docs/tasks/{slug}/.checkpoint.json").base_branch`
|
|
70
|
+
2. `READ("CLAUDE.md").base_branch` / `READ(".cursor/rules/").default_branch`
|
|
71
|
+
3. `EXEC("git symbolic-ref refs/remotes/origin/HEAD")` → 解析分支名
|
|
72
|
+
4. **FOR** `name` in [`main`, `master`, `develop`] → `EXEC("git show-ref --verify refs/heads/{name}")` 首个存在即停
|
|
73
|
+
5. *none* → **H3**:向用户展示 `git branch --list` 和 `git remote -v`,让用户指定
|
|
80
74
|
|
|
81
|
-
|
|
75
|
+
**EXEC** `git merge-base HEAD {base_branch}` → 获取合并基点
|
|
76
|
+
|
|
77
|
+
- **ASSERT** `exit_code == 0`(分支无公共祖先 → **BLOCKED**,触发 **H3**)
|
|
82
78
|
|
|
83
79
|
### Step 3:展示选项
|
|
84
80
|
|
|
81
|
+
**WRITE** 选项列表(对话中):
|
|
82
|
+
|
|
85
83
|
```
|
|
86
|
-
|
|
84
|
+
实现完成。请选择后续操作:
|
|
87
85
|
|
|
88
|
-
1.
|
|
89
|
-
2.
|
|
90
|
-
3.
|
|
91
|
-
4.
|
|
86
|
+
1. 本地合并到 {base_branch}
|
|
87
|
+
2. 推送并创建 Pull Request
|
|
88
|
+
3. 保留当前分支(稍后处理)
|
|
89
|
+
4. 丢弃本次工作
|
|
92
90
|
|
|
93
|
-
|
|
91
|
+
请选择:
|
|
94
92
|
```
|
|
95
93
|
|
|
96
94
|
### Step 4:执行选择
|
|
97
95
|
|
|
98
|
-
|
|
96
|
+
**MATCH** `user_choice`:
|
|
99
97
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
98
|
+
- **Option 1**(本地合并):
|
|
99
|
+
1. **EXEC** `git checkout {base_branch} && git pull`
|
|
100
|
+
2. **EXEC** `git merge {branch} --no-ff`
|
|
101
|
+
- 合并冲突 → **WRITE**(对话中)冲突文件列表,**MATCH** `user_choice`:
|
|
102
|
+
- (A) 手动解决冲突后继续
|
|
103
|
+
- (B) 中止合并,改为创建 PR
|
|
104
|
+
- (C) 中止合并,保留分支
|
|
105
|
+
- 不自动解决冲突
|
|
106
|
+
3. **EXEC** 项目测试命令 → **ASSERT** 合并后无回归
|
|
107
|
+
4. **EXEC** `git branch -d {branch}`
|
|
108
|
+
- **IF** `exit_code != 0` → **WRITE**(对话中)"分支未完全合并,需 -D 强制删除?",等待用户确认
|
|
105
109
|
|
|
106
|
-
|
|
110
|
+
**验证协议**(步骤 3 声明"通过"前须执行 `_team-rules/verification-protocol.md` 的 5 个步骤)
|
|
107
111
|
|
|
108
|
-
|
|
112
|
+
- **Option 2**(创建 PR):
|
|
113
|
+
1. **EXEC** `git push -u origin {branch}`
|
|
114
|
+
- 推送失败(auth 错误、远程未配置)→ **WRITE**(对话中)错误信息给用户,暂停
|
|
115
|
+
2. **RESOLVE** `pr_cmd`:`READ("CLAUDE.md").pr_cmd` / *default* `gh pr create`
|
|
116
|
+
3. **EXEC** `{pr_cmd}`
|
|
117
|
+
- **ASSERT** `exit_code == 0` → **WRITE** PR URL 给用户
|
|
118
|
+
- `exit_code != 0` → **WRITE**(对话中)错误信息,暂停
|
|
109
119
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
3. 向用户展示 PR URL,确认创建成功
|
|
120
|
+
- **Option 3**(保留分支):
|
|
121
|
+
**WRITE** `保留分支 {branch}。`
|
|
113
122
|
|
|
114
|
-
|
|
123
|
+
- **Option 4**(丢弃):
|
|
124
|
+
**ASSERT** 用户已输入 "discard" 确认
|
|
125
|
+
1. **EXEC** `git checkout {base_branch}`
|
|
126
|
+
2. **EXEC** `git branch -D {branch}`
|
|
115
127
|
|
|
116
|
-
|
|
128
|
+
- *default*(无效输入)→ **WRITE**(对话中)"请选择 1-4",重新展示选项
|
|
117
129
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
**需要确认**:用户必须输入 "discard" 确认。
|
|
130
|
+
### Step 5:清理工作目录
|
|
121
131
|
|
|
122
|
-
1
|
|
123
|
-
2. 强制删除功能分支
|
|
132
|
+
**IF** `user_choice` in [Option 1, Option 2, Option 4]:
|
|
124
133
|
|
|
125
|
-
|
|
134
|
+
1. **EXEC** `git worktree list` → 检查关联工作目录
|
|
135
|
+
2. **IF** `worktree` 存在 → 移除工作目录
|
|
126
136
|
|
|
127
|
-
|
|
137
|
+
## STOP Signals
|
|
128
138
|
|
|
129
|
-
|
|
130
|
-
|
|
139
|
+
- **展示**选项在测试未通过时
|
|
140
|
+
- **声明**完成在合并后未重新测试时
|
|
141
|
+
- **丢弃**分支前未要求用户输入 "discard"
|
|
142
|
+
- **执行** force-push 前未获用户明确授权
|
|
131
143
|
|
|
132
144
|
## Constitutional Rules 遵守
|
|
133
145
|
|
|
@@ -139,30 +151,21 @@ Which option?
|
|
|
139
151
|
|
|
140
152
|
## 自检门禁
|
|
141
153
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
- [ ] 测试已验证通过(运行项目测试命令确认)
|
|
145
|
-
- [ ] 基准分支已确定
|
|
154
|
+
- [ ] **EXEC** 测试已验证通过(运行项目测试命令确认)
|
|
155
|
+
- [ ] `base_branch` 已 **RESOLVE**
|
|
146
156
|
- [ ] 用户已选择选项(不是自行决定)
|
|
147
|
-
- [ ]
|
|
157
|
+
- [ ] **IF** 选择 discard → **ASSERT** 用户已输入 "discard" 确认
|
|
148
158
|
- [ ] 工作目录已清理(如适用)
|
|
149
|
-
- [ ]
|
|
159
|
+
- [ ] **IF** 选择 merge → 合并后测试已通过
|
|
150
160
|
|
|
151
161
|
## 完成标志
|
|
152
162
|
|
|
153
|
-
|
|
154
|
-
状态:DONE | DONE_WITH_CONCERNS | NEEDS_CONTEXT | BLOCKED
|
|
155
|
-
选择:{merge / PR / keep / discard}
|
|
156
|
-
测试:{N} 通过,0 失败
|
|
157
|
-
分支:{branch-name} → {base-branch}
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
## STOP Signals
|
|
163
|
+
**MATCH** `result`:
|
|
161
164
|
|
|
162
|
-
-
|
|
163
|
-
-
|
|
164
|
-
-
|
|
165
|
-
-
|
|
165
|
+
- 操作成功执行 → **DONE**
|
|
166
|
+
- 操作成功但有 warning → **DONE_WITH_CONCERNS**
|
|
167
|
+
- 无法确定基准分支 → **NEEDS_CONTEXT**
|
|
168
|
+
- 测试失败或合并冲突 → **BLOCKED**
|
|
166
169
|
|
|
167
170
|
## 集成关系
|
|
168
171
|
|