anti_patterns
1. **Using tools that don't exist** — Always verify tools via `list_agent_tools()` before designing. Common hallucinations: `csv_read`, `csv_write`,…
Use browser nodes (with `tools: {policy: "all"}`) when: - The task requires interacting with web pages (clicking, typing, navigating) - No API is available for the target service - The user is already logged in to the target site
$ npx -y skills add aden-hive/hive --agent claude-codeHow it fires
How this agent gets triggered: by you, by Claude, or both.
Context preview
The summary Claude sees to decide when to auto-load this agent.
Use browser nodes (with `tools: {policy: "all"}`) when: - The task requires interacting with web pages (clicking, typing, navigating) - No API is available for the target service - The user is already logged in to the target site
Use browser nodes (with `tools: {policy: "all"}`) when:
The browser is driven from the terminal. Run `hive-browser <command> ... --json` via `terminal_exec` — always pass `--json` so the node gets structured output:
<!-- vision-only -->
<!-- /vision-only -->
**`hive-browser page snapshot`** — compact accessibility tree of interactive elements. Fast, cheap, good for static or form-heavy pages where the DOM matches what's visually rendered (documentation, simple dashboards, search results, settings pages).
**`hive-browser screenshot --intent "..."`** — visual capture + metadata (`cssWidth`, `devicePixelRatio`, scale fields). Use this when `hive-browser page snapshot` does not show the thing you need, when refs look stale, or when visual position/layout matters. This often happens on complex SPAs — LinkedIn, Twitter/X, Reddit, Gmail, Notion, Slack, Discord — and on sites using shadow DOM, virtual scrolling, React reconciliation, or dynamic layout.
Neither command is "preferred" universally — they're for different jobs. Start with snapshot for page structure and ordinary controls; use screenshot as the fallback when snapshot can't find or verify the visible target. Activate the `browser-automation` skill for the full decision tree.
Every browser command that takes or returns coordinates operates in **fractions of the viewport (0..1 for both axes)**. Read a target's proportional position off `hive-browser screenshot --intent "..."` ("~35% from the left, ~20% from the top" → `0.35,0.20`) and pass it as `--coordinate 0.35,0.20` on a `hive-browser interact --action left_click` / `hover` / `key` command. `hive-browser page shadow-query "S"` returns `rect.cx` / `rect.cy` as fractions. The command multiplies by `cssWidth` / `cssHeight` internally — no scale awareness required. Fractions are used because every vision model (Claude, GPT-4o, Gemini, local VLMs) resizes/tiles images differently; proportions are invariant. Avoid raw `getBoundingClientRect()` via `hive-browser evaluate` for coord lookup; use `hive-browser page shadow-query` instead.
1. Start with `hive-browser page snapshot --json` (run in the terminal) or the snapshot returned by the latest interaction. 2. If the target is missing, ambiguous, stale, or visibly present but absent from the tree, run `hive-browser screenshot --intent "..." --json` to orient and then click by fractional coordinates. 3. Before typing into a rich-text editor (X compose, LinkedIn DM, Gmail, Reddit), click the input area first with `hive-browser interact --action left_click ... --json` so React / Draft.js / Lexical register a native focus event, then `hive-browser interact --action type --text "..." --json` — omit `--selector` for shadow-DOM inputs to type into the focused element, or pass `--selector` for light-DOM inputs. 4. Run `hive-browser interact --action wait --duration 2-3 --json` after navigation for SPA hydration. 5. If you hit an auth wall, call set_output with an error and move on. 6. Keep terminal commands per turn <= 10 for reliability.
{
"id": "scan-profiles",
"name": "Scan LinkedIn Profiles",
"description": "Navigate LinkedIn search results and collect profile data",
"tools": {"policy": "all"},
"input_keys": ["search_url"],
"output_keys": ["profiles"],
"system_prompt": "Navigate to the search URL by running `hive-browser navigate <search_url> --wait-until load --json` in the terminal. Wait 3s for SPA hydration. Use the returned snapshot to look for result cards first. If the cards are missing, stale, or visually present but absent from the tree, run `hive-browser screenshot --intent \"orient on result cards\" --json` to orient; paginate through results by scrolling and use screenshots only when the snapshot cannot find or verify the visible cards..."
}Connected via regular edges:
search-setup ->
Repo: aden-hive/hive
1. **Using tools that don't exist** — Always verify tools via `list_agent_tools()` before designing. Common hallucinations: `csv_read`, `csv_write`,…
Agents are defined as a single `agent.yaml` file. No Python code needed. The runner loads this file directly -- no `agent.py`, `config.py`, or…
Agents are declarative JSON configs in `exports/`: ``` exports/my_agent/ agent.json # The entire agent definition mcp_servers.json # MCP tool server config…