cc-devflow 4.5.8 → 4.5.10
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 +9 -4
- package/.claude/skills/cc-act/SKILL.md +73 -12
- 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 +61 -5
- package/.claude/skills/cc-act/references/closure-contract.md +4 -1
- 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/render-pr-brief.sh +164 -0
- package/.claude/skills/cc-act/scripts/sync-act-docs.sh +1 -1
- package/.claude/skills/cc-check/CHANGELOG.md +17 -0
- package/.claude/skills/cc-check/PLAYBOOK.md +1 -0
- package/.claude/skills/cc-check/SKILL.md +9 -5
- package/.claude/skills/cc-check/references/review-contract.md +7 -0
- package/.claude/skills/cc-check/scripts/render-report-card.js +6 -1
- package/.claude/skills/cc-dev/CHANGELOG.md +5 -0
- package/.claude/skills/cc-dev/SKILL.md +26 -1
- package/.claude/skills/cc-do/CHANGELOG.md +23 -0
- package/.claude/skills/cc-do/PLAYBOOK.md +7 -7
- package/.claude/skills/cc-do/SKILL.md +49 -45
- package/.claude/skills/cc-do/references/execution-recovery.md +18 -13
- package/.claude/skills/cc-do/scripts/build-task-context.sh +13 -22
- package/.claude/skills/cc-do/scripts/mark-task-complete.sh +0 -6
- package/.claude/skills/cc-do/scripts/record-review-decision.sh +4 -5
- package/.claude/skills/cc-do/scripts/recover-workflow.sh +9 -11
- package/.claude/skills/cc-do/scripts/verify-task-gates.sh +12 -10
- package/.claude/skills/cc-do/scripts/write-task-checkpoint.sh +7 -29
- package/.claude/skills/cc-investigate/CHANGELOG.md +34 -0
- package/.claude/skills/cc-investigate/PLAYBOOK.md +21 -5
- package/.claude/skills/cc-investigate/SKILL.md +97 -40
- package/.claude/skills/cc-investigate/assets/TASKS_TEMPLATE.md +66 -4
- package/.claude/skills/cc-investigate/assets/TASK_MANIFEST_TEMPLATE.json +30 -59
- package/.claude/skills/cc-investigate/assets/{ANALYSIS_TEMPLATE.md → legacy/ANALYSIS_TEMPLATE.md} +48 -0
- package/.claude/skills/cc-investigate/references/investigation-contract.md +16 -2
- package/.claude/skills/cc-investigate/scripts/bootstrap-analysis.sh +1 -1
- package/.claude/skills/cc-next/CHANGELOG.md +6 -0
- package/.claude/skills/cc-next/PLAYBOOK.md +26 -4
- package/.claude/skills/cc-next/SKILL.md +39 -4
- package/.claude/skills/cc-plan/CHANGELOG.md +38 -0
- package/.claude/skills/cc-plan/PLAYBOOK.md +60 -53
- package/.claude/skills/cc-plan/SKILL.md +164 -87
- package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +101 -9
- package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +58 -229
- package/.claude/skills/cc-plan/assets/{DESIGN_TEMPLATE.md → legacy/DESIGN_TEMPLATE.md} +68 -0
- package/.claude/skills/cc-plan/assets/{TINY_DESIGN_TEMPLATE.md → legacy/TINY_DESIGN_TEMPLATE.md} +47 -1
- package/.claude/skills/cc-plan/references/planning-contract.md +48 -33
- package/.claude/skills/cc-review/CHANGELOG.md +6 -0
- package/.claude/skills/cc-review/PLAYBOOK.md +9 -11
- package/.claude/skills/cc-review/SKILL.md +37 -61
- package/.claude/skills/cc-review/references/e2e-and-plugin-verification.md +1 -1
- package/.claude/skills/cc-review/references/implementation-review-branch.md +5 -5
- package/.claude/skills/cc-review/references/plan-review-branch.md +1 -1
- package/.claude/skills/cc-review/references/review-methods.md +4 -4
- package/.claude/skills/cc-review/scripts/collect-review-context.sh +14 -7
- 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/CHANGELOG.md +28 -0
- package/CONTRIBUTING.md +40 -4
- package/CONTRIBUTING.zh-CN.md +40 -4
- package/README.md +57 -43
- package/README.zh-CN.md +57 -43
- package/bin/cc-devflow-cli.js +293 -36
- package/docs/examples/START-HERE.md +5 -4
- package/docs/examples/example-bindings.json +10 -10
- package/docs/examples/full-design-blocked/BACKLOG.md +1 -1
- package/docs/examples/full-design-blocked/README.md +2 -2
- 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 +2 -1
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +29 -312
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md +11 -8
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/review/report-card.json +4 -4
- 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 +2 -2
- package/docs/examples/local-handoff/ROADMAP.md +1 -1
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +2 -1
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json +27 -210
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md +9 -6
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/review/report-card.json +1 -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 +2 -2
- package/docs/examples/pdca-loop/ROADMAP.md +1 -1
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/handoff/pr-brief.md +65 -1
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +2 -1
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +26 -228
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md +9 -6
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/review/report-card.json +1 -1
- package/docs/examples/pdca-loop/roadmap.json +1 -1
- package/docs/examples/scripts/check-example-bindings.sh +11 -5
- package/docs/get-shit-done-strategy-audit.md +22 -22
- package/docs/guides/artifact-contract.md +44 -0
- package/docs/guides/getting-started.md +10 -8
- package/docs/guides/getting-started.zh-CN.md +10 -8
- package/docs/guides/minimize-artifacts.md +123 -0
- package/docs/guides/project-postmortem.md +78 -0
- package/lib/compiler/__tests__/skills-registry.test.js +2 -2
- package/lib/skill-runtime/CLAUDE.md +1 -1
- package/lib/skill-runtime/__tests__/autopilot.test.js +42 -6
- package/lib/skill-runtime/__tests__/benchmark-artifacts.test.js +165 -0
- package/lib/skill-runtime/__tests__/cli-bootstrap.integration.test.js +2 -2
- package/lib/skill-runtime/__tests__/dispatch.test.js +8 -38
- package/lib/skill-runtime/__tests__/intent.test.js +4 -20
- package/lib/skill-runtime/__tests__/lifecycle.test.js +1 -1
- package/lib/skill-runtime/__tests__/paths.test.js +7 -1
- package/lib/skill-runtime/__tests__/planner.tdd.test.js +63 -2
- package/lib/skill-runtime/__tests__/prepare-pr.test.js +3 -16
- package/lib/skill-runtime/__tests__/query.test.js +388 -7
- package/lib/skill-runtime/__tests__/review-check-integration.test.js +148 -0
- package/lib/skill-runtime/__tests__/review-records.test.js +619 -0
- package/lib/skill-runtime/__tests__/runtime.integration.test.js +64 -23
- package/lib/skill-runtime/__tests__/schemas.test.js +76 -2
- package/lib/skill-runtime/__tests__/task-contract-migrate.test.js +137 -0
- package/lib/skill-runtime/__tests__/task-contract.test.js +783 -0
- package/lib/skill-runtime/__tests__/verify-artifacts.test.js +203 -0
- package/lib/skill-runtime/__tests__/worker-run.test.js +4 -11
- package/lib/skill-runtime/__tests__/workflow-context-legacy-fallback.test.js +31 -0
- package/lib/skill-runtime/__tests__/workflow-context.test.js +98 -0
- package/lib/skill-runtime/artifacts.js +0 -5
- package/lib/skill-runtime/context-index.js +545 -0
- package/lib/skill-runtime/intent.js +9 -33
- package/lib/skill-runtime/lifecycle.js +1 -1
- package/lib/skill-runtime/operations/CLAUDE.md +2 -2
- package/lib/skill-runtime/operations/dispatch.js +4 -42
- package/lib/skill-runtime/operations/init.js +2 -6
- package/lib/skill-runtime/operations/janitor.js +2 -18
- package/lib/skill-runtime/operations/resume.js +21 -38
- package/lib/skill-runtime/operations/review-records.js +265 -0
- package/lib/skill-runtime/operations/snapshot.js +1 -1
- package/lib/skill-runtime/operations/task-contract.js +524 -0
- package/lib/skill-runtime/operations/worker-run.js +2 -30
- package/lib/skill-runtime/paths.js +4 -4
- package/lib/skill-runtime/planner.js +25 -13
- package/lib/skill-runtime/query-registry.js +2 -2
- package/lib/skill-runtime/query.js +16 -3
- package/lib/skill-runtime/review-records.js +123 -0
- package/lib/skill-runtime/review.js +246 -11
- package/lib/skill-runtime/schemas.js +179 -15
- package/lib/skill-runtime/store.js +0 -10
- package/lib/skill-runtime/task-contract.js +187 -0
- package/lib/skill-runtime/workflow-context.js +748 -0
- package/package.json +7 -4
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: cc-plan
|
|
3
|
-
version: 3.
|
|
3
|
+
version: 3.9.0
|
|
4
4
|
description: Use when a requirement, roadmap item, or bug needs scope clarification, design decisions, and executable task breakdown before coding starts.
|
|
5
5
|
triggers:
|
|
6
6
|
- 帮我规划这个需求
|
|
@@ -13,19 +13,15 @@ triggers:
|
|
|
13
13
|
reads:
|
|
14
14
|
- PLAYBOOK.md
|
|
15
15
|
- CHANGELOG.md
|
|
16
|
-
- assets/DESIGN_TEMPLATE.md
|
|
17
|
-
- assets/TINY_DESIGN_TEMPLATE.md
|
|
18
16
|
- assets/TASKS_TEMPLATE.md
|
|
19
17
|
- assets/TASK_MANIFEST_TEMPLATE.json
|
|
18
|
+
- docs/guides/project-postmortem.md
|
|
20
19
|
- references/planning-contract.md
|
|
21
20
|
- ../cc-do/scripts/select-ready-tasks.sh
|
|
22
21
|
- ../cc-do/scripts/mark-task-complete.sh
|
|
23
22
|
- ../cc-roadmap/scripts/locate-roadmap-item.sh
|
|
24
23
|
- ../cc-roadmap/scripts/sync-roadmap-progress.sh
|
|
25
24
|
writes:
|
|
26
|
-
- path: devflow/changes/<change-key>/planning/design.md
|
|
27
|
-
durability: durable
|
|
28
|
-
required: true
|
|
29
25
|
- path: devflow/changes/<change-key>/planning/tasks.md
|
|
30
26
|
durability: durable
|
|
31
27
|
required: true
|
|
@@ -38,32 +34,40 @@ writes:
|
|
|
38
34
|
effects:
|
|
39
35
|
- source roadmap progress sync when planning freezes, splits, or reroutes
|
|
40
36
|
entry_gate:
|
|
41
|
-
- Read roadmap handoff, current requirement files, code, docs, and tests before drafting
|
|
42
|
-
- Load cc-devflow native language and decision sources (`devflow/specs/`, roadmap/backlog handoff, current or prior `planning/design.md` / `planning/analysis.md`, and `change-meta.json`) before naming concepts, modules, tests, or tasks.
|
|
43
|
-
- "Synthesize a PRD-grade requirement brief inside `planning/
|
|
37
|
+
- Read roadmap handoff, current requirement files, code, docs, and tests before drafting the task contract.
|
|
38
|
+
- Load cc-devflow native language and decision sources (`devflow/specs/`, roadmap/backlog handoff, current or prior `planning/tasks.md`, legacy `planning/design.md` / `planning/analysis.md`, and `change-meta.json`) before naming concepts, modules, tests, or tasks.
|
|
39
|
+
- "Synthesize a PRD-grade requirement brief inside `planning/tasks.md#Contract Summary`: user-perspective problem, solution, actors, user stories, durable implementation decisions, testing decisions, and out-of-scope boundaries."
|
|
40
|
+
- "Run the Deep Planning Funnel before the first design recommendation: requirement reality, system shape, interface/data contract, abstraction/encapsulation, execution architecture, task contract, and final approval. Record every round in `planning/tasks.md#Contract Summary`."
|
|
44
41
|
- Freeze problem, constraints, non-goals, and success criteria before proposing implementation tasks.
|
|
45
42
|
- If the raw ask spans multiple independent subsystems, split it back into roadmap stages or separate REQ/FIX candidates before asking implementation details.
|
|
46
43
|
- "For non-trivial designs, compare named option roles: minimal viable, ideal architecture, and optional hybrid. Do not default to smallest unless it best serves the goal."
|
|
47
|
-
- Plan executable work as Red/Green/Refactor by default; identify the first failing test before any production implementation task, or write an explicit TDD exception with replacement evidence.
|
|
44
|
+
- Plan executable work as Red/Green/Refactor by default; identify the first failing test before any production implementation task, or write an explicit TDD exception with replacement evidence in the task contract.
|
|
48
45
|
- Generate `planning/tasks.md` from `assets/TASKS_TEMPLATE.md` semantics, including every required task field, the execution protocol, and the exact task completion command; do not free-form a loose checklist.
|
|
49
|
-
-
|
|
46
|
+
- "Make progressive disclosure executable: `planning/tasks.md` must name `cc-devflow query workflow-context --change <changeId> --change-key <changeKey> --data-only --no-trace --compact` as the first context reset before `cc-do`, `cc-check`, or `cc-act` opens deep planning sections."
|
|
47
|
+
- "Keep `planning/task-manifest.json` lean: it is the machine execution graph, not a mirror of the design narrative or task protocol prose."
|
|
50
48
|
- For behavior changes, freeze the spec-style test name, one logical behavior, public verification path, and interface-testability decision before task split.
|
|
51
49
|
- "Before approach approval, run the AI Leverage Decision Lens: real user/operator, status quo workaround, human-vs-agent effort, complete-lake boundary, ocean boundary, scope recommendation, and boil-lake/sharp-wedge/needs-evidence/pivot verdict."
|
|
50
|
+
- "Before approach approval, run the Project Postmortem Recall Gate: search `devflow/postmortems/INDEX.md`, `devflow/postmortems/principles.md`, and relevant `incidents/*.md` with generalized module, capability, failure-class, and model-risk terms; record matches or `no-project-postmortems-yet` in `planning/tasks.md#Contract Summary`."
|
|
52
51
|
- Before approach approval, decide whether external best-practice validation could materially change the plan; if yes, ask the user through the Decision Question Protocol before any web or external lookup.
|
|
53
52
|
- When user judgment is required, ask with the fixed `cc-plan` Decision Question Protocol (`D<N>`, evidence, recommendation, lettered A/B/C options, impact, STOP) instead of free-form prose.
|
|
54
53
|
- Assign a canonical change key before writing artifacts by running `cc-devflow next-change-key --prefix REQ|FIX --description "<short name>"`. Use the script output directly; do not manually scan directories or compute numbers.
|
|
54
|
+
- "Immediately after assigning the change key and before writing durable artifacts, enforce the Worktree Branch Contract: if the current worktree is detached, create or switch to the canonical `REQ/<task>` or `FIX/<task>` branch derived from the change key; if the current branch is the default branch (`main` / `master` / origin HEAD), stop with a setup blocker instead of planning on main."
|
|
55
55
|
- Do not generate planning/tasks.md, planning/task-manifest.json, or change-meta.json until the recommended design is approved.
|
|
56
56
|
- Before exit, locate the source RM in `devflow/roadmap.json`, `devflow/ROADMAP.md`, optional `devflow/BACKLOG.md`, or legacy `devflow/roadmap-tracking.json`; plan the progress sync instead of relying on chat memory.
|
|
57
57
|
exit_criteria:
|
|
58
|
-
- planning/
|
|
58
|
+
- planning/tasks.md contains `## Contract Summary` with the approved solution, PRD-grade requirement brief, boundaries, review conclusions, and execution edge cases.
|
|
59
|
+
- planning/tasks.md preserves every confirmed planning-funnel answer that would otherwise force `cc-do` to invent architecture, abstractions, interfaces, methods, fields, categories, task grain, or test seams.
|
|
59
60
|
- planning/tasks.md, planning/task-manifest.json, and change-meta.json are explicit enough that cc-do can continue without chat memory.
|
|
61
|
+
- planning/tasks.md and change-meta.json record the canonical work branch or the explicit reason no branch mutation was valid.
|
|
62
|
+
- "`cc-devflow query workflow-context` can derive the next skill, packet digests, default section refs, current task, trusted commands, and deep-open triggers from the frozen artifacts."
|
|
60
63
|
- planning/tasks.md contains the task-template compliance section and script-based completion protocol, and every task block includes its completion command.
|
|
61
|
-
- task-manifest.json
|
|
62
|
-
- The task breakdown preserves test-first execution; failing-test tasks precede implementation tasks, refactor
|
|
64
|
+
- task-manifest.json omits retired narrative/protocol mirrors such as `executionProtocol`, `planningMeta.requirementBrief`, `planningMeta.ambiguityGate`, `planningMeta.reviewLoop`, and task-level `completion`; those details belong in `planning/tasks.md`.
|
|
65
|
+
- The task breakdown preserves test-first execution; failing-test tasks precede implementation tasks, refactor gates are visible, and any TDD exception is justified.
|
|
63
66
|
- "Testability decisions make the public seam natural: small interface, deep implementation, injected boundary dependencies, returned results where practical, and boundary mocks only where the system genuinely leaves the repo."
|
|
64
|
-
- AI Leverage Decision Lens is recorded in planning/
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
+
- AI Leverage Decision Lens is recorded in planning/tasks.md and task-manifest.json.planningMeta.aiLeverageDecisionLens before executable tasks are generated.
|
|
68
|
+
- Project Postmortem Recall Gate is recorded in planning/tasks.md before executable tasks are generated; relevant lessons have concrete task impacts or explicit no-op reasons.
|
|
69
|
+
- Required user decisions were asked through numbered decision question IDs with lettered A/B/C options and recorded in `planning/tasks.md` / `task-manifest.json` instead of left in chat.
|
|
70
|
+
- The source roadmap item has been synchronized to the frozen planning state, or `planning/tasks.md` and `change-meta.json` record why no roadmap update is valid.
|
|
67
71
|
- 'Only one next step remains: enter cc-do.'
|
|
68
72
|
reroutes:
|
|
69
73
|
- when: The discussion is still about project direction or stage order instead of one requirement.
|
|
@@ -73,7 +77,7 @@ reroutes:
|
|
|
73
77
|
recovery_modes:
|
|
74
78
|
- name: re-open-design
|
|
75
79
|
when: Execution feedback, review findings, or user correction invalidates the current design contract.
|
|
76
|
-
action: Return to planning/
|
|
80
|
+
action: Return to planning/tasks.md#Contract Summary, reopen the approved decision explicitly, and regenerate machine records only after the contract is stable again.
|
|
77
81
|
tool_budget:
|
|
78
82
|
read_files: 11
|
|
79
83
|
search_steps: 6
|
|
@@ -90,13 +94,13 @@ tool_budget:
|
|
|
90
94
|
|
|
91
95
|
它的目标不是制造一串 planning 文档,而是把 requirement 压成最少但足够强的交付物,让 `cc-do` 不需要临场补脑。
|
|
92
96
|
|
|
93
|
-
PRD 的好处要进入 `planning/
|
|
97
|
+
PRD 的好处要进入 `planning/tasks.md#Contract Summary`,不要变成第 5 个文件。`cc-plan` 必须用用户视角讲清问题和方案,用完整 user stories 覆盖行为面,再把实现决策、测试决策和 out-of-scope 变成 durable handoff。
|
|
94
98
|
|
|
95
99
|
## Runtime Output Policy
|
|
96
100
|
|
|
97
101
|
写入任何 durable Markdown 或 JSON metadata 前,先运行 `cc-devflow config resolve --format policy`。
|
|
98
102
|
|
|
99
|
-
- `Output language` 是机器约束,`planning/
|
|
103
|
+
- `Output language` 是机器约束,`planning/tasks.md` 和 `change-meta.json` 必须记录并遵守它。
|
|
100
104
|
- `agent_preferences` 是用户偏好建议,只影响表达方式和结构选择,不覆盖本 Skill 的工作流边界。
|
|
101
105
|
- 如果配置解析失败,先修配置或向用户说明阻塞,不要用默认语言继续生成正式文档。
|
|
102
106
|
|
|
@@ -104,11 +108,10 @@ PRD 的好处要进入 `planning/design.md`,不要变成第 5 个文件。`cc-
|
|
|
104
108
|
|
|
105
109
|
1. `PLAYBOOK.md`
|
|
106
110
|
2. `CHANGELOG.md`
|
|
107
|
-
3. `assets/
|
|
108
|
-
4. `assets/
|
|
109
|
-
5. `
|
|
110
|
-
6. `
|
|
111
|
-
7. `references/planning-contract.md`
|
|
111
|
+
3. `assets/TASKS_TEMPLATE.md`
|
|
112
|
+
4. `assets/TASK_MANIFEST_TEMPLATE.json`
|
|
113
|
+
5. `references/planning-contract.md`
|
|
114
|
+
6. `docs/guides/project-postmortem.md`
|
|
112
115
|
|
|
113
116
|
## Use This Skill When
|
|
114
117
|
|
|
@@ -125,21 +128,38 @@ PRD 的好处要进入 `planning/design.md`,不要变成第 5 个文件。`cc-
|
|
|
125
128
|
|
|
126
129
|
| 现实状态 | 先走什么路径 |
|
|
127
130
|
| --- | --- |
|
|
128
|
-
| 需求还模糊,边界和成功标准都不稳 | `clarify-first`,先补 `planning/
|
|
131
|
+
| 需求还模糊,边界和成功标准都不稳 | `clarify-first`,先补 `planning/tasks.md#Contract Summary` 的问题定义与约束 |
|
|
129
132
|
| 变更很小,但仍需要冻结做法和任务 | `tiny-design` |
|
|
130
133
|
| 跨模块、高风险、会逼执行者二次设计 | `full-design` |
|
|
131
134
|
|
|
132
135
|
先给出默认 planning 形态,再解释为什么不是另外两种。`cc-plan` 的第一件事不是产出文档,而是压平 planning 密度。
|
|
133
136
|
|
|
134
|
-
`tiny-design`
|
|
137
|
+
`tiny-design` 只是短合同,不是免设计。再小的变更也必须在 `planning/tasks.md#Contract Summary` 里写清边界、验证和用户批准状态,不能用“太简单”跳过设计 gate。
|
|
135
138
|
|
|
136
139
|
## Harness Contract
|
|
137
140
|
|
|
138
|
-
- Allowed actions: clarify scope, compare designs, split over-broad asks into separate planning candidates, freeze decisions, write `planning/
|
|
141
|
+
- Allowed actions: clarify scope, compare designs, split over-broad asks into separate planning candidates, freeze decisions, write `planning/tasks.md`, generate `planning/task-manifest.json` / `change-meta.json`, then run the final roadmap progress sync for the source RM.
|
|
139
142
|
- Forbidden actions: writing production code, splitting planning into new side documents, or emitting tasks before approval.
|
|
140
143
|
- Required evidence: design choices, task boundaries, and verification commands must point back to repo facts or explicit user approval.
|
|
141
144
|
- Reroute rule: if the problem expands to project strategy go back to `roadmap`; if the plan is already frozen move straight to `cc-do`.
|
|
142
145
|
|
|
146
|
+
## Project Postmortem Recall Gate
|
|
147
|
+
|
|
148
|
+
`cc-plan` 必须在冻结方案前检索项目级 AI 尸检报告。它不是问“有没有历史文档”,而是问“这个计划会不会重复模型或团队已经犯过的错误”。
|
|
149
|
+
|
|
150
|
+
默认检索入口:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
rg -n "<capability|module|error|failure-class|model-risk>" devflow/postmortems
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
执行规则:
|
|
157
|
+
|
|
158
|
+
1. 如果 `devflow/postmortems/` 不存在,在 `planning/tasks.md#Contract Summary` 记录 `no-project-postmortems-yet`,继续按 repo 证据规划。
|
|
159
|
+
2. 先读 `devflow/postmortems/INDEX.md` 和 `principles.md`,只在标签、模块、失败类或模型风险匹配时打开具体 `incidents/*.md`。
|
|
160
|
+
3. 相关尸检必须压成计划影响:scope 收缩、测试缝隙、验证命令、禁止触碰文件、review gate、或明确 no-op。
|
|
161
|
+
4. 原则不能替代事实。原则必须能追溯到 incident 文件或 Git 证据;没有证据的原则只作为提醒,不作为阻塞合同。
|
|
162
|
+
|
|
143
163
|
## Change Key Contract
|
|
144
164
|
|
|
145
165
|
`<change-key>` 不是自由 slug。它必须先表达变更类型,再表达编号,最后才是描述:
|
|
@@ -165,6 +185,23 @@ bash .claude/skills/cc-plan/scripts/next-change-key.sh --prefix REQ --descriptio
|
|
|
165
185
|
|
|
166
186
|
描述部分使用 kebab-case,可以保留中文词组,但不允许丢掉大写 `REQ` / `FIX` 前缀。不要再创建 `req-123-...`、`bug-123-...`、纯描述目录或没有编号的目录。旧的小写目录只能作为历史兼容读取目标,不作为新 planning 输出。
|
|
167
187
|
|
|
188
|
+
## Worktree Branch Contract
|
|
189
|
+
|
|
190
|
+
每个新的 `REQ` / `FIX` 默认拥有一个同名工作分支。主项目 checkout 的 `main` 只服务同步、审查和 parity proof,不承载日常 planning 或 implementation。
|
|
191
|
+
|
|
192
|
+
分支锚定顺序固定:
|
|
193
|
+
|
|
194
|
+
1. 先运行 `cc-devflow next-change-key --prefix REQ|FIX --description "<short name>"`,得到 `changeId` 和完整 `changeKey`。
|
|
195
|
+
2. 计算 canonical work branch:`REQ/<task>` 或 `FIX/<task>`,其中 `<task>` 是去掉 `REQ-` / `FIX-` 前缀后的 change key 尾部。例如 `REQ-003-copy-link` -> `REQ/003-copy-link`。
|
|
196
|
+
3. 立即检查 `git branch --show-current`:
|
|
197
|
+
- 为空:当前是 detached worktree,立刻 `git switch -c <canonical-work-branch>`;如果分支已存在且指向当前 HEAD,可以 `git switch <canonical-work-branch>`。
|
|
198
|
+
- 等于 default branch(`main` / `master` / `origin/HEAD` 指向的分支):停止并报告 setup blocker;不要在主分支写 planning artifacts。
|
|
199
|
+
- 等于 canonical work branch:继续。
|
|
200
|
+
- 其它分支:只有它已经明确绑定同一个 `changeKey` 时才继续;否则停止并让用户确认是否切换或新开 worktree。
|
|
201
|
+
4. 在 `planning/tasks.md` 和 `change-meta.json` 记录 work branch。没有记录 work branch 的计划不能进入 `cc-do`。
|
|
202
|
+
|
|
203
|
+
这不是发布前补救动作。`cc-act` 的 detached HEAD rescue 只处理历史遗留;新的 `cc-plan` 必须在入口阶段就把 worktree 绑定到 `REQ/<task>` 或 `FIX/<task>`。
|
|
204
|
+
|
|
168
205
|
## Autoplan Principles
|
|
169
206
|
|
|
170
207
|
这些规则属于 `cc-plan` 的原生决策口径,不允许拆成额外文档:
|
|
@@ -176,35 +213,47 @@ bash .claude/skills/cc-plan/scripts/next-change-key.sh --prefix REQ --descriptio
|
|
|
176
213
|
5. Explicit over clever:十行人人看懂的实现路径胜过二百行抽象。
|
|
177
214
|
6. Bias toward action:把不确定性压成明确 gate、风险和后续入口,不让计划停在空泛讨论。
|
|
178
215
|
|
|
179
|
-
自动决策也要留痕:机械选择写进 `planning/
|
|
216
|
+
自动决策也要留痕:机械选择写进 `planning/tasks.md#Contract Summary` 的 decision log;taste decision 或用户原始方向被挑战时,必须明确标成 `taste decision` / `user challenge`,由用户最后拍板。
|
|
180
217
|
|
|
181
218
|
## Output Model
|
|
182
219
|
|
|
183
|
-
`cc-plan`
|
|
220
|
+
`cc-plan` 默认只允许产出 3 个主文件,采用“一个强 Markdown + CLI 机器记录”的输出模型:
|
|
184
221
|
|
|
185
|
-
1. `planning/
|
|
186
|
-
-
|
|
187
|
-
-
|
|
188
|
-
|
|
189
|
-
- 只保留可执行任务和执行 handoff
|
|
222
|
+
1. `planning/tasks.md`
|
|
223
|
+
- 唯一默认 human-authored Markdown
|
|
224
|
+
- `## Contract Summary` 吸收原来的 design / clarification / brainstorm / review 结论
|
|
225
|
+
- 后续区块只保留可执行任务和 execution handoff
|
|
190
226
|
- 顶部写清 frozen decisions、read first、commands to trust、TDD plan、并行边界、任务模板遵循规则、任务完成脚本
|
|
191
|
-
|
|
227
|
+
2. `planning/task-manifest.json`
|
|
192
228
|
- 从 `planning/tasks.md` 编译出的机器真相源
|
|
193
229
|
- 只服务执行与调度,不再承担人类阅读的叙事职责
|
|
194
|
-
-
|
|
195
|
-
|
|
230
|
+
- 只保留版本链、当前任务、任务依赖、触点、验证命令、证据、review 状态和必要 planning gate 结果
|
|
231
|
+
- 不再镜像 `tasks.md` 的 Contract Summary、执行协议或 completion shell 命令
|
|
232
|
+
3. `change-meta.json`
|
|
196
233
|
- 绑定 roadmap item、primary capability、secondary capabilities、expected spec delta、spec sync status
|
|
197
234
|
- 作为 `cc-do`、`cc-check`、`cc-act` 的 capability 机器真相源
|
|
198
235
|
|
|
199
236
|
以下文件不再是 `cc-plan` 的默认交付物:
|
|
200
237
|
|
|
238
|
+
- `planning/design.md`
|
|
201
239
|
- `CLARIFICATION_REPORT.md`
|
|
202
240
|
- `BRAINSTORM.md`
|
|
203
241
|
- `PLAN_REVIEW.md`
|
|
204
242
|
- `context-package.md`
|
|
205
243
|
- `handoff/resume-index.md`
|
|
206
244
|
|
|
207
|
-
这些信息如果仍然需要,必须并入 `planning/
|
|
245
|
+
这些信息如果仍然需要,必须并入 `planning/tasks.md#Contract Summary` 或 task blocks,而不是再拆新文件。历史 `planning/design.md` 只能作为 legacy fallback 或显式迁移输入。
|
|
246
|
+
|
|
247
|
+
## Progressive Disclosure
|
|
248
|
+
|
|
249
|
+
精简不等于把仍有价值的信息全部删掉。`cc-plan` 的输出必须按“默认必读 -> 条件展开 -> 深层审查”分层,让执行者按需加载上下文。
|
|
250
|
+
|
|
251
|
+
- 渐进式披露必须能被执行到闭环末端。`planning/tasks.md` 的第一条恢复命令是 `cc-devflow query workflow-context --change <changeId> --change-key <changeKey> --data-only --no-trace --compact`;`cc-do`、`cc-check`、`cc-act` 都把结果当成 context index:先读 `packetOnly`、`mustNotForget` 和 `sourceHashes`,必要时打开 `defaultOpen` refs,再按 `openWhen.conditions` 展开 `deepOpen` 文档。短包负责导航,原文负责裁决。
|
|
252
|
+
- 第一屏必须能回答:这次做什么、不做什么、为什么现在做、当前批准状态、下一步读哪个 task。
|
|
253
|
+
- `planning/tasks.md` 顶部必须有 progressive disclosure index:默认读 Plan Meta、Contract Summary、Execution Handoff、Execution Protocol、当前 task block;只有并行冲突、切片争议或质量审查时才展开 surface map、tracer map 和 Task Quality Bar。
|
|
254
|
+
- `planning/task-manifest.json` 只做机器索引和执行图,不复制深层说明。它可以告诉执行者当前任务、依赖、触点、命令和证据,但不能把 PRD、review gate、completion protocol 重新展开一遍。
|
|
255
|
+
- 深层信息必须有明确打开条件;如果一段内容没有打开条件,也没有下游消费方,就删掉。
|
|
256
|
+
- 所有 SKILL 都遵守 `docs/guides/artifact-contract.md`:一个状态只能有一个 owner;其它 artifact 只能引用、投影或派生。
|
|
208
257
|
|
|
209
258
|
## ClaudeCode / Codex Execution Compliance
|
|
210
259
|
|
|
@@ -216,16 +265,16 @@ bash .claude/skills/cc-plan/scripts/next-change-key.sh --prefix REQ --descriptio
|
|
|
216
265
|
2. 当前可做任务由 `planning/task-manifest.json.currentTaskId` 和 ready-task 脚本决定,不得凭聊天记忆挑任务。
|
|
217
266
|
3. 每个 task 必须保留模板字段:Goal、TDD phase、Files、Read first、Verification、Evidence、test seam、mock boundary、green minimality 或 refactor candidates。
|
|
218
267
|
4. 任务完成后必须调用 `mark-task-complete.sh` 同步 `planning/task-manifest.json` 和 `planning/tasks.md`;禁止手工把 checkbox 改成 `[x]`,禁止只改 manifest,禁止完成后不标记。
|
|
219
|
-
5. 如果完成脚本失败,不能手改绕过;先修复缺失 gate、
|
|
268
|
+
5. 如果完成脚本失败,不能手改绕过;先修复缺失 gate、review evidence 或依赖状态,再重跑脚本。
|
|
220
269
|
|
|
221
|
-
生成 `planning/task-manifest.json`
|
|
270
|
+
生成 `planning/task-manifest.json` 时必须保持瘦身边界:
|
|
222
271
|
|
|
223
|
-
- `
|
|
224
|
-
- `
|
|
225
|
-
- `executionProtocol.
|
|
226
|
-
- `
|
|
227
|
-
- `
|
|
228
|
-
-
|
|
272
|
+
- 保留 `currentTaskId`、`tasks[].dependsOn`、`tasks[].parallel`、`tasks[].touches`、`tasks[].run`、`tasks[].checks`、`tasks[].verification`、`tasks[].evidence`、`tasks[].reviews`。
|
|
273
|
+
- 保留 `planningMeta.aiLeverageDecisionLens`、`planningMeta.externalBestPractice`、`planningMeta.decisionQuestions`,因为它们会影响任务能否进入执行。
|
|
274
|
+
- 禁止写入顶层 `status`、`activePhase`、`sourceRoadmap`、`spec`、`executionProtocol`、`planningMeta.requirementBrief`、`planningMeta.ambiguityGate`、`planningMeta.reviewLoop`、`sourceEvidence[]`、`languageAndDecisions`、`executionDiscipline` 和每个 task 的 `completion` 字段。
|
|
275
|
+
- PRD brief、ambiguity gate、bounded review loop、source trust boundary、语言/冲突分类保留在 `planning/tasks.md#Contract Summary`。
|
|
276
|
+
- ready-task 选择和 completion shell 命令保留在 `planning/tasks.md` 的 `Execution Protocol` 和每个 task block。
|
|
277
|
+
- Roadmap progress 和 capability/spec sync 状态由 `change-meta.json` / `devflow/roadmap.json` 持有,`task-manifest.json` 不复制。
|
|
229
278
|
|
|
230
279
|
脚本路径必须支持 ClaudeCode 和 Codex mirror:
|
|
231
280
|
|
|
@@ -243,11 +292,12 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest devflow/changes/<change-key
|
|
|
243
292
|
|
|
244
293
|
1. 先确认当前对象是一个 requirement,而不是整个项目路线图。
|
|
245
294
|
2. 如果来源于 `roadmap`,必须先定位对应的 `RM-ID`,读清 `devflow/ROADMAP.md` / `devflow/BACKLOG.md` 的版本、证据、约束、success signal、next decision、primary capability、expected spec delta。
|
|
246
|
-
3.
|
|
247
|
-
4.
|
|
248
|
-
5.
|
|
249
|
-
6.
|
|
250
|
-
7.
|
|
295
|
+
3. 先分配 canonical `REQ-*` / `FIX-*` change key,并执行 Worktree Branch Contract;detached worktree 必须先挂到 `REQ/<task>` 或 `FIX/<task>`,主分支必须停止。
|
|
296
|
+
4. 如果原始需求包含多个可独立交付的子系统,先拆成独立 `RM` 或 `REQ/FIX` 候选;不要在一个 `cc-plan` 里继续追问实现细节。
|
|
297
|
+
5. 先读当前 change 目录现状。旧目录里如果还有 `BRAINSTORM.md` / `PLAN_REVIEW.md` / `context-package.md` / `planning/design.md`,把有效信息吸收进新的 `planning/tasks.md#Contract Summary`,不要继续增殖。
|
|
298
|
+
6. 先看代码、文档、测试和最近提交,再谈拆任务。
|
|
299
|
+
7. 先读 cc-devflow 原生项目语言和决策上下文:`devflow/specs/INDEX.md`、相关 capability specs、roadmap/backlog handoff、当前或历史 `planning/tasks.md`、legacy `planning/design.md` / `planning/analysis.md`、`change-meta.json`;不存在时静默跳过,但发现术语冲突必须写成 blocked question 或 user challenge。
|
|
300
|
+
8. 先写不做什么,再写做什么。
|
|
251
301
|
|
|
252
302
|
## Context Sweep
|
|
253
303
|
|
|
@@ -256,8 +306,8 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest devflow/changes/<change-key
|
|
|
256
306
|
1. 当前对象对应的 `RM-ID`、roadmap version、roadmap skill version
|
|
257
307
|
2. `devflow/ROADMAP.md` / `devflow/BACKLOG.md` 中该事项的阶段来源、证据、dependencies、success signal、kill signal、next decision、capability links
|
|
258
308
|
3. `devflow/specs/INDEX.md` 与相关 capability specs
|
|
259
|
-
4. 项目语言 / 决策上下文:`devflow/specs/INDEX.md`、相关 capability specs、roadmap/backlog handoff、当前或历史 `planning/design.md` / `planning/analysis.md`、`change-meta.json`
|
|
260
|
-
5. 当前 change 目录已有的 `planning/
|
|
309
|
+
4. 项目语言 / 决策上下文:`devflow/specs/INDEX.md`、相关 capability specs、roadmap/backlog handoff、当前或历史 `planning/tasks.md`、legacy `planning/design.md` / `planning/analysis.md`、`change-meta.json`
|
|
310
|
+
5. 当前 change 目录已有的 `planning/tasks.md`、`planning/task-manifest.json`、`change-meta.json` 与历史 planning 文档 / legacy `planning/design.md`
|
|
261
311
|
6. `CLAUDE.md`、README、相关 docs / specs / 最近提交
|
|
262
312
|
7. 当前代码、测试、发布、迁移、依赖的现实边界
|
|
263
313
|
8. 测试框架真相源:优先读 `CLAUDE.md` / project docs 的测试约定,再用配置文件和目录结构补证。
|
|
@@ -270,7 +320,7 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest devflow/changes/<change-key
|
|
|
270
320
|
15. AI Leverage Decision Lens:方案批准前必须判断真实用户 / operator、当前 workaround、human-vs-agent effort、complete-lake boundary、ocean boundary、scope recommendation,以及 verdict:`boil-lake` / `sharp-wedge` / `needs-evidence` / `pivot`。如果 verdict 是 `boil-lake`,不要把计划缩成 timid MVP;如果 verdict 不是 `boil-lake` 或 `sharp-wedge`,不能生成执行任务。
|
|
271
321
|
16. 外部最佳实践验证 gate:内部证据扫完后,判断外部资料是否可能改变方案、测试策略、分发方式、安全边界或 UX/DX 取舍。可能改变时,先用 `Decision Question Protocol` 询问用户是否允许用泛化关键词外部查找;禁止静默搜索,禁止发送项目名、私有需求、客户名、密钥、日志或专有概念。
|
|
272
322
|
17. 如果用户批准外部查找,只搜索泛化类别词,例如 `<problem space> best practices`、`<artifact type> distribution best practices`、`<testing seam> common mistakes`;优先官方文档、标准、成熟项目文档和可信事故复盘。结果只能作为 `external-evidence`,必须写出 conventional wisdom、repo fit、设计影响和 skipped/confirmed/adjusted/contradicted verdict。
|
|
273
|
-
18. 如果用户拒绝或外部查找没有价值,在 `planning/
|
|
323
|
+
18. 如果用户拒绝或外部查找没有价值,在 `planning/tasks.md#Contract Summary` 和 `task-manifest.json.planningMeta.externalBestPractice` 记录 `declined` 或 `not-needed`,不要把缺失搜索伪装成已验证。
|
|
274
324
|
19. 生成 PRD-grade requirement brief:`Problem Statement` 和 `Solution` 必须从用户视角写;user stories 要覆盖主要 actor、happy path、错误/恢复、权限/边界、operator/DX 路径;implementation / testing decisions 只写 durable 模块责任、接口契约、行为验收和先例,不写容易腐烂的行号或短期代码片段。
|
|
275
325
|
20. 建模接口可测性:新增或改动 seam 时,判断依赖是注入还是内部创建、结果是返回还是副作用、公共操作是否过多、参数是否过宽、边界 adapter 是否是具体 SDK-style 操作而不是一个需要条件分支 mock 的 generic fetcher。
|
|
276
326
|
21. 行为列表按优先级排成 tracer bullets:每次只让一个可观察行为先红再绿。禁止把一批想象中的测试一次性写完,因为 bulk Red 会把计划绑定到还没学到的实现形状。
|
|
@@ -292,6 +342,28 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest devflow/changes/<change-key
|
|
|
292
342
|
|
|
293
343
|
一次只问一个关键未知点。能从代码、文档、测试、git 历史里确认的问题,不问用户。
|
|
294
344
|
|
|
345
|
+
## Deep Planning Funnel
|
|
346
|
+
|
|
347
|
+
`cc-plan` 不允许先产出一版表层计划再指望 `cc-do` 补脑。非 trivial、`clarify-first`、`full-design`,以及任何会新增接口 / 数据字段 / 状态流 / 多文件协作的 `tiny-design`,都必须先跑这个 funnel。每一轮只处理一个会改变设计或任务切分的未知点;能从 repo evidence 确认的就 auto-decide 并写证据,不能确认且会改变下游任务的就用 `Decision Question Protocol` 问用户并 STOP。
|
|
348
|
+
|
|
349
|
+
固定轮次:
|
|
350
|
+
|
|
351
|
+
1. Requirement Reality Round:确认真实用户 / operator、痛点、status quo workaround、最小成功信号、非目标。缺失任一项时,不能推荐实现方案。
|
|
352
|
+
2. System Shape Round:确认现有代码链路、模块归属、状态 / 数据流、复用点、边界外系统、需要保留的不变量。
|
|
353
|
+
3. Interface & Data Contract Round:确认 public interface、调用方、输入输出、关键字段、错误形态、权限 / 边界、向后兼容或迁移要求、字段分类和命名来源。
|
|
354
|
+
4. Abstraction & Encapsulation Round:确认哪些复杂度藏进哪个模块,哪些抽象被拒绝,哪些方法 / 函数属于公共面,哪些必须保持私有,三层以上分支如何通过设计消掉。
|
|
355
|
+
5. Execution Architecture Round:确认 foundation / core logic / integration / polish-tests 阶段的冻结决策、文件职责、耦合风险、失败恢复、分发 / discoverability 边界。
|
|
356
|
+
6. Task Contract Round:确认每条 tracer bullet 的 user story / edge story、Red test name、public seam、Green minimality guard、refactor candidates、AFK/HITL、2-5 分钟任务粒度和 `mark-task-complete.sh` 完成方式。
|
|
357
|
+
7. Final Approval Round:展示已冻结方案和任务合同摘要。用户批准前,不允许写 `planning/tasks.md`、`task-manifest.json` 或 `change-meta.json`。
|
|
358
|
+
|
|
359
|
+
轮次通过标准:
|
|
360
|
+
|
|
361
|
+
- 每轮都必须落到 `planning/tasks.md#Contract Summary` 的 `Deep Planning Funnel` 表里,状态只能是 `confirmed`、`auto-decided`、`blocked` 或 `not-applicable`。
|
|
362
|
+
- `blocked` 不得继续生成任务;只能问一个 blocking question、拆回 roadmap / 多个 REQ/FIX,或记录用户明确接受的 HITL 边界。
|
|
363
|
+
- 如果用户给了“完整方案”,也不能跳过 funnel;改为逐轮审计已有方案,并把通过 / 缺口 / 修正写入 design。
|
|
364
|
+
- 如果连续两轮都暴露新接口、字段、状态机或跨模块决策,自动升级 `full-design`;不要用 `tiny-design` 承载大需求。
|
|
365
|
+
- 第一版设计推荐必须基于前四轮;执行任务必须基于前六轮。少一轮,就是表层计划。
|
|
366
|
+
|
|
295
367
|
## AI Leverage Decision Lens
|
|
296
368
|
|
|
297
369
|
`cc-plan` 的目标不是把所有可能性都写成任务,也不是把 AI 绑成只会做小 MVP。它要把 requirement 压成真实、可验证、充分利用 AI 杠杆的交付路径。方案批准前必须过这个 lens。
|
|
@@ -340,7 +412,7 @@ Verdict 规则:
|
|
|
340
412
|
3. `approach-approval`:需要用户批准 `minimal viable` / `ideal architecture` / `hybrid` 中的推荐方案。
|
|
341
413
|
4. `external-best-practice`:外部最佳实践可能改变设计、验证、分发或风险判断,且不能从 repo evidence 自行闭合。
|
|
342
414
|
5. `taste-or-user-challenge`:推荐方案挑战用户原始方向,或属于品味 / 取舍判断。
|
|
343
|
-
6. `final-design-approval`:`planning/
|
|
415
|
+
6. `final-design-approval`:`planning/tasks.md#Contract Summary` 已闭合 review gate,准备生成执行任务。
|
|
344
416
|
|
|
345
417
|
固定格式:
|
|
346
418
|
|
|
@@ -371,7 +443,7 @@ STOP: wait for the user answer before continuing.
|
|
|
371
443
|
2. 必须有推荐项,且推荐项标注 `(recommended)`;机械选择可以 auto-decide,但必须写进 decision log。
|
|
372
444
|
3. 如果选项不是覆盖度差异,而是方向差异,`Completeness` 写 `different-kind` 并说明为什么不能打分。
|
|
373
445
|
4. 每个选项都要说清 `Good` 与 `Cost/Risk`。没有代价的确认不是选择,应改为执行说明或 final approval。
|
|
374
|
-
5. 用户回答后,把结果写入 `planning/
|
|
446
|
+
5. 用户回答后,把结果写入 `planning/tasks.md#Contract Summary` 的 `Decision Questions`,并同步到 `task-manifest.json.planningMeta.decisionQuestions`。聊天不是真相源。
|
|
375
447
|
6. 如果连续两个问题都被用户纠正为“你应该能自己判断”,停止追问,回到 evidence sweep,修正问题选择标准。
|
|
376
448
|
|
|
377
449
|
## External Best-Practice Validation
|
|
@@ -403,24 +475,26 @@ STOP: wait for the user answer before continuing.
|
|
|
403
475
|
## Session Protocol
|
|
404
476
|
|
|
405
477
|
1. 先探索上下文,再写结论。
|
|
406
|
-
2.
|
|
407
|
-
3.
|
|
408
|
-
4.
|
|
478
|
+
2. 先跑 Deep Planning Funnel;第一版设计推荐必须基于前四轮,任务合同必须基于前六轮。
|
|
479
|
+
3. 澄清时一次只问一个关键问题,不做问题轰炸。
|
|
480
|
+
4. 先写问题、目标、约束、非目标、成功标准,再写方案。
|
|
481
|
+
5. 如果方向仍不稳,给 2-3 个方案,带 trade-off 和推荐,但这些内容都写进 `planning/tasks.md#Contract Summary`。
|
|
409
482
|
- `full-design` 的方案必须至少包含 `minimal viable` 和 `ideal architecture` 两个角色。
|
|
410
483
|
- 两个角色权重相等;小方案不是默认答案,理想架构也不是默认过度设计。
|
|
411
484
|
- 只有一个方案成立时,必须写清其它方案为何被排除。
|
|
412
485
|
- 用户批准必须走 `Decision Question Protocol`,不能用自由问句代替。
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
486
|
+
6. 推荐方案没有得到用户明确批准前,不允许生成 `planning/tasks.md`。
|
|
487
|
+
7. 批准后先判断这次用 `tiny-design` 还是 `full-design`。
|
|
488
|
+
8. 把批准后的唯一方案冻结进 `planning/tasks.md#Contract Summary`。
|
|
489
|
+
9. 在 `planning/tasks.md#Contract Summary` 内完成 review loop 与 final gate,不再额外拆出 `PLAN_REVIEW.md`。
|
|
490
|
+
10. 只有 design gate 真正通过,才能写 `planning/tasks.md`、`planning/task-manifest.json` 和 `change-meta.json`。
|
|
491
|
+
11. 写任务前,把 Task Contract Round 的每条结论同步到 `planning/tasks.md`、`tasks[].contract` 和 `tasks[].testSeam`;完整 funnel 叙事留在 `planning/tasks.md#Contract Summary`,没有落盘的对话结论不算计划事实。
|
|
492
|
+
12. 退出前执行 Roadmap Sync Gate:用 `locate-roadmap-item.sh` 定位 `RM-ID`,再用 `sync-roadmap-progress.sh` 回写 `status`、`req`、`progress`、capability 和 spec delta;没有源 RM 时必须在 `planning/tasks.md#Contract Summary` 与 `change-meta.json.roadmapSync` 写明 `no-source-rm`。
|
|
493
|
+
13. 计划完成后,下一步唯一答案是 `cc-do`。
|
|
420
494
|
|
|
421
495
|
## Engineering Review Gate
|
|
422
496
|
|
|
423
|
-
冻结设计前,必须在 `planning/
|
|
497
|
+
冻结设计前,必须在 `planning/tasks.md#Contract Summary` 内完成一次轻量工程审查:
|
|
424
498
|
|
|
425
499
|
1. Existing leverage map:每个子问题先映射到现有代码、脚本、spec、模板或测试,避免重复造轮子。
|
|
426
500
|
2. Scope challenge:超过 8 个文件、2 个新 service/class、或跨模块连锁时,必须解释为什么不是过度设计。
|
|
@@ -465,14 +539,14 @@ STOP: wait for the user answer before continuing.
|
|
|
465
539
|
3. 每个可观察行为变更默认拆成 `Red -> Green -> Refactor`:
|
|
466
540
|
- Red:先写 `[TEST]` 任务,目标是用最小失败测试证明目标行为缺失。
|
|
467
541
|
- Green:再写 `[IMPL]` 任务,只做让对应红灯转绿的最小生产实现,不预先铺未来测试还没要求的 API、状态或分支。
|
|
468
|
-
- Refactor:最后写 `[REFACTOR]` 或在实现任务中明确 refactor
|
|
542
|
+
- Refactor:最后写 `[REFACTOR]` 或在实现任务中明确 refactor gate,说明何时清理重复、长方法、浅模块、feature envy、primitive obsession、命名和三层以上分支。
|
|
469
543
|
4. 禁止水平切片:不能先写一批测试、再写一批实现。计划必须按 tracer bullet 垂直切片排列:一个行为红灯 -> 最小实现转绿 -> 必要重构,然后再进入下一个行为。
|
|
470
544
|
5. `planning/tasks.md` 不能把测试和实现塞进同一个 task。一个 task 同时写“实现并测试”就是计划失败。
|
|
471
545
|
6. `planning/tasks.md` 的每个 `[TEST]` task 必须写清 test name、one logical behavior、test seam、public verification path、behavior asserted、allowed mocks、feedback loop type、implementation-detail risk。
|
|
472
546
|
7. `planning/task-manifest.json` 必须让 `cc-do` 看出每个任务的 `tddPhase`、依赖、测试质量边界和证据:`red` 任务产出 failing output,`green` 任务产出 passing output 和 minimality guard,`refactor` 任务产出候选坏味道与重跑后的 green evidence。
|
|
473
547
|
8. Test diagram 要同时覆盖 code paths 和 user flows。每条路径标注 `unit` / `integration` / `e2e` / `eval`,并给现有测试质量分级:`strong`、`happy-path-only`、`smoke-only`、`missing`。
|
|
474
548
|
9. 回归测试是硬门槛。只要计划修改既有行为且现有测试没有覆盖,就必须把 regression test 写进 `planning/tasks.md`,不能 defer,不能问用户要不要跳过。
|
|
475
|
-
10. 只有纯文档、纯配置、纯生成文件、throwaway prototype 可以例外。例外必须写进 `planning/
|
|
549
|
+
10. 只有纯文档、纯配置、纯生成文件、throwaway prototype 可以例外。例外必须写进 `planning/tasks.md` 的 `TDD exceptions`,包含原因、风险、替代验证命令和后续补证入口。
|
|
476
550
|
11. 并行只允许发生在已经满足上游 Red/Green 依赖之后。两个 `[P]` 任务如果共享同一个红灯或同一组 touched files,就不能并行。
|
|
477
551
|
12. 如果当前需求找不到第一条失败测试,先把它写成 blocked question 或 exploratory spike,不准伪装成可执行实现任务。
|
|
478
552
|
13. 每条垂直切片必须标注 `AFK` 或 `HITL`:`AFK` 代表执行者可在现有合同下独立完成并验证;`HITL` 代表仍需要用户判断、外部权限、设计取舍或人工验收。默认拆到可 `AFK`,只有证据证明必须人工参与时才保留 `HITL`。
|
|
@@ -480,7 +554,7 @@ STOP: wait for the user answer before continuing.
|
|
|
480
554
|
|
|
481
555
|
## Design Modes
|
|
482
556
|
|
|
483
|
-
`cc-plan` 永远保留 `planning/
|
|
557
|
+
`cc-plan` 永远保留 `planning/tasks.md#Contract Summary`,但允许两种密度:
|
|
484
558
|
|
|
485
559
|
- `tiny-design`:超小需求的冻结设计卡片
|
|
486
560
|
- `full-design`:需要完整架构说明的正式设计
|
|
@@ -503,7 +577,7 @@ STOP: wait for the user answer before continuing.
|
|
|
503
577
|
|
|
504
578
|
## Review Loop
|
|
505
579
|
|
|
506
|
-
`planning/
|
|
580
|
+
`planning/tasks.md#Contract Summary` 内至少完成这些 review 结论:
|
|
507
581
|
|
|
508
582
|
1. Placeholder scan:不能留下 TBD / TODO / 之后再补
|
|
509
583
|
2. Consistency scan:目标、方案、任务、验证口径不能互相打架
|
|
@@ -532,20 +606,22 @@ STOP: wait for the user answer before continuing.
|
|
|
532
606
|
25. Roadmap sync scan:`change-meta.json.sourceRoadmap`、`devflow/roadmap.json`、`devflow/ROADMAP.md` 和 optional `devflow/BACKLOG.md` 是否同一套 RM / REQ / progress 现实。
|
|
533
607
|
26. Final gate:明确 auto-decided items、taste decisions、user challenges 和最终 recommendation
|
|
534
608
|
|
|
535
|
-
如果有 UI / interaction 明显范围,在 `planning/
|
|
536
|
-
如果有 API / CLI / developer-facing / operator-facing scope,在 `planning/
|
|
609
|
+
如果有 UI / interaction 明显范围,在 `planning/tasks.md#Contract Summary` 里补 design completeness score 和状态覆盖表。
|
|
610
|
+
如果有 API / CLI / developer-facing / operator-facing scope,在 `planning/tasks.md#Contract Summary` 里补 target persona、time to first value、magic moment 和 DX / operator review 结论。
|
|
537
611
|
|
|
538
612
|
## Good Output
|
|
539
613
|
|
|
540
|
-
- `planning/
|
|
541
|
-
- `planning/
|
|
542
|
-
- `planning/
|
|
543
|
-
- `planning/
|
|
544
|
-
- `planning/
|
|
614
|
+
- `planning/tasks.md#Contract Summary` 一份就讲清:为什么做、做什么、不做什么、备选方案、批准方案、设计模式、风险、review gate、执行边界
|
|
615
|
+
- `planning/tasks.md#Contract Summary` 必须包含 Deep Planning Funnel:requirement reality、system shape、interface/data contract、abstraction/encapsulation、execution architecture、task contract、final approval;任何会影响 `cc-do` 的确认都必须落盘
|
|
616
|
+
- `planning/tasks.md#Contract Summary` 必须包含 PRD-grade requirement brief:用户视角的问题和方案、覆盖完整行为面的 user stories、durable implementation decisions、behavior-first testing decisions、out-of-scope 和 further notes
|
|
617
|
+
- `planning/tasks.md#Contract Summary` 必须使用项目 canonical language,记录相关 capability spec / roadmap decision 冲突,并说明新增接口如何保持小接口深模块
|
|
618
|
+
- `planning/tasks.md#Contract Summary` 必须说明接口为什么可测:依赖注入、可断言返回、系统边界 adapter 形状、以及为什么测试不需要 mock 内部协作者
|
|
619
|
+
- `planning/tasks.md#Contract Summary` 必须暴露 assumptions preview、ambiguity gate、source trust boundary、external best-practice validation、external conflict buckets 和 bounded review loop;这些是阻止模糊需求进入执行期的合同,不是可选美化项
|
|
545
620
|
- `planning/tasks.md` 只保留能直接执行的任务和 handoff,不再承载重复背景介绍;行为变更默认拆成 tracer bullet 形式的 `[TEST] -> [IMPL] -> [REFACTOR]`,且 Red task 明确 spec-style test name、单一行为、公共 seam、行为断言、mock 边界和反馈循环
|
|
546
621
|
- `planning/tasks.md` 必须把 `assets/TASKS_TEMPLATE.md` 的任务字段实例化到每个 task;不能只生成标题清单,也不能让 ClaudeCode / Codex 靠猜测补字段
|
|
622
|
+
- `planning/tasks.md` 的每个 task 必须携带 task contract:source funnel rounds、user story / edge story、文件职责、方法或接口、关键字段、输入输出、失败路径、do-not-re-decide、artifact updates、验证命令、完成脚本;否则前面的追问等于没问
|
|
547
623
|
- `planning/tasks.md` 必须写出任务完成脚本,要求执行者完成每个 task 后调用 `mark-task-complete.sh`,禁止手动勾选或漏标
|
|
548
|
-
- `planning/task-manifest.json` 是 `cc-do`
|
|
624
|
+
- `planning/task-manifest.json` 是 `cc-do` 的机器真相源,只写执行图和必要 gate:版本链、`currentTaskId`、`dependsOn`、`parallel`、触点、run/check/verification/evidence、review 状态、`tddPhase`、`verticalSlice`、task contract、test seam、feedback loop,以及会阻塞执行的 AI leverage / external-best-practice / decision-question 结果;roadmap/spec 状态归 `change-meta.json` 和 `devflow/roadmap.json`,PRD brief、deep planning funnel、ambiguity、review loop、source trust、completion 命令留在 `planning/tasks.md`
|
|
549
625
|
- `change-meta.json` 是 capability 真相源,要写清这次 change 准备如何改变长期 spec
|
|
550
626
|
- roadmap sync 不是聊天提醒:如果 source RM 存在,必须更新 `devflow/roadmap.json` 并重新生成 `devflow/ROADMAP.md` / `devflow/BACKLOG.md`;如果不存在,必须记录 no-op reason
|
|
551
627
|
- 看完第一屏,执行者就知道这次属于 `tiny-design` 还是 `full-design`,以及为什么
|
|
@@ -553,10 +629,10 @@ STOP: wait for the user answer before continuing.
|
|
|
553
629
|
## Bundled Resources
|
|
554
630
|
|
|
555
631
|
- 变更记录:`CHANGELOG.md`
|
|
556
|
-
- 模板:`assets/DESIGN_TEMPLATE.md`
|
|
557
|
-
- 模板:`assets/TINY_DESIGN_TEMPLATE.md`
|
|
558
632
|
- 模板:`assets/TASKS_TEMPLATE.md`
|
|
559
633
|
- 模板:`assets/TASK_MANIFEST_TEMPLATE.json`
|
|
634
|
+
- legacy 模板:`assets/legacy/DESIGN_TEMPLATE.md`
|
|
635
|
+
- legacy 模板:`assets/legacy/TINY_DESIGN_TEMPLATE.md`
|
|
560
636
|
- 任务解析:`scripts/parse-task-dependencies.js`
|
|
561
637
|
- 范围检查:`scripts/validate-scope.sh`
|
|
562
638
|
- 下一编号分配:`scripts/next-change-key.sh`
|
|
@@ -570,25 +646,26 @@ STOP: wait for the user answer before continuing.
|
|
|
570
646
|
1. 没有证据时写 assumption,不准冒充事实。
|
|
571
647
|
2. 一次只推进一个关键未知点。
|
|
572
648
|
3. 旧文档里的有效信息要吸收,不要复制粘贴出新文件。
|
|
573
|
-
4. PRD 思路必须吸收进 `planning/
|
|
574
|
-
5. `planning/
|
|
649
|
+
4. PRD 思路必须吸收进 `planning/tasks.md#Contract Summary`,不要产出独立 `PRD.md`;除非用户明确要求发布到外部 issue tracker。
|
|
650
|
+
5. `planning/tasks.md` 必须足够让 `cc-do` 在不继承当前会话的前提下继续工作。
|
|
575
651
|
6. 版本、来源、冻结决策必须可追踪。
|
|
576
652
|
7. 任务少而硬,胜过任务多而虚。
|
|
577
653
|
8. 具体计划默认测试先行;没有 Red/Green/Refactor 或 TDD exception,就不能进入 `cc-do`。
|
|
578
654
|
9. 任务必须是端到端可验证的垂直切片;除非是纯重构,否则不要按“先改模型、再改服务、最后改 UI”的水平层次拆。
|
|
579
655
|
10. 任务一旦超过 2-5 分钟粒度就继续拆,直到可以稳定交给执行者。
|
|
580
|
-
11. 三层以上判断说明设计还没压平,应回到 `planning/
|
|
656
|
+
11. 三层以上判断说明设计还没压平,应回到 `planning/tasks.md#Contract Summary` 继续简化。
|
|
581
657
|
12. `tiny-design` 不得被当成“免审批”;只要要写任务,就必须先有已批准的设计卡片。
|
|
582
658
|
13. Roadmap 相关文件以 `devflow/roadmap.json` 为真相源,`devflow/ROADMAP.md` / `devflow/BACKLOG.md` 只是投影;不要再写旧式 `devflow/roadmap/*` 路径。
|
|
659
|
+
14. 一个 `REQ` / `FIX` 对应一个 canonical work branch;新 planning 不在 `main` 上落盘,不把 detached worktree 留到 `cc-act` 才补救。
|
|
583
660
|
|
|
584
661
|
## Exit Criteria
|
|
585
662
|
|
|
586
663
|
- 范围边界清楚
|
|
587
|
-
- 上游 roadmap handoff 已被显式装进 `planning/
|
|
664
|
+
- 上游 roadmap handoff 已被显式装进 `planning/tasks.md#Contract Summary`
|
|
588
665
|
- Roadmap Sync Gate 已闭合:source RM 已回写为当前 `REQ/FIX` 的 planning-ready 状态,或 no-op reason 已落盘
|
|
589
666
|
- 成功标准可验证
|
|
590
667
|
- 推荐方案已被批准
|
|
591
|
-
- review gate 已在 `planning/
|
|
668
|
+
- review gate 已在 `planning/tasks.md#Contract Summary` 里闭合
|
|
592
669
|
- 任务顺序没有歧义
|
|
593
670
|
- 测试先行顺序没有歧义,TDD exception 已显式写清
|
|
594
671
|
- `cc-do` 不需要再靠会话记忆恢复背景
|