antithesis-triage
Skill1.6k starsChanged todayMITView on GitHub
Triage Antithesis test reports to understand what happened in a run: look up runs, check status, investigate failed properties (assertions), view metadata, download logs, search events across all timelines, inspect findings, and examine environmental details. Load after a run completes or when investigating a failure.
- Reads credentials
We split this skill into the rules it gives an agent
19 rules. About 0 are common, 7 are distinctive, and 12 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈7
Distinctive · estimate
This author's own choices. Worth a look.
12
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 18
Use this skill to analyze Antithesis test runs.
- Very specific: line 24
DO NOT PROCEED if snouty is not installed.
- Very specific: line 25
DO NOT PROCEED if snouty is older than 0.8.0.
- Distinctive: line 48
Before starting, collect the following from the user:
- Very specific: line 64
Read references/run-discovery.md to get a list of recent runs.
- Very specific: line 72
If the run has a status of "incomplete", refer to the Diagnose incomplete run section below.
- Very specific: line 74
Read references/run-info.md to load information on a run
- Very specific: line 75
If links.triage_report is null/absent in the run-info output, no triage report was generated for this run (typical for cancelled runs and …
- Very specific: line 76
Read references/properties.md to load properties
- Very specific: line 78
Check the instrumentation setup signals — the Software was instrumented and Symbols were uploaded properties.
- Very specific: line 83
Read references/properties.md - use snouty runs --json properties to extract properties with their examples and learn how to download logs
- Very specific: line 84
Read references/logs.md to learn how to understand logs
- Distinctive: line 110
If the "status" of a specific run is "incomplete", there may be an error log to examine.
- Very specific: line 113
Look at the failure_moment structure in the returned JSON.
- Distinctive: line 120
Review logs before concluding on failures: When a failed property has examples with a moment supplied, download + analyze the logs before …
- Distinctive: line 122
Present results clearly: When reporting property statuses, use a table or list.
- Very specific: line 123
Offer the report in a browser; don't paste the signed URL: When the user wants to see the full triage report, suggest snouty runs show …
- Distinctive: line 144
Every property status reported (passed, failed, unfound) was extracted from the actual properties fetch, not inferred or assumed
- Distinctive: line 148
If comparing runs, differences are grounded in data from both reports, not just one
≈ “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.
Files
Antithesis Run Triage
Skill version: 2026-10-15 84b188a
Use this skill to analyze Antithesis test runs.
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.
Prerequisites
- DO NOT PROCEED if
snoutyis not installed. Seehttps://raw.githubusercontent.com/antithesishq/snouty/refs/heads/main/README.mdfor installation options. - DO NOT PROCEED if
snoutyis older than 0.8.0. Usesnouty --versionto find the version. Usesnouty updateto update. - DO NOT PROCEED if
jqis not installed. Seehttps://jqlang.org/download/for installation options.
Preflight: confirm triage can work
The triage skill talks to Antithesis through the snouty API (snouty runs ...). Before doing any work, confirm the setup is ready:
snouty doctor --jsonThis validates API connectivity and reports snouty's resolved configuration.
Proceed only when the top-level ok is true and the api_key check's status is ok. Otherwise relay the failing check's message/notes and stop; if api_key is the failing check, tell the user to set ANTITHESIS_API_KEY.
The settings array in the same output carries snouty's resolved parameters. For example, you can look up the resolved tenant with:
snouty doctor --json | jq -r '.settings[] | select(.name == "tenant") | .value'Gathering user input
Before starting, collect the following from the user:
- Tenant Name (required) — You must know the tenant name. Read snouty's resolved tenant from
snouty doctor --json(see Preflight); snouty resolves it from the environment or a settings file, so trust that value. Only ask the user ifdoctorshows the tenant is unset. - What they want to know — Are they interested in all failures in a specific run? Are they investigating a specific failure? Are they getting a general overview? Comparing runs? This determines which workflow to follow.
How to get information from a run
Your main method to obtain information is to use the snouty runs <OPTION> command with the --json option. The --json option returns line-delimited JSON. The fields in the JSON depend on the option you are using. The same command without --json returns fewer fields in a tabular form better suited for human consumption.
You will need to know the RUN_ID. Read references/run-discovery.md to learn how to obtain the run_id.
Workflows
Summarize recent runs
Read references/run-discovery.md to get a list of recent runs. Then summarize them in a report.
Looking up a specific run
To look up a specific run (report), read references/run-info.md. Then continue with other workflows as needed.
Triage a run
If the run has a status of "incomplete", refer to the Diagnose incomplete run section below.
- Read
references/run-info.mdto load information on a run - If
links.triage_reportis null/absent in the run-info output, no triage report was generated for this run (typical forcancelledruns and someunknown/startingstates). Report that the run is not triageable — the properties and logs endpoints will return 404 for these runs. - Read
references/properties.mdto load properties - Review passed/failed counts
- Check the instrumentation setup signals — the
Software was instrumentedandSymbols were uploadedproperties. Readreferences/instrumentation.mdto interpret them. - Build a detailed summary of the run including a review of all failures as well as flagging any new failures. Include the instrumentation status in the summary.
Investigate failed properties
- Read
references/properties.md- usesnouty runs --json propertiesto extract properties with their examples and learn how to download logs - Read
references/logs.mdto learn how to understand logs For each property to investigate: a. Pick the first failing example b. Find the moment. If the counterexample has no
momentfield (telemetry / meta properties — seereferences/properties.md), report the counterexample value as the evidence and skip steps c–e. c. Download the example's log using the guidance inreferences/logs.mdd. Analyze the downloaded log locally e. If you aren't certain what caused the issue, consider downloading logs from other counterexamples and examples for the same property. Compare each occurrence and try to see if there are any similarities or differences that might explain the failure cause. Logs from passing examples can be useful to compare against to find differences between success and failure cases.To find more passing or failing evaluations of the property, use
snouty runs --json search. Runsnouty runs search --helpfirst: it documents the query language and has ready-to-paste snippets, including one that selects an assertion's evaluations by id. The id is the "name" field in the property data you are investigating; match the "condition" field against the examples or counterexamples you want more of. Results are a sample capped at--limit(default 50), so they show SOME but not necessarily ALL evaluations. The examples and counterexamples you already have will likely be among them; compare each result's moment against the ones you have already downloaded.- Important: Cross-reference the log against the source code of the system under test (SUT) and the workload if you have access to it.
- Deeply investigate the failure to develop an understanding of the timeline of events which led up to and potentially caused it.
- Report your findings.
Important: The property status and assertion text alone are not sufficient — the logs provide the actual runtime context needed to understand the failure.
Search across timelines
A downloaded log covers one history. To answer questions that span every timeline in the run — "did event A always precede failure B?", "does the failure still occur without the preceding fault?", "which container logged this error first?" — use snouty runs --json search. Run snouty runs search --help to learn the query language before writing a query. It covers filtering by log text, container, assertion, and vtime window, combining event sets, and annotating each event with the nearest earlier or later event from another set on the same timeline. Every result carries a moment, so you can download the log leading up to any hit as described in references/logs.md.
Verify instrumentation
To verify that the SUT and the workload are instrumented and that their symbols are registered, read references/instrumentation.md.
Diagnose incomplete run
If the "status" of a specific run is "incomplete", there may be an error log to examine. The steps to triage an "incomplete" status run:
- Do a
snouty runs --json show ${RUN_ID} - Look at the
failure_momentstructure in the returned JSON. If present, use the input_hash and vtime fromfailure_momentto download a log in accordance with the instructions inreferences/logs.md. - Try and obtain the build logs, especially if there is no failure moment, using
snouty runs --json build-logs ${RUN_ID}and look for errors in the build.
Note on
links.triage_report: For incomplete runs, the per-propertypropertiesandlogsendpoints typically return 404, butlinks.triage_reportandfailure_momentmay still be populated inshow. Report whatshowactually contains — do not claim the triage_report link is absent unless that field is null. The triage workflow for incomplete runs isfailure_moment+build-logs, regardless of whether a report URL exists.
General guidance
- Review logs before concluding on failures. When a failed property has examples with a moment supplied, download + analyze the logs before declaring a root cause. Some properties have no examples or logs — for those, the status alone is the evidence.
- For property failures, consider the "details" section if provided. These are curated fields supplied by the property author designed to illuminate the state of the system at the time of failure.
- Present results clearly. When reporting property statuses, use a table or list. When reporting log findings, include the virtual timestamp, source, container, and log text.
- Offer the report in a browser; don't paste the signed URL. When the user wants to see the full triage report, suggest
snouty runs show <RUN_ID> --webrather than printing the longlinks.triage_reportURL.--webworks only when a triage report exists. Seereferences/run-info.md.
Suggesting follow-up skills
End your triage summary with a short "next steps" section that names follow-up skills or additional triage workflows when they would help. Treat these as suggestions for the user, not actions to take automatically — let the user (or their orchestration) decide when to invoke them. If the user has explicitly asked to chain skills (e.g. "run triage and then debug any failing property"), follow their instructions and proceed with the chain.
Skills worth suggesting based on what triage uncovers:
antithesis-research— map the codebase to surface better testable properties. Useful when failures point to systemic gaps in coverage rather than a discrete bug.antithesis-workload— extend or refine assertions, test commands, and logs. Should be suggested whenever all properties are passing to incrementally improve the workload, or when properties are not reachable due to the workload being underpowered. This skill can also be used to add more logging or fix properties to assist with root cause analysis.antithesis-debug— run shell commands inside the run at the failing moment, or an earlier one, withsnouty runs execto inspect container, process, and on-disk state. Useful when log analysis alone hasn't explained the failure. Requires snouty. A finished run needs a debugging session, which uses core hours until it is cancelled.antithesis-mutation-testing— prove the properties can actually fail, by injecting one realistic bug per property and confirming each one fires. Suggest this only when the run came back green (no failing properties, so there is no SUT bug to chase first) and there is no sign the catalog has already been mutation tested — check for a## Falsificationsection in the scratchbook's property evidence files, or anantithesis/scratchbook/mutation-testing/directory. An all-green report is exactly the situation where you cannot tell a well-guarded system from a catalog that would never notice a problem.
Include the data the next skill will need (run_id, property name, moment, etc.) so the user can invoke it without re-discovering context.
Self-Review
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:
- Every property status reported (passed, failed, unfound) was extracted from the actual properties fetch, not inferred or assumed
- Findings reference specific data from the properties data — property names, assertion text, log lines, timestamps
- Failed properties with available logs include actionable context: the assertion text, relevant log lines, and timeline context. Conclusions about failures are grounded in log evidence when logs exist
- The summary distinguishes between what the report shows and what you interpret or recommend
- If comparing runs, differences are grounded in data from both reports, not just one
- Claims that a binary is not instrumented follow
references/instrumentation.mdand do not rest only on the deduplicated examples of theSoftware was instrumentedproperty
Trending
Quiet since January.thin dataabout the whole repository
Who's talking about ghuntley/loom
- A Hacker News story“If your name is not Geoffrey Huntley then do not use loom”Hacker News · Jan 16, 2026 · 2 points
- daydemir/milhouse-go-legacy“Cross-Session Thread Loading & Replay (from Huntley Loom research)”GitHub · Jan 17, 2026
- daydemir/milhouse-go-legacy“Active System Verification Loops (from Huntley Loom research)”GitHub · Jan 17, 2026
- daydemir/milhouse-go-legacy“Meta-Loop Orchestration: Agents Spawning Sub-Loops (exploratory/major from Huntley Loom research)”GitHub · Jan 17, 2026
- daydemir/milhouse-go-legacy“Structured Audit Threads for Agent Decision Trails (from Huntley Loom research)”GitHub · Jan 17, 2026
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
- Jan 17, 2026Cross-Session Thread Loading & Replay (from Huntley Loom research) — daydemir/milhouse-go-legacy0 reactions
- Jan 17, 2026Active System Verification Loops (from Huntley Loom research) — daydemir/milhouse-go-legacy0 reactions
- Jan 17, 2026Meta-Loop Orchestration: Agents Spawning Sub-Loops (exploratory/major from Huntley Loom research) — daydemir/milhouse-go-legacy0 reactions
- Jan 17, 2026Structured Audit Threads for Agent Decision Trails (from Huntley Loom research) — daydemir/milhouse-go-legacy0 reactions
- Jan 17, 2026Server-Side LLM Proxy for Credential Isolation (from Huntley Loom research) — daydemir/milhouse-go-legacy0 reactions
8 more on GitHub
- Jan 17, 2026Secret Wrapper Type for Auto-Redacting (from Huntley Loom research) — daydemir/milhouse-go-legacy0 reactions
- Jan 17, 2026Error Classification with Transient/Quota/Permanent (from Huntley Loom research) — daydemir/milhouse-go-legacy0 reactions
- Jan 17, 2026Thread Persistence with UUID7 & Offline-First Sync (from Huntley Loom research) — daydemir/milhouse-go-legacy0 reactions
- Jan 17, 2026Post-Tool Hook State for Auto-Commit (from Huntley Loom research) — daydemir/milhouse-go-legacy0 reactions
- Jan 17, 2026Snippet-Based File Editing (from Huntley Loom research) — daydemir/milhouse-go-legacy0 reactions
- Jan 17, 2026Proactive OAuth Token Refresh (from Huntley Loom research) — daydemir/milhouse-go-legacy0 reactions
- Jan 17, 2026Multi-Account LLM Pool with Failover & Cooling (from Huntley Loom research) — daydemir/milhouse-go-legacy0 reactions
- Jan 17, 2026Explicit State Machine for Agent Orchestration (from Huntley Loom research) — daydemir/milhouse-go-legacy0 reactions
On Hacker News · 1
- Jan 16, 2026If your name is not Geoffrey Huntley then do not use loom2 points · 1 comment
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 1
- antithesishq/antithesis-skills★ 30492% same
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository31 other files it gives its agents.
- AGENTS.mdAGENTS.md
- antithesis/AGENTS.mdAGENTS.md
- lilly/AGENTS.mdAGENTS.md
- marshall/AGENTS.mdAGENTS.md
- mila/AGENTS.mdAGENTS.md
- protocol/AGENTS.mdAGENTS.md
- susan/AGENTS.mdAGENTS.md
- adr-maintenanceSkill
- antithesis-agent-browserSkill
- antithesis-debugSkill
- antithesis-documentationSkill
- antithesis-feature-workloadSkill
- antithesis-launchSkill
- antithesis-mutation-testingSkill
- antithesis-query-logsSkill
- antithesis-researchSkill
- antithesis-review-inputsSkill
- antithesis-setup-k8sSkill
- antithesis-setupSkill
- antithesis-skills-feedbackSkill
- antithesis-workloadSkill
- architecture-reviewSkill
- buck2Skill
- code-contractsSkill
- covenantSkill
- hegel-elixir-testsSkill
- localizationSkill
- monospace-webSkill
- nix-buildsSkill
- security-auditSkill
- test:triageSkill
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.

