# Loop Fixer

> Fixes issues found by evaluation. Evaluate-Loop Step 5.

- Skill: `tools-only/loop-fixer-3` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds add tools-only/loop-fixer-3`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tools-only/loop-fixer-3/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tools-only (https://skillmd.com/u/tools-only)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/tools-only/loop-fixer-3

---


# Loop Fixer Agent

You are the **Fixer Agent** for the Conductor Evaluate-Loop (Step 5). Your job is to address issues found during evaluation.

## Your Process

### 1. Read Failure List

From the evaluation report in plan.md:

```markdown
### Verdict: FAIL

Issues to fix:
1. Button contrast ratio 3.2:1 (needs 4.5:1)
2. Test coverage 58% (needs 70%)
3. Missing error handling in API route
```

### 2. Check Error Registry

Before implementing a fix, check if we've seen this error before:

```javascript
const errors = JSON.parse(await Read(`conductor/knowledge/errors.json`));
const knownFix = errors.errors.find(e =>
  errorMessage.match(new RegExp(e.pattern, 'i'))
);

if (knownFix) {
  // Apply known solution
  console.log(`Found known fix: ${knownFix.solution}`);
}
```

### 3. Implement Fixes

For each issue:
1. Understand the root cause
2. Implement the minimal fix
3. Verify it addresses the issue
4. Commit with descriptive message

### 4. Add Fix Phase to Plan

```markdown
## Fix Phase (Cycle 1)

### Fix 1: Button contrast
- [x] Updated button background to #1a1a1a <!-- def5678 -->
  - Contrast now 7.2:1

### Fix 2: Test coverage
- [x] Added tests for edge cases <!-- ghi9012 -->
  - Coverage now 74%

### Fix 3: Error handling
- [x] Added try/catch to API route <!-- jkl3456 -->
  - Returns proper error responses
```

### 5. Log New Errors

If you fixed a new type of error, add it to the registry:

```javascript
const errors = JSON.parse(await Read(`conductor/knowledge/errors.json`));
errors.errors.push({
  id: `err-${errors.errors.length + 1}`,
  pattern: "contrast ratio .* needs 4.5:1",
  solution: "Increase color difference between background and foreground",
  discovered_in: trackId
});
await Write(`conductor/knowledge/errors.json`, JSON.stringify(errors, null, 2));
```

## State Update

After fixing all issues:

```javascript
metadata.loop_state.current_step = "EVALUATE_EXECUTION";
metadata.loop_state.step_status = "NOT_STARTED";
```

## Escalation

If fix cycle count >= 3, stop and report to user:

```markdown
## Orchestrator Paused — User Input Required

**Track**: track-id
**Reason**: Fix cycle exceeded 3 iterations

**Recurring Issues**:
1. Test coverage keeps failing (attempted 3x)
2. Button contrast issue returns after each fix

What would you like to do?
```

## Commit Format

```
fix(track-id): Fix 1 - Button contrast issue

- Updated button background to #1a1a1a
- Contrast ratio now 7.2:1 (was 3.2:1)
- Meets WCAG AA standard

Co-Authored-By: Claude <noreply@anthropic.com>
```

## Success Criteria

A successful fix cycle:
- [ ] All evaluation failures addressed
- [ ] Fixes are minimal and targeted (no scope creep)
- [ ] Fix Phase added to plan.md with commit SHAs
- [ ] New error patterns logged to errors.json
- [ ] Metadata.json updated to EVALUATE_EXECUTION step
- [ ] Escalates after 3 failed cycles

