Triage Antithesis test reports to understand what happened in a run: look up runs, check status, investigate failed properties (assertions), view metadata, download logs, inspect findings, and examine environmental details. Load after a run completes or when investigating a failure.
88
85%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Advisory
Suggest reviewing before use
Use this skill to read and triage Antithesis test reports.
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.
snouty is not installed. See https://raw.githubusercontent.com/antithesishq/snouty/refs/heads/main/README.md for installation options.agent-browser is not installed. See https://raw.githubusercontent.com/vercel-labs/agent-browser/refs/heads/main/README.md for installation options.agent-browser is older than version v0.23.4. You can upgrade with agent-browser upgrade.jq is not installed. See https://jqlang.org/download/ for installation options.Before starting, collect the following from the user:
https://TENANT.antithesis.com/... or just the tenant name. If neither is provided, check the $ANTITHESIS_TENANT environment variable. Only ask the user if you can't guess the tenant name.agent-browseragent-browser has two session variables:
--session: the name of an unique, isolated browser instance--session-name: auto-save/restore cookies by nameEvery triage run MUST use a unique --session value. Generate this variable once and reuse it whenever you see $SESSION referenced by this skill.
SESSION=`antithesis-triage-$(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.
Make sure you close the unique live session when triage is complete.
agent-browser --session $SESSION closeDo 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 urlIf 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.
The triage skill makes heavy use of an injected runtime API. Inject the runtime into the current page after navigation completes:
cat assets/antithesis-triage.js \
| agent-browser --session "$SESSION" eval --stdinThe runtime registers methods on window.__antithesisTriage. Call those methods with agent-browser eval.
Method call pattern:
agent-browser --session "$SESSION" eval \
"window.__antithesisTriage.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.__antithesisTriage is missing, inject assets/antithesis-triage.js and retry the method call.
NEVER run agent-browser calls in parallel. They are stateful calls with side-effects, thus parallel calls can break or return confusing results.
Each Antithesis page loads in content async. After navigation to any Antithesis page, follow this pattern:
First, wait for networkidle:
agent-browser --session "$SESSION" wait --load networkidleThen, check the url to see if you got redirected to an authentication page:
agent-browser --session "$SESSION" get urlIf you hit an authentication page, stop and reauthenticate before continuing.
Then, inject the runtime:
cat assets/antithesis-triage.js \
| agent-browser --session "$SESSION" eval --stdinFinally, eval the page-specific wait function to wait for all asynchronous chunks to finish loading:
window.__antithesisTriage.report.waitForReady()window.__antithesisTriage.logs.waitForReady()window.__antithesisTriage.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:
window.__antithesisTriage.report.loadingFinished()window.__antithesisTriage.logs.loadingFinished()window.__antithesisTriage.runs.loadingFinished()If the report page still does not become ready, inspect status:
window.__antithesisTriage.report.loadingStatus()window.__antithesisTriage.logs.loadingStatus()window.__antithesisTriage.runs.loadingStatus()After every report waitForReady() call, check result.error. If it is
present, read references/error-reports.md for the error report workflow.
Read references/run-discovery.md to get a list of recent runs. Then summarize them in a report.
To lookup a specific run (report), read references/run-discovery.md. Then continue with other workflows as needed.
Make sure NOT to filter by text or status unless explicitly asked. If you are trying to find the most recent run for a project, just look at recent runs with any status first. Only filter by text or status if you can't find what you are looking for.
references/run-info.md to load information on a runreferences/properties.md to load propertiesreferences/properties.md - use getPropertyExamples() to extract properties with their examples and learn how to download logsreferences/logs.md to learn how to understand logsgetExampleLogsUrl(propertyName, index) to get the example's log URL
c. Download the example's log using download-logs.sh
d. Analyze the downloaded log locally
e. If you aren't certain what caused the issue, consider downloading another example's log from the same property. Passing logs can be useful to compare against.Important: Make sure you download and review example logs and the source code of the SUT if you have access to it. The property status and assertion text alone are not sufficient — the logs provide the actual runtime context needed to understand the failure.
When you suspect a failure might be a cascade from an earlier failure (e.g.,
property X always fails after property Y), do not rely on a handful of
examples from the triage report. A few examples can mislead — use the
antithesis-query-logs skill to test the hypothesis across all timelines:
antithesis-query-logs to count total failures of the target propertyDo not generalize from a small sample. If you inspect 2-3 examples in the triage log viewer and they all show the same upstream failure, that does not mean all instances are cascades. The temporal query gives you the true count.
SESSION for each triage run.open, after link clicks that may change pages, and after reopening the report from a finding route, wait until networkidle, inject assets/antithesis-triage.js, then use the matching *.waitForReady() method before continuing.agent-browser calls in parallel.window.__antithesisTriage is undefined or missing, inject the runtime and rerun the same method.antithesis-query-logs skill's temporal queries to determine the true scope. Do not conclude from a few triage examples — the Logs Explorer searches all timelines and gives exact counts.Before declaring this skill complete, review your work against the criteria below. This skill's output is conversational (summaries, tables, analysis), so the review should happen in your current context. Re-read the guidance in this file, then systematically check each item below against the answers and analysis you produced.
Review criteria:
a851a75
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.