browser-programming

Batch browser actions into programmable transactions using numbered page snapshots.

38|6|Updated Aug 14, 2026
One-click install
npx skills add https://github.com/7757/Fan-Browser-Agent --skill browser-programming-7757
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: browser-programming
Source: https://github.com/7757/Fan-Browser-Agent/tree/main/skills/browser/browser-programming
Command: npx skills add https://github.com/7757/Fan-Browser-Agent --skill browser-programming-7757

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Multi-step browser tasks waste model round trips when every click, type, or navigation is issued as a separate action, and guessing at page controls leads to unreliable automation. This Skill lets you plan a compact browser transaction from one numbered page snapshot and batch Fan's native actions through the flat fan.* API. ## Core Features & Use Cases - Transaction Batching: Combine typing, clicking, navigation, form filling, and tab management into a single browser_run call with a clean replan boundary when new information appears. - Deterministic Target Resolution: Select elements from numbered snapshots using fan.ref, fan.requireUnique, fan.waitForState, and fan.waitForElement instead of guessing selectors. - Safe Side Effects and Human Handoff: Dispatch non-rollback actions like submitting or purchasing exactly once, and pause with browser_handoff for logins, verifications, and approvals. - Use Case: Fill a multi-field visa application form from one snapshot, submit it once with fan.formSubmit, and hand off to the user when a payment or verification step appears. ## Quick Start Ask the agent to take a snapshot of the current page and complete the visible form or workflow as one batched browser transaction, pausing for any login or confirmation step.

Frequently Asked Questions about browser-programming

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I automate multi-step browser tasks in one transaction?▼

Take a numbered page snapshot, then place every step justified by that observation into a single browser_run code body using fan.* methods like fan.click, fan.type, and fan.navigate. Return a replan boundary only when new semantic information requires a model decision.

How do I fill and submit a web form programmatically?▼

Use fan.fillForm for stable multi-field input, or fan.formSubmit when the fields and submit target are known from the same snapshot. This keeps submission provenance and idempotency as one native operation instead of a hand-assembled sequence.

Is browser_run the same as Playwright?▼

No. browser_run is an action batcher over Fan's native runtime, not Playwright or a second locator engine. Only the documented flat fan.* methods exist, and Playwright options like modifiers, button, or clickCount are rejected.

How do I handle logins, CAPTCHAs, and sensitive inputs?▼

Call browser_handoff when a person must log in, verify, approve, or decide. For typed secrets, collect them as fan-value:// references, place them in value_refs, and pass only fan.protectedValue(alias) to input methods so raw values never appear in code.

Why does my element reference stop working after navigation?▼

Navigation invalidates old snapshot generations, so a fan.ref(N) from before navigation cannot be reused. Call fan.observe() after the page change and pass an element object from that fresh snapshot to the next action.

When should I use coordinate clicks instead of numbered targets?▼

Use fan.clickPoint only when the numbered snapshot cannot reliably represent a visible control. Request a fresh screenshot, copy its evidenceRef into visual_evidence_ref, and note that one reference authorizes exactly one click or drag.