🎯

ralph-wiggum

🎯Skill

from fstandhartinger/ralph-wiggum

VibeIndex|
What it does

Autonomously develops software by iteratively implementing and verifying tasks against predefined specifications, using a self-correcting AI-driven development loop that ensures each task meets pre...

ralph-wiggum

Installation

Install skill:
npx skills add https://github.com/fstandhartinger/ralph-wiggum --skill ralph-wiggum
110
Last UpdatedJan 24, 2026

Skill Details

SKILL.md

Overview

# 🧠 Ralph Wiggum

> Autonomous AI coding with spec-driven development

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)

⚠️ Use at your own risk. This tool grants AI agents significant autonomy over your codebase and system. Review all changes and use in isolated environments when possible.

Quick Start

Install as Agent Skill (New!)

```bash

# Using Vercel's add-skill

npx add-skill fstandhartinger/ralph-wiggum

# Using OpenSkills

openskills install fstandhartinger/ralph-wiggum

```

Full Setup with Interview

AI Agent? Start Here:

> Read and execute [INSTALLATION.md](INSTALLATION.md) for a guided setup with interactive interview.

Human Developer? Start Here:

> Read [INSTALL.md](INSTALL.md) for manual setup instructions.

---

What is Ralph Wiggum?

Ralph Wiggum (in this flavour) combines Geoffrey Huntley's original iterative bash loop with SpecKit-style specifications for fully autonomous AI-assisted software development.

Key Features

  • πŸ”„ Iterative Self-Correction β€” Each loop picks ONE task, implements it, verifies, and commits
  • πŸ“‹ Spec-Driven Development β€” Professional specifications with clear acceptance criteria
  • 🎯 Completion Verification β€” Agent only outputs DONE when criteria are 100% met
  • 🧠 Fresh Context Each Loop β€” Every iteration starts with a clean context window
  • πŸ“ Shared State on Disk β€” IMPLEMENTATION_PLAN.md persists between loops

---

How It Works

Based on [Geoffrey Huntley's methodology](https://github.com/ghuntley/how-to-ralph-wiggum):

```

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”

β”‚ RALPH LOOP β”‚

β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€

β”‚ β”‚

β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚

β”‚ β”‚ Orient │───▢│ Pick Task │───▢│ Implement β”‚ β”‚

β”‚ β”‚ Read specs β”‚ β”‚ from Plan β”‚ β”‚ & Test β”‚ β”‚

β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚

β”‚ β”‚ β”‚

β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚

β”‚ β–Ό β”‚

β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚

β”‚ β”‚ Verify │───▢│ Commit │───▢│ Output DONE β”‚ β”‚

β”‚ β”‚ Criteria β”‚ β”‚ & Push β”‚ β”‚ (if passed) β”‚ β”‚

β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚

β”‚ β”‚ β”‚

β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚

β”‚ β–Ό β”‚

β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚

β”‚ β”‚ Bash loop checks for DONE β”‚ β”‚

β”‚ β”‚ If found: next iteration | If not: retry β”‚ β”‚

β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚

β”‚ β”‚

β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

```

The Magic Phrase

The agent outputs DONE ONLY when:

  • All acceptance criteria are verified
  • Tests pass
  • Changes are committed and pushed

The bash loop checks for this phrase. If not found, it retries.

---

Two Modes

| Mode | Purpose | Command |

|------|---------|---------|

| build (default) | Pick spec/task, implement, test, commit | ./scripts/ralph-loop.sh |

| plan (optional) | Create detailed task breakdown from specs | ./scripts/ralph-loop.sh plan |

Planning is OPTIONAL

Most projects work fine directly from specs. The agent simply:

  1. Looks at specs/ folder
  2. Picks the highest priority incomplete spec
  3. Implements it completely

Only use plan mode when you want a detailed breakdown of specs into smaller tasks.

Tip: Delete IMPLEMENTATION_PLAN.md to return to working directly from