agentsclimarketplace

Camoufox browser

Skill vinismarques/camoufox-browser/skills/camoufox-browser

Camoufox-only browser runtime for AI agents with inspect/query/act APIs, events, and downloads.

Install
npx -y skills add vinismarques/camoufox-browser --skill camoufox-browser

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 6 stars6 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Operate websites through the local Camoufox browser runtime with persistent sessions, inspect/query/act flows, event inspection, authenticated fetches, and download handling.

SKILL.md

3.9 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it

Camoufox Browser Runtime Skill

Use this skill when browser tasks should run through the Camoufox runtime API exposed by this repository.

Runtime assumptions

  • Runtime default URL: http://127.0.0.1:9487
  • Health endpoint: GET /health
  • Capabilities endpoint: GET /capabilities

If the runtime is not running yet:

cd /path/to/camoufox-browser
npm install
npx camoufox-js fetch
npm start

Or use the bundled helpers from this skill:

./scripts/start.sh
./scripts/stop.sh

(start.sh runs the runtime from the package/repo root and waits for /health.)

Before any browser task, do a quick preflight:

curl -s http://127.0.0.1:9487/health
curl -s http://127.0.0.1:9487/capabilities

Recommended execution flow

  1. Create or reuse a session (POST /sessions)
  2. Create a tab (POST /sessions/:sessionId/tabs)
  3. Inspect (POST /tabs/:tabId/inspect)
  4. Query specific targets when needed (POST /tabs/:tabId/query)
  5. Execute actions with retries (POST /tabs/:tabId/act)
  6. Confirm expected state (POST /tabs/:tabId/wait)
  7. Use eval only for edge cases (POST /tabs/:tabId/eval)
  8. Read events/downloads/fetch APIs for debugging and extraction

For userscript-style injection:

  1. Write the script to a file on disk
  2. Register via POST /sessions/:sessionId/init-scripts with {"path": "/path/to/script.js"}
  3. Open tabs — the script runs automatically at DOMContentLoaded on every page load
  4. Edit the file on disk as needed — changes are picked up on next page load
  5. Reload the target tab to verify (no re-registration needed)

Minimal API snippets

Create session:

curl -s -X POST http://127.0.0.1:9487/sessions \
  -H "Content-Type: application/json" \
  -d '{"persistent":true}'

Create tab:

curl -s -X POST http://127.0.0.1:9487/sessions/<sessionId>/tabs \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'

Inspect:

curl -s -X POST http://127.0.0.1:9487/tabs/<tabId>/inspect \
  -H "Content-Type: application/json" \
  -d '{"limit":200,"offset":0,"includeScreenshot":false,"includeDom":false}'

Act:

curl -s -X POST http://127.0.0.1:9487/tabs/<tabId>/act \
  -H "Content-Type: application/json" \
  -d '{
    "action":"click",
    "target":{"by":"role","role":"button","name":"Continue"},
    "retry":{"maxAttempts":3,"backoffMs":150}
  }'

Wait:

curl -s -X POST http://127.0.0.1:9487/tabs/<tabId>/wait \
  -H "Content-Type: application/json" \
  -d '{
    "mode":"all",
    "conditions":[{"kind":"networkIdle"}],
    "timeoutMs":10000
  }'

Init scripts (userscript-style injection):

# From file on disk (re-read on every page load)
curl -s -X POST http://127.0.0.1:9487/sessions/<sessionId>/init-scripts \
  -H "Content-Type: application/json" \
  -d '{"path":"/path/to/script.user.js"}'

# Or inline
curl -s -X POST http://127.0.0.1:9487/sessions/<sessionId>/init-scripts \
  -H "Content-Type: application/json" \
  -d '{"script":"document.body.style.background = \"red\""}'

Notes

  • Prefer semantic targeting (ref, role, label) before brittle selectors.
  • For userscript-style injection, use POST /sessions/:sessionId/init-scripts with a file path. File-based scripts are re-read from disk on every page load — just edit and reload.
  • Inline scripts (via script) are also supported but baked in at registration time.
  • Use /tabs/:tabId/events for timeline debugging (network, console, page errors, actions).
  • Use /tabs/:tabId/fetch for authenticated HTTP calls using browser cookies.
  • Use /tabs/:tabId/downloads + /save to persist downloaded artifacts.

For complete endpoint coverage and payload details, read ../../README.md before complex or long-running workflows.

What ships with it: 2 files

1.9 KB alongside SKILL.md, 2 of them executable

scripts/

Keep looking

Skills are one crate of 326,984. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.