agentleFS
okgritokgrit/done-is-a-claim/skills/whose-red/SKILL.md

whose-red

Skill33 starsChanged 34 days agoApache-2.0View on GitHub

Investigate whether a failing test run is caused by a change, was already broken on main, or is inconclusive, using matched branch and clean-main runs. Use when tests fail on a branch or PR, when an agent says 'this failure is pre-existing', or before retrying or reverting a fix.

1 other project uses a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

3 rules. About 0 are common, 3 are distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈3

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Check the paths, dependencies, configuration and relevant diff before assigning cause.

    line 21
  2. Distinctive:

    Match the experiment on both trees: Use the same command, paths, flags and environment.

    line 34
  3. Distinctive:

    Keep a short list of failures observed on main, including their signatures, commands and commits.

    line 66

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 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

Whose red is it

A red says the suite failed, not who failed it. The branch's log alone may not separate "the change is wrong" from "main was already broken". Use a matched control where possible, investigate differences, and report uncertainty before you retry, revert or block on the red.

Procedure

  1. Read the error text first. These errors can point to setup or command problems, but can also result from the change:
    • command not found, exit 127, a missing interpreter or tool;
    • file or directory not found for the test path itself (exit 4 in pytest);
    • no tests ran / nothing collected (exit 5 in pytest);
    • network, disk-full or permission errors. Check the paths, dependencies, configuration and relevant diff before assigning cause. A removed test path, changed tool requirement or broken setup may be a regression. A check that never ran is not a pass.
  2. Prepare a clean control. A scratch worktree detached at an explicit main commit, never your working checkout:

    git fetch origin
    git worktree add --detach ../control origin/main
    cd ../control && git rev-parse HEAD && git status --porcelain

    Quote the printed commit. git status --porcelain must print nothing.

  3. Match the experiment on both trees. Use the same command, paths, flags and environment. If narrowing a full-suite failure to files or tests, rerun that narrowed command on the branch before comparing it with main. If the failure depends on order or shared state, compare the full suite, including its order or seed. Record any unavoidable differences; they limit the verdict.
  4. Compare failure signatures and all failures in the matched scope. Test names alone do not identify a cause. Compare error text, failing assertion and relevant stack or context; check for additional branch failures.

    Control on mainVerdictDo
    Same failure signature on bothEvidence that this failure existed on the tested main commitReport the shared failure; assess extra failures or changed behavior separately; this does not exonerate the whole change
    Extra branch failures or a different signaturePossible additional regressionInvestigate each difference against the diff and matched runs
    Main green, branch redEvidence implicating the change in this scopeInvestigate the cause; repeat matched runs if nondeterminism is plausible
    Outcomes or counts vary between runsNondeterministic or otherwise inconclusiveRecord repeated matched outcomes and investigate variability; do not infer load sensitivity from a count alone
    Files exist only on the branch, or setup prevents comparisonNo direct matched control yetInvestigate the new test or setup; report the comparison as inconclusive rather than assigning cause by construction
  5. Check the base before retrying. Record the branch's base and the main commit tested. If a newer main could matter, test integration in a separate scratch worktree. Do not automatically rebase or modify the owner's branch.
  6. Record both runs. A verdict with one number in it is a guess:

    command/scope: <matched command, environment, order or seed if relevant>
    red: <test id> — <failure signature>; extra branch failures: <ids or none>
    branch <commit>: FAIL   control main <commit>: PASS|FAIL
    verdict: evidence of pre-existing failure | additional regression | environment | inconclusive
    limits: <unmatched conditions, repetitions, or untested scope>

Main's own reds

Keep a short list of failures observed on main, including their signatures, commands and commits. Use it as a lead, not a standing exemption for other branches. Re-check it on the relevant main commit before using it to explain a new red, and retire entries once matched runs show them resolved.

Download now (ZIP)

Does it work?

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

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

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.