agrimsingh / ralph-wiggum
Install for your project team
Run this command in your project directory to install the skill for your entire team:
mkdir -p .claude/skills/ralph-wiggum && curl -L -o skill.zip "https://fastmcp.me/Skills/Download/1872" && unzip -o skill.zip -d .claude/skills/ralph-wiggum && rm skill.zip
Project Skills
This skill will be saved in .claude/skills/ralph-wiggum/ and checked into git. All team members will have access to it automatically.
Important: Please verify the skill by reviewing its instructions before using it.
Implements the Ralph Wiggum autonomous iteration technique with deliberate context management. Use when building greenfield projects, iterating on well-defined tasks, or when continuous autonomous development is needed. Manages context like memory - tracks allocations, prevents redlining, and knows when to start fresh.
0 views
0 installs
Skill Content
---
name: ralph-wiggum
description: Implements the Ralph Wiggum autonomous iteration technique with deliberate context management. Use when building greenfield projects, iterating on well-defined tasks, or when continuous autonomous development is needed. Manages context like memory - tracks allocations, prevents redlining, and knows when to start fresh.
license: MIT
compatibility: Designed for Cursor (nightly). Requires bash, jq, git.
metadata:
author: Based on Geoffrey Huntley's Ralph technique
version: "1.0.0"
original: https://ghuntley.com/ralph/
---
# Ralph Wiggum: Autonomous Iteration with Context Engineering
Ralph is a technique for autonomous AI development. In its purest form, Ralph is a loop that repeatedly feeds the same prompt to an AI agent, letting it iterate on a task until completion. The key insight is that **context is like memory** - when you `malloc()` data into the context window, it cannot be `free()`'d except by starting fresh.
## Core Philosophy
> "That's the beauty of Ralph - the technique is deterministically bad in an undeterministic world."
Ralph will make mistakes. That's expected. Each mistake is an opportunity to add a "sign" (guardrail) that prevents that mistake in the future. Like tuning a guitar, you adjust Ralph until it plays the right notes.
### The malloc/free Metaphor
- **Context is memory**: Everything loaded into the LLM's context window stays there
- **You cannot free() context**: The only way to clear context is to start a new conversation
- **One task per context**: Mixed concerns lead to autoregressive failure
- **Don't redline**: Pushing context to limits degrades performance
- **Gutter detection**: Once the bowling ball is in the gutter, start fresh
## How This Skill Works
### State Files (The Persistent Memory)
Ralph tracks state in files, NOT in context:
```
.ralph/
├── state.md # Current iteration, task, completion criteria
├── guardrails.md # Accumulated "signs" from observed failures
├── context-log.md # What's been loaded into context
├── failures.md # Failure patterns for learning
└── progress.md # What's been accomplished
```
### The Iteration Cycle
1. **Read state files** to understand current task and progress
2. **Check guardrails** for relevant "signs" to follow
3. **Work on the task** - implement, test, refine
4. **Update progress** in files (not just context)
5. **Commit checkpoint** via git
6. **Evaluate completion** against criteria
7. **If not complete**: Signal for next iteration
8. **If stuck**: Detect gutter, suggest fresh context
### Guardrails ("Signs")
When Ralph makes a mistake, add a sign:
```markdown
## Sign: Don't Jump Off The Slide
- **Trigger**: When implementing authentication
- **Instruction**: Always validate tokens before trusting claims
- **Added after**: Iteration 5 - security vulnerability introduced
```
Signs accumulate in `guardrails.md` and are injected into future iterations.
## Usage
### Starting a Ralph Loop
Create a `RALPH_TASK.md` file in your project root:
```markdown
---
task: Build a REST API for task management
completion_criteria:
- All CRUD endpoints working
- Input validation implemented
- Tests passing with >80% coverage
- API documentation complete
max_iterations: 50
---
## Requirements
Build a task management API with the following endpoints:
- POST /tasks - Create a task
- GET /tasks - List all tasks
- GET /tasks/:id - Get a task
- PUT /tasks/:id - Update a task
- DELETE /tasks/:id - Delete a task
## Constraints
- Use TypeScript
- Use Express.js
- Use SQLite for storage
- Follow REST conventions
```
Then tell Cursor: "Start a Ralph loop on this task"
### Monitoring Progress
Check `.ralph/progress.md` to see what's been accomplished:
```markdown
## Iteration 1
- Created project structure
- Implemented POST /tasks endpoint
- Status: Partial progress
## Iteration 2
- Added GET endpoints
- Fixed validation bug
- Status: Continuing
```
### When to Start Fresh
Ralph will detect "gutter" situations:
- Same error repeated 3+ times
- Context approaching limits
- Circular failure patterns
When detected, Ralph will suggest: "Context is polluted. Recommend starting fresh conversation."
## Best Practices
### 1. Clear Completion Criteria
❌ Bad: "Make a good API"
✅ Good: "All tests passing, coverage >80%, docs complete"
### 2. Incremental Goals
❌ Bad: "Build complete e-commerce platform"
✅ Good: Phase 1: Auth, Phase 2: Products, Phase 3: Cart
### 3. Let Failures Teach
Don't intervene too quickly. Let Ralph fail, then add signs.
### 4. Trust the Files
Progress is in files and git, not in your head or the context.
### 5. Fresh Context is Cheap
Don't hesitate to start fresh. State persists in files.
## Integration with Cursor Hooks
This skill uses Cursor hooks for:
- **beforeSubmitPrompt**: Inject guardrails and context awareness
- **beforeReadFile**: Track context allocations
- **afterFileEdit**: Update progress tracking
- **stop**: Evaluate completion, trigger next iteration or fresh start
See `scripts/` for hook implementations.
## Learn More
- Original technique: https://ghuntley.com/ralph/
- Context engineering: https://ghuntley.com/gutter/
- malloc/free metaphor: https://ghuntley.com/allocations/