# Jev Browser Use

Use when driving a web page in a browser, clicking, typing, navigating, logged-in or...

- Repository: https://github.com/kerpopule/hermes-jev-skills (1275 stars)
- Category: Engineering
- License: MIT
- Last updated: 2026-10-29
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add kerpopule/hermes-jev-skills --skill jev-browser-use -g -a claude-code -y`
Codex: `npx skills add kerpopule/hermes-jev-skills --skill jev-browser-use -g -a codex -y`
Cursor: `npx skills add kerpopule/hermes-jev-skills --skill jev-browser-use -g -a cursor -y`
Gemini CLI: `npx skills add kerpopule/hermes-jev-skills --skill jev-browser-use -g -a gemini-cli -y`

## Description

Use when driving a web page in a browser, clicking, typing, navigating, logged-in or JS-rendered pages. Jev picks each step from the elements observed, under a host allowlist and a step budget.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Browser use with Jev

If a plain HTTP fetch can read it, fetch it and leave the browser alone. This skill is for pages that need interaction.

Jev never writes selectors, code or coordinates. It picks one operation and one target from the list of elements your browser tool observed. There are two ways to run it.

## A. Your own browser tool + `jev choose` (works everywhere)

Same loop as `jev-computer-use`, with page elements as regions:

1. **Observe.** Read the page as an element list (accessibility tree, `read_page`, a snapshot). Keep role and a short label per element; leave page text out.
2. **Build the table.** One row per action you would be willing to take now: `click-r12`, `type-email-r7`, `scroll-down`, `back`, plus the mandatory `reobserve` and `abstain`. Text to type is decided by you and lives in your row, not in the request.
3. **Ask:** `jev choose < request.json` (Hermes: `jev_choose_action`). Schema `jev.action_choice_request_v1`; see `jev-computer-use` for the shape.
4. **Do that one action, observe again, verify.** Never retry a browser mutation blindly: look first.

**A "goal reached" row needs a second check.** Jev sees labels, not page text, so it can only guess from the link it followed that the goal is met. When it picks that row, ask a Noul over the page's own text (`jev ask`, state = goal + URL + about 6,000 characters of main text): *"From this page the visitor can do what the goal asks, now, without waiting for another person."* Measured on a request-access page reached by "Request free access": the choice said done at 0.73; the Noul said 0.07, and "a person must approve first" 0.91.

The rest: https://github.com/kerpopule/hermes-jev-skills/blob/HEAD/skills/jev-browser-use/SKILL.md
