ralph
Ralph is a queue processing skill that spawns isolated subagents for each task phase (extract, create, reflect, reweave, verify, enrich) to prevent context contamination across processing stages. Use it to batch-process N tasks from a queue with options for parallel execution, batch filtering, phase filtering, or dry-run preview, triggered by "/ralph", "/ralph N", "process queue", or "run pipeline tasks".
git clone --depth 1 https://github.com/agenticnotetaking/arscontexta /tmp/ralph && cp -r /tmp/ralph/skill-sources/ralph ~/.claude/skills/ralphSKILL.md
## EXECUTE NOW
**Target: $ARGUMENTS**
Parse arguments:
- N (required unless --dry-run): number of tasks to process
- --parallel: concurrent claim workers (max 5) + cross-connect validation
- --batch [id]: process only tasks from specific batch
- --type [type]: process only tasks at a specific phase (extract, create, reflect, reweave, verify, enrich)
- --dry-run: show what would execute without running
- --handoff: output structured RALPH HANDOFF block at end (for pipeline chaining)
### Step 0: Read Vocabulary
Read `ops/derivation-manifest.md` (or fall back to `ops/derivation.md`) for domain vocabulary mapping. All output must use domain-native terms. If neither file exists, use universal terms.
**START NOW.** Process queue tasks.
---
## MANDATORY CONSTRAINT: SUBAGENT SPAWNING IS NOT OPTIONAL
**You MUST use the Task tool to spawn a subagent for EVERY task. No exceptions.**
This is not a suggestion. This is not an optimization you can skip for "simple" tasks. The entire architecture depends on fresh context isolation per phase. Executing tasks inline in the lead session:
- Contaminates context (later tasks run on degraded attention)
- Skips the handoff protocol (learnings are not captured)
- Violates the ralph pattern (one phase per context window)
**If you catch yourself about to execute a task directly instead of spawning a subagent, STOP.** Call the Task tool. Every time. For every task. Including create tasks. Including "simple" tasks.
The lead session's ONLY job is: read queue, spawn subagent, evaluate return, update queue, repeat.
---
## Phase Configuration
Each phase maps to specific Task tool parameters. Use these EXACTLY when spawning subagents.
| Phase | Skill Invoked | Purpose |
|-------|---------------|---------|
| extract | /reduce | Extract claims from source material |
| create | (inline note creation) | Write the {DOMAIN:note} file |
| enrich | /enrich | Add content to existing {DOMAIN:note} |
| reflect | /reflect | Find connections, update {DOMAIN:topic map}s |
| reweave | /reweave | Update older {DOMAIN:note_plural} with new connections |
| verify | /verify | Description quality + schema + health checks |
**All phases use the same subagent configuration:**
- subagent_type: knowledge-worker (if available) or default
- mode: dontAsk
Subagents inherit the session model. Users running opus get opus quality on processing phases. Users running sonnet get sonnet everywhere. Fresh context per phase already ensures efficiency — every phase gets full capability in the smart zone.
---
## Step 1: Read Queue State
Read the queue file. Check these locations in order:
1. `ops/queue.yaml`
2. `ops/queue/queue.yaml`
3. `ops/queue/queue.json`
Parse the queue. Identify ALL pending tasks.
**Queue structure (v2 schema):**
The queue uses `current_phase` and `completed_phases` per task entry:
```yaml
phase_order:
claim: [create, reflect, reweave, verify]
enrichment: [enrich, reflect, reweave, verify]
tasks:
- id: source-name
type: extract
status: pending
source: ops/queue/archive/2026-01-30-source/source.md
file: source-name.md
created: "2026-01-30T10:00:00Z"
- id: claim-010
type: claim
status: pending
target: "claim title here"
batch: source-name
file: source-name-010.md
current_phase: reflect
completed_phases: [create]
```
If the queue file does not exist or is empty, report: "Queue is empty. Use /seed or /pipeline to add sources."
## Step 2: Filter Tasks
Build a list of **actionable tasks** — tasks where `status == "pending"`. Order by position in the tasks array (first = highest priority).
Apply filters:
- If `--batch` specified: keep only tasks where `batch` matches
- If `--type` specified: keep only tasks where `current_phase` matches (e.g., `--type reflect` finds tasks whose `current_phase` is "reflect")
The `phase_order` header defines the phase sequence:
- `claim`: create -> reflect -> reweave -> verify
- `enrichment`: enrich -> reflect -> reweave -> verify
## Step 3: If --dry-run, Report and Stop
Show this and STOP (do not process):
```
--=={ ralph dry-run }==--
Queue: X total tasks (Y pending, Z done)
Phase distribution:
Claims: {create: N, reflect: N, reweave: N, verify: N}
Enrichments: {enrich: N, reflect: N, reweave: N, verify: N}
Next tasks to process:
1. {id} — phase: {current_phase} — {target}
2. {id} — phase: {current_phase} — {target}
...
Estimated: ~{N} subagent spawns
```
---
## Step 4: Process Loop (SERIAL MODE)
**If `--parallel` is set, skip to Step 6 instead.**
Process up to N tasks (default 1). For each iteration:
### 4a. Select Next Task
Pick the first pending task from the filtered list. Read its metadata: `id`, `type`, `file`, `target`, `batch`, `current_phase`, `completed_phases`.
The `current_phase` determines which skill to invoke.
Report:
```
=== Processing task {i}/{N}: {id} — phase: {current_phase} ===
Target: {target}
File: {file}
```
### 4b. Build Subagent Prompt
Construct a prompt based on `current_phase`. Every prompt MUST include:
- Reference to the task file path (from queue's `file` field)
- The task identity (id, current_phase, target)
- The skill to invoke with `--handoff`
- `ONE PHASE ONLY` constraint
- Instruction to output RALPH HANDOFF block
**Phase-specific prompts:**
For **extract** phase (type=extract tasks only):
```
Read the task file at ops/queue/{FILE} for context.
You are processing task {ID} from the work queue.
Phase: extract | Target: {TARGET}
Run /reduce --handoff on the source file referenced in the task file.
After extraction: create per-claim task files, update the queue with new entries
(1 entry per claim with current_phase/completed_phases), output RALPH HANDOFF.
ONE PHASE ONLY. Do NOT run reflect or other phases.
```
For **create** phase:
```
Read the task file at ops/queue/{FILE} for context.
You are processing task {ID} from the work queue.
Phase: create | Target claim: {TARGET}
Create a {DOMAIN:note} for thiAdd a new knowledge domain to your existing system. Derives domain-specific configuration through conversation, generates domain folders, templates, and vocabulary while preserving and connecting to your existing architecture.
Research-backed evolution advice for your knowledge system. Analyzes health reports, friction patterns, and derivation history to propose specific changes with research justification. Never auto-implements — proposals require your approval.
Query the bundled research knowledge graph for methodology guidance. Routes questions through a 3-tier knowledge base — WHY (research claims), HOW (guidance docs), WHAT IT LOOKS LIKE (domain examples) — plus structured reference documents. Returns research-backed answers grounded in specific claims with practical application to the user's system. Triggers on "/ask", "/ask [question]", "why does my system...", "how should I...".
Interactive knowledge graph analysis. Routes natural language questions to graph scripts, interprets results in domain vocabulary, and suggests concrete actions. Triggers on "/graph", "/graph health", "/graph triangles", "find synthesis opportunities", "graph analysis".
Run condition-based vault health diagnostics. 8 categories — schema compliance, orphan detection, link health, description quality, three-space boundaries, processing throughput, stale notes, MOC coherence. 3 modes — quick (schema+orphans+links), full (all 8), three-space (boundary violations only). Returns actionable FAIL/WARN/PASS report with specific fixes ranked by impact. Triggers on "/health", "check vault health", "maintenance report", "what needs fixing".
Contextual guidance and command discovery. Three modes — narrative (first-time), contextual (mid-task), compact (quick reference). Shows available commands, active skills, and intelligent suggestions based on vault state. Triggers on "/help", "what can I do", "show commands", "how does this work".
Proactive methodology guidance agent. Monitors note creation and provides real-time quality advice. Suggests connections, flags quality issues, recommends MOC updates. Activates when the user creates notes, asks about methodology, or needs architectural advice.
Research a topic and grow your knowledge graph. Uses Exa deep researcher, web search, or basic search to investigate topics, files results with full provenance, and chains to processing pipeline. Triggers on "/learn", "/learn [topic]", "research this", "find out about".