ralphctl 0.26.0 → 0.28.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.
Files changed (46) hide show
  1. package/README.md +11 -4
  2. package/THIRD-PARTY-NOTICES.md +65 -2
  3. package/dist/agent-definitions/ralphctl-generator.md +3 -2
  4. package/dist/{cli-P7D6G5NI.mjs → chunk-WAHQPVTG.mjs} +16782 -40661
  5. package/dist/cli-W3M7L4TP.mjs +2772 -0
  6. package/dist/cli.mjs +1 -1
  7. package/dist/launch-VBRTQP4L.mjs +20602 -0
  8. package/dist/manifest.json +16 -3
  9. package/dist/prompts/_partials/autonomous-operation.md +18 -7
  10. package/dist/prompts/_partials/conventions-agents-md.md +2 -2
  11. package/dist/prompts/_partials/conventions-claude-md.md +2 -0
  12. package/dist/prompts/_partials/decisions.md +0 -1
  13. package/dist/prompts/_partials/evaluator-failure-modes.md +8 -5
  14. package/dist/prompts/_partials/evaluator-grading-rules.md +9 -5
  15. package/dist/prompts/_partials/one-shot-operation.md +6 -0
  16. package/dist/prompts/apply-feedback/template.md +5 -4
  17. package/dist/prompts/create-pr/template.md +10 -8
  18. package/dist/prompts/detect-scripts/template.md +7 -4
  19. package/dist/prompts/detect-skills/template.md +2 -0
  20. package/dist/prompts/evaluate/template.md +4 -2
  21. package/dist/prompts/evaluate-continuation/template.md +1 -1
  22. package/dist/prompts/ideate/template.md +2 -3
  23. package/dist/prompts/implement/template.md +21 -14
  24. package/dist/prompts/plan/template.md +3 -4
  25. package/dist/prompts/readiness/template.md +9 -4
  26. package/dist/prompts/refine/template.md +3 -6
  27. package/dist/prompts/reproduce/template.md +7 -0
  28. package/dist/skills/ralphctl-api-and-interface-design/SKILL.md +117 -0
  29. package/dist/skills/ralphctl-code-review-and-quality/SKILL.md +119 -8
  30. package/dist/skills/ralphctl-code-simplification/SKILL.md +100 -0
  31. package/dist/skills/ralphctl-codebase-design/SKILL.md +82 -0
  32. package/dist/skills/ralphctl-debugging-and-error-recovery/SKILL.md +23 -5
  33. package/dist/skills/ralphctl-deprecation-and-migration/SKILL.md +106 -0
  34. package/dist/skills/ralphctl-frontend-ui-engineering/SKILL.md +94 -0
  35. package/dist/skills/ralphctl-humanizer/SKILL.md +137 -0
  36. package/dist/skills/ralphctl-idea-refinement/SKILL.md +2 -0
  37. package/dist/skills/ralphctl-iterative-review/SKILL.md +10 -4
  38. package/dist/skills/ralphctl-observability-and-instrumentation/SKILL.md +104 -0
  39. package/dist/skills/ralphctl-performance-optimization/SKILL.md +123 -0
  40. package/dist/skills/ralphctl-ponytail/SKILL.md +38 -28
  41. package/dist/skills/ralphctl-security-and-hardening/SKILL.md +259 -0
  42. package/dist/skills/ralphctl-source-driven-development/SKILL.md +103 -0
  43. package/dist/skills/ralphctl-spec-driven-development/SKILL.md +148 -0
  44. package/dist/skills/ralphctl-test-driven-development/SKILL.md +29 -2
  45. package/dist/skills/ralphctl-writing-for-agents/SKILL.md +113 -0
  46. package/package.json +10 -10
package/README.md CHANGED
@@ -13,9 +13,12 @@
13
13
  [![Built with Donuts](https://img.shields.io/badge/%F0%9F%8D%A9-Built_with_Donuts-ff6f00?style=flat)](https://github.com/lukas-grigis/ralphctl)
14
14
 
15
15
  <p align="center">
16
- <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" />
16
+ <img src="./.github/assets/demo.gif" alt="ralphctl running the Implement flow in its terminal UI: the generator edits hello.py and reports the task done, the evaluator fails the correctness dimension with a critique (hello.py must print exactly &quot;Hello, world!&quot;), the generator retries with the critique applied, the evaluator passes, and the task commits" width="900" />
17
17
  </p>
18
18
 
19
+ <p align="center"><sub>One task through the generator → evaluator loop: round 1 fails review, round 2 applies the critique and
20
+ passes. Replayed with <code>ralphctl demo --script</code> — no AI CLI, no tokens.</sub></p>
21
+
19
22
  # ralphctl
20
23
 
21
24
  **A ralph harness for long-running AI coding tasks — a hardened ralph loop that drives your coding agent of choice
@@ -74,6 +77,9 @@ project (three sprints, one per pre-flow state) and launches straight into it
74
77
  ralphctl demo
75
78
  ```
76
79
 
80
+ `ralphctl demo --script` replays the run in the recording above — a canned two-round session through the real
81
+ Implement chain, git commit and verify gate included — so you can watch the loop without spending a token.
82
+
77
83
  Otherwise, install one of the supported CLIs and authenticate it:
78
84
 
79
85
  | CLI | Install | Auth |
@@ -81,7 +87,7 @@ Otherwise, install one of the supported CLIs and authenticate it:
81
87
  | [Claude Code](https://docs.anthropic.com/en/docs/claude-code) | `npm i -g @anthropic-ai/claude-code` | Anthropic account |
82
88
  | [GitHub Copilot CLI](https://docs.github.com/en/copilot/github-copilot-in-the-cli) | `npm i -g @github/copilot` | GitHub Copilot seat |
83
89
  | [OpenAI Codex CLI](https://github.com/openai/codex) | `npm i -g @openai/codex` | ChatGPT / OpenAI |
84
- | [OpenCode](https://opencode.ai/) | `npm i -g opencode-ai` | your own key, or none |
90
+ | [OpenCode](https://opencode.ai/) | `npm i -g opencode-ai@1` | your own key, or none |
85
91
  | [Grok Build CLI](https://docs.x.ai/build/overview) | `npm i -g @xai-official/grok` | xAI account (`grok login`) |
86
92
 
87
93
  Then confirm ralphctl can see it:
@@ -254,7 +260,7 @@ per-row settings.
254
260
  | **Claude Code** (`claude-code`) | `claude` | `npm i -g @anthropic-ai/claude-code` | Anthropic account | `CLAUDE.md` |
255
261
  | **GitHub Copilot CLI** (`github-copilot`) | `copilot` | `npm i -g @github/copilot` | GitHub Copilot seat | `.github/copilot-instructions.md` |
256
262
  | **OpenAI Codex CLI** (`openai-codex`) | `codex` | `npm i -g @openai/codex` | ChatGPT / OpenAI | `AGENTS.md` |
257
- | **OpenCode** (`opencode`) | `opencode` | `npm i -g opencode-ai` | your own key, or none | `AGENTS.md` |
263
+ | **OpenCode** (`opencode`) | `opencode` | `npm i -g opencode-ai@1` | your own key, or none | `AGENTS.md` |
258
264
  | **Grok Build CLI** (`xai-grok`) | `grok` | `npm i -g @xai-official/grok` | xAI account (`grok login`) | `AGENTS.md` |
259
265
 
260
266
  Codex, OpenCode, and Grok share one repo-root `AGENTS.md`. Readiness for more than one of them writes
@@ -362,7 +368,7 @@ ralphctl settings apply-preset grok-fast
362
368
 
363
369
  # Frontier — the vendor's top model on plan/implement at max effort; light flows stay below max.
364
370
  # Claude/Codex step up to Fable 5.1 / gpt-6-astra (Fable 5.1 needs a non-ZDR org);
365
- # Copilot/Grok keep their flagship (Opus 4.8 / grok-4.7).
371
+ # Copilot/Grok keep their flagship (Opus 5.5 / grok-4.7).
366
372
  ralphctl settings apply-preset mixed-frontier
367
373
  ralphctl settings apply-preset claude-frontier
368
374
  ralphctl settings apply-preset copilot-frontier
@@ -544,6 +550,7 @@ Run `ralphctl <command> --help` for flag-level detail.
544
550
  | [Architecture](./ARCHITECTURE.md) | Data models, harness loop, file storage, error reference |
545
551
  | [Providers](./docs/providers.md) | Per-backend setup, permission mapping, model ids, limits |
546
552
  | [Adding a provider](./docs/adding-a-provider.md) | Extension guide: wire a new AI CLI into the harness |
553
+ | [Custom skills](./docs/custom-skills.md) | Plug in your own skills |
547
554
  | [Requirements](./.claude/docs/REQUIREMENTS.md) | Acceptance criteria and feature checklist |
548
555
  | [Contributing](./CONTRIBUTING.md) | Dev setup, code style, PR process |
549
556
  | [Migration](./MIGRATION.md) | Per-version upgrade context for big version jumps |
@@ -6,10 +6,21 @@ verbatim upstream snapshots used for drift review live under `scripts/vendor/ski
6
6
  upstream's license and copyright notice is reproduced in full below, as the MIT license requires.
7
7
 
8
8
  - `ralphctl-debugging-and-error-recovery`, `ralphctl-code-review-and-quality`,
9
- `ralphctl-test-driven-development`, `ralphctl-idea-refinement` — from
9
+ `ralphctl-test-driven-development`, `ralphctl-idea-refinement`, `ralphctl-security-and-hardening`,
10
+ `ralphctl-spec-driven-development`, `ralphctl-api-and-interface-design`,
11
+ `ralphctl-performance-optimization`, `ralphctl-frontend-ui-engineering`,
12
+ `ralphctl-deprecation-and-migration`, `ralphctl-code-simplification`,
13
+ `ralphctl-source-driven-development`, `ralphctl-observability-and-instrumentation`, and the
14
+ risk-first slicing in `ralphctl-iterative-review` — from
10
15
  [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills)
11
- - `ralphctl-ponytail` — from [DietrichGebert/ponytail](https://github.com/DietrichGebert/ponytail)
16
+ - `ralphctl-ponytail`, and the concrete-case and expected-load review rules in
17
+ `ralphctl-code-review-and-quality` — from [DietrichGebert/ponytail](https://github.com/DietrichGebert/ponytail)
12
18
  - `ralphctl-domain-driven-design` — from [wondelai/skills](https://github.com/wondelai/skills)
19
+ - `ralphctl-codebase-design`, `ralphctl-writing-for-agents`, and parts of
20
+ `ralphctl-debugging-and-error-recovery`, `ralphctl-test-driven-development`, and
21
+ `ralphctl-code-review-and-quality` — from [mattpocock/skills](https://github.com/mattpocock/skills)
22
+ - `ralphctl-humanizer` — concept from [blader/humanizer](https://github.com/blader/humanizer); its pattern
23
+ catalogue is written fresh in ralphctl's own words
13
24
 
14
25
  ---
15
26
 
@@ -90,3 +101,55 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
90
101
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
91
102
  SOFTWARE.
92
103
  ```
104
+
105
+ ## mattpocock/skills
106
+
107
+ ```
108
+ MIT License
109
+
110
+ Copyright (c) 2026 Matt Pocock
111
+
112
+ Permission is hereby granted, free of charge, to any person obtaining a copy
113
+ of this software and associated documentation files (the "Software"), to deal
114
+ in the Software without restriction, including without limitation the rights
115
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
116
+ copies of the Software, and to permit persons to whom the Software is
117
+ furnished to do so, subject to the following conditions:
118
+
119
+ The above copyright notice and this permission notice shall be included in all
120
+ copies or substantial portions of the Software.
121
+
122
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
123
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
124
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
125
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
126
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
127
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
128
+ SOFTWARE.
129
+ ```
130
+
131
+ ## blader/humanizer
132
+
133
+ ```
134
+ MIT License
135
+
136
+ Copyright (c) 2025 Siqi Chen
137
+
138
+ Permission is hereby granted, free of charge, to any person obtaining a copy
139
+ of this software and associated documentation files (the "Software"), to deal
140
+ in the Software without restriction, including without limitation the rights
141
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
142
+ copies of the Software, and to permit persons to whom the Software is
143
+ furnished to do so, subject to the following conditions:
144
+
145
+ The above copyright notice and this permission notice shall be included in all
146
+ copies or substantial portions of the Software.
147
+
148
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
149
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
150
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
151
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
152
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
153
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
154
+ SOFTWARE.
155
+ ```
@@ -9,8 +9,9 @@ already in — not to redesign it, and not to stop short of a verified result.
9
9
  ## Before writing code
10
10
 
11
11
  1. **Read the actual requirement** — the ticket, the failing test, the described behavior. When
12
- it's ambiguous, pick the narrowest interpretation that still satisfies it rather than guessing
13
- at a larger scope.
12
+ it's ambiguous, implement the reading its wording and the surrounding code most directly support
13
+ — one that still satisfies it — and record that assumption (as a decision, when the output
14
+ contract offers one) rather than guessing at a larger scope.
14
15
  2. **Find the nearest existing pattern** — the way this codebase already solves a similar problem
15
16
  (naming, error handling, test structure, layering) is the template to follow. Introducing a new
16
17
  pattern for something that already has one creates drift a future reader has to reconcile.