Files
Eric Zakariasson e87eaecc7b Add Ralph Loop plugin (#15)
* Add Ralph Loop plugin

Port of the Ralph Wiggum technique from Claude Code to Cursor.
Runs Cursor in a self-referential loop, feeding the same prompt
back after every turn until a completion condition is met.

Components:
- Stop hook that intercepts session exit and re-injects the prompt
- Setup script for initializing loop state
- Skills for starting, cancelling, and explaining the loop

Co-authored-by: Cursor <cursoragent@cursor.com>

* Comply with Cursor hooks API

- Rewrite hooks.json to Cursor format (version 1, lowercase event
  names, flat structure, loop_limit: null)
- Replace Claude Code stop hook output (decision/block/reason) with
  Cursor's followup_message API
- Add afterAgentResponse hook to detect completion promise without
  depending on transcript format
- Use CURSOR_PROJECT_DIR env var for reliable state file paths
- Remove setup script; ralph-loop skill now instructs the agent to
  create the state file directly
- Update cancel-ralph skill to clean up done flag file

Co-authored-by: Cursor <cursoragent@cursor.com>

* Move state files to .cursor/ralph/ subdirectory

State file: .cursor/ralph/scratchpad.md
Done flag:  .cursor/ralph/done
Cancel cleans up with rm -rf .cursor/ralph

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-11 15:47:59 -08:00

30 lines
776 B
JSON

{
"name": "ralph-loop",
"displayName": "Ralph Loop",
"version": "1.0.0",
"description": "Continuous self-referential AI loops for iterative development, implementing the Ralph Wiggum technique. Run the agent in a while-true loop with the same prompt until task completion.",
"author": {
"name": "Cursor",
"email": "plugins@cursor.com"
},
"homepage": "https://github.com/cursor/plugins",
"repository": "https://github.com/cursor/plugins",
"license": "MIT",
"keywords": [
"ralph",
"loop",
"iteration",
"self-referential",
"automation",
"iterative-development"
],
"category": "developer-tools",
"tags": [
"automation",
"iteration",
"agent-loop"
],
"skills": "./skills/",
"hooks": "./hooks/hooks.json"
}