ralphctl 0.13.1 → 0.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -18
- package/dist/cli.mjs +8892 -6554
- package/dist/manifest.json +1 -1
- package/dist/prompts/_partials/harness-context.md +9 -3
- package/dist/prompts/apply-feedback/template.md +2 -7
- package/dist/prompts/detect-scripts/template.md +17 -2
- package/dist/prompts/detect-skills/template.md +2 -2
- package/dist/prompts/distill-learnings/template.md +5 -5
- package/dist/prompts/evaluate/template.md +53 -15
- package/dist/prompts/evaluate-continuation/template.md +33 -4
- package/dist/prompts/ideate/template.md +5 -5
- package/dist/prompts/implement/template.md +45 -20
- package/dist/prompts/implement-continuation/template.md +4 -1
- package/dist/prompts/plan/template.md +5 -9
- package/dist/prompts/readiness/template.md +3 -2
- package/dist/prompts/refine/template.md +2 -3
- package/package.json +6 -2
package/README.md
CHANGED
|
@@ -11,10 +11,12 @@
|
|
|
11
11
|
[](https://github.com/lukas-grigis/ralphctl)
|
|
12
12
|
|
|
13
13
|
<p align="center">
|
|
14
|
-
<img src="./.github/assets/home.png" alt="ralphctl home screen — Ralph donut banner with 'The pointy kitty took it!' tagline,
|
|
14
|
+
<img src="./.github/assets/home.png" alt="ralphctl home screen — Ralph donut banner with 'The pointy kitty took it!' tagline, WORK / OBSERVE / SYSTEM menus with keybindings, bottom footer" width="900" />
|
|
15
15
|
</p>
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
# ralphctl
|
|
18
|
+
|
|
19
|
+
**A ralph harness for long-running AI coding tasks — a hardened ralph loop that
|
|
18
20
|
orchestrates [Claude Code](https://docs.anthropic.com/en/docs/claude-code) across repositories,
|
|
19
21
|
with [GitHub Copilot](https://docs.github.com/en/copilot/github-copilot-in-the-cli) and
|
|
20
22
|
[OpenAI Codex](https://github.com/openai/codex) available in preview.**
|
|
@@ -30,6 +32,17 @@ with [GitHub Copilot](https://docs.github.com/en/copilot/github-copilot-in-the-c
|
|
|
30
32
|
|
|
31
33
|
---
|
|
32
34
|
|
|
35
|
+
## What is a ralph harness?
|
|
36
|
+
|
|
37
|
+
The "Ralph" technique comes from Geoffrey Huntley's [Ralph Wiggum as a software engineer](https://ghuntley.com/ralph/):
|
|
38
|
+
point a coding agent at a task and run it in a loop until the work is done. The bare version
|
|
39
|
+
(`while :; do cat PROMPT.md | claude-code; done`) loops blindly — it re-runs the same prompt and hopes each pass lands.
|
|
40
|
+
ralphctl is a ralph harness around that idea: instead of blind repetition it runs a generator-evaluator loop, where one
|
|
41
|
+
pass writes the change and a second independent pass reviews it against the task spec before the loop advances. Same
|
|
42
|
+
loop, with a verification gate on every step.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
33
46
|
## What is ralphctl?
|
|
34
47
|
|
|
35
48
|
AI coding agents are powerful but lose context on long tasks, need babysitting when things break, and have no way to
|
|
@@ -49,8 +62,16 @@ You describe what to build. ralphctl handles the rest — or works alongside you
|
|
|
49
62
|
npm install -g ralphctl
|
|
50
63
|
```
|
|
51
64
|
|
|
52
|
-
|
|
53
|
-
|
|
65
|
+
> Needs [Node.js](https://nodejs.org/) ≥ 24 — `mise use node@24` or `nvm install 24`.
|
|
66
|
+
|
|
67
|
+
Install [Claude Code](https://docs.anthropic.com/en/docs/claude-code) (or a preview provider — see below) and
|
|
68
|
+
authenticate it, then confirm ralphctl can see it:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
ralphctl doctor # verifies your provider CLI is installed + authenticated — the #1 first-run failure
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
When `doctor` is green, launch:
|
|
54
75
|
|
|
55
76
|
```bash
|
|
56
77
|
ralphctl
|
|
@@ -194,7 +215,11 @@ One-shot configuration for any provider: `ralphctl settings apply-preset <name>`
|
|
|
194
215
|
|
|
195
216
|
Configure via the TUI `Settings` view or one-shot CLI commands.
|
|
196
217
|
|
|
197
|
-
**Quickest path — apply a preset
|
|
218
|
+
**Quickest path — apply a preset.** Presets auto-seed from your detected CLIs on first run; override later with
|
|
219
|
+
`apply-preset`.
|
|
220
|
+
|
|
221
|
+
<details>
|
|
222
|
+
<summary>All 20 presets across five families</summary>
|
|
198
223
|
|
|
199
224
|
```bash
|
|
200
225
|
# Standard — flagship model per flow
|
|
@@ -233,6 +258,8 @@ preset stamps the entire `ai` section plus `harness.escalateOnPlateau` in one tr
|
|
|
233
258
|
`false` so a plateau settles; all others stamp it `true`). On a fresh install the welcome view silently
|
|
234
259
|
auto-seeds a preset based on which provider CLIs it detects on `PATH`.
|
|
235
260
|
|
|
261
|
+
</details>
|
|
262
|
+
|
|
236
263
|
**Per-flow settings.** Each flow carries its own `{provider, model, effort?}` row: `refine`, `plan`, `readiness`,
|
|
237
264
|
`ideate`, and `createPr`. The `implement` flow instead splits into a nested `generator` / `evaluator` pair
|
|
238
265
|
(`ai.implement.generator.*` and `ai.implement.evaluator.*`), each its own `{provider, model, effort?}` row. Edit
|
|
@@ -362,11 +389,11 @@ readiness / create sprint) stay TUI-only by design. The CLI exposes inspection +
|
|
|
362
389
|
|
|
363
390
|
### Export & PR
|
|
364
391
|
|
|
365
|
-
| Command
|
|
366
|
-
|
|
|
367
|
-
| `ralphctl export-requirements --sprint <id> --output <path>`
|
|
368
|
-
| `ralphctl export-context --sprint <id> --project <id> --output <path>` | Render harness context (sprint + project + tasks) to markdown |
|
|
369
|
-
| `ralphctl create-pr --sprint <id> [--base <branch>] [--draft]`
|
|
392
|
+
| Command | Description |
|
|
393
|
+
| -------------------------------------------------------------------------- | -------------------------------------------------------------- |
|
|
394
|
+
| `ralphctl export-requirements [--sprint <id>] --output <path>` | Render approved-ticket requirements to markdown |
|
|
395
|
+
| `ralphctl export-context [--sprint <id>] [--project <id>] --output <path>` | Render harness context (sprint + project + tasks) to markdown |
|
|
396
|
+
| `ralphctl create-pr --sprint <id> [--base <branch>] [--draft]` | Open a PR/MR via `gh` or `glab`, persist the URL on the sprint |
|
|
370
397
|
|
|
371
398
|
### Maintenance
|
|
372
399
|
|
|
@@ -383,16 +410,17 @@ Run `ralphctl <command> --help` for flag-level detail.
|
|
|
383
410
|
|
|
384
411
|
## Documentation
|
|
385
412
|
|
|
386
|
-
| Resource
|
|
387
|
-
|
|
|
388
|
-
| [Architecture](
|
|
389
|
-
| [
|
|
390
|
-
| [
|
|
391
|
-
| [
|
|
392
|
-
| [
|
|
413
|
+
| Resource | Description |
|
|
414
|
+
| ------------------------------------------------ | -------------------------------------------------------- |
|
|
415
|
+
| [Architecture](./ARCHITECTURE.md) | Data models, harness loop, file storage, error reference |
|
|
416
|
+
| [Adding a provider](./docs/adding-a-provider.md) | Extension guide: wire a new AI CLI into the harness |
|
|
417
|
+
| [Requirements](./.claude/docs/REQUIREMENTS.md) | Acceptance criteria and feature checklist |
|
|
418
|
+
| [Contributing](./CONTRIBUTING.md) | Dev setup, code style, PR process |
|
|
419
|
+
| [Migration](./MIGRATION.md) | Per-version upgrade context for big version jumps |
|
|
420
|
+
| [Changelog](./CHANGELOG.md) | Version history |
|
|
393
421
|
|
|
394
422
|
**Blog posts:** [Building ralphctl](https://lukasgrigis.dev/blog/building-ralphctl) (
|
|
395
|
-
backstory) | [From task CLI to
|
|
423
|
+
backstory) | [From task CLI to ralph harness](https://lukasgrigis.dev/blog/ralphctl-agent-harness/) (evaluator
|
|
396
424
|
deep-dive)
|
|
397
425
|
|
|
398
426
|
**Further reading:
|