claudegoodies
Skill

browser-intent

From ruvnet

Execute a natural-language browser intent via page-agent (browser_act) when the target is easier to describe than to select — degrades gracefully when page-agent or an OpenAI-compatible LLM provider isn't configured

Executes a natural-language browser action (e.g. 'click the login button') via page-agent's LLM tool-call loop over browser_act.

Use it when

  • Target element hard to select due to dynamic classes or A/B-tested markup
  • One-shot interaction not worth writing a selector chain for
  • Need natural-language fallback layered on top of browser_click/browser_fill

Skip it if

  • No OpenAI-compatible LLM provider configured (bare ANTHROPIC_API_KEY won't work)
  • page-agent npm package not installed — degrades to selector-based tools only
  • You already know the exact selector/ref — browser_act adds LLM latency and cost

Facts

Repository
ruvnet/ruflo
Status
Actively maintained
Last commit
Declared tools
mcp__claude-flow__browser_act mcp__claude-flow__browser_open

Source preview

The instructions Claude Code reads when this skill runs.

# Browser Intent

Natural-language layer on top of the low-level `browser_*` selector tools. Where `browser-extract` and `browser-form-fill` compose selector-based primitives (`browser_click`, `browser_fill`, `browser_snapshot`), `browser-intent` lets the caller say what they want ("Click the login button", "Fill the search box with cats and submit") and delegates execution to [page-agent](https://github.com/alibaba/page-agent) — in-page injected JS that turns the DOM into text and drives an LLM tool-call loop against it.

## When to use

- The target element is easier to describe in words than to select reliably (dynamic class names, ambiguous structure, A/B-tested markup).
- A one-shot interaction where writing out a selector chain isn't worth it.
- Prefer `browser_click` / `browser_fill` / `browser_snapshot` directly when you already know the exact selector or ref (`@e1`) — `browser_act` adds LLM latency + cost that a direct selector call doesn't.

## Steps

1. **Call `browser_act`** with a `task` string, and optionally `url` (navigates first) and `session` (default `"default"`):
   ```
   mcp__claude-flow__browser_act({
     task: "Click the login button",
     url: "https://example.com/account",
     session: "my-session"
   })
   ```
2. **Read the response contract**:
   - `{ success: true, result, steps, history, contentFlagged, llmSource }` — the intent executed. `resul
View full source on GitHub →

Other skills