ClaudeSuperPower

ralph

Skill

Launcher for the Ralph-style queue drain script — emits the right `node ralph-loop.mjs` invocation based on the user's filter and bounds. The actual loop runs as a Node script that spawns one `claude -p --worktree` per iteration; this skill is the configurator, not the loop. Use when a user says: dr

Install

git clone https://github.com/jpicklyk/task-orchestrator.git ~/.claude/skills/ralph

What is ralph?

Launcher for the Ralph-style queue drain script — emits the right `node ralph-loop.mjs` invocation based on the user's filter and bounds. The actual loop runs as a Node script that spawns one `claude -p --worktree` per iteration; this skill is the configurator, not the loop. Use when a user says: drain the backlog, ralph the queue, run Ralph loop, work the queue, batch through queue items, autonomous queue worker.

What this can do

Capabilities declared in this component's own frontmatter — not inferred.

Inherit all session tools

Declares no tool restrictions — inherits every session tool

~104 tokens of context used while enabled, before you invoke anything

Documentation

README · ~13 min read

ralph — Queue Drain Launcher

This skill is a launcher for the Ralph drain script (scripts/ralph-loop.mjs in this plugin). It does not run a loop in the current session. It helps you configure the right invocation, previews what will be processed, and emits the exact command to run.

The actual loop runs as a separate Node process. Each iteration spawns a fresh claude -p in its own git worktree (via Claude Code's -w flag), claims one item from the TO queue, and works it to terminal per the item's schema. Outcome is signaled via a RALPH_OUTCOME: JSON marker that the script parses for circuit-breaker decisions.

Why a separate script, not a slash-command loop? Per Geoff Huntley's canonical Ralph: the value comes from carving off small bits of work into independent context windows. Each iteration is a fresh process — fresh context, fresh worktree, isolated logs, clean exit codes. The skill-as-orchestrator pattern (one session, internal loop) accumulates context within a session and doesn't preserve fresh-context isolation. For autonomous cadence, compose with /loop: /loop 30m node scripts/ralph-loop.mjs --filter "tag=bug-fix".


Step 1 — Resolve the filter

Determine what subset of the queue to drain.

If $ARGUMENTS is non-empty, parse it as a filter expression. Supported keys:

KeyEffect

Reviews

Log in to leave a review.

No reviews yet — be the first.

Explore related

Other things in this space — across every part of the ecosystem, not just skills.