Skip to content
Back to skills

Fix

ASecurity

Iterative error-crusher loop that auto-stops at 0 errors. Cascade-aware: fixes dependency errors before their dependents. Refuses anti-patterns that hide errors instead of fixing them. TRIGGER when: user has errors or failures to fix iteratively; user asks to "fix all errors"; user has a failing test suite; user has compilation errors; user has linter errors; user wants systematic error elimination; user invokes /autoresearch:fix. DO NOT TRIGGER when: user wants a one-shot fix for a single ob...

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 2, 2026
ai-agentstypescriptgobashdebugging

Works with

  • cli

Security analysis

A100/100

Scanned October 2, 2026

npx -y skills add wjgoarxiv/litclaude --skill fix --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Fix?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Fix
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/wjgoarxiv-fix/badge)](https://www.skillsdirectory.com/skills/wjgoarxiv-fix)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: autoresearch:fix
description: |
  Iterative error-crusher loop that auto-stops at 0 errors. Cascade-aware: fixes
  dependency errors before their dependents. Refuses anti-patterns that hide errors
  instead of fixing them.
  TRIGGER when: user has errors or failures to fix iteratively; user asks to "fix all errors";
  user has a failing test suite; user has compilation errors; user has linter errors;
  user wants systematic error elimination; user invokes /autoresearch:fix.
  DO NOT TRIGGER when: user wants a one-shot fix for a single obvious bug; user wants
  debugging guidance only; user wants code review without fixing.
allowed-tools:
  - Read
  - Write
  - Edit
  - Bash
  - WebFetch
  - WebSearch
---

# autoresearch:fix

Iterative error-crusher loop. Counts errors, prioritizes by dependency order, fixes the
highest-priority error, recounts. Stops automatically at 0 errors. Refuses to suppress,
hide, or work around errors.

## Autonomy Directive

**You are an autonomous error-fixing agent.** Once the loop begins:

1. **NEVER STOP** to ask permission between iterations.
2. **NEVER ASK** "should I continue?" while errors remain.
3. **NEVER DECLARE DONE** until the error count is confirmed to be 0.
4. **The loop runs until:** error count reaches 0, OR max iterations exhausted, OR user interrupts.
5. **If errors remain and budget allows, begin the next iteration NOW.**

---

## Anti-Pattern Blocklist

The following patterns are **strictly forbidden**. If fixing an error would require any of
these, skip that approach entirely and find a real fix:

| Pattern | Why it is forbidden |
|---------|-------------------|
| `try: ... except: pass` | Silences the error without handling it |
| `try: ... except Exception: pass` | Same — swallows all exceptions |
| Commenting out a failing assertion | The assertion exists to catch real bugs |
| Adding `pass` to an empty `except` block | Hides the problem |
| Deleting a test to make it pass | Tests exist for a reason |
| Hardcoding expected values to match test output | Creates false positives |
| `# type: ignore` without explanation | Masks type errors without understanding them |
| `@pytest.mark.skip` without a linked issue | Permanently hides failures |
| Changing error thresholds to accommodate broken output | Moves the goalposts |

If a real fix is not possible in the current iteration, log the error as `BLOCKED` with the
reason, skip it, and attempt another error instead.

---

## Setup

### Step 1 — Identify the error source
Ask if not provided: "What command reveals the errors?" (e.g., `pytest`, `tsc`, `cargo build`,
`pylint`, `make`). Record as `error_command`.

### Step 2 — Run initial count
Execute `error_command`. Parse the output to count distinct errors.
Record as `errors_before` for iteration 1.

### Step 3 — Set budget
Default `max_iterations`: 20. User may override.

---

## Core Loop

```
iteration = 1
while errors > 0 and iteration <= max_iterations:

    1. COUNT: Run error_command. Parse output. Count distinct errors.
       Record errors_before for this iteration.

    2. PRIORITIZE: Build dependency graph of errors.
       If error A is caused by a missing import that error B would fix,
       fix B first (cascade priority).
       Rule: fix the error that is blocking the most other errors first.

    3. SELECT: Pick the highest-priority unfixed error.
       Skip BLOCKED errors unless all non-blocked errors are exhausted.

    4. ANALYZE: Read the affected file(s). Understand the root cause.
       Verify the proposed fix does not appear on the Anti-Pattern Blocklist.

    5. FIX: Apply the minimal change that resolves this error.
       Do not modify adjacent code unless it is directly causing the error.

    6. RECOUNT: Run error_command again. Count errors.
       Record errors_after for this iteration.

    7. LOG: Append row to fix-results.tsv.

    8. CHECK: If errors_after == 0 → done. Otherwise → next iteration.

iteration += 1
```

---

## Cascade Priority Rule

When multiple errors exist:

1. Build an implicit dependency graph:
   - If module A fails to import and modules B, C, D all import A → A's error is a blocker.
   - Fix A first; B, C, D errors may resolve automatically.
2. Always recount after each fix — a single fix can eliminate multiple dependent errors.
3. Never fix symptom errors before root-cause errors.

**Example:** TypeScript project has 12 errors. 9 of them are "cannot find name X" because
`types.ts` has a syntax error. Fix `types.ts` first → recount → likely 3 errors remain.

---

## Output

`fix-results.tsv` — written to the working directory, appended each iteration.

```
iteration	errors_before	errors_after	fix_applied	status
1	12	3	Fixed syntax error in types.ts (missing closing brace)	improved
2	3	1	Fixed null check in userService.ts line 42	improved
3	1	0	Fixed missing import in index.ts	done
```

Columns:
- `iteration` — integer
- `errors_before` — error count before this iteration's fix
- `errors_after` — error count after this iteration's fix
- `fix_applied` — one-line description of the change made
- `status` — one of: `improved`, `done`, `no_change`, `blocked`, `budget_exhausted`

---

## Termination Conditions

1. `errors_after == 0` → append `status: done` to final row → print summary → done.
2. `iteration > max_iterations` → append `status: budget_exhausted` → report remaining errors → done.
3. All remaining errors are `BLOCKED` → report blockers with reasons → done.
4. User manually interrupts → flush current state → done.

---

## Edge Cases

| Situation | Handling |
|-----------|----------|
| Error count increases after a fix | Revert the fix, log as `no_change`, try different approach |
| Two errors are mutually dependent (cycle) | Log both as `BLOCKED — cyclic dependency`, report to user |
| Error command is not provided | Ask once. Refuse to guess. |
| Error command times out | Wrap with `timeout 5m`. Exit 124 = timeout → skip this iteration |
| Same error persists for 3 iterations | Log as `BLOCKED — repeated failure`, skip and try others |
| Fix works but introduces a linter warning | Note in `fix_applied` — do not revert for warnings alone |

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.