Help us improve
Share bugs, ideas, or general feedback.
Iterative development loops for Claude Code
npx claudepluginhub Ilm-Alan/claude-devloopIterative development loops for Claude Code - run Claude in a while-true loop with the same prompt until task completion, allowing self-referential improvement through file and git history.
Official prompts.chat marketplace - AI prompts, skills, and tools for Claude Code
Behavioral guidelines to reduce common LLM coding mistakes, derived from Andrej Karpathy's observations
Open Design — local-first design app exposed to coding agents over MCP. Install once with your agent's plugin command and projects/files/skills are reachable through stdio.
Share bugs, ideas, or general feedback.
An iterative development loop plugin for Claude Code. Evolved from ralph-loop with significant improvements for reliability, multi-session support, and anti-cheat enforcement.
Ralph-loop pioneered the concept of self-referential Claude loops, but had limitations. Loop improves on it with:
-m, -c) alongside long forms/plugin marketplace add Ilm-Alan/claude-loop
/plugin install loop@claude-loop
# Basic loop with iteration limit
/loop:start Build a REST API for todos -m 10
# Loop with completion promise (exits when genuinely true)
/loop:start Fix all type errors -c 'Zero TypeScript errors in build'
# Both options
/loop:start Implement auth -m 20 -c 'Login and logout working with tests'
| Flag | Long form | Description |
|---|---|---|
-m N | --max-iterations N | Stop after N iterations (default: unlimited) |
-c 'text' | --completion-promise 'text' | Exit early when statement is true |
/loop:start <prompt> [options] - Start a loop/loop:stop - Stop the active loop (user-only, not exposed to Claude)Each iteration, Claude must:
Short responses, summaries, or "complete" without changes are explicitly prohibited.
Set a completion promise for goal-oriented loops:
/loop:start Implement user registration -c 'Registration flow complete with validation'
Claude exits by outputting: <promise>Registration flow complete with validation</promise>
Claude is explicitly instructed:
The stop hook reminds Claude each iteration:
Loop iteration 3 | To exit: output <promise>TEXT</promise> (ONLY when statement is TRUE - do not lie to exit!)
Unlike ralph-loop's global state file, loop creates unique state files per session:
.claude/loop-1704067200-12345-9876.local.md
.claude/loop-1704067300-12346-5432.local.md
Each session is isolated via transcript path matching, so multiple Claude instances can run loops in the same directory without conflicts.
This prevents the race conditions and cross-session interference that plague global state approaches.
claude-loop/
├── .claude-plugin/
│ └── marketplace.json # Marketplace manifest
├── README.md # This file
└── loop/ # The plugin
├── .claude-plugin/
│ └── plugin.json # Plugin manifest
├── commands/
│ ├── start.md # /loop:start - comprehensive workflow instructions
│ └── stop.md # /loop:stop - user-initiated stop
├── hooks/
│ ├── hooks.json # Hook configuration (claim + stop)
│ ├── claim-hook.sh # Claims state files on UserPromptSubmit
│ └── stop-hook.sh # Intercepts exit, feeds prompt back
└── scripts/
├── setup-loop.sh # Argument parsing, state file creation
└── stop-loop.sh # Removes state file for current session
---
active: true
iteration: 3
max_iterations: 10
completion_promise: "All tests passing"
transcript_path: "/path/to/session/transcript.jsonl"
term_session_id: "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
started_at: "2024-01-01T12:00:00Z"
---
Your task prompt here