agent-loop-ext
Crash-resilient external agent loop with state persistence and CI/CD integration
Attach to a running agent loop's live output stream
$ npx -y skills add jmagly/aiwg --skill ralph-attach --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/ralph-attachContext preview
The summary Claude sees to decide when to auto-load this skill.
Attach to a running agent loop's live output stream
namespace: aiwg name: ralph-attach platforms: [all] description: Attach to a running agent loop's live output stream commandHint: argumentHint: "[--loop-id <id>]" allowedTools: Read model: haiku category: automation platforms: [claude-code, hermes, openclaw] modelRole: efficiency modelTier: economy
Attach to a running external agent loop and tail its output log in real time. Press Ctrl+C to detach without interrupting the loop.
Users may say:
The ID of the loop to attach to. If omitted, attaches to the most recently started active loop.
/ralph-attach --loop-id abc123
When multiple loops are active, you must specify `--loop-id`. Run `/ralph-status` first to list active loop IDs.
When triggered:
1. Read `.aiwg/ralph-external/loops/` to find active loop state files 2. If `--loop-id` is not provided, select the loop with the most recent `startedAt` timestamp that has `status: "running"` 3. If no active loop is found, report clearly and exit 4. If multiple loops are active and no `--loop-id` is given, list them and prompt the user to specify 5. Resolve the loop's `logFile` path from its state JSON (typically `.aiwg/ralph-external/logs/<loop-id>.log`) 6. Begin reading the log file from the current end, streaming new lines as they are appended 7. Display each new line to the user as it arrives, prefixed with a timestamp 8. Continue until the user presses Ctrl+C or the loop reaches a terminal state (`succeeded`, `failed`, `aborted`) 9. On loop completion, print a final status banner and exit cleanly
**Output format while tailing**:
[10:42:01] Agent loop abc123 — ACTIVE (iteration 3/10) [10:42:01] Running verification: npm test [10:42:03] PASS src/auth/auth.test.ts [10:42:03] Tests: 12 passed, 0 failed [10:42:04] Iteration 3: VERIFIED — criteria met [10:42:04] Agent loop: SUCCESS
**On loop completion**:
═══════════════════════════════════════════ Agent Loop Completed: SUCCESS Loop ID: abc123 Iterations: 3 Duration: 4m 12s Report: .aiwg/ralph-external/reports/abc123.md ═══════════════════════════════════════════ Detached from loop abc123.
**No active loops**:
No active agent loops found. Start one with: aiwg ralph "your task" --completion "criteria" Or check completed loops with: /ralph-status --all
**Loop ID not found**:
Loop 'xyz999' not found in .aiwg/ralph-external/loops/. Active loops: abc123 — Fix auth tests (running, iteration 2/10) def456 — Migrate to ESM (running, iteration 5/20) Attach with: /ralph-attach --loop-id abc123
**Log file missing or unreadable**:
Cannot read log for loop abc123. Expected: .aiwg/ralph-external/logs/abc123.log Check that the loop process is still running and has write access to the log directory.
**Multiple loops active (no --loop-id)**:
Multiple active agent loops. Specify which to attach to: abc123 — Fix auth tests (running, iteration 2/10, started 10:38) def456 — Migrate to ESM (running, iteration 5/20, started 09:15) Usage: /ralph-attach --loop-id <id>
/ralph-attach
**Response**: Streams live output from the single running agent loop.
/ralph-attach --loop-id abc123
**Response**: Streams output only from loop `abc123`.
Press `Ctrl+C` while attached. **Response**: Returns to normal prompt; the agent loop continues running unaffected.
Reusable project context and specialist workflows for the AI tools you already use. Plan software, coordinate specialist reviews, prepare campaigns, investigate incidents, organize research, curate media, and maintain operational knowledge.
Repo: jmagly/aiwg
Crash-resilient external agent loop with state persistence and CI/CD integration
Detect requests for iterative autonomous agent loops and route to the appropriate loop executor
Automatically execute tests when code-generating agents modify source files, enforcing the execute-before-return pattern
Enable agent loops to learn from similar past tasks and share patterns across loops
Query and manage the executable feedback debug memory
Execute tests on generated code and iterate until passing