Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Autonomous TDD development loop with parallel agent swarm, category evolution, and convergence detection. Use when running autonomous game development, quality improvement loops, or comprehensive codebase reviews.
.claude/skills/majiayu000-ralph-wiggum-v2/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | 66% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 27% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -5% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 23% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 371% | 0% |
/ralph-wiggum-v2:ralph-loop --project "diablo-starcraft" --completion-promise "DIABLO_STARCRAFT_COMPLETE"Autonomous TDD development loop that uses parallel agent swarms to review code, discover issues, and fix them with test-first methodology until convergence criteria are met.
{project}/.ralph/state.json{project}/.ralph/categories.jsonSpawn 3-5 parallel agents with:
For each finding:
After each iteration:
Complete when:
json{ "project": "diablo-starcraft", "iteration": 0, "consecutiveCleanIterations": 0, "requiredCleanIterations": 10, "completionPromise": "DIABLO_STARCRAFT_COMPLETE", "categories": {}, "discoveryLog": [], "lastReviewStyles": [], "agentHistory": [], "startedAt": "<timestamp>", "lastUpdated": "<timestamp>" }
json{ "categories": { "<category_name>": { "score": 50, "maxScore": 100, "subcategories": { "<subcategory_name>": { "score": 50, "issues": [], "lastReviewed": null, "reviewCount": 0 } }, "discoveredAt": 0, "lastUpdated": "<timestamp>" } } }
| Style | Focus | |-------|-------| | NITPICKER | Formatting, naming, tiny inconsistencies | | REFACTORER | Duplication, abstraction opportunities | | DRY_ENFORCER | Copy-paste code, repeated patterns | | TYPE_ZEALOT | Type safety, any usage, casting | | SOLID_ADHERENT | SOLID principle violations | | API_PURIST | Interface design, contracts, signatures |
| Style | Focus | |-------|-------| | DEBUGGER | Logic errors, off-by-one, wrong operators | | EDGE_CASE_HUNTER | Boundary conditions, null/undefined | | ERROR_HANDLER | Missing try/catch, unhandled promises | | STATE_MACHINE_ANALYST | Invalid state transitions | | CONCURRENCY_EXPERT | Race conditions, async bugs | | MEMORY_LEAK_HUNTER | Listeners not removed, growing arrays |
| Style | Focus | |-------|-------| | PERFORMANCE_HAWK | O(n²), unnecessary renders, hot paths | | ALLOCATION_AUDITOR | Object churn, GC pressure | | RENDER_OPTIMIZER | DOM thrashing, layout thrashing |
| Style | Focus | |-------|-------| | SECURITY_AUDITOR | XSS, injection, unsafe operations | | INPUT_VALIDATOR | Unsanitized user input |
| Style | Focus | |-------|-------| | ARCHITECT | Coupling, cohesion, separation of concerns | | DEPENDENCY_AUDITOR | Circular deps, tight coupling | | LAYER_GUARDIAN | Layer violations, wrong abstractions |
| Style | Focus | |-------|-------| | TEST_SKEPTIC | Coverage gaps, weak assertions | | MUTATION_TESTER | Tests that always pass | | INTEGRATION_ANALYST | Unit vs integration gaps |
| Style | Focus | |-------|-------| | DIABLO_VETERAN | ARPG conventions, loot, skills, combat feel | | STARCRAFT_FAN | Faction identity, unit feel, SC universe | | GAME_FEEL_EXPERT | Juice, polish, responsiveness | | BALANCE_DESIGNER | Numbers, progression, fairness | | PLAYER_PSYCHOLOGY | Motivation, reward loops | | SPEEDRUNNER | Exploits, sequence breaks | | COMPLETIONIST | Missing edge cases in content | | FIRST_TIME_USER | Onboarding, confusion points |
| Style | Focus | |-------|-------| | FRESH_EYES | What would confuse a new developer? | | DOCUMENTATION_STICKLER | Missing/wrong comments | | FUTURE_MAINTAINER | Technical debt accumulation |
json{ "agentId": "<uuid>", "category": "<category>", "subcategory": "<subcategory>", "reviewStyle": "<style>", "filesReviewed": ["<paths>"], "findings": [ { "severity": "critical|major|minor|nitpick", "type": "<issue_type>", "location": "<file:line>", "description": "<what's wrong>", "suggestedFix": "<how to fix>", "requiresTest": true, "testWritten": false, "fixed": false, "newSubcategory": null } ], "scoreAdjustment": 0, "newCategoriesDiscovered": [], "cleanReview": false }
LOOP:
1. Load state from .ralph/state.json
2. Load categories from .ralph/categories.json
3. Increment iteration counter
4. Select 3-5 lowest-scoring categories for review
5. Spawn parallel review agents (use Task tool)
6. Collect findings from all agents
7. Sort findings by severity (critical → major → minor)
8. TDD fix each finding:
a. Write failing test
b. Implement minimal fix
c. Verify test passes
d. Run full test suite
9. Update scores and state
10. Check convergence criteria:
- All agents returned cleanReview: true?
- No critical/major findings?
- All tests passing?
- No new categories discovered?
11. IF clean: consecutiveCleanIterations++
IF dirty: consecutiveCleanIterations = 0
12. IF consecutiveCleanIterations >= 10 AND all scores >= 95:
→ CONVERGED: Run final verification
ELSE: → Continue loopWhen convergence criteria met:
{COMPLETION_PROMISE} achieved| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 16,940 | 16,832 | -1% | 1 | 1 | 0% | 429 | 2,360 | +450% | 0 | 0 | — |
case-02 | fail→fail | 7,384 | 14,867 | +101% | 1 | 1 | 0% | 348 | 2,259 | +549% | 0 | 0 | — |
case-03 | fail→fail | 16,145 | 15,255 | -6% | 1 | 1 | 0% | 146 | 2,324 | +1492% | 0 | 0 | — |
case-04 | fail→fail | 13,958 | 14,463 | +4% | 1 | 1 | 0% | 1,681 | 3,775 | +125% | 0 | 0 | — |
case-05 | fail→fail | 14,824 | 10,611 | -28% | 1 | 1 | 0% | 2,161 | 3,166 | +47% | 0 | 0 | — |
case-06 | fail→pass | 19,513 | 17,747 | -9% | 1 | 1 | 0% | 2,267 | 3,757 | +66% | 0 | 0 | — |
case-07 | fail→pass | 22,450 | 12,012 | -46% | 1 | 1 | 0% | 2,467 | 3,140 | +27% | 0 | 0 | — |
case-08 | fail→pass | 23,488 | 8,351 | -64% | 1 | 1 | 0% | 2,715 | 2,580 | -5% | 0 | 0 | — |
case-09 | pass→pass | 20,167 | 18,095 | -10% | 1 | 1 | 0% | 2,305 | 4,630 | +101% | 0 | 0 | — |
case-18 | fail→pass | 18,923 | 8,176 | -57% | 1 | 1 | 0% | 2,182 | 2,683 | +23% | 0 | 0 | — |
case-10 | fail→fail | 12,266 | 5,340 | -56% | 1 | 1 | 0% | 1,085 | 3,049 | +181% | 0 | 0 | — |
case-11 | fail→pass | 4,315 | 6,149 | +43% | 1 | 1 | 0% | 700 | 3,294 | +371% | 0 | 0 | — |
case-12 | fail→pass | 21,113 | 12,932 | -39% | 1 | 1 | 0% | 2,408 | 4,165 | +73% | 0 | 0 | — |
case-13 | fail→pass | 10,370 | 7,013 | -32% | 1 | 1 | 0% | 1,696 | 3,351 | +98% | 0 | 0 | — |
case-14 | fail→fail | 18,664 | 4,286 | -77% | 1 | 1 | 0% | 1,894 | 2,760 | +46% | 0 | 0 | — |
case-15 | pass→pass | 4,888 | 8,292 | +70% | 1 | 1 | 0% | 708 | 2,662 | +276% | 0 | 0 | — |
case-16 | fail→pass | 23,685 | 10,056 | -58% | 1 | 1 | 0% | 3,233 | 2,506 | -22% | 0 | 0 | — |
case-17 | fail→pass | 19,303 | 10,071 | -48% | 1 | 1 | 0% | 2,300 | 3,001 | +30% | 0 | 0 | — |
case-19 | fail→pass | 13,759 | 1,967 | -86% | 1 | 1 | 0% | 624 | 2,346 | +276% | 0 | 0 | — |
case-20 | pass→pass | 14,771 | 7,249 | -51% | 1 | 1 | 0% | 1,728 | 3,418 | +98% | 0 | 0 | — |
case-21 | pass→fail | 9,858 | 4,338 | -56% | 1 | 1 | 0% | 978 | 2,326 | +138% | 0 | 0 | — |
case-22 | pass→pass | 9,076 | 9,897 | +9% | 1 | 1 | 0% | 840 | 2,837 | +238% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 17 counted toward the lift figure. The other 5 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +41 percentage points is the difference between those two pass rates over the 17 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.