cheap-browsing
Token-efficient browser automation — read pages as text, fill forms by ref, extract form structure from saved HTML, and screenshot only when a visual…
Skill by PrashamTrivedi
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/prashamtrivedi-cheap-browsing
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: frontend, sales
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/cheap-browsing
What's inside
- Skill name
cheap-browsing- Description
- Token-efficient browser automation — read pages as text, fill forms by ref, extract form structure from saved HTML, and screenshot only when a visual assertion is the deliverable. Use when browsing at volume (job boards, ATS applications, scraping, lead lists), when filling web forms, when a browser session is growing large, or when the user mentions browser cost, quota, usage, screenshots being expensive, or asks to browse cheaply.
- License
- MIT
- Instructions
- 164 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (3)
- SKILL.md
- audit_browser_cost.py
- extract_form.py
SKILL.md (first lines)
# Cheap browsing
Browser automation dominates quota when driven by screenshots. This skill is the
cheap path: text in, refs out, pixels almost never.
## The numbers
Measured from one week of real `jobhunt` + `clienthunt` transcripts, plus live
fetches of Greenhouse and Lever pages.
| Approach | Tokens | Note |
|---|---|---|
| Raw HTML into context | 16,000–74,000 | Greenhouse app 20,837 · Lever 74,322 |
| `chrome:browser_batch` | 1,801/call | worst real offender — batches screenshots |
| Screenshot (`chrome:computer`) | ~1,500 | jpeg, full viewport |
| `chrome:get_page_text` | 1,244/call | 921-call average |
| `chrome:read_page` | 1,111/call | a11y tree + refs |
| `chrome:find` | 339/call | |
| `chrome:form_input` | 232/call | per field |
| HTML → file → field manifest | **87** | 240× smaller than the same page's HTML |
One week's damage: **6,671 screenshots ≈ 10.5M image tokens**. `jobhunt` alone
was 4,754 shots / 7.5M tokens. `claude-in-chrome` = 51% of the weekly quota.
The multiplier that makes this hurt: an image stays in context and is re-sent on
every subsequent turn. A screenshot on turn 3 of a 40-turn session is charged
across 37 more turns. Cache reads soften it; they don't remove it.
## Reading a page
```
chrome:navigate → chrome:get_page_text
```
That's it. No screenshot, no `read_page`, no HTML. For a job posting, a
docs page, an article, a profile — `get_page_text` is the whole answer.
Use `chrome:find` instead when you want one specific thing ("the Apply button",
"the salary line") — it's 4× cheaper than reading the page and returns a ref you
can act on.
Use `chrome:read_page` only when you need refs for interaction. It is not a
reading tool despite the name.
## Filling a form
The cheap sequence, ~2,500 tokens for a 12-field form:
```
chrome:read_page # once — get refs 1,111
chrome:form_input × N # fill by ref, no pixels 232 each
chrome:computer (screenshot) # ONE frame before submit 1,500
```
The expensive sequence people fall into, ~29,000 tokens for the same form:
```
screenshot → click → screenshot → type → screenshot → scroll → screenshot ...
```
Roughly **10× the cost for the same outcome**, and every one of those frames
keeps billing for the rest of the session.
`form_input` handles text, selects, checkboxes and radios by ref. `file_upload`
(259/call) handles the résumé. Neither needs to see anything.
### When the a11y tree comes back useless
Some ATS forms are custom widgets with no usable refs. Before reaching for
screenshots:
1. `chrome:find` for the field by its visible label.
2. `chrome:javascript_tool` to set the value directly and dispatch an `input`
event — 410/call, cheaper than a single frame.
3. Only then, screenshots.
## Getting form structure without paying for HTML
HTML is the most expensive thing you can put in context and the most useful
thing to have on disk. Keep it on disk.
```bash
# 1. dump the live DOM to a file (the tool returns a path/short ack, not the HTML)
chrome:javascript_tool → document.documentElement.outerHTML → write to
$CLAUDE_JOB_DIR/tmp/page.html (or /tmp if no job dir)
# 2. read only the manifest
python3 ~/.claude/skills/cheap-browsing/extract_form.py page.html
```
Real output, from a live Greenhouse application page whose HTML is 20,837 tokens:
```
first_name text REQUIRED — First Name *
last_name text REQUIRED — Last Name *
email text REQUIRED — Email *
country text — Country
phone tel — Phone
resume file — Attach
question_14364081008 text REQUIRED — Please note that you will not be...
7 fields
```
87 tokens. It reports `name`, `type`, `required`, label, current value, and
select options (capped at 12, with an overflow marker). `--json` for
machine-readable output.
**Never `Read` the saved HTML file.** That defeats the entire point — it puts
the 20k tokens straight into context. Always run a script over it and read only
what the script prints. If the manifest comes back empty the page is
JS-rendered; fall back to `read_page` for refs.
### The human-paste variant
For a high-stakes application the user wants to review anyway: produce the
manifest, write the answers to a file alongside it, and hand over both paths.
The user pastes. Agent cost drops to near zero and they get a review gate they
wanted regardless. Worth offering when the form is long, the role matters, orFrom PrashamTrivedi/CursorPlugin, MIT.
More from PrashamTrivedi/CursorPlugin
- 0.529score
cf-analytics-engine
PrashamTrivedi
Query Cloudflare Workers Analytics Engine datasets using SQL.
SkillBFreshness: BClaude Code - 0.524score
cloudflare-tunnel
PrashamTrivedi
Expose localhost to the internet via Cloudflare Tunnel.
SkillBFreshness: BClaude Code +9 - 0.524score
code-review
PrashamTrivedi
Automatic code review before commits and pushes.
SkillBFreshness: BClaude Code - 0.518score
docs
PrashamTrivedi
Update documentation and changelog to reflect codebase changes
SkillBFreshness: BClaude Code +9 - 0.518score
codeplanner-gemini
PrashamTrivedi
Plan and analyze code tasks with comprehensive project understanding with help of Gemini CLI coding agent
SkillBFreshness: BClaude Code +9 - 0.518score
completework
PrashamTrivedi
Complete and finalize task work with validation and documentation updates
SkillBFreshness: BClaude Code +9 - 0.518score
codeplanner
PrashamTrivedi
Plan and analyze code tasks with comprehensive project understanding
SkillBFreshness: BClaude Code +9 - 0.515score
brainstorm
PrashamTrivedi
Brainstorm the requirement to finalize requirements.
SkillBFreshness: BClaude Code +9 - 0.515score
background
PrashamTrivedi
Fires off a full Claude Code instance in the background
SkillBFreshness: BClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Sep 1, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/PrashamTrivedi/CursorPlugin
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from PrashamTrivedi
- 0.529score
cf-analytics-engine
PrashamTrivedi
Query Cloudflare Workers Analytics Engine datasets using SQL.
SkillBFreshness: BClaude Code - 0.524score
cloudflare-tunnel
PrashamTrivedi
Expose localhost to the internet via Cloudflare Tunnel.
SkillBFreshness: BClaude Code +9 - 0.524score
code-review
PrashamTrivedi
Automatic code review before commits and pushes.
SkillBFreshness: BClaude Code - 0.518score
docs
PrashamTrivedi
Update documentation and changelog to reflect codebase changes
SkillBFreshness: BClaude Code +9 - 0.518score
codeplanner-gemini
PrashamTrivedi
Plan and analyze code tasks with comprehensive project understanding with help of Gemini CLI coding agent
SkillBFreshness: BClaude Code +9 - 0.518score
completework
PrashamTrivedi
Complete and finalize task work with validation and documentation updates
SkillBFreshness: BClaude Code +9
Cite this page
cheap-browsing skill. Agent Mart. https://agentmart.dev/skills/prashamtrivedi-cheap-browsing (last updated 2026-10-24)