stop-thrashing
Skill98 starsChanged 2 months agoMITView on GitHub
Detect when you're iterating without converging — a third attempt at the same failure — and force a zoom-out instead of a fourth variation. Use when consecutive fixes to the same failure haven't worked, when you're re-editing lines you already edited this task, when you catch yourself thinking "maybe it's this instead", or when each attempt is a guess rather than a deduction from new evidence.
In this repository38 other files it gives its agents.
- ambiguity-commitSkill
- api-surface-careSkill
- calibrated-recommendationSkill
- codebase-orientationSkill
- concurrency-reasoningSkill
- config-and-flagsSkill
- context-checkpointSkill
- cross-platform-careSkill
- data-loss-guardSkill
- data-migration-safetySkill
- dependency-changesSkill
- docs-as-contractSkill
- edge-case-sweepSkill
- environment-firstSkill
- error-message-qualitySkill
- escalate-vs-decideSkill
- estimation-and-scopingSkill
- explain-at-the-right-levelSkill
- generalize-the-correctionSkill
- git-hygieneSkill
- incident-diagnosisSkill
- leave-no-messSkill
- llm-app-codeSkill
- numerical-careSkill
- performance-investigationSkill
- perf-sanitySkill
- question-vs-taskSkill
- resource-lifecycleSkill
- reviewing-a-changeSkill
- root-cause-debuggingSkill
- security-reflexesSkill
- subagent-fanoutSkill
- surgical-refactoringSkill
- task-decompositionSkill
- test-designSkill
- untrusted-content-guardSkill
- verify-ui-visuallySkill
- workmanshipSkill
The file
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 1 is distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
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
- Distinctive: line 18
Test before every attempt: what *new* fact is this attempt based on, and where is it in the ledger?
≈ “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.
Files
stop-thrashing
Thrashing is trying variations faster instead of understanding harder. Each iteration adds noise to the diff and anchors you deeper in a wrong frame. Weak recovery looks like a fourth plausible tweak; strong recovery looks like a revert, a new fact, and a single attempt derived from it.
- Keep an attempt ledger. From the second attempt at the same failure, write it down in a scratch file: attempt number, the hypothesis in one sentence, the change made, the observed result. An attempt with no hypothesis line is a guess — it doesn't get made. Re-editing a line you already edited for this failure counts as a new attempt.
- Two failures is the alarm. Attempt three may proceed only if it is derived from new evidence — a log you hadn't read, a value you hadn't inspected, a test you hadn't run — not from "maybe it's this instead" (see root-cause-debugging: one hypothesis, one test).
- On the alarm, stop editing and zoom out. Re-read the original error top to bottom, re-read the failing code fresh, restate the problem in one sentence. Ask the frame-breaking questions in order: Is the file I'm editing the one that actually runs — add a marker and prove it (see environment-first)? Is my model of what this code does verified by a runtime observation, or assumed? Is the bug even in the code I've been looking at?
- Revert the debris before the next attempt. Failed fixes stack: by attempt four the code carries three speculative changes interacting and you're debugging your attempts instead of the bug.
git diffto see what has accumulated,git checkout/git stashback to the last known state, and reapply only what evidence supports. - Change the method, not just the guess. Add instrumentation and read actual runtime values; bisect the input or the commit history; write a minimal reproduction from scratch; explain the problem line by line to an imagined reviewer. Each of these produces a fact; another edit produces only another attempt.
- Set the budget at the alarm. Decide, and write in the ledger, how many more evidence-backed attempts you will make before reporting. Autonomous retrying is right for mechanical obstacles (flaky network, transient lock); it's wrong when each retry is a rewrite. When the budget is spent, report the ledger as-is — what was tried, what each attempt showed, the current best hypothesis and what evidence would settle it — rather than burning the session on variation five (see workmanship).
- Notice the sunk-cost pull. "I've come this far with approach A" is not evidence for approach A. Willingness to discard an hour of work when the frame is wrong is what separates converging from thrashing.
Test before every attempt: what new fact is this attempt based on, and where is it in the ledger? No new fact, no new attempt — go get the fact first.
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
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.

