speccore 8.3.59 → 8.3.61

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 (65) hide show
  1. package/.agents/skills/spec-deploy/SKILL.md +311 -0
  2. package/.agents/skills/spec-verify/SKILL.md +226 -0
  3. package/README.md +60 -3
  4. package/dist/cli.js +52 -0
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/about.d.ts.map +1 -1
  7. package/dist/commands/about.js +9 -2
  8. package/dist/commands/about.js.map +1 -1
  9. package/dist/commands/build.d.ts +9 -0
  10. package/dist/commands/build.d.ts.map +1 -0
  11. package/dist/commands/build.js +180 -0
  12. package/dist/commands/build.js.map +1 -0
  13. package/dist/commands/deploy.d.ts +11 -0
  14. package/dist/commands/deploy.d.ts.map +1 -0
  15. package/dist/commands/deploy.js +118 -0
  16. package/dist/commands/deploy.js.map +1 -0
  17. package/dist/commands/init.d.ts.map +1 -1
  18. package/dist/commands/init.js +2 -0
  19. package/dist/commands/init.js.map +1 -1
  20. package/dist/commands/iteration/split.d.ts.map +1 -1
  21. package/dist/commands/iteration/split.js +28 -0
  22. package/dist/commands/iteration/split.js.map +1 -1
  23. package/dist/commands/pipeline.d.ts +10 -0
  24. package/dist/commands/pipeline.d.ts.map +1 -0
  25. package/dist/commands/pipeline.js +365 -0
  26. package/dist/commands/pipeline.js.map +1 -0
  27. package/dist/commands/pr.d.ts +3 -0
  28. package/dist/commands/pr.d.ts.map +1 -1
  29. package/dist/commands/pr.js +218 -0
  30. package/dist/commands/pr.js.map +1 -1
  31. package/dist/commands/update-env-configs.d.ts +3 -0
  32. package/dist/commands/update-env-configs.d.ts.map +1 -0
  33. package/dist/commands/update-env-configs.js +252 -0
  34. package/dist/commands/update-env-configs.js.map +1 -0
  35. package/dist/commands/update.d.ts.map +1 -1
  36. package/dist/commands/update.js +13 -0
  37. package/dist/commands/update.js.map +1 -1
  38. package/dist/commands/verify.d.ts +3 -0
  39. package/dist/commands/verify.d.ts.map +1 -1
  40. package/dist/commands/verify.js +330 -3
  41. package/dist/commands/verify.js.map +1 -1
  42. package/dist/core/deploy/engine.d.ts +25 -0
  43. package/dist/core/deploy/engine.d.ts.map +1 -0
  44. package/dist/core/deploy/engine.js +348 -0
  45. package/dist/core/deploy/engine.js.map +1 -0
  46. package/dist/core/environment-config.d.ts +61 -0
  47. package/dist/core/environment-config.d.ts.map +1 -0
  48. package/dist/core/environment-config.js +178 -0
  49. package/dist/core/environment-config.js.map +1 -0
  50. package/dist/core/pipeline-test.d.ts +83 -0
  51. package/dist/core/pipeline-test.d.ts.map +1 -0
  52. package/dist/core/pipeline-test.js +467 -0
  53. package/dist/core/pipeline-test.js.map +1 -0
  54. package/dist/core/test-config.d.ts +39 -0
  55. package/dist/core/test-config.d.ts.map +1 -0
  56. package/dist/core/test-config.js +162 -0
  57. package/dist/core/test-config.js.map +1 -0
  58. package/dist/core/ui-verify/spec-generator.d.ts.map +1 -1
  59. package/dist/core/ui-verify/spec-generator.js +27 -0
  60. package/dist/core/ui-verify/spec-generator.js.map +1 -1
  61. package/dist/core/unified-config.d.ts +49 -0
  62. package/dist/core/unified-config.d.ts.map +1 -1
  63. package/dist/core/unified-config.js +89 -0
  64. package/dist/core/unified-config.js.map +1 -1
  65. package/package.json +1 -1
@@ -0,0 +1,311 @@
1
+ ---
2
+ name: spec-deploy
3
+ description: >
4
+ 部署专属 Skill。覆盖 build / deploy / pipeline 命令的意图识别与参数提取。
5
+ 支持自然语言("部署到测试环境")和显式参数(--env test --all)。
6
+ 参数缺失时交互式提示,前置校验环境配置与平台有效性。
7
+ 支持 Pipeline 内置测试节点(--test-enabled)和分层测试策略。
8
+ 不影响 speccore ask 的意图识别能力。
9
+ allowed-tools: ["Bash", "Read"]
10
+ disable-model-invocation: false
11
+ ---
12
+
13
+ # spec-deploy — 构建与部署(专属逻辑)
14
+
15
+ > **定位**:`/deploy` 快捷入口的专属预处理层
16
+ > **覆盖命令**:`speccore build`、`speccore deploy`、`speccore pipeline`
17
+ > **原则**:不影响 `speccore ask` 的意图识别能力
18
+
19
+ ---
20
+
21
+ ## 调用方式
22
+
23
+ ```
24
+ /deploy [自然语言或参数]
25
+ /deploy 部署到测试环境
26
+ /deploy --env test --platforms h5,api
27
+ /deploy --env staging --all --dry-run
28
+ /build --platform h5 --env local
29
+
30
+ # 测试外部项目(非当前 SpecCore 项目)
31
+ /deploy --project-dir ~/projects/other-app --env staging --all
32
+ /verify --project-dir ~/projects/third-party-api --config ./tests/api.yaml --env-file test
33
+ ```
34
+
35
+ ---
36
+
37
+ ## 外部项目支持(v8.3.60+)
38
+
39
+ `--project-dir` 是**全局选项**,所有命令自动继承。SpecCore 的能力可以"走出去",用于任意外部项目,不仅限于当前 SpecCore 管理的项目。
40
+
41
+ ### 原理
42
+
43
+ ```
44
+ speccore <任意命令> --project-dir <外部目录>
45
+ │
46
+ ▼
47
+ 全局 preAction hook
48
+ │
49
+ ▼
50
+ process.chdir(外部目录)
51
+ │
52
+ ▼
53
+ 所有配置从外部目录读取
54
+ 所有操作在外部目录执行
55
+ ```
56
+
57
+ ### 外部项目目录结构
58
+
59
+ ```
60
+ ~/my-test-projects/
61
+ ├── company-app/
62
+ │ ├── PROJECT.yaml # 定义 platforms(可选)
63
+ │ ├── .speccore/
64
+ │ │ └── environments/
65
+ │ │ ├── staging.yaml # 环境配置 + tests.base_urls
66
+ │ │ └── production.yaml
67
+ │ ├── tests/
68
+ │ │ ├── smoke.yaml # 测试场景
69
+ │ │ └── api.yaml
70
+ │ └── API_CONTRACT.yaml # API 契约(可选)
71
+ │
72
+ └── third-party-api/
73
+ ├── .speccore/
74
+ │ └── environments/
75
+ │ └── test.yaml
76
+ └── tests/
77
+ └── quick.yaml
78
+ ```
79
+
80
+ ### 各命令外部项目示例
81
+
82
+ ```bash
83
+ # ===== 测试相关 =====
84
+ # Pipeline 测试外部项目
85
+ speccore pipeline --project-dir ~/my-test-projects/company-app --env staging --all
86
+
87
+ # Verify 测试外部项目
88
+ speccore verify --project-dir ~/my-test-projects/company-app --config ./tests/smoke.yaml
89
+
90
+ # 仅做构建检查(无需 PROJECT.yaml)
91
+ speccore verify --project-dir ~/my-test-projects/company-app --ui --url https://staging.example.com
92
+
93
+ # ===== 文档转换(像 doc2spec 一样外用)=====
94
+ # 将外部项目的 PRD 转换为 Spec
95
+ speccore doc2spec --project-dir ~/my-test-projects/company-app --input ./docs/requirement.docx
96
+
97
+ # 将外部项目的 Spec 导出为 Word
98
+ speccore spec2doc --project-dir ~/my-test-projects/company-app --output ./reports/
99
+
100
+ # ===== 项目诊断 =====
101
+ # 诊断外部项目的健康度
102
+ speccore doctor --project-dir ~/my-test-projects/company-app --fix
103
+
104
+ # ===== 搜索 =====
105
+ # 在外部项目中搜索文档
106
+ speccore search --project-dir ~/my-test-projects/company-app "登录相关的需求"
107
+
108
+ # ===== 构建部署 =====
109
+ # 构建/部署外部项目
110
+ speccore build --project-dir ~/my-test-projects/company-app --env staging --platform h5
111
+ speccore deploy --project-dir ~/my-test-projects/company-app --env staging --all
112
+ ```
113
+
114
+ ### 最小外部项目配置
115
+
116
+ 外部项目可以只有环境配置,无需完整的 SpecCore 项目结构:
117
+
118
+ ```yaml
119
+ # ~/my-test-projects/minimal/.speccore/environments/test.yaml
120
+ env: test
121
+ tests:
122
+ base_urls:
123
+ h5: https://example.com
124
+ ```
125
+
126
+ ```bash
127
+ speccore verify --project-dir ~/my-test-projects/minimal --ui --env-file test
128
+ ```
129
+
130
+ ---
131
+
132
+ ## 执行流程
133
+
134
+ ```
135
+ 用户输入 /deploy [输入]
136
+ │
137
+ ▼
138
+ ┌───────────────────────────────────────┐
139
+ │ Step 1: 意图识别 │
140
+ │ 判断是 build / deploy / pipeline │
141
+ │ 从自然语言或显式参数提取参数 │
142
+ └───────────────┬───────────────────────┘
143
+ │
144
+ 参数缺失?
145
+ │
146
+ 是 ──► 输出交互式提示
147
+ │
148
+ 否 ──► 继续
149
+ │
150
+ ▼
151
+ ┌───────────────────────────────────────┐
152
+ │ Step 2: 前置校验 │
153
+ │ - 环境配置是否存在? │
154
+ │ - 指定平台是否在 PROJECT.yaml 中? │
155
+ │ - 当前分支是否能获取?(pipeline 需要) │
156
+ └───────────────┬───────────────────────┘
157
+ │
158
+ 校验失败?
159
+ │
160
+ 是 ──► 输出问题 + 修复建议
161
+ │
162
+ 否 ──► 继续
163
+ │
164
+ ▼
165
+ ┌───────────────────────────────────────┐
166
+ │ Step 3: 执行 │
167
+ │ 直接 execute_command 执行 CLI 命令 │
168
+ └───────────────────────────────────────┘
169
+ ```
170
+
171
+ ---
172
+
173
+ ## Step 1: 意图识别与参数提取
174
+
175
+ ### 双模式支持
176
+
177
+ **模式 A — 自然语言(默认)**:
178
+ ```
179
+ /deploy 把当前功能部署到测试环境
180
+ /deploy 构建一下 H5
181
+ /deploy 预览生产环境部署
182
+ ```
183
+ AI 从自然语言中提取参数。
184
+
185
+ **模式 B — 显式参数**:
186
+ ```
187
+ /deploy --env test --platforms h5,api --dry-run
188
+ /build --env local --platform h5
189
+ ```
190
+ 直接解析参数,不经过自然语言理解。
191
+
192
+ ### 参数定义
193
+
194
+ | 参数 | 短名 | 长名 | 必填 | 默认值 | 说明 |
195
+ |:---|:---|:---|:---|:---|:---|
196
+ | env | -e | --env | 否 | `staging` | 目标环境名(对应 .speccore/environments/{env}.yaml) |
197
+ | platforms | -p | --platforms | 否 | - | 逗号分隔端列表(与 --all 互斥) |
198
+ | all | -a | --all | 否 | false | 所有端 |
199
+ | dry-run | -d | --dry-run | 否 | false | 预览模式,不实际执行 |
200
+ | skip-build | -s | --skip-build | 否 | false | 跳过构建(仅 pipeline) |
201
+ | env-file | -f | --env-file | 否 | - | 指定环境配置文件路径 |
202
+ | project-dir | - | --project-dir | 否 | - | 外部项目目录路径(全局选项) |
203
+
204
+ ### 意图映射表
205
+
206
+ | 用户说法 | 推断命令 | 推断参数 |
207
+ |:---|:---|:---|
208
+ | "部署到测试环境" | pipeline | --env test --all |
209
+ | "构建 H5" | build | --platform h5 |
210
+ | "部署 H5 到测试环境" | pipeline | --env test --platforms h5 |
211
+ | "预览生产部署" | pipeline | --env production --all --dry-run |
212
+ | "把当前分支合并到 develop 并部署" | pipeline | --env dev --all |
213
+ | "只部署不构建" | pipeline | --env staging --all --skip-build |
214
+ | "用自定义配置部署" | pipeline | --env-file ./my-env.yaml --all |
215
+ | "本地构建验证" | build | --env local --platform h5 |
216
+ | "本地部署看看效果" | deploy | --env local --platform h5 |
217
+ | "跑冒烟测试" | verify | --stage deploy |
218
+ | "PR 前跑测试" | verify | --stage pr |
219
+ | "发布前全量回归" | verify | --stage release |
220
+
221
+ ---
222
+
223
+ ## Step 2: 参数缺失 → 交互式提示
224
+
225
+ ### 环境名缺失
226
+
227
+ ```
228
+ 🚀 speccore deploy — 请选择目标环境
229
+
230
+ 可用环境(从 .speccore/environments/ 读取):
231
+ [1] local — 本地开发
232
+ [2] dev — 开发联调
233
+ [3] test — 测试环境
234
+ [4] staging — 预发布
235
+ [5] production — 生产环境
236
+
237
+ 请回复环境名或序号(如:test 或 3)
238
+ ```
239
+
240
+ ### 平台缺失(且未指定 --all)
241
+
242
+ ```
243
+ 📦 speccore deploy — 请选择目标平台
244
+
245
+ 可用平台(从 PROJECT.yaml 读取):
246
+ [1] h5 — H5 移动端
247
+ [2] admin-web — 管理后台
248
+ [3] order-api — 订单服务
249
+
250
+ 选项:
251
+ - 回复平台名或序号(如:h5 或 1)
252
+ - 回复 "all" 或 "全部" 部署所有平台
253
+ - 回复逗号分隔多选(如:h5,order-api)
254
+ ```
255
+
256
+ ---
257
+
258
+ ## Step 3: 前置校验
259
+
260
+ ### 校验项
261
+
262
+ 1. **环境配置存在性**
263
+ - 检查 `.speccore/environments/{env}.yaml` 是否存在
264
+ - 不存在 → 提示:"环境 {env} 未配置,运行 `speccore update` 初始化默认环境配置"
265
+
266
+ 2. **平台有效性**
267
+ - 检查指定平台是否在 PROJECT.yaml 的 platforms 列表中
268
+ - 不存在 → 提示可用平台列表
269
+
270
+ 3. **pipeline 分支检查**
271
+ - 检查环境配置中是否配置了 `branch`
272
+ - 未配置 → 提示:"环境 {env} 未配置 branch,pipeline 无法执行 merge"
273
+
274
+ 4. **Git 仓库检查(pipeline 需要)**
275
+ - 检查当前目录是否为 Git 仓库
276
+ - 检查当前分支是否能获取
277
+
278
+ ---
279
+
280
+ ## 命令组装规则
281
+
282
+ ### pipeline(默认)
283
+ ```bash
284
+ speccore pipeline --env {env} {--platforms p1,p2 | --all} [--dry-run] [--skip-build] [--env-file path] [--project-dir dir]
285
+ ```
286
+
287
+ ### build
288
+ ```bash
289
+ speccore build --env {env} {--platform p | --all} [--env-file path] [--project-dir dir]
290
+ ```
291
+
292
+ ### deploy
293
+ ```bash
294
+ speccore deploy --env {env} {--platform p | --all} [--dry-run] [--skip-build] [--env-file path] [--project-dir dir]
295
+ ```
296
+
297
+ **意图 → 命令映射**:
298
+ - 用户说"构建"或"build" → `build`
299
+ - 用户说"部署"且不带 merge/checkout → `deploy`
300
+ - 用户说"流水线"、"合并部署"、"pipeline"或只说"部署"(含 merge 语义)→ `pipeline`
301
+
302
+ ---
303
+
304
+ ## 错误处理
305
+
306
+ | 场景 | 提示 |
307
+ |:---|:---|
308
+ | 环境配置不存在 | "环境 {env} 未配置,运行 `speccore update` 初始化默认环境配置" |
309
+ | 平台不存在 | "平台 {platform} 不在 PROJECT.yaml 中,可用平台:..." |
310
+ | 分支未配置 | "环境 {env} 未配置 branch,pipeline 无法执行 merge" |
311
+ | Git 检查失败 | "当前目录不是 Git 仓库,或无法获取当前分支" |
@@ -0,0 +1,226 @@
1
+ ---
2
+ name: spec-verify
3
+ description: >
4
+ 测试验证专属 Skill。覆盖 verify 命令的测试意图识别与参数提取。
5
+ 支持自然语言("跑一下冒烟测试")和显式参数(--config ./tests/smoke.yaml --stage deploy)。
6
+ 参数缺失时交互式提示,自动发现测试配置文件。支持 --project-dir 测试外部项目。
7
+ 不影响 speccore ask 的意图识别能力。
8
+ allowed-tools: ["Bash", "Read"]
9
+ disable-model-invocation: false
10
+ ---
11
+
12
+ # spec-verify — 测试验证(专属逻辑)
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 环境变量" |
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # SpecCore — Code by Spec, Not by Vibe
2
2
 
3
- 🖥️ 规范驱动开发 CLI · 20 命令 · 人机协同闭环 · 多层 AI 架构
3
+ 🖥️ 规范驱动开发 CLI · 26+ 命令 · 环境驱动部署 · 全命令 Skill 覆盖 · 多层 AI 架构
4
4
 
5
5
  ```bash
6
6
  @spec-ask "分析会议预订系统的需求文档,拆分为独立开发任务,按依赖顺序执行"
@@ -69,7 +69,7 @@ init → doc2spec → analyze → split → plan → execute → pr → done →
69
69
  | 🔒 AI 流水线 | `doc2spec` `analyze` `split` `plan` `execute` `pr` `done` `spec2doc` |
70
70
  | 🔒 AI 智能 | `dev` |
71
71
  | 🔒 AI 变更 | `change` `retro` |
72
- | ✅ 质量验证 | `verify` `verify --ui` `verify --api-contract` `verify --perf` |
72
+ | ✅ 质量验证 | `verify` `verify --ui` `verify --stage` `verify --api-contract` `verify --perf` `verify --project-dir` |
73
73
 
74
74
  ## 目录结构(全英文)
75
75
 
@@ -101,6 +101,45 @@ Iteration-001-meeting/
101
101
  └── STAFFING.md ← 人员排期
102
102
  ```
103
103
 
104
+ ## 环境驱动部署(v8.3.60+)
105
+
106
+ ```bash
107
+ # 一键流水线:merge → build → deploy
108
+ speccore pipeline --env staging --all # 部署到预发布环境
109
+ speccore pipeline --env test --platforms h5,api # 只部署 H5 和 API
110
+ speccore pipeline --env dev --all --dry-run # 预览模式
111
+
112
+ # Pipeline 内置测试节点(v8.3.60+)
113
+ speccore pipeline --env staging --all --test-enabled --test-type smoke
114
+
115
+ # 独立构建/部署
116
+ speccore build --env staging --platform h5 # 构建 H5 端
117
+ speccore deploy --env production --all # 部署到生产环境
118
+ ```
119
+
120
+ **五层环境模型**:`local` → `dev` → `test` → `staging` → `production`
121
+
122
+ **环境配置**(`.speccore/environments/staging.yaml`):
123
+ ```yaml
124
+ env: staging
125
+ branch: staging
126
+ defaults:
127
+ build_cmd: npm run build:staging
128
+ platforms:
129
+ h5:
130
+ build_cmd: npm run build:h5:staging
131
+ deploy:
132
+ type: static
133
+ output_dir: dist
134
+ target: s3://mybucket-staging/h5/
135
+ ```
136
+
137
+ **特性**:
138
+ - `--env` 读取环境配置中的 `branch`,自动 merge 当前分支
139
+ - 配置覆盖:环境文件 > PROJECT.yaml > 默认值
140
+ - 失败不阻断:某端失败继续处理其他端
141
+ - 支持任意数量自定义环境
142
+
104
143
  ## 质量验证(v8.3.47+)
105
144
 
106
145
  ```bash
@@ -108,12 +147,24 @@ Iteration-001-meeting/
108
147
  speccore verify -t Task-001 --ui # 任务绑定模式
109
148
  speccore verify --ui --url=https://example.com --spec=./test.yaml # 独立模式
110
149
 
150
+ # 配置驱动测试(v8.3.60+)
151
+ speccore verify --config ./tests/smoke.yaml --env-file test # 加载测试场景 + 合并环境配置
152
+
111
153
  # API 契约测试(v8.3.49+)
112
154
  speccore verify -t Task-001 --api-contract
113
155
 
114
156
  # 性能基线测试(v8.3.49+)
115
157
  speccore verify -t Task-001 --perf
116
158
 
159
+ # 分层测试策略(v8.3.60+)
160
+ speccore verify --stage dev # 开发阶段:编译 + Lint + 单元测试
161
+ speccore verify --stage pr # PR 阶段:代码质量 + 冒烟 + API 契约
162
+ speccore verify --stage deploy # 部署阶段:仅冒烟测试
163
+ speccore verify --stage release # 发布阶段:全量 UI + API + 性能回归
164
+
165
+ # 测试外部项目(v8.3.60+)
166
+ speccore verify --project-dir ~/projects/other-app --stage deploy
167
+
117
168
  # 视觉模型切换(v8.3.50+)
118
169
  speccore verify --ui --visual-model=qwen-vl # 阿里云 DashScope(默认)
119
170
  speccore verify --ui --visual-model=local # 本地模型
@@ -308,6 +359,12 @@ speccore --version # v8.3.10
308
359
  | `retro` | `rt` | 📝 🔒 任务回顾复盘 + 评分 |
309
360
  | `rename` | `rn` | ✏️ 🔒 重命名 |
310
361
  | `history` | `hi` | 📜 历史记录(操作日志 / 需求变更) |
362
+ | `pipeline` | `pln` | 🚀 环境驱动流水线(merge → build → deploy) |
363
+ | `build` | `bd` | 🔨 按端构建 |
364
+ | `deploy` | `dp` | 🚀 按端部署 |
365
+ | `verify` | `vf` | 🧪 代码验证 + UI 测试 |
366
+
367
+ > 💡 **全命令 Skill**:所有命令均支持 `/命令 + 自然语言` 快捷入口,如 `/deploy 部署到测试环境`、`/verify 跑冒烟测试`。详见 [DESIGN.md](docs/DESIGN.md#58-全命令-skill-覆盖v8360)。
311
368
 
312
369
  ## TTY 智能适配
313
370
 
@@ -331,7 +388,7 @@ speccore --version # v8.3.10
331
388
  | 中文 | English | 说明 |
332
389
  |------|---------|------|
333
390
  | [快速开始](docs/quick-start.md) | [Quick Start](docs/quick-start.en.md) | 5 分钟上手,安装 → 完整流程 |
334
- | [命令参考](docs/command-reference.md) | [Commands](docs/commands.en.md) | 全部 20 命令 + 子命令 + 示例 |
391
+ | [命令参考](docs/command-reference.md) | [Commands](docs/commands.en.md) | 全部 26+ 命令 + 子命令 + 示例 |
335
392
  | [总览](docs/overview.md) | — | 核心概念 + 工作流 + 三种使用方式 |
336
393
  | [场景实战](docs/scenarios.md) | [Scenarios](docs/scenarios.en.md) | 35 个真实开发场景 |
337
394
  | [SDD 方法论](docs/sdd-methodology.md) | [SDD](docs/sdd-methodology.en.md) | 规范驱动开发理念 |