agentleFS
ghuntleyghuntley/loom/.agents/skills/test-triage/SKILL.md

test:triage

Skill1.6k starsChanged todayMITView on GitHub

This skill should be used when the user asks to "test the triage skill", "run triage tests", "validate antithesis triage", "test:triage", or "smoke test triage". Orchestrates end-to-end testing of the antithesis-triage skill by running real triage operations via sub-agents and reviewing the results for bugs, skill compliance issues, and papercuts.

We split this skill into the rules it gives an agent

20 rules. About 0 are common, 12 are distinctive, and 8 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈12

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 8

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    All triage operations happen inside sub-agents.

    line 18
  2. Distinctive:

    Before starting, verify the same prerequisites the triage skill requires:

    line 23
  3. Very specific:

    If any prerequisite is missing, out of date, or snouty doctor fails, stop and report which ones are unavailable.

    line 35
  4. Distinctive:

    Wait for this sub-agent to finish before proceeding.

    line 65
  5. Distinctive:

    If the sub-agent did not return the NDJSON list, abort.

    line 67
  6. Distinctive:

    Read the sub-agent output.

    line 71
  7. Distinctive:

    Prefer runs whose duration (completed_at − created_at) is under 30 minutes — these are usually setup/early-execution failures, which …

    line 86
  8. Distinctive:

    If no completed run with failing-property moments exists, skip Phase 3a and note this in the final report.

    line 92
  9. Very specific:

    If no incomplete run with a failure_moment exists, skip Phase 3b and note this.

    line 94
  10. Distinctive:

    If no runs exist at all, report that and stop.

    line 96
  11. Distinctive:

    Wait for both sub-agents to complete.

    line 131
  12. Distinctive:

    Before auditing the sub-agent traces, read the triage skill and its references so you can distinguish correct behavior from violations:

    line 137
  13. Very specific:

    Read antithesis-triage/SKILL.md — the main skill protocol

    line 140
  14. Very specific:

    Read antithesis-triage/references/run-discovery.md — how runs are listed and selected

    line 141
  15. Very specific:

    Read antithesis-triage/references/run-info.md — single-run metadata

    line 143
  16. Very specific:

    Read antithesis-triage/references/properties.md — property triage workflow, including how counterexamples and moments map to log downloads

    line 144
  17. Very specific:

    Read antithesis-triage/references/logs.md — log format and jq analysis patterns

    line 147
  18. Distinctive:

    Use these as the ground truth when evaluating compliance.

    line 150
  19. Very specific:

    Do not flag repeated snouty runs invocations against the same run/endpoint as an inefficiency.

    line 228
  20. Distinctive:

    If no issues are found, report "No issues found" — do not pad the report.

    line 259

≈ “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

Test: Antithesis Triage Skill

End-to-end test harness for the antithesis-triage skill. Spawn sub-agents that perform real triage operations against the live Antithesis API via snouty, then review their work for issues.

The top-level agent MUST NOT use the antithesis-triage skill directly. All triage operations happen inside sub-agents. The top-level agent only orchestrates and reviews.

Prerequisites

Before starting, verify the same prerequisites the triage skill requires:

which snouty && which jq && snouty --version

snouty must be at least version 0.8.0. Then confirm credentials with the canonical check (same as the triage skill's preflight):

snouty doctor

If any prerequisite is missing, out of date, or snouty doctor fails, stop and report which ones are unavailable.

Phase 1: Discover Runs

Spawn a general-purpose sub-agent with the Agent tool. Provide these instructions, replacing {{TENANT}} with the actual value of the $ANTITHESIS_TENANT environment variable and {{TRIAGE_SKILL}} with the absolute path to antithesis-triage/SKILL.md in this repository. If $ANTITHESIS_TENANT is empty in the current shell, ask the user for the tenant name instead of aborting.

Read the skill file at {{TRIAGE_SKILL}} and follow its instructions to list
recent runs for the tenant "{{TENANT}}". Follow the "Summarize recent runs"
workflow.

Return the COMPLETE raw NDJSON of `snouty runs --json list -n 200` along
with a per-run summary that includes, for each run:
  - run_id
  - status
  - launcher
  - created_at / completed_at
  - antithesis.test_name and antithesis.description (from parameters)
  - whether links.triage_report is present (triageable yes/no)

Do NOT filter by status — return the full list so the orchestrator can
select targets across statuses.

Wait for this sub-agent to finish before proceeding.

If the sub-agent did not return the NDJSON list, abort.

Phase 2: Select Test Targets

Read the sub-agent output. From the run listing, select two targets:

  1. Completed run with failing properties that have moments.

    • status == "completed"
    • links.triage_report is present
    • At least one failing property with counterexamples[0].moment.input_hash present (i.e., addressable to a moment, not a telemetry/meta property)

    Confirm by calling snouty runs --json properties --failing $RUN_ID and verifying at least one entry has a counterexample with a moment field.

  2. Incomplete run with a failure_moment.
    • status == "incomplete"
    • links.triage_report is present
    • failure_moment is present in snouty runs --json show $RUN_ID
    • Prefer runs whose duration (completed_at − created_at) is under 30 minutes — these are usually setup/early-execution failures, which exercise the diagnose-incomplete path most directly

Rules for missing targets:

  • If no completed run with failing-property moments exists, skip Phase 3a and note this in the final report.
  • If no incomplete run with a failure_moment exists, skip Phase 3b and note this.
  • If no runs exist at all, report that and stop.

Phase 3: Triage Selected Runs

Spawn sub-agents in parallel for each available target. Do NOT instruct sub-agents to report verbosely or tell them they are being tested — this changes their behavior. The orchestrator will read their raw session traces directly in Phase 4.

Phase 3a: Completed run with failing properties

Spawn a general-purpose sub-agent with these instructions (substitute the actual run id and {{TRIAGE_SKILL}} with the absolute path to antithesis-triage/SKILL.md in this repository):

Read the skill file at {{TRIAGE_SKILL}} and follow its instructions to
triage the Antithesis run with run_id {{RUN_ID}}. Investigate the logs of
the failing property most likely to be a SUT bug. Pick any failing property
if you aren't sure. Do NOT explore or analyze any local source code
repositories — only use the snouty API and downloaded logs to perform your
triage.

Phase 3b: Incomplete run

Spawn a general-purpose sub-agent with these instructions (substitute the actual run id and {{TRIAGE_SKILL}} with the absolute path to antithesis-triage/SKILL.md in this repository):

Read the skill file at {{TRIAGE_SKILL}} and follow its instructions to
triage the Antithesis run with run_id {{RUN_ID}}.

Wait for both sub-agents to complete.

Phase 4: Review and Report

Understanding the skill protocol

Before auditing the sub-agent traces, read the triage skill and its references so you can distinguish correct behavior from violations:

  1. Read antithesis-triage/SKILL.md — the main skill protocol
  2. Read antithesis-triage/references/run-discovery.md — how runs are listed and selected
  3. Read antithesis-triage/references/run-info.md — single-run metadata
  4. Read antithesis-triage/references/properties.md — property triage workflow, including how counterexamples and moments map to log downloads
  5. Read antithesis-triage/references/logs.md — log format and jq analysis patterns

Use these as the ground truth when evaluating compliance. If a sub-agent does something that looks unusual, check whether the skill documents it before flagging it as an issue.

Reading sub-agent session traces

The Agent tool returns an agentId for each sub-agent (visible in the result as agentId: <id>). Use the current session's ID and each agentId to read the raw JSONL session traces:

~/.claude/projects/<project-dir>/<session-id>/subagents/agent-<agentId>.jsonl

To find the current session directory, look for the most recently modified directory under ~/.claude/projects/ that contains a subagents/ folder.

Extract all Bash tool calls from each sub-agent trace to see every command and its output:

jq -c 'select(.type == "assistant") | .message.content[]?
  | select(.type == "tool_use" and .name == "Bash") | .input.command' \
  <trace-file>.jsonl

Extract tool results to see command outputs:

jq -c 'select(.type == "user") | .message.content[]?
  | select(.type == "tool_result") | {tool_use_id, content: .content[:500]}' \
  <trace-file>.jsonl

This gives you the complete record of what each sub-agent did — every snouty invocation, every jq query, every script run, every error — without relying on their summaries.

What to look for

Scan the raw traces for issues in these categories:

Bugs — things that are broken:

  • snouty runs invocations that fail with non-timeout errors (404, schema mismatch, unexpected exit codes)
  • The log-download step (snouty runs --json logs ... | jq -s '.') failing, timing out, or returning truncated / partial output
  • jq queries that error out or return null where data should exist
  • Skill-documented commands that do not behave as the skill claims

Compliance violations — the sub-agent did not follow the skill protocol:

  • Reaching for the web UI / curl against the report URL when snouty runs exposes the data
  • Skipping the snouty runs --json show step before triaging
  • Triaging a run with no links.triage_report without first reporting that the run is not triageable
  • Rounding or reformatting input_hash / vtime before passing them to snouty runs --json logs (the skill requires verbatim values)
  • Concluding root cause for a property failure without downloading and inspecting the corresponding log when a moment is available
  • Treating a telemetry/meta property counterexample (non-moment payload, e.g. a scalar or session-id object) as if it had a moment and trying to download logs for it

Inefficiencies — things that work but waste time or tokens:

  • Downloading the same log file repeatedly to the same path
  • Fetching all properties without --failing/--passing filters when only one side is needed
  • Reading large logs into the context window instead of running jq filters against them
  • Steps that required multiple retries (especially >2 retries for the same operation), which usually indicates unclear instructions in the skill

Do not flag repeated snouty runs invocations against the same run/endpoint as an inefficiency. snouty handles caching for repeated calls, so re-issuing the same snouty runs call (e.g. properties, show, build-logs) at different jq depths or filters is fine and is not a sign of a skill problem.

Output Format

Produce a concise report focused on actionable issues only. Do not include sections about what went well, generic suggestions, or broad recommendations. The goal is clear signal on breakage and inefficiency.

Test Summary

  • Tenant tested
  • Runs selected (run_id, status, failing-property counts where applicable)
  • Sub-agents spawned (include agentIds)
  • Any skipped phases and why

Issues

For each issue found, include:

  • Severity: Bug / Compliance / Inefficiency
  • Phase: Which phase the issue occurred in
  • Description: What happened
  • Evidence: Exact commands and outputs from the session trace (quote directly)
  • Fix: Concrete change to make (file + what to change)

Sort by severity (bugs first, then compliance, then inefficiency).

If no issues are found, report "No issues found" — do not pad the report.

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.