Skip to content

Skills

Map any web app automatically, then keep it as your own skill

Turn it loose on a site and it maps itself. It reads robots.txt and the sitemap, explores, screenshots, writes down what it worked out, then hands you a skill to read before you arm it. Walk it through a job once and that becomes a skill of your own. And the obvious commands never bother a model at all.

Automated site discovery

Any web app maps itself, in a few minutes

An agent that has never seen your site burns its first minutes rediscovering it: where search lives, what a button is really called, why the list looks empty until you scroll. So let it learn the place once. Browsentic reads the site’s own robots.txt and sitemap.xml, looks up public background on the domain, then explores for a few minutes, screenshotting as it goes. From then on every instruction on that domain arrives already knowing its way around. Elsewhere those notes stay inert.

Invoke with

@site-mapper map this site
  • Nothing takes effect until you say so

    A map in flight is written to a staging directory the skill loader cannot read. An unreviewed map is not merely unused, it is never opened.

  • You read the exact markdown

    The panel shows it as plain text, never rendered, alongside the domain it will match. Activate arms it, Discard deletes it.

  • Read-only and locked to one host

    It cannot click, fill or submit, cannot leave the site, and stays pinned to the tab it started in. Switching tabs stops it rather than following you.

  • Ceilings the config can narrow but never widen

    15 pages, 10 screenshots and 10 minutes by default; 40, 24 and 30 minutes are the hard limits enforced by the daemon.

Crawl & map
  • ~/browsentic/skills/acme-com/
  • ├── SKILL.mdlandmarks, key pages, quirks
  • ├── map.jsonthe structured report behind it
  • ├── screenshots/captures taken during the crawl
  • ├── evidence/the robots.txt and sitemap it worked from
  • └── pages/per-page notes, kept out of the prompt

Record once, replay later

A site map teaches it the site. A recording teaches it your job

Press record in the composer, then work through the job yourself. Click across the pages, fill the fields, submit the form, press stop. Browsentic breaks what you did into ordered steps, names each one after what you accomplished, and keeps them in a list you can rename. That is a browsing skill of your own making. From then on, “do it like last time” is the whole instruction.

Invoke with

record my browsing session
  • What you type is not saved by default

    Every field you fill becomes a placeholder ({{email}}, {{invoice_number}}) and the assistant asks you for the value when it replays.

  • Some things are never stored either way

    Passwords, hidden fields, one-time codes and anything shaped like a card number are dropped whether or not you opt in to literal values.

  • Replaying is not blind playback

    The steps are a plan, not a script. The agent re-checks each target against the live page and prefers the visible text it recorded over the CSS selector, because selectors are what a redesign breaks first.

  • It stops rather than improvising

    If a step no longer lands, the run halts and tells you which one, instead of finding a different route to the same effect.

Record & replay
  • Recording · 15 min ceilingwarns at 13, stops itself at the limit
  • ✓ Step 1Open the invoices list
  • ✓ Step 2Filter to unpaid
  • ✓ Step 3Fill {{invoice_number}}
  • ● Step 4Submit (waits for your approval)

Local intent classification

“Go back” should not cost a round trip to a language model

So every instruction is scored against a local grammar first. Confident single-step commands run in the browser and stop there, marked with a bolt on the timeline. Everything else goes to the agent with the text untouched. The bias is deliberately toward escalating, because the two mistakes are not symmetric: escalating something it could have handled costs a round trip, while acting on something it misread spends a wrong click on your real page.

Invoke with

yarn check:intent "take me to the checkout page"
  • Runs locally, in milliseconds

    back, forward, reload · open github.com · scroll to the top · press enter · click Sign in · google something · stop recording

  • Goes to the agent

    “is there a login button?” · “open the settings menu” · “click Buy now” · “scroll down and tell me what it says” · “click it”

  • Questions always escalate

    So do multi-step asks, conditionals, vague targets and consequential clicks, as does any local command that runs and fails.

  • You can audit a single decision

    Route one utterance through the grammar from the command line and see exactly why it went where it went.

Intent routing
  • ⚡ go backlocal · 4ms
  • ⚡ scroll to the toplocal · 2ms
  • → is there a login button?agent
  • ⚡ open github.comlocal · 6ms
  • → click Buy nowagent · consequential

Before any of it runs

A skill is inert until you read it and arm it

A map in flight is written to a staging directory the skill loader cannot read. An unreviewed map is not merely unused. It is never opened.

You read the exact markdown

The panel shows it as plain text, never rendered, alongside the domain it will match. Activate arms it, Discard deletes it.

Locked to one host

A mapping run is read-only: it cannot click, fill or submit, cannot leave the site, and stays pinned to the tab it started in.

Ceilings you can narrow, never widen

15 pages, 10 screenshots and 10 minutes by default. 40, 24 and 30 minutes are hard limits the daemon enforces.

Stop describing the page. Hand it over.

Free and MIT licensed. Nothing to sign up for, no key to paste, and a fresh install connects to nothing until you redeem a pairing code yourself.

claude mcp add browsentic -- browsentic-mcp