flux-ralph-init
Scaffold repo-local Ralph autonomous harness under scripts/ralph/. Use when user runs /flux:ralph-init.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Scaffold repo-local Ralph autonomous harness under scripts/ralph/. Use when user runs /flux:ralph-init.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Create structured build plans from feature, bugfix, upgrade, or refactor requests, or from Flow IDs. Use when planning implementation after the workflow envelope is explicit. Triggers on /flux:plan with text descriptions or Flow IDs (fn-1-add-oauth, fn-1-add-oauth.2, or legacy fn-1, fn-1.2, fn-1-xxx, fn-1-xxx.2).
Stakeholder-facing feature proposal flow. Guides non-technical team members through a conversational planning session — probes for business context, pushes back like an engineer, estimates complexity and cost, then documents the proposal and creates a PR for engineering handoff. Triggers: /flux:propose, or detected implicitly when a non-technical user describes a feature, bugfix request, or upgrade without implementation detail during /flux:scope or /flux:plan.
Use when scoping a new feature, bugfix, upgrade to an existing feature, or refactor into a concrete Flow objective. Guides Start, Discover, Define, Stress Test, Future Pressure, Develop, Deliver, and Handoff; requires an explicit shallow-vs-deep choice before scoping continues. Triggers on literal `/flux:scope`, including prompts like `/flux:scope Add OAuth login` or `/flux:scope fn-1 --deep`.
Optional local install of fluxctl CLI and AGENTS.md/legacy CLAUDE.md instructions. Use when user runs /flux:setup. Triggers on literal `/flux:setup`.
Manage .flux/ tasks, epics, and config. Triggers: 'show me my tasks', 'list epics', 'what tasks are there', 'add a task', 'create task', 'what's ready', 'task status', 'show fn-1-add-oauth', 'show my Flux config', 'what did setup configure', 'edit Flux settings'. NOT for /flux:plan or /flux:work.
Execute a Flow epic or task systematically with git setup, task tracking, quality checks, and commit workflow. Use when implementing a plan or working through a spec. Triggers on literal `/flux:work` prompts with Flow IDs (fn-1-add-oauth, fn-1-add-oauth.2, or legacy fn-1, fn-1.2, fn-1-xxx, fn-1-xxx.2).
| name | flux-ralph-init |
| description | Scaffold repo-local Ralph autonomous harness under scripts/ralph/. Use when user runs /flux:ralph-init. |
| user-invocable | false |
Scaffold or update repo-local Ralph harness. Opt-in only.
On entry, set the session phase:
PLUGIN_ROOT="${DROID_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}}"
[ ! -d "$PLUGIN_ROOT/scripts" ] && PLUGIN_ROOT=$(ls -td ~/.claude/plugins/cache/nairon-flux/flux/*/ 2>/dev/null | head -1)
FLUXCTL="${PLUGIN_ROOT}/scripts/fluxctl"
$FLUXCTL session-phase set ralph
On completion, reset:
$FLUXCTL session-phase set idle
scripts/ralph/ in the current repo.scripts/ralph/ already exists, offer to update (preserves config.env).templates/ into scripts/ralph/.fluxctl and fluxctl.py from ${PLUGIN_ROOT}/scripts/ into scripts/ralph/.scripts/ralph/ralph.sh, scripts/ralph/ralph_once.sh, and scripts/ralph/fluxctl.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.3-codex`)
(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 "${PLUGIN_ROOT}/skills/flux-ralph-init/templates/ralph.sh" scripts/ralph/
cp "${PLUGIN_ROOT}/skills/flux-ralph-init/templates/ralph_once.sh" scripts/ralph/
cp "${PLUGIN_ROOT}/skills/flux-ralph-init/templates/prompt_plan.md" scripts/ralph/
cp "${PLUGIN_ROOT}/skills/flux-ralph-init/templates/prompt_work.md" scripts/ralph/
cp "${PLUGIN_ROOT}/skills/flux-ralph-init/templates/prompt_completion.md" scripts/ralph/
cp "${PLUGIN_ROOT}/skills/flux-ralph-init/templates/watch-filter.py" scripts/ralph/
cp "${PLUGIN_ROOT}/scripts/fluxctl" "${PLUGIN_ROOT}/scripts/fluxctl.py" scripts/ralph/
mkdir -p scripts/ralph/hooks
cp "${PLUGIN_ROOT}/scripts/hooks/ralph-guard.py" scripts/ralph/hooks/
chmod +x scripts/ralph/ralph.sh scripts/ralph/ralph_once.sh scripts/ralph/fluxctl 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 "${PLUGIN_ROOT}/skills/flux-ralph-init/templates/." scripts/ralph/
cp "${PLUGIN_ROOT}/scripts/fluxctl" "${PLUGIN_ROOT}/scripts/fluxctl.py" scripts/ralph/
cp "${PLUGIN_ROOT}/scripts/hooks/ralph-guard.py" scripts/ralph/hooks/
chmod +x scripts/ralph/ralph.sh scripts/ralph/ralph_once.sh scripts/ralph/fluxctl 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 an active agent session):
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 an active agent session):
- 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 /flux:ralph-init after plugin updates to refresh scripts
- Uninstall (run manually): rm -rf scripts/ralph/
ALWAYS run at the very end of command execution:
PLUGIN_ROOT="${DROID_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}}"
[ ! -d "$PLUGIN_ROOT/scripts" ] && PLUGIN_ROOT=$(ls -td ~/.claude/plugins/cache/nairon-flux/flux/*/ 2>/dev/null | head -1)
UPDATE_JSON=$("$PLUGIN_ROOT/scripts/version-check.sh" 2>/dev/null || echo '{"update_available":false}')
UPDATE_AVAILABLE=$(echo "$UPDATE_JSON" | jq -r '.update_available')
LOCAL_VER=$(echo "$UPDATE_JSON" | jq -r '.local_version')
REMOTE_VER=$(echo "$UPDATE_JSON" | jq -r '.remote_version')
If update available, append to output:
---
Flux update available: v${LOCAL_VER} → v${REMOTE_VER}
Update Flux from the same source you installed it from, then restart your agent session.
---