skills/ralph-loop/SKILL.md
Guide OpenClaw agents to execute Ralph Wiggum loops using exec and process tools. Agent orchestrates coding agents (Codex, Claude Code, OpenCode, Goose) with proper TTY support via pty:true. Plans/builds code via PROMPT.md + AGENTS.md, SPECS and IMPLEMENTATION_PLAN.md. Includes PLANNING vs BUILDING modes, backpressure, sandboxing, and completion conditions. Users request loops, agents execute using tools.
npx skillsauth add addozhang/openclaw-forge ralph-loopInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill guides OpenClaw agents to execute Ralph Loop workflows using the exec and process tools. The agent orchestrates AI coding agent sessions following the Ralph playbook flow:
specs/*.mdIMPLEMENTATION_PLAN.md (do not implement)The loop persists context via PROMPT.md + AGENTS.md (loaded each iteration) and the plan/specs on disk.
This skill generates instructions for OpenClaw agents to execute Ralph Loops using the exec and process tools.
exec tool with the coding agent commandpty: true to provide TTY for interactive CLIsbackground: true for monitoring capabilitiesprocess tool to monitor progress and detect completionImportant: Users don't run these scripts directly - the OpenClaw agent executes them using its tool capabilities.
Some coding agents require a real terminal (TTY) to work properly, or they will hang:
Interactive CLIs (need TTY):
Non-interactive CLIs (file-based):
Solution: Use exec + process mode for interactive CLIs, simple loops for file-based tools.
For OpenCode, Codex, Claude Code, Pi, and Goose - these require TTY support:
When I (the agent) receive a Ralph Loop request, I will:
Use exec tool to launch the coding agent:
exec tool with parameters:
- command: "opencode run --model <MODEL> \"$(cat PROMPT.md)\""
- workdir: <project_path>
- background: true
- pty: true
- yieldMs: 60000
- timeout: 3600
Capture session ID from exec tool response
Use process tool to monitor:
process tool with:
- action: "poll"
- sessionId: <captured_session_id>
process tool with:
- action: "log"
- sessionId: <captured_session_id>
- offset: -30 (for recent output)
Check completion by reading IMPLEMENTATION_PLAN.md for sentinel text
Clean up with process kill if needed:
process tool with:
- action: "kill"
- sessionId: <session_id>
Benefits: TTY support, real-time logs, timeout handling, parallel sessions, workdir isolation
Required:
opencode, codex, claude, goose, pi, other)PLANNING, BUILDING, or BOTH)Optional:
STATUS: COMPLETE in IMPLEMENTATION_PLAN.md)$PWD)--full-auto, --yolo, --dangerously-skip-permissions)Auto-detect:
If requirements are unclear:
specs/<topic>.md for eachPROMPT.md references:
specs/*.mdIMPLEMENTATION_PLAN.mdAGENTS.md includes:
PLANNING Prompt (no implementation):
You are running a Ralph PLANNING loop for this goal: <goal>.
Read specs/* and the current codebase. Only update IMPLEMENTATION_PLAN.md.
Rules:
- Do not implement
- Do not commit
- Create a prioritized task list
- Write down questions if unclear
Completion:
When plan is ready, add: STATUS: PLANNING_COMPLETE
BUILDING Prompt:
You are running a Ralph BUILDING loop for this goal: <goal>.
Context: specs/*, IMPLEMENTATION_PLAN.md, AGENTS.md
Tasks:
1) Pick the most important task
2) Investigate code
3) Implement
4) Run backpressure commands from AGENTS.md
5) Update IMPLEMENTATION_PLAN.md
6) Update AGENTS.md with learnings
7) Commit with clear message
Completion:
When all done, add: STATUS: COMPLETE
The agent constructs command strings using these patterns:
| CLI | Command String Pattern |
|-----|----------------------|
| OpenCode | opencode run --model <MODEL> "$(cat PROMPT.md)" |
| Codex | codex exec <FLAGS> "$(cat PROMPT.md)" (requires git) |
| Claude Code | claude <FLAGS> "$(cat PROMPT.md)" |
| Pi | pi --provider <PROVIDER> --model <MODEL> -p "$(cat PROMPT.md)" |
| Goose | goose run "$(cat PROMPT.md)" |
Common flags:
--full-auto, --yolo, --model <model>--dangerously-skip-permissionsAgent executes this sequence:
Step 1: Launch OpenCode with exec tool
{
command: "opencode run --model github-copilot/claude-opus-4.5 \"$(cat PROMPT.md)\"",
workdir: "/path/to/project",
background: true,
pty: true,
timeout: 3600,
yieldMs: 60000
}
Step 2: Capture session ID from response
sessionId: "abc123"
Step 3: Monitor with process tool every 10-30 seconds
{
action: "poll",
sessionId: "abc123"
}
Step 4: Check recent logs
{
action: "log",
sessionId: "abc123",
offset: -30
}
Step 5: Read IMPLEMENTATION_PLAN.md to check for completion
- Look for: "STATUS: COMPLETE" or "STATUS: PLANNING_COMPLETE"
Step 6: If complete or timeout, cleanup
{
action: "kill",
sessionId: "abc123"
}
Agent tool calls:
exec tool:
{
command: "codex exec --full-auto --model anthropic/claude-opus-4 \"$(cat PROMPT.md)\"",
workdir: "/path/to/project",
background: true,
pty: true,
timeout: 3600
}
# Then monitor with process tool as above
Use flexible regex to match variations:
grep -Eq "STATUS:?\s*(PLANNING_)?COMPLETE" IMPLEMENTATION_PLAN.md
Matches:
STATUS: COMPLETESTATUS:COMPLETESTATUS: PLANNING_COMPLETE## Status: PLANNING_COMPLETE--full-auto (sandboxed, auto-approve) or --yolo (no sandbox!)--dangerously-skip-permissionsCtrl+Cgit reset --hard HEAD~N| Problem | Solution | |---------|----------| | OpenCode hangs | Ensure agent uses exec tool with pty: true | | Session won't start | Check CLI path, git repo, command syntax | | Completion not detected | Verify sentinel format in IMPLEMENTATION_PLAN.md | | Process timeout | Agent should increase timeout parameter or simplify tasks | | Parallel conflicts | Agent should use git worktrees for isolation | | Can't see progress | Agent should use process tool with action: "log" |
MIT
This skill builds upon work by:
Key improvement: Uses OpenClaw's exec tool with pty: true to provide TTY for interactive CLIs, solving the hanging issue that occurs with simple background bash execution.
tools
Send short status descriptions in chat for long-running tasks. Use when you need to provide periodic updates during multi-step operations, confirm task completion, or notify of failures. Includes automated periodic monitoring that sends updates every 5 seconds, status message templates, and a helper function for consistent status reporting.
testing
Check comprehensive system health and resource usage including CPU, memory, disk, processes, network, and load statistics. Use when asked to check system status, monitor resources, view system health, diagnose performance issues, or get an overview of system running state (进程、cpu、内存、负载、磁盘等).
development
Collect and organize first-hand research materials for technical writing. Use when the user wants to gather official documentation, source code examples, GitHub issues, or original technical resources before writing. Outputs structured research files ready for the writing phase.
tools
Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).