cc-devflow 4.5.7 → 4.5.9
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/.claude/skills/cc-act/CHANGELOG.md +33 -0
- package/.claude/skills/cc-act/PLAYBOOK.md +18 -4
- package/.claude/skills/cc-act/SKILL.md +76 -7
- package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_INDEX_TEMPLATE.md +30 -0
- package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_PRINCIPLES_TEMPLATE.md +29 -0
- package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_TEMPLATE.md +103 -0
- package/.claude/skills/cc-act/assets/PR_BRIEF_TEMPLATE.md +60 -4
- package/.claude/skills/cc-act/references/closure-contract.md +7 -0
- package/.claude/skills/cc-act/references/git-commit-guidelines.md +342 -37
- package/.claude/skills/cc-act/scripts/cc-act-common.sh +29 -1
- package/.claude/skills/cc-act/scripts/detect-ship-target.sh +27 -0
- package/.claude/skills/cc-act/scripts/ensure-ship-branch.sh +93 -0
- package/.claude/skills/cc-act/scripts/generate-status-report.sh +6 -0
- package/.claude/skills/cc-act/scripts/render-pr-brief.sh +170 -0
- package/.claude/skills/cc-act/scripts/sync-act-docs.sh +15 -1
- package/.claude/skills/cc-dev/CHANGELOG.md +5 -0
- package/.claude/skills/cc-dev/PLAYBOOK.md +63 -0
- package/.claude/skills/cc-dev/SKILL.md +168 -0
- package/.claude/skills/cc-do/CHANGELOG.md +17 -0
- package/.claude/skills/cc-do/SKILL.md +41 -13
- package/.claude/skills/cc-do/scripts/build-task-context.sh +9 -5
- package/.claude/skills/cc-do/scripts/mark-task-complete.sh +0 -6
- package/.claude/skills/cc-investigate/CHANGELOG.md +17 -0
- package/.claude/skills/cc-investigate/PLAYBOOK.md +15 -0
- package/.claude/skills/cc-investigate/SKILL.md +46 -1
- package/.claude/skills/cc-investigate/assets/ANALYSIS_TEMPLATE.md +47 -0
- package/.claude/skills/cc-investigate/assets/TASKS_TEMPLATE.md +21 -2
- package/.claude/skills/cc-investigate/assets/TASK_MANIFEST_TEMPLATE.json +28 -58
- package/.claude/skills/cc-investigate/references/investigation-contract.md +14 -0
- package/.claude/skills/cc-next/CHANGELOG.md +11 -0
- package/.claude/skills/cc-next/PLAYBOOK.md +74 -0
- package/.claude/skills/cc-next/SKILL.md +196 -0
- package/.claude/skills/cc-plan/CHANGELOG.md +25 -0
- package/.claude/skills/cc-plan/PLAYBOOK.md +25 -20
- package/.claude/skills/cc-plan/SKILL.md +116 -13
- package/.claude/skills/cc-plan/assets/DESIGN_TEMPLATE.md +67 -0
- package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +85 -0
- package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +57 -182
- package/.claude/skills/cc-plan/assets/TINY_DESIGN_TEMPLATE.md +46 -0
- package/.claude/skills/cc-plan/references/planning-contract.md +51 -26
- package/.claude/skills/cc-pr-land/CHANGELOG.md +5 -0
- package/.claude/skills/cc-pr-land/PLAYBOOK.md +45 -0
- package/.claude/skills/cc-pr-land/SKILL.md +157 -0
- package/.claude/skills/cc-pr-review/CHANGELOG.md +5 -0
- package/.claude/skills/cc-pr-review/PLAYBOOK.md +46 -0
- package/.claude/skills/cc-pr-review/SKILL.md +142 -0
- package/.claude/skills/cc-review/CHANGELOG.md +21 -0
- package/.claude/skills/cc-review/PLAYBOOK.md +64 -10
- package/.claude/skills/cc-review/SKILL.md +185 -18
- package/.claude/skills/cc-review/references/e2e-and-plugin-verification.md +4 -0
- package/.claude/skills/cc-review/references/implementation-review-branch.md +37 -0
- package/.claude/skills/cc-review/references/plan-review-branch.md +36 -1
- package/.claude/skills/cc-review/references/review-methods.md +98 -3
- package/.claude/skills/cc-review/scripts/collect-review-context.sh +80 -0
- package/.claude/skills/cc-roadmap/CHANGELOG.md +6 -0
- package/.claude/skills/cc-roadmap/PLAYBOOK.md +30 -0
- package/.claude/skills/cc-roadmap/SKILL.md +45 -8
- package/.claude/skills/cc-roadmap/assets/BACKLOG_TEMPLATE.md +8 -0
- package/.claude/skills/cc-roadmap/assets/ROADMAP_TEMPLATE.md +22 -0
- package/.claude/skills/cc-roadmap/assets/TRACKING_TEMPLATE.json +32 -1
- package/.claude/skills/cc-roadmap/references/roadmap-dialogue.md +14 -14
- package/.claude/skills/cc-simplify/CHANGELOG.md +6 -0
- package/.claude/skills/cc-simplify/SKILL.md +19 -8
- package/CHANGELOG.md +20 -1
- package/README.md +60 -9
- package/README.zh-CN.md +60 -9
- package/config/distributable-skills.json +8 -0
- package/docs/assets/cc-devflow-pr-harness-en.svg +153 -0
- package/docs/assets/cc-devflow-pr-harness-zh.svg +152 -0
- package/docs/assets/wechat-group-qr.jpg +0 -0
- package/docs/examples/example-bindings.json +11 -7
- package/docs/examples/full-design-blocked/BACKLOG.md +1 -1
- package/docs/examples/full-design-blocked/README.md +1 -1
- package/docs/examples/full-design-blocked/ROADMAP.md +1 -1
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md +1 -1
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +102 -82
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md +45 -1
- package/docs/examples/full-design-blocked/roadmap.json +1 -1
- package/docs/examples/local-handoff/BACKLOG.md +1 -1
- package/docs/examples/local-handoff/README.md +1 -1
- package/docs/examples/local-handoff/ROADMAP.md +1 -1
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +1 -1
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json +70 -61
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md +35 -1
- package/docs/examples/local-handoff/roadmap.json +1 -1
- package/docs/examples/pdca-loop/BACKLOG.md +1 -1
- package/docs/examples/pdca-loop/README.md +1 -1
- package/docs/examples/pdca-loop/ROADMAP.md +1 -1
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/handoff/pr-brief.md +64 -0
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +1 -1
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +71 -81
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md +35 -1
- package/docs/examples/pdca-loop/roadmap.json +1 -1
- package/docs/examples/scripts/check-example-bindings.sh +24 -2
- package/docs/get-shit-done-strategy-audit.md +4 -4
- package/docs/guides/artifact-contract.md +44 -0
- package/docs/guides/getting-started.md +1 -1
- package/docs/guides/getting-started.zh-CN.md +1 -1
- package/docs/guides/project-postmortem.md +78 -0
- package/lib/skill-runtime/__tests__/planner.tdd.test.js +2 -2
- package/lib/skill-runtime/__tests__/schemas.test.js +33 -2
- package/lib/skill-runtime/planner.js +1 -2
- package/lib/skill-runtime/query.js +1 -1
- package/lib/skill-runtime/schemas.js +5 -3
- package/package.json +6 -1
|
@@ -7,32 +7,35 @@
|
|
|
7
7
|
3. 执行 handoff 必须写进 `planning/tasks.md` 顶部,不能依赖单独的 `context-package.md`。
|
|
8
8
|
4. `planning/task-manifest.json` 必须和 `planning/tasks.md` 同步,且能告诉 `cc-do` 当前任务是谁。
|
|
9
9
|
5. `planning/design.md`、`planning/tasks.md`、`planning/task-manifest.json` 必须记录来源版本链。
|
|
10
|
-
6.
|
|
11
|
-
7.
|
|
12
|
-
8.
|
|
13
|
-
9.
|
|
14
|
-
10.
|
|
15
|
-
11.
|
|
16
|
-
12.
|
|
17
|
-
13.
|
|
18
|
-
14.
|
|
19
|
-
15.
|
|
20
|
-
16.
|
|
21
|
-
17.
|
|
22
|
-
18. Red
|
|
23
|
-
19.
|
|
24
|
-
20.
|
|
25
|
-
21.
|
|
26
|
-
22.
|
|
27
|
-
23.
|
|
28
|
-
24.
|
|
29
|
-
25.
|
|
30
|
-
26.
|
|
31
|
-
27.
|
|
32
|
-
28.
|
|
33
|
-
29.
|
|
34
|
-
30.
|
|
35
|
-
31.
|
|
10
|
+
6. 所有 SKILL 输出必须遵守 `docs/guides/artifact-contract.md`:状态只能有一个 owner,其它文件只能引用、投影或派生。
|
|
11
|
+
7. 计划里出现 placeholder 词,就说明还没想清楚。
|
|
12
|
+
8. 一次只推进一个澄清问题,不允许问题轰炸。
|
|
13
|
+
9. 推荐方案没获批前,不允许继续拆执行任务。
|
|
14
|
+
10. `planning/design.md` 通过 review gate 前,不允许宣称计划完成。
|
|
15
|
+
11. 如果来自 `roadmap`,planning 不得悄悄丢掉 source constraints / non-goals / success signal。
|
|
16
|
+
12. 每个计划必须先找 existing leverage,再决定新增实现;重复已有能力属于 planning 失败。
|
|
17
|
+
13. 同 blast radius 内的完整边界默认纳入,defer 必须写入 `NOT in scope` 和原因。
|
|
18
|
+
14. 如果推荐方案挑战用户原始方向,必须标成 `user challenge`,不能自动改写用户意图。
|
|
19
|
+
15. 行为变更的具体任务默认采用测试先行;没有 Red/Green/Refactor 链、spec-style test name、公共测试 seam、行为断言、mock 边界或 TDD exception,不允许交给 `cc-do`。
|
|
20
|
+
16. 新 change 目录必须通过 `cc-devflow next-change-key` 生成(不能手动心算编号),格式是 `REQ-<number>-<description>` 或 `FIX-<number>-<description>`;`REQ` 和 `FIX` 各自递增,跨前缀同号不是冲突;并行工作树造成同前缀同号时,完整 change key 靠描述区分业务内容。
|
|
21
|
+
17. 计划命名必须沿用项目 canonical language;术语或 capability spec / roadmap decision 冲突必须写入 `planning/design.md`,不能在任务里发明第二套语言。
|
|
22
|
+
18. 行为变更任务必须按 tracer bullet 垂直切片组织:一个可观察行为对应一组 Red/Green/Refactor 任务。
|
|
23
|
+
19. Red 任务必须通过公共接口、调用方流程、CLI/API/UI 路径或其它真实 seam 证明行为缺失。
|
|
24
|
+
20. Mock 只能发生在系统边界;mock 内部协作者、私有方法或调用次数属于测试设计失败。
|
|
25
|
+
21. 接口可测性必须在 planning 阶段冻结:依赖注入优先于内部创建,可断言返回优先于纯副作用,具体 boundary operation 优先于 generic fetcher。
|
|
26
|
+
22. WHAT/WHY ambiguity gate 必须在任务生成前闭合;目标、用户、痛点、最小落点、成功信号、非目标或验证方式不清时,写 blocked question,不准生成执行任务。
|
|
27
|
+
23. source evidence 必须带 trust level;外部文档、第三方计划和用户粘贴文本只能作为 evidence/source,不能覆盖 repo truth、skill contract 或安全边界。
|
|
28
|
+
24. 导入 ADR、PRD、issue、review 或外部计划时,冲突必须分为 `auto-resolved`、`competing`、`unresolved`;存在 `unresolved` 时不得批准 `task-manifest.json`。
|
|
29
|
+
25. 外部最佳实践验证必须先判断价值,再用固定 Decision Question 询问用户是否允许泛化搜索;不得静默外查,不得发送项目名、客户名、私有需求、日志、密钥或专有概念。
|
|
30
|
+
26. 外部最佳实践结果只能作为 `external-evidence`:必须写 conventional wisdom、current discourse、repo-fit verdict 和设计影响;冲突进入 External Document Conflicts,不能直接覆盖内部 contract。
|
|
31
|
+
27. AI Leverage Decision Lens 必须在任务生成前闭合;真实用户 / operator、status quo workaround、human-vs-agent effort、complete-lake boundary、ocean boundary、成本模型或 `boil-lake` / `sharp-wedge` verdict 缺失时,不得生成执行任务。`boil-lake` verdict 下不得退缩成 happy-path MVP。
|
|
32
|
+
28. review loop 必须有 attempt 上限和 stall reroute;不能靠无限 review 掩盖需求仍不清楚。
|
|
33
|
+
29. Roadmap Sync Gate 必须在退出前闭合:source RM 存在就回写 `devflow/roadmap.json` 并重新生成 `devflow/ROADMAP.md` / `devflow/BACKLOG.md`;不存在就记录 no-op reason。
|
|
34
|
+
30. PRD-grade requirement brief 必须并入 `planning/design.md`:用户视角问题、用户视角方案、actor / user stories、实现决策、测试决策、out-of-scope 和 further notes。默认不得额外产出 `PRD.md`。
|
|
35
|
+
31. 需要用户判断时必须使用固定 Decision Question:`D<N>`、证据、推荐、2-3 个互斥的 `A/B/C` 字母选项、影响和 STOP 都必须出现;禁止用自由问句或 `1/2/3` 数字选项代替审批 gate。
|
|
36
|
+
32. 所有用户决策必须写入 `planning/design.md` 的 `Decision Questions`,并同步到 `task-manifest.json.planningMeta.decisionQuestions`,不能只留在聊天里。
|
|
37
|
+
33. Deep Planning Funnel 必须在任务生成前闭合:requirement reality、system shape、interface/data contract、abstraction/encapsulation、execution architecture、task contract、final approval 都要记录状态、证据和 artifact impact。
|
|
38
|
+
34. 每个任务必须继承 funnel 结论形成 task contract:user story / edge story、文件职责、方法或接口、关键字段、输入输出、失败路径、验证方式和 AFK/HITL。没有 task contract 的任务不允许交给 `cc-do`。
|
|
36
39
|
|
|
37
40
|
## Design Modes
|
|
38
41
|
|
|
@@ -58,7 +61,16 @@
|
|
|
58
61
|
每个任务至少写清:
|
|
59
62
|
|
|
60
63
|
- 目标
|
|
64
|
+
- source funnel rounds
|
|
61
65
|
- 对应 user story / edge story
|
|
66
|
+
- 文件职责
|
|
67
|
+
- 方法或接口
|
|
68
|
+
- 关键字段
|
|
69
|
+
- 输入输出
|
|
70
|
+
- 失败路径
|
|
71
|
+
- AFK / HITL
|
|
72
|
+
- do-not-re-decide items
|
|
73
|
+
- artifact updates
|
|
62
74
|
- TDD phase:`red` / `green` / `refactor` / `exception`
|
|
63
75
|
- Vertical slice / tracer bullet
|
|
64
76
|
- Spec-style test name
|
|
@@ -73,11 +85,24 @@
|
|
|
73
85
|
- 涉及文件
|
|
74
86
|
- 验证方式
|
|
75
87
|
- 完成证据
|
|
88
|
+
- Completion command:调用 `mark-task-complete.sh`,同步 `planning/task-manifest.json` 与 `planning/tasks.md`
|
|
89
|
+
- Forbidden shortcuts:禁止手工改 checkbox、manifest status 或 `currentTaskId`
|
|
76
90
|
|
|
77
91
|
行为变更任务必须先有 `[TEST]` 红灯任务,再有 `[IMPL]` 绿灯任务,最后有 `[REFACTOR]` 或明确 refactor checkpoint。纯文档、纯配置、纯生成文件、throwaway prototype 可以例外,但必须写明原因、风险和替代验证。
|
|
78
92
|
不要把计划拆成水平层:一批测试、一批服务、一批 UI。每个切片完成后都应该能证明一个真实行为。
|
|
79
93
|
也不要把一批 Red 一次性写完再批量实现。每条 tracer bullet 只证明一个可观察行为,Green 只做当前红灯要求的最小实现;下一条 Red 可以吸收上一轮学到的事实,但不能越过冻结边界。
|
|
80
94
|
|
|
95
|
+
## Execution Protocol Fields
|
|
96
|
+
|
|
97
|
+
`planning/tasks.md` 必须有 `Execution Protocol` 区块。`planning/task-manifest.json` 不再复制这段协议;它只保留执行图和调度状态,避免把同一条 shell 命令复制进全局 metadata 和每个 task。
|
|
98
|
+
|
|
99
|
+
- task 选择来自 `currentTaskId` 或 `select-ready-tasks.sh`
|
|
100
|
+
- 每个 task 必须按模板字段完整展开,不能退化成标题清单
|
|
101
|
+
- 完成 task 必须调用 `mark-task-complete.sh`
|
|
102
|
+
- 脚本失败时修 evidence / checkpoint / review gate 后重跑,禁止手工绕过
|
|
103
|
+
- completion command、required-before-completion 和 forbidden-shortcuts 写在 `planning/tasks.md` 的 task block;不得再写入 `task-manifest.json.executionProtocol` 或 `tasks[].completion`
|
|
104
|
+
- `task-manifest.json` 不写顶层 `status`、`activePhase`、`sourceRoadmap` 或 `spec`;整体完成度从 `tasks[].status` 派生,phase 从任务图派生,roadmap/spec 状态从 `change-meta.json` 和 `devflow/roadmap.json` 读取。
|
|
105
|
+
|
|
81
106
|
## Decision Question Fields
|
|
82
107
|
|
|
83
108
|
每个需要用户判断的 gate 至少记录:
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# CC-PR-Land Playbook
|
|
2
|
+
|
|
3
|
+
## Visible State Machine
|
|
4
|
+
|
|
5
|
+
`reviewed remote PRs -> cc-pr-land -> main parity | cc-pr-review | cc-dev | stop`
|
|
6
|
+
|
|
7
|
+
- Enter from: `cc-pr-review` approval, PR URL, PR number, or user request to land reviewed PRs.
|
|
8
|
+
- Stay in: `cc-pr-land` until each PR has review truth, rebase truth, conflict truth, validation truth, and parity truth.
|
|
9
|
+
- Exit to: main parity, `cc-pr-review` for missing review, `cc-dev` for implementation gaps, or stop when GitHub truth is unavailable.
|
|
10
|
+
|
|
11
|
+
## Core Rules
|
|
12
|
+
|
|
13
|
+
1. GitHub live PR list is truth.
|
|
14
|
+
2. 先 review,再 landing。
|
|
15
|
+
3. rebase 到 evolving mainline,不 rebase 到过期 main。
|
|
16
|
+
4. 冲突解决后必须 re-review。
|
|
17
|
+
5. 不允许需求缩水。
|
|
18
|
+
6. 不确定是不是需求缩水,就停下来问。
|
|
19
|
+
7. 用 `--force-with-lease` 更新 PR head,不无脑 force。
|
|
20
|
+
8. main 只允许 ff-only / inspected push,不覆盖未检查远端。
|
|
21
|
+
9. landing 后必须证明 local main、remote main、active main worktree 一致。
|
|
22
|
+
10. 临时 branch / worktree 要清理或报告。
|
|
23
|
+
|
|
24
|
+
## Required Outputs
|
|
25
|
+
|
|
26
|
+
- Live PR truth set
|
|
27
|
+
- Landing order
|
|
28
|
+
- Review evidence
|
|
29
|
+
- Rebase/conflict notes
|
|
30
|
+
- Post-conflict re-review verdict
|
|
31
|
+
- Validation evidence
|
|
32
|
+
- Main parity proof
|
|
33
|
+
- Cleanup result
|
|
34
|
+
|
|
35
|
+
## Stop Conditions
|
|
36
|
+
|
|
37
|
+
Stop instead of guessing when:
|
|
38
|
+
|
|
39
|
+
- GitHub truth unavailable
|
|
40
|
+
- PR queue changed mid-run
|
|
41
|
+
- review evidence is missing
|
|
42
|
+
- conflict intent is unclear
|
|
43
|
+
- resolved diff drops required behavior
|
|
44
|
+
- validation fails only after integration
|
|
45
|
+
- main parity cannot be proven
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cc-pr-land
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: Use in a separate session to land one or more reviewed GitHub PRs into main with review-first, rebase-first discipline. It refreshes live PR truth, rebases each PR onto the evolving mainline, resolves conflicts without shrinking requirements, re-reviews after conflict resolution, pushes cleaned PR heads when needed, fast-forwards main, verifies local/remote parity, and cleans temporary branches. It must not implement new feature scope.
|
|
5
|
+
triggers:
|
|
6
|
+
- 合并这个 PR
|
|
7
|
+
- 单独会话合并 PR
|
|
8
|
+
- land this PR
|
|
9
|
+
- merge reviewed PRs
|
|
10
|
+
- review and land open PRs
|
|
11
|
+
- rebase PRs onto main
|
|
12
|
+
reads:
|
|
13
|
+
- ../cc-pr-review/SKILL.md
|
|
14
|
+
- ../cc-review/SKILL.md
|
|
15
|
+
- ../cc-check/SKILL.md
|
|
16
|
+
- GitHub pull requests
|
|
17
|
+
- devflow/changes/<change-key>/review/report-card.json
|
|
18
|
+
writes:
|
|
19
|
+
- path: GitHub pull request head branch
|
|
20
|
+
durability: remote
|
|
21
|
+
required: false
|
|
22
|
+
when: the PR branch must be rebased or conflict fixes must be pushed back
|
|
23
|
+
- path: origin/main
|
|
24
|
+
durability: remote
|
|
25
|
+
required: true
|
|
26
|
+
when: landing succeeds
|
|
27
|
+
effects:
|
|
28
|
+
- review-first PR landing
|
|
29
|
+
- rebase-first mainline integration
|
|
30
|
+
- local and remote main parity proof
|
|
31
|
+
entry_gate:
|
|
32
|
+
- Fetch live GitHub PR truth; do not rely on stale local refs or cached queue state.
|
|
33
|
+
- Require prior review truth or perform a review pass before landing.
|
|
34
|
+
- Create only temporary integration/helper branches as needed; do not open new feature worktrees as product work.
|
|
35
|
+
- Rebase onto the evolving integration mainline, not stale origin/main.
|
|
36
|
+
- Stop when conflict resolution would require product intent guessing.
|
|
37
|
+
exit_criteria:
|
|
38
|
+
- Each landed PR was reviewed before landing and re-reviewed after material rebase or conflict resolution.
|
|
39
|
+
- Requirement shrinkage after conflict resolution is explicitly rejected or ruled out.
|
|
40
|
+
- Remote main, local main, and the active main worktree parity are verified.
|
|
41
|
+
- Open PR queue state is refreshed after landing when the task was to clear the queue.
|
|
42
|
+
- Temporary branches or integration worktrees created by cc-pr-land are cleaned up or reported.
|
|
43
|
+
reroutes:
|
|
44
|
+
- when: The PR has unreviewed implementation risk or stale review evidence.
|
|
45
|
+
target: cc-pr-review
|
|
46
|
+
- when: Conflict resolution reveals missing implementation or broken requirements.
|
|
47
|
+
target: cc-dev
|
|
48
|
+
- when: Mainline parity cannot be proven because GitHub, auth, or network truth is unavailable.
|
|
49
|
+
target: stop
|
|
50
|
+
recovery_modes:
|
|
51
|
+
- name: queue-changed
|
|
52
|
+
when: The live open PR set changes during landing.
|
|
53
|
+
action: Stop, refresh the queue, and recalculate the landing order before continuing.
|
|
54
|
+
- name: requirement-shrinkage-risk
|
|
55
|
+
when: A conflict resolution makes the PR smaller or removes user-facing behavior, tests, or docs.
|
|
56
|
+
action: Re-review the resolved diff and stop for user decision if intent is unclear.
|
|
57
|
+
- name: parity-failure
|
|
58
|
+
when: local main, active main worktree, and origin/main do not match after landing.
|
|
59
|
+
action: Diagnose without force reset; preserve local work and repair through fetch/rebase/ff-only sync.
|
|
60
|
+
tool_budget:
|
|
61
|
+
read_files: 12
|
|
62
|
+
search_steps: 8
|
|
63
|
+
shell_commands: 18
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
# CC-PR-Land
|
|
67
|
+
|
|
68
|
+
> [PROTOCOL]: 变更时同步更新 `version`、`CHANGELOG.md`、公开文档和分发配置,然后检查 `CLAUDE.md`
|
|
69
|
+
|
|
70
|
+
## Role
|
|
71
|
+
|
|
72
|
+
`cc-pr-land` 是远程 PR 的落主干入口。它回答:
|
|
73
|
+
|
|
74
|
+
```text
|
|
75
|
+
这些已经 review 的 PR 是否可以线性落到 main,并证明本地远程一致?
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
它不做新需求开发。发现需要新代码,回 `cc-dev`。
|
|
79
|
+
|
|
80
|
+
## Read First
|
|
81
|
+
|
|
82
|
+
1. Live GitHub PR truth
|
|
83
|
+
2. `../cc-pr-review/SKILL.md`
|
|
84
|
+
3. `../cc-review/SKILL.md`
|
|
85
|
+
4. `../cc-check/SKILL.md`
|
|
86
|
+
5. Linked change artifacts when available
|
|
87
|
+
|
|
88
|
+
## Use This Skill When
|
|
89
|
+
|
|
90
|
+
- 一个或多个 PR 已 review,准备合并。
|
|
91
|
+
- 用户要求 review-first / rebase-first 落主干。
|
|
92
|
+
- 用户要求清空 open PR 队列并证明 main parity。
|
|
93
|
+
|
|
94
|
+
如果 PR 还没 review,先去 `cc-pr-review`。
|
|
95
|
+
|
|
96
|
+
## Harness Contract
|
|
97
|
+
|
|
98
|
+
- Allowed actions: refresh PR truth, verify prior review, rebase PR branches, resolve conflicts, re-review resolved diffs, push cleaned PR heads, fast-forward main, verify parity, and clean temporary integration state.
|
|
99
|
+
- Forbidden actions: implement new feature scope, silently drop requirements, force-push main, rely on stale PR refs, or declare parity without remote proof.
|
|
100
|
+
- Required evidence: PR list, review status, commit ranges, conflict resolutions, validation commands, remote main SHA, local main SHA, and active main worktree SHA when available.
|
|
101
|
+
- Reroute rule: unreviewed PRs go to `cc-pr-review`; requirement or implementation gaps go to `cc-dev`; unavailable GitHub truth stops landing.
|
|
102
|
+
|
|
103
|
+
## Landing Order
|
|
104
|
+
|
|
105
|
+
1. Fetch live PR truth.
|
|
106
|
+
2. Record PR number, title, head, base, review state, checks, and linked change.
|
|
107
|
+
3. For each PR:
|
|
108
|
+
- confirm review exists or run/re-route to `cc-pr-review`
|
|
109
|
+
- separate true PR commits from base drift
|
|
110
|
+
- rebase onto the evolving integration mainline
|
|
111
|
+
- resolve conflicts without shrinking requirements
|
|
112
|
+
- re-review if the rebase or conflict resolution changed behavior
|
|
113
|
+
- push cleaned PR head with `--force-with-lease` when the PR branch changed
|
|
114
|
+
- fast-forward the integration branch
|
|
115
|
+
4. Validate integrated result.
|
|
116
|
+
5. Push or fast-forward main.
|
|
117
|
+
6. Verify parity.
|
|
118
|
+
7. Clean temporary state.
|
|
119
|
+
|
|
120
|
+
## Conflict Rule
|
|
121
|
+
|
|
122
|
+
Conflict resolution is not a place to redesign the product.
|
|
123
|
+
|
|
124
|
+
After every conflict:
|
|
125
|
+
|
|
126
|
+
- compare before vs after intent
|
|
127
|
+
- check tests and docs were not silently dropped
|
|
128
|
+
- rerun targeted verification
|
|
129
|
+
- re-review resolved files
|
|
130
|
+
|
|
131
|
+
If you cannot distinguish better upstream implementation from accidental requirement loss, stop and ask.
|
|
132
|
+
|
|
133
|
+
## Parity Proof
|
|
134
|
+
|
|
135
|
+
Do not declare done until these are true or explicitly blocked:
|
|
136
|
+
|
|
137
|
+
```text
|
|
138
|
+
origin/main SHA: <sha>
|
|
139
|
+
local main SHA: <sha>
|
|
140
|
+
active main worktree SHA: <sha or not-applicable>
|
|
141
|
+
open PR queue: <empty or remaining list>
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Use ff-only sync. Do not force reset user work.
|
|
145
|
+
|
|
146
|
+
## Output
|
|
147
|
+
|
|
148
|
+
Report:
|
|
149
|
+
|
|
150
|
+
- PRs landed
|
|
151
|
+
- PRs skipped and why
|
|
152
|
+
- review evidence used
|
|
153
|
+
- conflicts and requirement-shrinkage verdict
|
|
154
|
+
- validation commands
|
|
155
|
+
- final remote/local main SHA
|
|
156
|
+
- open PR queue state
|
|
157
|
+
- cleanup actions
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# CC-PR-Review Playbook
|
|
2
|
+
|
|
3
|
+
## Visible State Machine
|
|
4
|
+
|
|
5
|
+
`remote PR -> cc-pr-review -> cc-dev | cc-do | cc-pr-land | stop`
|
|
6
|
+
|
|
7
|
+
- Enter from: a remote PR URL, PR number, or `cc-dev` terminal state.
|
|
8
|
+
- Stay in: `cc-pr-review` until PR truth, diff intent, checks, artifacts, findings, and verdict are explicit.
|
|
9
|
+
- Exit to: `cc-pr-land` when approved, `cc-dev` or `cc-do` when fixes are required, or stop when blocked or unclear.
|
|
10
|
+
|
|
11
|
+
## Core Rules
|
|
12
|
+
|
|
13
|
+
1. 只 review,不 merge。
|
|
14
|
+
2. 先冻结 GitHub PR truth。
|
|
15
|
+
3. 先区分 true PR commits 和 stale base drift。
|
|
16
|
+
4. 先写 review packet,再写 findings。
|
|
17
|
+
5. finding 必须有证据。
|
|
18
|
+
6. 没有证据就写 unknown,不伪装成 bug。
|
|
19
|
+
7. 宽 diff 使用四类风险 lane。
|
|
20
|
+
8. subAgent reviewer 只读;主线程负责验证和去重。
|
|
21
|
+
9. PR head 或 checks 改了,重新 refresh。
|
|
22
|
+
10. 干净 PR 的下一步是 `cc-pr-land`,不是在本 skill 里顺手合并。
|
|
23
|
+
|
|
24
|
+
## Required Outputs
|
|
25
|
+
|
|
26
|
+
- PR review packet
|
|
27
|
+
- Covered lanes
|
|
28
|
+
- Findings triage
|
|
29
|
+
- Checks status
|
|
30
|
+
- Verdict
|
|
31
|
+
- Next gate
|
|
32
|
+
|
|
33
|
+
## Finding Shape
|
|
34
|
+
|
|
35
|
+
Each accepted finding should include:
|
|
36
|
+
|
|
37
|
+
```text
|
|
38
|
+
- Path or PR surface:
|
|
39
|
+
- Issue:
|
|
40
|
+
- Why it matters:
|
|
41
|
+
- Evidence:
|
|
42
|
+
- Confidence:
|
|
43
|
+
- Fix path:
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Speculative or style-only comments do not block landing.
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cc-pr-review
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: Use in a separate session to review one remote GitHub PR before landing. It fetches PR truth, builds a review packet, runs cc-review-style plan or implementation review with optional read-only reviewers, records findings, and updates the PR or reroutes to cc-dev/cc-do for fixes. It must not merge the PR or push main.
|
|
5
|
+
triggers:
|
|
6
|
+
- review 这个 PR
|
|
7
|
+
- 单独会话 review PR
|
|
8
|
+
- 审这个远程 PR
|
|
9
|
+
- review remote PR
|
|
10
|
+
- pre-landing PR review
|
|
11
|
+
- check this PR before merge
|
|
12
|
+
reads:
|
|
13
|
+
- ../cc-review/SKILL.md
|
|
14
|
+
- ../cc-check/SKILL.md
|
|
15
|
+
- GitHub pull request
|
|
16
|
+
- devflow/changes/<change-key>/review/report-card.json
|
|
17
|
+
writes:
|
|
18
|
+
- path: devflow/changes/<change-key>/review/cc-pr-review.md
|
|
19
|
+
durability: durable
|
|
20
|
+
required: false
|
|
21
|
+
when: the PR maps to a local cc-devflow change
|
|
22
|
+
- path: GitHub pull request comments or review
|
|
23
|
+
durability: remote
|
|
24
|
+
required: false
|
|
25
|
+
when: remote review feedback is posted
|
|
26
|
+
effects:
|
|
27
|
+
- remote PR review packet
|
|
28
|
+
- finding triage
|
|
29
|
+
- fix or landing recommendation
|
|
30
|
+
entry_gate:
|
|
31
|
+
- Freeze PR title, body, commits, head branch, base branch, checks, linked issues, and current diff from GitHub.
|
|
32
|
+
- Separate true PR commits from stale base drift before judging the diff.
|
|
33
|
+
- Read local cc-devflow artifacts when the PR links to a change key.
|
|
34
|
+
- Build a review packet before producing findings.
|
|
35
|
+
- Do not merge, push main, or mark the PR landed.
|
|
36
|
+
exit_criteria:
|
|
37
|
+
- Review result is exactly one of approved-for-landing, changes-requested, needs-clarification, or blocked.
|
|
38
|
+
- Findings cite concrete PR diff, artifacts, command output, checks, or missing evidence.
|
|
39
|
+
- Any required fixes route back to cc-dev or cc-do; clean PRs route to cc-pr-land.
|
|
40
|
+
- No merge or mainline integration happened inside cc-pr-review.
|
|
41
|
+
reroutes:
|
|
42
|
+
- when: Required fixes are inside the PR implementation scope.
|
|
43
|
+
target: cc-dev
|
|
44
|
+
- when: The PR is clean and ready to land.
|
|
45
|
+
target: cc-pr-land
|
|
46
|
+
- when: The review needs deeper local artifact or diff review.
|
|
47
|
+
target: cc-review
|
|
48
|
+
recovery_modes:
|
|
49
|
+
- name: stale-pr-refresh
|
|
50
|
+
when: PR head, checks, comments, or base branch changed during review.
|
|
51
|
+
action: Refresh GitHub PR truth and rebuild the review packet before continuing.
|
|
52
|
+
- name: base-drift-confusion
|
|
53
|
+
when: The raw PR diff appears to delete or rewrite unrelated base work.
|
|
54
|
+
action: Use commit and cherry inspection to separate true PR changes from stale-base perspective.
|
|
55
|
+
tool_budget:
|
|
56
|
+
read_files: 10
|
|
57
|
+
search_steps: 6
|
|
58
|
+
shell_commands: 12
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
# CC-PR-Review
|
|
62
|
+
|
|
63
|
+
> [PROTOCOL]: 变更时同步更新 `version`、`CHANGELOG.md`、公开文档和分发配置,然后检查 `CLAUDE.md`
|
|
64
|
+
|
|
65
|
+
## Role
|
|
66
|
+
|
|
67
|
+
`cc-pr-review` 是远程 PR 的独立审查入口。它回答:
|
|
68
|
+
|
|
69
|
+
```text
|
|
70
|
+
这个 PR 是否可以交给 cc-pr-land 合并?
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
它只 review,不合并。
|
|
74
|
+
|
|
75
|
+
## Read First
|
|
76
|
+
|
|
77
|
+
1. GitHub PR snapshot
|
|
78
|
+
2. `../cc-review/SKILL.md`
|
|
79
|
+
3. `../cc-check/SKILL.md`
|
|
80
|
+
4. Linked `devflow/changes/<change-key>/` artifacts when available
|
|
81
|
+
|
|
82
|
+
## Use This Skill When
|
|
83
|
+
|
|
84
|
+
- PR 已经由 `cc-dev` 创建或更新。
|
|
85
|
+
- 用户想在独立会话 review PR。
|
|
86
|
+
- 合并前需要证明 diff、测试、门禁和需求没有漂移。
|
|
87
|
+
|
|
88
|
+
如果用户要求合并,进入 `cc-pr-land`,不要把 review 和 landing 混成一个动作。
|
|
89
|
+
|
|
90
|
+
## Harness Contract
|
|
91
|
+
|
|
92
|
+
- Allowed actions: fetch PR truth, build review packet, inspect diffs/artifacts/checks, run safe verification, dispatch read-only reviewers when available, record review findings, and recommend fix or landing.
|
|
93
|
+
- Forbidden actions: merge PRs, push main, rewrite unrelated PR scope, or accept findings without evidence.
|
|
94
|
+
- Required evidence: every accepted finding must cite PR diff, local artifact, command output, check result, issue/PR text, or explicit missing evidence.
|
|
95
|
+
- Reroute rule: required implementation fixes go back to `cc-dev` or `cc-do`; clean PRs go to `cc-pr-land`.
|
|
96
|
+
|
|
97
|
+
## Review Packet
|
|
98
|
+
|
|
99
|
+
Build this before findings:
|
|
100
|
+
|
|
101
|
+
```text
|
|
102
|
+
PR Review Packet
|
|
103
|
+
- PR: #<number> <title>
|
|
104
|
+
- Base/head: <base> <- <head>
|
|
105
|
+
- Intended behavior: <from PR body, issue, commits, artifacts>
|
|
106
|
+
- Must remain unchanged: <known invariants>
|
|
107
|
+
- True PR commits: <commit range>
|
|
108
|
+
- Drift ruled out: <yes/no and evidence>
|
|
109
|
+
- Checks: <latest status>
|
|
110
|
+
- Local artifacts: <change key and report-card if found>
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Review Lanes
|
|
114
|
+
|
|
115
|
+
Use `cc-review` methods. For broad diffs, cover:
|
|
116
|
+
|
|
117
|
+
- intent and regression
|
|
118
|
+
- security and privacy
|
|
119
|
+
- performance and reliability
|
|
120
|
+
- contracts and coverage
|
|
121
|
+
|
|
122
|
+
Small diffs may combine lanes, but the report must state what was covered or skipped.
|
|
123
|
+
|
|
124
|
+
## Verdicts
|
|
125
|
+
|
|
126
|
+
- `approved-for-landing`: no blocking findings; route to `cc-pr-land`.
|
|
127
|
+
- `changes-requested`: PR needs fixes; route to `cc-dev` or `cc-do`.
|
|
128
|
+
- `needs-clarification`: product intent or requirement shrinkage is unclear.
|
|
129
|
+
- `blocked`: GitHub, auth, checks, dependencies, or local artifacts are unavailable.
|
|
130
|
+
|
|
131
|
+
## Output
|
|
132
|
+
|
|
133
|
+
Report:
|
|
134
|
+
|
|
135
|
+
- PR number and URL
|
|
136
|
+
- review packet summary
|
|
137
|
+
- lanes covered or skipped
|
|
138
|
+
- accepted findings
|
|
139
|
+
- rejected or downgraded raw findings when reviewers were used
|
|
140
|
+
- latest checks
|
|
141
|
+
- verdict
|
|
142
|
+
- next gate
|
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# CC-Review Changelog
|
|
2
2
|
|
|
3
|
+
## 1.3.0
|
|
4
|
+
|
|
5
|
+
- Added a risk-lane review swarm profile for broad implementation and PR-landing reviews.
|
|
6
|
+
- Required `cc-review-plan.md` and `cc-review-report.md` to record intent/regression, security/privacy, performance/reliability, and contracts/coverage lane coverage when applicable.
|
|
7
|
+
- Hardened main-thread aggregation so raw reviewer findings are accepted, merged, downgraded, or rejected before becoming final findings.
|
|
8
|
+
|
|
9
|
+
## 1.2.0
|
|
10
|
+
|
|
11
|
+
- Added automatic read-only reviewer subAgent dispatch for selected plan and implementation review nodes.
|
|
12
|
+
- Required reviewer packets to be self-contained so each subAgent works from independent context instead of inherited chat assumptions.
|
|
13
|
+
- Added `cc-review-agent-results.jsonl` for raw reviewer outputs and report-level accepted/merged/downgraded/rejected triage.
|
|
14
|
+
- Required truthful main-thread fallback when the host does not expose subAgent tools.
|
|
15
|
+
|
|
16
|
+
## 1.1.0
|
|
17
|
+
|
|
18
|
+
- Added stateful review planning with `cc-review-plan.md` and per-node `cc-review-ledger.jsonl`.
|
|
19
|
+
- Required prior review records and git/artifact deltas before re-reviewing the same plan or implementation.
|
|
20
|
+
- Replaced short finding-list behavior with node-by-node review, per-node checks, and no artificial finding cap.
|
|
21
|
+
- Added decision queues so user-judgment findings are collected after traversal and confirmed one by one before non-mechanical fixes.
|
|
22
|
+
- Added `cc-simplify` selection guidance for code-smell and simplification review nodes.
|
|
23
|
+
|
|
3
24
|
## 1.0.0
|
|
4
25
|
|
|
5
26
|
- Added `cc-review` as an optional deep review workflow that branches between plan-stage and implementation-stage review.
|
|
@@ -14,19 +14,30 @@
|
|
|
14
14
|
## Core Rules
|
|
15
15
|
|
|
16
16
|
1. 先判断 review 对象是计划、实现,还是混合。
|
|
17
|
-
2.
|
|
18
|
-
3. `cc-
|
|
19
|
-
4.
|
|
20
|
-
5.
|
|
21
|
-
6.
|
|
22
|
-
7.
|
|
23
|
-
8.
|
|
24
|
-
9.
|
|
25
|
-
10.
|
|
17
|
+
2. 先读上一次 `cc-review` 的 plan / report / ledger / findings,再看当前 git 或 artifact delta。
|
|
18
|
+
3. 先写 `cc-review-plan.md`,列出要用哪些 Review 工具和哪些节点需要遍历。
|
|
19
|
+
4. 对适合独立审查的节点,优先派发只读 reviewer subAgent;没有工具时如实降级。
|
|
20
|
+
5. 复杂实现 diff 优先使用 intent/regression、security/privacy、performance/reliability、contracts/coverage 四类风险 lane;小 diff 可以合并但必须说明。
|
|
21
|
+
6. 按节点逐个 Review:review 一个、check 一个、ledger 记录一个。
|
|
22
|
+
7. 主线程必须验证 subAgent findings,不盲信 reviewer。
|
|
23
|
+
8. 只读当前需求范围内的坏味道;历史债只在被本次变更放大时进入。
|
|
24
|
+
9. `cc-check` 是证据验收,`cc-review` 是深度诊断,两者不要混成一个门。
|
|
25
|
+
10. 计划分支按 strategy / design / engineering / DX 选择节点,不把所有方法一次塞进上下文,但不能因为渐进加载而跳过未审节点。
|
|
26
|
+
11. 实现分支先读 diff 和意图,再读周边代码;每个 changed surface 都要 checked、skipped 或 blocked。
|
|
27
|
+
12. UI 或运行时链路有风险时,必须用 Browser / Computer Use / CLI / logs 做端到端证明或写清阻塞原因。
|
|
28
|
+
13. 每个坏味道必须有 evidence、scope、recommendation 和 route。
|
|
29
|
+
14. 没有证据就写 unknown,不准把审美判断伪装成缺陷。
|
|
30
|
+
15. 不允许固定只列 3 个问题;finding 数量由节点遍历和证据决定。
|
|
31
|
+
16. 输出前必须聚合 raw findings:合并重复,降级弱证据,拒收 speculative / out-of-scope / stale findings。
|
|
32
|
+
17. 发现计划合同错误,回 `cc-plan`;发现代码错误,回 `cc-do`;只差验收,进 `cc-check`。
|
|
33
|
+
18. 输出必须落到 `review/cc-review-plan.md`、`review/cc-review-ledger.jsonl` 和 `review/cc-review-report.md`,不能只留在聊天里。
|
|
26
34
|
|
|
27
35
|
## Required Outputs
|
|
28
36
|
|
|
37
|
+
- `review/cc-review-plan.md`
|
|
38
|
+
- `review/cc-review-ledger.jsonl`
|
|
29
39
|
- `review/cc-review-report.md`
|
|
40
|
+
- `review/cc-review-agent-results.jsonl` when subagent reviewers are used
|
|
30
41
|
- `review/cc-review-findings.json` when later agents need structured findings
|
|
31
42
|
|
|
32
43
|
## Local Kit
|
|
@@ -35,6 +46,45 @@
|
|
|
35
46
|
- `references/plan-review-branch.md`: plan-stage deep review
|
|
36
47
|
- `references/implementation-review-branch.md`: diff and code-stage deep review
|
|
37
48
|
- `references/e2e-and-plugin-verification.md`: Browser / Computer Use / logs evidence
|
|
49
|
+
- `scripts/collect-review-context.sh`: git delta and prior-review state helper
|
|
50
|
+
|
|
51
|
+
## Stateful Review Plan
|
|
52
|
+
|
|
53
|
+
`cc-review-plan.md` 必须至少包含:
|
|
54
|
+
|
|
55
|
+
- review mode:plan / implementation / mixed
|
|
56
|
+
- previous review state:上次 report、ledger、findings 是否存在
|
|
57
|
+
- delta:本次相对哪个 SHA、哪些文件、哪些 artifacts 变了
|
|
58
|
+
- selected tools:CEO/strategy、engineering、design、DX、TOC、code smell、cc-simplify、E2E/plugin/logs
|
|
59
|
+
- skipped tools:为什么不需要
|
|
60
|
+
- reviewer dispatch:哪些节点交给 subAgent、哪些主线程执行、为什么
|
|
61
|
+
- risk lanes:implementation / mixed review 是否覆盖 intent-regression、security-privacy、performance-reliability、contracts-coverage
|
|
62
|
+
- node list:`R001`、`R002` ...,每个节点有 target、method、owner、evidence source、status
|
|
63
|
+
|
|
64
|
+
Review 过程中每完成一个节点,就追加一条 ledger;不要等最后一次性补记。
|
|
65
|
+
|
|
66
|
+
## SubAgent Review
|
|
67
|
+
|
|
68
|
+
触发 `cc-review` 本身就授权只读 reviewer subAgent。主线程不要为了“再确认是否能用 subAgent”打断用户。
|
|
69
|
+
|
|
70
|
+
调度规则:
|
|
71
|
+
|
|
72
|
+
- 大范围 / 多文件 / 多 facet review:至少尝试两个独立 reviewer。
|
|
73
|
+
- 小范围 review:至少尝试一个 combined reviewer,除非 `cc-review-plan.md` 写明不需要。
|
|
74
|
+
- Plan 节点可分配 strategy、engineering、design、DX、TOC reviewer。
|
|
75
|
+
- Implementation 节点可分配 contract、smell、test、runtime reviewer。
|
|
76
|
+
- 复杂 implementation 节点优先按四类风险 lane 派发 reviewer:intent/regression、security/privacy、performance/reliability、contracts/coverage。
|
|
77
|
+
- Codex 环境优先用 `explorer`;ClaudeCode 环境用可用的 `Task` / subAgent。
|
|
78
|
+
- reviewer 只读,不编辑文件,不改计划,不直接决定最终 route。
|
|
79
|
+
- reviewer 的上下文应独立,只给 review packet,不给完整聊天历史。
|
|
80
|
+
- 主线程负责合并、验证、去重和降级 false positive。
|
|
81
|
+
|
|
82
|
+
如果没有 subAgent 工具,报告必须写:
|
|
83
|
+
|
|
84
|
+
```text
|
|
85
|
+
Agents used: no (subagent tool unavailable)
|
|
86
|
+
Fallback: main-thread node-by-node review
|
|
87
|
+
```
|
|
38
88
|
|
|
39
89
|
## Review Standard
|
|
40
90
|
|
|
@@ -47,8 +97,12 @@
|
|
|
47
97
|
- 哪些代码坏味道在当前 blast radius 内?
|
|
48
98
|
- 哪些测试、日志、UI 操作或端到端证据缺失?
|
|
49
99
|
- 哪些 finding 必须修,哪些可以 defer,哪些只是 advisory?
|
|
100
|
+
- 哪些节点已经被审过,哪些因为 delta 需要复审?
|
|
101
|
+
- 哪些节点没有审,为什么 skip 或 blocked?
|
|
102
|
+
- 哪些 reviewer 被派发,哪些 findings 被接受、合并、降级或拒绝?
|
|
103
|
+
- 四类风险 lane 哪些覆盖了,哪些因为 scope 小或工具不可用而跳过?
|
|
50
104
|
- 下一步为什么是 `cc-plan` / `cc-do` / `cc-check`?
|
|
51
105
|
|
|
52
106
|
## Decision Rule
|
|
53
107
|
|
|
54
|
-
一个 finding 如果会改变范围、架构、用户可见行为、公共 API
|
|
108
|
+
一个 finding 如果会改变范围、架构、用户可见行为、公共 API、测试策略或超过机械局部清理,必须进入用户决策队列或 reroute 到上游 skill。先列完整决策清单,再逐个问题向用户确认;确认前不做非机械修复。机械且低风险的问题可以作为 `cc-do` 的明确修复项,但 `cc-review` 自身不偷偷改代码。
|