fellowship-dev/navvi · Archived

navvi-browse

Autonomous browser agent — navigates, interacts, and reports using Navvi MCP tools. Use when asked to browse a website, interact with web pages, scrape content, or perform any web browsing task.

First seen Mar 27, 2026

Installation

$ npx skills add fellowship-dev/navvi --skill navvi-browse

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from fellowship-dev/navvi.

npx skills add fellowship-dev/navvi

Browse all from fellowship-dev/navvi

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 8
License LICENSE
Default branch main
Open issues 10
Status Archived

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 6,299 B
  • docs SUMMARY.md 216 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 5 installs

SKILL.md

Navvi Browse

Autonomous browser agent. Controls a real browser via Navvi MCP tools — completes browsing tasks and returns a clean summary.

First Steps (ALWAYS)

  1. Read the persona brief — this tells you who you are, your email, your history, your writing style:
mcp__navvi__navvi_milestone(action="brief", persona="{persona}")

Match your writing style to previous posts. Use the correct email from the brief.

  1. Unlock atomic tools:
mcp__navvi__navvi_atomic(enable=true)

This reveals navvifind, navviclick, navvifill, navvipress, navviscroll, navvicreds, etc.

  1. Check if a container is running:
mcp__navvi__navvi_status()

If not running, start one: mcpnavvinavvi_start()

Available Tools

Navigation + Interaction

  • navvi_open — go to a URL
  • navvi_find — find elements by CSS selector → returns screen (x, y) coordinates
  • navvi_click — click at (x, y)
  • navvi_fill — click + type text at (x, y)
  • navvi_press — press a key (Enter, Tab, Escape, etc.)
  • navvi_scroll — scroll the page

Observation

  • navvi_screenshot — capture the screen (returns file path — use Read to view it)
  • navvi_url — get current page URL
  • navvi_vnc — get VNC URL for human handoff (CAPTCHAs, 2FA)

Credentials

  • navvi_creds(action="list") — list stored credentials
  • navvi_creds(action="generate", entry="navvi/persona/service", username="[email protected]") — generate password (stays inside container, never returned)
  • navvi_creds(action="autofill", entry="navvi/persona/service") — type credentials into focused form fields
  • navvi_login(service="...", persona="...") — one-step login with stored credentials

Journey tools (for simple tasks)

  • navvi_browse(instruction="...", url="...") — autonomous browsing loop. Use for simple tasks. For complex multi-step flows, use atomic tools directly — you have better vision and reasoning.

Workflow

For every step:

  1. Screenshot — take a screenshot and Read it to see the page
  2. Analyze — identify what's on screen (login form? search box? results? CAPTCHA?)
  3. Act — use navvifind to get coordinates, then navviclick/navvifill/navvipress
  4. Verify — screenshot again to confirm the action worked

Coordinate workflow (CRITICAL)

  • ALWAYS use navvi_find(selector="...") to get (x, y) coordinates
  • NEVER guess coordinates from screenshots — browser chrome offsets make pixel positions unreliable
  • navvifind returns screen-ready coordinates that work directly with navviclick/navvi_fill

CAPTCHAs

  • If you detect a CAPTCHA (Arkose Labs, FunCaptcha, hCaptcha), call navvi_vnc and tell the user to solve it manually
  • For reCAPTCHA v2: try clicking the checkbox first — Camoufox often passes it

Login

  • Use navvi_login(service="...") for sites with stored credentials
  • If autofill fails, use navvi_find to locate fields manually
  • NEVER type or display passwords — use navvi_creds(action="autofill")

Credentials

  • Require NAVVIGPGPASSPHRASE in .mcp.json env
  • If gopass is disabled, tell the user to add "NAVVIGPGPASSPHRASE": "any-random-string" to their MCP config

Related Skills

  • navvi-login — dedicated login flow with 2FA handling
  • navvi-signup — account creation with credential generation

Milestones

Record milestones for significant moments during browsing — not every click, but meaningful achievements:

  • First visit to a new service: navvi_milestone(action="add", event="First visit to {domain}", screenshot=true, tags="first,{service}")
  • Posted content (comment, reply, post): include the FULL text in detail:

`` navvi_milestone(action="add", event="Posted on {service}", detail="Subreddit: r/selfhosted\n\nFull text:\n\"Had the same issue with SPF records...\"", url="https://...";, tags="{service},comment", screenshot=true) ``

  • Received interaction (like, reply, notification): navvi_milestone(action="add", event="First reply received on {service}", screenshot=true, tags="first,{service},interaction")
  • Profile changes: bio updates, avatar, settings

Always include full content text — this maintains persona voice consistency across sessions.

Flow Recipes (auto-improving workflows)

After navvi_browse completes, check its response footer:

If footer says "No stored flow" — save it for next time:

  1. Summarize the flow as a playbook — you have full context of what just happened, so describe the steps, selectors used, expected URLs at each stage, and any caveats you encountered
  2. Call navvi_flow(action="save") with the verified recipe:

`` navviflow(action="save", flow="domain.com/action-name", description="One-line description", steps='[{"action":"navigate","url":"https://...","expectedurl":"domain.com"}, {"action":"click","selector":"a[text=Dashboard]","expected_url":"domain.com/dashboard"}, {"action":"fill","selector":"input#search","value":"query"}]', caveats='["Must be logged in first"]', refs='["domain.com/login"]') ``

  1. The MCP runs a judge (Pass 2) to verify your playbook against the raw action log before storing

If footer shows a flow was used:

  • The flow was loaded automatically. Confidence updates happen inside navvi_browse.
  • No action needed from you.

Step format for recipes:

Each step should include:

  • action: navigate, click, fill, press, scroll, autofill
  • selector: CSS selector (for click/fill)
  • expected_url: URL or domain expected after this step (for checkpoints)
  • detail: brief note about what this step does
  • value: text to type (fill only)
  • key: key name (press only)
  • url: target URL (navigate only)

Response Format

When done, return:

  1. Brief summary of what you did
  2. Key findings or extracted data
  3. Path to final screenshot
  4. Any issues encountered

Keep the summary concise — the user doesn't need to see every click.