agent-loop-ext
Crash-resilient external agent loop with state persistence and CI/CD integration
View and configure agent loop settings — show, set, reset, and apply named presets
$ npx -y skills add jmagly/aiwg --skill ralph-config --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/ralph-configContext preview
The summary Claude sees to decide when to auto-load this skill.
View and configure agent loop settings — show, set, reset, and apply named presets
namespace: aiwg name: ralph-config platforms: [all] description: View and configure agent loop settings — show, set, reset, and apply named presets commandHint: argumentHint: "<show|set|reset|preset> [key] [value]" allowedTools: Read, Write model: haiku category: automation platforms: [claude-code, hermes, openclaw] modelRole: efficiency modelTier: economy
<!-- AIWG-SKILL-CALLOUT --> > **Skill access pattern (post-kernel-pivot, 2026.5+)** > > Skill names referenced in this document are AIWG skills, **not slash commands**. Most are not kernel-listed and cannot be invoked as `/skill-name` by the platform. Reach them via: > > ```bash > aiwg discover "<capability>" > aiwg show skill <name> > ``` > > Only kernel-listed skills (`aiwg-doctor`, `aiwg-refresh`, `aiwg-status`, `aiwg-help`, `use`, `steward`) are directly invokable as slash commands. See [skill-discovery rule](../../../addons/aiwg-utils/rules/skill-discovery.md).
View and modify Al's runtime configuration. Settings control loop behavior defaults such as iteration limits, timeouts, provider selection, and commit behavior. Changes persist to `.aiwg/ralph/config.json` and apply to all subsequent loops unless overridden per-invocation.
Users may say:
One of `show`, `set`, `reset`, or `preset`.
The configuration key to change. See the configuration reference below.
The new value to assign to the key.
One of the built-in preset names: `ci`, `thorough`, or `quick`.
| Key | Default | Description | |-----|---------|-------------| | `maxIterations` | `10` | Maximum iterations before the loop halts | | `timeout` | `60` | Maximum wall-clock time per loop (minutes) | | `provider` | `claude` | AI provider for loop iterations (`claude`, `codex`, `factory`, `opencode`) | | `model` | (provider default) | Model override for the provider | | `autoCommit` | `true` | Commit after each successful iteration | | `branch` | `null` | Default branch name (null = work on current branch) | | `quiet` | `false` | Suppress verbose iteration output | | `memory` | `true` | Enable semantic memory accumulation | | `crossTask` | `false` | Pull relevant memories from other completed loops | | `analytics` | `false` | Enable iteration analytics logging |
| Preset | maxIterations | timeout | quiet | Description | |--------|--------------|---------|-------|-------------| | `ci` | `5` | `30` | `true` | Conservative limits for CI/CD pipelines | | `thorough` | `20` | `120` | `false` | Extended limits for complex tasks | | `quick` | `3` | `15` | `false` | Fast exploration, fail-fast on difficulty |
1. Read `.aiwg/ralph/config.json`; if absent, show built-in defaults 2. Display the current configuration in a readable table
**Output (active config)**:
Al Configuration Source: .aiwg/ralph/config.json Key Value Default Modified ─────────────── ─────────── ───────── ──────── maxIterations 5 10 yes timeout 30 60 yes provider claude claude no model (default) (default) no autoCommit true true no branch null null no quiet true false yes memory true true no crossTask false false no analytics false false no Active preset: ci (applied 2026-04-01) To change a value: /ralph-config set <key> <value> To reset defaults: /ralph-config reset
**Output (no config file — using defaults)**:
Al Configuration Source: built-in defaults (no .aiwg/ralph/config.json found) Key Value ─────────────── ───────── maxIterations 10 timeout 60 provider claude model (default) autoCommit true branch null quiet false memory true crossTask false analytics false To customize: /ralph-config set <key> <value> To apply a preset: /ralph-config preset <ci|thorough|quick>
1. Validate the key is a recognized configuration key 2. Validate the value type matches the key's expected type 3. Read existing config (or start from defaults) 4. Apply the change 5. Write updated config to `.aiwg/ralph/config.json` 6. Confirm the change
**Output**:
Al config updated. maxIterations: 10 → 15 Saved to: .aiwg/ralph/config.json
**Validation error — unknown key**:
Unknown configuration key: 'maxIter' Did you mean 'maxIterations'? Run /ralph-config show to see all valid keys.
**Validation error — wrong type**:
Invalid value for 'maxIterations': 'lots' Expected: integer >= 1 Got: 'lots' Example: /ralph-config set maxIterations 15
1. Confirm with the user before proceeding 2. Delete or overwrite `.aiwg/ralph/config.json` with built-in defaults 3. Confirm the reset
**Confirmation prompt**:
This will reset all Al configuration to defaults. Current non-default values: maxIterations: 5 (default: 10) timeout: 30 (default: 60) quiet: true (default: false) Type 'yes' to confirm reset:
**After reset**:
Al configuration reset to defaults. .aiwg/ralph/config.json has been cleared. All future loops will use built-in default values.
1. Validate the preset name is one of `ci`, `thorough`, or `quick` 2. Confirm which keys will be overwritten 3. Apply the preset values on top of current config 4. Save and confirm
**Preview before applying**:
Applying preset: ci Changes: maxIterations: 10 → 5 timeout: 60 → 30
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