@devcxl/opencode-cabbage 1.1.0 → 1.2.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/README.md +19 -25
- package/README.zh.md +17 -23
- package/assets/agents/dev-lifecycle.md +208 -68
- package/assets/agents/team/architect.md +22 -7
- package/assets/agents/team/developer.md +13 -6
- package/assets/agents/team/goal-verify.md +4 -1
- package/assets/agents/team/researcher.md +59 -0
- package/assets/agents/team/reviewer.md +34 -18
- package/assets/commands/setup.md +1 -1
- package/assets/prompts/bootstrap.md +10 -9
- package/assets/prompts/stage-contract.md +25 -25
- package/assets/skills/flow-code/SKILL.md +23 -25
- package/assets/skills/flow-design/SKILL.md +94 -26
- package/assets/skills/flow-release/SKILL.md +41 -17
- package/assets/skills/flow-requirements/SKILL.md +19 -13
- package/assets/skills/flow-research/SKILL.md +77 -0
- package/assets/skills/flow-review/SKILL.md +55 -25
- package/assets/skills/flow-setup/SKILL.md +27 -24
- package/assets/skills/flow-tasks/SKILL.md +178 -35
- package/assets/skills/flow-tdd/SKILL.md +68 -40
- package/dist/kernel/session-index.d.ts +8 -25
- package/dist/kernel/session-index.js +5 -55
- package/dist/kernel/session-index.js.map +1 -1
- package/dist/plugin/bootstrap.d.ts +0 -1
- package/dist/plugin/bootstrap.js +0 -3
- package/dist/plugin/bootstrap.js.map +1 -1
- package/dist/plugin/goal.d.ts +47 -6
- package/dist/plugin/goal.js +228 -94
- package/dist/plugin/goal.js.map +1 -1
- package/dist/plugin/prompt-lint.js +3 -11
- package/dist/plugin/prompt-lint.js.map +1 -1
- package/dist/plugin/prompts.d.ts +0 -1
- package/dist/plugin/prompts.js +0 -4
- package/dist/plugin/prompts.js.map +1 -1
- package/dist/plugin/server.d.ts +2 -5
- package/dist/plugin/server.js +240 -149
- package/dist/plugin/server.js.map +1 -1
- package/dist/plugin/skills.d.ts +7 -1
- package/dist/plugin/skills.js +75 -12
- package/dist/plugin/skills.js.map +1 -1
- package/dist/plugin.d.ts +0 -1
- package/dist/plugin.js +1 -4
- package/dist/plugin.js.map +1 -1
- package/dist/util/gh.d.ts +0 -11
- package/dist/util/gh.js +0 -14
- package/dist/util/gh.js.map +1 -1
- package/dist/util/paths.d.ts +0 -14
- package/dist/util/paths.js +0 -69
- package/dist/util/paths.js.map +1 -1
- package/package.json +2 -2
- package/assets/prompts/ADR-FORMAT.md +0 -45
- package/assets/prompts/PRD-FORMAT.md +0 -17
- package/assets/templates/gitignore +0 -5
- package/dist/kernel/caller.d.ts +0 -48
- package/dist/kernel/caller.js +0 -88
- package/dist/kernel/caller.js.map +0 -1
- package/dist/kernel/flow.d.ts +0 -175
- package/dist/kernel/flow.js +0 -467
- package/dist/kernel/flow.js.map +0 -1
- package/dist/kernel/legacy.d.ts +0 -19
- package/dist/kernel/legacy.js +0 -34
- package/dist/kernel/legacy.js.map +0 -1
- package/dist/kernel/records.d.ts +0 -103
- package/dist/kernel/records.js +0 -240
- package/dist/kernel/records.js.map +0 -1
- package/dist/kernel/release.d.ts +0 -106
- package/dist/kernel/release.js +0 -241
- package/dist/kernel/release.js.map +0 -1
- package/dist/kernel/review.d.ts +0 -34
- package/dist/kernel/review.js +0 -82
- package/dist/kernel/review.js.map +0 -1
- package/dist/kernel/setup.d.ts +0 -95
- package/dist/kernel/setup.js +0 -401
- package/dist/kernel/setup.js.map +0 -1
- package/dist/kernel/slug.d.ts +0 -23
- package/dist/kernel/slug.js +0 -67
- package/dist/kernel/slug.js.map +0 -1
- package/dist/kernel/task.d.ts +0 -213
- package/dist/kernel/task.js +0 -873
- package/dist/kernel/task.js.map +0 -1
- package/dist/kernel/tdd/adapter.d.ts +0 -49
- package/dist/kernel/tdd/adapter.js +0 -294
- package/dist/kernel/tdd/adapter.js.map +0 -1
- package/dist/kernel/tdd/digest.d.ts +0 -18
- package/dist/kernel/tdd/digest.js +0 -303
- package/dist/kernel/tdd/digest.js.map +0 -1
- package/dist/kernel/tdd/evaluator.d.ts +0 -38
- package/dist/kernel/tdd/evaluator.js +0 -185
- package/dist/kernel/tdd/evaluator.js.map +0 -1
- package/dist/kernel/tdd/evidence.d.ts +0 -42
- package/dist/kernel/tdd/evidence.js +0 -48
- package/dist/kernel/tdd/evidence.js.map +0 -1
- package/dist/kernel/tdd/state.d.ts +0 -79
- package/dist/kernel/tdd/state.js +0 -363
- package/dist/kernel/tdd/state.js.map +0 -1
- package/dist/kernel/types.d.ts +0 -180
- package/dist/kernel/types.js +0 -2
- package/dist/kernel/types.js.map +0 -1
- package/dist/kernel/worktree.d.ts +0 -45
- package/dist/kernel/worktree.js +0 -156
- package/dist/kernel/worktree.js.map +0 -1
- package/dist/plugin/flow-control.d.ts +0 -91
- package/dist/plugin/flow-control.js +0 -287
- package/dist/plugin/flow-control.js.map +0 -1
- package/dist/plugin/release-control.d.ts +0 -39
- package/dist/plugin/release-control.js +0 -343
- package/dist/plugin/release-control.js.map +0 -1
- package/dist/plugin/setup-control.d.ts +0 -59
- package/dist/plugin/setup-control.js +0 -111
- package/dist/plugin/setup-control.js.map +0 -1
- package/dist/plugin/task-control.d.ts +0 -90
- package/dist/plugin/task-control.js +0 -208
- package/dist/plugin/task-control.js.map +0 -1
- package/dist/plugin/tdd-checkpoint.d.ts +0 -128
- package/dist/plugin/tdd-checkpoint.js +0 -664
- package/dist/plugin/tdd-checkpoint.js.map +0 -1
- package/dist/util/shell.d.ts +0 -1
- package/dist/util/shell.js +0 -4
- package/dist/util/shell.js.map +0 -1
|
@@ -1,26 +1,48 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: flow-release
|
|
3
|
-
description: 版本 → Release PR → GitHub Actions
|
|
3
|
+
description: 版本 → Release PR → GitHub Actions 发布(仅人工)
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# flow-release
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
完成版本提议、Release PR、合并发布与发布监控。
|
|
9
9
|
发布流程技术栈无关:按 Profile 的版本规则(version file / tag format / release workflow)执行,
|
|
10
10
|
最终发布走项目自己的 GitHub Actions release workflow(不假设 npm 或任何特定生态)。
|
|
11
11
|
|
|
12
|
-
##
|
|
13
|
-
|
|
14
|
-
1.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
## 核心流程
|
|
13
|
+
|
|
14
|
+
1. **确定版本**:聚合上一 tag 后全部 commit,按 Profile 版本规则分类(breaking→major, feature→minor, fix→patch),输出提议版本
|
|
15
|
+
```bash
|
|
16
|
+
git describe --tags --abbrev=0
|
|
17
|
+
git log --oneline <last-tag>..HEAD
|
|
18
|
+
```
|
|
19
|
+
2. **创建 Release 分支 + 更新版本文件**
|
|
20
|
+
```bash
|
|
21
|
+
git checkout -b "release/<version>"
|
|
22
|
+
# 按 Profile 版本文件规则更新版本号(如 package.json 的 version 字段)
|
|
23
|
+
git add -A && git commit -m "chore: release <version>"
|
|
24
|
+
git push -u origin "release/<version>"
|
|
25
|
+
```
|
|
26
|
+
3. **创建 Release PR**(人工确认后)
|
|
27
|
+
```bash
|
|
28
|
+
gh pr create --base <default> --head "release/<version>" \
|
|
29
|
+
--title "release: <version>" --body "<release notes>"
|
|
30
|
+
```
|
|
31
|
+
4. **合并 + 打 tag push**
|
|
32
|
+
```bash
|
|
33
|
+
HEAD_SHA=$(gh pr view <pr-number> --json headRefOid --jq .headRefOid)
|
|
34
|
+
gh pr merge <pr-number> --squash --delete-branch --match-head-commit "$HEAD_SHA"
|
|
35
|
+
MERGE_SHA=$(gh pr view <pr-number> --json mergeCommit --jq .mergeCommit.oid)
|
|
36
|
+
git tag "v<version>" "$MERGE_SHA"
|
|
37
|
+
git push origin "v<version>"
|
|
38
|
+
```
|
|
39
|
+
5. **监控发布**:tag push 触发项目 GitHub Actions release workflow,跟踪其运行结果;瞬时失败可重跑;代码/配置缺陷 → Corrective Flow
|
|
18
40
|
|
|
19
41
|
## 版本规则(Profile)
|
|
20
42
|
|
|
21
43
|
版本分类依赖 AGENTS.md `## Project Profile` 的 `version bump rule`:
|
|
22
44
|
`breaking→major, feature→minor, fix→patch`(0.x breaking 也 major)。
|
|
23
|
-
未分类 commit →
|
|
45
|
+
未分类 commit → 请用户分类后重试。
|
|
24
46
|
|
|
25
47
|
## Output
|
|
26
48
|
- 提议版本
|
|
@@ -28,7 +50,7 @@ description: 版本 → Release PR → GitHub Actions 发布(release_control
|
|
|
28
50
|
- GitHub Actions release workflow 运行结果
|
|
29
51
|
|
|
30
52
|
## 后续
|
|
31
|
-
- 发布完成后 Flow 结束(goal-verify 独立验证 → complete
|
|
53
|
+
- 发布完成后 Flow 结束(goal-verify 独立验证 → goal complete)
|
|
32
54
|
|
|
33
55
|
## Contract
|
|
34
56
|
|
|
@@ -44,23 +66,25 @@ description: 版本 → Release PR → GitHub Actions 发布(release_control
|
|
|
44
66
|
- Release Profile 已确认(AGENTS.md Project Profile)
|
|
45
67
|
|
|
46
68
|
### Procedure
|
|
47
|
-
1.
|
|
48
|
-
2.
|
|
49
|
-
3.
|
|
50
|
-
4.
|
|
69
|
+
1. 聚合 commit 确定版本
|
|
70
|
+
2. 创建 release 分支 + 更新版本文件
|
|
71
|
+
3. 创建 Release PR(人工确认)
|
|
72
|
+
4. 合并 + 打 tag push
|
|
73
|
+
5. 监控发布 workflow
|
|
51
74
|
|
|
52
75
|
### Outputs
|
|
53
76
|
- GitHub Release(经项目 release workflow)
|
|
54
77
|
- tag 已推送
|
|
55
78
|
|
|
56
79
|
### Failure
|
|
57
|
-
- 发布 workflow 失败 →
|
|
58
|
-
- tag 已存在 →
|
|
80
|
+
- 发布 workflow 失败 → 识别瞬时失败并重跑;代码/配置缺陷 → Corrective Flow + 新版本
|
|
81
|
+
- tag 已存在 → 提示版本冲突,不强制覆盖
|
|
59
82
|
|
|
60
83
|
### Idempotency
|
|
61
|
-
- 相同版本号 →
|
|
84
|
+
- 相同版本号 → 阻止重复发布(tag 不可变)
|
|
62
85
|
|
|
63
86
|
### Prohibited Actions
|
|
64
87
|
- 不在自动模式中执行(release 为人工流程)
|
|
65
88
|
- 不假设 npm 或其他特定技术生态(按 Profile 规则 + 项目 GitHub Actions release workflow)
|
|
66
89
|
- 不跳过测试/CI 直接发布
|
|
90
|
+
- 不强制覆盖已存在的 tag
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: flow-requirements
|
|
3
|
-
description: 渐进式需求澄清 → PRD →
|
|
3
|
+
description: 渐进式需求澄清 → PRD → Parent Issue
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# flow-requirements
|
|
7
7
|
|
|
8
|
-
通过渐进式需求澄清将松散想法凝固为 PRD
|
|
8
|
+
通过渐进式需求澄清将松散想法凝固为 PRD,并创建 Parent Issue(Flow Record)作为后续阶段的权威来源。
|
|
9
9
|
|
|
10
10
|
## 核心理念:战争迷雾(Fog of War)
|
|
11
11
|
|
|
@@ -16,6 +16,7 @@ description: 渐进式需求澄清 → PRD → Flow Record(flow_control)
|
|
|
16
16
|
在 `docs/dev/decision-map.md` 创建映射,追踪所有待决策问题(Ticket 含 slug / Blocked by / Status / Type / Question / Answer)。初始只创建 2–4 个前沿 Ticket,不试图穷举。
|
|
17
17
|
|
|
18
18
|
Ticket 类型:Grilling(与用户对话澄清)/ Research(查文档)/ Prototype(低保真验证)。
|
|
19
|
+
Research 型 Ticket → 派发 `@researcher` 加载 `flow-research` skill 产出调研文档后,据结论 resolved。
|
|
19
20
|
|
|
20
21
|
## Phase B:渐进式解决
|
|
21
22
|
|
|
@@ -29,19 +30,24 @@ Ticket 类型:Grilling(与用户对话澄清)/ Research(查文档)/ Pr
|
|
|
29
30
|
|
|
30
31
|
从 Decision Map 的 Answer 提炼为 PRD,保存到 `docs/prd/<title>.md`。
|
|
31
32
|
|
|
32
|
-
## Phase D:创建
|
|
33
|
+
## Phase D:创建 Parent Issue
|
|
33
34
|
|
|
34
|
-
|
|
35
|
-
|
|
35
|
+
用 gh 创建 Parent Issue(Flow Record),作为目标与验收标准的权威来源:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
gh issue create --title "<英文功能标题>" --body "<目标 + 验收标准>"
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
标题使用英文功能短语(kebab-case),后续分支名、目录名以其为基准。
|
|
36
42
|
|
|
37
43
|
## CONTEXT.md 术语发现
|
|
38
44
|
|
|
39
|
-
需求澄清中发现的领域术语写入根 `CONTEXT.md
|
|
45
|
+
需求澄清中发现的领域术语写入根 `CONTEXT.md`(术语权威)。发现新术语或冲突时暂停提问,用户确认后更新。
|
|
40
46
|
|
|
41
47
|
## Output
|
|
42
48
|
- `docs/dev/decision-map.md` — 决策映射(PRD 生成后可删除)
|
|
43
49
|
- `docs/prd/<title>.md` — PRD
|
|
44
|
-
-
|
|
50
|
+
- Parent Issue(Flow Record)
|
|
45
51
|
|
|
46
52
|
## 下一阶段
|
|
47
53
|
- **/design** — 基于 PRD 进行技术设计
|
|
@@ -55,30 +61,30 @@ Ticket 类型:Grilling(与用户对话澄清)/ Research(查文档)/ Pr
|
|
|
55
61
|
- 用户提供的功能描述(来自消息文本)
|
|
56
62
|
|
|
57
63
|
### Preconditions
|
|
58
|
-
-
|
|
64
|
+
- gh CLI 可用
|
|
59
65
|
|
|
60
66
|
### Procedure
|
|
61
67
|
1. 锚定核心问题,创建 Decision Map
|
|
62
68
|
2. 渐进式解决所有前沿 Ticket(Grilling / Research / Prototype)
|
|
63
69
|
3. 迷雾推至足够远 → 凝固为 PRD
|
|
64
70
|
4. 记录领域术语到 CONTEXT.md
|
|
65
|
-
5.
|
|
71
|
+
5. 用 gh issue create 创建 Parent Issue
|
|
66
72
|
|
|
67
73
|
### Outputs
|
|
68
74
|
- `docs/dev/decision-map.md`
|
|
69
75
|
- `docs/prd/<title>.md`
|
|
70
|
-
-
|
|
76
|
+
- Parent Issue
|
|
71
77
|
|
|
72
78
|
### Failure
|
|
73
|
-
-
|
|
79
|
+
- gh 未认证 → 提示用户 `gh auth login` 后重试
|
|
74
80
|
- Issue 创建失败 → 记录错误,不阻塞 PRD 写入
|
|
75
81
|
|
|
76
82
|
### Idempotency
|
|
77
83
|
- Decision Map 已存在 → 从中断点继续
|
|
78
84
|
- PRD 文件已存在 → 更新而非覆盖
|
|
79
|
-
-
|
|
85
|
+
- Parent Issue 已创建 → 复用其编号而非重复创建
|
|
80
86
|
|
|
81
87
|
### Prohibited Actions
|
|
82
88
|
- 不跳过 Phase A 和 Phase B 直接输出 PRD
|
|
83
89
|
- 不一次问多个问题
|
|
84
|
-
-
|
|
90
|
+
- 不创建重复的 Parent Issue(复用已有编号)
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: flow-research
|
|
3
|
+
description: 调研/事实核查 — 迭代深化 + 一手来源评分 + 反方搜索 + 置信度 → 调研文档(由 @researcher 加载)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# flow-research
|
|
7
|
+
|
|
8
|
+
针对调研问题系统性收集资料、验证来源、交叉对比,产出仅事实、带引用的调研文档。由独立子 agent `@researcher` 加载执行,可作为 Flow 的阶段,也可作为独立轻量路径。
|
|
9
|
+
|
|
10
|
+
## 核心流程
|
|
11
|
+
|
|
12
|
+
1. **理解任务**:辨明「真问题 vs 表象」、前置假设、输出形式与范围(技术/时间/地区/行业)。
|
|
13
|
+
2. **制定计划**:拆成子问题,说明来源需求、关键项、预判信息偏差与迭代轮次。
|
|
14
|
+
3. **迭代收集**(多轮深化):
|
|
15
|
+
- 来源优先级:官方文档/标准 → 学术/白皮书 → GitHub/Release/Issue → 权威博客 → 行业媒体 → 社区(社区仅作辅助)。
|
|
16
|
+
- 一手来源:优先追溯原始出处;来源评分卡(权威性/一手性/时效性/独立性/可验证性,综合 ≤12 仅作辅助参考)。
|
|
17
|
+
- 时间标注:关键引用标注发布时间;超时效门槛(技术选型>1年、安全/合规>6月、商业数据>1年、学术>3年)明确警告。
|
|
18
|
+
4. **反方搜索 + 遗漏检查**:主动找反方观点、失败案例、替代方案隐藏成本;检查是否遗漏反例、边界场景、不熟悉但关键的部分。
|
|
19
|
+
5. **评估与验证**:冲突来源列出各方观点→分析冲突原因→判断更可靠方;关键结论标注置信度(高/中/低/未知)。
|
|
20
|
+
6. **综合分析**:方案全景 ≥3(保守/中间/激进)+ 成本全景 + 影响面 + 最坏情况(能否回滚、损失是否可控)。
|
|
21
|
+
7. **元评审**(输出前自省):剩余未知、最弱证据、可能错误的假设、遗漏角度、边际收益。
|
|
22
|
+
8. **输出**:写 `docs/dev/research/<topic>.md`,并在消息中给结论/可执行建议摘要。
|
|
23
|
+
|
|
24
|
+
## 何时停止迭代
|
|
25
|
+
|
|
26
|
+
- 所有关键问题 ≥2 个独立来源支持
|
|
27
|
+
- 最重要的反方观点已覆盖
|
|
28
|
+
- 剩余不确定性已标注,继续投入的边际收益递减
|
|
29
|
+
|
|
30
|
+
## 输出
|
|
31
|
+
|
|
32
|
+
- `docs/dev/research/<topic>.md`
|
|
33
|
+
- 消息中的结论 / 可执行建议 / 待进一步盘问项
|
|
34
|
+
|
|
35
|
+
## 获取仓库上下文(runnable)
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
REPO=$(gh repo view --json nameWithOwner --jq '.nameWithOwner')
|
|
39
|
+
gh issue view <issue-number> # 若调研属于某 Flow/Task,读取其上下文
|
|
40
|
+
gh api repos/"$REPO"/issues/<issue-number>/comments --jq '.[].body'
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Contract
|
|
44
|
+
|
|
45
|
+
### Trigger
|
|
46
|
+
由 `@dev-lifecycle` Phase 0 调研场景派发 `@researcher` 触发。
|
|
47
|
+
|
|
48
|
+
### Inputs
|
|
49
|
+
- 用户的调研问题 / 需求(含范围与输出形式)
|
|
50
|
+
|
|
51
|
+
### Preconditions
|
|
52
|
+
- 调研目标与范围明确;gh/git 可读(获取仓库与 Issue 上下文)
|
|
53
|
+
- 需要外部资料时具备网络读取能力
|
|
54
|
+
|
|
55
|
+
### Procedure
|
|
56
|
+
1. 理解任务并制定研究计划
|
|
57
|
+
2. 迭代收集并评分来源,追溯一手来源
|
|
58
|
+
3. 反方搜索与遗漏检查
|
|
59
|
+
4. 冲突处理与置信度标注
|
|
60
|
+
5. 综合分析(方案/成本/影响面/最坏情况)
|
|
61
|
+
6. 元评审后写 `docs/dev/research/<topic>.md` 并总结
|
|
62
|
+
|
|
63
|
+
### Outputs
|
|
64
|
+
- `docs/dev/research/<topic>.md`
|
|
65
|
+
- 消息摘要
|
|
66
|
+
|
|
67
|
+
### Failure
|
|
68
|
+
- 无法访问可靠外部来源 → 说明并基于本地证据降级
|
|
69
|
+
- 来源不足 → 明确标注「证据不足」,不编造
|
|
70
|
+
|
|
71
|
+
### Idempotency
|
|
72
|
+
- `docs/dev/research/<topic>.md` 已存在 → 更新而非新建重复文件
|
|
73
|
+
|
|
74
|
+
### Prohibited Actions
|
|
75
|
+
- 不编造来源、数据、案例或结论
|
|
76
|
+
- 不改动代码(仅产出调研文档)
|
|
77
|
+
- 不把未验证的二手/社区信息当作核心结论依据
|
|
@@ -1,35 +1,60 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: flow-review
|
|
3
|
-
description: 双轴审查(规范 + 规格)→
|
|
3
|
+
description: 双轴审查(规范 + 规格)→ 发布审查结果 → 合并
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# flow-review
|
|
7
7
|
|
|
8
8
|
沿两条轴线审查 PR 代码:规范(是否符合编码标准)和规格(是否实现了原始需求)。
|
|
9
|
-
|
|
9
|
+
reviewer 只读;写操作(review/merge)由 primary 编排器执行。
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## 核心流程
|
|
12
12
|
|
|
13
|
-
1.
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
1. **发布审查结果**(primary 执行)
|
|
14
|
+
```bash
|
|
15
|
+
gh pr review <pr-number> --approve
|
|
16
|
+
gh pr review <pr-number> --request-changes --body "<原因>"
|
|
17
|
+
```
|
|
18
|
+
2. **合并**(CI + 审查通过后,primary 执行)
|
|
19
|
+
```bash
|
|
20
|
+
HEAD_SHA=$(gh pr view <pr-number> --json headRefOid --jq .headRefOid)
|
|
21
|
+
gh pr merge <pr-number> --squash --delete-branch --match-head-commit "$HEAD_SHA"
|
|
22
|
+
```
|
|
23
|
+
3. 合并后清理 worktree:`git worktree remove ".worktree/<task-slug>"`(脏时提示用户手动处理)
|
|
16
24
|
|
|
17
|
-
reviewer
|
|
25
|
+
reviewer 只读:不直接执行 `gh pr review` / `gh pr merge`(写操作由 primary 编排器执行)。
|
|
18
26
|
|
|
19
27
|
## 双轴审查
|
|
20
28
|
|
|
21
|
-
|
|
22
|
-
参考 `references/smell-baseline.md` 中的代码气味基线。
|
|
29
|
+
两条轴线独立审查、分别报告;不把发现项混排,也不允许一条轴线的通过掩盖另一条轴线的失败。
|
|
23
30
|
|
|
24
|
-
|
|
25
|
-
对照 PRD(`docs/prd/`)和设计方案(`docs/dev/specs/`)验证。
|
|
26
|
-
- 如发现实现与设计偏差 → 追加到 changelog
|
|
31
|
+
### 规格轴(Specification)
|
|
27
32
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
-
|
|
31
|
-
- 检查
|
|
32
|
-
-
|
|
33
|
+
回答“是否实现了正确的行为”:
|
|
34
|
+
|
|
35
|
+
- 对照 PRD、Task `Builds`、`Acceptance Criteria` 与技术方案检查遗漏或不完整需求。
|
|
36
|
+
- 检查 diff 是否增加规格未要求的行为或抽象,识别 scope creep。
|
|
37
|
+
- 检查看似已实现但边界、错误或状态转换不符合规格的行为。
|
|
38
|
+
- 逐条核查 Acceptance Criteria 是否由 Design `Testing Decisions` 约定的 Test Seam 上的行为测试或验证命令证明。
|
|
39
|
+
- 测试存在不等于规格通过;实现与测试共同误解需求时仍应报告。
|
|
40
|
+
|
|
41
|
+
### 规范轴(Convention / Code Quality)
|
|
42
|
+
|
|
43
|
+
回答“实现是否写得正确”:
|
|
44
|
+
|
|
45
|
+
- 检查仓库文档化规范、AGENTS.md 与相关 ADR;仓库规则优先。
|
|
46
|
+
- 参考 `references/smell-baseline.md`,代码气味属于判断性问题,不冒充硬性规范。
|
|
47
|
+
- 检查 KISS、YAGNI、SRP,以及是否存在浅 Module、透传层或只有一个假设 Adapter 的 Seam。
|
|
48
|
+
- 检查测试是否描述行为、使用公共 Test Seam,并避免私有方法、内部调用次数/顺序、侧信道和循环论证。
|
|
49
|
+
- 跳过 formatter、lint、typecheck 等工具已经强制执行且没有实际风险的机械问题。
|
|
50
|
+
|
|
51
|
+
**明确不检查 commit order**:RED→GREEN 顺序是编码过程约束,reviewer 不审查 commit 历史。
|
|
52
|
+
|
|
53
|
+
### 审查结论
|
|
54
|
+
|
|
55
|
+
- 任一轴存在阻断问题 → `CHANGES_REQUESTED`。
|
|
56
|
+
- 两轴都没有阻断问题 → `APPROVED`。
|
|
57
|
+
- 报告必须分别给出每条轴线的发现数量和最高严重度,不跨轴线重新排序。
|
|
33
58
|
|
|
34
59
|
## 审查材料获取
|
|
35
60
|
|
|
@@ -37,8 +62,8 @@ reviewer 只读:不直接 `gh pr review` / `gh pr merge`(写操作由 primar
|
|
|
37
62
|
|
|
38
63
|
## Output
|
|
39
64
|
- 结构化审查报告(APPROVED / CHANGES_REQUESTED)
|
|
40
|
-
- PR
|
|
41
|
-
- Worktree
|
|
65
|
+
- PR 已合并(条件满足时)
|
|
66
|
+
- Worktree 已清理
|
|
42
67
|
|
|
43
68
|
## 后续
|
|
44
69
|
- **/release** — 发布(如所有 PR 已合并)
|
|
@@ -49,17 +74,20 @@ reviewer 只读:不直接 `gh pr review` / `gh pr merge`(写操作由 primar
|
|
|
49
74
|
由 `/review` 命令或 `@dev-lifecycle` Phase 3 审查步骤触发。
|
|
50
75
|
|
|
51
76
|
### Inputs
|
|
52
|
-
- PR
|
|
77
|
+
- PR 编号、Task 文件与 Task Record(来源:`/code` 产出)
|
|
78
|
+
- PRD 与技术方案(包含 Testing Decisions)
|
|
53
79
|
|
|
54
80
|
### Preconditions
|
|
55
81
|
- `/code` 已完成 → PR 已创建
|
|
82
|
+
- Design 已包含本 Task 相关行为的 Testing Decisions;存量 Design 缺失时先返回 Design Gap,不提前给出审查结论
|
|
56
83
|
|
|
57
84
|
### Procedure
|
|
58
85
|
1. 在本地 worktree/分支获取 PR diff 与元数据
|
|
59
|
-
2.
|
|
60
|
-
3.
|
|
61
|
-
4.
|
|
62
|
-
5.
|
|
86
|
+
2. 独立执行规格轴审查,核对行为、范围与 Acceptance Criteria 证据
|
|
87
|
+
3. 独立执行规范轴审查,核对仓库规范、实现质量与测试质量
|
|
88
|
+
4. 分轴输出结构化审查报告,不合并或重排发现
|
|
89
|
+
5. primary 用 `gh pr review` 发布结果
|
|
90
|
+
6. CI 通过后 primary 用 `gh pr merge` 合并并清理 worktree
|
|
63
91
|
|
|
64
92
|
### Outputs
|
|
65
93
|
- 结构化审查报告(APPROVED / CHANGES_REQUESTED)
|
|
@@ -68,6 +96,7 @@ reviewer 只读:不直接 `gh pr review` / `gh pr merge`(写操作由 primar
|
|
|
68
96
|
|
|
69
97
|
### Failure
|
|
70
98
|
- Critical/High → request-changes
|
|
99
|
+
- Testing Decisions 缺失或与仓库现实冲突 → 返回 Design Gap,由 primary 在当前 stage 完成 amendment 后重新审查
|
|
71
100
|
- Worktree 清理失败 → 记录警告,不阻塞
|
|
72
101
|
|
|
73
102
|
### Idempotency
|
|
@@ -76,5 +105,6 @@ reviewer 只读:不直接 `gh pr review` / `gh pr merge`(写操作由 primar
|
|
|
76
105
|
|
|
77
106
|
### Prohibited Actions
|
|
78
107
|
- **禁止使用 WebFetch 或任何 Web 工具获取远程 PR 代码** — 审查代码时必须本地读取源码文件
|
|
79
|
-
- reviewer 不直接执行 `gh pr review` / `gh pr merge`(由
|
|
108
|
+
- reviewer 不直接执行 `gh pr review` / `gh pr merge`(由 primary 编排器执行)
|
|
109
|
+
- 不把规格轴与规范轴合并成单一问题列表或用一条轴线抵消另一条轴线
|
|
80
110
|
- 不使用默认 --force 清理
|
|
@@ -1,41 +1,46 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: flow-setup
|
|
3
|
-
description: 初始化 — 探测环境 →
|
|
3
|
+
description: 初始化 — 探测环境 → 确认 Profile
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# flow-setup
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
初始化阶段:探测开发环境、确认 AGENTS.md Project Profile。
|
|
9
|
+
纯 Prompt 流程:直接使用 git/gh 命令探测,Profile 由用户确认后写入根 AGENTS.md。
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## 核心流程
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
1. **探测环境**
|
|
14
|
+
```bash
|
|
15
|
+
gh auth status # gh CLI 认证
|
|
16
|
+
gh repo view --json nameWithOwner,defaultBranchRef # 仓库与默认分支
|
|
17
|
+
ls .github/workflows/ # 现有 CI/release workflow
|
|
18
|
+
```
|
|
14
19
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
20
|
+
2. **确认 Project Profile**:向用户逐项确认以下配置(技术栈无关):
|
|
21
|
+
- test command:测试命令(如 `npm test`)
|
|
22
|
+
- regression command:全量回归命令
|
|
23
|
+
- test file patterns:测试文件匹配(如 `test/**/*.test.ts`)
|
|
24
|
+
- implementation file patterns:实现文件匹配(如 `src/**/*.ts`)
|
|
25
|
+
- version bump rule、version file、tag format、release workflow
|
|
18
26
|
|
|
19
|
-
Profile
|
|
27
|
+
3. **写入根 AGENTS.md**:用户确认后,将 Profile 区块追加/替换到根 `AGENTS.md`:
|
|
20
28
|
|
|
21
29
|
```markdown
|
|
22
30
|
## Project Profile
|
|
23
31
|
|
|
24
|
-
- test command: `npm test
|
|
32
|
+
- test command: `npm test`
|
|
33
|
+
- regression command: `npm test`
|
|
25
34
|
- test file patterns: `test/**/*.test.ts`
|
|
26
35
|
- implementation file patterns: `src/**/*.ts`
|
|
27
|
-
- tdd default mode: `strict`
|
|
28
36
|
- version bump rule: `breaking→major, feature→minor, fix→patch`
|
|
29
37
|
- version file: `package.json`
|
|
30
38
|
- tag format: `v{version}`
|
|
31
39
|
- release workflow: `.github/workflows/release.yml`
|
|
32
40
|
```
|
|
33
41
|
|
|
34
|
-
未确认 Profile 时 `flow_control{op:"create-flow"}` 会阻断并提示先执行 `/setup`。
|
|
35
|
-
|
|
36
42
|
## Output
|
|
37
|
-
- readiness 报告(
|
|
38
|
-
- `.github/workflows/` 草案(缺失时,经 Setup PR 人工合入)
|
|
43
|
+
- readiness 报告(git/gh 可用性、CI/release workflow 存在性)
|
|
39
44
|
- 根 AGENTS.md `## Project Profile` 区块
|
|
40
45
|
|
|
41
46
|
## Contract
|
|
@@ -50,23 +55,21 @@ Profile 区块格式(内核解析白名单,§9.1):
|
|
|
50
55
|
- gh CLI 已认证(宿主 `gh auth`)
|
|
51
56
|
|
|
52
57
|
### Procedure
|
|
53
|
-
1.
|
|
54
|
-
2. 缺失 workflow
|
|
55
|
-
3.
|
|
58
|
+
1. 用 gh/git 命令探测环境,输出 readiness 报告
|
|
59
|
+
2. 缺失 CI/release workflow 时提示用户(可手工创建)
|
|
60
|
+
3. 向用户逐项确认 Profile 配置
|
|
61
|
+
4. 用户确认后写入根 AGENTS.md Profile 区块
|
|
56
62
|
|
|
57
63
|
### Outputs
|
|
58
64
|
- readiness 报告
|
|
59
|
-
- workflow 草案(可选)
|
|
60
65
|
- 根 AGENTS.md Profile 区块
|
|
61
66
|
|
|
62
67
|
### Failure
|
|
63
68
|
- gh auth 失败 → 提示用户执行 `gh auth login` 后重试
|
|
64
|
-
- workflow 生成失败 → 报告错误并停止
|
|
65
69
|
|
|
66
70
|
### Idempotency
|
|
67
|
-
- Profile
|
|
68
|
-
- workflow 已存在 → 跳过生成
|
|
71
|
+
- Profile 已存在 → 覆盖为最新确认值
|
|
69
72
|
|
|
70
73
|
### Prohibited Actions
|
|
71
|
-
-
|
|
72
|
-
-
|
|
74
|
+
- 不写入未获用户确认的 Profile 项
|
|
75
|
+
- 不假设测试命令为 npm(按用户确认的技术栈)
|