agentleFS
ghuntleyghuntley/loom/.agents/skills/antithesis-agent-browser/SKILL.md

antithesis-agent-browser

Skill1.6k starsChanged todayMITView on GitHub

Authenticate `agent-browser` against an Antithesis tenant and read data from Antithesis web pages (triage reports, runs page, logs viewer, causality reports). Only invoke this skill when explicitly requested by another skill or the user. Requires interactive browser authentication and is unsuitable for fully headless workflows.

We split this skill into the rules it gives an agent

22 rules. About 0 are common, 8 are distinctive, and 14 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈8

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 14

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    When another skill needs information from an Antithesis page that snouty cannot reliably provide.

    line 28
  2. Distinctive:

    When the user or another skill needs to interact with an Antithesis web page directly.

    line 30
  3. Very specific:

    DO NOT PROCEED if agent-browser is not installed.

    line 35
  4. Very specific:

    DO NOT PROCEED if agent-browser is older than version v0.23.4.

    line 36
  5. Very specific:

    Inject the runtime after navigation: After every open, after link clicks that may change pages, and after reopening a report from a finding …

    line 45
  6. Very specific:

    Retry missing-runtime errors by reinjecting: If a command fails because window.__antithesisAgentBrowser is undefined or missing, inject the …

    line 47
  7. Distinctive:

    Keep report evals on the main report view: If you click into another page by accident, reopen the original report URL before using report …

    line 48
  8. Very specific:

    Every invocation MUST use a unique --session value.

    line 57
  9. Very specific:

    Use --session-name antithesis on the FIRST agent-browser command that references a new $SESSION.

    line 63
  10. Distinctive:

    Do NOT navigate to the home page just to check auth.

    line 73
  11. Very specific:

    If the URL starts with https://$TENANT.antithesis.com then you are authenticated.

    line 81
  12. Very specific:

    Call its methods with agent-browser eval:

    line 92
  13. Very specific:

    If window.__antithesisAgentBrowser is missing, reinject assets/antithesis-agent-browser.js and retry.

    line 103
  14. Very specific:

    NEVER run agent-browser calls in parallel.

    line 105
  15. Distinctive:

    If you hit an authentication page, stop and reauthenticate before continuing.

    line 123
  16. Distinctive:

    Use the lower-level boolean checks when you need a one-shot probe:

    line 140
  17. Distinctive:

    If a page still does not become ready, inspect status:

    line 146
  18. Very specific:

    After every report waitForReady() call, check result.error.

    line 154
  19. Very specific:

    Authenticate to the tenant: Read references/setup-auth.md for the interactive login flow.

    line 158
  20. Very specific:

    Discover runs from the runs page: Read references/run-discovery-ui.md.

    line 159
  21. Very specific:

    Read properties from a triage report: Read references/properties-from-ui.md.

    line 160
  22. Distinctive:

    Read a causality report: Ask the user for the causality report URL.

    line 163

≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Antithesis agent-browser

Skill version: 2026-09-16 6cf90e4

A helper skill for reading data from authenticated Antithesis web pages when the snouty API doesn't expose what's needed. Other skills (antithesis-triage, antithesis-debug, antithesis-query-logs) delegate here when they need an authenticated browser session.

Purpose

  • Handle interactive authentication to the user's Antithesis tenant with minimal disruption.
  • Load Antithesis web pages (reports, logs, runs, causality) and extract data from them via an injected runtime.

When to use

  • When another skill needs information from an Antithesis page that snouty cannot reliably provide.
  • When the user or another skill needs to interact with an Antithesis web page directly.

Prerequisites

  • DO NOT PROCEED if agent-browser is not installed. See https://raw.githubusercontent.com/vercel-labs/agent-browser/refs/heads/main/README.md for installation options.
  • DO NOT PROCEED if agent-browser is older than version v0.23.4. You can upgrade with agent-browser upgrade.
  • DO NOT PROCEED if jq is not installed. See https://jqlang.org/download/ for installation options.

Reference files: This skill's references/ directory contains detailed guides for specific tasks. Do NOT read them all up front — only read a reference file when you are told to. Each reference file is mentioned by name at the point where it is needed.

General guidance

  • Always ensure you are authenticated first.
  • Use disposable sessions. Generate a unique SESSION for each invocation of this skill.
  • Inject the runtime after navigation. After every open, after link clicks that may change pages, and after reopening a report from a finding route, wait until networkidle, inject assets/antithesis-agent-browser.js, then use the matching *.waitForReady() method before continuing.
  • Never run agent-browser calls in parallel. They are stateful with side effects.
  • Retry missing-runtime errors by reinjecting. If a command fails because window.__antithesisAgentBrowser is undefined or missing, inject the runtime and rerun the same method.
  • Keep report evals on the main report view. If you click into another page by accident, reopen the original report URL before using report queries again.

Session management with agent-browser

agent-browser has two session variables:

  • --session: the name of a unique, isolated browser instance
  • --session-name: auto-save/restore cookies by name

Every invocation MUST use a unique --session value. Generate it once and reuse it whenever you see $SESSION referenced by this skill.

SESSION=antithesis-ab-$(date +%s)-$$

Use --session-name antithesis on the FIRST agent-browser command that references a new $SESSION. This creates the session and restores saved cookies. Subsequent commands for the same $SESSION do not need --session-name — the session already exists.

Close the live session when done.

agent-browser --session $SESSION close

Authentication

Do NOT navigate to the home page just to check auth. Instead, navigate directly to your target URL (report, runs page, etc.) using the session-creation command:

agent-browser --session "$SESSION" --session-name antithesis open "$TARGET_URL"
agent-browser --session "$SESSION" wait --load networkidle
agent-browser --session "$SESSION" get url

If the URL starts with https://$TENANT.antithesis.com then you are authenticated. If it redirected to a login page, you need to authenticate — read references/setup-auth.md, which gates the interactive headed login on user confirmation.

Runtime injection

This skill ships a runtime (assets/antithesis-agent-browser.js) that exposes helper methods on window.__antithesisAgentBrowser for reading data from Antithesis pages. Inject it after navigation completes:

cat assets/antithesis-agent-browser.js \
  | agent-browser --session "$SESSION" eval --stdin

Call its methods with agent-browser eval:

agent-browser --session "$SESSION" eval \
  "window.__antithesisAgentBrowser.report.getRunMetadata()"

agent-browser eval awaits Promises automatically, so async and sync methods use the same call pattern.

Error handling: Runtime methods throw on error, which causes agent-browser eval to return a non-zero exit code. Check the exit code to detect failures — no output parsing required. The error message describes what went wrong (e.g. wrong page, element not found, timeout).

If window.__antithesisAgentBrowser is missing, reinject assets/antithesis-agent-browser.js and retry.

NEVER run agent-browser calls in parallel. They are stateful calls with side effects; parallel calls can break or return confusing results.

Navigation and loading

Each Antithesis page loads content asynchronously. After navigation to any Antithesis page, follow this pattern:

First, wait for networkidle:

agent-browser --session "$SESSION" wait --load networkidle

Then, check the url to see if you got redirected to an authentication page:

agent-browser --session "$SESSION" get url

If you hit an authentication page, stop and reauthenticate before continuing.

Then, inject the runtime:

cat assets/antithesis-agent-browser.js \
  | agent-browser --session "$SESSION" eval --stdin

Finally, eval the page-specific wait function to wait for all asynchronous chunks to finish loading:

  • Report page: window.__antithesisAgentBrowser.report.waitForReady()
  • Logs page: window.__antithesisAgentBrowser.logs.waitForReady()
  • Runs page: window.__antithesisAgentBrowser.runs.waitForReady()

Each wait method polls for up to 60 seconds by default. On success it returns { attempts, waitedMs }. On timeout, the method throws causing agent-browser eval to return a non-zero exit code.

Use the lower-level boolean checks when you need a one-shot probe:

  • Report page: window.__antithesisAgentBrowser.report.loadingFinished()
  • Logs page: window.__antithesisAgentBrowser.logs.loadingFinished()
  • Runs page: window.__antithesisAgentBrowser.runs.loadingFinished()

If a page still does not become ready, inspect status:

  • Report page: window.__antithesisAgentBrowser.report.loadingStatus()
  • Logs page: window.__antithesisAgentBrowser.logs.loadingStatus()
  • Runs page: window.__antithesisAgentBrowser.runs.loadingStatus()

Handling error reports

After every report waitForReady() call, check result.error. If it is present, read references/error-reports.md for the error-report workflow.

What this skill can do

  1. Authenticate to the tenant. Read references/setup-auth.md for the interactive login flow.
  2. Discover runs from the runs page. Read references/run-discovery-ui.md. Prefer snouty runs list whenever possible — only fall back to the UI when the API is unavailable or doesn't expose what you need.
  3. Read properties from a triage report. Read references/properties-from-ui.md. Prefer snouty runs --json properties whenever possible.
  4. Look up a run_id from a triage-report URL that cannot be matched against snouty runs list. The run_id is rendered at the bottom of the main report page (report_id → run_id is not currently exposed by the API).
  5. Download an error log from a failed run's report page. See references/error-reports.md.
  6. Read a causality report. Ask the user for the causality report URL. The main signal is the bug-probability trajectory in the logs leading up to the bug moment.

Download now (ZIP)

Trending

Quiet since January.thin dataabout the whole repository

Dec 2025: 0 mentionsJan 2026: 14 mentionsFeb 2026: 0 mentionsMar 2026: 0 mentionsApr 2026: 0 mentionsMay 2026: 0 mentionsJun 2026: 0 mentionsJul 2026: 0 mentionsAug 2026: 0 mentionsSep 2026: 0 mentionsOct 2026: 0 mentionsNov 2026: 0 mentions
Dec 2025Jun 2026Nov 2026
Mentions a month of the ghuntley/loom repository that our weekly crawl found: only 14 in all, so this is a hint, not a trend. There is no adoption data for this file yet.

Who's talking about ghuntley/loom

The biggest 5 of 14 mentions linking to the repository that our crawl found. Each line is their own headline.

See all 14

Talked about on GitHub and Hacker News (14 times).

On GitHub · 13

8 more on GitHub

On Hacker News · 1

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.