Help us improve
Share bugs, ideas, or general feedback.
From flow-next
Scaffolds or updates repo-local Ralph autonomous harness in scripts/ralph/ with scripts, templates, and flowctl. Detects review backends like rp-cli or codex. Invoke via /flow-next:ralph-init.
npx claudepluginhub gmickel/flow-next --plugin flow-nextHow this skill is triggered — by the user, by Claude, or both
Slash command
/flow-next:flow-next-ralph-initThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Scaffold or update repo-local Ralph harness. Opt-in only.
Sets up Ralph Wiggum autonomous coding loop with bash iteration, Claude prompts, test backpressure, git commits, and GitHub backup in any directory.
Initializes Ralph Playbook scaffolding in projects for autonomous coding loops, creating AGENTS.md, prompts, specs dir, and plan tracker. Auto-detects Node.js, Python, Rust, Go for validation setup.
Initializes Ralph Loop infrastructure from approved Claude plans by creating .ralph/ with prd.json, loop.py, CLAUDE.md for autonomous multi-step execution.
Share bugs, ideas, or general feedback.
Scaffold or update repo-local Ralph harness. Opt-in only.
scripts/ralph/ in the current repo.scripts/ralph/ already exists, offer to update (preserves config.env).templates/ into scripts/ralph/.flowctl and flowctl.py from ${DROID_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/scripts/ into scripts/ralph/.scripts/ralph/ralph.sh, scripts/ralph/ralph_once.sh, and scripts/ralph/flowctl.Resolve repo root: git rev-parse --show-toplevel
Check if scripts/ralph/ exists:
Detect available review backends (skip if UPDATE_MODE=1):
HAVE_RP=$(which rp-cli >/dev/null 2>&1 && echo 1 || echo 0)
HAVE_CODEX=$(which codex >/dev/null 2>&1 && echo 1 || echo 0)
Determine review backend (skip if UPDATE_MODE=1):
Both RepoPrompt and Codex available. Which review backend?
a) RepoPrompt (macOS, visual builder)
b) Codex CLI (cross-platform, GPT 5.2 High)
(Reply: "a", "rp", "b", "codex", or just tell me)
Wait for response. Default if empty/ambiguous: rprpcodexnoneCopy files using bash (MUST use cp, NOT Write tool):
If UPDATE_MODE=1 (updating):
# Backup config.env
cp scripts/ralph/config.env /tmp/ralph-config-backup.env
# Update templates (preserves runs/)
cp "${DROID_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/skills/flow-next-ralph-init/templates/ralph.sh" scripts/ralph/
cp "${DROID_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/skills/flow-next-ralph-init/templates/ralph_once.sh" scripts/ralph/
cp "${DROID_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/skills/flow-next-ralph-init/templates/prompt_plan.md" scripts/ralph/
cp "${DROID_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/skills/flow-next-ralph-init/templates/prompt_work.md" scripts/ralph/
cp "${DROID_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/skills/flow-next-ralph-init/templates/prompt_completion.md" scripts/ralph/
cp "${DROID_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/skills/flow-next-ralph-init/templates/watch-filter.py" scripts/ralph/
cp "${DROID_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/scripts/flowctl" "${DROID_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/scripts/flowctl.py" scripts/ralph/
mkdir -p scripts/ralph/hooks
cp "${DROID_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/scripts/hooks/ralph-guard.py" scripts/ralph/hooks/
chmod +x scripts/ralph/ralph.sh scripts/ralph/ralph_once.sh scripts/ralph/flowctl scripts/ralph/hooks/ralph-guard.py
# Restore config.env
cp /tmp/ralph-config-backup.env scripts/ralph/config.env
If UPDATE_MODE=0 (fresh install):
mkdir -p scripts/ralph/runs scripts/ralph/hooks
cp -R "${DROID_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/skills/flow-next-ralph-init/templates/." scripts/ralph/
cp "${DROID_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/scripts/flowctl" "${DROID_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/scripts/flowctl.py" scripts/ralph/
cp "${DROID_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/scripts/hooks/ralph-guard.py" scripts/ralph/hooks/
chmod +x scripts/ralph/ralph.sh scripts/ralph/ralph_once.sh scripts/ralph/flowctl scripts/ralph/hooks/ralph-guard.py
Note: cp -R templates/. copies all files including dotfiles (.gitignore).
Edit scripts/ralph/config.env to set the chosen review backend (skip if UPDATE_MODE=1):
PLAN_REVIEW={{PLAN_REVIEW}} with PLAN_REVIEW=<chosen>WORK_REVIEW={{WORK_REVIEW}} with WORK_REVIEW=<chosen>COMPLETION_REVIEW={{COMPLETION_REVIEW}} with COMPLETION_REVIEW=<chosen>Print next steps (run from terminal, NOT inside Claude Code):
If UPDATE_MODE=1:
Ralph updated! Your config.env was preserved.
Changes in this version:
- Removed local hooks requirement (plugin hooks work when installed normally)
Run from terminal:
- ./scripts/ralph/ralph_once.sh (one iteration, observe)
- ./scripts/ralph/ralph.sh (full loop, AFK)
If UPDATE_MODE=0:
Ralph initialized!
Next steps (run from terminal, NOT inside Claude Code):
- Edit scripts/ralph/config.env to customize settings
- ./scripts/ralph/ralph_once.sh (one iteration, observe)
- ./scripts/ralph/ralph.sh (full loop, AFK)
Maintenance:
- Re-run /flow-next:ralph-init after plugin updates to refresh scripts
- Uninstall (run manually): rm -rf scripts/ralph/