From novada-mcp
**When to use:** Interactive flows requiring clicks, form fills, login, or chaining multiple page interactions.
How this skill is triggered — by the user, by Claude, or both
Slash command
/novada-mcp:novada-browserThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**When to use:** Interactive flows requiring clicks, form fills, login, or chaining multiple page interactions.
When to use: Interactive flows requiring clicks, form fills, login, or chaining multiple page interactions.
Requires: NOVADA_BROWSER_WS environment variable.
| Action | Required params | Use case |
|---|---|---|
| navigate | url, wait_until | Go to URL |
| click | selector | Click element |
| type | selector, text | Type into input |
| screenshot | — | Capture visual |
| aria_snapshot | — | Get ARIA tree (structural, token-efficient) |
| evaluate | script | Run JS in page context |
| wait | selector?, timeout | Wait for element or time |
| scroll | direction | Scroll page |
| hover | selector | Hover over element |
| press_key | key, selector? | Press keyboard key |
| select | selector, value | Choose dropdown option |
| close_session | — | Release session resources |
{
"actions": [
{"action": "navigate", "url": "https://example.com/login", "wait_until": "domcontentloaded"},
{"action": "type", "selector": "#email", "text": "[email protected]"},
{"action": "type", "selector": "#password", "text": "secret"},
{"action": "click", "selector": "button[type=submit]"},
{"action": "wait", "selector": ".dashboard", "timeout": 10000},
{"action": "aria_snapshot"}
]
}
Use session_id to maintain state across calls:
// First call — establishes login session
{"actions": [...login actions...], "session_id": "my-session-1"}
// Second call — reuses cookies/state
{"actions": [{"action": "navigate", "url": "https://example.com/data"}, {"action": "aria_snapshot"}], "session_id": "my-session-1"}
Sessions expire after 10 min of inactivity. Call close_session to release early.
wait_until: "domcontentloaded" — NEVER networkidle for SPAs (TikTok, X, React apps never reach networkidle → 30s timeout)aria_snapshot over screenshot — 10x more token-efficient, parseable by agentscountry: "us" at top levelGet ARIA structure of a page:
{"actions": [{"action": "navigate", "url": "..."}, {"action": "aria_snapshot"}]}
Take a screenshot:
{"actions": [{"action": "navigate", "url": "..."}, {"action": "screenshot"}]}
Execute JS and extract data:
{"actions": [
{"action": "navigate", "url": "..."},
{"action": "evaluate", "script": "return document.querySelectorAll('.price').length"}
]}
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub novadalabs/novada-search-mcp --plugin novada-mcp