@fro.bot/systematic 1.22.8 → 1.23.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 (40) hide show
  1. package/package.json +1 -1
  2. package/skills/agent-browser/SKILL.md +511 -170
  3. package/skills/agent-browser/references/authentication.md +303 -0
  4. package/skills/agent-browser/references/commands.md +266 -0
  5. package/skills/agent-browser/references/profiling.md +120 -0
  6. package/skills/agent-browser/references/proxy-support.md +194 -0
  7. package/skills/agent-browser/references/session-management.md +193 -0
  8. package/skills/agent-browser/references/snapshot-refs.md +194 -0
  9. package/skills/agent-browser/references/video-recording.md +173 -0
  10. package/skills/agent-browser/templates/authenticated-session.sh +105 -0
  11. package/skills/agent-browser/templates/capture-workflow.sh +69 -0
  12. package/skills/agent-browser/templates/form-automation.sh +62 -0
  13. package/skills/agent-native-audit/SKILL.md +279 -0
  14. package/skills/ce-brainstorm/SKILL.md +146 -0
  15. package/skills/ce-compound/SKILL.md +317 -0
  16. package/skills/ce-plan/SKILL.md +642 -0
  17. package/skills/ce-review/SKILL.md +559 -0
  18. package/skills/ce-work/SKILL.md +471 -0
  19. package/skills/changelog/SKILL.md +139 -0
  20. package/skills/create-agent-skill/SKILL.md +10 -0
  21. package/skills/create-agent-skills/SKILL.md +3 -14
  22. package/skills/deepen-plan/SKILL.md +545 -0
  23. package/skills/deploy-docs/SKILL.md +113 -0
  24. package/skills/feature-video/SKILL.md +352 -0
  25. package/skills/generate_command/SKILL.md +163 -0
  26. package/skills/heal-skill/SKILL.md +148 -0
  27. package/skills/lfg/SKILL.md +34 -0
  28. package/skills/report-bug/SKILL.md +151 -0
  29. package/skills/reproduce-bug/SKILL.md +101 -0
  30. package/skills/resolve_parallel/SKILL.md +35 -0
  31. package/skills/resolve_todo_parallel/SKILL.md +38 -0
  32. package/skills/slfg/SKILL.md +33 -0
  33. package/skills/test-browser/SKILL.md +394 -0
  34. package/skills/test-xcode/SKILL.md +333 -0
  35. package/skills/triage/SKILL.md +312 -0
  36. package/skills/workflows-brainstorm/SKILL.md +11 -0
  37. package/skills/workflows-compound/SKILL.md +10 -0
  38. package/skills/workflows-plan/SKILL.md +10 -0
  39. package/skills/workflows-review/SKILL.md +10 -0
  40. package/skills/workflows-work/SKILL.md +10 -0
@@ -0,0 +1,394 @@
1
+ ---
2
+ name: test-browser
3
+ description: Run browser tests on pages affected by current PR or branch
4
+ argument-hint: '[PR number, branch name, ''current'', or --port PORT]'
5
+ ---
6
+
7
+ # Browser Test Command
8
+
9
+ <command_purpose>Run end-to-end browser tests on pages affected by a PR or branch changes using agent-browser CLI.</command_purpose>
10
+
11
+ ## CRITICAL: Use agent-browser CLI Only
12
+
13
+ **DO NOT use Chrome MCP tools (mcp__claude-in-chrome__*).**
14
+
15
+ This command uses the `agent-browser` CLI exclusively. The agent-browser CLI is a Bash-based tool from Vercel that runs headless Chromium. It is NOT the same as Chrome browser automation via MCP.
16
+
17
+ If you find yourself calling `mcp__claude-in-chrome__*` tools, STOP. Use `agent-browser` Bash commands instead.
18
+
19
+ ## Introduction
20
+
21
+ <role>QA Engineer specializing in browser-based end-to-end testing</role>
22
+
23
+ This command tests affected pages in a real browser, catching issues that unit tests miss:
24
+ - JavaScript integration bugs
25
+ - CSS/layout regressions
26
+ - User workflow breakages
27
+ - Console errors
28
+
29
+ ## Prerequisites
30
+
31
+ <requirements>
32
+ - Local development server running (e.g., `bin/dev`, `rails server`, `npm run dev`)
33
+ - agent-browser CLI installed (see Setup below)
34
+ - Git repository with changes to test
35
+ </requirements>
36
+
37
+ ## Setup
38
+
39
+ **Check installation:**
40
+ ```bash
41
+ command -v agent-browser >/dev/null 2>&1 && echo "Installed" || echo "NOT INSTALLED"
42
+ ```
43
+
44
+ **Install if needed:**
45
+ ```bash
46
+ npm install -g agent-browser
47
+ agent-browser install # Downloads Chromium (~160MB)
48
+ ```
49
+
50
+ See the `agent-browser` skill for detailed usage.
51
+
52
+ ## Main Tasks
53
+
54
+ ### 0. Verify agent-browser Installation
55
+
56
+ Before starting ANY browser testing, verify agent-browser is installed:
57
+
58
+ ```bash
59
+ command -v agent-browser >/dev/null 2>&1 && echo "Ready" || (echo "Installing..." && npm install -g agent-browser && agent-browser install)
60
+ ```
61
+
62
+ If installation fails, inform the user and stop.
63
+
64
+ ### 1. Ask Browser Mode
65
+
66
+ <ask_browser_mode>
67
+
68
+ Before starting tests, ask user if they want to watch the browser:
69
+
70
+ Use question with:
71
+ - Question: "Do you want to watch the browser tests run?"
72
+ - Options:
73
+ 1. **Headed (watch)** - Opens visible browser window so you can see tests run
74
+ 2. **Headless (faster)** - Runs in background, faster but invisible
75
+
76
+ Store the choice and use `--headed` flag when user selects "Headed".
77
+
78
+ </ask_browser_mode>
79
+
80
+ ### 2. Determine Test Scope
81
+
82
+ <test_target> $ARGUMENTS </test_target>
83
+
84
+ <determine_scope>
85
+
86
+ **If PR number provided:**
87
+ ```bash
88
+ gh pr view [number] --json files -q '.files[].path'
89
+ ```
90
+
91
+ **If 'current' or empty:**
92
+ ```bash
93
+ git diff --name-only main...HEAD
94
+ ```
95
+
96
+ **If branch name provided:**
97
+ ```bash
98
+ git diff --name-only main...[branch]
99
+ ```
100
+
101
+ </determine_scope>
102
+
103
+ ### 3. Map Files to Routes
104
+
105
+ <file_to_route_mapping>
106
+
107
+ Map changed files to testable routes:
108
+
109
+ | File Pattern | Route(s) |
110
+ |-------------|----------|
111
+ | `app/views/users/*` | `/users`, `/users/:id`, `/users/new` |
112
+ | `app/controllers/settings_controller.rb` | `/settings` |
113
+ | `app/javascript/controllers/*_controller.js` | Pages using that Stimulus controller |
114
+ | `app/components/*_component.rb` | Pages rendering that component |
115
+ | `app/views/layouts/*` | All pages (test homepage at minimum) |
116
+ | `app/assets/stylesheets/*` | Visual regression on key pages |
117
+ | `app/helpers/*_helper.rb` | Pages using that helper |
118
+ | `src/app/*` (Next.js) | Corresponding routes |
119
+ | `src/components/*` | Pages using those components |
120
+
121
+ Build a list of URLs to test based on the mapping.
122
+
123
+ </file_to_route_mapping>
124
+
125
+ ### 4. Detect Dev Server Port
126
+
127
+ <detect_port>
128
+
129
+ Determine the dev server port using this priority order:
130
+
131
+ **Priority 1: Explicit argument**
132
+ If the user passed a port number (e.g., `/test-browser 5000` or `/test-browser --port 5000`), use that port directly.
133
+
134
+ **Priority 2: AGENTS.md / project instructions**
135
+ ```bash
136
+ # Check AGENTS.md for port references
137
+ grep -Eio '(port\s*[:=]\s*|localhost:)([0-9]{4,5})' AGENTS.md 2>/dev/null | grep -Eo '[0-9]{4,5}' | head -1
138
+ ```
139
+
140
+ **Priority 3: package.json scripts**
141
+ ```bash
142
+ # Check dev/start scripts for --port flags
143
+ grep -Eo '\-\-port[= ]+[0-9]{4,5}' package.json 2>/dev/null | grep -Eo '[0-9]{4,5}' | head -1
144
+ ```
145
+
146
+ **Priority 4: Environment files**
147
+ ```bash
148
+ # Check .env, .env.local, .env.development for PORT=
149
+ grep -h '^PORT=' .env .env.local .env.development 2>/dev/null | tail -1 | cut -d= -f2
150
+ ```
151
+
152
+ **Priority 5: Default fallback**
153
+ If none of the above yields a port, default to `3000`.
154
+
155
+ Store the result in a `PORT` variable for use in all subsequent steps.
156
+
157
+ ```bash
158
+ # Combined detection (run this)
159
+ PORT="${EXPLICIT_PORT:-}"
160
+ if [ -z "$PORT" ]; then
161
+ PORT=$(grep -Eio '(port\s*[:=]\s*|localhost:)([0-9]{4,5})' AGENTS.md 2>/dev/null | grep -Eo '[0-9]{4,5}' | head -1)
162
+ fi
163
+ if [ -z "$PORT" ]; then
164
+ PORT=$(grep -Eo '\-\-port[= ]+[0-9]{4,5}' package.json 2>/dev/null | grep -Eo '[0-9]{4,5}' | head -1)
165
+ fi
166
+ if [ -z "$PORT" ]; then
167
+ PORT=$(grep -h '^PORT=' .env .env.local .env.development 2>/dev/null | tail -1 | cut -d= -f2)
168
+ fi
169
+ PORT="${PORT:-3000}"
170
+ echo "Using dev server port: $PORT"
171
+ ```
172
+
173
+ </detect_port>
174
+
175
+ ### 5. Verify Server is Running
176
+
177
+ <check_server>
178
+
179
+ Before testing, verify the local server is accessible using the detected port:
180
+
181
+ ```bash
182
+ agent-browser open http://localhost:${PORT}
183
+ agent-browser snapshot -i
184
+ ```
185
+
186
+ If server is not running, inform user:
187
+ ```markdown
188
+ **Server not running on port ${PORT}**
189
+
190
+ Please start your development server:
191
+ - Rails: `bin/dev` or `rails server`
192
+ - Node/Next.js: `npm run dev`
193
+ - Custom port: `/test-browser --port <your-port>`
194
+
195
+ Then run `/test-browser` again.
196
+ ```
197
+
198
+ </check_server>
199
+
200
+ ### 6. Test Each Affected Page
201
+
202
+ <test_pages>
203
+
204
+ For each affected route, use agent-browser CLI commands (NOT Chrome MCP):
205
+
206
+ **Step 1: Navigate and capture snapshot**
207
+ ```bash
208
+ agent-browser open "http://localhost:${PORT}/[route]"
209
+ agent-browser snapshot -i
210
+ ```
211
+
212
+ **Step 2: For headed mode (visual debugging)**
213
+ ```bash
214
+ agent-browser --headed open "http://localhost:${PORT}/[route]"
215
+ agent-browser --headed snapshot -i
216
+ ```
217
+
218
+ **Step 3: Verify key elements**
219
+ - Use `agent-browser snapshot -i` to get interactive elements with refs
220
+ - Page title/heading present
221
+ - Primary content rendered
222
+ - No error messages visible
223
+ - Forms have expected fields
224
+
225
+ **Step 4: Test critical interactions**
226
+ ```bash
227
+ agent-browser click @e1 # Use ref from snapshot
228
+ agent-browser snapshot -i
229
+ ```
230
+
231
+ **Step 5: Take screenshots**
232
+ ```bash
233
+ agent-browser screenshot page-name.png
234
+ agent-browser screenshot --full page-name-full.png # Full page
235
+ ```
236
+
237
+ </test_pages>
238
+
239
+ ### 7. Human Verification (When Required)
240
+
241
+ <human_verification>
242
+
243
+ Pause for human input when testing touches:
244
+
245
+ | Flow Type | What to Ask |
246
+ |-----------|-------------|
247
+ | OAuth | "Please sign in with [provider] and confirm it works" |
248
+ | Email | "Check your inbox for the test email and confirm receipt" |
249
+ | Payments | "Complete a test purchase in sandbox mode" |
250
+ | SMS | "Verify you received the SMS code" |
251
+ | External APIs | "Confirm the [service] integration is working" |
252
+
253
+ Use question:
254
+ ```markdown
255
+ **Human Verification Needed**
256
+
257
+ This test touches the [flow type]. Please:
258
+ 1. [Action to take]
259
+ 2. [What to verify]
260
+
261
+ Did it work correctly?
262
+ 1. Yes - continue testing
263
+ 2. No - describe the issue
264
+ ```
265
+
266
+ </human_verification>
267
+
268
+ ### 8. Handle Failures
269
+
270
+ <failure_handling>
271
+
272
+ When a test fails:
273
+
274
+ 1. **Document the failure:**
275
+ - Screenshot the error state: `agent-browser screenshot error.png`
276
+ - Note the exact reproduction steps
277
+
278
+ 2. **Ask user how to proceed:**
279
+ ```markdown
280
+ **Test Failed: [route]**
281
+
282
+ Issue: [description]
283
+ Console errors: [if any]
284
+
285
+ How to proceed?
286
+ 1. Fix now - I'll help debug and fix
287
+ 2. Create todo - Add to todos/ for later
288
+ 3. Skip - Continue testing other pages
289
+ ```
290
+
291
+ 3. **If "Fix now":**
292
+ - Investigate the issue
293
+ - Propose a fix
294
+ - Apply fix
295
+ - Re-run the failing test
296
+
297
+ 4. **If "Create todo":**
298
+ - Create `{id}-pending-p1-browser-test-{description}.md`
299
+ - Continue testing
300
+
301
+ 5. **If "Skip":**
302
+ - Log as skipped
303
+ - Continue testing
304
+
305
+ </failure_handling>
306
+
307
+ ### 9. Test Summary
308
+
309
+ <test_summary>
310
+
311
+ After all tests complete, present summary:
312
+
313
+ ```markdown
314
+ ## Browser Test Results
315
+
316
+ **Test Scope:** PR #[number] / [branch name]
317
+ **Server:** http://localhost:${PORT}
318
+
319
+ ### Pages Tested: [count]
320
+
321
+ | Route | Status | Notes |
322
+ |-------|--------|-------|
323
+ | `/users` | Pass | |
324
+ | `/settings` | Pass | |
325
+ | `/dashboard` | Fail | Console error: [msg] |
326
+ | `/checkout` | Skip | Requires payment credentials |
327
+
328
+ ### Console Errors: [count]
329
+ - [List any errors found]
330
+
331
+ ### Human Verifications: [count]
332
+ - OAuth flow: Confirmed
333
+ - Email delivery: Confirmed
334
+
335
+ ### Failures: [count]
336
+ - `/dashboard` - [issue description]
337
+
338
+ ### Created Todos: [count]
339
+ - `005-pending-p1-browser-test-dashboard-error.md`
340
+
341
+ ### Result: [PASS / FAIL / PARTIAL]
342
+ ```
343
+
344
+ </test_summary>
345
+
346
+ ## Quick Usage Examples
347
+
348
+ ```bash
349
+ # Test current branch changes (auto-detects port)
350
+ /test-browser
351
+
352
+ # Test specific PR
353
+ /test-browser 847
354
+
355
+ # Test specific branch
356
+ /test-browser feature/new-dashboard
357
+
358
+ # Test on a specific port
359
+ /test-browser --port 5000
360
+ ```
361
+
362
+ ## agent-browser CLI Reference
363
+
364
+ **ALWAYS use these Bash commands. NEVER use mcp__claude-in-chrome__* tools.**
365
+
366
+ ```bash
367
+ # Navigation
368
+ agent-browser open <url> # Navigate to URL
369
+ agent-browser back # Go back
370
+ agent-browser close # Close browser
371
+
372
+ # Snapshots (get element refs)
373
+ agent-browser snapshot -i # Interactive elements with refs (@e1, @e2, etc.)
374
+ agent-browser snapshot -i --json # JSON output
375
+
376
+ # Interactions (use refs from snapshot)
377
+ agent-browser click @e1 # Click element
378
+ agent-browser fill @e1 "text" # Fill input
379
+ agent-browser type @e1 "text" # Type without clearing
380
+ agent-browser press Enter # Press key
381
+
382
+ # Screenshots
383
+ agent-browser screenshot out.png # Viewport screenshot
384
+ agent-browser screenshot --full out.png # Full page screenshot
385
+
386
+ # Headed mode (visible browser)
387
+ agent-browser --headed open <url> # Open with visible browser
388
+ agent-browser --headed click @e1 # Click in visible browser
389
+
390
+ # Wait
391
+ agent-browser wait @e1 # Wait for element
392
+ agent-browser wait 2000 # Wait milliseconds
393
+ ```
394
+
@@ -0,0 +1,333 @@
1
+ ---
2
+ name: test-xcode
3
+ description: Build and test iOS apps on simulator using XcodeBuildMCP
4
+ argument-hint: '[scheme name or ''current'' to use default]'
5
+ disable-model-invocation: true
6
+ ---
7
+
8
+ # Xcode Test Command
9
+
10
+ <command_purpose>Build, install, and test iOS apps on the simulator using XcodeBuildMCP. Captures screenshots, logs, and verifies app behavior.</command_purpose>
11
+
12
+ ## Introduction
13
+
14
+ <role>iOS QA Engineer specializing in simulator-based testing</role>
15
+
16
+ This command tests iOS/macOS apps by:
17
+ - Building for simulator
18
+ - Installing and launching the app
19
+ - Taking screenshots of key screens
20
+ - Capturing console logs for errors
21
+ - Supporting human verification for external flows
22
+
23
+ ## Prerequisites
24
+
25
+ <requirements>
26
+ - Xcode installed with command-line tools
27
+ - XcodeBuildMCP server connected
28
+ - Valid Xcode project or workspace
29
+ - At least one iOS Simulator available
30
+ </requirements>
31
+
32
+ ## Main Tasks
33
+
34
+ ### 0. Verify XcodeBuildMCP is Installed
35
+
36
+ <check_mcp_installed>
37
+
38
+ **First, check if XcodeBuildMCP tools are available.**
39
+
40
+ Try calling:
41
+ ```
42
+ mcp__xcodebuildmcp__list_simulators({})
43
+ ```
44
+
45
+ **If the tool is not found or errors:**
46
+
47
+ Tell the user:
48
+ ```markdown
49
+ **XcodeBuildMCP not installed**
50
+
51
+ Please install the XcodeBuildMCP server first:
52
+
53
+ \`\`\`bash
54
+ claude mcp add XcodeBuildMCP -- npx xcodebuildmcp@latest
55
+ \`\`\`
56
+
57
+ Then restart OpenCode and run `/xcode-test` again.
58
+ ```
59
+
60
+ **Do NOT proceed** until XcodeBuildMCP is confirmed working.
61
+
62
+ </check_mcp_installed>
63
+
64
+ ### 1. Discover Project and Scheme
65
+
66
+ <discover_project>
67
+
68
+ **Find available projects:**
69
+ ```
70
+ mcp__xcodebuildmcp__discover_projs({})
71
+ ```
72
+
73
+ **List schemes for the project:**
74
+ ```
75
+ mcp__xcodebuildmcp__list_schemes({ project_path: "/path/to/Project.xcodeproj" })
76
+ ```
77
+
78
+ **If argument provided:**
79
+ - Use the specified scheme name
80
+ - Or "current" to use the default/last-used scheme
81
+
82
+ </discover_project>
83
+
84
+ ### 2. Boot Simulator
85
+
86
+ <boot_simulator>
87
+
88
+ **List available simulators:**
89
+ ```
90
+ mcp__xcodebuildmcp__list_simulators({})
91
+ ```
92
+
93
+ **Boot preferred simulator (iPhone 15 Pro recommended):**
94
+ ```
95
+ mcp__xcodebuildmcp__boot_simulator({ simulator_id: "[uuid]" })
96
+ ```
97
+
98
+ **Wait for simulator to be ready:**
99
+ Check simulator state before proceeding with installation.
100
+
101
+ </boot_simulator>
102
+
103
+ ### 3. Build the App
104
+
105
+ <build_app>
106
+
107
+ **Build for iOS Simulator:**
108
+ ```
109
+ mcp__xcodebuildmcp__build_ios_sim_app({
110
+ project_path: "/path/to/Project.xcodeproj",
111
+ scheme: "[scheme_name]"
112
+ })
113
+ ```
114
+
115
+ **Handle build failures:**
116
+ - Capture build errors
117
+ - Create P1 todo for each build error
118
+ - Report to user with specific error details
119
+
120
+ **On success:**
121
+ - Note the built app path for installation
122
+ - Proceed to installation step
123
+
124
+ </build_app>
125
+
126
+ ### 4. Install and Launch
127
+
128
+ <install_launch>
129
+
130
+ **Install app on simulator:**
131
+ ```
132
+ mcp__xcodebuildmcp__install_app_on_simulator({
133
+ app_path: "/path/to/built/App.app",
134
+ simulator_id: "[uuid]"
135
+ })
136
+ ```
137
+
138
+ **Launch the app:**
139
+ ```
140
+ mcp__xcodebuildmcp__launch_app_on_simulator({
141
+ bundle_id: "[app.bundle.id]",
142
+ simulator_id: "[uuid]"
143
+ })
144
+ ```
145
+
146
+ **Start capturing logs:**
147
+ ```
148
+ mcp__xcodebuildmcp__capture_sim_logs({
149
+ simulator_id: "[uuid]",
150
+ bundle_id: "[app.bundle.id]"
151
+ })
152
+ ```
153
+
154
+ </install_launch>
155
+
156
+ ### 5. Test Key Screens
157
+
158
+ <test_screens>
159
+
160
+ For each key screen in the app:
161
+
162
+ **Take screenshot:**
163
+ ```
164
+ mcp__xcodebuildmcp__take_screenshot({
165
+ simulator_id: "[uuid]",
166
+ filename: "screen-[name].png"
167
+ })
168
+ ```
169
+
170
+ **Review screenshot for:**
171
+ - UI elements rendered correctly
172
+ - No error messages visible
173
+ - Expected content displayed
174
+ - Layout looks correct
175
+
176
+ **Check logs for errors:**
177
+ ```
178
+ mcp__xcodebuildmcp__get_sim_logs({ simulator_id: "[uuid]" })
179
+ ```
180
+
181
+ Look for:
182
+ - Crashes
183
+ - Exceptions
184
+ - Error-level log messages
185
+ - Failed network requests
186
+
187
+ </test_screens>
188
+
189
+ ### 6. Human Verification (When Required)
190
+
191
+ <human_verification>
192
+
193
+ Pause for human input when testing touches:
194
+
195
+ | Flow Type | What to Ask |
196
+ |-----------|-------------|
197
+ | Sign in with Apple | "Please complete Sign in with Apple on the simulator" |
198
+ | Push notifications | "Send a test push and confirm it appears" |
199
+ | In-app purchases | "Complete a sandbox purchase" |
200
+ | Camera/Photos | "Grant permissions and verify camera works" |
201
+ | Location | "Allow location access and verify map updates" |
202
+
203
+ Use question:
204
+ ```markdown
205
+ **Human Verification Needed**
206
+
207
+ This test requires [flow type]. Please:
208
+ 1. [Action to take on simulator]
209
+ 2. [What to verify]
210
+
211
+ Did it work correctly?
212
+ 1. Yes - continue testing
213
+ 2. No - describe the issue
214
+ ```
215
+
216
+ </human_verification>
217
+
218
+ ### 7. Handle Failures
219
+
220
+ <failure_handling>
221
+
222
+ When a test fails:
223
+
224
+ 1. **Document the failure:**
225
+ - Take screenshot of error state
226
+ - Capture console logs
227
+ - Note reproduction steps
228
+
229
+ 2. **Ask user how to proceed:**
230
+ ```markdown
231
+ **Test Failed: [screen/feature]**
232
+
233
+ Issue: [description]
234
+ Logs: [relevant error messages]
235
+
236
+ How to proceed?
237
+ 1. Fix now - I'll help debug and fix
238
+ 2. Create todo - Add to todos/ for later
239
+ 3. Skip - Continue testing other screens
240
+ ```
241
+
242
+ 3. **If "Fix now":**
243
+ - Investigate the issue in code
244
+ - Propose a fix
245
+ - Rebuild and retest
246
+
247
+ 4. **If "Create todo":**
248
+ - Create `{id}-pending-p1-xcode-{description}.md`
249
+ - Continue testing
250
+
251
+ </failure_handling>
252
+
253
+ ### 8. Test Summary
254
+
255
+ <test_summary>
256
+
257
+ After all tests complete, present summary:
258
+
259
+ ```markdown
260
+ ## 📱 Xcode Test Results
261
+
262
+ **Project:** [project name]
263
+ **Scheme:** [scheme name]
264
+ **Simulator:** [simulator name]
265
+
266
+ ### Build: ✅ Success / ❌ Failed
267
+
268
+ ### Screens Tested: [count]
269
+
270
+ | Screen | Status | Notes |
271
+ |--------|--------|-------|
272
+ | Launch | ✅ Pass | |
273
+ | Home | ✅ Pass | |
274
+ | Settings | ❌ Fail | Crash on tap |
275
+ | Profile | ⏭️ Skip | Requires login |
276
+
277
+ ### Console Errors: [count]
278
+ - [List any errors found]
279
+
280
+ ### Human Verifications: [count]
281
+ - Sign in with Apple: ✅ Confirmed
282
+ - Push notifications: ✅ Confirmed
283
+
284
+ ### Failures: [count]
285
+ - Settings screen - crash on navigation
286
+
287
+ ### Created Todos: [count]
288
+ - `006-pending-p1-xcode-settings-crash.md`
289
+
290
+ ### Result: [PASS / FAIL / PARTIAL]
291
+ ```
292
+
293
+ </test_summary>
294
+
295
+ ### 9. Cleanup
296
+
297
+ <cleanup>
298
+
299
+ After testing:
300
+
301
+ **Stop log capture:**
302
+ ```
303
+ mcp__xcodebuildmcp__stop_log_capture({ simulator_id: "[uuid]" })
304
+ ```
305
+
306
+ **Optionally shut down simulator:**
307
+ ```
308
+ mcp__xcodebuildmcp__shutdown_simulator({ simulator_id: "[uuid]" })
309
+ ```
310
+
311
+ </cleanup>
312
+
313
+ ## Quick Usage Examples
314
+
315
+ ```bash
316
+ # Test with default scheme
317
+ /xcode-test
318
+
319
+ # Test specific scheme
320
+ /xcode-test MyApp-Debug
321
+
322
+ # Test after making changes
323
+ /xcode-test current
324
+ ```
325
+
326
+ ## Integration with /ce:review
327
+
328
+ When reviewing PRs that touch iOS code, the `/ce:review` command can spawn this as a subagent:
329
+
330
+ ```
331
+ Task general-purpose("Run /xcode-test for scheme [name]. Build, install on simulator, test key screens, check for crashes.")
332
+ ```
333
+