@deepstorm/cli 0.1.0

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 (148) hide show
  1. package/README.md +72 -0
  2. package/dist/agents/reef-inspect-figma.md +77 -0
  3. package/dist/agents/reef-review-backend.md.tmpl +112 -0
  4. package/dist/agents/reef-review-frontend.md.tmpl +78 -0
  5. package/dist/agents/reef-review-infra.md +47 -0
  6. package/dist/agents/reef-review-security.md.tmpl +80 -0
  7. package/dist/agents/reef-scope-analysis.md +64 -0
  8. package/dist/build-registry.js +375 -0
  9. package/dist/cli.js +8581 -0
  10. package/dist/config-schema.json +133 -0
  11. package/dist/env-examples/context7.env-example +19 -0
  12. package/dist/env-examples/feishu-wiki.env-example +16 -0
  13. package/dist/env-examples/figma.env-example +16 -0
  14. package/dist/env-examples/github.env-example +20 -0
  15. package/dist/env-examples/jira.env-example +20 -0
  16. package/dist/hooks/mcp-hook.sh +77 -0
  17. package/dist/hooks/reef-auto-format.sh.tmpl +72 -0
  18. package/dist/hooks/reef-block-dangerous.sh +70 -0
  19. package/dist/hooks/reef-hooks.json +72 -0
  20. package/dist/hooks/reef-intent-detect.sh +129 -0
  21. package/dist/hooks/reef-protect-files.sh +55 -0
  22. package/dist/hooks/reef-run-tests.sh +84 -0
  23. package/dist/hooks/reef-scope-check.sh +386 -0
  24. package/dist/hooks/reef-scope-ci.sh +28 -0
  25. package/dist/hooks/reef-scope-gate.sh +115 -0
  26. package/dist/hooks/reef-scope-pre-commit.sh.tmpl +28 -0
  27. package/dist/hooks/reef-scope-setup.sh +204 -0
  28. package/dist/hooks/reef-scope-split.sh +203 -0
  29. package/dist/hooks/sweep-hooks.json +14 -0
  30. package/dist/hooks/sweep-mcp-hook.sh +77 -0
  31. package/dist/hooks/tide-hooks.json +14 -0
  32. package/dist/hooks/tide-session-preload.sh +17 -0
  33. package/dist/mcp/code-hosting/github.json +20 -0
  34. package/dist/mcp/design-tools/figma.json +19 -0
  35. package/dist/mcp/docs-reference/context7.json +28 -0
  36. package/dist/mcp/e2e-testing/playwright.json +13 -0
  37. package/dist/mcp/knowledge-base/feishu-wiki.json +19 -0
  38. package/dist/mcp/project-management/jira.json +27 -0
  39. package/dist/mcp-skills/deepflow-mcp-feishu-wiki-read/SKILL.md +65 -0
  40. package/dist/mcp-skills/deepflow-mcp-feishu-wiki-write/SKILL.md +63 -0
  41. package/dist/mcp-skills/deepflow-mcp-figma-read/SKILL.md +98 -0
  42. package/dist/mcp-skills/deepflow-mcp-github-read/SKILL.md +62 -0
  43. package/dist/mcp-skills/deepflow-mcp-github-write/SKILL.md +63 -0
  44. package/dist/mcp-skills/deepflow-mcp-jira-read/SKILL.md +80 -0
  45. package/dist/mcp-skills/deepflow-mcp-jira-write/SKILL.md +74 -0
  46. package/dist/mcp-skills/deepflow-mcp-playwright-read/SKILL.md +79 -0
  47. package/dist/mcp-skills/deepstorm-mcp-feishu-wiki-read/SKILL.md +65 -0
  48. package/dist/mcp-skills/deepstorm-mcp-feishu-wiki-write/SKILL.md +63 -0
  49. package/dist/mcp-skills/deepstorm-mcp-figma-read/SKILL.md +98 -0
  50. package/dist/mcp-skills/deepstorm-mcp-github-read/SKILL.md +62 -0
  51. package/dist/mcp-skills/deepstorm-mcp-github-write/SKILL.md +63 -0
  52. package/dist/mcp-skills/deepstorm-mcp-jira-read/SKILL.md +80 -0
  53. package/dist/mcp-skills/deepstorm-mcp-jira-write/SKILL.md +74 -0
  54. package/dist/mcp-skills/deepstorm-mcp-playwright-read/SKILL.md +79 -0
  55. package/dist/registry.json +818 -0
  56. package/dist/skills/atoll-ops/SKILL.md +46 -0
  57. package/dist/skills/reef-commit/SKILL.md +127 -0
  58. package/dist/skills/reef-gen-backend/SKILL.md.tmpl +87 -0
  59. package/dist/skills/reef-gen-backend/variants/java/steps.md +28 -0
  60. package/dist/skills/reef-gen-backend/variants/python/steps.md +70 -0
  61. package/dist/skills/reef-gen-frontend/SKILL.md.tmpl +83 -0
  62. package/dist/skills/reef-gen-frontend/variants/angular/steps.md +30 -0
  63. package/dist/skills/reef-harden/EXAMPLES.md +89 -0
  64. package/dist/skills/reef-harden/SKILL.md +136 -0
  65. package/dist/skills/reef-pr/SKILL.md +97 -0
  66. package/dist/skills/reef-review/SKILL.md.tmpl +107 -0
  67. package/dist/skills/reef-scope/SKILL.md +134 -0
  68. package/dist/skills/reef-start/SKILL.md.tmpl +562 -0
  69. package/dist/skills/reef-start/references/jira-start-subagent.md +60 -0
  70. package/dist/skills/reef-style-backend/SKILL.md.tmpl +134 -0
  71. package/dist/skills/reef-style-backend/fragments/java/ai/spring-ai/examples/chat-client.md +96 -0
  72. package/dist/skills/reef-style-backend/fragments/java/ai/spring-ai/examples/rag.md +94 -0
  73. package/dist/skills/reef-style-backend/fragments/java/ai/spring-ai/examples/structured-output.md +62 -0
  74. package/dist/skills/reef-style-backend/fragments/java/ai/spring-ai/examples/tool-calling.md +68 -0
  75. package/dist/skills/reef-style-backend/fragments/java/ai/spring-ai/quick-reference.md +220 -0
  76. package/dist/skills/reef-style-backend/fragments/java/api-spec/quick-reference.md +148 -0
  77. package/dist/skills/reef-style-backend/fragments/java/db-migration/liquibase/examples/database-migration.md +131 -0
  78. package/dist/skills/reef-style-backend/fragments/java/db-migration/liquibase/quick-reference.md +103 -0
  79. package/dist/skills/reef-style-backend/fragments/java/dependency-management/quick-reference.md +119 -0
  80. package/dist/skills/reef-style-backend/fragments/java/exception-handling/examples/error-code-enum.md +101 -0
  81. package/dist/skills/reef-style-backend/fragments/java/exception-handling/quick-reference.md +181 -0
  82. package/dist/skills/reef-style-backend/fragments/java/framework/spring-boot/examples/controller.md +95 -0
  83. package/dist/skills/reef-style-backend/fragments/java/framework/spring-boot/examples/dto-mapper.md +121 -0
  84. package/dist/skills/reef-style-backend/fragments/java/framework/spring-boot/examples/infrastructure.md +179 -0
  85. package/dist/skills/reef-style-backend/fragments/java/framework/spring-boot/examples/service-entity.md +202 -0
  86. package/dist/skills/reef-style-backend/fragments/java/framework/spring-boot/examples/testing.md +107 -0
  87. package/dist/skills/reef-style-backend/fragments/java/framework/spring-boot/quick-reference.md +83 -0
  88. package/dist/skills/reef-style-backend/fragments/java/orm/hibernate/quick-reference.md +150 -0
  89. package/dist/skills/reef-style-backend/fragments/java/security-redlines/quick-reference.md +197 -0
  90. package/dist/skills/reef-style-backend/fragments/java/test/data-jpa-test/examples/user-repository-test.md +69 -0
  91. package/dist/skills/reef-style-backend/fragments/java/test/data-jpa-test/quick-reference.md +101 -0
  92. package/dist/skills/reef-style-backend/fragments/java/test/junit5/examples/user-service-test.md +61 -0
  93. package/dist/skills/reef-style-backend/fragments/java/test/junit5/quick-reference.md +100 -0
  94. package/dist/skills/reef-style-backend/fragments/java/test/spring-mvc-test/examples/user-controller-test.md +61 -0
  95. package/dist/skills/reef-style-backend/fragments/java/test/spring-mvc-test/quick-reference.md +85 -0
  96. package/dist/skills/reef-style-backend/fragments/java/test/spring-service-test/examples/user-service-integration-test.md +56 -0
  97. package/dist/skills/reef-style-backend/fragments/java/test/spring-service-test/quick-reference.md +83 -0
  98. package/dist/skills/reef-style-backend/fragments/python/alembic-migration/quick-reference.md +77 -0
  99. package/dist/skills/reef-style-backend/fragments/python/api-spec/quick-reference.md +164 -0
  100. package/dist/skills/reef-style-backend/fragments/python/dependency-management/quick-reference.md +139 -0
  101. package/dist/skills/reef-style-backend/fragments/python/exception-handling/quick-reference.md +177 -0
  102. package/dist/skills/reef-style-backend/fragments/python/fastapi-quick-reference/quick-reference.md +101 -0
  103. package/dist/skills/reef-style-backend/fragments/python/langchain/quick-reference.md +135 -0
  104. package/dist/skills/reef-style-backend/fragments/python/pytest-testing/quick-reference.md +111 -0
  105. package/dist/skills/reef-style-backend/fragments/python/ruff-mypy-toolchain/quick-reference.md +83 -0
  106. package/dist/skills/reef-style-backend/fragments/python/security-redlines/quick-reference.md +207 -0
  107. package/dist/skills/reef-style-backend/fragments/python/sqlalchemy-orm/quick-reference.md +91 -0
  108. package/dist/skills/reef-style-backend/variants/java/examples/code-wrapping.md +227 -0
  109. package/dist/skills/reef-style-backend/variants/java/examples/contributor-pattern.md +97 -0
  110. package/dist/skills/reef-style-backend/variants/java/quick-reference.md +117 -0
  111. package/dist/skills/reef-style-backend/variants/python/examples/crud-router.md +71 -0
  112. package/dist/skills/reef-style-backend/variants/python/examples/pydantic-schema.md +45 -0
  113. package/dist/skills/reef-style-backend/variants/python/examples/pytest-fixture.md +60 -0
  114. package/dist/skills/reef-style-backend/variants/python/examples/sqlalchemy-model.md +31 -0
  115. package/dist/skills/reef-style-backend/variants/python/quick-reference.md +111 -0
  116. package/dist/skills/reef-style-frontend/SKILL.md.tmpl +70 -0
  117. package/dist/skills/reef-style-frontend/fragments/css/tailwind/quick-reference.md +79 -0
  118. package/dist/skills/reef-style-frontend/fragments/test/vitest/examples/testing.md +150 -0
  119. package/dist/skills/reef-style-frontend/fragments/test/vitest/quick-reference.md +141 -0
  120. package/dist/skills/reef-style-frontend/fragments/ts-config/strict/quick-reference.md +112 -0
  121. package/dist/skills/reef-style-frontend/fragments/ui-lib/primeng/examples/ui-components.md +134 -0
  122. package/dist/skills/reef-style-frontend/fragments/ui-lib/primeng/quick-reference.md +66 -0
  123. package/dist/skills/reef-style-frontend/variants/angular/examples/code-wrapping.md +252 -0
  124. package/dist/skills/reef-style-frontend/variants/angular/examples/component-types-pipes.md +56 -0
  125. package/dist/skills/reef-style-frontend/variants/angular/examples/entity-types.md +100 -0
  126. package/dist/skills/reef-style-frontend/variants/angular/examples/forms-layer.md +119 -0
  127. package/dist/skills/reef-style-frontend/variants/angular/examples/service-routing.md +95 -0
  128. package/dist/skills/reef-style-frontend/variants/angular/quick-reference.md +100 -0
  129. package/dist/skills/reef-testcase/SKILL.md +138 -0
  130. package/dist/skills/reef-testcase/references/coverage-dimensions.md +99 -0
  131. package/dist/skills/reef-testcase/references/test-case-template.md +63 -0
  132. package/dist/skills/sweep-init/SKILL.md +286 -0
  133. package/dist/skills/sweep-init/scripts/flow-selector.mjs +305 -0
  134. package/dist/skills/sweep-plan/SKILL.md.tmpl +312 -0
  135. package/dist/skills/sweep-plan/references/test-flow-template.md +46 -0
  136. package/dist/skills/sweep-run/SKILL.md +437 -0
  137. package/dist/skills/sweep-run/scripts/env-manager.mjs +208 -0
  138. package/dist/skills/sweep-run/scripts/flow-parser.mjs +329 -0
  139. package/dist/skills/sweep-run/scripts/flow-selector.mjs +483 -0
  140. package/dist/skills/sweep-run/scripts/mcp-manager.mjs +208 -0
  141. package/dist/skills/sweep-run/scripts/spec-compiler.mjs +303 -0
  142. package/dist/skills/tide-discuss/SKILL.md.tmpl +449 -0
  143. package/dist/skills/tide-discuss/references/checklists.md +88 -0
  144. package/dist/skills/tide-discuss/references/data-format.md +237 -0
  145. package/dist/skills/tide-discuss/references/prd-template.md +134 -0
  146. package/dist/skills/tide-discuss/references/publish-flow.md +167 -0
  147. package/dist/skills/tide-discuss/references/role-prompts.md +105 -0
  148. package/package.json +38 -0
@@ -0,0 +1,312 @@
1
+ ---
2
+ name: sweep-plan
3
+ description: 交互式生成 .flow.md 测试意图文档。从 Issue 或 PRD 提取验收标准,通过结构化对话覆盖功能流程、边界条件、异常场景,输出 Markdown 格式的测试流程。
4
+ allowed-tools: Read, Write, Edit, WebFetch, Agent, Bash
5
+ deepstorm:
6
+ tool: sweep
7
+ mcpCapabilities:
8
+ issue_tracker:
9
+ domain: "project-management"
10
+ knowledge_base:
11
+ domain: "knowledge-base"
12
+ ---
13
+
14
+ # Sweep Flow Create — 测试意图文档生成
15
+
16
+ 引导测试工程师从 Issue 或 PRD 出发,通过结构化对话发现测试场景,最终输出 .flow.md 测试意图文档。
17
+
18
+ ## 前置条件
19
+
20
+ 运行 `/sweep-plan` 前,请确保当前目录已通过 `/sweep-init` 初始化(存在 `.sweep-init` 标记文件和 `flows/` 目录)。
21
+
22
+ ---
23
+
24
+ ## 使用方式
25
+
26
+ | 方式 | 说明 | 示例 |
27
+ |------|------|------|
28
+ | **Issue 链接** | 提供 Issue 链接,自动溯源 PRD | `/sweep-plan` 后粘贴 Issue 链接 |
29
+ | **PRD 文档链接** | 直接提供 PRD 文档链接 | `/sweep-plan` 后粘贴文档链接 |
30
+ | **直接描述** | 没有链接,直接口述功能 | `/sweep-plan` 后选择"描述功能" |
31
+
32
+ ---
33
+
34
+ ## MCP 能力发现(运行时)
35
+
36
+ 本 skill 在运行时通过 `.claude/settings.json` → `deepstorm.mcpCapabilities` 感知可用的 MCP 服务:
37
+
38
+ | 能力域 | 用途 | 对应 MCP 服务举例 |
39
+ |--------|------|------------------|
40
+ | `issue_tracker` | 读取 Issue 描述和验收标准 | Jira、Linear 等 |
41
+ | `knowledge_base` | 读取 PRD 文档上下文 | 飞书知识库、Confluence 等 |
42
+
43
+ ---
44
+
45
+ ## 工作流
46
+
47
+ ### 步骤 1:检查初始化状态
48
+
49
+ - **WHEN** `.sweep-init` 不存在
50
+ - **THEN** 提示"当前目录尚未初始化为 Sweep 测试项目。请先运行 /sweep-init 初始化。"并退出
51
+
52
+ ### 步骤 2:获取测试需求上下文(MCP 动态适配)
53
+
54
+ 本步骤根据 `.claude/settings.json` → `deepstorm.mcpCapabilities` 动态适配测试需求的获取路径。
55
+
56
+ #### 2.1 询问输入来源
57
+
58
+ 询问用户提供 Issue 链接、PRD 文档链接,或直接描述功能:
59
+
60
+ > 你想从哪个来源获取测试需求?
61
+ >
62
+ > 1. **Issue 链接** — 我通过 issue_tracker 读取 Issue 描述,自动溯源关联 PRD
63
+ > 2. **PRD 文档链接** — 我通过 knowledge_base 直接读取 PRD 内容
64
+ > 3. **直接描述** — 你口头描述功能,不需要链接
65
+
66
+ 根据用户选择进入不同的分支。
67
+
68
+ ---
69
+
70
+ #### 2.2 通过 Issue 链接获取(issue_tracker 动态检测)
71
+
72
+ 当用户提供 Issue 链接时,AI 根据运行时的能力映射检测可用的 `issue_tracker` 和 `knowledge_base` 服务:
73
+
74
+ 1. **确认能力可用性**:检查 `deepstorm.mcpCapabilities` 中 `issue_tracker.available === true`
75
+ 2. **选择 provider**:从 `issue_tracker.providers` 中根据 Issue 链接格式自动判断使用哪个(如 jira、linear),判断不出时询问用户
76
+ 3. **读取工具指南**:读取 `.claude/skills/deepstorm-mcp-jira-read/SKILL.md` 了解工具调用方式
77
+ 4. **获取 Issue 内容**:使用该 MCP 工具的 get_issue(或等效)方法读取 Issue 描述
78
+ 5. **提取上下文**:从 Issue 中提取功能范围、用户故事、验收标准
79
+ 6. **溯源 PRD**:如果 Issue 中包含知识库 PRD 链接,按 2.3 流程处理
80
+
81
+ **降级处理:** `issue_tracker.available === false` 时,提示用户"未检测到 Issue 跟踪服务,请手动提供需求描述",继续执行 2.4。
82
+
83
+ ---
84
+
85
+ #### 2.3 通过知识库获取 PRD(knowledge_base 动态检测)
86
+
87
+ 当用户直接提供 PRD 链接,或 Issue 中包含知识库链接时:
88
+
89
+ 1. **确认能力可用性**:检查 `deepstorm.mcpCapabilities` 中 `knowledge_base.available === true`
90
+ 2. **选择 provider**:从 `knowledge_base.providers` 中根据链接格式自动判断使用哪个
91
+ 3. **读取工具指南**:读取 `.claude/skills/deepstorm-mcp-feishu-wiki-read/SKILL.md` 了解工具调用方式
92
+ 4. **读取文档**:使用可用 knowledge_base MCP 工具的文档读取方法获取 PRD 内容
93
+ 5. **提取上下文**:提取功能描述、验收标准列表、业务规则和约束条件
94
+
95
+ **降级处理:** `knowledge_base.available === false` 时,告知用户"未检测到知识库服务",提示用户手动粘贴 PRD 关键内容。
96
+
97
+ ---
98
+
99
+ #### 2.4 直接描述(无链接时)
100
+
101
+ 用户口述功能需求(没有链接或所有能力域均不可用时):
102
+ - 记录用户描述的功能名称和概述
103
+ - 引导用户提供关键验收标准
104
+ - 引导用户提供业务规则和约束
105
+
106
+ ---
107
+
108
+ #### 2.5 降级处理
109
+
110
+ 当缺少必要能力时,按以下优先级降级:
111
+
112
+ | 能力缺失 | 降级行为 |
113
+ |----------|---------|
114
+ | 仅 `issue_tracker` 不可用 | 提示用户手动提供需求描述 |
115
+ | 仅 `knowledge_base` 不可用 | 提示用户手动粘贴 PRD 内容 |
116
+ | 两者均不可用 | 提示用户直接描述业务场景和测试需求 |
117
+
118
+ ---
119
+
120
+ ### 步骤 3:确定放置位置
121
+
122
+ #### 3.1 读取 topology.yaml
123
+
124
+ ```bash
125
+ cat flows/topology.yaml 2>/dev/null || echo "NOT_FOUND"
126
+ ```
127
+
128
+ #### 3.2 AI 推荐位置
129
+
130
+ 基于步骤 2 获取的功能上下文,分析最适合放置的功能模块。
131
+
132
+ 展示给用户:
133
+
134
+ ```
135
+ 根据功能描述,我推荐放在:
136
+ user-system/login
137
+
138
+ 当前可用模块:
139
+ [1] user-system (用户系统)
140
+ 1-1 register (注册)
141
+ 1-2 login (登录)
142
+ [2] payment (支付系统)
143
+ 2-1 checkout (结算)
144
+
145
+ 推荐位置:user-system/login [1-2]
146
+ ```
147
+
148
+ #### 3.3 用户确认或选择
149
+
150
+ - **确认推荐** → 使用该路径
151
+ - **选择其他** → 用户从拓扑中选择其他模块
152
+ - **新建模块** → 询问模块名和描述,同步更新 topology.yaml 后使用该路径
153
+ - **按 Jira 任务名** → 创建基于任务名的平级目录(如 `LC-1234-user-auth/`)
154
+
155
+ #### 3.4 确定文件名
156
+
157
+ - 按功能模块命名:`{module}.flow.md`(适合长期维护)
158
+ - 按 Jira 任务命名:`{KEY}-{summary}.flow.md`(适合按迭代组织)
159
+
160
+ ---
161
+
162
+ ### 步骤 4:结构化场景挖掘
163
+
164
+ 基于获取到的需求上下文,按以下四个维度引导用户讨论测试场景。
165
+
166
+ #### 4.1 功能正常流程
167
+
168
+ 目标:覆盖用户按预期操作的主要成功路径。
169
+
170
+ 引导问题:
171
+ - "这个功能最核心的用户操作路径是什么?"
172
+ - "用户从开始到完成,需要经历哪些步骤?"
173
+ - "有没有多种方式可以完成同一件事?"
174
+
175
+ AI 根据 PRD 自动梳理出正常流程路径,用户确认或补充。
176
+
177
+ #### 4.2 边界条件
178
+
179
+ 目标:覆盖输入限制、状态切换、时限条件等边界情况。
180
+
181
+ AI 根据功能描述自动识别可能的边界,逐项提问:
182
+ - "是否涉及输入值的上限/下限?"
183
+ - "是否有状态变化的时间窗口限制?"
184
+ - "数据量或频率达到极限时表现如何?"
185
+
186
+ 用户确认或补充边界场景。
187
+
188
+ #### 4.3 异常场景
189
+
190
+ 目标:覆盖用户搞砸了、系统出错、权限不足等路径。
191
+
192
+ 引导问题:
193
+ - "如果网络超时会怎样?"
194
+ - "如果用户重复提交会怎样?"
195
+ - "如果用户没有必要权限会怎样?"
196
+ - "如果依赖的系统(第三方、数据库)不可用会怎样?"
197
+
198
+ #### 4.4 数据组合
199
+
200
+ 目标:覆盖不同数据组合下的行为差异。
201
+
202
+ 引导问题:
203
+ - "不同的用户角色在该功能下行为是否不同?"
204
+ - "不同的数据类型(如不同国家/语言)是否有不同的行为?"
205
+
206
+ ---
207
+
208
+ ### 步骤 5:Grill-me — 遗漏场景挑战
209
+
210
+ 在初步场景清单确定后,以 grill-me 方式逐项挑战,挖掘遗漏。
211
+
212
+ 使用 Agent 工具运行 grill-me,或直接按以下示例追问:
213
+
214
+ ```
215
+ ❓ "这个场景有哪些边界情况还没考虑?"
216
+ ❓ "如果用户不按正常顺序操作会怎样?"
217
+ ❓ "并发操作会有什么影响?"
218
+ ❓ "大量数据/长时间使用后行为是否变化?"
219
+ ❓ "是否有平台差异(不同浏览器/设备)?"
220
+ ```
221
+
222
+ 每个问题后等待用户回答,根据回答补充或调整场景。
223
+
224
+ ---
225
+
226
+ ### 步骤 6:生成 .flow.md
227
+
228
+ #### 6.1 组装文件内容
229
+
230
+ ```markdown
231
+ # E2E 测试流程:{功能名称}
232
+
233
+ **来源:** {Issue 链接 / PRD 链接}
234
+ **创建时间:** {当前时间}
235
+
236
+ ---
237
+
238
+ ## 场景清单
239
+
240
+ | ID | 场景 | 类型 | 优先级 |
241
+ |----|------|------|--------|
242
+ | L01 | {场景标题} | 正常流程 | P0 |
243
+ | L02 | {场景标题} | 边界条件 | P1 |
244
+ | L03 | {场景标题} | 异常场景 | P1 |
245
+
246
+ ---
247
+
248
+ ## Flow: L01 - {场景标题}
249
+
250
+ ### 前置条件
251
+ {前置状态或数据}
252
+
253
+ ### 执行步骤
254
+ 1. {步骤描述}
255
+ ✅ 验证点:{预期结果}
256
+
257
+ ### 环境要求
258
+ - 目标环境:{test/staging/prod}
259
+ - 所需账号:{账号类型}
260
+
261
+ ---
262
+
263
+ ## Flow: L02 - {场景标题}
264
+ ...
265
+ ```
266
+
267
+ #### 6.2 写入文件
268
+
269
+ 将内容写入步骤 3 确定的路径:
270
+
271
+ ```bash
272
+ flows/{module-path}/{filename}.flow.md
273
+ ```
274
+
275
+ #### 6.3 编译 .flow.spec.ts
276
+
277
+ 写入 .flow.md 后,自动调用编译器生成 Playwright `.flow.spec.ts` 测试脚本:
278
+
279
+ ```bash
280
+ node scripts/spec-compiler.mjs flows/user-system/login/login.flow.md
281
+ ```
282
+
283
+ - 编译器从 step 4 已解析的结构化数据生成 `.flow.spec.ts`
284
+ - 生成的 `.flow.spec.ts` 与 `.flow.md` 在同一目录
285
+ - 后续 `/sweep-run` 将优先使用 `.flow.spec.ts` 原生执行,获得 ~20x 加速
286
+ - 如果页面元素变更导致 `.spec.ts` 跑不过,sweep-run 会自动诊断并修复
287
+
288
+ #### 6.4 输出确认
289
+
290
+ ```
291
+ ✅ 测试意图文档已生成:
292
+ flows/user-system/login/login.flow.md
293
+ flows/user-system/login/login.flow.spec.ts (已编译)
294
+
295
+ 包含 3 个场景、12 个验证点。
296
+
297
+ 下一步:
298
+ /sweep-run flows/user-system/login/login.flow.md — 立即执行(默认走原生 ~20x 加速)
299
+ 或继续 /sweep-plan 创建更多测试流程
300
+ ```
301
+
302
+ ---
303
+
304
+ ## 检查清单
305
+
306
+ - [ ] 项目已初始化(检查 .sweep-init)
307
+ - [ ] 获取到测试需求上下文(Issue / PRD / 描述)
308
+ - [ ] 确定放置模块位置(topology.yaml)
309
+ - [ ] 确定文件名
310
+ - [ ] 结构化场景已收集(正常流程 / 边界条件 / 异常场景)
311
+ - [ ] Grill-me 遗漏场景已挑战
312
+ - [ ] .flow.md 已生成并写入
@@ -0,0 +1,46 @@
1
+ # E2E 测试流程:{功能名称}
2
+
3
+ **来源:** {Jira Issue 链接 / PRD 链接}
4
+ **创建时间:** {YYYY-MM-DD HH:mm}
5
+
6
+ ---
7
+
8
+ ## 场景清单
9
+
10
+ | ID | 场景 | 类型 | 优先级 |
11
+ |----|------|------|--------|
12
+ | L01 | {场景标题} | 正常流程 | P0 |
13
+ | L02 | {场景标题} | 边界条件 | P1 |
14
+ | L03 | {场景标题} | 异常场景 | P1 |
15
+ | L04 | {场景标题} | 验收标准验证 | P0 |
16
+
17
+ ---
18
+
19
+ ## Flow: L01 - {场景标题}
20
+
21
+ ### 前置条件
22
+ {描述测试开始前必须满足的状态或数据}
23
+
24
+ ### 执行步骤
25
+ 1. {操作步骤 1}
26
+ ✅ 验证点:{预期结果 1}
27
+ 2. {操作步骤 2}
28
+ ✅ 验证点:{预期结果 2}
29
+
30
+ ### 环境要求
31
+ - 目标环境:{test / staging / prod}
32
+ - 所需账号:{账号类型或角色}
33
+
34
+ ---
35
+
36
+ ## Flow: L02 - {场景标题}
37
+
38
+ ### 前置条件
39
+ {描述测试开始前必须满足的状态或数据}
40
+
41
+ ### 执行步骤
42
+ 1. {操作步骤 1}
43
+ ✅ 验证点:{预期结果 1}
44
+
45
+ ### 环境要求
46
+ - 目标环境:{test / staging / prod}