flow-next-ralph-init
Initializes or updates the local Ralph autonomous agent harness within your repository.
Install
mkdir -p .claude/skills/flow-next-ralph-init && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/4990" && unzip -o skill.zip -d .claude/skills/flow-next-ralph-init && rm skill.zipInstalls to .claude/skills/flow-next-ralph-init
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Scaffold repo-local Ralph autonomous harness under scripts/ralph/. Use when user runs /flow-next:ralph-init.Key capabilities
- →Scaffold Ralph autonomous harness
- →Update existing Ralph setup
- →Sync Ralph scripts
- →Set executable permissions
How it works
It copies templates and scripts from the plugin root into the repository and configures the environment for autonomous operation.
Inputs & outputs
When to use flow-next-ralph-init
- →Initialize Ralph harness
- →Update existing Ralph setup
- →Sync Ralph scripts
About this skill
Ralph init
Scaffold or update repo-local Ralph harness. Opt-in only.
Preamble
The plugin root resolves once via the cross-platform env-var fallback (Droid uses DROID_PLUGIN_ROOT; Claude Code documents CLAUDE_PLUGIN_ROOT as its compat alias). Subsequent blocks use $PLUGIN_ROOT:
PLUGIN_ROOT="${DROID_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}"
Rules
- Every write lands under
scripts/ralph/in the current repo. A file written anywhere else has broken this. - If
scripts/ralph/already exists, offer to update (preserves config.env). - Copy templates from
templates/intoscripts/ralph/(includesralphctl.pyfor pause/resume/stop/status). - Copy
flowctl,flowctl.cmd,flowctl.py,flowctl_bootstrap.py,flowctl-help.txt, and theflowctl_tracker/package (from$PLUGIN_ROOT/scripts/) andpick-python.sh(from$PLUGIN_ROOT/scripts/lib/) intoscripts/ralph/— flat, so the resolver lands atscripts/ralph/pick-python.shwhereralph.shand the hook wrapper source it. Apick-python.shthat landed underscripts/ralph/lib/has broken this. - Set executable bit on
scripts/ralph/ralph.sh,scripts/ralph/ralph_once.sh,scripts/ralph/flowctl, andscripts/ralph/ralphctl.py. - Hook registration is agent-driven skill prose only. The plugin ships no hooks by default; you (the host agent) merge the guard entries into the project's host settings via Read+Edit, idempotently, without clobbering unrelated hooks. The boundary is hard: there is no flowctl subcommand for hook install/remove/status and no hook machinery in Python. A settings file whose hooks object now holds only flow-next entries, or a hook-install subcommand added to the CLI, has broken this.
Workflow
-
Resolve repo root:
git rev-parse --show-toplevel -
Check if
scripts/ralph/exists:- If exists: ask "Update existing Ralph setup? (preserves config.env and runs/) [y/n]"
- If no: stop
- If yes: set UPDATE_MODE=1
- If not exists: set UPDATE_MODE=0
- If exists: ask "Update existing Ralph setup? (preserves config.env and runs/) [y/n]"
-
Detect available review backends (skip if UPDATE_MODE=1):
if command -v rpce-cli >/dev/null 2>&1 \ || [ -x "$HOME/RepoPrompt/repoprompt_ce_cli" ] \ || [ -x "$HOME/Library/Application Support/RepoPrompt CE/repoprompt_ce_cli" ] \ || command -v rp-cli >/dev/null 2>&1; then HAVE_RP=1; else HAVE_RP=0; fi HAVE_CODEX=$(which codex >/dev/null 2>&1 && echo 1 || echo 0) HAVE_COPILOT=$(which copilot >/dev/null 2>&1 && echo 1 || echo 0) HAVE_CURSOR=$(which cursor-agent >/dev/null 2>&1 && echo 1 || echo 0) -
Determine review backend (skip if UPDATE_MODE=1):
- If several are available, ask the user (do NOT use AskUserQuestion tool).
Show only the options whose CLIs were detected:
Wait for response. Default if empty/ambiguous: preferMultiple review backends available. Which one? a) RepoPrompt (macOS, visual builder) b) Codex CLI (cross-platform, GPT 5.5 High) c) GitHub Copilot CLI (cross-platform, Claude/GPT via Copilot) d) Cursor CLI (cross-platform, runs cursor-agent; gpt-5.5-high via Cursor subscription) (Reply: "a", "rp", "b", "codex", "c", "copilot", "d", "cursor", or just tell me)rp>codex>copilot>cursor. - If only the RepoPrompt CLI ladder resolves: use
rp - If only codex available: use
codex - If only copilot available: use
copilot - If only cursor-agent available: use
cursor - If none available: use
none
- If several are available, ask the user (do NOT use AskUserQuestion tool).
Show only the options whose CLIs were detected:
-
Copy files using bash — the copies run through
cp, never the Write tool. A template reproduced by writing its contents has broken this:If UPDATE_MODE=1 (updating):
# Backup config.env cp scripts/ralph/config.env /tmp/ralph-config-backup.env # Update templates (preserves runs/) cp "$PLUGIN_ROOT/skills/flow-next-ralph-init/templates/ralph.sh" scripts/ralph/ cp "$PLUGIN_ROOT/skills/flow-next-ralph-init/templates/ralph_once.sh" scripts/ralph/ cp "$PLUGIN_ROOT/skills/flow-next-ralph-init/templates/prompt_plan.md" scripts/ralph/ cp "$PLUGIN_ROOT/skills/flow-next-ralph-init/templates/prompt_work.md" scripts/ralph/ cp "$PLUGIN_ROOT/skills/flow-next-ralph-init/templates/prompt_completion.md" scripts/ralph/ cp "$PLUGIN_ROOT/skills/flow-next-ralph-init/templates/watch-filter.py" scripts/ralph/ cp "$PLUGIN_ROOT/skills/flow-next-ralph-init/templates/ralphctl.py" scripts/ralph/ cp "$PLUGIN_ROOT/scripts/flowctl" "$PLUGIN_ROOT/scripts/flowctl.cmd" "$PLUGIN_ROOT/scripts/flowctl.py" "$PLUGIN_ROOT/scripts/flowctl_bootstrap.py" "$PLUGIN_ROOT/scripts/flowctl-help.txt" "$PLUGIN_ROOT/scripts/lib/pick-python.sh" scripts/ralph/ rm -rf scripts/ralph/flowctl_tracker && cp -R "$PLUGIN_ROOT/scripts/flowctl_tracker" scripts/ralph/flowctl_tracker # fn-139.5: verify the tracker package post-copy - fail loudly here, never # later as an ImportError mid-run python3 "$PLUGIN_ROOT/scripts/lib/verify_tracker_manifest.py" scripts/ralph mkdir -p scripts/ralph/hooks cp "$PLUGIN_ROOT/scripts/hooks/ralph-guard.py" "$PLUGIN_ROOT/scripts/hooks/ralph-guard" scripts/ralph/hooks/ chmod +x scripts/ralph/ralph.sh scripts/ralph/ralph_once.sh scripts/ralph/flowctl scripts/ralph/ralphctl.py scripts/ralph/hooks/ralph-guard.py scripts/ralph/hooks/ralph-guard # Restore config.env cp /tmp/ralph-config-backup.env scripts/ralph/config.envIf UPDATE_MODE=0 (fresh install):
mkdir -p scripts/ralph/runs scripts/ralph/hooks cp -R "$PLUGIN_ROOT/skills/flow-next-ralph-init/templates/." scripts/ralph/ cp "$PLUGIN_ROOT/scripts/flowctl" "$PLUGIN_ROOT/scripts/flowctl.cmd" "$PLUGIN_ROOT/scripts/flowctl.py" "$PLUGIN_ROOT/scripts/flowctl_bootstrap.py" "$PLUGIN_ROOT/scripts/flowctl-help.txt" "$PLUGIN_ROOT/scripts/lib/pick-python.sh" scripts/ralph/ rm -rf scripts/ralph/flowctl_tracker && cp -R "$PLUGIN_ROOT/scripts/flowctl_tracker" scripts/ralph/flowctl_tracker # fn-139.5: verify the tracker package post-copy - fail loudly here, never # later as an ImportError mid-run python3 "$PLUGIN_ROOT/scripts/lib/verify_tracker_manifest.py" scripts/ralph cp "$PLUGIN_ROOT/scripts/hooks/ralph-guard.py" "$PLUGIN_ROOT/scripts/hooks/ralph-guard" scripts/ralph/hooks/ chmod +x scripts/ralph/ralph.sh scripts/ralph/ralph_once.sh scripts/ralph/flowctl scripts/ralph/ralphctl.py scripts/ralph/hooks/ralph-guard.py scripts/ralph/hooks/ralph-guardNote:
cp -R templates/.copies all files including dotfiles (.gitignore). -
Edit
scripts/ralph/config.envto set the chosen review backend (skip if UPDATE_MODE=1):- Replace
PLAN_REVIEW={{PLAN_REVIEW}}withPLAN_REVIEW=<chosen> - Replace
WORK_REVIEW={{WORK_REVIEW}}withWORK_REVIEW=<chosen> - Replace
COMPLETION_REVIEW={{COMPLETION_REVIEW}}withCOMPLETION_REVIEW=<chosen>
- Replace
-
Register project hooks (agent-driven; required for the guard to fire).
Detect host (same signals as
/flow-next:setupStep 0 when available; otherwise probe the settings paths below). Then Read the target file, merge the flow-next Ralph guard entries, Edit/Write the result. The host's existing hooks survive the merge — a settings file whose hooks object now contains only flow-next entries has broken this. Idempotent: if an entry'scommandalready containsscripts/ralph/hooks/ralph-guard, leave that matcher group alone (or refresh the command string to the canonical form below if it drifted).Fingerprint for "this is a flow-next Ralph guard entry": the hook
commandstring containsscripts/ralph/hooks/ralph-guard(wrapper and/or.pyfallback).Canonical guard command (same on every host that can run bash wrappers):
if [ -f scripts/ralph/hooks/ralph-guard ]; then bash scripts/ralph/hooks/ralph-guard; elif [ -f scripts/ralph/hooks/ralph-guard.py ]; then scripts/ralph/hooks/ralph-guard.py; fiTimeout:
5seconds. Type:command.Claude Code → merge into
.claude/settings.jsonTarget: project file
.claude/settings.json(create{"hooks":{}}skeleton if missing; preserve every non-hooks key).Merge these four event groups under
hooks(Claude schema). Matchers use regex OR so Droid interop and Claude share one entry shape:Event Matcher Notes PreToolUseBash|Executeshell (Claude Bash, DroidExecute)PreToolUseEdit|Writefile tools (Claude host names) PostToolUseBash|Executeshell PostToolUseEdit|Writefile tools (receipt-path gate parity) Stop(no matcher) stop gate SubagentStop(no matcher) subagent stop gate Each event's array entry is one matcher group with a single hook object
{type, command, timeout}using the canonical command above.Consent gate: Claude Code's project-hooks trust prompt is the human consent surface. Do not invent a second consent ceremony. After merge, tell the user they may need to accept/trust project hooks in the host UI for them to load this session.
Factory Droid → merge into
.factory/hooks.jsonTarget (verified against Factory hooks-reference): project file
.factory/hooks.json. Prefer that path. Fallback only if the project already stores hooks under thehookskey of.factory/settings.jsonand has no.factory/hooks.json— merge there instead; never invent a third path.Host-appropriate matchers for Droid (Factory's shell tool is
Execute; file tools includeCreate/ApplyPatch). The guard body accepts the full dual-platform sets (Bash/Execute,Edit/Write/Create/ApplyPatch).Event Matcher Notes PreToolUseBash|Executeshell PreToolUseEdit|Write|Create|ApplyPatchDroid file tools PostToolUseBash|Executeshell PostToolUseEdit|Write|Create|ApplyPatchfile tools (receipt-path gate) `Sto
Content truncated.
When not to use it
- →When not initializing or updating the Ralph harness
Prerequisites
Limitations
- →Requires write access to the repository
- →Limited to scripts/ralph/ directory
How it compares
It automates the setup and synchronization of the harness compared to manual script installation.
Compared to similar skills
flow-next-ralph-init side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| flow-next-ralph-init (this skill) | 1 | 2mo | Review | Intermediate |
| applescript | 28 | 8mo | Review | Advanced |
| bazel-build-optimization | 14 | 2mo | No flags | Advanced |
| home-assistant-manager | 9 | 8mo | Review | Advanced |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by gmickel
View all by gmickel →You might also like
applescript
martinholovsky
Expert in AppleScript and JavaScript for Automation (JXA) for macOS system scripting. Specializes in secure script execution, application automation, and system integration. HIGH-RISK skill due to shell command execution and system-wide control capabilities.
bazel-build-optimization
wshobson
Optimize Bazel builds for large-scale monorepos. Use when configuring Bazel, implementing remote execution, or optimizing build performance for enterprise codebases.
home-assistant-manager
komal-SkyNET
Expert-level Home Assistant configuration management with efficient deployment workflows (git and rapid scp iteration), remote CLI access via SSH and hass-cli, automation verification protocols, log analysis, reload vs restart optimization, and comprehensive Lovelace dashboard management for tablet-optimized UIs. Includes template patterns, card types, debugging strategies, and real-world examples.
swarm-advanced
ruvnet
Advanced swarm orchestration patterns for research, development, testing, and complex distributed workflows
windows-expert
jackspace
Expert guidance for Windows, PowerShell, WSL interop, and cross-platform development
bash-linux
davila7
Bash/Linux terminal patterns. Critical commands, piping, error handling, scripting. Use when working on macOS or Linux systems.