@monoes/monomindcli 1.10.46 → 1.10.54

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 (144) hide show
  1. package/.claude/commands/monomind/do.md +52 -0
  2. package/.claude/commands/monomind/improve.md +2 -0
  3. package/.claude/helpers/handlers/route-handler.cjs +61 -11
  4. package/.claude/helpers/skill-registry.json +99 -51
  5. package/.claude/skills/agent-browser-testing/SKILL.md +522 -152
  6. package/.claude/skills/github-issue-triage/SKILL.md +354 -0
  7. package/.claude/skills/github-repo-recap/SKILL.md +207 -0
  8. package/.claude/skills/mastermind/_delegation.md +83 -0
  9. package/.claude/skills/mastermind/_protocol.md +14 -0
  10. package/dist/src/init/executor.d.ts.map +1 -1
  11. package/dist/src/init/executor.js +18 -19
  12. package/dist/src/init/executor.js.map +1 -1
  13. package/dist/src/init/helpers-generator.js +3 -3
  14. package/dist/src/init/helpers-generator.js.map +1 -1
  15. package/dist/src/ui/dashboard-v2.html +782 -42
  16. package/dist/src/ui/dashboard.html +1 -0
  17. package/dist/src/ui/data/agent-avatars.html +763 -0
  18. package/dist/src/ui/data/agent-avatars.json +966 -0
  19. package/dist/src/ui/data/avatars/account-strategist.svg +58 -0
  20. package/dist/src/ui/data/avatars/accounts-payable.svg +54 -0
  21. package/dist/src/ui/data/avatars/adaptive-coordinator.svg +55 -0
  22. package/dist/src/ui/data/avatars/adaptive-coordinator2.svg +54 -0
  23. package/dist/src/ui/data/avatars/ai-citation.svg +57 -0
  24. package/dist/src/ui/data/avatars/ai-engineer.svg +61 -0
  25. package/dist/src/ui/data/avatars/analytics-reporter.svg +53 -0
  26. package/dist/src/ui/data/avatars/api-tester.svg +53 -0
  27. package/dist/src/ui/data/avatars/architecture.svg +54 -0
  28. package/dist/src/ui/data/avatars/automation-governance.svg +55 -0
  29. package/dist/src/ui/data/avatars/backend-dev.svg +53 -0
  30. package/dist/src/ui/data/avatars/benchmarker.svg +54 -0
  31. package/dist/src/ui/data/avatars/blockchain-auditor.svg +53 -0
  32. package/dist/src/ui/data/avatars/byzantine-coord.svg +57 -0
  33. package/dist/src/ui/data/avatars/case-analyst.svg +57 -0
  34. package/dist/src/ui/data/avatars/cicd-engineer.svg +55 -0
  35. package/dist/src/ui/data/avatars/cloud-architect.svg +54 -0
  36. package/dist/src/ui/data/avatars/code-review-swarm.svg +57 -0
  37. package/dist/src/ui/data/avatars/coder-v119.svg +57 -0
  38. package/dist/src/ui/data/avatars/coder.svg +58 -0
  39. package/dist/src/ui/data/avatars/collective-coord.svg +54 -0
  40. package/dist/src/ui/data/avatars/compliance-auditor.svg +58 -0
  41. package/dist/src/ui/data/avatars/consensus-coordinator.svg +54 -0
  42. package/dist/src/ui/data/avatars/content-creator.svg +54 -0
  43. package/dist/src/ui/data/avatars/crdt-synchronizer.svg +53 -0
  44. package/dist/src/ui/data/avatars/cro-specialist.svg +58 -0
  45. package/dist/src/ui/data/avatars/data-consolidator.svg +54 -0
  46. package/dist/src/ui/data/avatars/data-engineer.svg +53 -0
  47. package/dist/src/ui/data/avatars/database-optimizer.svg +61 -0
  48. package/dist/src/ui/data/avatars/deal-strategist.svg +54 -0
  49. package/dist/src/ui/data/avatars/defender.svg +53 -0
  50. package/dist/src/ui/data/avatars/devops-automator.svg +56 -0
  51. package/dist/src/ui/data/avatars/discovery-coach.svg +54 -0
  52. package/dist/src/ui/data/avatars/email-marketing.svg +57 -0
  53. package/dist/src/ui/data/avatars/embedded-firmware.svg +61 -0
  54. package/dist/src/ui/data/avatars/evidence-collector.svg +57 -0
  55. package/dist/src/ui/data/avatars/experiment-tracker.svg +53 -0
  56. package/dist/src/ui/data/avatars/feedback-synthesizer.svg +54 -0
  57. package/dist/src/ui/data/avatars/finance-tracker.svg +54 -0
  58. package/dist/src/ui/data/avatars/frontend-developer.svg +54 -0
  59. package/dist/src/ui/data/avatars/game-audio-engineer.svg +59 -0
  60. package/dist/src/ui/data/avatars/game-designer.svg +54 -0
  61. package/dist/src/ui/data/avatars/gossip-coordinator.svg +54 -0
  62. package/dist/src/ui/data/avatars/hierarchical-coord.svg +54 -0
  63. package/dist/src/ui/data/avatars/incident-commander.svg +57 -0
  64. package/dist/src/ui/data/avatars/infrastructure.svg +54 -0
  65. package/dist/src/ui/data/avatars/input-validator.svg +53 -0
  66. package/dist/src/ui/data/avatars/ios-developer.svg +54 -0
  67. package/dist/src/ui/data/avatars/issue-tracker.svg +53 -0
  68. package/dist/src/ui/data/avatars/judge.svg +55 -0
  69. package/dist/src/ui/data/avatars/launch-strategist.svg +54 -0
  70. package/dist/src/ui/data/avatars/legal-compliance.svg +53 -0
  71. package/dist/src/ui/data/avatars/level-designer.svg +53 -0
  72. package/dist/src/ui/data/avatars/load-balancer.svg +57 -0
  73. package/dist/src/ui/data/avatars/mcp-builder.svg +53 -0
  74. package/dist/src/ui/data/avatars/memory-coordinator.svg +55 -0
  75. package/dist/src/ui/data/avatars/mesh-coordinator.svg +55 -0
  76. package/dist/src/ui/data/avatars/ml-developer.svg +58 -0
  77. package/dist/src/ui/data/avatars/mobile-app-builder.svg +53 -0
  78. package/dist/src/ui/data/avatars/mobile-dev.svg +54 -0
  79. package/dist/src/ui/data/avatars/model-qa.svg +58 -0
  80. package/dist/src/ui/data/avatars/narrative-designer.svg +58 -0
  81. package/dist/src/ui/data/avatars/outbound-strategist.svg +55 -0
  82. package/dist/src/ui/data/avatars/path-validator.svg +54 -0
  83. package/dist/src/ui/data/avatars/payment-agent.svg +53 -0
  84. package/dist/src/ui/data/avatars/perf-analyzer.svg +58 -0
  85. package/dist/src/ui/data/avatars/pipeline-analyst.svg +54 -0
  86. package/dist/src/ui/data/avatars/planner.svg +55 -0
  87. package/dist/src/ui/data/avatars/pr-manager.svg +54 -0
  88. package/dist/src/ui/data/avatars/pricing-strategist.svg +54 -0
  89. package/dist/src/ui/data/avatars/product-manager.svg +54 -0
  90. package/dist/src/ui/data/avatars/production-validator.svg +54 -0
  91. package/dist/src/ui/data/avatars/project-shepherd.svg +54 -0
  92. package/dist/src/ui/data/avatars/proposal-strategist.svg +54 -0
  93. package/dist/src/ui/data/avatars/prosecutor.svg +57 -0
  94. package/dist/src/ui/data/avatars/pseudocode.svg +53 -0
  95. package/dist/src/ui/data/avatars/queen-coordinator.svg +55 -0
  96. package/dist/src/ui/data/avatars/quorum-manager.svg +53 -0
  97. package/dist/src/ui/data/avatars/raft-manager.svg +53 -0
  98. package/dist/src/ui/data/avatars/reality-checker.svg +58 -0
  99. package/dist/src/ui/data/avatars/recruitment.svg +58 -0
  100. package/dist/src/ui/data/avatars/refinement.svg +53 -0
  101. package/dist/src/ui/data/avatars/release-manager.svg +54 -0
  102. package/dist/src/ui/data/avatars/repo-architect.svg +54 -0
  103. package/dist/src/ui/data/avatars/researcher.svg +58 -0
  104. package/dist/src/ui/data/avatars/resource-allocator.svg +53 -0
  105. package/dist/src/ui/data/avatars/reviewer.svg +53 -0
  106. package/dist/src/ui/data/avatars/safe-executor.svg +53 -0
  107. package/dist/src/ui/data/avatars/sales-coach.svg +53 -0
  108. package/dist/src/ui/data/avatars/sales-engineer.svg +58 -0
  109. package/dist/src/ui/data/avatars/scout-explorer.svg +58 -0
  110. package/dist/src/ui/data/avatars/security-architect.svg +54 -0
  111. package/dist/src/ui/data/avatars/security-auditor.svg +55 -0
  112. package/dist/src/ui/data/avatars/senior-developer.svg +58 -0
  113. package/dist/src/ui/data/avatars/senior-pm.svg +58 -0
  114. package/dist/src/ui/data/avatars/seo-specialist.svg +57 -0
  115. package/dist/src/ui/data/avatars/social-media.svg +54 -0
  116. package/dist/src/ui/data/avatars/solidity-engineer.svg +58 -0
  117. package/dist/src/ui/data/avatars/sparc-coder.svg +58 -0
  118. package/dist/src/ui/data/avatars/sparc-coord.svg +56 -0
  119. package/dist/src/ui/data/avatars/specification.svg +57 -0
  120. package/dist/src/ui/data/avatars/sprint-prioritizer.svg +53 -0
  121. package/dist/src/ui/data/avatars/sre.svg +54 -0
  122. package/dist/src/ui/data/avatars/studio-operations.svg +53 -0
  123. package/dist/src/ui/data/avatars/studio-producer.svg +55 -0
  124. package/dist/src/ui/data/avatars/support-responder.svg +56 -0
  125. package/dist/src/ui/data/avatars/system-architect.svg +54 -0
  126. package/dist/src/ui/data/avatars/task-orchestrator.svg +56 -0
  127. package/dist/src/ui/data/avatars/technical-artist.svg +53 -0
  128. package/dist/src/ui/data/avatars/technical-writer.svg +59 -0
  129. package/dist/src/ui/data/avatars/tester.svg +53 -0
  130. package/dist/src/ui/data/avatars/threat-detection.svg +61 -0
  131. package/dist/src/ui/data/avatars/trend-researcher.svg +54 -0
  132. package/dist/src/ui/data/avatars/trial-director.svg +55 -0
  133. package/dist/src/ui/data/avatars/unity-architect.svg +54 -0
  134. package/dist/src/ui/data/avatars/visionos-engineer.svg +57 -0
  135. package/dist/src/ui/data/avatars/worker-specialist.svg +55 -0
  136. package/dist/src/ui/data/avatars/workflow-architect.svg +57 -0
  137. package/dist/src/ui/data/avatars/workflow-automation.svg +54 -0
  138. package/dist/src/ui/data/avatars/zk-steward.svg +54 -0
  139. package/dist/src/ui/data/known-projects.json +1 -1
  140. package/dist/src/ui/data/mastermind-events.jsonl +28 -0
  141. package/dist/src/ui/orgs.html +1171 -0
  142. package/dist/src/ui/server.mjs +25 -8
  143. package/dist/tsconfig.tsbuildinfo +1 -1
  144. package/package.json +1 -1
@@ -1,10 +1,12 @@
1
1
  ---
2
2
  name: agent-browser-testing
3
- description: UI testing and task walkthrough using the native monomind browse commandnavigate, test golden paths, report issues, and help users accomplish tasks through any web UI.
4
- version: 3.0.0
3
+ description: Comprehensive UI QA and browser automation using the native monomind browse CDP client full test lifecycle from discovery through performance profiling, with structured pass/fail/warn reporting.
4
+ version: 4.0.0
5
5
  triggers:
6
+ - /agent-browser-testing
6
7
  - /ui-test
7
8
  - /browse
9
+ - /qa
8
10
  - /crawl
9
11
  - ui test
10
12
  - test the UI
@@ -27,285 +29,653 @@ triggers:
27
29
  - fill out the form
28
30
  - log into
29
31
  - sign in to
30
- - submit the form
31
32
  tools:
32
33
  - Bash
33
34
  ---
34
35
 
35
- # UI Testing with monomind browse
36
+ # Agent Browser Testing Full QA Suite
36
37
 
37
- Automated UI testing and guided task walkthroughs using the native `monomind browse` command (TypeScript CDP client, no external binary required).
38
+ **Engine:** `npx monomind browse` native TypeScript CDP client. No Playwright, no Puppeteer, no external binary. Every command below goes through this single infrastructure.
38
39
 
39
- ## Core Testing Workflow
40
+ **CRITICAL RULE:** Never use `mcp__claude-in-chrome__*`, `mcp__plugin_playwright__*`, or any other browser tool. Always use `npx monomind browse`.
40
41
 
41
- Every UI test follows this loop:
42
-
43
- ```
44
- OPEN → SNAPSHOT → ACT → SNAPSHOT → VERIFY → REPEAT
45
- ```
46
-
47
- ```bash
48
- # 1. Open the target UI
49
- npx monomind browse open <url>
42
+ ---
50
43
 
51
- # 2. Get interactive elements (93% less context than full DOM)
52
- npx monomind browse snapshot -i
44
+ ## QA Execution Protocol
53
45
 
54
- # 3. Act using element refs from snapshot output
55
- npx monomind browse click @e1 # click by ref
56
- npx monomind browse fill @e2 "value" # fill input by ref
57
- npx monomind browse press Enter # keyboard actions
46
+ When this skill is invoked, run ALL phases unless the user specifies a subset.
58
47
 
59
- # 4. Re-snapshot to see result
60
- npx monomind browse snapshot -i
48
+ ### Phase 0 Pre-flight
61
49
 
62
- # 5. Verify expected state
63
- npx monomind browse get text @e5 # read element text
64
- npx monomind browse get url # check URL changed
65
- npx monomind browse wait --text "Success" # wait for expected text
66
- npx monomind browse errors # check for JS errors
50
+ ```bash
51
+ # Verify server is reachable before starting
52
+ npx monomind browse open <url>
53
+ npx monomind browse get url # confirm we landed on the right page
54
+ npx monomind browse get title
55
+ npx monomind browse errors # baseline — clear before testing
67
56
  ```
68
57
 
69
- ## Test Phases
58
+ ### Phase 1 — Discovery & Structure Audit
70
59
 
71
- ### Phase 1 — Discovery
72
60
  ```bash
73
- npx monomind browse open <url>
74
- npx monomind browse snapshot # full tree to understand structure
75
- npx monomind browse get title
76
- npx monomind browse get url
61
+ npx monomind browse snapshot # full AX tree — understand page structure
62
+ npx monomind browse snapshot -i # interactive-only (93% less context)
63
+ npx monomind browse find role link # enumerate all links
64
+ npx monomind browse find role button # enumerate all buttons
65
+ npx monomind browse find role heading # heading hierarchy
66
+ npx monomind browse find role form # form elements
67
+ npx monomind browse find role image # images (check alt text in snapshot)
77
68
  ```
78
69
 
70
+ **Report:** page structure, heading hierarchy, interactive element count, any obvious missing landmarks.
71
+
79
72
  ### Phase 2 — Golden Path Testing
73
+
74
+ Execute the primary user flow end-to-end. Pattern:
75
+
80
76
  ```bash
81
- # Example: Login flow
82
- npx monomind browse open https://app.example.com/login
77
+ npx monomind browse open <url>
83
78
  npx monomind browse snapshot -i
84
- # Identify: email input @e1, password @e2, submit @e3
85
- npx monomind browse fill @e1 "test@example.com"
86
- npx monomind browse fill @e2 "password123"
87
- npx monomind browse click @e3
88
- npx monomind browse wait --url "**/dashboard"
79
+ # identify refs act re-snapshot verify
80
+
81
+ npx monomind browse fill @e1 "value"
82
+ npx monomind browse click @e2
83
+ npx monomind browse wait --text "expected result"
89
84
  npx monomind browse snapshot -i
90
- # Verify dashboard loaded
85
+ npx monomind browse errors # check after every major action
91
86
  ```
92
87
 
93
- ### Phase 3 Edge Case Testing
88
+ **Report:** each step result, any deviations from expected state.
89
+
90
+ ### Phase 3 — Edge Case & Validation Testing
91
+
94
92
  ```bash
95
- # Empty form submission
96
- npx monomind browse click @e3 # submit with empty fields
97
- npx monomind browse wait --text "required" # expect validation error
93
+ # Empty submission
94
+ npx monomind browse click @submit_btn
95
+ npx monomind browse wait --text "required" --timeout 3000
98
96
  npx monomind browse snapshot -i
99
97
 
100
98
  # Invalid input
101
- npx monomind browse fill @e1 "not-an-email"
102
- npx monomind browse click @e3
99
+ npx monomind browse fill @email_field "not-an-email"
100
+ npx monomind browse click @submit_btn
103
101
  npx monomind browse snapshot -i
104
102
 
105
- # Check element states
103
+ # Boundary values
104
+ npx monomind browse fill @text_field "" # empty
105
+ npx monomind browse fill @text_field "a" # min
106
+ npx monomind browse fill @text_field "$(python3 -c 'print("x"*1000)')" # overflow
107
+
108
+ # Element state checks
106
109
  npx monomind browse is visible @e5
107
110
  npx monomind browse is enabled @e3
108
111
  npx monomind browse is checked @e7
109
112
  ```
110
113
 
111
- ### Phase 4 — Navigation & Accessibility
114
+ ### Phase 4 — Cross-Device & Responsive
115
+
112
116
  ```bash
113
- # Tab through all focusable elements
114
- npx monomind browse press Tab
117
+ # Mobile
118
+ npx monomind browse set device "iPhone 14"
119
+ npx monomind browse screenshot mobile-portrait.png
115
120
  npx monomind browse snapshot -i
116
121
 
117
- # Check all links work
118
- npx monomind browse find role link
122
+ # Tablet
123
+ npx monomind browse set device "iPad Pro"
124
+ npx monomind browse screenshot tablet.png
119
125
 
120
- # Check page at mobile width
121
- npx monomind browse set device "iPhone 14"
122
- npx monomind browse snapshot -i
126
+ # Desktop wide
127
+ npx monomind browse resize 1920 1080
128
+ npx monomind browse screenshot desktop-wide.png
123
129
 
124
- # Check dark mode
130
+ # Dark mode
125
131
  npx monomind browse set media dark
126
132
  npx monomind browse screenshot dark-mode.png
133
+ npx monomind browse set media light
134
+
135
+ # Reset
136
+ npx monomind browse resize 1280 800
137
+ ```
138
+
139
+ ### Phase 5 — Keyboard & Accessibility
140
+
141
+ ```bash
142
+ # Tab order — tab through every focusable element
143
+ npx monomind browse focus @e1
144
+ npx monomind browse press Tab
145
+ npx monomind browse snapshot -i # repeat until full cycle
146
+
147
+ # ARIA roles present
148
+ npx monomind browse find role navigation
149
+ npx monomind browse find role main
150
+ npx monomind browse find role banner
151
+
152
+ # Keyboard activation
153
+ npx monomind browse press Enter # activate focused element
154
+ npx monomind browse press Escape # close modals/dropdowns
155
+ npx monomind browse press Space # toggle checkboxes
156
+
157
+ # Keyboard combos (key combos must use press, not keyboard)
158
+ npx monomind browse press "Control+A"
159
+ npx monomind browse press "Control+Z"
160
+ ```
161
+
162
+ ### Phase 6 — Network & Error Monitoring
163
+
164
+ ```bash
165
+ # Start network capture before the flow
166
+ npx monomind browse har start
167
+ # ... run the flow ...
168
+ npx monomind browse har stop --bodies --json # --bodies only valid on stop
169
+
170
+ # Check for failed requests during testing
171
+ npx monomind browse network requests --json
172
+
173
+ # Simulate offline
174
+ npx monomind browse set offline true
175
+ npx monomind browse snapshot -i # should show graceful offline state
176
+ npx monomind browse set offline false
177
+
178
+ # Final error check
179
+ npx monomind browse console # all console output
180
+ npx monomind browse errors # JS exceptions only
181
+ ```
182
+
183
+ ### Phase 7 — Performance Audit
184
+
185
+ ```bash
186
+ # Core Web Vitals
187
+ npx monomind browse vitals --wait 3000 --json
188
+
189
+ # Full trace (open DevTools-compatible)
190
+ npx monomind browse trace start --screenshots
191
+ # ... trigger the critical user flow ...
192
+ npx monomind browse trace stop ./qa-trace.json
193
+
194
+ # HAR for waterfall analysis
195
+ npx monomind browse har start
196
+ npx monomind browse navigate reload
197
+ npx monomind browse wait --load networkidle
198
+ npx monomind browse har stop --bodies --json
199
+ ```
200
+
201
+ **Report vitals thresholds:**
202
+ - LCP < 2.5s = PASS, 2.5–4s = WARN, >4s = FAIL
203
+ - CLS < 0.1 = PASS, 0.1–0.25 = WARN, >0.25 = FAIL
204
+ - FCP < 1.8s = PASS, 1.8–3s = WARN, >3s = FAIL
205
+
206
+ ---
207
+
208
+ ## Core Testing Loop
209
+
210
+ ```
211
+ OPEN → SNAPSHOT → ACT → SNAPSHOT → VERIFY → REPEAT
212
+ ```
213
+
214
+ ```bash
215
+ npx monomind browse open <url>
216
+ npx monomind browse snapshot -i
217
+ npx monomind browse click @e1
218
+ npx monomind browse fill @e2 "value"
219
+ npx monomind browse press Enter
220
+ npx monomind browse snapshot -i
221
+ npx monomind browse get text @e5
222
+ npx monomind browse get url
223
+ npx monomind browse wait --text "Success"
224
+ npx monomind browse errors
225
+ ```
226
+
227
+ ---
228
+
229
+ ## Full Command Reference
230
+
231
+ ### Navigation & Window
232
+
233
+ ```bash
234
+ npx monomind browse open <url> # open URL (launches Chrome if needed)
235
+ npx monomind browse open <url> --headless # headless mode
236
+ npx monomind browse open <url> --session <name> # restore saved session
237
+ npx monomind browse open <url> --state <file> # restore from state file
238
+ npx monomind browse navigate back
239
+ npx monomind browse navigate forward
240
+ npx monomind browse navigate reload
241
+ npx monomind browse pushstate /path # SPA client-side nav
242
+ npx monomind browse resize 1280 800
243
+ npx monomind browse connect --port 9222 # attach to running Chrome
244
+ npx monomind browse connect --port 9222 --target <id>
245
+ npx monomind browse close
246
+ ```
247
+
248
+ ### Snapshot & Element Discovery
249
+
250
+ ```bash
251
+ npx monomind browse snapshot # full AX tree
252
+ npx monomind browse snapshot -i # interactive elements only
253
+ npx monomind browse snapshot --compact # compact format
254
+ npx monomind browse snapshot --json # machine-readable
255
+ npx monomind browse snapshot --depth 3 # limit tree depth
256
+ npx monomind browse snapshot --selector "#modal" # scope to element
257
+
258
+ npx monomind browse get url
259
+ npx monomind browse get title
260
+ npx monomind browse get text # full page text
261
+ npx monomind browse get text @eN # element text
262
+ npx monomind browse get html # full page HTML (ref arg is ignored — always returns full doc)
263
+ # for element HTML: npx monomind browse eval "document.querySelector('...').outerHTML"
264
+ npx monomind browse get value @eN
265
+ npx monomind browse get attr @eN href
266
+ npx monomind browse get count "button" # count elements matching CSS selector
267
+ npx monomind browse get box @eN # bounding box {x,y,width,height}
268
+ npx monomind browse get styles @eN # computed styles
269
+ npx monomind browse is checked @eN
270
+ ```
271
+
272
+ ### Element Finders (semantic — no CSS selectors needed)
273
+
274
+ ```bash
275
+ npx monomind browse find role button # by ARIA role
276
+ npx monomind browse find role button --name "Submit"
277
+ npx monomind browse find text "Delete" # by visible text
278
+ npx monomind browse find label "Email" # by label text
279
+ npx monomind browse find testid "submit-btn" # by data-testid
280
+ npx monomind browse find role link --nth 2 # nth match
281
+ npx monomind browse find role image --last # last match
282
+ npx monomind browse find placeholder "Search..." # by placeholder text
283
+ npx monomind browse find selector "div.modal" # by CSS selector
284
+
285
+ # Inline action after find
286
+ npx monomind browse find role button --name "Submit" click
287
+ npx monomind browse find label "Email" fill "test@example.com"
288
+ npx monomind browse find text "Delete" click
289
+
290
+ # State checks
291
+ npx monomind browse is visible @eN
292
+ npx monomind browse is enabled @eN
293
+ npx monomind browse is checked @eN
294
+ ```
295
+
296
+ ### Interaction
297
+
298
+ ```bash
299
+ npx monomind browse click @eN
300
+ npx monomind browse click @eN --right # right-click
301
+ npx monomind browse click @eN --double # double-click (or dblclick)
302
+ npx monomind browse dblclick @eN
303
+ npx monomind browse hover @eN
304
+ npx monomind browse focus @eN
305
+ npx monomind browse fill @eN "text" # clear + type (fast)
306
+ npx monomind browse type @eN "text" # char-by-char (triggers keypress)
307
+ npx monomind browse press Enter # key on focused element
308
+ npx monomind browse press Tab
309
+ npx monomind browse press Escape
310
+ npx monomind browse press "Control+A"
311
+ npx monomind browse press "Control+Shift+I" # key combos always use press
312
+ npx monomind browse keyboard type "Hello" # insert text without targeting an element
313
+ npx monomind browse keyboard inserttext "Hello" # alias for keyboard type
314
+ npx monomind browse keydown "Shift"
315
+ npx monomind browse keyup "Shift"
316
+ npx monomind browse select @eN "Option A" # select dropdown option
317
+ npx monomind browse check @eN
318
+ npx monomind browse uncheck @eN
319
+ npx monomind browse scroll down --ref eN --amount 400 # scroll within element
320
+ npx monomind browse scroll down --amount 600 # scroll page
321
+ npx monomind browse scrollintoview @eN
322
+ npx monomind browse drag @eN @eM # drag source to target
323
+ npx monomind browse upload @eN ./file.pdf # file input
324
+ npx monomind browse highlight @eN # visual debug highlight
325
+ ```
326
+
327
+ ### Low-Level Mouse
328
+
329
+ ```bash
330
+ npx monomind browse mouse move 400 300
331
+ npx monomind browse mouse down --button left
332
+ npx monomind browse mouse down --button right
333
+ npx monomind browse mouse up
334
+ npx monomind browse mouse wheel 0 0 200 # x y deltaY [deltaX] — scroll down 200px
335
+ ```
336
+
337
+ ### Clipboard
338
+
339
+ ```bash
340
+ npx monomind browse clipboard read
341
+ npx monomind browse clipboard write "paste me"
342
+ npx monomind browse clipboard copy # copy selected text
343
+ npx monomind browse clipboard paste # paste at focused element
344
+ ```
345
+
346
+ ### Wait & Assertions
347
+
348
+ ```bash
349
+ npx monomind browse wait --text "Success"
350
+ npx monomind browse wait --not-text "Loading"
351
+ npx monomind browse wait --url "**/dashboard"
352
+ npx monomind browse wait --selector "#modal"
353
+ npx monomind browse wait --load networkidle
354
+ npx monomind browse wait --load load
355
+ npx monomind browse wait --load domcontentloaded
356
+ npx monomind browse wait --ms 500
357
+ npx monomind browse wait --fn "window.__ready === true"
358
+ npx monomind browse wait --text "Done" --timeout 10000
359
+ ```
360
+
361
+ ### Screenshots & Visual Evidence
362
+
363
+ ```bash
364
+ npx monomind browse screenshot before.png
365
+ npx monomind browse screenshot --full page.png # full-page
366
+ npx monomind browse screenshot --format webp --quality 90 out.webp
367
+ npx monomind browse screenshot --json # returns path
368
+ npx monomind browse pdf ./output.pdf
369
+ npx monomind browse pdf --landscape ./report.pdf
370
+ ```
371
+
372
+ ### Console, Errors & JavaScript
373
+
374
+ ```bash
375
+ npx monomind browse console # all console messages
376
+ npx monomind browse console --clear # clear console history
377
+ npx monomind browse console --errors-only # only error-level messages
378
+ npx monomind browse errors # JS exceptions only
379
+ npx monomind browse errors --clear # clear exception history
380
+ npx monomind browse errors --json # machine-readable output
381
+ npx monomind browse eval "document.title"
382
+ npx monomind browse eval "document.querySelectorAll('button').length"
383
+ npx monomind browse eval "window.__store.getState()" --json
384
+ npx monomind browse addinitscript "window.__TEST__ = true"
385
+ npx monomind browse removeinitscript <id>
386
+ ```
387
+
388
+ ### Network
389
+
390
+ ```bash
391
+ # Route interception
392
+ npx monomind browse network route --pattern "https://api.*" --abort
393
+ npx monomind browse network route --pattern "*/graphql" --fulfill '{"data":{}}' --status 200
394
+ npx monomind browse network route --pattern "*.png" --abort
395
+ npx monomind browse network unroute # disable ALL interception (pattern arg is ignored)
396
+
397
+ # Extra headers for all requests
398
+ npx monomind browse network headers --headers '{"X-Test":"true"}'
399
+
400
+ # Request log
401
+ npx monomind browse network capture start
402
+ npx monomind browse network capture stop
403
+ npx monomind browse network capture clear
404
+ npx monomind browse network requests --json
405
+ npx monomind browse network cookies # cookies via network layer
406
+ ```
407
+
408
+ ### Tabs & Frames
409
+
410
+ ```bash
411
+ npx monomind browse tab list
412
+ npx monomind browse tab new https://example.com
413
+ npx monomind browse tab <targetId> # switch to tab by id
414
+ npx monomind browse tab close <targetId>
415
+ npx monomind browse frame @eN # switch into iframe
416
+ npx monomind browse frame main # back to main frame
127
417
  ```
128
418
 
129
- ### Phase 5 — Report Issues
130
- After testing, summarize:
419
+ ### Dialogs
420
+
421
+ ```bash
422
+ # Auto-accepted by default. Override:
423
+ npx monomind browse dialog accept
424
+ npx monomind browse dialog accept "confirm text"
425
+ npx monomind browse dialog dismiss
426
+ npx monomind browse dialog status
427
+ ```
428
+
429
+ ### Storage & Cookies
430
+
431
+ ```bash
432
+ npx monomind browse storage local # list all entries
433
+ npx monomind browse storage local <key> # get a specific key
434
+ npx monomind browse storage local <key> --set "value" # set a key
435
+ npx monomind browse storage local <key> --remove # remove a key
436
+ npx monomind browse storage local --clear # clear all
437
+ npx monomind browse storage session # list all session entries
438
+ npx monomind browse storage session <key> # get session key
439
+ npx monomind browse cookies list
440
+ npx monomind browse cookies set --name token --value abc123
441
+ npx monomind browse cookies clear
442
+ ```
443
+
444
+ ### Device & Emulation
445
+
446
+ ```bash
447
+ npx monomind browse set device "iPhone 14"
448
+ npx monomind browse set device "Galaxy S21"
449
+ npx monomind browse set device "iPad Pro"
450
+ npx monomind browse set media dark
451
+ npx monomind browse set media light
452
+ npx monomind browse set geo 37.7749 -122.4194
453
+ npx monomind browse set offline true
454
+ npx monomind browse set offline false
455
+ npx monomind browse set useragent "Mozilla/5.0 ..."
456
+ npx monomind browse set viewport 1440 900 # width height [deviceScaleFactor]
457
+ npx monomind browse set credentials user pass
131
458
  ```
132
- PASS: <what worked>
133
- FAIL: <what broke> — steps to reproduce
134
- WARN: <what looks odd but didn't break>
459
+
460
+ ### Session Persistence
461
+
462
+ ```bash
463
+ npx monomind browse state save <name>
464
+ npx monomind browse state load <name>
465
+ npx monomind browse state list
466
+ npx monomind browse state show # inspect current active session
467
+ npx monomind browse state clear # clear current active session
135
468
  ```
136
469
 
137
- ## Common Test Patterns
470
+ ### Performance & Diagnostics
471
+
472
+ ```bash
473
+ # Core Web Vitals
474
+ npx monomind browse vitals --wait 3000 --json
475
+
476
+ # CPU profiler
477
+ npx monomind browse profiler start --interval 1000 # interval in microseconds (1000µs = 1ms)
478
+ npx monomind browse profiler stop --json
479
+
480
+ # Heap snapshot
481
+ npx monomind browse profiler heap ./heap.json
482
+
483
+ # Chrome trace
484
+ npx monomind browse trace start --screenshots
485
+ npx monomind browse trace stop ./trace.json
486
+
487
+ # HAR (full HTTP archive with bodies)
488
+ npx monomind browse har start
489
+ npx monomind browse har status
490
+ npx monomind browse har stop --bodies --json # --bodies only valid on stop
491
+
492
+ # Screen recording (frame sequence)
493
+ npx monomind browse record start --format jpeg --quality 80
494
+ npx monomind browse record status
495
+ npx monomind browse record stop --json
496
+
497
+ # Trace status
498
+ npx monomind browse trace status
499
+ ```
500
+
501
+ ### Batch Execution
502
+
503
+ ```bash
504
+ # Run multiple commands in one CDP session (fastest for scripted flows)
505
+ npx monomind browse batch "open https://app.com" "snapshot -i" "click @e3" "wait --text Done"
506
+ npx monomind browse batch --bail "open https://app.com" "click @e3" # stop on first error
507
+ # Note: --json stdin pipe flag is declared but not implemented; use positional args only
508
+ ```
509
+
510
+ ---
511
+
512
+ ## Common QA Patterns
513
+
514
+ ### Login / Auth Flow
138
515
 
139
- ### Login / Auth
140
516
  ```bash
141
517
  npx monomind browse open <login-url>
142
518
  npx monomind browse snapshot -i
143
519
  npx monomind browse fill @e1 "user@test.com"
144
520
  npx monomind browse fill @e2 "TestPass123!"
145
521
  npx monomind browse click @e3
146
- npx monomind browse wait --url "**/dashboard" --timeout 5000
522
+ npx monomind browse wait --url "**/dashboard" --timeout 8000
147
523
  npx monomind browse errors
524
+ npx monomind browse screenshot post-login.png
148
525
  ```
149
526
 
150
- ### Form Submission
527
+ ### Form with Validation
528
+
151
529
  ```bash
152
530
  npx monomind browse open <form-url>
153
531
  npx monomind browse snapshot -i
532
+ # Happy path
154
533
  npx monomind browse fill @e1 "John Doe"
155
534
  npx monomind browse fill @e2 "john@test.com"
156
535
  npx monomind browse select @e3 "Option A"
157
536
  npx monomind browse check @e4
158
537
  npx monomind browse click @e5
159
538
  npx monomind browse wait --text "submitted"
160
- npx monomind browse screenshot test-result.png
539
+ npx monomind browse screenshot form-success.png
540
+ # Validation
541
+ npx monomind browse navigate back
542
+ npx monomind browse click @e5 # submit empty
543
+ npx monomind browse snapshot -i # should show errors
161
544
  ```
162
545
 
163
546
  ### Multi-Step Wizard
547
+
164
548
  ```bash
165
549
  npx monomind browse open <wizard-url>
166
550
  npx monomind browse snapshot -i
167
551
  npx monomind browse fill @e1 "value"
168
552
  npx monomind browse click @e2
169
553
  npx monomind browse wait --text "Step 2"
170
-
171
554
  npx monomind browse snapshot -i
172
555
  npx monomind browse select @e3 "choice"
173
556
  npx monomind browse click @e4
174
-
175
- npx monomind browse snapshot -i
176
- npx monomind browse get text @e5
177
- npx monomind browse click @e6
178
557
  npx monomind browse wait --text "Complete"
558
+ npx monomind browse screenshot wizard-complete.png
179
559
  ```
180
560
 
181
561
  ### CRUD Operations
562
+
182
563
  ```bash
183
564
  # Create
184
- npx monomind browse click @e1
185
- npx monomind browse fill @e2 "New Item"
186
- npx monomind browse click @e3
565
+ npx monomind browse click @new_btn
566
+ npx monomind browse fill @name_field "New Item"
567
+ npx monomind browse click @save_btn
187
568
  npx monomind browse wait --text "New Item"
188
-
189
569
  # Update
190
570
  npx monomind browse find text "Edit" click
191
- npx monomind browse fill @e2 "Updated Item"
192
- npx monomind browse click @e3
193
-
571
+ npx monomind browse fill @name_field "Updated Item"
572
+ npx monomind browse click @save_btn
573
+ npx monomind browse wait --text "Updated Item"
194
574
  # Delete
195
575
  npx monomind browse find text "Delete" click
196
576
  npx monomind browse wait --text "Are you sure"
197
- npx monomind browse click @e4
577
+ npx monomind browse click @confirm_btn
198
578
  npx monomind browse wait --load networkidle
199
579
  ```
200
580
 
201
- ## Selectors Reference
581
+ ### API Mock Testing
202
582
 
203
- Prefer element refs from snapshots — they're deterministic:
204
583
  ```bash
205
- npx monomind browse snapshot -i
206
- # Output: button "Submit" [@e4]
207
- npx monomind browse click @e4
584
+ # Intercept API, return controlled data
585
+ npx monomind browse network route --pattern "*/api/users" --fulfill '{"users":[]}' --status 200
586
+ npx monomind browse open <url>
587
+ npx monomind browse snapshot -i # should show empty state UI
588
+ npx monomind browse screenshot empty-state.png
589
+ # Intercept with error
590
+ npx monomind browse network route --pattern "*/api/users" --fulfill '{"error":"forbidden"}' --status 403
591
+ npx monomind browse navigate reload
592
+ npx monomind browse snapshot -i # should show error state
208
593
  ```
209
594
 
210
- Semantic locators (no CSS needed):
211
- ```bash
212
- npx monomind browse find role button click --name "Submit"
213
- npx monomind browse find label "Email" fill "test@example.com"
214
- npx monomind browse find text "Delete" click
215
- npx monomind browse find testid "submit-btn" click
216
- ```
595
+ ---
217
596
 
218
597
  ## Task Walkthrough Mode
219
598
 
220
- When helping a user accomplish a task in a UI:
599
+ When helping a user accomplish a task in a live UI:
221
600
 
222
- 1. **Ask for the URL** if not provided
223
- 2. **Open and snapshot** to understand what's on screen
224
- 3. **Describe what you see** page title, main sections, available actions
225
- 4. **Propose the steps** to accomplish the task
226
- 5. **Execute step by step**, narrating each action
227
- 6. **Confirm completion** — show what changed
601
+ 1. Ask for the URL if not provided
602
+ 2. `open` + `snapshot -i` describe what's on screen (title, sections, available actions)
603
+ 3. Propose the steps to accomplish the task
604
+ 4. Execute step by step, narrating each action and what changed
605
+ 5. Confirm completion with a screenshot
228
606
 
229
607
  ```bash
230
608
  npx monomind browse open https://app.example.com
231
609
  npx monomind browse snapshot -i
232
- # → "I can see: navbar with 'New Project' button at @e3, project list below"
610
+ # → "I see: navbar with 'New Project' @e3, project list below with 2 items"
233
611
  npx monomind browse click @e3
234
612
  npx monomind browse snapshot -i
235
- # → "Modal opened with: Name field @e8, Template selector @e9, Create button @e11"
236
- npx monomind browse fill @e8 "My New Project"
613
+ # → "Modal opened: Name field @e8, Template selector @e9, Create @e11"
614
+ npx monomind browse fill @e8 "My Project"
237
615
  npx monomind browse click @e11
238
- npx monomind browse wait --text "My New Project"
239
- # "Project created successfully — it now appears in your project list"
616
+ npx monomind browse wait --text "My Project"
617
+ npx monomind browse screenshot created.png
618
+ # → "Project created — visible in list"
240
619
  ```
241
620
 
242
- ## Screenshot & Evidence
243
-
244
- ```bash
245
- npx monomind browse screenshot before-action.png
246
- npx monomind browse click @e1
247
- npx monomind browse screenshot after-action.png
248
-
249
- # Full page screenshot
250
- npx monomind browse screenshot --full full-page.png
251
- ```
621
+ ---
252
622
 
253
- ## Advanced Capabilities
623
+ ## QA Report Format
254
624
 
255
- ```bash
256
- # Console & error monitoring
257
- npx monomind browse console
258
- npx monomind browse errors
625
+ After every test session output a structured report:
259
626
 
260
- # Network interception
261
- npx monomind browse network route --pattern "https://api.*" --abort
262
-
263
- # Device emulation
264
- npx monomind browse set device "iPhone 14"
265
- npx monomind browse set device "Galaxy S21"
627
+ ```
628
+ ## QA Report <url> <date>
266
629
 
267
- # Session persistence
268
- npx monomind browse state save my-session
269
- npx monomind browse open <url> --session my-session
630
+ ### Summary
631
+ - Pages tested: N
632
+ - Total checks: N
633
+ - PASS: N WARN: N FAIL: N
270
634
 
271
- # Drag and drop
272
- npx monomind browse drag @e1 @e2
635
+ ### Results
273
636
 
274
- # File upload
275
- npx monomind browse upload @e1 ./test-file.pdf
637
+ PASS Login flow completes and redirects to /dashboard
638
+ PASS Form validation shows errors on empty submit
639
+ WARN LCP = 3.2s (threshold: 2.5s) — images not lazy-loaded
640
+ FAIL Delete confirmation dialog blocks further automation — avoid triggering
641
+ FAIL Mobile layout: navigation overflows viewport at 375px
276
642
 
277
- # Cookie management
278
- npx monomind browse cookies list
279
- npx monomind browse cookies set --name token --value abc123
643
+ ### JS Errors
644
+ <list from `npx monomind browse errors`>
280
645
 
281
- # PDF export
282
- npx monomind browse pdf ./output.pdf
646
+ ### Performance
647
+ LCP: Xs CLS: X FCP: Xs TTFB: Xms
283
648
 
284
- # Batch execution
285
- npx monomind browse batch "open https://app.com" "snapshot -i" "click @e3"
649
+ ### Screenshots
650
+ - before-action.png
651
+ - after-action.png
652
+ - mobile-portrait.png
286
653
  ```
287
654
 
288
- ## Integration with Monomind Memory
655
+ ---
656
+
657
+ ## Memory Integration
289
658
 
290
659
  ```bash
291
- # Store successful test patterns
660
+ # Store successful test patterns after a passing run
292
661
  npx monomind memory store \
293
662
  --namespace ui-testing \
294
663
  --key "login-flow-<app-name>" \
295
664
  --value "open→snapshot -i→fill @e1 email→fill @e2 pass→click @e3→wait dashboard"
296
665
 
297
- # Retrieve before re-testing
666
+ # Retrieve before re-testing the same app
298
667
  npx monomind memory search --query "login flow" --namespace ui-testing
299
668
  ```
300
669
 
670
+ ---
671
+
301
672
  ## Activation Checklist
302
673
 
303
- When this skill is triggered:
304
- - [ ] Get the URL to test (ask user if not provided)
305
- - [ ] Run `npx monomind browse open <url>` then `snapshot -i`
306
- - [ ] Identify the task or flow to test/accomplish
307
- - [ ] Execute the flow step by step
308
- - [ ] Run `npx monomind browse errors` to check for JS failures
309
- - [ ] Report results (pass/fail/warnings)
310
- - [ ] Take screenshots of key states
311
- - [ ] Store successful patterns in memory for reuse
674
+ When this skill fires:
675
+ - [ ] Get the URL (ask if not provided)
676
+ - [ ] Run `open` + `errors` baseline
677
+ - [ ] Run all 7 QA phases (or subset the user requested)
678
+ - [ ] Screenshot key states: initial, post-action, errors, mobile
679
+ - [ ] Run `vitals` for any performance claim
680
+ - [ ] Output structured QA report with PASS/WARN/FAIL
681
+ - [ ] Store patterns in memory if the flow was new and successful