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
package/README.zh-CN.md
CHANGED
|
@@ -11,16 +11,11 @@
|
|
|
11
11
|
|
|
12
12
|
CC-DevFlow 是一个给 Agent 编程时代准备的小而明确的工作流系统。它先用一个 roadmap 入口确定方向,再让每个变更进入「新需求闭环」或「Bug 调查闭环」,最后必须经过验证和交付收口。
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
cc-roadmap
|
|
16
|
-
|
|
17
|
-
PDCA: cc-plan -> [cc-review] -> cc-do -> [cc-review] -> cc-check -> cc-act
|
|
18
|
-
IDCA: cc-investigate -> [cc-review] -> cc-do -> [cc-review] -> cc-check -> cc-act
|
|
19
|
-
```
|
|
14
|
+

|
|
20
15
|
|
|
21
16
|
## 为什么用 cc-devflow
|
|
22
17
|
|
|
23
|
-
-
|
|
18
|
+
- **公开入口很小**:核心 workflow skill、PR Harness 链路、1 个可选深度 review skill,加一个负责安装和平台适配的 CLI。
|
|
24
19
|
- **先证据后完成**:实现之后必须经过验证证据,才能进入 ship 或 handoff。
|
|
25
20
|
- **Skill-first 分发**:公开契约写在 `.claude/skills/<skill>/SKILL.md` 和 `PLAYBOOK.md`,不依赖隐藏运行时语义。
|
|
26
21
|
- **多平台产物**:一次安装,再生成 Codex、Cursor、Qwen、Antigravity 等 Agent 环境需要的输出。
|
|
@@ -56,17 +51,57 @@ npx cc-devflow@latest adapt --cwd /path/to/your/project --platform antigravity
|
|
|
56
51
|
npx cc-devflow@latest adapt --cwd /path/to/your/project --all
|
|
57
52
|
```
|
|
58
53
|
|
|
59
|
-
安装完成后,直接让 Agent 使用这些 workflow skill。产品方向先走 `cc-roadmap
|
|
54
|
+
安装完成后,直接让 Agent 使用这些 workflow skill。产品方向先走 `cc-roadmap`。需要自动选择下一步时走 `cc-next`;选中目标后用 `cc-dev` 在当前 worktree 内自动跑 PDCA 或 IDCA,直到远程 PR 打开;PR 用单独会话跑 `cc-pr-review`;review 后用单独会话跑 `cc-pr-land` 合并并证明 main parity。手动核心链路仍然是:新需求走 `cc-plan`,Bug 和 regression 走 `cc-investigate`;复杂计划或根因合同冻结后可以先接 `cc-review`,再进入 `cc-do`;实现复杂时还可以再接一次实现 `cc-review`,最后进入 `cc-check` 和 `cc-act`。
|
|
55
|
+
|
|
56
|
+
## 流程图
|
|
57
|
+
|
|
58
|
+
```text
|
|
59
|
+
cc-roadmap
|
|
60
|
+
|
|
61
|
+
PR Harness: cc-next -> cc-dev -> cc-pr-review -> cc-pr-land
|
|
62
|
+
|
|
63
|
+
PDCA: cc-plan -> [cc-review] -> cc-do -> [cc-review] -> cc-check -> cc-act
|
|
64
|
+
IDCA: cc-investigate -> [cc-review] -> cc-do -> [cc-review] -> cc-check -> cc-act
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
```mermaid
|
|
68
|
+
flowchart TD
|
|
69
|
+
Roadmap["cc-roadmap\n产品方向和阶段真相"] --> Next["cc-next\n选择下一个 Goal Packet"]
|
|
70
|
+
Next --> Dev["cc-dev\n当前 worktree 自动推进到 PR"]
|
|
71
|
+
|
|
72
|
+
Dev --> Route{"路线"}
|
|
73
|
+
Route -->|新需求或变更| Plan["cc-plan\n冻结范围和任务"]
|
|
74
|
+
Route -->|Bug 或回归| Investigate["cc-investigate\n冻结根因和修复边界"]
|
|
75
|
+
|
|
76
|
+
Plan --> PlanReview["cc-review\n可选方案 Review"]
|
|
77
|
+
Investigate --> PlanReview
|
|
78
|
+
PlanReview --> Do["cc-do\n实现并留下证据"]
|
|
79
|
+
Plan --> Do
|
|
80
|
+
Investigate --> Do
|
|
81
|
+
|
|
82
|
+
Do --> ImplReview["cc-review\n可选实现 Review"]
|
|
83
|
+
ImplReview --> Check["cc-check\n新鲜验证裁决"]
|
|
84
|
+
Do --> Check
|
|
85
|
+
Check --> Act["cc-act\n创建或更新远程 PR"]
|
|
86
|
+
Act --> PRReview["cc-pr-review\n单独会话 Review PR"]
|
|
87
|
+
PRReview --> PRLand["cc-pr-land\nRebase 合并并证明 main parity"]
|
|
88
|
+
PRReview -->|需要修复| Dev
|
|
89
|
+
PRLand --> Main["main\n本地和远程一致"]
|
|
90
|
+
```
|
|
60
91
|
|
|
61
92
|
## Workflow Skill
|
|
62
93
|
|
|
63
94
|
| Skill | 什么时候用 | 主要产物 |
|
|
64
95
|
| --- | --- | --- |
|
|
65
96
|
| `cc-roadmap` | 需要产品方向、阶段范围或 backlog 顺序 | `devflow/roadmap.json`、`devflow/ROADMAP.md`、deprecated `devflow/BACKLOG.md` |
|
|
97
|
+
| `cc-next` | 需要从 roadmap、未归档本地 change 和 issue truth 里选下一个 ready 目标 | 交给 `cc-dev` 的 Goal Packet |
|
|
98
|
+
| `cc-dev` | 已选目标要在当前 worktree 内自动推进到远程 PR | PDCA/IDCA 产物加 PR 或 handoff |
|
|
66
99
|
| `cc-plan` | 新功能或变更需要澄清范围、设计方案、冻结任务 | `planning/design.md`、`planning/tasks.md`、`task-manifest.json` |
|
|
67
100
|
| `cc-investigate` | Bug 需要症状、复现、根因和修复边界 | `planning/analysis.md`、`planning/tasks.md`、`task-manifest.json` |
|
|
68
101
|
| `cc-do` | 已计划或已调查的任务需要实现 | 代码、测试、checkpoint、scratch runtime |
|
|
69
102
|
| `cc-review` | 复杂方案、调查根因或 diff 需要在实现前或验证前做可选深度多轮 Review | `cc-review-report.md`,可选 `cc-review-findings.json` |
|
|
103
|
+
| `cc-pr-review` | 远程 PR 需要单独会话做合并前 Review | PR review packet、findings 和 landing verdict |
|
|
104
|
+
| `cc-pr-land` | 已 Review PR 需要 rebase-first 合并到 main 并证明 parity | 已集成 main 和本地 / 远程一致性证据 |
|
|
70
105
|
| `cc-check` | 工作需要新鲜验证证据 | `report-card.json` |
|
|
71
106
|
| `cc-act` | 已验证工作需要 PR、本地 handoff、release note 或 closeout | 唯一最终 handoff 文件 |
|
|
72
107
|
|
|
@@ -83,7 +118,7 @@ Canonical language 和 durable decisions 只收敛到 cc-devflow 原生真相源
|
|
|
83
118
|
|
|
84
119
|
`cc-plan` 会在 `cc-do` 开始前冻结更多实现决策。非 trivial 计划需要比较 minimal viable 和 ideal architecture,full-design 需要包含 implementation decision horizon 和 error/rescue map;测试计划要记录测试框架证据、public test seam、spec-style test name、public verification path、behavior assertion、mock boundary、覆盖质量、强制 regression test、interface depth、Green minimality guard、refactor candidates 和 vertical tracer-bullet slices。交接前,`cc-plan` 和 `cc-investigate` 还会校准 source roadmap item,让 RM 状态、REQ/FIX 绑定、progress 和 spec diagnosis 不再漂移。
|
|
85
120
|
|
|
86
|
-
`cc-review` 是可选的深度 Review,不替代 `cc-check`。它可以接在 `cc-plan` / `cc-investigate` 后审冻结的计划或根因合同,也可以接在 `cc-do`
|
|
121
|
+
`cc-review` 是可选的深度 Review,不替代 `cc-check`。它可以接在 `cc-plan` / `cc-investigate` 后审冻结的计划或根因合同,也可以接在 `cc-do` 后审实现。它先读取上次 Review 记录和当前 git/artifact delta,写出 Review 计划,再逐节点检查并写 ledger。宿主支持 subAgent 时,选中的节点可以派给独立只读 reviewer,让 strategy、engineering、design、DX、坏味道、测试和运行时审查不共享同一个被污染的上下文。复杂实现 Review 可以把 intent/regression、security/privacy、performance/reliability、contracts/coverage 拆成独立风险 lane,再由主线程聚合和筛掉弱 findings。计划 Review 通过渐进式 references 借鉴 strategy / design / engineering / DX 方法;实现 Review 检查 diff 范围、代码坏味道、测试、UI/runtime 行为、Browser/Computer Use 证据和日志。Finding 回到 `cc-plan` 或 `cc-do`;实现 Review 干净后再进入 `cc-check`。
|
|
87
122
|
|
|
88
123
|
## 验证与交付门禁
|
|
89
124
|
|
|
@@ -120,10 +155,14 @@ node bin/cc-devflow-cli.js adapt --cwd /tmp/example-project --platform codex
|
|
|
120
155
|
|
|
121
156
|
```bash
|
|
122
157
|
npx skills add https://github.com/Dimon94/cc-devflow --skill cc-roadmap
|
|
158
|
+
npx skills add https://github.com/Dimon94/cc-devflow --skill cc-next
|
|
159
|
+
npx skills add https://github.com/Dimon94/cc-devflow --skill cc-dev
|
|
123
160
|
npx skills add https://github.com/Dimon94/cc-devflow --skill cc-plan
|
|
124
161
|
npx skills add https://github.com/Dimon94/cc-devflow --skill cc-investigate
|
|
125
162
|
npx skills add https://github.com/Dimon94/cc-devflow --skill cc-do
|
|
126
163
|
npx skills add https://github.com/Dimon94/cc-devflow --skill cc-review
|
|
164
|
+
npx skills add https://github.com/Dimon94/cc-devflow --skill cc-pr-review
|
|
165
|
+
npx skills add https://github.com/Dimon94/cc-devflow --skill cc-pr-land
|
|
127
166
|
npx skills add https://github.com/Dimon94/cc-devflow --skill cc-check
|
|
128
167
|
npx skills add https://github.com/Dimon94/cc-devflow --skill cc-act
|
|
129
168
|
```
|
|
@@ -186,10 +225,14 @@ npx cc-devflow config doctor --cwd /path/to/your/project
|
|
|
186
225
|
当前分发目录:
|
|
187
226
|
|
|
188
227
|
- `.claude/skills/cc-roadmap/`
|
|
228
|
+
- `.claude/skills/cc-next/`
|
|
229
|
+
- `.claude/skills/cc-dev/`
|
|
189
230
|
- `.claude/skills/cc-plan/`
|
|
190
231
|
- `.claude/skills/cc-investigate/`
|
|
191
232
|
- `.claude/skills/cc-do/`
|
|
192
233
|
- `.claude/skills/cc-review/`
|
|
234
|
+
- `.claude/skills/cc-pr-review/`
|
|
235
|
+
- `.claude/skills/cc-pr-land/`
|
|
193
236
|
- `.claude/skills/cc-check/`
|
|
194
237
|
- `.claude/skills/cc-act/`
|
|
195
238
|
- `.claude/skills/cc-spec-init/`
|
|
@@ -223,6 +266,14 @@ npm run verify:publish
|
|
|
223
266
|
|
|
224
267
|
主要贡献说明见 [`CONTRIBUTING.zh-CN.md`](./CONTRIBUTING.zh-CN.md),里面包含公开入口规则、本地 CLI 冒烟验证、文档规则和 PR 期望。
|
|
225
268
|
|
|
269
|
+
## 讨论交流
|
|
270
|
+
|
|
271
|
+
欢迎扫码加入 cc-devflow 交流 1 群,反馈问题、交流使用体验或提出新功能建议。
|
|
272
|
+
|
|
273
|
+
<img src="./docs/assets/wechat-group-qr.jpg" alt="cc-devflow 交流 1 群微信群二维码" width="320" />
|
|
274
|
+
|
|
275
|
+
如果二维码过期,请在 issue 中提醒维护者更新。
|
|
276
|
+
|
|
226
277
|
## 社区与贡献
|
|
227
278
|
|
|
228
279
|
- 如果这个工作流对你有用,可以给项目一个 Star:[GitHub stars](https://github.com/Dimon94/cc-devflow/stargazers)
|
|
@@ -1,19 +1,27 @@
|
|
|
1
1
|
{
|
|
2
2
|
"publicSkills": [
|
|
3
3
|
"cc-roadmap",
|
|
4
|
+
"cc-next",
|
|
5
|
+
"cc-dev",
|
|
4
6
|
"cc-plan",
|
|
5
7
|
"cc-investigate",
|
|
6
8
|
"cc-do",
|
|
7
9
|
"cc-review",
|
|
10
|
+
"cc-pr-review",
|
|
11
|
+
"cc-pr-land",
|
|
8
12
|
"cc-check",
|
|
9
13
|
"cc-act"
|
|
10
14
|
],
|
|
11
15
|
"distributedSkills": [
|
|
12
16
|
"cc-roadmap",
|
|
17
|
+
"cc-next",
|
|
18
|
+
"cc-dev",
|
|
13
19
|
"cc-plan",
|
|
14
20
|
"cc-investigate",
|
|
15
21
|
"cc-do",
|
|
16
22
|
"cc-review",
|
|
23
|
+
"cc-pr-review",
|
|
24
|
+
"cc-pr-land",
|
|
17
25
|
"cc-check",
|
|
18
26
|
"cc-act",
|
|
19
27
|
"cc-spec-init",
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1600" height="1000" viewBox="0 0 1600 1000" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">CC-DevFlow PR Harness workflow</title>
|
|
3
|
+
<desc id="desc">A visual workflow diagram showing roadmap selection, goal-driven development, PDCA and IDCA loops, PR review, and PR landing with main parity.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="bg" x1="0" y1="0" x2="1" y2="1">
|
|
6
|
+
<stop offset="0" stop-color="#07111f"/>
|
|
7
|
+
<stop offset="0.48" stop-color="#0d2638"/>
|
|
8
|
+
<stop offset="1" stop-color="#102414"/>
|
|
9
|
+
</linearGradient>
|
|
10
|
+
<linearGradient id="blue" x1="0" y1="0" x2="1" y2="1">
|
|
11
|
+
<stop offset="0" stop-color="#4cc9f0"/>
|
|
12
|
+
<stop offset="1" stop-color="#4361ee"/>
|
|
13
|
+
</linearGradient>
|
|
14
|
+
<linearGradient id="green" x1="0" y1="0" x2="1" y2="1">
|
|
15
|
+
<stop offset="0" stop-color="#b8f05a"/>
|
|
16
|
+
<stop offset="1" stop-color="#2fbf71"/>
|
|
17
|
+
</linearGradient>
|
|
18
|
+
<linearGradient id="amber" x1="0" y1="0" x2="1" y2="1">
|
|
19
|
+
<stop offset="0" stop-color="#ffd166"/>
|
|
20
|
+
<stop offset="1" stop-color="#ef8354"/>
|
|
21
|
+
</linearGradient>
|
|
22
|
+
<linearGradient id="violet" x1="0" y1="0" x2="1" y2="1">
|
|
23
|
+
<stop offset="0" stop-color="#d0a2ff"/>
|
|
24
|
+
<stop offset="1" stop-color="#7b2cbf"/>
|
|
25
|
+
</linearGradient>
|
|
26
|
+
<filter id="shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
27
|
+
<feDropShadow dx="0" dy="16" stdDeviation="16" flood-color="#000000" flood-opacity="0.35"/>
|
|
28
|
+
</filter>
|
|
29
|
+
<marker id="arrow" markerWidth="16" markerHeight="16" refX="12" refY="8" orient="auto" markerUnits="strokeWidth">
|
|
30
|
+
<path d="M2,2 L14,8 L2,14 Z" fill="#d7e3f4"/>
|
|
31
|
+
</marker>
|
|
32
|
+
<style>
|
|
33
|
+
.title{font:800 62px Inter,Arial,sans-serif;fill:#f8fbff;letter-spacing:0}
|
|
34
|
+
.subtitle{font:500 26px Inter,Arial,sans-serif;fill:#bdd0e8}
|
|
35
|
+
.label{font:800 26px Inter,Arial,sans-serif;fill:#f8fbff;letter-spacing:0}
|
|
36
|
+
.small{font:500 18px Inter,Arial,sans-serif;fill:#d7e3f4}
|
|
37
|
+
.micro{font:700 15px Inter,Arial,sans-serif;fill:#0a1421;letter-spacing:.5px}
|
|
38
|
+
.note{font:600 18px Inter,Arial,sans-serif;fill:#f8fbff}
|
|
39
|
+
.muted{font:500 16px Inter,Arial,sans-serif;fill:#9fb4cd}
|
|
40
|
+
.card{fill:#102033;stroke:#27445f;stroke-width:2;filter:url(#shadow)}
|
|
41
|
+
.lane{fill:#0b1728;stroke:#27445f;stroke-width:2}
|
|
42
|
+
.line{fill:none;stroke:#d7e3f4;stroke-width:4;marker-end:url(#arrow)}
|
|
43
|
+
.thin{fill:none;stroke:#6c819b;stroke-width:3;stroke-dasharray:8 10;marker-end:url(#arrow)}
|
|
44
|
+
</style>
|
|
45
|
+
</defs>
|
|
46
|
+
<rect width="1600" height="1000" fill="url(#bg)"/>
|
|
47
|
+
<circle cx="140" cy="125" r="220" fill="#2247ff" opacity="0.12"/>
|
|
48
|
+
<circle cx="1450" cy="820" r="260" fill="#2fbf71" opacity="0.13"/>
|
|
49
|
+
|
|
50
|
+
<text x="80" y="96" class="title">CC-DevFlow PR Harness</text>
|
|
51
|
+
<text x="84" y="136" class="subtitle">Roadmap-aware goal autopilot: pick next work, drive to PR, review separately, land with main parity.</text>
|
|
52
|
+
|
|
53
|
+
<rect x="80" y="190" width="1440" height="150" rx="18" class="lane"/>
|
|
54
|
+
<text x="110" y="225" class="note">Navigation layer</text>
|
|
55
|
+
<g transform="translate(130 250)">
|
|
56
|
+
<rect width="260" height="70" rx="16" fill="url(#blue)"/>
|
|
57
|
+
<text x="24" y="32" class="label">cc-roadmap</text>
|
|
58
|
+
<text x="24" y="56" class="small">product order and staged truth</text>
|
|
59
|
+
</g>
|
|
60
|
+
<g transform="translate(520 250)">
|
|
61
|
+
<rect width="260" height="70" rx="16" fill="url(#green)"/>
|
|
62
|
+
<text x="24" y="32" class="label">cc-next</text>
|
|
63
|
+
<text x="24" y="56" class="small">choose one ready Goal Packet</text>
|
|
64
|
+
</g>
|
|
65
|
+
<g transform="translate(910 250)">
|
|
66
|
+
<rect width="300" height="70" rx="16" fill="url(#amber)"/>
|
|
67
|
+
<text x="24" y="32" class="label">cc-dev</text>
|
|
68
|
+
<text x="24" y="56" class="small">current worktree to remote PR</text>
|
|
69
|
+
</g>
|
|
70
|
+
<path class="line" d="M390 285 H510"/>
|
|
71
|
+
<path class="line" d="M780 285 H900"/>
|
|
72
|
+
|
|
73
|
+
<rect x="80" y="390" width="675" height="335" rx="18" class="lane"/>
|
|
74
|
+
<text x="110" y="426" class="note">PDCA feature loop</text>
|
|
75
|
+
<text x="110" y="455" class="muted">For new behavior, API/UI changes, and requirement work</text>
|
|
76
|
+
<g transform="translate(120 490)">
|
|
77
|
+
<rect width="230" height="72" rx="14" class="card"/>
|
|
78
|
+
<text x="24" y="32" class="label">cc-plan</text>
|
|
79
|
+
<text x="24" y="57" class="small">scope, design, tasks</text>
|
|
80
|
+
</g>
|
|
81
|
+
<g transform="translate(455 490)">
|
|
82
|
+
<rect width="230" height="72" rx="14" class="card"/>
|
|
83
|
+
<text x="24" y="32" class="label">cc-do</text>
|
|
84
|
+
<text x="24" y="57" class="small">red, green, refactor</text>
|
|
85
|
+
</g>
|
|
86
|
+
<g transform="translate(120 615)">
|
|
87
|
+
<rect width="230" height="72" rx="14" class="card"/>
|
|
88
|
+
<text x="24" y="32" class="label">cc-check</text>
|
|
89
|
+
<text x="24" y="57" class="small">fresh evidence verdict</text>
|
|
90
|
+
</g>
|
|
91
|
+
<g transform="translate(455 615)">
|
|
92
|
+
<rect width="230" height="72" rx="14" class="card"/>
|
|
93
|
+
<text x="24" y="32" class="label">cc-act</text>
|
|
94
|
+
<text x="24" y="57" class="small">create or update PR</text>
|
|
95
|
+
</g>
|
|
96
|
+
<path class="line" d="M350 526 H445"/>
|
|
97
|
+
<path class="line" d="M570 562 V605"/>
|
|
98
|
+
<path class="line" d="M455 651 H360"/>
|
|
99
|
+
|
|
100
|
+
<rect x="845" y="390" width="675" height="335" rx="18" class="lane"/>
|
|
101
|
+
<text x="875" y="426" class="note">IDCA bug loop</text>
|
|
102
|
+
<text x="875" y="455" class="muted">For regressions, broken behavior, crashes, and flaky failures</text>
|
|
103
|
+
<g transform="translate(885 490)">
|
|
104
|
+
<rect width="270" height="72" rx="14" class="card"/>
|
|
105
|
+
<text x="24" y="32" class="label">cc-investigate</text>
|
|
106
|
+
<text x="24" y="57" class="small">repro, root cause, boundary</text>
|
|
107
|
+
</g>
|
|
108
|
+
<g transform="translate(1245 490)">
|
|
109
|
+
<rect width="230" height="72" rx="14" class="card"/>
|
|
110
|
+
<text x="24" y="32" class="label">cc-do</text>
|
|
111
|
+
<text x="24" y="57" class="small">repair with evidence</text>
|
|
112
|
+
</g>
|
|
113
|
+
<g transform="translate(885 615)">
|
|
114
|
+
<rect width="230" height="72" rx="14" class="card"/>
|
|
115
|
+
<text x="24" y="32" class="label">cc-check</text>
|
|
116
|
+
<text x="24" y="57" class="small">prove the symptom is fixed</text>
|
|
117
|
+
</g>
|
|
118
|
+
<g transform="translate(1245 615)">
|
|
119
|
+
<rect width="230" height="72" rx="14" class="card"/>
|
|
120
|
+
<text x="24" y="32" class="label">cc-act</text>
|
|
121
|
+
<text x="24" y="57" class="small">create or update PR</text>
|
|
122
|
+
</g>
|
|
123
|
+
<path class="line" d="M1155 526 H1235"/>
|
|
124
|
+
<path class="line" d="M1360 562 V605"/>
|
|
125
|
+
<path class="line" d="M1245 651 H1125"/>
|
|
126
|
+
|
|
127
|
+
<path class="thin" d="M1060 320 C950 360 830 365 685 410"/>
|
|
128
|
+
<path class="thin" d="M1060 320 C1180 360 1230 365 1260 410"/>
|
|
129
|
+
|
|
130
|
+
<rect x="250" y="790" width="1100" height="120" rx="22" fill="#101f2f" stroke="#3c5a78" stroke-width="2" filter="url(#shadow)"/>
|
|
131
|
+
<g transform="translate(305 815)">
|
|
132
|
+
<rect width="230" height="64" rx="14" fill="url(#violet)"/>
|
|
133
|
+
<text x="24" y="30" class="label">cc-pr-review</text>
|
|
134
|
+
<text x="24" y="52" class="small">separate PR review session</text>
|
|
135
|
+
</g>
|
|
136
|
+
<g transform="translate(690 815)">
|
|
137
|
+
<rect width="230" height="64" rx="14" fill="url(#green)"/>
|
|
138
|
+
<text x="24" y="30" class="label">cc-pr-land</text>
|
|
139
|
+
<text x="24" y="52" class="small">rebase and land reviewed PR</text>
|
|
140
|
+
</g>
|
|
141
|
+
<g transform="translate(1075 815)">
|
|
142
|
+
<rect width="220" height="64" rx="14" fill="url(#blue)"/>
|
|
143
|
+
<text x="24" y="30" class="label">main</text>
|
|
144
|
+
<text x="24" y="52" class="small">local and remote parity</text>
|
|
145
|
+
</g>
|
|
146
|
+
<path class="line" d="M535 847 H680"/>
|
|
147
|
+
<path class="line" d="M920 847 H1065"/>
|
|
148
|
+
<path class="thin" d="M805 815 C720 760 650 735 570 690"/>
|
|
149
|
+
<path class="thin" d="M805 815 C920 760 1110 735 1360 690"/>
|
|
150
|
+
|
|
151
|
+
<rect x="84" y="930" width="1432" height="42" rx="12" fill="#07111f" stroke="#27445f"/>
|
|
152
|
+
<text x="110" y="957" class="small">Boundary: cc-dev never creates nested worktrees and never merges PRs. Review and landing are separate sessions by design.</text>
|
|
153
|
+
</svg>
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1600" height="1000" viewBox="0 0 1600 1000" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">CC-DevFlow PR Harness 运作流程</title>
|
|
3
|
+
<desc id="desc">一张中文流程图,展示 roadmap 选题、目标自动驾驶、PDCA 和 IDCA 循环、PR 独立 Review、PR 合并和 main 一致性证明。</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="bg" x1="0" y1="0" x2="1" y2="1">
|
|
6
|
+
<stop offset="0" stop-color="#07111f"/>
|
|
7
|
+
<stop offset="0.48" stop-color="#0d2638"/>
|
|
8
|
+
<stop offset="1" stop-color="#102414"/>
|
|
9
|
+
</linearGradient>
|
|
10
|
+
<linearGradient id="blue" x1="0" y1="0" x2="1" y2="1">
|
|
11
|
+
<stop offset="0" stop-color="#4cc9f0"/>
|
|
12
|
+
<stop offset="1" stop-color="#4361ee"/>
|
|
13
|
+
</linearGradient>
|
|
14
|
+
<linearGradient id="green" x1="0" y1="0" x2="1" y2="1">
|
|
15
|
+
<stop offset="0" stop-color="#b8f05a"/>
|
|
16
|
+
<stop offset="1" stop-color="#2fbf71"/>
|
|
17
|
+
</linearGradient>
|
|
18
|
+
<linearGradient id="amber" x1="0" y1="0" x2="1" y2="1">
|
|
19
|
+
<stop offset="0" stop-color="#ffd166"/>
|
|
20
|
+
<stop offset="1" stop-color="#ef8354"/>
|
|
21
|
+
</linearGradient>
|
|
22
|
+
<linearGradient id="violet" x1="0" y1="0" x2="1" y2="1">
|
|
23
|
+
<stop offset="0" stop-color="#d0a2ff"/>
|
|
24
|
+
<stop offset="1" stop-color="#7b2cbf"/>
|
|
25
|
+
</linearGradient>
|
|
26
|
+
<filter id="shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
27
|
+
<feDropShadow dx="0" dy="16" stdDeviation="16" flood-color="#000000" flood-opacity="0.35"/>
|
|
28
|
+
</filter>
|
|
29
|
+
<marker id="arrow" markerWidth="16" markerHeight="16" refX="12" refY="8" orient="auto" markerUnits="strokeWidth">
|
|
30
|
+
<path d="M2,2 L14,8 L2,14 Z" fill="#d7e3f4"/>
|
|
31
|
+
</marker>
|
|
32
|
+
<style>
|
|
33
|
+
.title{font:800 62px Inter,"PingFang SC","Microsoft YaHei",Arial,sans-serif;fill:#f8fbff;letter-spacing:0}
|
|
34
|
+
.subtitle{font:500 26px Inter,"PingFang SC","Microsoft YaHei",Arial,sans-serif;fill:#bdd0e8}
|
|
35
|
+
.label{font:800 26px Inter,"PingFang SC","Microsoft YaHei",Arial,sans-serif;fill:#f8fbff;letter-spacing:0}
|
|
36
|
+
.small{font:500 18px Inter,"PingFang SC","Microsoft YaHei",Arial,sans-serif;fill:#d7e3f4}
|
|
37
|
+
.note{font:600 18px Inter,"PingFang SC","Microsoft YaHei",Arial,sans-serif;fill:#f8fbff}
|
|
38
|
+
.muted{font:500 16px Inter,"PingFang SC","Microsoft YaHei",Arial,sans-serif;fill:#9fb4cd}
|
|
39
|
+
.card{fill:#102033;stroke:#27445f;stroke-width:2;filter:url(#shadow)}
|
|
40
|
+
.lane{fill:#0b1728;stroke:#27445f;stroke-width:2}
|
|
41
|
+
.line{fill:none;stroke:#d7e3f4;stroke-width:4;marker-end:url(#arrow)}
|
|
42
|
+
.thin{fill:none;stroke:#6c819b;stroke-width:3;stroke-dasharray:8 10;marker-end:url(#arrow)}
|
|
43
|
+
</style>
|
|
44
|
+
</defs>
|
|
45
|
+
<rect width="1600" height="1000" fill="url(#bg)"/>
|
|
46
|
+
<circle cx="140" cy="125" r="220" fill="#2247ff" opacity="0.12"/>
|
|
47
|
+
<circle cx="1450" cy="820" r="260" fill="#2fbf71" opacity="0.13"/>
|
|
48
|
+
|
|
49
|
+
<text x="80" y="96" class="title">CC-DevFlow PR Harness</text>
|
|
50
|
+
<text x="84" y="136" class="subtitle">从 roadmap 选题,到当前 worktree 自动开发,再到独立 PR Review 和 main 一致性证明。</text>
|
|
51
|
+
|
|
52
|
+
<rect x="80" y="190" width="1440" height="150" rx="18" class="lane"/>
|
|
53
|
+
<text x="110" y="225" class="note">导航层</text>
|
|
54
|
+
<g transform="translate(130 250)">
|
|
55
|
+
<rect width="260" height="70" rx="16" fill="url(#blue)"/>
|
|
56
|
+
<text x="24" y="32" class="label">cc-roadmap</text>
|
|
57
|
+
<text x="24" y="56" class="small">产品顺序和阶段真相</text>
|
|
58
|
+
</g>
|
|
59
|
+
<g transform="translate(520 250)">
|
|
60
|
+
<rect width="260" height="70" rx="16" fill="url(#green)"/>
|
|
61
|
+
<text x="24" y="32" class="label">cc-next</text>
|
|
62
|
+
<text x="24" y="56" class="small">选择一个 ready 目标</text>
|
|
63
|
+
</g>
|
|
64
|
+
<g transform="translate(910 250)">
|
|
65
|
+
<rect width="300" height="70" rx="16" fill="url(#amber)"/>
|
|
66
|
+
<text x="24" y="32" class="label">cc-dev</text>
|
|
67
|
+
<text x="24" y="56" class="small">当前 worktree 推进到 PR</text>
|
|
68
|
+
</g>
|
|
69
|
+
<path class="line" d="M390 285 H510"/>
|
|
70
|
+
<path class="line" d="M780 285 H900"/>
|
|
71
|
+
|
|
72
|
+
<rect x="80" y="390" width="675" height="335" rx="18" class="lane"/>
|
|
73
|
+
<text x="110" y="426" class="note">PDCA 新需求循环</text>
|
|
74
|
+
<text x="110" y="455" class="muted">适用于新行为、接口、UI、规格和需求变更</text>
|
|
75
|
+
<g transform="translate(120 490)">
|
|
76
|
+
<rect width="230" height="72" rx="14" class="card"/>
|
|
77
|
+
<text x="24" y="32" class="label">cc-plan</text>
|
|
78
|
+
<text x="24" y="57" class="small">冻结范围、设计、任务</text>
|
|
79
|
+
</g>
|
|
80
|
+
<g transform="translate(455 490)">
|
|
81
|
+
<rect width="230" height="72" rx="14" class="card"/>
|
|
82
|
+
<text x="24" y="32" class="label">cc-do</text>
|
|
83
|
+
<text x="24" y="57" class="small">红灯、绿灯、重构</text>
|
|
84
|
+
</g>
|
|
85
|
+
<g transform="translate(120 615)">
|
|
86
|
+
<rect width="230" height="72" rx="14" class="card"/>
|
|
87
|
+
<text x="24" y="32" class="label">cc-check</text>
|
|
88
|
+
<text x="24" y="57" class="small">新鲜证据裁决</text>
|
|
89
|
+
</g>
|
|
90
|
+
<g transform="translate(455 615)">
|
|
91
|
+
<rect width="230" height="72" rx="14" class="card"/>
|
|
92
|
+
<text x="24" y="32" class="label">cc-act</text>
|
|
93
|
+
<text x="24" y="57" class="small">创建或更新 PR</text>
|
|
94
|
+
</g>
|
|
95
|
+
<path class="line" d="M350 526 H445"/>
|
|
96
|
+
<path class="line" d="M570 562 V605"/>
|
|
97
|
+
<path class="line" d="M455 651 H360"/>
|
|
98
|
+
|
|
99
|
+
<rect x="845" y="390" width="675" height="335" rx="18" class="lane"/>
|
|
100
|
+
<text x="875" y="426" class="note">IDCA Bug 调查循环</text>
|
|
101
|
+
<text x="875" y="455" class="muted">适用于回归、崩溃、错误行为和不稳定失败</text>
|
|
102
|
+
<g transform="translate(885 490)">
|
|
103
|
+
<rect width="270" height="72" rx="14" class="card"/>
|
|
104
|
+
<text x="24" y="32" class="label">cc-investigate</text>
|
|
105
|
+
<text x="24" y="57" class="small">复现、根因、修复边界</text>
|
|
106
|
+
</g>
|
|
107
|
+
<g transform="translate(1245 490)">
|
|
108
|
+
<rect width="230" height="72" rx="14" class="card"/>
|
|
109
|
+
<text x="24" y="32" class="label">cc-do</text>
|
|
110
|
+
<text x="24" y="57" class="small">带证据修复</text>
|
|
111
|
+
</g>
|
|
112
|
+
<g transform="translate(885 615)">
|
|
113
|
+
<rect width="230" height="72" rx="14" class="card"/>
|
|
114
|
+
<text x="24" y="32" class="label">cc-check</text>
|
|
115
|
+
<text x="24" y="57" class="small">证明症状已修复</text>
|
|
116
|
+
</g>
|
|
117
|
+
<g transform="translate(1245 615)">
|
|
118
|
+
<rect width="230" height="72" rx="14" class="card"/>
|
|
119
|
+
<text x="24" y="32" class="label">cc-act</text>
|
|
120
|
+
<text x="24" y="57" class="small">创建或更新 PR</text>
|
|
121
|
+
</g>
|
|
122
|
+
<path class="line" d="M1155 526 H1235"/>
|
|
123
|
+
<path class="line" d="M1360 562 V605"/>
|
|
124
|
+
<path class="line" d="M1245 651 H1125"/>
|
|
125
|
+
|
|
126
|
+
<path class="thin" d="M1060 320 C950 360 830 365 685 410"/>
|
|
127
|
+
<path class="thin" d="M1060 320 C1180 360 1230 365 1260 410"/>
|
|
128
|
+
|
|
129
|
+
<rect x="250" y="790" width="1100" height="120" rx="22" fill="#101f2f" stroke="#3c5a78" stroke-width="2" filter="url(#shadow)"/>
|
|
130
|
+
<g transform="translate(305 815)">
|
|
131
|
+
<rect width="230" height="64" rx="14" fill="url(#violet)"/>
|
|
132
|
+
<text x="24" y="30" class="label">cc-pr-review</text>
|
|
133
|
+
<text x="24" y="52" class="small">单独会话 Review PR</text>
|
|
134
|
+
</g>
|
|
135
|
+
<g transform="translate(690 815)">
|
|
136
|
+
<rect width="230" height="64" rx="14" fill="url(#green)"/>
|
|
137
|
+
<text x="24" y="30" class="label">cc-pr-land</text>
|
|
138
|
+
<text x="24" y="52" class="small">Rebase 并合并 PR</text>
|
|
139
|
+
</g>
|
|
140
|
+
<g transform="translate(1075 815)">
|
|
141
|
+
<rect width="220" height="64" rx="14" fill="url(#blue)"/>
|
|
142
|
+
<text x="24" y="30" class="label">main</text>
|
|
143
|
+
<text x="24" y="52" class="small">本地和远程一致</text>
|
|
144
|
+
</g>
|
|
145
|
+
<path class="line" d="M535 847 H680"/>
|
|
146
|
+
<path class="line" d="M920 847 H1065"/>
|
|
147
|
+
<path class="thin" d="M805 815 C720 760 650 735 570 690"/>
|
|
148
|
+
<path class="thin" d="M805 815 C920 760 1110 735 1360 690"/>
|
|
149
|
+
|
|
150
|
+
<rect x="84" y="930" width="1432" height="42" rx="12" fill="#07111f" stroke="#27445f"/>
|
|
151
|
+
<text x="110" y="957" class="small">边界:cc-dev 不创建嵌套 worktree,也不合并 PR;Review 和 Landing 必须是独立会话。</text>
|
|
152
|
+
</svg>
|
|
Binary file
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
{
|
|
2
|
-
"updatedAt": "2026-05-
|
|
2
|
+
"updatedAt": "2026-05-11",
|
|
3
3
|
"skills": {
|
|
4
|
-
"cc-roadmap": "5.
|
|
5
|
-
"cc-
|
|
6
|
-
"cc-
|
|
7
|
-
"cc-
|
|
8
|
-
"cc-
|
|
4
|
+
"cc-roadmap": "5.3.0",
|
|
5
|
+
"cc-next": "1.0.1",
|
|
6
|
+
"cc-dev": "1.0.0",
|
|
7
|
+
"cc-plan": "3.8.5",
|
|
8
|
+
"cc-investigate": "1.4.1",
|
|
9
|
+
"cc-do": "1.6.5",
|
|
10
|
+
"cc-review": "1.3.0",
|
|
11
|
+
"cc-pr-review": "1.0.0",
|
|
12
|
+
"cc-pr-land": "1.0.0",
|
|
9
13
|
"cc-check": "1.10.1",
|
|
10
|
-
"cc-act": "1.8.
|
|
14
|
+
"cc-act": "1.8.7",
|
|
11
15
|
"cc-spec-init": "1.1.0"
|
|
12
16
|
},
|
|
13
17
|
"examples": [
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
- Example version: `1.0.0`
|
|
6
6
|
- Last reviewed: `2026-04-17`
|
|
7
|
-
- Bound skills: `cc-roadmap@5.
|
|
7
|
+
- Bound skills: `cc-roadmap@5.3.0`, `cc-plan@3.8.5`, `cc-do@1.6.5`, `cc-check@1.10.1`
|
|
8
8
|
|
|
9
9
|
This example shows a requirement that **looked executable**, but `cc-check` correctly stopped it and sent it back to `cc-plan`.
|
|
10
10
|
|
package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
- Requirement version: `REQ-002.v2`
|
|
6
6
|
- Design version: `design.v2`
|
|
7
|
-
- CC-Plan skill version: `3.8.
|
|
7
|
+
- CC-Plan skill version: `3.8.5`
|
|
8
8
|
- Requirement ID: `REQ-002`
|
|
9
9
|
- Design mode: `full-design`
|
|
10
10
|
- Why not `tiny-design`: the feature crosses import parsing, invite rules, billing limits, duplicate handling, and audit logging
|