@jspg-ai/coding-bb 0.0.2-beta.29 → 0.0.3-beta.12

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.
Files changed (107) hide show
  1. package/cbb/bin/cbbm.js +1 -1
  2. package/cbb/dev-standards/rules/cbb-ai-behavior.md +118 -103
  3. package/cbb/lib/install/claude-code.js +1 -3
  4. package/cbb/lib/install/codebuddy.js +30 -0
  5. package/cbb/lib/install/init.js +354 -305
  6. package/cbb/lib/install/opencode.js +35 -31
  7. package/cbb/lib/install/qoder.js +1 -3
  8. package/cbb/lib/install/rule-rewrite.js +27 -0
  9. package/cbb/lib/install/trae.js +33 -0
  10. package/cbb/lib/install/workspaces.js +24 -0
  11. package/cbb/lib/openspec/index.js +337 -554
  12. package/cbb/lib/superpowers/index.js +246 -265
  13. package/cbb/lib/utils/check-update.js +9 -2
  14. package/cbb/lib/utils/gitignore.js +2 -0
  15. package/cbb/lib/utils/settings.js +17 -4
  16. package/cbb/lib/utils/tar.js +92 -0
  17. package/cbb/lib/utils/upstream.js +90 -0
  18. package/cbb/worktrees/skills/cbb-worktree-close/SKILL.md +33 -24
  19. package/cbb/worktrees/skills/cbb-worktree-close/scripts/check-env.js +4 -4
  20. package/cbb/worktrees/skills/cbb-worktree-close/scripts/remove-worktrees.js +2 -2
  21. package/cbb/worktrees/skills/cbb-worktree-init/SKILL.md +61 -78
  22. package/cbb/worktrees/skills/cbb-worktree-init/scripts/check-env-deep.js +3 -33
  23. package/cbb/worktrees/skills/cbb-worktree-init/scripts/check-env.js +5 -14
  24. package/cbb/worktrees/skills/cbb-worktree-init/scripts/create-worktrees.js +15 -37
  25. package/cbb/worktrees/skills/cbb-worktree-init/scripts/update-gitignore.js +25 -9
  26. package/cbb/worktrees/skills/cbb-worktree-push/SKILL.md +67 -31
  27. package/config/openspec/schemas/spec-driven/schema.yaml +29 -30
  28. package/config/openspec/schemas/spec-driven/templates/design.md +0 -18
  29. package/config/openspec/schemas/spec-driven/templates/proposal.md +4 -3
  30. package/config/upstream-mirrors.json +12 -0
  31. package/config/workspace-agents.sample.md +17 -13
  32. package/config/workspaces.json +5 -0
  33. package/openspec/.version +2 -3
  34. package/openspec/commands/apply.md +189 -175
  35. package/openspec/commands/archive.md +237 -216
  36. package/openspec/commands/bulk-archive.md +355 -327
  37. package/openspec/commands/continue.md +116 -105
  38. package/openspec/commands/explore.md +230 -199
  39. package/openspec/commands/ff.md +115 -104
  40. package/openspec/commands/new.md +74 -63
  41. package/openspec/commands/onboard.md +557 -548
  42. package/openspec/commands/propose.md +161 -150
  43. package/openspec/commands/sync.md +277 -249
  44. package/openspec/commands/update.md +92 -80
  45. package/openspec/commands/verify.md +175 -162
  46. package/openspec/skills/openspec-apply-change/SKILL.md +20 -5
  47. package/openspec/skills/openspec-archive-change/SKILL.md +30 -8
  48. package/openspec/skills/openspec-bulk-archive-change/SKILL.md +36 -6
  49. package/openspec/skills/openspec-continue-change/SKILL.md +14 -2
  50. package/openspec/skills/openspec-explore/SKILL.md +21 -9
  51. package/openspec/skills/openspec-ff-change/SKILL.md +14 -2
  52. package/openspec/skills/openspec-new-change/SKILL.md +13 -1
  53. package/openspec/skills/openspec-onboard/SKILL.md +49 -39
  54. package/openspec/skills/openspec-propose/SKILL.md +15 -3
  55. package/openspec/skills/openspec-sync-specs/SKILL.md +31 -2
  56. package/openspec/skills/openspec-update-change/SKILL.md +27 -14
  57. package/openspec/skills/openspec-verify-change/SKILL.md +17 -3
  58. package/package.json +2 -2
  59. package/superpowers/.version +4 -4
  60. package/superpowers/skills/brainstorming/SKILL.md +47 -12
  61. package/superpowers/skills/brainstorming/scripts/frame-template.html +213 -213
  62. package/superpowers/skills/brainstorming/scripts/server.cjs +723 -723
  63. package/superpowers/skills/brainstorming/visual-companion.md +6 -6
  64. package/superpowers/skills/diagnosing-superpowers/SKILL.md +120 -0
  65. package/superpowers/skills/diagnosing-superpowers/prompts/analyst-common.md +38 -0
  66. package/superpowers/skills/diagnosing-superpowers/prompts/cost-and-time.md +28 -0
  67. package/superpowers/skills/diagnosing-superpowers/prompts/plan-adherence.md +29 -0
  68. package/superpowers/skills/diagnosing-superpowers/prompts/quality-evidence.md +26 -0
  69. package/superpowers/skills/diagnosing-superpowers/prompts/repeated-work.md +30 -0
  70. package/superpowers/skills/diagnosing-superpowers/prompts/request-conflicts.md +20 -0
  71. package/superpowers/skills/diagnosing-superpowers/prompts/scrub-audit.md +33 -0
  72. package/superpowers/skills/diagnosing-superpowers/prompts/scrub.md +29 -0
  73. package/superpowers/skills/diagnosing-superpowers/prompts/similar-session.md +38 -0
  74. package/superpowers/skills/diagnosing-superpowers/prompts/skill-timeline.md +30 -0
  75. package/superpowers/skills/diagnosing-superpowers/prompts/stumbles.md +28 -0
  76. package/superpowers/skills/diagnosing-superpowers/references/context-safety.md +22 -0
  77. package/superpowers/skills/diagnosing-superpowers/references/github-issues.md +47 -0
  78. package/superpowers/skills/diagnosing-superpowers/references/redaction-policy.md +34 -0
  79. package/superpowers/skills/diagnosing-superpowers/references/session-discovery.md +31 -0
  80. package/superpowers/skills/diagnosing-superpowers/templates/bundle-README.md +77 -0
  81. package/superpowers/skills/diagnosing-superpowers/templates/case.md +64 -0
  82. package/superpowers/skills/diagnosing-superpowers/templates/issue.md +51 -0
  83. package/superpowers/skills/diagnosing-superpowers/templates/report.md +82 -0
  84. package/superpowers/skills/executing-plans/SKILL.md +350 -41
  85. package/superpowers/skills/executing-plans/scripts/task-done +52 -0
  86. package/superpowers/skills/executing-plans/scripts/task-start +28 -0
  87. package/superpowers/skills/requesting-code-review/SKILL.md +1 -1
  88. package/superpowers/skills/requesting-code-review/code-reviewer.md +17 -0
  89. package/superpowers/skills/subagent-driven-development/SKILL.md +18 -18
  90. package/superpowers/skills/subagent-driven-development/re-review-prompt.md +1 -1
  91. package/superpowers/skills/subagent-driven-development/scripts/review-package +53 -46
  92. package/superpowers/skills/subagent-driven-development/scripts/sdd-workspace +82 -40
  93. package/superpowers/skills/subagent-driven-development/scripts/task-brief +43 -41
  94. package/superpowers/skills/subagent-driven-development/task-reviewer-prompt.md +2 -2
  95. package/superpowers/skills/systematic-debugging/root-cause-tracing.md +1 -1
  96. package/superpowers/skills/test-driven-development/SKILL.md +10 -0
  97. package/superpowers/skills/using-superpowers/SKILL.md +2 -0
  98. package/superpowers/skills/using-superpowers/references/claude-code-tools.md +29 -0
  99. package/superpowers/skills/using-superpowers/references/muse-tools.md +35 -0
  100. package/superpowers/skills/writing-plans/SKILL.md +30 -9
  101. package/superpowers/skills/writing-skills/SKILL.md +4 -2
  102. package/superpowers/skills/writing-skills/graphviz-conventions.dot +171 -171
  103. package/cbb/worktrees/commands/worktree-close.md +0 -64
  104. package/cbb/worktrees/commands/worktree-init.md +0 -55
  105. package/cbb/worktrees/commands/worktree-push.md +0 -42
  106. package/cbb/worktrees/skills/cbb-worktree-init/scripts/auto-open.js +0 -136
  107. package/cbb/worktrees/skills/cbb-worktree-init/scripts/install-ai.js +0 -177
@@ -1,19 +1,15 @@
1
1
  ---
2
2
  name: cbb-worktree-push
3
- description: " worktree 提交并推送当前需求的所有关联仓库。触发:用户说'提交'/'commit'/'push'/'推送'/'提交并push'/'推到远端';用户在 .worktrees/worktree-<需求名>/ 下工作要求批量推送;apply 完成后准备推送所有 worktree;close-worktree 前需要先推送未提交改动。"
4
- license: MIT
5
- compatibility: Requires git (>=2.30) and Node.js (>=16.7.0). All commands are pure Node.js scripts under `scripts/`, fully cross-platform (Windows / macOS / Linux, bash / PowerShell / Git Bash).
6
- metadata:
7
- author: Contributors
8
- version: "1.0"
9
- generatedBy: coding-bb
3
+ description: "提交并推送当前需求的所有关联仓库(跨 worktree 批量)。触发:用户说'提交'/'commit'/'push'/'推送'/'提交并push'/'推到远端';用户在 .worktrees/worktree-<需求名>/ 下工作要求批量推送;apply 完成后准备推送所有 worktree;close-worktree 前需要先推送未提交改动。注意:本技能会先识别场景——不在 cbb 工作空间时降级为普通单仓库提交推送。"
10
4
  ---
11
5
 
12
6
  # Push Worktrees(跨平台脚本化版本 v1.0)
13
7
 
14
- worktree 提交并推送当前需求的所有关联仓库到 origin。专门解决"开发完成后批量推送"和"用户口语化提交并push"两类场景,弥补 [cbb-worktree-init Step 3.4](file:///d:/workspace/va-ai/coding-bb/cbb/worktrees/skills/cbb-worktree-init/SKILL.md) 仅推送初始空 commit 的缺口。
8
+ 提交并推送当前需求的所有关联仓库(跨 worktree 批量)。专门解决"开发完成后批量推送"和"用户口语化提交并push"两类场景,弥补 [cbb-worktree-init Step 3.4](file:///d:/workspace/va-ai/coding-bb/cbb/worktrees/skills/cbb-worktree-init/SKILL.md) 仅推送初始空 commit 的缺口。
15
9
 
16
- **启动时声明:** "我正在使用 cbb-worktree-push 技能来批量提交并推送当前需求的所有 worktree 仓库。"
10
+ > **本技能描述含宽泛触发词("提交"/"push"),允许被误触发**。因此第一步永远是 **Step 0 场景识别**:在 cbb 工作空间内才走跨 worktree 批量流程;在普通 git 仓库降级为单仓库提交推送;非 git 目录则退出。
11
+
12
+ **启动时声明:** "我正在使用 cbb-worktree-push 技能来推送当前需求的关联仓库。"
17
13
 
18
14
  ## 核心原则
19
15
 
@@ -30,12 +26,18 @@ metadata:
30
26
 
31
27
  ## 调用脚本的统一方式
32
28
 
33
- **所有脚本必须用绝对路径调用**(Qoder 沙箱中 AI agent cwd 不一定是技能目录)。
29
+ **重要**:本技能的所有脚本位于**本 SKILL.md 所在目录的 `scripts/` 下**(skill 目录)。
30
+
31
+ 调用时用**本技能目录的绝对路径**拼接脚本名(AI 读取本 SKILL.md 时即已知该目录):
34
32
 
35
33
  ```
36
- node "<ws_root>/.qoder/skills/cbb-worktree-push/scripts/<name>.js" <参数>
34
+ node "<skill_dir>/scripts/<name>.js" <参数>
37
35
  ```
38
36
 
37
+ > - `<skill_dir>` = 本 SKILL.md 所在目录的绝对路径(AI 从读取路径即可推出)
38
+ > - **cwd 必须保持在工作空间根目录**:脚本按 cwd 定位 `workspace-config.json` 与 git 仓库
39
+ > - 不要用 `./scripts/...` 裸相对路径(AI 的 cwd 不是技能目录,会解析失败)
40
+
39
41
  脚本输出:
40
42
  - 人类可读报告(OK / FAIL / WARN)
41
43
  - 机器可读摘要(末行以 `COMMIT_RESULT` / `PUSH_RESULT` 开头)
@@ -43,22 +45,48 @@ node "<ws_root>/.qoder/skills/cbb-worktree-push/scripts/<name>.js" <参数>
43
45
 
44
46
  ---
45
47
 
46
- ## Step 0:定位工作空间
48
+ ## Step 0:场景识别(先判场景,再定策略)
49
+
50
+ **本技能允许被"提交"/"push"这类宽泛措辞误触发**。执行任何操作前,先判断当前处于哪种场景,按场景选择策略——**不要硬套 cbb 工作空间流程**。
51
+
52
+ 判断依据(任一命中即定场景):
53
+
54
+ | 场景 | 判据 | 策略 |
55
+ |------|------|------|
56
+ | **A. cbb 工作空间根** | cwd(或其 git 顶层)含 `workspace-config.json`;`find-workspace-root.js` 退出码 0 | 走 **Step 1 → 6** 的跨 worktree 批量流程 |
57
+ | **B. worktree 内** | cwd 命中 `<ws_root>/.worktrees/worktree-<需求名>/` | 用 cwd 反推 `<需求名>`,走 **Step 1 → 6** 批量流程 |
58
+ | **C. 普通 git 仓库** | 在 git 仓库内,但无 `workspace-config.json`(`find-workspace-root.js` 退出码 1) | **降级为单仓库提交推送**:不调 worktree 脚本,按常规 `git add -u` → 向用户询问 commit 信息 → `git commit` → `git push`(保留本 skill 的"必问 commit 信息"约束) |
59
+ | **D. 非 git 目录** | `git rev-parse --is-inside-work-tree` 失败 | 说明"当前目录不是 git 仓库",终止,不做任何操作 |
60
+
61
+ **判场景与定位(A/B 场景):**
47
62
 
48
63
  ```bash
49
- node "<ws_root>/.qoder/skills/cbb-worktree-push/scripts/find-workspace-root.js"
64
+ node "<skill_dir>/scripts/find-workspace-root.js"
50
65
  ```
51
66
 
52
67
  **解读末行**:
53
- - 退出码 0 + 末行(纯路径) → WS_ROOT
54
- - 退出码 1 → 未找到工作空间根目录,**终止流程**
68
+ - 退出码 0 + 末行(纯路径) → WS_ROOT(场景 A/B),继续 Step 1
69
+ - 退出码 1 → 无工作空间:**先判断场景 C 还是 D**(`git rev-parse --is-inside-work-tree`):
70
+ - 是 git 仓库 → 场景 C,按降级策略走(见下)
71
+ - 不是 → 场景 D,终止
72
+
73
+ **场景 C 降级流程**(普通仓库误触):
74
+
75
+ 1. `git status` 报告改动现状
76
+ 2. 直接对话询问 commit 信息(**禁止**自动生成)
77
+ 3. `git add -u`(默认不含未追踪文件;用户明确要求时才 `git add -A`)
78
+ 4. `git commit -m "<用户提供的信息>"`
79
+ 5. `git push`(无 upstream 时先询问用户是否 `-u`)
80
+ 6. 汇报结果;**不要**提及 worktree 批量流程
81
+
82
+ > 场景 C 是兜底:让"提交代码"在普通仓库里也能正常完成,而不是因找不到 `workspace-config.json` 报错。
55
83
 
56
84
  ---
57
85
 
58
- ## Step 1:识别目标 worktree
86
+ ## Step 1:识别目标 worktree(A/B 场景)
59
87
 
60
88
  ```bash
61
- node "<ws_root>/.qoder/skills/cbb-worktree-push/scripts/find-target-worktree.js" "<ws_root>"
89
+ node "<skill_dir>/scripts/find-target-worktree.js" "<ws_root>"
62
90
  ```
63
91
 
64
92
  **解读末行**:
@@ -72,7 +100,7 @@ node "<ws_root>/.qoder/skills/cbb-worktree-push/scripts/find-target-worktree.js"
72
100
 
73
101
  ```bash
74
102
  # 仅 commit 阶段先做 dry-run 预览
75
- node "<ws_root>/.qoder/skills/cbb-worktree-push/scripts/commit-worktrees.js" "<ws_root>" "<branch>" --message "preview" --dry-run
103
+ node "<skill_dir>/scripts/commit-worktrees.js" "<ws_root>" "<branch>" --message "preview" --dry-run
76
104
  ```
77
105
 
78
106
  **解读末行 `COMMIT_RESULT`**:每项仓库的状态
@@ -119,16 +147,16 @@ AI agent 在执行真实 commit 前**必须**在对话中向用户确认 commit
119
147
 
120
148
  ```bash
121
149
  # 统一信息
122
- node "<ws_root>/.qoder/skills/cbb-worktree-push/scripts/commit-worktrees.js" "<ws_root>" "<branch>" --message "feat(<branch>): 实现客户运费逻辑"
150
+ node "<skill_dir>/scripts/commit-worktrees.js" "<ws_root>" "<branch>" --message "feat(<branch>): 实现客户运费逻辑"
123
151
 
124
152
  # 多仓库分别
125
- node "..." "<ws_root>" "<branch>" --per-repo "ep-foo-app:feat(<branch>): 实现 saveClientExpectFreight;ep-bar-app:refactor(<branch>): 拆分 PlanService"
153
+ node "<skill_dir>/scripts/commit-worktrees.js" "<ws_root>" "<branch>" --per-repo "ep-foo-app:feat(<branch>): 实现 saveClientExpectFreight;ep-bar-app:refactor(<branch>): 拆分 PlanService"
126
154
 
127
155
  # 含未追踪文件
128
- node "..." "<ws_root>" "<branch>" --message "..." --untracked
156
+ node "<skill_dir>/scripts/commit-worktrees.js" "<ws_root>" "<branch>" --message "..." --untracked
129
157
 
130
158
  # wt_path 形式(用户在 worktree 内)
131
- node "..." "<ws_root>/.worktrees/worktree-<branch>" --message "..."
159
+ node "<skill_dir>/scripts/commit-worktrees.js" "<ws_root>/.worktrees/worktree-<branch>" --message "..."
132
160
  ```
133
161
 
134
162
  **选项**:
@@ -155,10 +183,10 @@ node "..." "<ws_root>/.worktrees/worktree-<branch>" --message "..."
155
183
  ## Step 5:批量 push
156
184
 
157
185
  ```bash
158
- node "<ws_root>/.qoder/skills/cbb-worktree-push/scripts/push-worktrees.js" "<ws_root>" "<branch>"
186
+ node "<skill_dir>/scripts/push-worktrees.js" "<ws_root>" "<branch>"
159
187
 
160
188
  # 或 wt_path 形式
161
- node "..." "<ws_root>/.worktrees/worktree-<branch>"
189
+ node "<skill_dir>/scripts/push-worktrees.js" "<ws_root>/.worktrees/worktree-<branch>"
162
190
  ```
163
191
 
164
192
  **解读末行 `PUSH_RESULT`**:
@@ -210,8 +238,7 @@ node "..." "<ws_root>/.worktrees/worktree-<branch>"
210
238
  workspace: ✅ origin/<branch>
211
239
  ep-foo-app: ✅ origin/<branch>
212
240
  ep-bar-app: ⚠️ 远程分支已存在(需用户决策 → 已关联)
213
- AI 配置目录:worktree 内独立安装,无需处理
214
- 后续:可继续开发 / 调 /opsx:verify 验证 / 调 /opsx:archive 归档 / 调 /cbb:worktree-close 关闭
241
+ 后续:可继续开发 / 调 /opsx:verify 验证 / 调 /opsx:archive 归档 / 调 `cbb-worktree-close` skill 关闭
215
242
  ```
216
243
 
217
244
  ---
@@ -220,8 +247,11 @@ node "..." "<ws_root>/.worktrees/worktree-<branch>"
220
247
 
221
248
  | 场景 | 处理方式 |
222
249
  |------|----------|
223
- | 用户说"提交并push"且 cwd 在 worktree 内 | 自动用 cwd 反推分支,Step 2 扫描后进入 Step 3 问 commit 信息 |
224
- | 用户说"提交并push"且 cwd 在 WS_ROOT | Step 0 定位后,多个 worktree 时让用户选 |
250
+ | **任何触发** | **先做 Step 0 场景识别**,再决定策略 |
251
+ | 场景 A:cwd 在 cbb 工作空间根 | find-workspace-root 成功 多个 worktree 时让用户选 |
252
+ | 场景 B:cwd 在 worktree 内 | 自动用 cwd 反推分支,扫描后进入询问 commit 信息 |
253
+ | 场景 C:cwd 在普通 git 仓库(无 workspace-config.json) | **降级为单仓库提交推送**,不调用 worktree 脚本 |
254
+ | 场景 D:cwd 非 git 目录 | 说明情况并终止,不做任何操作 |
225
255
  | commit 信息缺失 | 必须询问用户;禁止自动生成(可基于 apply task 上下文给建议) |
226
256
  | 多仓库需不同 commit 信息 | 用 `--per-repo "ep-foo:m1;ep-bar:m2"`,必须由用户逐条提供 |
227
257
  | 仓库干净 | commit-worktrees 自动 skipped,只 push 不 commit |
@@ -236,6 +266,11 @@ node "..." "<ws_root>/.worktrees/worktree-<branch>"
236
266
 
237
267
  ## 常见错误
238
268
 
269
+ ### 误触后硬套 worktree 流程
270
+
271
+ - **问题:** 用户在普通仓库说"提交代码",技能被 description 匹配触发,直接跑 `find-workspace-root.js` 失败并报错终止
272
+ - **修复:** Step 0 先判场景;场景 C(普通 git 仓库)降级为单仓库提交推送,不调用 worktree 脚本、不提及批量流程
273
+
239
274
  ### 自动生成 commit 信息不让用户确认
240
275
 
241
276
  - **问题:** agent 拍脑袋写 "feat: xxx",与用户实际意图不符
@@ -282,12 +317,13 @@ node "..." "<ws_root>/.worktrees/worktree-<branch>"
282
317
  - push 失败后跳过失败仓库直接继续
283
318
  - 远程分支已存在时脚本自动 set-upstream-to
284
319
  - AI 询问关联选项前不输出 commit 元信息
285
- - 沙箱内 node 不可用时强行继续 → 改为 fail-fast 提示用户
320
+ - 运行环境 node 不可用时强行继续 → 改为 fail-fast 提示用户
286
321
 
287
322
  **必须执行**
288
323
 
289
- - 严格按 Step 0 → 1 → 2 → 3 → 4 → 5 → 6 顺序执行
290
- - 所有脚本调用以 `node "..." "<绝对路径>"` 形式发起
324
+ - 严格按 Step 0 → 1 → 2 → 3 → 4 → 5 → 6 顺序执行(场景 C/D 除外,按 Step 0 降级策略)
325
+ - 所有脚本调用以 `node "<skill_dir>/scripts/<name>.js"` 形式发起(`<skill_dir>` = 本 SKILL.md 所在目录)
326
+ - 执行脚本时 cwd 保持在工作空间根;场景 C 降级时按普通 git 流程
291
327
  - Step 2 dry-run 必跑,让用户看到将要 commit 的内容
292
328
  - Step 3 必问用户 commit 信息(自由文本),禁止自动生成
293
329
  - commit 信息涉及业务语义时(feature/refactor/fix 等)必须从 apply task 上下文生成建议并由用户确认
@@ -17,15 +17,15 @@ artifacts:
17
17
  2. 拿到用户输入后,整理并复述目标,**让用户确认**理解是否正确。未确认前禁止进入下一阶段。
18
18
  3. 信息不足或目标模糊时,继续追问,直到目标清晰无歧义。
19
19
 
20
- ### 阶段二:查阅知识库(需求确认后,代码扫描前)
20
+ ### 阶段二:收集参考材料(需求确认后,代码扫描前)
21
21
 
22
- 1. 询问用户是否有知识库、参考文档等可提供。
23
- 2. 若有知识库:通过 INDEX.md(路径见 CLAUDE.md "知识库" 章节)按层级进入。从 INDEX.md → 域索引 → 子域 → 知识条目。仅跟随索引中的已有链接,**禁止 glob 或全库搜索**。记录每个被引用的文档。
24
- 3. 若无知识库或 INDEX.md 不存在:记录"知识库暂无覆盖",直接进入阶段三,**禁止编造或强行搜索**。
22
+ 1. 用 AskUserQuestion 询问用户:除 PRD 外还有哪些参考材料(设计文档、WIKI 链接、历史方案等)?
23
+ 2. 用户指认了文档/目录:定向阅读所指范围。指认到目录级时,可浏览该目录内的文件名并阅读相关文档;目录之外的内容与全库 glob 搜索仍然禁止。
24
+ 3. 无参考材料:记录"暂无参考文档",直接进入阶段三,禁止凭空编造背景信息。
25
25
 
26
- ### 阶段三:扫描代码(带着确认后的目标 + 知识库结果去扫)
26
+ ### 阶段三:扫描代码(带着确认后的目标 + 参考材料去扫)
27
27
 
28
- 1. 以阶段一确认的目标和阶段二收集的知识库为上下文,扫描代码库。
28
+ 1. 以阶段一确认的目标和阶段二收集的参考材料为上下文,扫描代码库。
29
29
  2. 只扫与本次需求相关的入口类/方法、已有实现、依赖链。**禁止无目标的全库扫描**。
30
30
  3. 扫描结果应直接支撑「四、代码改动清单」的编写。
31
31
 
@@ -37,7 +37,7 @@ artifacts:
37
37
  - **禁止推测**:需求细节必须来自上述三阶段的产出;信息不足时回退到对应阶段补充
38
38
  - **来源标注**:一、为什么 / 二、变更简述 / 三、变更清单 / 四、代码改动清单 / 五、影响 中每一条断言后附来源,示例:
39
39
  - "(来自 PRD §3.2)"
40
- - "(知识库: myb-user-domain/auth-flow.md)"
40
+ - "(文档: docs/design/auth-flow.md)"
41
41
  - "(代码: com.x.user.facade.UserFacade#resetPassword)"
42
42
  - **存疑必问,禁止猜测**:撰写过程中遇到以下情况,必须暂停并用 AskUserQuestion 让用户决策,禁止自行假设后继续:
43
43
  - 需求逻辑不合理或自相矛盾
@@ -45,18 +45,17 @@ artifacts:
45
45
  - 存在潜在风险(资损、性能、兼容性、安全)
46
46
  - 多种可行方案各有取舍
47
47
  每次向用户确认后,将决策逐条记录到「六、决策记录」表格中。
48
- - **知识库引用**还应一并带到 design.md 的"知识库参考"章节
49
48
 
50
49
  章节(顺序:动机 → 变更简述 → 能力契约 → 代码入口 → 影响 → 决策记录;每章带中文数字序号):
51
50
  - **一、为什么**(必选):1-3 句话说清问题或机会。要解决什么?为什么是现在?
52
- - **二、变更简述**(必选):1-5 句话最精简易读地描述本需求要做的事情
51
+ - **二、变更简述**(必选):1-3 句话最精简易读地描述本需求要做的事情。破坏性变更(接口不兼容、数据结构破坏等)在句尾标注 **BREAKING**
53
52
  - **三、变更清单**(必选):能力维度的变更盘点(新增 / 修改 / 删除)。每个能力对应 `openspec/specs/<name>/spec.md`。identifier 与中文名解耦
54
53
  - **identifier 与展示名解耦**:identifier 列(`能力名` / `现有 spec 名` / `已废弃 spec 名`)填英文 kebab-case(用于 path / CLI / 跨引用),新增一列 `中文名` 填人类阅读用名
55
54
  - **新增能力**:每个对应一份新建 `specs/<name>/spec.md`
56
- - **修改能力**:每个对应一份 delta spec 文件
55
+ - **修改能力**:每个对应一份 delta spec 文件。仅限 spec 级行为变化——纯实现细节重构不算,避免生成无意义 delta
57
56
  - **删除能力**:整段能力下线。spec 文件保留并写 `## REMOVED Requirements` 段,避免后续误用
58
57
  - **四、代码改动清单**(必选):每个代码入口一行。
59
- - **必须基于实际扫代码 + 读知识库得出,禁止凭 PRD 直接推测**
58
+ - **必须基于实际扫代码 + 读参考文档得出,禁止凭 PRD 直接推测**
60
59
  - 字段:应用 / 变更类型 / 代码入口类型 / 代码入口 / 所属能力 / 变更简述 / 备注
61
60
  - 后端 代码入口类型 仅允许:rpc / rest / mq / job / sql / config / constant / enum
62
61
  - 前端 代码入口类型 固定为 `前端`;代码入口列允许 `文件路径 —— 简短描述` 自然语言
@@ -67,7 +66,14 @@ artifacts:
67
66
  - **五、影响**(必选):列出受影响的代码、接口、依赖、上下游系统。**复杂影响分析**(灰度步骤、回滚方案、跨团队协作)进入 § design 阶段
68
67
  - **六、决策记录**(必选):撰写过程中向用户确认过的每个决策点,逐条填入表格。字段:序号 / 决策点 / 用户决策 / 影响。无决策则填一行"无"
69
68
 
70
- 重要:变更清单章节是 proposal 与 spec 阶段的契约核心。动笔前先研究现有 spec。每列出的能力都对应一份 spec 文件。
69
+ 重要:变更清单章节是 proposal 与 spec 阶段的契约核心。动笔前先研究现有 spec,禁止凭空起名:
70
+ 1. `openspec list --specs` 拉取项目能力清单
71
+ 2. 对疑似相关的 spec 先用 `openspec show "<spec-id>" --type spec --json --no-scenarios` 概览(返回能力用途与需求文本,不拉全文)
72
+ 3. 决定增改前,对相关 spec 全文阅读:`openspec show "<spec-id>" --type spec`(含 scenarios)
73
+ 4. 修改能力必须复用 `openspec/specs/` 下已有能力的准确路径,禁止引入近似重复名
74
+ 每列出的能力都对应一份 spec 文件。
75
+
76
+ 零能力变更的处理:若本次变更不涉及任何能力(纯重构、工具、文档、纯基础设施改动),变更清单三个子表留空,并在 change 的 `.openspec.yaml` 中设置 `skip_specs: true` —— `openspec validate` 会拒绝零 delta 的 change,该标记是唯一出口。禁止为通过校验编造能力或需求。
71
77
 
72
78
  保持简洁(1-2 页)。专注"为什么"而非"怎么做"——实现细节归 design.md。
73
79
 
@@ -105,23 +111,9 @@ artifacts:
105
111
  instruction: |
106
112
  Create the design document that explains HOW to implement the change.
107
113
 
108
- **Knowledge Base Reference (MANDATORY):**
109
- Before writing design, you MUST consult the project's knowledge base:
110
- 1. Read the knowledge base root INDEX.md (path defined in CLAUDE.md under "知识库")
111
- 2. Navigate from INDEX.md → relevant domain index → sub-domain → knowledge chunks
112
- 3. Collect all knowledge documents relevant to this change's design sections
113
- 4. Fill the "知识库参考" section in the template with: knowledge point name, full file path, corresponding design section
114
- 5. If a design section has no matching knowledge base coverage, note it as "知识库暂无覆盖,建议补充"
115
-
116
- Knowledge-to-design-section mapping reference:
117
- - 需求背景 → business domain indexes (myb-*-domain/)
118
- - 架构设计 → application indexes (project/<app>/)
119
- - 领域模型设计 → domain indexes (myb-*-domain/)
120
- - 核心流程设计 → domain knowledge chunks
121
- - 数据库模型 → application indexes + domain knowledge
122
- - MQ设计 → domain knowledge chunks
123
- - 稳定性设计 → tech-asset/tech-gray/
124
- - 防资损设计 → domain knowledge chunks
114
+ **Reference documents:**
115
+ Build on the reference documents gathered during the proposal phase (see its source annotations, e.g. "(文档: …)").
116
+ If the design needs additional documents, ask the user to designate them (targeted reading only, no repo-wide globbing).
125
117
 
126
118
  When to include design.md (create only if any apply):
127
119
  - Cross-cutting change (multiple services/modules) or new architectural pattern
@@ -130,7 +122,6 @@ artifacts:
130
122
  - Ambiguity that benefits from technical decisions before coding
131
123
 
132
124
  Sections (follow design.md template):
133
- - **知识库参考**(必选):列出本次设计参考的知识库文档路径及对应章节
134
125
  - **需求或项目背景**(必选):问题/目标、PRD/DMPT链接
135
126
  - **Checklist事项**(必选):逐项检查技术风险(新接口、改接口、新枚举、新依赖、新表/MQ、sentinel、敏感数据、SQL、历史兼容、Redis、验签)
136
127
  - **功能拆解**(必选):按模块拆分功能点,标注变更类型和FTAPI
@@ -233,6 +224,14 @@ apply:
233
224
 
234
225
  `plan.md` 跟 change 同住一个目录,archive 阶段会被一起带走。
235
226
 
227
+ **收尾(全部任务翻成 `- [x]` 后执行;本段为项目级硬约束,覆盖官方 apply 模板自带的完成提示语):**
228
+
229
+ 1. **未决项自检**(逐项确认,任何一项未过都不得宣布完成):
230
+ - change 产物(proposal.md / design.md / specs/** / tasks.md / plan.md)已提交到需求分支;未提交时先询问用户是否现在提交(可随 cbb-worktree-push 一并推送)
231
+ - 本会话产生的临时文件与环境改动(备份目录、未回写远端的本地提交、cherry-pick 等)已列清并交用户决策
232
+ 2. **输出顺序纪律**:存在未决项时,本轮只列未决项并等待用户决策;**禁止同轮输出"下一步建议"**,禁止出现"规划与实施均已完成""可运行 archive"之类表述(产物未提交时归档会丢规划产物)
233
+ 3. **全部未决项关闭后,唯一可建议的下一步是 `/opsx:verify`**:本项目工作流为 propose → apply → verify → archive,verify(强制 code-review + 产出 cr.md)是 archive 的前置阶段;**禁止直接建议 archive**,官方模板的 "You can archive this change" 提示语以本段为准
234
+
236
235
  verify:
237
236
  tracks: cr.md
238
237
  requires: [tasks]
@@ -12,24 +12,6 @@
12
12
 
13
13
  ---
14
14
 
15
- ## 零、知识库参考(必选)
16
-
17
- <!-- AI理解要点:此章节记录本次设计参考了哪些知识库文档,确保设计基于已有知识而非凭空构思。
18
- 通过知识库索引(INDEX.md)逐级定位后,列出实际读取的知识文档路径。 -->
19
-
20
- | 序号 | 参考知识点 | 知识库路径 | 对应设计章节 | 备注 |
21
- | ---- | ---------- | ---------- | ------------ | ---- |
22
- | 1 | <!-- 知识点名称 --> | <!-- 从INDEX.md逐级定位的完整路径 --> | <!-- 架构设计/领域模型/... --> | <!-- 参考了什么 --> |
23
-
24
- <!-- 知识库导航方式:
25
- 1. 从知识库根索引 INDEX.md 出发
26
- 2. 按业务域/技术域逐级定位到具体知识文档
27
- 3. 将实际读取的文档路径填入上表
28
- 4. 如果某章节无对应知识库文档,在备注中标注"知识库暂无覆盖,建议补充"
29
- -->
30
-
31
- ---
32
-
33
15
  ## 一、需求或项目背景(必选)
34
16
 
35
17
  <!-- AI理解要点:此章节提供需求的上下文信息,帮助理解业务背景和目标 -->
@@ -2,16 +2,17 @@
2
2
 
3
3
  <!-- 说明这次变更的动机。要解决什么问题?为什么是现在? -->
4
4
 
5
- ## 二、变更摘要
5
+ ## 二、变更简述
6
6
 
7
- <!-- 1-3 句话最精简易读地描述本需求要做的事情。 -->
7
+ <!-- 1-3 句话最精简易读地描述本需求要做的事情。破坏性变更(接口不兼容、数据结构破坏等)在句尾标注 **BREAKING**。 -->
8
8
 
9
9
  ## 三、变更清单
10
10
 
11
11
  <!-- 能力维度的变更盘点(新增 / 修改 / 删除)。每个能力对应 `openspec/specs/<name>/spec.md`。
12
12
  表格同时承载"能力本身的静态信息(identifier / 中文名 / 简述)"和"本次变更对它的动作"。
13
13
  第四章"代码改动清单"是落到代码层的具体改动点。两章通过 identifier 字段双向关联。
14
- **identifier 与展示名解耦**:identifier 列填英文 kebab-case(用于 path / CLI / 跨引用);`中文名` 列填人类阅读用名,可与 identifier 不同。 -->
14
+ **identifier 与展示名解耦**:identifier 列填英文 kebab-case(用于 path / CLI / 跨引用);`中文名` 列填人类阅读用名,可与 identifier 不同。
15
+ 零能力变更:三章全部留空(纯重构 / 工具 / 文档 / 纯基础设施),并在 change 的 `.openspec.yaml` 设 `skip_specs: true` —— `openspec validate` 拒绝零 delta 的 change,该标记是唯一出口;禁止为通过校验编造能力。 -->
15
16
 
16
17
  ### 新增能力
17
18
 
@@ -0,0 +1,12 @@
1
+ {
2
+ "_comment": "维护者拉取上游内容时的镜像前缀列表,按顺序尝试,首个成功即用。空字符串 \"\" 表示直连。",
3
+ "superpowers": [
4
+ "https://gh-proxy.com/",
5
+ "https://ghfast.top/",
6
+ ""
7
+ ],
8
+ "openspec": [
9
+ "https://registry.npmmirror.com",
10
+ "https://registry.npmjs.org"
11
+ ]
12
+ }
@@ -5,33 +5,37 @@
5
5
 
6
6
  ## 核心约定
7
7
 
8
- 1. **本目录不做需求开发**。本目录(业务空间主分支)只负责组织与调度;所有需求开发都在 `.worktrees/worktree-<需求名>/` 隔离目录内进行。
9
- 2. **接到新需求先建 worktree**:在本目录执行 `/cbb:worktree-init <需求名>`(opencode 写法:`/cbb-worktree-init`)。它会为 `workspace-config.json` 中的全量关联应用同步创建同名 worktree,并自动安装沙箱内的编码规范与 OpenSpec 工作流。
10
- 3. **开发动作全部在 worktree 内**:需求提案 / 实现 / 验证 / 归档(`/opsx:propose` → `/opsx:apply` `/opsx:verify` → `/opsx:archive`)在 worktree 沙箱内执行;跨仓库提交推送用 `/cbb:worktree-push`,需求收尾用 `/cbb:worktree-close`。
11
- 4. **关联应用增减只改配置**:编辑 `workspace-config.json` `apps` 数组(`name` / `repo` / `side` / `desc`),然后用同一需求名重跑 worktree 初始化即幂等补齐;不要手工 `git clone` 应用仓库。
12
- 5. **不要绕过 worktree 直接修改 `.codespace/` 或本目录的代码**。`.codespace/` 是工具维护的基准代码,不是开发区。
8
+ 1. **本目录不做需求开发**。本目录(业务空间主分支)只负责组织与调度;需求开发的**写操作**都在 `.worktrees/worktree-<需求名>/` 隔离目录内进行,**AI 会话仍停在空间根**(worktree 内不装 AI 配置)。
9
+ 2. **AI 配置安装在空间根**:编码规范、OpenSpec 命令、worktree 管理技能都装在本目录(`cbb setup` / `cbb update` 安装);worktree 内**不安装** AI 配置,AI 会话始终以空间根为基础。
10
+ 3. **接到新需求先建 worktree**:使用 `/cbb-worktree-init <需求名>`(skill 形态,各工具写法见文末),或直接自然语言说"为 <需求名> 创建工作空间"。它会为 `workspace-config.json` 中的全量关联应用同步创建同名 worktree
11
+ 4. **开发命令在本会话执行,写操作指向 worktree**:需求提案 / 实现 / 验证 / 归档(`/opsx:propose` `/opsx:apply` → `/opsx:verify` → `/opsx:archive`)在空间根会话执行;但所有产生写操作的命令(git commit / openspec / 构建 / 测试 / 文件修改)必须以 `.worktrees/worktree-<需求名>/`(或其应用子目录)为工作目录(显式 `cd` 或绝对路径);**禁止在空间根(主分支)执行写操作**。
12
+ 5. **关联应用增减只改配置**:编辑 `workspace-config.json` 的 `apps` 数组(`name` / `repo` / `side` / `desc`),然后用同一需求名重跑 worktree 初始化即幂等补齐;不要手工 `git clone` 应用仓库。
13
+ 6. **不要绕过 worktree 直接修改 `.codespace/` 或本目录的代码**。`.codespace/` 是工具维护的基准代码,不是开发区。
13
14
 
14
15
  ## 目录结构与职责
15
16
 
16
17
  | 路径 | 职责 | 维护方式 |
17
- |------|------|----------|
18
+ |------|----------|----------|
18
19
  | `workspace-config.json` | 关联应用清单,所有应用联动的唯一数据源 | 人工编辑 |
19
20
  | `.codespace/` | 各关联应用的基准代码(每个应用一个子目录) | `cbb setup` 与 worktree 流程自动 clone / fetch;**勿手动编辑**;已 gitignore,不提交 |
20
21
  | `.worktrees/` | 需求隔离开发区(每个需求一个 `worktree-<需求名>/` 目录) | worktree 命令自动创建 / 清理;不提交(首次执行 worktree 流程时自动加入 .gitignore) |
21
- | `openspec/` | OpenSpec 工作流配置(`config.yaml` + `schemas/`) | 由 cbb 安装;需求变更产物(`openspec/changes/` 等)在 worktree 内生成,随需求分支提交 |
22
- | `.claude/` `.qoder/` `.opencode/` | AI 工具适配目录:worktree 管理技能与命令;**故意不含**编码规范(防止在空间根直接开发) | 由 cbb 按 setup 时选择的工具安装;已 gitignore,不提交,勿手动改 |
23
- | `.cbb/` | cbb 安装清单,记录本包管理的全部路径 | 由 cbb 管理;**勿手动编辑** |
22
+ | `openspec/` | OpenSpec 工作流配置(`config.yaml` + `schemas/`) | 由 cbb 安装;需求变更产物(`openspec/changes/` 等)在**需求工作树内**生成,随需求分支提交 |
23
+ | `.claude/` `.qoder/` `.opencode/` `.codebuddy/` `.trae/` | AI 工具适配目录:编码规范规则、OpenSpec 命令、worktree 管理技能(skill 形态) | 由 cbb 按 setup 时选择的工具安装;已 gitignore,不提交,勿手动改 |
24
+ | `.cbb/` | cbb 安装清单与状态(`.managed-by-cbb`、`.last-tools`) | 由 cbb 管理;**勿手动编辑** |
24
25
 
25
26
  ## 典型流程
26
27
 
27
28
  ```
28
- 本目录:/cbb:worktree-init <需求名>
29
- → .worktrees/worktree-<需求名>/ 内开发(/opsx:propose → /opsx:apply → /opsx:verify → /opsx:archive)
30
- → /cbb:worktree-push 推送合并后 /cbb:worktree-close 关闭
29
+ 本目录:对 AI 说"为 <需求名> 创建工作空间"(或 /cbb-worktree-init <需求名>)
30
+ 继续在当前会话开发:写操作命令以 .worktrees/worktree-<需求名>/ 为工作目录
31
+ (/opsx:propose → /opsx:apply /opsx:verify → /opsx:archive)
32
+ → 说"提交并推送"(或 /cbb-worktree-push)→ 合并后说"关闭工作空间"(或 /cbb-worktree-close)
31
33
  ```
32
34
 
33
- > 命令写法因 AI 工具而异:Claude Code / Qoder `/cbb:worktree-init`,opencode `/cbb-worktree-init`;`/opsx:*` 同理(opencode `/opsx-*`)。
35
+ > worktree 管理三件套(init / close / push)以 **skill 形态**分发:既能被 AI 在对话中按意图**自动触发**,也能用斜杠命令手动指定(`/cbb-worktree-init` 等,各工具一致)。OpenSpec 命令为 `/opsx:propose`(opencode 扁平化为 `/opsx-propose`)。
34
36
 
35
37
  ---
36
38
 
37
39
  本文件由 `@jspg-ai/coding-bb` 生成(仅缺失时写入,之后不会覆盖或删除,可自由增补团队约定)。
40
+
41
+ > ⓘ 本文件仅供导航;目录纪律以 cbb 安装的编码规范规则(`cbb-ai-behavior.md` 第 8 条)为准,该规则随 `cbb update` 更新。
@@ -15,6 +15,11 @@
15
15
  "name": "数据标注平台-AI开发工作空间",
16
16
  "repo": "http://git.portjs.cn/jspg-ai/ai-workspace/jspg-data-labeling-aiws.git",
17
17
  "businessLine": "yzg-ai"
18
+ },
19
+ {
20
+ "name": "集团EDI一体化-AI开发工作空间",
21
+ "repo": "http://git.portjs.cn/jspg-ai/ai-workspace/jspg-edi-yth-aiws.git",
22
+ "businessLine": "yth"
18
23
  }
19
24
  ]
20
25
  }
package/openspec/.version CHANGED
@@ -1,6 +1,5 @@
1
1
  {
2
- "sha": "9d4e5974e5c0d9a09b9c6c1e1eb0975e80ec4461",
3
- "branch": "main",
2
+ "version": "1.13.1",
4
3
  "repo": "Fission-AI/OpenSpec",
5
- "updatedAt": "2026-09-12T00:00:00.000Z"
4
+ "renderedAt": "2026-09-19T13:22:53.815Z"
6
5
  }