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