PRD-based task tracking CLI for AI coding agents. Run agents headlessly with structured task tracking and progress visibility.
Inspired by Geoff Huntley's ralph technique - putting a coding agent in a while loop and letting it work autonomously.
# npm
npm install -g rlph-cli
# or run directly
npx rlph-cli prd add my-feature.md my-featuregit clone https://github.com/rem4ik4ever/ralph.git
cd ralph
bun install
bun run build
bun linkSet up ralph in your project and install Claude Code skills:
ralph initCreates .ralph/ directory and installs skills to ~/.claude/skills/:
ralph-prd- PRD creation skillralph- CLI documentation skill
Convert markdown PRD to trackable JSON tasks:
ralph prd add <path> <name> [--agent claude]Example:
ralph prd add .ralph/prd/my-feature/prd.md my-featureCreates:
prd.json- converted tasks with pass/fail trackingprogress.txt- cross-iteration memory
View all PRDs with status:
ralph prd listOutput:
NAME STATUS PROGRESS LOCATION
my-feature in_progress 3/7 local
refactor-api pending 0/4 global
Display PRD details and file locations:
ralph prd info <name>Output:
PRD: my-feature
Status: in_progress (3/7 tasks complete)
Files:
prd.md: .ralph/prd/my-feature/prd.md
prd.json: .ralph/prd/my-feature/prd.json
progress: .ralph/prd/my-feature/progress.txt
iterations: .ralph/prd/my-feature/iterations/ (2 files)
Remove a PRD and all associated files:
ralph prd delete <name>
ralph prd delete <name> --force # skip confirmationExecute agent loop against a PRD:
ralph run <prd-name> [--agent claude] [--iterations 4]Example:
ralph run my-feature -i 10Agent picks up next incomplete task, implements it, runs feedback loops (tests/lint/types), marks task passed, repeats until done.
ralph initsets up project and installs Claude Code skills- Write markdown PRD (or use
ralph-prdskill in Claude Code) ralph prd addconverts markdown to JSON tasksralph runloops agent against PRD tasks- Agent updates
prd.jsonpasses field on completion - Agent maintains
progress.txtwith learnings across iterations - Stops when all tasks pass or max iterations reached
ralph prd infoshows progress and file locations
Local PRDs (in project):
.ralph/
├── config.json # Project configuration
└── prd/<name>/
├── prd.md # Original markdown
├── prd.json # Tasks with passes field
├── progress.txt # Cross-iteration memory
└── iterations/ # Iteration logs
Global PRDs (fallback):
~/.ralph/prd/<name>/
└── ...
Local PRDs take precedence over global when both exist.
claude- Claude Code CLI (requires claude installed)
- Node.js >= 18
- Claude Code CLI installed and authenticated
This project uses semantic-release for automated versioning and npm publishing.
- Push/merge to
maintriggers release workflow - Commits are analyzed to determine version bump
- CHANGELOG.md is updated automatically
- Package is published to npm
- GitHub release is created
Commit messages must follow Conventional Commits:
<type>(<scope>): <description>
[optional body]
[optional footer]
| Type | Version Bump | Example |
|---|---|---|
fix |
Patch (1.0.x) | fix(cli): handle empty input |
feat |
Minor (1.x.0) | feat(prd): add export command |
feat! or BREAKING CHANGE: |
Major (x.0.0) | feat!: change config format |
Other types (docs, chore, refactor, test, ci) don't trigger releases.
MIT