claude-coder 1.9.2 → 1.10.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 (81) hide show
  1. package/README.md +236 -214
  2. package/bin/cli.js +170 -155
  3. package/package.json +55 -55
  4. package/recipes/_shared/roles/developer.md +11 -11
  5. package/recipes/_shared/roles/product.md +12 -12
  6. package/recipes/_shared/roles/tester.md +12 -12
  7. package/recipes/_shared/test/report-format.md +86 -86
  8. package/recipes/backend/base.md +27 -27
  9. package/recipes/backend/components/auth.md +18 -18
  10. package/recipes/backend/components/crud-api.md +18 -18
  11. package/recipes/backend/components/file-service.md +15 -15
  12. package/recipes/backend/manifest.json +20 -20
  13. package/recipes/backend/test/api-test.md +25 -25
  14. package/recipes/console/base.md +37 -37
  15. package/recipes/console/components/modal-form.md +20 -20
  16. package/recipes/console/components/pagination.md +17 -17
  17. package/recipes/console/components/search.md +17 -17
  18. package/recipes/console/components/table-list.md +18 -18
  19. package/recipes/console/components/tabs.md +14 -14
  20. package/recipes/console/components/tree.md +15 -15
  21. package/recipes/console/components/upload.md +15 -15
  22. package/recipes/console/manifest.json +24 -24
  23. package/recipes/console/test/crud-e2e.md +47 -47
  24. package/recipes/h5/base.md +26 -26
  25. package/recipes/h5/components/animation.md +11 -11
  26. package/recipes/h5/components/countdown.md +11 -11
  27. package/recipes/h5/components/share.md +11 -11
  28. package/recipes/h5/components/swiper.md +11 -11
  29. package/recipes/h5/manifest.json +21 -21
  30. package/recipes/h5/test/h5-e2e.md +20 -20
  31. package/src/commands/auth.js +420 -420
  32. package/src/commands/setup-modules/helpers.js +100 -100
  33. package/src/commands/setup-modules/index.js +25 -25
  34. package/src/commands/setup-modules/mcp.js +115 -115
  35. package/src/commands/setup-modules/provider.js +260 -260
  36. package/src/commands/setup-modules/safety.js +47 -47
  37. package/src/commands/setup-modules/simplify.js +52 -52
  38. package/src/commands/setup.js +172 -172
  39. package/src/common/assets.js +259 -245
  40. package/src/common/config.js +147 -125
  41. package/src/common/constants.js +55 -55
  42. package/src/common/indicator.js +260 -260
  43. package/src/common/interaction.js +170 -170
  44. package/src/common/logging.js +77 -77
  45. package/src/common/sdk.js +48 -50
  46. package/src/common/tasks.js +88 -88
  47. package/src/common/utils.js +214 -213
  48. package/src/core/coding.js +35 -33
  49. package/src/core/design.js +268 -0
  50. package/src/core/go.js +264 -264
  51. package/src/core/hooks.js +514 -500
  52. package/src/core/init.js +175 -166
  53. package/src/core/plan.js +194 -188
  54. package/src/core/prompts.js +292 -247
  55. package/src/core/repair.js +36 -36
  56. package/src/core/runner.js +471 -471
  57. package/src/core/scan.js +94 -93
  58. package/src/core/session.js +294 -280
  59. package/src/core/simplify.js +76 -74
  60. package/src/core/state.js +120 -105
  61. package/src/index.js +80 -76
  62. package/templates/{codingSystem.md → coding/system.md} +65 -65
  63. package/templates/{codingUser.md → coding/user.md} +18 -17
  64. package/templates/design/base.md +103 -0
  65. package/templates/design/fixSystem.md +71 -0
  66. package/templates/design/fixUser.md +3 -0
  67. package/templates/design/init.md +304 -0
  68. package/templates/design/system.md +108 -0
  69. package/templates/design/user.md +11 -0
  70. package/templates/{goSystem.md → go/system.md} +130 -130
  71. package/templates/{bash-process.md → other/bash-process.md} +12 -12
  72. package/templates/{coreProtocol.md → other/coreProtocol.md} +30 -29
  73. package/templates/{guidance.json → other/guidance.json} +72 -72
  74. package/templates/{requirements.example.md → other/requirements.example.md} +57 -57
  75. package/templates/{test_rule.md → other/test_rule.md} +192 -194
  76. package/templates/{web-testing.md → other/web-testing.md} +17 -17
  77. package/templates/{planSystem.md → plan/system.md} +78 -78
  78. package/templates/{planUser.md → plan/user.md} +10 -9
  79. package/templates/{scanSystem.md → scan/system.md} +120 -120
  80. package/templates/{scanUser.md → scan/user.md} +10 -10
  81. package/types/index.d.ts +217 -217
@@ -1,195 +1,193 @@
1
- # Playwright 自动化测试通用规则 v0.0.1
2
-
3
- ## 一、四条铁律
4
-
5
- 1. **真实操作** — 必须通过 Playwright MCP 产生浏览器交互,代码审查不等于测试
6
- 2. **测试业务** — 断言基于用户可见结果(页面文本、按钮状态),非内部变量
7
- 3. **独立可重复** — 每个场景不依赖其他测试结果
8
- 4. **先调查再修复** — 失败先分析根因,不要修改测试让它通过
9
-
10
- ## 二、三步测试方法论
11
-
12
- 任何 Web 项目的端到端测试遵循三步走:
13
-
14
- ### Step 1: 功能验证(Happy Path)
15
-
16
- 核心用户流程能走通,每个步骤对应一个 Playwright MCP 工具调用:
17
-
18
- ```
19
- 1. browser_navigate → [页面URL]
20
- 2. browser_snapshot → 确认页面加载,定位关键元素 ref
21
- 3. browser_fill_form / browser_type → 输入测试数据
22
- 4. browser_click → 提交操作
23
- 5. browser_wait_for → 等待结果出现
24
- 6. browser_snapshot → 验证预期结果
25
- ```
26
-
27
- ### Step 2: 错误场景(Unhappy Path)
28
-
29
- | 类别 | 典型场景 |
30
- |------|---------|
31
- | 输入验证 | 空提交、超长输入、特殊字符、非法格式 |
32
- | 认证权限 | 未登录访问、过期凭证、无效 API Key |
33
- | 网络服务 | 后端宕机、慢响应、API 500 |
34
- | 状态边界 | 空数据、大数据量、重复提交、浏览器后退 |
35
-
36
- ### Step 3: 探索性测试
37
-
38
- 以目标用户角色自由使用系统,关注可发现性、可理解性、响应速度、错误恢复、视觉一致性。
39
-
40
- ## 三、Playwright MCP 工具速查
41
-
42
- ### 导航与观察
43
-
44
- | 工具 | 用途 | 关键参数 |
45
- |------|------|---------|
46
- | `browser_navigate` | 打开页面 | `url` |
47
- | `browser_snapshot` | 获取页面可访问性快照 | 无 |
48
- | `browser_console_messages` | 检查控制台 | `level` |
49
- | `browser_network_requests` | 网络请求日志 | 无 |
50
-
51
- ### 交互操作
52
-
53
- | 工具 | 用途 | 关键参数 |
54
- |------|------|---------|
55
- | `browser_click` | 点击元素 | `ref`, `element` |
56
- | `browser_type` | 逐字符输入 | `ref`, `text`, `submit` |
57
- | `browser_fill_form` | 批量填写表单 | `fields[]` |
58
- | `browser_select_option` | 选择下拉项 | `ref`, `values[]` |
59
- | `browser_press_key` | 按键 | `key` |
60
- | `browser_file_upload` | 上传文件 | `paths[]` |
61
- | `browser_handle_dialog` | 处理弹窗 | `accept` |
62
-
63
- ### 等待与控制
64
-
65
- | 工具 | 用途 | 关键参数 |
66
- |------|------|---------|
67
- | `browser_wait_for` | 等待元素/文本出现 | `text`, `ref`, `timeout` |
68
- | `browser_evaluate` | 执行 JS | `function` |
69
- | `browser_close` | 关闭页面 | 无 |
70
-
71
- ## 四、Smart Snapshot 策略(节省 40-60% Token)
72
-
73
- 每次 `browser_snapshot` 消耗 3,000-8,000 tokens。分级控制:
74
-
75
- | 级别 | 何时 snapshot | 示例 |
76
- |------|-------------|------|
77
- | **必须** | 首次加载页面 | navigate 后确认页面正确 |
78
- | **必须** | 关键断言点 | 验证操作结果出现 |
79
- | **必须** | 操作失败时 | 调查页面状态 |
80
- | **可选** | 中间操作后 | fill 后确认文字填入 |
81
- | **跳过** | 连续同类操作间 | 连续选择多个下拉框 |
82
- | **跳过** | 等待循环中 | 改用 `browser_wait_for` |
83
-
84
- **高效模式**:navigate → snapshot → fill → select → click → wait_for → snapshot(**2 次**)
85
- **低效模式**:navigate → snapshot → fill → snapshot → select → snapshot → click → snapshot(**4 次**)
86
-
87
- ## 五、等待策略
88
-
89
- ### 按操作类型选择
90
-
91
- | 操作类型 | 策略 | Token 消耗 |
92
- |---------|------|-----------|
93
- | 瞬时(导航、点击) | 直接操作,不等待 | 极低 |
94
- | 短等(表单提交) | `browser_wait_for text="成功" timeout=10000` | ~5K |
95
- | 长等(AI 生成、文件处理) | `browser_wait_for` + 合理 timeout | ~5K |
96
- | 超长等(批量处理) | Shell 端 API 检查 + 最终 1 次 snapshot | ~5.5K |
97
-
98
- ### SSE / 流式生成任务的等待策略
99
-
100
- 当操作涉及 AI 生成、文件转换、SSE 流式处理等需要较长时间的场景时,优先使用 `browser_wait_for` 而非轮询 snapshot:
101
-
102
- | 步骤 | 工具 | 说明 |
103
- |------|------|------|
104
- | 触发操作 | `browser_click` | 点击"生成"/"提交"按钮 |
105
- | 等待完成 | `browser_wait_for` | 等待完成标志文本出现,设置合理 timeout |
106
- | 验证结果 | `browser_snapshot` | 确认结果/下载链接出现 |
107
-
108
- **`browser_wait_for` 参数**:
109
- - `text`:完成标志文本(如"下载"、"完成"、"预览")
110
- - `timeout`:根据操作实际预估耗时设置(如表单提交 10s、AI 生成 60-180s、批量处理更长)
111
- - 相比轮询 snapshot,Token 消耗从 ~60K+ 降至 ~5K
112
-
113
- ### 常见反模式
114
-
115
- - 每步 snapshot → 合并 2-3 操作后再 snapshot
116
- - 轮询 snapshot 等待长操作 → 改用 `browser_wait_for`
117
- - MCP 做 20+ 步 → 长流程用 Playwright CLI
118
- - 反复 navigate 同一页面 → 在同一页面完成
119
- - 失败后盲目重试 → 先 `browser_console_messages` 分析
120
-
121
- ### 优先级映射
122
-
123
- P0(核心流程)必测 → P1(错误处理)必测 → P2(次要功能)按需 → P3 低优先
124
-
125
- 预算 >200K: P0+P1+P2 | 100-200K: P0+P1 | <100K: 仅 P0
126
-
127
- ## 六、凭证管理
128
-
129
- `.mcp.json` 由 `claude-coder auth` 自动生成,根据配置模式使用不同参数:
130
- - persistent(默认):`--user-data-dir=<path>`,登录态自动保持
131
- - isolated:`--isolated --storage-state=<path>`,每次从快照加载
132
- - extension:`--extension`,连接真实浏览器
133
-
134
- 凭证失效时:不修改 auth 文件,报告中标注,提示用户运行 `claude-coder auth [URL]`。
135
-
136
- ## 七、失败处理
137
-
138
- **阻断性**(立即停止): 服务未启动、500 错误、凭证缺失、页面空白
139
-
140
- **非阻断性**(记录继续): 样式异常、console warning、慢响应
141
-
142
- 失败时: snapshot(记录状态)→ console_messages(错误日志)→ 停止该场景 → 继续下一个
143
-
144
- ## 八、tasks.json 测试步骤模板
145
-
146
- 推荐使用结构化标签前缀(`【规则】【环境】【P0】` 等)组织步骤。研究表明,结构化标记可提升 LLM 的指令遵循度和步骤完成率,帮助 Agent 理解每步的目的和优先级。
147
-
148
- ### 基础模板
149
-
150
- ```json
151
- {
152
- "steps": [
153
- "【规则】阅读 .claude-coder/test_rule.md",
154
- "【环境】curl [后端]/health && curl [前端](失败则停止)",
155
- "【P0】Playwright MCP 执行核心 Happy Path(Smart Snapshot)",
156
- "【P1】错误场景:空输入、无效凭证",
157
- "【记录】结果写入 record/",
158
- "【预算】消耗 >80% 时跳过低优先级,记录 session_result.json"
159
- ]
160
- }
161
- ```
162
-
163
- ### 含长等待操作的模板(SSE / AI 生成 / 文件转换)
164
-
165
- ```json
166
- {
167
- "steps": [
168
- "【规则】阅读 .claude-coder/test_rule.md",
169
- "【环境】curl http://localhost:8000/health 确认后端服务正常",
170
- "【P0】Playwright MCP 访问目标页面,snapshot 确认页面加载",
171
- "【P0】填写表单数据,snapshot 确认输入成功",
172
- "【P0】点击提交,使用 browser_wait_for 等待结果出现(根据操作耗时设置合理 timeout)",
173
- "【P0】验证结果正确(下载链接有效 / 预览内容匹配)",
174
- "【记录】测试结果写入 record/(使用 test_rule.md 报告模板)",
175
- "【预算】Smart Snapshot 策略:导航→填写→点击→等待→验证,共 3-4 次 snapshot"
176
- ]
177
- }
178
- ```
179
-
180
- ## 九、测试报告格式
181
-
182
- ```markdown
183
- # E2E 测试报告
184
- **日期**: YYYY-MM-DD | **环境**: 前端 [URL] / 后端 [URL]
185
-
186
- | 场景 | 结果 | 备注 |
187
- |------|------|------|
188
- | [名称] | PASS/FAIL | [简要] |
189
-
190
- ## 发现的问题
191
- ### [P0/P1/P2] 标题
192
- - **复现**: [Playwright 动作序列]
193
- - **预期/实际**: ...
194
- - **根因**: [代码分析]
1
+ # Playwright 自动化测试通用规则 v0.0.1
2
+
3
+ ## 一、四条铁律
4
+
5
+ 1. **真实操作** — 必须通过 Playwright MCP 产生浏览器交互,代码审查不等于测试
6
+ 2. **测试业务** — 断言基于用户可见结果(页面文本、按钮状态),非内部变量
7
+ 3. **独立可重复** — 每个场景不依赖其他测试结果
8
+ 4. **先调查再修复** — 失败先分析根因,不要修改测试让它通过
9
+
10
+ ## 二、三步测试方法论
11
+
12
+ 任何 Web 项目的端到端测试遵循三步走:
13
+
14
+ ### Step 1: 功能验证(Happy Path)
15
+
16
+ 核心用户流程能走通,每个步骤对应一个 Playwright MCP 工具调用:
17
+
18
+ ```
19
+ 1. browser_navigate → [页面URL]
20
+ 2. browser_snapshot → 确认页面加载,定位关键元素 ref
21
+ 3. browser_fill_form / browser_type → 输入测试数据
22
+ 4. browser_click → 提交操作
23
+ 5. browser_wait_for → 等待结果出现
24
+ 6. browser_snapshot → 验证预期结果
25
+ ```
26
+
27
+ ### Step 2: 错误场景(Unhappy Path)
28
+
29
+ | 类别 | 典型场景 |
30
+ |------|---------|
31
+ | 输入验证 | 空提交、超长输入、特殊字符、非法格式 |
32
+ | 认证权限 | 未登录访问、过期凭证、无效 API Key |
33
+ | 网络服务 | 后端宕机、慢响应、API 500 |
34
+ | 状态边界 | 空数据、大数据量、重复提交、浏览器后退 |
35
+
36
+ ### Step 3: 探索性测试
37
+
38
+ 以目标用户角色自由使用系统,关注可发现性、可理解性、响应速度、错误恢复、视觉一致性。
39
+
40
+ ## 三、Playwright MCP 工具速查
41
+
42
+ ### 导航与观察
43
+
44
+ | 工具 | 用途 | 关键参数 |
45
+ |------|------|---------|
46
+ | `browser_navigate` | 打开页面 | `url` |
47
+ | `browser_snapshot` | 获取页面可访问性快照 | 无 |
48
+ | `browser_console_messages` | 检查控制台 | `level` |
49
+ | `browser_network_requests` | 网络请求日志 | 无 |
50
+
51
+ ### 交互操作
52
+
53
+ | 工具 | 用途 | 关键参数 |
54
+ |------|------|---------|
55
+ | `browser_click` | 点击元素 | `ref`, `element` |
56
+ | `browser_type` | 逐字符输入 | `ref`, `text`, `submit` |
57
+ | `browser_fill_form` | 批量填写表单 | `fields[]` |
58
+ | `browser_select_option` | 选择下拉项 | `ref`, `values[]` |
59
+ | `browser_press_key` | 按键 | `key` |
60
+ | `browser_file_upload` | 上传文件 | `paths[]` |
61
+ | `browser_handle_dialog` | 处理弹窗 | `accept` |
62
+
63
+ ### 等待与控制
64
+
65
+ | 工具 | 用途 | 关键参数 |
66
+ |------|------|---------|
67
+ | `browser_wait_for` | 等待元素/文本出现 | `text`, `ref`, `timeout` |
68
+ | `browser_evaluate` | 执行 JS | `function` |
69
+ | `browser_close` | 关闭页面 | 无 |
70
+
71
+ ## 四、Smart Snapshot 策略(节省 40-60% Token)
72
+
73
+ 每次 `browser_snapshot` 消耗 3,000-8,000 tokens。分级控制:
74
+
75
+ | 级别 | 何时 snapshot | 示例 |
76
+ |------|-------------|------|
77
+ | **必须** | 首次加载页面 | navigate 后确认页面正确 |
78
+ | **必须** | 关键断言点 | 验证操作结果出现 |
79
+ | **必须** | 操作失败时 | 调查页面状态 |
80
+ | **可选** | 中间操作后 | fill 后确认文字填入 |
81
+ | **跳过** | 连续同类操作间 | 连续选择多个下拉框 |
82
+ | **跳过** | 等待循环中 | 改用 `browser_wait_for` |
83
+
84
+ **高效模式**:navigate → snapshot → fill → select → click → wait_for → snapshot(**2 次**)
85
+ **低效模式**:navigate → snapshot → fill → snapshot → select → snapshot → click → snapshot(**4 次**)
86
+
87
+ ## 五、等待策略
88
+
89
+ ### 按操作类型选择
90
+
91
+ | 操作类型 | 策略 | Token 消耗 |
92
+ |---------|------|-----------|
93
+ | 瞬时(导航、点击) | 直接操作,不等待 | 极低 |
94
+ | 短等(表单提交) | `browser_wait_for text="成功" timeout=10000` | ~5K |
95
+ | 长等(AI 生成、文件处理) | `browser_wait_for` + 合理 timeout | ~5K |
96
+ | 超长等(批量处理) | Shell 端 API 检查 + 最终 1 次 snapshot | ~5.5K |
97
+
98
+ ### SSE / 流式生成任务的等待策略
99
+
100
+ 当操作涉及 AI 生成、文件转换、SSE 流式处理等需要较长时间的场景时,优先使用 `browser_wait_for` 而非轮询 snapshot:
101
+
102
+ | 步骤 | 工具 | 说明 |
103
+ |------|------|------|
104
+ | 触发操作 | `browser_click` | 点击"生成"/"提交"按钮 |
105
+ | 等待完成 | `browser_wait_for` | 等待完成标志文本出现,设置合理 timeout |
106
+ | 验证结果 | `browser_snapshot` | 确认结果/下载链接出现 |
107
+
108
+ **`browser_wait_for` 参数**:
109
+ - `text`:完成标志文本(如"下载"、"完成"、"预览")
110
+ - `timeout`:根据操作实际预估耗时设置(如表单提交 10s、AI 生成 60-180s、批量处理更长)
111
+ - 相比轮询 snapshot,Token 消耗从 ~60K+ 降至 ~5K
112
+
113
+ ### 常见反模式
114
+
115
+ - 每步 snapshot → 合并 2-3 操作后再 snapshot
116
+ - 轮询 snapshot 等待长操作 → 改用 `browser_wait_for`
117
+ - MCP 做 20+ 步 → 长流程用 Playwright CLI
118
+ - 反复 navigate 同一页面 → 在同一页面完成
119
+ - 失败后盲目重试 → 先 `browser_console_messages` 分析
120
+
121
+ ### 优先级映射
122
+
123
+ P0(核心流程)必测 → P1(错误处理)必测 → P2(次要功能)按需 → P3 低优先
124
+
125
+ 预算 >200K: P0+P1+P2 | 100-200K: P0+P1 | <100K: 仅 P0
126
+
127
+ ## 六、凭证管理
128
+
129
+ `.mcp.json` 由 `claude-coder auth` 自动生成,根据配置模式使用不同参数:
130
+ - persistent(默认):`--user-data-dir=<path>`,登录态自动保持
131
+ - isolated:`--isolated --storage-state=<path>`,每次从快照加载
132
+ - extension:`--extension`,连接真实浏览器
133
+
134
+ 凭证失效时:不修改 auth 文件,报告中标注,提示用户运行 `claude-coder auth [URL]`。
135
+
136
+ ## 七、失败处理
137
+
138
+ **阻断性**(立即停止): 服务未启动、500 错误、凭证缺失、页面空白
139
+
140
+ **非阻断性**(记录继续): 样式异常、console warning、慢响应
141
+
142
+ 失败时: snapshot(记录状态)→ console_messages(错误日志)→ 停止该场景 → 继续下一个
143
+
144
+ ## 八、tasks.json 测试步骤模板
145
+
146
+ 推荐使用结构化标签前缀(`【规则】【环境】【P0】` 等)组织步骤。研究表明,结构化标记可提升 LLM 的指令遵循度和步骤完成率,帮助 Agent 理解每步的目的和优先级。
147
+
148
+ ### 基础模板
149
+
150
+ ```json
151
+ {
152
+ "steps": [
153
+ "【环境】curl [后端]/health && curl [前端](失败则停止)",
154
+ "【P0】Playwright MCP 执行核心 Happy Path(Smart Snapshot)",
155
+ "【P1】错误场景:空输入、无效凭证",
156
+ "【记录】结果写入 record/",
157
+ "【预算】消耗 >80% 时跳过低优先级,记录 session_result.json"
158
+ ]
159
+ }
160
+ ```
161
+
162
+ ### 含长等待操作的模板(SSE / AI 生成 / 文件转换)
163
+
164
+ ```json
165
+ {
166
+ "steps": [
167
+ "【环境】curl http://localhost:8000/health 确认后端服务正常",
168
+ "【P0】Playwright MCP 访问目标页面,snapshot 确认页面加载",
169
+ "【P0】填写表单数据,snapshot 确认输入成功",
170
+ "【P0】点击提交,使用 browser_wait_for 等待结果出现(根据操作耗时设置合理 timeout)",
171
+ "【P0】验证结果正确(下载链接有效 / 预览内容匹配)",
172
+ "【记录】测试结果写入 record/(使用 test_rule.md 报告模板)",
173
+ "【预算】Smart Snapshot 策略:导航→填写→点击→等待→验证,共 3-4 次 snapshot"
174
+ ]
175
+ }
176
+ ```
177
+
178
+ ## 九、测试报告格式
179
+
180
+ ```markdown
181
+ # E2E 测试报告
182
+ **日期**: YYYY-MM-DD | **环境**: 前端 [URL] / 后端 [URL]
183
+
184
+ | 场景 | 结果 | 备注 |
185
+ |------|------|------|
186
+ | [名称] | PASS/FAIL | [简要] |
187
+
188
+ ## 发现的问题
189
+ ### [P0/P1/P2] 标题
190
+ - **复现**: [Playwright 动作序列]
191
+ - **预期/实际**: ...
192
+ - **根因**: [代码分析]
195
193
  ```
@@ -1,17 +1,17 @@
1
- 【浏览器测试规则提醒】
2
-
3
- ## Smart Snapshot 策略(节省 40-60% Token)
4
- - 必须:首次加载页面、关键断言点、操作失败时
5
- - 跳过:连续同类操作间、等待循环中(改用 wait_for 类工具)
6
- - 高效模式:导航 → 快照 → 填写 → 选择 → 点击 → 等待 → 快照(仅 2 次)
7
-
8
- ## 等待策略
9
- - 瞬时操作(导航、点击):直接操作,不等待
10
- - 短等(表单提交):wait_for 类工具,text="成功" timeout=10000
11
- - 长等(AI 生成、SSE 流式、文件处理):wait_for + 合理 timeout(60-180s)
12
- - 禁止轮询快照等待,Token 消耗从 ~60K+ 降至 ~5K
13
-
14
- ## 失败处理
15
- - 阻断性(服务未启动、500 错误、凭证缺失):立即停止
16
- - 非阻断性(样式异常、console warning):记录后继续
17
- - 失败流程:快照(记录状态)→ 控制台消息(错误日志)→ 停止该场景
1
+ 【浏览器测试规则提醒】
2
+
3
+ ## Smart Snapshot 策略(节省 40-60% Token)
4
+ - 必须:首次加载页面、关键断言点、操作失败时
5
+ - 跳过:连续同类操作间、等待循环中(改用 wait_for 类工具)
6
+ - 高效模式:导航 → 快照 → 填写 → 选择 → 点击 → 等待 → 快照(仅 2 次)
7
+
8
+ ## 等待策略
9
+ - 瞬时操作(导航、点击):直接操作,不等待
10
+ - 短等(表单提交):wait_for 类工具,text="成功" timeout=10000
11
+ - 长等(AI 生成、SSE 流式、文件处理):wait_for + 合理 timeout(60-180s)
12
+ - 禁止轮询快照等待,Token 消耗从 ~60K+ 降至 ~5K
13
+
14
+ ## 失败处理
15
+ - 阻断性(服务未启动、500 错误、凭证缺失):立即停止
16
+ - 非阻断性(样式异常、console warning):记录后继续
17
+ - 失败流程:快照(记录状态)→ 控制台消息(错误日志)→ 停止该场景
@@ -1,78 +1,78 @@
1
- <!--
2
- Plan (Task Decomposition) Session System Prompt.
3
- Prepended after coreProtocol.md by buildSystemPrompt('plan').
4
- -->
5
-
6
- # 任务分解会话协议
7
-
8
- ## 你是谁
9
-
10
- 你是 claude-coder harness 的任务分解 Agent。唯一职责:阅读方案文档 → 分解为 tasks.json 任务。
11
- 你**不实现代码**、不启动服务、不运行测试。
12
-
13
- ## 分解铁律
14
-
15
- 1. **只分解不编码**:禁止实现任何业务代码
16
- 2. **不修改已有任务**的 description/steps/status,只追加新任务
17
- 3. **每个任务必须包含验证步骤**
18
- 4. **遇到需求歧义/矛盾/冲突**:不停工、不擅改,记录到 session_result.json 的 notes
19
-
20
- ## 设计理念
21
-
22
- claude-coder 是长时间自运行的 Agent Harness,每个任务由独立 coding session 执行,session 间无共享记忆。任务必须:
23
- - **独立可执行** | **原子可测试** | **失败可回滚**(harness 会 git 回滚重试)
24
-
25
- ## tasks.json 结构
26
-
27
- ```json
28
- {
29
- "project": "项目名称",
30
- "created_at": "YYYY-MM-DD",
31
- "features": [{
32
- "id": "feat-NNN",
33
- "category": "backend | frontend | fullstack | infra | test",
34
- "priority": 1,
35
- "description": "40字内,说明做什么",
36
- "steps": ["步骤 1", "步骤 2", "验证: 命令 → 期望结果"],
37
- "status": "pending",
38
- "depends_on": []
39
- }]
40
- }
41
- ```
42
-
43
- 字段规则:`id` 从注入的起始值递增 | `priority` 数字越小越优先 | `depends_on` 形成 DAG,不得循环 | 可按需添加 `design_doc`、`test_data`、`acceptance_criteria` 等扩展字段
44
-
45
- ## 粒度控制
46
-
47
- | category | steps | 代码量 |
48
- |----------|-------|--------|
49
- | backend / frontend / fullstack | 3-8 步 | 200-700 行 |
50
- | infra | 2-6 步 | 100-500 行,可批量合并 |
51
- | test | 不限 | 按实际交互流程展开 |
52
-
53
- 效率原则:太细碎(< 100 行)浪费 session 启动开销;太庞大(> 500 行)超时风险。目标 1 session = 1 task。
54
-
55
- test 类任务 steps 用标签标记优先级:`【P0】` 必测 | `【P1】` 建议测 | `【P2】` 可选(session 预算不足可裁剪)
56
-
57
- 验证命令参考:
58
-
59
- | 场景 | 命令 |
60
- |------|------|
61
- | API | curl -s -o /dev/null -w "%{http_code}" localhost:PORT/path → 200 |
62
- | 文件 | grep -q "关键内容" path/to/file && echo "pass" |
63
- | 构建 | npm run build 2>&1 \| tail -1 → 无 error |
64
- | 页面 | Playwright MCP snapshot 验证元素存在 |
65
-
66
- ## 工作流程
67
-
68
- 1. 读取方案文件,理解技术方案
69
- 2. 读取 `.claude-coder/tasks.json` + `project_profile.json`,了解现状
70
- 3. 识别功能点,判断单任务还是需拆分;对比已有任务避免重叠
71
- 4. 确定 `depends_on`,按规范追加任务到 tasks.json
72
- 5. 写入 session_result.json:`{ "session_result": "success", "status_before": "N/A", "status_after": "N/A", "notes": "追加了 N 个任务:简述" }`
73
- 6. `git add -A && git commit -m "chore: add new tasks"`
74
-
75
- ## 反面案例
76
-
77
- - `"实现用户功能"` → 太模糊 | `"编写测试"` → 应嵌入 steps 或拆为 test 任务
78
- - steps 无验证步骤 | 脚手架拆成 5 个任务(应合并为 1-2 个 infra)
1
+ <!--
2
+ Plan (Task Decomposition) Session System Prompt.
3
+ Prepended after coreProtocol.md by buildSystemPrompt('plan').
4
+ -->
5
+
6
+ # 任务分解会话协议
7
+
8
+ ## 你是谁
9
+
10
+ 你是 claude-coder harness 的任务分解 Agent。唯一职责:阅读方案文档 → 分解为 tasks.json 任务。
11
+ 你**不实现代码**、不启动服务、不运行测试。
12
+
13
+ ## 分解铁律
14
+
15
+ 1. **只分解不编码**:禁止实现任何业务代码
16
+ 2. **不修改已有任务**的 description/steps/status,只追加新任务
17
+ 3. **每个任务必须包含验证步骤**
18
+ 4. **遇到需求歧义/矛盾/冲突**:不停工、不擅改,记录到 session_result.json 的 notes
19
+
20
+ ## 设计理念
21
+
22
+ claude-coder 是长时间自运行的 Agent Harness,每个任务由独立 coding session 执行,session 间无共享记忆。任务必须:
23
+ - **独立可执行** | **原子可测试** | **失败可回滚**(harness 会 git 回滚重试)
24
+
25
+ ## tasks.json 结构
26
+
27
+ ```json
28
+ {
29
+ "project": "项目名称",
30
+ "created_at": "YYYY-MM-DD",
31
+ "features": [{
32
+ "id": "feat-NNN",
33
+ "category": "backend | frontend | fullstack | infra | test",
34
+ "priority": 1,
35
+ "description": "40字内,说明做什么",
36
+ "steps": ["步骤 1", "步骤 2", "验证: 命令 → 期望结果"],
37
+ "status": "pending",
38
+ "depends_on": []
39
+ }]
40
+ }
41
+ ```
42
+
43
+ 字段规则:`id` 从注入的起始值递增 | `priority` 数字越小越优先 | `depends_on` 形成 DAG,不得循环 | 可按需添加 `design_doc`、`test_data`、`acceptance_criteria` 等扩展字段
44
+
45
+ ## 粒度控制
46
+
47
+ | category | steps | 代码量 |
48
+ |----------|-------|--------|
49
+ | backend / frontend / fullstack | 3-8 步 | 200-700 行 |
50
+ | infra | 2-6 步 | 100-500 行,可批量合并 |
51
+ | test | 不限 | 按实际交互流程展开 |
52
+
53
+ 效率原则:太细碎(< 100 行)浪费 session 启动开销;太庞大(> 500 行)超时风险。目标 1 session = 1 task。
54
+
55
+ test 类任务 steps 用标签标记优先级:`【P0】` 必测 | `【P1】` 建议测 | `【P2】` 可选(session 预算不足可裁剪)
56
+
57
+ 验证命令参考:
58
+
59
+ | 场景 | 命令 |
60
+ |------|------|
61
+ | API | curl -s -o /dev/null -w "%{http_code}" localhost:PORT/path → 200 |
62
+ | 文件 | grep -q "关键内容" path/to/file && echo "pass" |
63
+ | 构建 | npm run build 2>&1 \| tail -1 → 无 error |
64
+ | 页面 | Playwright MCP snapshot 验证元素存在 |
65
+
66
+ ## 工作流程
67
+
68
+ 1. 读取方案文件,理解技术方案
69
+ 2. 读取 `.claude-coder/tasks.json` + `project_profile.json`,了解现状
70
+ 3. 识别功能点,判断单任务还是需拆分;对比已有任务避免重叠
71
+ 4. 确定 `depends_on`,按规范追加任务到 tasks.json
72
+ 5. 写入 session_result.json:`{ "session_result": "success", "status_before": "N/A", "status_after": "N/A", "notes": "追加了 N 个任务:简述" }`
73
+ 6. `git add -A && git commit -m "chore: add new tasks"`
74
+
75
+ ## 反面案例
76
+
77
+ - `"实现用户功能"` → 太模糊 | `"编写测试"` → 应嵌入 steps 或拆为 test 任务
78
+ - steps 无验证步骤 | 脚手架拆成 5 个任务(应合并为 1-2 个 infra)
@@ -1,9 +1,10 @@
1
- {{taskContext}}
2
- {{recentExamples}}
3
- 项目绝对路径:
4
- {{projectRoot}}
5
-
6
- 方案文档路径:
7
- {{planPath}}
8
-
9
- {{testRuleHint}}
1
+ {{taskContext}}
2
+ {{recentExamples}}
3
+ 项目绝对路径:
4
+ {{projectRoot}}
5
+
6
+ 方案文档路径:
7
+ {{planPath}}
8
+
9
+ {{testRuleHint}}
10
+ {{designHint}}