speccore 8.3.182 → 8.3.188

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 (214) hide show
  1. package/.agents/skills/spec-analyze/SKILL.md +2 -169
  2. package/.agents/skills/spec-ask/SKILL.md +2 -177
  3. package/.agents/skills/spec-change/SKILL.md +2 -214
  4. package/.agents/skills/spec-dashboard/SKILL.md +1 -76
  5. package/.agents/skills/spec-deploy/SKILL.md +2 -298
  6. package/.agents/skills/spec-doc2spec/SKILL.md +2 -116
  7. package/.agents/skills/spec-done/SKILL.md +2 -203
  8. package/.agents/skills/spec-execute/SKILL.md +2 -178
  9. package/.agents/skills/spec-help/SKILL.md +1 -75
  10. package/.agents/skills/spec-iteration-create/SKILL.md +2 -123
  11. package/.agents/skills/spec-plan/SKILL.md +2 -117
  12. package/.agents/skills/spec-pr/SKILL.md +2 -203
  13. package/.agents/skills/spec-run/SKILL.md +16 -0
  14. package/.agents/skills/spec-spec2doc/SKILL.md +2 -121
  15. package/.agents/skills/spec-split/SKILL.md +2 -208
  16. package/.agents/skills/spec-task-create/SKILL.md +2 -151
  17. package/.agents/skills/spec-verify/SKILL.md +2 -214
  18. package/.agents/skills/spec-welcome/SKILL.md +1 -67
  19. package/.agents/skills/speccore-router/SKILL.md +14 -2
  20. package/README.en.md +9 -9
  21. package/README.md +2 -1
  22. package/dist/cli.js +24 -25
  23. package/dist/cli.js.map +1 -1
  24. package/dist/commands/about.js +1 -1
  25. package/dist/commands/about.js.map +1 -1
  26. package/dist/commands/analyze.d.ts +1 -0
  27. package/dist/commands/analyze.d.ts.map +1 -1
  28. package/dist/commands/analyze.js +38 -5
  29. package/dist/commands/analyze.js.map +1 -1
  30. package/dist/commands/ask.js +6 -6
  31. package/dist/commands/ask.js.map +1 -1
  32. package/dist/commands/dev.d.ts +2 -0
  33. package/dist/commands/dev.d.ts.map +1 -1
  34. package/dist/commands/dev.js +102 -1
  35. package/dist/commands/dev.js.map +1 -1
  36. package/dist/commands/doctor.js +28 -0
  37. package/dist/commands/doctor.js.map +1 -1
  38. package/dist/commands/execute.js +3 -3
  39. package/dist/commands/execute.js.map +1 -1
  40. package/dist/commands/init.d.ts.map +1 -1
  41. package/dist/commands/init.js +31 -52
  42. package/dist/commands/init.js.map +1 -1
  43. package/dist/commands/iteration/split.d.ts.map +1 -1
  44. package/dist/commands/iteration/split.js +12 -39
  45. package/dist/commands/iteration/split.js.map +1 -1
  46. package/dist/commands/knowledge.d.ts +0 -12
  47. package/dist/commands/knowledge.d.ts.map +1 -1
  48. package/dist/commands/knowledge.js +0 -80
  49. package/dist/commands/knowledge.js.map +1 -1
  50. package/dist/commands/refresh.d.ts.map +1 -1
  51. package/dist/commands/refresh.js +10 -0
  52. package/dist/commands/refresh.js.map +1 -1
  53. package/dist/commands/search.d.ts +1 -0
  54. package/dist/commands/search.d.ts.map +1 -1
  55. package/dist/commands/search.js +38 -0
  56. package/dist/commands/search.js.map +1 -1
  57. package/dist/commands/update.d.ts.map +1 -1
  58. package/dist/commands/update.js +13 -3
  59. package/dist/commands/update.js.map +1 -1
  60. package/dist/core/agent-adapter.d.ts +6 -0
  61. package/dist/core/agent-adapter.d.ts.map +1 -1
  62. package/dist/core/agent-adapter.js +56 -172
  63. package/dist/core/agent-adapter.js.map +1 -1
  64. package/dist/core/agents/defaults/code-generator.md +64 -0
  65. package/dist/core/agents/defaults/code-reviewer.md +5 -0
  66. package/dist/core/agents/defaults/compiler.md +7 -0
  67. package/dist/core/agents/defaults/compliance-checker.md +2 -0
  68. package/dist/core/agents/defaults/dependency-analyst.md +5 -0
  69. package/dist/core/agents/defaults/doc-sync-agent.md +5 -0
  70. package/dist/core/agents/defaults/effort-estimator.md +28 -0
  71. package/dist/core/agents/defaults/global-analyzer.md +66 -0
  72. package/dist/core/agents/defaults/impact-analyst.md +5 -0
  73. package/dist/core/agents/defaults/interaction-designer.md +5 -0
  74. package/dist/core/agents/defaults/performance-expert.md +2 -0
  75. package/dist/core/agents/defaults/product-analyst-backend.md +6 -0
  76. package/dist/core/agents/defaults/product-analyst-frontend.md +6 -0
  77. package/dist/core/agents/defaults/product-analyst.md +5 -0
  78. package/dist/core/agents/defaults/regression-tester.md +5 -0
  79. package/dist/core/agents/defaults/requirement-analyzer.md +72 -0
  80. package/dist/core/agents/defaults/risk-assessor.md +5 -0
  81. package/dist/core/agents/defaults/schedule-planner.md +5 -0
  82. package/dist/core/agents/defaults/security-reviewer-finance.md +6 -0
  83. package/dist/core/agents/defaults/security-reviewer.md +7 -0
  84. package/dist/core/agents/defaults/task-decomposer.md +5 -0
  85. package/dist/core/agents/defaults/test-engineer.md +2 -0
  86. package/dist/core/agents/defaults/test-reviewer.md +5 -0
  87. package/dist/core/agents/engine/agent-loader.d.ts.map +1 -1
  88. package/dist/core/agents/engine/agent-loader.js +76 -6
  89. package/dist/core/agents/engine/agent-loader.js.map +1 -1
  90. package/dist/core/agents/engine/types.d.ts +5 -0
  91. package/dist/core/agents/engine/types.d.ts.map +1 -1
  92. package/dist/core/analyze-engine.d.ts.map +1 -1
  93. package/dist/core/analyze-engine.js +73 -82
  94. package/dist/core/analyze-engine.js.map +1 -1
  95. package/dist/core/ask-engine.d.ts +0 -58
  96. package/dist/core/ask-engine.d.ts.map +1 -1
  97. package/dist/core/ask-engine.js +63 -361
  98. package/dist/core/ask-engine.js.map +1 -1
  99. package/dist/core/business-rules.d.ts +36 -0
  100. package/dist/core/business-rules.d.ts.map +1 -0
  101. package/dist/core/business-rules.js +109 -0
  102. package/dist/core/business-rules.js.map +1 -0
  103. package/dist/core/change-impact-global.d.ts.map +1 -1
  104. package/dist/core/change-impact-global.js +4 -3
  105. package/dist/core/change-impact-global.js.map +1 -1
  106. package/dist/core/code-scanner.d.ts +1 -0
  107. package/dist/core/code-scanner.d.ts.map +1 -1
  108. package/dist/core/code-scanner.js +32 -3
  109. package/dist/core/code-scanner.js.map +1 -1
  110. package/dist/core/content-delivery.d.ts +59 -0
  111. package/dist/core/content-delivery.d.ts.map +1 -0
  112. package/dist/core/content-delivery.js +219 -0
  113. package/dist/core/content-delivery.js.map +1 -0
  114. package/dist/core/global-artifacts.d.ts.map +1 -1
  115. package/dist/core/global-artifacts.js +262 -19
  116. package/dist/core/global-artifacts.js.map +1 -1
  117. package/dist/core/global-retrieval.d.ts +38 -0
  118. package/dist/core/global-retrieval.d.ts.map +1 -0
  119. package/dist/core/global-retrieval.js +100 -0
  120. package/dist/core/global-retrieval.js.map +1 -0
  121. package/dist/core/html-prototype.d.ts +22 -0
  122. package/dist/core/html-prototype.d.ts.map +1 -0
  123. package/dist/core/html-prototype.js +103 -0
  124. package/dist/core/html-prototype.js.map +1 -0
  125. package/dist/core/multi-lang-parser.d.ts +43 -0
  126. package/dist/core/multi-lang-parser.d.ts.map +1 -0
  127. package/dist/core/multi-lang-parser.js +317 -0
  128. package/dist/core/multi-lang-parser.js.map +1 -0
  129. package/dist/core/pipeline-engine.js +16 -16
  130. package/dist/core/pipeline-engine.js.map +1 -1
  131. package/dist/core/platform-inference.d.ts +35 -0
  132. package/dist/core/platform-inference.d.ts.map +1 -0
  133. package/dist/core/platform-inference.js +205 -0
  134. package/dist/core/platform-inference.js.map +1 -0
  135. package/dist/core/prompt-builder.d.ts +1 -1
  136. package/dist/core/prompt-builder.d.ts.map +1 -1
  137. package/dist/core/prompt-builder.js +62 -63
  138. package/dist/core/prompt-builder.js.map +1 -1
  139. package/dist/core/refresh-scheduler.d.ts +50 -0
  140. package/dist/core/refresh-scheduler.d.ts.map +1 -0
  141. package/dist/core/refresh-scheduler.js +139 -0
  142. package/dist/core/refresh-scheduler.js.map +1 -0
  143. package/dist/core/reverse-requirement.d.ts +54 -0
  144. package/dist/core/reverse-requirement.d.ts.map +1 -0
  145. package/dist/core/reverse-requirement.js +277 -0
  146. package/dist/core/reverse-requirement.js.map +1 -0
  147. package/dist/core/schemas/task.schema.d.ts +2 -2
  148. package/dist/core/spec-skeleton.d.ts.map +1 -1
  149. package/dist/core/spec-skeleton.js +123 -0
  150. package/dist/core/spec-skeleton.js.map +1 -1
  151. package/dist/core/unified-config.d.ts +14 -0
  152. package/dist/core/unified-config.d.ts.map +1 -1
  153. package/dist/core/unified-config.js +94 -10
  154. package/dist/core/unified-config.js.map +1 -1
  155. package/dist/core/unified-retrieval.d.ts.map +1 -1
  156. package/dist/core/unified-retrieval.js +34 -8
  157. package/dist/core/unified-retrieval.js.map +1 -1
  158. package/dist/utils/task-utils.d.ts +4 -0
  159. package/dist/utils/task-utils.d.ts.map +1 -1
  160. package/dist/utils/task-utils.js +18 -0
  161. package/dist/utils/task-utils.js.map +1 -1
  162. package/package.json +5 -3
  163. package/vendor/tree-sitter/tree-sitter-go.wasm +0 -0
  164. package/vendor/tree-sitter/tree-sitter-java.wasm +0 -0
  165. package/vendor/tree-sitter/tree-sitter-python.wasm +0 -0
  166. package/vendor/tree-sitter/tree-sitter-rust.wasm +0 -0
  167. package/.agents/agents/README.md +0 -79
  168. package/.agents/agents/spec-analyzer.md +0 -41
  169. package/.agents/agents/spec-architect.md +0 -57
  170. package/.agents/agents/spec-change-detector.md +0 -55
  171. package/.agents/agents/spec-clarifier.md +0 -83
  172. package/.agents/agents/spec-executor.md +0 -41
  173. package/.agents/agents/spec-gatekeeper.md +0 -84
  174. package/.agents/agents/spec-global-analyzer.md +0 -111
  175. package/.agents/agents/spec-knowledge-curator.md +0 -54
  176. package/.agents/agents/spec-reviewer.md +0 -46
  177. package/.agents/agents/spec-security-auditor.md +0 -56
  178. package/.agents/agents/spec-tester.md +0 -120
  179. package/.agents/skills/spec-analyze/references/analysis-report.md +0 -9
  180. package/.agents/skills/spec-execute/references/code-output.md +0 -13
  181. package/.agents/skills/spec-plan/references/plan-template.md +0 -29
  182. package/.agents/skills/spec-task-create/references/requirement-template.md +0 -23
  183. package/dist/commands/bugfix.d.ts +0 -17
  184. package/dist/commands/bugfix.d.ts.map +0 -1
  185. package/dist/commands/bugfix.js +0 -301
  186. package/dist/commands/bugfix.js.map +0 -1
  187. package/dist/commands/help-quick.d.ts +0 -3
  188. package/dist/commands/help-quick.d.ts.map +0 -1
  189. package/dist/commands/help-quick.js +0 -66
  190. package/dist/commands/help-quick.js.map +0 -1
  191. package/dist/commands/index-update.d.ts +0 -8
  192. package/dist/commands/index-update.d.ts.map +0 -1
  193. package/dist/commands/index-update.js +0 -180
  194. package/dist/commands/index-update.js.map +0 -1
  195. package/dist/commands/schedule.d.ts +0 -26
  196. package/dist/commands/schedule.d.ts.map +0 -1
  197. package/dist/commands/schedule.js +0 -182
  198. package/dist/commands/schedule.js.map +0 -1
  199. package/dist/commands/watch.d.ts +0 -11
  200. package/dist/commands/watch.d.ts.map +0 -1
  201. package/dist/commands/watch.js +0 -166
  202. package/dist/commands/watch.js.map +0 -1
  203. package/dist/core/ai-markdown.d.ts +0 -5
  204. package/dist/core/ai-markdown.d.ts.map +0 -1
  205. package/dist/core/ai-markdown.js +0 -29
  206. package/dist/core/ai-markdown.js.map +0 -1
  207. package/dist/core/schedule-engine.d.ts +0 -25
  208. package/dist/core/schedule-engine.d.ts.map +0 -1
  209. package/dist/core/schedule-engine.js +0 -281
  210. package/dist/core/schedule-engine.js.map +0 -1
  211. package/dist/core/schedule-store.d.ts +0 -119
  212. package/dist/core/schedule-store.d.ts.map +0 -1
  213. package/dist/core/schedule-store.js +0 -216
  214. package/dist/core/schedule-store.js.map +0 -1
@@ -8,155 +8,6 @@ allowed-tools: ["Bash", "Read"]
8
8
  disable-model-invocation: false
9
9
  ---
10
10
 
11
- # spec-task-create — 创建开发任务(专属逻辑)
11
+ 直接执行: execute_command("speccore ask '用户原话'")
12
12
 
13
- > **定位**:`/task-create` 快捷入口的专属预处理层
14
- > **原则**:不影响 `speccore ask` 的意图识别能力
15
-
16
- ---
17
-
18
- ## 调用方式
19
-
20
- ```
21
- /task-create [参数]
22
- /task-create -n "用户登录" --topic user-login -i Q1 -t feature
23
- /task-create --batch "登录页,注册页,首页" -i Q1 -t feature
24
- ```
25
-
26
- ---
27
-
28
- ## 执行流程
29
-
30
- ```
31
- 用户输入 /task-create [参数]
32
- │
33
- ▼
34
- ┌───────────────────────────────────────┐
35
- │ Step 1: 参数提取 │
36
- │ 从用户输入提取 name/topic/iteration/type │
37
- └───────────────┬───────────────────────┘
38
- │
39
- 参数缺失?
40
- │
41
- 是 ──► 输出交互式提示
42
- │
43
- 否 ──► 继续
44
- │
45
- ▼
46
- ┌───────────────────────────────────────┐
47
- │ Step 2: 参数补全 │
48
- │ topic 缺失 → AI 从中文名提取英文主题词 │
49
- │ iteration 缺失 → 读 context.json │
50
- └───────────────┬───────────────────────┘
51
- │
52
- ▼
53
- ┌───────────────────────────────────────┐
54
- │ Step 3: 前置校验 │
55
- │ - 迭代是否存在? │
56
- │ - 主题词是否有效? │
57
- │ - 是否命名冲突? │
58
- └───────────────┬───────────────────────┘
59
- │
60
- ▼
61
- ┌───────────────────────────────────────┐
62
- │ Step 4: 调用 speccore ask │
63
- └───────────────────────────────────────┘
64
- ```
65
-
66
- ---
67
-
68
- ## Step 1: 参数提取
69
-
70
- | 参数 | 短名 | 长名 | 必填 | 说明 |
71
- |:---|:---|:---|:---|:---|
72
- | name | -n | --name | 是 | 任务中文名称 |
73
- | topic | - | --topic | 否 | 英文主题词(用于目录命名)|
74
- | iteration | -i | --iteration | 否 | 目标迭代名 |
75
- | type | -t | --type | 否 | 任务类型: feature / bugfix / research / refactor |
76
- | batch | -b | --batch | 否 | 批量创建(逗号分隔的名称列表)|
77
- | owner | -o | --owner | 否 | 任务负责人 |
78
-
79
- ---
80
-
81
- ## Step 2: 参数缺失 → 交互式提示
82
-
83
- ```
84
- 📋 speccore task-create — 创建开发任务
85
-
86
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
87
- 📋 当前环境
88
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
89
- 迭代: Iteration-001-meeting-system(从 context.json 读取)
90
-
91
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
92
- 📖 可用参数
93
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
94
- -n, --name <name> 任务中文名称(必填)
95
- --topic <topic> 英文主题词(如 user-login, payment)
96
- 用于生成目录名,缺失时 AI 自动提取
97
- -i, --iteration <name> 目标迭代(默认: 当前迭代)
98
- -t, --type <type> 任务类型: feature | bugfix | research | refactor
99
- 默认: feature
100
- -b, --batch <names> 批量创建(逗号分隔,如 "登录,注册,首页")
101
- -o, --owner <name> 任务负责人
102
-
103
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
104
- 💡 使用示例
105
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
106
- /task-create -n "用户登录" --topic user-login # 创建单个任务
107
- /task-create -n "支付接口" -t feature # AI 自动提取主题词
108
- /task-create --batch "登录页,注册页,首页" # 批量创建 3 个任务
109
- /task-create -n "订单退款" -i Q1 -t bugfix # 指定迭代和类型
110
-
111
- 请补充 --name 参数后重新调用。
112
- ```
113
-
114
- ---
115
-
116
- ## Step 3: 前置校验
117
-
118
- ### 3.1 检查迭代是否存在
119
- ```bash
120
- # 检查迭代目录是否存在
121
- # 如果不存在 → 提示用户先创建迭代
122
- ```
123
-
124
- ### 3.2 提取英文主题词
125
- ```bash
126
- # 如果用户未提供 --topic,从 --name 提取英文主题词
127
- # "用户登录" → "user-login"
128
- # "支付接口修复" → "payment-fix"
129
- # "批量创建"时不单独提取,每个名称各自提取
130
- ```
131
-
132
- ### 3.3 检查命名冲突
133
- ```bash
134
- # 检查 030-tasks/ 下是否已有同名 Task
135
- # 如果冲突 → 提示用户是否覆盖或改名
136
- ```
137
-
138
- ### 3.4 检查任务类型
139
- ```bash
140
- # 有效类型: feature, bugfix, research, refactor
141
- # 如果无效 → 提示可用类型
142
- ```
143
-
144
- ---
145
-
146
- ## Step 4: 调用 speccore ask
147
-
148
- ```bash
149
- execute_command("speccore ask '创建 Task-XXX 任务...'")
150
- ```
151
-
152
- > ⚠️ 最终仍然调用 `speccore ask`,不要绕过 ask 引擎。
153
-
154
- ---
155
-
156
- ## 批量创建模式
157
-
158
- 当使用 `--batch` 时:
159
- 1. 解析逗号分隔的名称列表
160
- 2. 为每个名称提取英文主题词
161
- 3. 逐个创建 Task 目录
162
- 4. 输出批量创建结果汇总
13
+ 不要输出命令文本,不要分析意图,一切交给 speccore ask。
@@ -9,218 +9,6 @@ allowed-tools: ["Bash", "Read"]
9
9
  disable-model-invocation: false
10
10
  ---
11
11
 
12
- # spec-verify — 测试验证(专属逻辑)
12
+ 直接执行: execute_command("speccore ask '用户原话'")
13
13
 
14
- > **定位**:`/verify` 快捷入口的专属预处理层
15
- > **覆盖命令**:`speccore verify`
16
- > **原则**:不影响 `speccore ask` 的意图识别能力
17
-
18
- ---
19
-
20
- ## 调用方式
21
-
22
- ```
23
- /verify [自然语言或参数]
24
- /verify 跑一下冒烟测试
25
- /verify --stage pr
26
- /verify --config ./tests/smoke.yaml --env-file test
27
- /verify --project-dir ~/projects/other-app --stage deploy
28
- ```
29
-
30
- ---
31
-
32
- ## 执行流程
33
-
34
- ```
35
- 用户输入 /verify [输入]
36
- │
37
- ▼
38
- ┌───────────────────────────────────────┐
39
- │ Step 1: 意图识别 │
40
- │ 判断测试类型、阶段、目标项目 │
41
- │ 从自然语言或显式参数提取参数 │
42
- └───────────────┬───────────────────────┘
43
- │
44
- 参数缺失?
45
- │
46
- 是 ──► 输出交互式提示
47
- │
48
- 否 ──► 继续
49
- │
50
- ▼
51
- ┌───────────────────────────────────────┐
52
- │ Step 2: 前置校验 │
53
- │ - 测试配置文件是否存在? │
54
- │ - 环境配置是否存在? │
55
- │ - 外部项目目录是否有效? │
56
- └───────────────┬───────────────────────┘
57
- │
58
- 校验失败?
59
- │
60
- 是 ──► 输出问题 + 修复建议
61
- │
62
- 否 ──► 继续
63
- │
64
- ▼
65
- ┌───────────────────────────────────────┐
66
- │ Step 3: 执行 │
67
- │ 直接 execute_command 执行 CLI 命令 │
68
- └───────────────────────────────────────┘
69
- ```
70
-
71
- ---
72
-
73
- ## Step 1: 意图识别与参数提取
74
-
75
- ### 双模式支持
76
-
77
- **模式 A — 自然语言(默认)**:
78
- ```
79
- /verify 跑冒烟测试
80
- /verify PR 前检查一下
81
- /verify 发布前全量回归
82
- /verify 测试一下 H5
83
- ```
84
- AI 从自然语言中提取参数。
85
-
86
- **模式 B — 显式参数**:
87
- ```
88
- /verify --stage deploy --project-dir ~/my-app
89
- /verify --config ./tests/smoke.yaml --env-file staging
90
- /verify --ui --url https://example.com
91
- ```
92
- 直接解析参数,不经过自然语言理解。
93
-
94
- ### 参数定义
95
-
96
- | 参数 | 短名 | 长名 | 必填 | 默认值 | 说明 |
97
- |:---|:---|:---|:---|:---|:---|
98
- | stage | -s | --stage | 否 | - | 测试阶段:dev/pr/deploy/release |
99
- | config | -c | --config | 否 | - | 测试场景配置文件路径 |
100
- | env-file | -e | --env-file | 否 | - | 环境配置文件路径或环境名 |
101
- | ui | -u | --ui | 否 | false | 启用 UI 验证 |
102
- | smoke-only | - | --smoke-only | 否 | false | 仅冒烟测试 |
103
- | visual-only | - | --visual-only | 否 | false | 仅视觉检查 |
104
- | api-contract | - | --api-contract | 否 | false | API 契约测试 |
105
- | perf | - | --perf | 否 | false | 性能基线测试 |
106
- | type | -t | --type | 否 | - | 验证类型:compile/lint/test/all |
107
- | url | - | --url | 否 | - | 目标 URL(独立模式) |
108
- | spec | - | --spec | 否 | - | VERIFY_SPEC.yaml 路径 |
109
- | router-file | - | --router-file | 否 | - | 前端路由配置文件路径 |
110
- | project-dir | - | --project-dir | 否 | - | 外部项目目录路径 |
111
-
112
- ### 意图映射表
113
-
114
- | 用户说法 | 推断命令 | 推断参数 |
115
- |:---|:---|:---|
116
- | "跑冒烟测试" | verify | --stage deploy |
117
- | "PR 前检查一下" | verify | --stage pr |
118
- | "发布前全量回归" | verify | --stage release |
119
- | "开发时跑测试" | verify | --stage dev |
120
- | "测试一下 H5" | verify | --ui --config ./tests/smoke.yaml |
121
- | "验证 API 契约" | verify | --api-contract |
122
- | "跑视觉检查" | verify | --ui --visual-only |
123
- | "测试外部项目" | verify | --project-dir {路径} --stage deploy |
124
-
125
- ### 阶段映射详情
126
-
127
- | stage | 自动参数 | 覆盖范围 |
128
- |:---|:---|:---|
129
- | dev | --type all | 编译 + Lint + 单元测试 |
130
- | pr | --type all --ui --smoke-only --api-contract | 代码质量 + 关键页面冒烟 + API 契约 |
131
- | deploy | --ui --smoke-only | 仅 UI 冒烟测试 |
132
- | release | --ui --api-contract --perf | 全量 UI + API + 性能回归 |
133
-
134
- ---
135
-
136
- ## Step 2: 参数缺失 → 交互式提示
137
-
138
- ### 测试阶段缺失
139
-
140
- ```
141
- 🧪 speccore verify — 请选择测试阶段
142
-
143
- 可用阶段:
144
- [1] dev — 开发阶段(编译 + Lint + 单元测试)
145
- [2] pr — PR 阶段(代码质量 + 冒烟 + API 契约)
146
- [3] deploy — 部署阶段(仅冒烟测试)
147
- [4] release — 发布阶段(全量回归)
148
-
149
- 请回复阶段名或序号(如:deploy 或 3)
150
- ```
151
-
152
- ### 测试配置缺失(--stage 指定但无对应配置)
153
-
154
- ```
155
- ⚠️ 未找到阶段对应的测试配置文件
156
-
157
- 建议操作:
158
- 1. 运行 speccore update 初始化默认测试配置模板
159
- 2. 手动创建 .speccore/tests/smoke.yaml
160
- 3. 使用 --config 显式指定配置路径
161
- ```
162
-
163
- ---
164
-
165
- ## Step 3: 前置校验
166
-
167
- ### 校验项
168
-
169
- 1. **外部项目目录有效性**(指定 --project-dir 时)
170
- - 检查目录是否存在
171
- - 检查是否为 Git 仓库(可选)
172
-
173
- 2. **测试配置文件存在性**(指定 --config 时)
174
- - 检查文件是否存在
175
- - 不存在 → 提示可用配置列表
176
-
177
- 3. **环境配置存在性**(指定 --env-file 时)
178
- - 检查 `.speccore/environments/{env}.yaml` 是否存在
179
- - 不存在 → 提示可用环境列表
180
-
181
- ---
182
-
183
- ## 命令组装规则
184
-
185
- ### verify(默认)
186
- ```bash
187
- speccore verify [--stage {stage}] [--config {path}] [--env-file {env}] [--ui] [--smoke-only] [--visual-only] [--api-contract] [--perf] [--type {type}] [--url {url}] [--spec {spec}] [--router-file {path}] [--project-dir {dir}]
188
- ```
189
-
190
- **意图 → 命令映射**:
191
- - 用户说"冒烟"、"smoke" → `--stage deploy` 或 `--ui --smoke-only`
192
- - 用户说"PR"、"提交前" → `--stage pr`
193
- - 用户说"发布"、"上线前"、"回归" → `--stage release`
194
- - 用户说"编译"、"lint"、"单元测试" → `--stage dev`
195
- - 用户说"视觉"、"截图" → `--ui --visual-only`
196
- - 用户说"API"、"契约" → `--api-contract`
197
- - 用户说"性能" → `--perf`
198
-
199
- ---
200
-
201
- ## 外部项目测试
202
-
203
- ```bash
204
- /verify --project-dir ~/projects/other-app --stage deploy
205
- /verify --project-dir ~/projects/other-app --config ./tests/smoke.yaml
206
- ```
207
-
208
- 最小外部项目配置:
209
- ```yaml
210
- # ~/my-test-projects/minimal/.speccore/environments/test.yaml
211
- env: test
212
- tests:
213
- base_urls:
214
- h5: https://example.com
215
- ```
216
-
217
- ---
218
-
219
- ## 错误处理
220
-
221
- | 场景 | 提示 |
222
- |:---|:---|
223
- | 测试配置不存在 | "未找到测试配置文件,运行 `speccore update` 初始化默认配置" |
224
- | 环境配置不存在 | "环境 {env} 未配置,运行 `speccore update` 初始化默认环境" |
225
- | 外部项目目录无效 | "目录 {path} 不存在,请检查路径" |
226
- | 视觉模型调用失败 | "视觉模型调用失败,检查 DASHSCOPE_API_KEY / OPENAI_API_KEY 环境变量" |
14
+ 不要输出命令文本,不要分析意图,一切交给 speccore ask。
@@ -8,72 +8,6 @@ allowed-tools: ["Bash", "Read"]
8
8
  disable-model-invocation: false
9
9
  ---
10
10
 
11
- # spec-welcome — 欢迎页(专属逻辑)
12
-
13
- > **定位**:`/welcome` 快捷入口的专属预处理层
14
- > **原则**:不影响 `speccore ask` 的意图识别能力
15
-
16
- ---
17
-
18
- ## 调用方式
19
-
20
- ```
21
- /welcome
22
- ```
23
-
24
- ---
25
-
26
- ## 执行流程
27
-
28
- ```
29
- 用户输入 /welcome
30
- │
31
- ▼
32
- ┌───────────────────────────────────────┐
33
- │ Step 1: 前置校验 │
34
- │ 检查 .speccore/ 目录是否存在 │
35
- └───────────────────────────────────────┘
36
- │
37
- ┌────┴────┐
38
- ▼ ▼
39
- 不存在 存在
40
- │ │
41
- ▼ ▼
42
- 输出提示 调用 ask
43
- 引导 init 执行 welcome
44
- ```
45
-
46
- ---
47
-
48
- ## 前置校验
49
-
50
- ### 检查项目初始化状态
51
-
52
- ```bash
53
- ls -d .speccore 2>/dev/null && echo "initialized" || echo "not-initialized"
54
- ```
55
-
56
- ### 未初始化时的交互提示
57
-
58
- ```
59
- ⚠️ 项目尚未初始化
60
-
61
- 当前目录未检测到 .speccore/ 规范数据库,无法展示项目名片。
62
-
63
- 建议操作:
64
- speccore init # 初始化 SpecCore 项目
65
-
66
- 初始化完成后,可重新执行 /welcome 查看项目状态。
67
- ```
68
-
69
- ---
70
-
71
- ## 执行
72
-
73
- 项目已初始化时,直接调用 `speccore ask`:
74
-
75
- ```
76
- 直接执行: execute_command("speccore ask '显示项目欢迎页'")
11
+ 直接执行: execute_command("speccore ask '用户原话'")
77
12
 
78
13
  不要输出命令文本,不要分析意图,一切交给 speccore ask。
79
- ```
@@ -37,6 +37,14 @@ allowed-tools: ["Bash", "Read", "Write", "Edit"]
37
37
  - `[SPECCORE_DASHBOARD: <path>]` → **立即执行** `present_files(<path>)` 展示仪表盘页
38
38
  - `[SPECCORE_EXEC: <cmd>]` → 直接 `execute_command` 执行
39
39
  - `[SPECCORE_INTENT]` → 展示给用户确认
40
+ - `[SPECCORE_GATE_A]` / `[SPECCORE_GATE_B]` / `[SPECCORE_GATE_C]` → **🚨 停下来 review,等用户确认后再继续,禁止自动续跑**:
41
+ 1. 读取 stdout 中闸口块的 title + hint + 「确认后继续」命令
42
+ 2. 按闸口类型把 review 产物展示给用户:
43
+ - **Gate A(Spec 定稿)** → 展示 `020-specs/` 的 REQUIREMENT / ANALYSIS / TECH / API_CONTRACT,让用户确认功能单元边界、端覆盖、验收标准
44
+ - **Gate B(代码 review)** → 展示 `.issues.md` / `.deviations` 及 AI 标记的低置信点,让用户确认或修正
45
+ - **Gate C(部署前确认)** → 明确告知这是 destructive 部署操作,展示部署目标(env/platform),必须用户明确同意
46
+ 3. 停下来问用户「是否确认继续?」,**用户明确确认后**才执行「确认后继续」命令(`speccore run --auto --from <stage>`)
47
+ 4. ❌ 禁止在用户未确认时自动执行续跑命令;❌ 禁止只说"检测到闸口"而不展示 review 产物
40
48
 
41
49
  ## ⛔ 最高优先级:用户意图优先于效率判断
42
50
 
@@ -284,12 +292,16 @@ allowed-tools: ["Bash", "Read", "Write", "Edit"]
284
292
  | {owner} 的工作回顾 | owner | `speccore retro --owner {owner}` |
285
293
  | {type} 类型的回顾 | type | `speccore retro --type {type}` |
286
294
 
287
- ### 智能级联
295
+ ### 智能级联 / 端到端流水线
288
296
  | 用户说法 | 提取参数 | CLI 命令 |
289
297
  | :--- | :--- | :--- |
290
298
  | 智能级联/全流程推进 | - | `speccore dev` |
291
299
  | 推进项目/继续开发 | - | `speccore dev` |
292
- | 全自动推进 | - | `speccore dev --auto` |
300
+ | 全自动推进/跑流水线 | - | `speccore run` |
301
+ | 端到端/一键开发/自动开发 | demand? | `speccore run "{demand}"` |
302
+ | {一句话需求描述}(如"做积分功能") | demand | `speccore run "{demand}"` |
303
+ | 演示模式跑一遍 {需求} | demand | `speccore run --demo "{demand}"` |
304
+ | 从 {stage} 继续 | stage | `speccore run --auto --from {stage}` |
293
305
 
294
306
  ### 全量层管理
295
307
  | 用户说法 | 提取参数 | CLI 命令 |
package/README.en.md CHANGED
@@ -5,9 +5,9 @@
5
5
  > Juggling 5 microservices and 3 frontend platforms? SpecCore turns requirements → splits → plans → code → delivery into a traceable, automated pipeline.
6
6
 
7
7
  ```
8
- init → doc2spec → analyze → split → plan → execute → pr → done
9
- 🚀Setup 📝Import 🧠Analyze 📦Split 📋Plan 💻Build 🔀PR ✅Archive
10
- ✅ CLI 🔒 AI 🔒 AI 🔒 AI 🔒 AI 🔒 AI 🔒 AI 🔒 AI
8
+ init → doc2spec → analyze(overview) → analyze(units) → split → plan → execute → pr → done → spec2doc
9
+ 🚀Setup 📝Import 🧠Analyze 🧠Analyze 📦Split 📋Plan 💻Build 🔀PR ✅Archive 📤Export
10
+ ✅ CLI 🔒 AI 🔒 AI 🔒 AI 🔒 AI 🔒 AI 🔒 AI 🔒 AI 🔒 AI 🔒 AI
11
11
  ```
12
12
 
13
13
  ## 🚀 5 Minutes to First Task
@@ -53,7 +53,7 @@ speccore iteration create -n Q1 # Create iteration
53
53
  | **Split requirements into tasks** | `speccore iteration split -I Q1 --interactive` |
54
54
  | **Fix a bug** | `speccore task new -n "Login timeout" --type=bugfix` |
55
55
  | **Batch fix bugs** | `speccore task new --batch-file=bugs.xlsx --type=bugfix` |
56
- | **Schedule overnight execution** | `speccore schedule create --at "02:00" --all -I Q1` |
56
+ | **Refresh retrieval layers** | `speccore refresh` |
57
57
  | **AI auto-development** | `@spec-ask "execute Task-001"` 🔒 |
58
58
  | **Create a Pull Request** | `@spec-ask "create PR for Task-001"` 🔒 |
59
59
  | **Archive a completed task** | `@spec-ask "archive Task-001"` 🔒 |
@@ -70,13 +70,13 @@ speccore iteration create -n Q1 # Create iteration
70
70
  |:---|:---|:---|
71
71
  | `🧠 pr --interactive` | `🧠 change --interactive` | `🧠 done --interactive` |
72
72
 
73
- ## ⏰ Scheduled Execution
73
+ ## 🔄 Unified Retrieval Refresh
74
74
 
75
75
  ```bash
76
- speccore task new -n "Data migration" --schedule=night # Queue for night
77
- speccore schedule create --at "2026-08-10 02:00" --all -I Q1 # Exact time
78
- speccore schedule daemon start # Auto-execute on schedule
79
- # 🔒 AI: @spec-ask "run all scheduled tasks"
76
+ speccore refresh # Refresh all retrieval layers (code index + RAG + knowledge graph)
77
+ speccore refresh --code # Only code index
78
+ speccore refresh --rag # Only document RAG
79
+ speccore refresh --graph # Only knowledge graph
80
80
  ```
81
81
 
82
82
  ## 📚 Documentation
package/README.md CHANGED
@@ -367,7 +367,8 @@ speccore --version # v8.3.167
367
367
  | `graph` | `g` | 🕸️ 统一图谱查询(知识+代码)+ Mermaid 渲染 |
368
368
  | `knowledge` | `kg` | 🌐 知识图谱可视化 + 衰减检测 + 代码图谱查询 |
369
369
  | `track` | `trk` | 🔗 🔒 REQ→Task→Code 全链路 |
370
- | `search` | `sh` | 🔍 跨 Spec 全文搜索 |
370
+ | `search` | `sh` | 🔍 跨 Spec 全文搜索 + 全局语义检索(--global) |
371
+ | `refresh` | `rf` | 🔄 统一刷新检索层(代码索引 + 文档 RAG + 知识图谱)+ 全局文档过期检测 |
371
372
  | `retro` | `rt` | 📝 🔒 任务回顾复盘 + 评分 |
372
373
  | `rename` | `rn` | ✏️ 🔒 重命名 |
373
374
  | `history` | `hi` | 📜 历史记录(操作日志 / 需求变更) |
package/dist/cli.js CHANGED
@@ -163,21 +163,7 @@ commander_1.program
163
163
  .option('-i, --iteration <iteration>', 'Target iteration')
164
164
  .option('--export <path>', 'Export HTML to custom path')
165
165
  .action(knowledge_1.knowledgeCommand);
166
- commander_1.program
167
- .command('knowledge-explain <node>')
168
- .alias('kg-explain')
169
- .description('解释代码知识图谱中的节点及其连接')
170
- .action(knowledge_1.knowledgeExplainCommand);
171
- commander_1.program
172
- .command('knowledge-path <from> <to>')
173
- .alias('kg-path')
174
- .description('查找代码图谱中两个节点之间的最短路径')
175
- .action(knowledge_1.knowledgePathCommand);
176
- commander_1.program
177
- .command('knowledge-query <question>')
178
- .alias('kg-query')
179
- .description('自然语言查询代码知识图谱')
180
- .action(knowledge_1.knowledgeQueryCommand);
166
+ // v8.3.186+: knowledge-explain/path/query 已合并到 graph 子命令(graph 是超集,融合知识图谱+代码图谱)
181
167
  const graphCmd = commander_1.program
182
168
  .command('graph')
183
169
  .alias('g')
@@ -236,13 +222,28 @@ commander_1.program
236
222
  .description('智能级联:--auto 全自动流水线,--from/--to 指定起止阶段')
237
223
  .option('-i, --iteration <iteration>', 'Target iteration')
238
224
  .option('--force', 'Auto-execute without confirmation')
239
- .option('--auto', '全自动流水线:init→doc2spec→analyze→split→plan→execute→pr→done→spec2doc')
240
- .option('--auto-steps <steps>', '指定连续步骤自动执行(如 analyze,split,execute)')
241
- .option('--from <phase>', '从指定阶段开始(init/doc2spec/analyze/split/plan/execute/pr/done/spec2doc)')
242
- .option('--to <phase>', '到指定阶段结束(init/doc2spec/analyze/split/plan/execute/pr/done/spec2doc)')
225
+ .option('--auto', '全自动流水线:init→clarify→doc2spec→analyze→validate→split→plan→execute→verify→pipeline→pr→done→spec2doc')
226
+ .option('--auto-steps <steps>', '指定连续步骤自动执行(如 analyze,validate,split,execute)')
227
+ .option('--from <phase>', '从指定阶段开始(init/clarify/doc2spec/analyze/validate/split/plan/execute/verify/pipeline/pr/done/spec2doc)')
228
+ .option('--to <phase>', '到指定阶段结束(init/clarify/doc2spec/analyze/validate/split/plan/execute/verify/pipeline/pr/done/spec2doc)')
229
+ .option('--demo', '演示模式(放宽闸口 A/B,保留部署前确认)')
243
230
  .option('--web', '强制输出 HTML 页面')
244
231
  .option('--lang <lang>', 'en 英文 / zh 中文(默认中文)')
245
232
  .action(dev_1.devCommand);
233
+ commander_1.program
234
+ .command('run [demand...]')
235
+ .alias('r')
236
+ .description('端到端流水线:一句话需求 → 澄清 → 分析 → 拆分 → 执行 → 验证 → 部署(默认三闸口,--demo 放宽 A/B)')
237
+ .option('-i, --iteration <iteration>', 'Target iteration')
238
+ .option('--auto', '全自动(run 默认即全自动,此选项为续跑一致性保留)')
239
+ .option('--from <phase>', '从指定阶段开始(init/clarify/doc2spec/analyze/validate/split/plan/execute/verify/pipeline/pr/done/spec2doc)')
240
+ .option('--to <phase>', '到指定阶段结束(同上)')
241
+ .option('--demo', '演示模式(放宽闸口 A/B,保留部署前确认)')
242
+ .option('--env <env>', '部署环境(透传给 pipeline,默认 staging)')
243
+ .action((demand, options) => {
244
+ // pipeline: true 让 devCommand 走 autoPipeline(非 TTY 下不会落到 HTML 渲染分支)
245
+ (0, dev_1.devCommand)({ ...options, auto: true, pipeline: true, demand: demand && demand.length ? demand.join(' ') : undefined });
246
+ });
246
247
  commander_1.program
247
248
  .command('prompts')
248
249
  .alias('pt')
@@ -610,13 +611,8 @@ commander_1.program
610
611
  .description('项目状态 → status-panel(同一入口)')
611
612
  .option('-i, --iteration <iteration>', 'Target iteration')
612
613
  .option('-a, --assignee <assignee>', 'Filter by assignee')
614
+ .option('--health', '项目健康度报告(原 health 命令,已合并)')
613
615
  .action(status_panel_1.statusPanelCommand);
614
- commander_1.program
615
- .command('health')
616
- .alias('hl')
617
- .description('项目健康度 → status-panel --health')
618
- .option('-i, --iteration <iteration>', 'Target iteration')
619
- .action((opts) => (0, status_panel_1.statusPanelCommand)({ ...opts, health: true }));
620
616
  commander_1.program
621
617
  .command('progress')
622
618
  .alias('pg')
@@ -708,6 +704,7 @@ commander_1.program
708
704
  .option('--get <key>', 'Get configuration value by path (e.g., arbitration.mode)')
709
705
  .option('--set <key=value>', 'Set configuration value (e.g., arbitration.mode=l1-only)')
710
706
  .option('--upgrade', 'Upgrade config structure to latest schema_version')
707
+ .option('--project', 'Operate on project config (.speccore/PROJECT.yaml) instead of system config')
711
708
  .option('-r, --rule <name>', 'Target spec-rule (CONSTITUTION.md)')
712
709
  .option('-t, --tech <target>', 'Target tech-stack (TECH_STACK.md): <端名>')
713
710
  .option('--reset', 'Reset to default configuration')
@@ -849,6 +846,7 @@ commander_1.program
849
846
  .option('--interactive', '交互: AI 提问 → 回答 → 优化')
850
847
  .option('--prompt', '输出结构化 Prompt 到 stdout(Skill 协作模式)')
851
848
  .option('--with-code', '结合 CONSTITUTION.md 配置的工程源码一起分析')
849
+ .option('--from-code', '从源码反推候选需求(两跳:逐模块 IR → 合成 UR,含 EARS 验收标准)')
852
850
  .option('--no-source', '不读取源码内容(默认会读)')
853
851
  .option('--source-scope <dirs>', '指定源码扫描目录(逗号分隔,如 src/commands,src/core)')
854
852
  .option('--supplement', '补充模式:追加未覆盖的源码到现有报告(不重新生成)')
@@ -1026,6 +1024,7 @@ commander_1.program
1026
1024
  .description('全文搜索:跨所有 Spec 文件关键词检索')
1027
1025
  .option('--task <id>', 'Limit search to a task')
1028
1026
  .option('--iteration <name>', 'Limit search to an iteration')
1027
+ .option('--global', '全局层语义检索(RAG + 知识图谱加分,而非关键词搜索)')
1029
1028
  .action((query, opts) => (0, search_1.searchCommand)({ ...opts, query }));
1030
1029
  commander_1.program
1031
1030
  .command('welcome')