Skip to content

Commit 2a39893

Browse files
committed
docs: Consolidate CLAUDE.md
1 parent b23419b commit 2a39893

1 file changed

Lines changed: 13 additions & 8 deletions

File tree

CLAUDE.md

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ src/
3737
│ ├── emulate-device.tool.ts # emulate_device (viewport/UA)
3838
│ ├── cookies.tool.ts # set_cookie, delete_cookies
3939
│ ├── execute-script.tool.ts # execute_script
40-
│ ├── execute-sequence.tool.ts # Batch action sequencing with stability + state delta
40+
│ ├── get-elements.tool.ts # get_elements (all elements, incl. below fold)
4141
│ └── ... # Other tools follow same pattern
4242
├── resources/
4343
│ ├── index.ts # ResourceDefinition exports
@@ -56,7 +56,8 @@ src/
5656
├── scripts/
5757
│ ├── get-interactable-browser-elements.ts # Browser-context element detection
5858
│ ├── get-browser-accessibility-tree.ts # Browser-context accessibility tree
59-
│ └── get-visible-mobile-elements.ts # Mobile visible element detection
59+
│ ├── get-visible-mobile-elements.ts # Mobile visible element detection
60+
│ └── get-elements.ts # Filter + paginate elements (used by tool + resource)
6061
├── locators/
6162
│ ├── element-filter.ts # Platform-specific element classification
6263
│ ├── locator-generation.ts # Multi-strategy selector generation
@@ -68,8 +69,6 @@ src/
6869
│ └── appium.config.ts # iOS/Android capability builders (used by local-appium.provider)
6970
├── utils/
7071
│ ├── parse-variables.ts # URI template variable parsing (parseBool, parseNumber, etc.)
71-
│ ├── stability-detector.ts # Page stability polling (signature-based, 200ms/500ms/5s)
72-
│ ├── state-diff.ts # Element before/after diff (appeared, disappeared, changed)
7372
│ └── zod-helpers.ts # coerceBoolean and other Zod utilities
7473
└── types/
7574
├── tool.ts # ToolDefinition interface
@@ -136,7 +135,7 @@ MCP resources expose live session data — all at fixed URIs discoverable via Li
136135
- `wdio://session/{sessionId}/code` — generated JS for any session (URI template)
137136

138137
**Live page state (current session):**
139-
- `wdio://session/current/elements` — interactable elements
138+
- `wdio://session/current/elements` — interactable elements (viewport-only; use `get_elements` tool with `inViewportOnly: false` for all)
140139
- `wdio://session/current/accessibility` — accessibility tree
141140
- `wdio://session/current/screenshot` — screenshot (base64)
142141
- `wdio://session/current/cookies` — browser cookies
@@ -160,16 +159,14 @@ MCP resources expose live session data — all at fixed URIs discoverable via Li
160159
| `src/session/lifecycle.ts` | `registerSession()`, `closeSession()`, session transitions |
161160
| `src/tools/session.tool.ts` | `start_session` (browser + mobile), `close_session` |
162161
| `src/tools/tabs.tool.ts` | `switch_tab` |
163-
| `src/tools/execute-sequence.tool.ts` | Batch action sequencing with stability + delta |
162+
| `src/tools/get-elements.tool.ts` | `get_elements` — all elements with filtering + pagination |
164163
| `src/resources/` | All MCP resource definitions (10 files) |
165164
| `src/providers/local-browser.provider.ts` | Chrome/Firefox/Edge/Safari capability building |
166165
| `src/providers/local-appium.provider.ts` | iOS/Android capabilities via appium.config.ts |
167166
| `src/scripts/get-interactable-browser-elements.ts` | Browser-context element detection |
168167
| `src/locators/` | Mobile element detection + locator generation |
169168
| `src/recording/step-recorder.ts` | `withRecording(toolName, cb)` HOF — wraps tools for step logging |
170169
| `src/recording/code-generator.ts` | Generates runnable WebdriverIO JS from `SessionHistory` |
171-
| `src/utils/stability-detector.ts` | Page stability detection (signature polling) |
172-
| `src/utils/state-diff.ts` | Element state diff (appeared/disappeared/changed) |
173170
| `src/utils/zod-helpers.ts` | `coerceBoolean` for client interop |
174171
| `tsup.config.ts` | Build configuration |
175172

@@ -197,6 +194,14 @@ external imports.
197194
Sessions created with `noReset: true` or without `appPath` automatically detach on close (don't terminate on Appium
198195
server).
199196

197+
### MCP Resource URI Templates
198+
199+
The MCP SDK only supports path-segment templates `{param}` in resource URIs — NOT RFC 6570 query param syntax `{?param}`. Resources using `{?param}` silently return "Resource not found". Keep resources at fixed URIs; expose parameterised access via tools instead.
200+
201+
### Scripts vs Tools vs Resources
202+
203+
Computation logic belongs in `src/scripts/` (no try/catch, returns raw data). Tools wrap scripts with try/catch and return `{ isError: true, content: [...] }` on failure. Resources wrap scripts and set `mimeType` in the response.
204+
200205
### Error Handling
201206

202207
Tools return errors as text content, never throw. Keeps MCP protocol stable:

0 commit comments

Comments
 (0)