ralph-workplan/README.md
tegwick d379ff9dbc
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Complete RALPH-WP-0002 plugin hardening and adoption docs
2026-07-08 15:21:13 +02:00

137 lines
3.8 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ralph-workplan
A Claude Code skill that starts a [Ralph Loop](https://github.com/anthropics/claude-code)
tied to a workplan file. The loop retires automatically when all tasks in the
workplan are done — no external services required.
## What it does
```
/ralph-workplan workplans/WP-0001-my-feature.md
/ralph-workplan workplans/WP-0001-my-feature.md --max-iterations 15
```
On each iteration, Claude:
1. Re-reads the workplan file and checks task statuses
2. If all tasks are `done` and workplan `status: done` → outputs `<promise>HEUREKA</promise>` and the loop stops
3. Otherwise → continues implementing, marking tasks done as it goes
Before starting, the skill guards against running on an already-completed workplan.
## Requirements
- [Claude Code](https://claude.ai/code) with the `ralph-loop` plugin installed
- Bash (macOS or Linux)
No other dependencies. No external services.
## Install
```bash
git clone <this-repo> ~/ralph-workplan
cd ~/ralph-workplan
./install.sh
# restart Claude Code
```
To uninstall:
```bash
./install.sh --uninstall
```
## Workplan format
A workplan is a Markdown file with YAML frontmatter and task blocks:
```markdown
---
id: WP-0001
title: "Build a REST API"
status: active
---
Build a simple REST API with CRUD endpoints for a todo list.
## Task: Set up project structure
```task
id: T-01
status: todo
priority: high
```
## Task: Implement endpoints
```task
id: T-02
status: todo
priority: high
```
## Task: Write tests
```task
id: T-03
status: todo
priority: medium
```
```
See [workplan-spec.md](workplan-spec.md) for the full format reference.
## How completion works
The loop is entirely file-driven. As Claude completes tasks it edits the
workplan file:
```
status: todo → status: in_progress → status: done
```
When every task is `done`, Claude also updates the workplan frontmatter to
`status: done`. The ralph loop detects this on the next iteration and stops.
No state hub, no HTTP calls, no external coordination needed.
## Adoption across coulomb repos
Use ralph-workplan in any repo that already follows ADR-001 workplan files:
```bash
git clone forgejo-remote:coulomb/ralph-workplan.git ~/ralph-workplan
cd ~/ralph-workplan && ./install.sh
# restart Claude Code
```
Then from a target repo checkout:
```bash
/ralph-workplan workplans/CUST-WP-0056-daily-todo-md-stale-review.md
/ralph-workplan workplans/MY-WP-0003-feature.md --max-iterations 15
```
**Workplan requirements** — see [workplan-spec.md](workplan-spec.md):
- YAML frontmatter with `id`, `title`, `status` (`active` while in progress; `done`/`finished` when complete)
- One or more fenced ` ```task ` blocks with `id`, `status`, optional `priority`
- For State Hubintegrated repos: include `state_hub_workstream_id` and per-task `state_hub_task_id`; mark tasks `done` in the file **and** call `update_task_status` in the hub
**`check-done.sh` behavior** — pre-start guard exits 0 only when frontmatter status is `done`/`finished` **and** every task is `done` or `cancel`. Otherwise the skill refuses to start (or continues the loop).
**`--max-iterations`** — default 20. Use 1015 for small workplans; raise only when tasks are large and file-driven progress is slow. The loop always sets completion promise `HEUREKA`.
Manual check without starting a loop:
```bash
~/ralph-workplan/plugin/scripts/check-done.sh workplans/MY-WP-0001.md && echo complete || echo incomplete
```
## Why not just use `/ralph-loop` directly?
`/ralph-loop` with a static prompt has no awareness of completion state — it
loops forever (or until `--max-iterations`) even if the work is already done.
`/ralph-workplan` ties the loop lifecycle to the workplan file, so it:
- Refuses to start if the workplan is already done
- Self-retires the moment all tasks are complete
- Always sets `--completion-promise HEUREKA` and a bounded iteration count