Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Autonomous AI coding orchestration using the Ralph Wiggum technique and Ralphy CLI. This skill should be used when running AI agents in continuous loops until tasks complete, orchestrating multi-task development with PRD/YAML files, configuring parallel agent execution, or implementing the Ralph Wiggum autonomous development methodology. Triggers on mentions of ralphy, ralph, autonomous loops, PRD-driven development, or multi-agent orchestration.
.claude/skills/majiayu000-ralphy/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 76% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 15% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 130% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 41% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 60% | 0% |
Ralphy is an autonomous AI coding orchestrator that runs agents on tasks until done. Built on Geoffrey Huntley's Ralph Wiggum technique - a continuous loop methodology where AI agents iterate until completion.
bash# Single task ralphy "add dark mode" # From PRD/YAML ralphy --prd PRD.md ralphy --yaml tasks.yaml # Parallel execution ralphy --parallel --max-parallel 5 # With branches and PRs ralphy --branch-per-task --create-pr
The foundational principle: run an AI agent in a loop until the job is done.
bash# Minimal form while :; do cat PROMPT.md | claude ; done
Key insight: Failures inform improvements. When Ralph fails, tune the prompts like a guitar - add specific guidance based on observed failure patterns.
Markdown PRD (checkbox format):
markdown## Tasks - [ ] create auth system - [ ] add dashboard - [x] completed task (skipped)
YAML format:
yamltasks: - title: create auth completed: false parallel_group: 1 - title: add dashboard completed: false parallel_group: 2
GitHub Issues:
bashralphy --github owner/repo --github-label "ready"
Run multiple agents simultaneously with isolation:
bashralphy --parallel # 3 agents default ralphy --parallel --max-parallel 5 ralphy --parallel --sandbox # Lightweight sandboxes for large repos
Each agent gets:
ralphy/agent-N-task-slugParallel Groups in YAML control execution order:
yamltasks: - title: Create User model parallel_group: 1 - title: Create Post model parallel_group: 1 # Runs with above - title: Add relationships parallel_group: 2 # Waits for group 1
bashralphy --branch-per-task # One branch per task ralphy --branch-per-task --create-pr # Plus pull requests ralphy --branch-per-task --draft-pr # Draft PRs ralphy --base-branch main # Branch from specific base
bashralphy "task" # Claude Code (default) ralphy --opencode "task" # OpenCode ralphy --cursor "task" # Cursor ralphy --codex "task" # Codex ralphy --qwen "task" # Qwen-Code ralphy --copilot "task" # GitHub Copilot
Model override:
bashralphy --model sonnet "task" ralphy --sonnet "task" # Shortcut
Pass args to engine:
bashralphy --claude "task" -- --no-permissions-prompt
Initialize with auto-detection:
bashralphy --init
Creates .ralphy/config.yaml:
yamlproject: name: "my-app" language: "TypeScript" framework: "Next.js" commands: test: "npm test" lint: "npm run lint" build: "npm run build" rules: - "use server actions not API routes" - "follow error pattern in src/utils/errors.ts" boundaries: never_touch: - "src/legacy/**" - "*.lock" capabilities: browser: "auto" notifications: discord_webhook: "https://discord.com/..." slack_webhook: "https://hooks.slack.com/..."
Add rules dynamically:
bashralphy --add-rule "always use TypeScript strict mode"
| Flag | Purpose | |------|---------| | --prd PATH | Task file/folder (default: PRD.md) | | --yaml FILE | YAML task file | | --github REPO | Use GitHub issues | | --parallel | Run parallel agents | | --max-parallel N | Max agents (default: 3) | | --sandbox | Lightweight sandboxes vs worktrees | | --branch-per-task | One branch per task | | --create-pr | Create pull requests | | --draft-pr | Create draft PRs | | --no-merge | Skip auto-merge in parallel | | --no-tests | Skip tests | | --no-lint | Skip linting | | --fast | Skip tests and lint | | --no-commit | Don't auto-commit | | --max-iterations N | Stop after N tasks | | --max-retries N | Retries per task (default: 3) | | --dry-run | Preview only | | --browser | Enable browser automation | | -v, --verbose | Debug output |
For advanced usage implementing the full Ralph Wiggum technique:
See references/ralph_loop_pattern.md for:
Critical: Running with --dangerously-skip-permissions requires sandboxing.
--max-iterations (e.g., 20-50) to prevent runaway costsgit reset --hard revertsAgent stuck in loop: Check if task is too vague. Add specific acceptance criteria.
Merge conflicts in parallel: Use --no-merge and resolve manually, or let AI resolve.
Rate limits: Ralphy detects and defers tasks on quota errors.
Tests failing: Ensure commands.test in config matches your test runner.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 11,802 | 9,025 | -24% | 1 | 1 | 0% | 1,341 | 2,362 | +76% | 0 | 0 | — |
case-07 | fail→pass | 15,588 | 7,230 | -54% | 1 | 1 | 0% | 1,730 | 1,995 | +15% | 0 | 0 | — |
case-02 | fail→pass | 9,705 | 8,615 | -11% | 1 | 1 | 0% | 973 | 2,234 | +130% | 0 | 0 | — |
case-03 | fail→pass | 14,724 | 9,824 | -33% | 1 | 1 | 0% | 1,788 | 2,523 | +41% | 0 | 0 | — |
case-04 | fail→pass | 13,356 | 3,418 | -74% | 1 | 1 | 0% | 1,330 | 2,129 | +60% | 0 | 0 | — |
case-05 | fail→pass | 7,677 | 8,044 | +5% | 1 | 1 | 0% | 1,346 | 2,092 | +55% | 0 | 0 | — |
case-06 | fail→pass | 27,911 | 9,308 | -67% | 1 | 1 | 0% | 1,263 | 2,377 | +88% | 0 | 0 | — |
case-08 | pass→pass | 12,185 | 7,416 | -39% | 1 | 1 | 0% | 1,213 | 2,020 | +67% | 0 | 0 | — |
case-09 | fail→pass | 10,374 | 6,598 | -36% | 1 | 1 | 0% | 1,693 | 1,864 | +10% | 0 | 0 | — |
case-10 | pass→pass | 9,218 | 2,033 | -78% | 1 | 1 | 0% | 694 | 1,923 | +177% | 0 | 0 | — |
case-11 | fail→pass | 7,812 | 8,789 | +13% | 1 | 1 | 0% | 1,348 | 2,314 | +72% | 0 | 0 | — |
case-12 | pass→pass | 5,887 | 8,484 | +44% | 1 | 1 | 0% | 1,001 | 2,160 | +116% | 0 | 0 | — |
case-13 | pass→pass | 11,431 | 4,175 | -63% | 1 | 1 | 0% | 2,011 | 2,350 | +17% | 0 | 0 | — |
case-14 | pass→pass | 13,713 | 2,384 | -83% | 1 | 1 | 0% | 1,493 | 1,977 | +32% | 0 | 0 | — |
case-15 | pass→pass | 18,068 | 2,155 | -88% | 1 | 1 | 0% | 3,102 | 1,908 | -38% | 0 | 0 | — |
case-16 | fail→pass | 11,325 | 8,750 | -23% | 1 | 1 | 0% | 2,019 | 2,195 | +9% | 0 | 0 | — |
case-17 | pass→pass | 5,521 | 7,321 | +33% | 1 | 1 | 0% | 925 | 1,989 | +115% | 0 | 0 | — |
case-18 | pass→pass | 7,163 | 7,259 | +1% | 1 | 1 | 0% | 1,211 | 1,927 | +59% | 0 | 0 | — |
case-19 | pass→pass | 3,897 | 4,437 | +14% | 1 | 1 | 0% | 730 | 2,359 | +223% | 0 | 0 | — |
case-20 | pass→pass | 3,932 | 3,573 | -9% | 1 | 1 | 0% | 621 | 2,210 | +256% | 0 | 0 | — |
case-21 | pass→pass | 8,664 | 8,797 | +2% | 1 | 1 | 0% | 1,440 | 2,267 | +57% | 0 | 0 | — |
case-22 | pass→pass | 3,937 | 2,031 | -48% | 1 | 1 | 0% | 621 | 1,963 | +216% | 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 21 counted toward the lift figure. The other 1 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 +45 percentage points is the difference between those two pass rates over the 21 comparable cases.
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.