Back to the catalog

rpm-relentless-product-manager

rpm persists project state across Claude Code sessions and prevents guidance and documentation drift. It uses hooks to automate most of the

Open source Open in the app JSON README (API)

About

rpm persists project state across Claude Code sessions and prevents guidance and documentation drift. It uses hooks to automate most of the effort, and stores everything in human readable files. User initiated /audit command catches drift in three tiers: mechanical scan, scored subagent review, and full project review. All implemented with zero dependencies and all bash.

Details

Kind
Plugins
Topic
Developer tools
Publisher
dppdppd
Origin
marketplace
Category
ferramentas
Stars
3
Last push
2026-08-29T15:28:37Z
Repository state
ativo
Language
Shell
License
MIT
Added
2026-08-30 01:48:58
Updated
2026-08-30 01:48:58
Origin id
dppdppd/rpm/rpm-relentless-product-manager

README

# rpm - Relentless Project Manager

rpm is an operational layer for LLM-assisted development.

It gives coding agents durable project state, session lifecycle hooks, a
repo-local backlog, drift checks, and reviewable handoffs.

## What rpm Does

### Stores Durable Project Memory

rpm writes project memory into `docs/rpm/` as plain text files that can be
reviewed, diffed, and committed.

| File | Meaning |
|------|---------|
| `docs/rpm/context.md` | Project summary, key files, and review focus |
| `docs/rpm/present/status.md` | Current phase, version, completed work, and open issues |
| `docs/rpm/future/tasks.org` | Durable project backlog |
| `docs/rpm/past/` | Daily logs and session history |
| `docs/rpm/reviews/` | Audit findings and plans |
| `docs/rpm/research/` | Research artifacts |

### Starts Sessions With Context

Session-start hooks load the state an agent needs:

- current git state
- recent commits
- active task or prior handoff
- open backlog items
- project status
- recent logs and learnings
- project-specific instructions

When rpm has an active marker, it resumes the marked task. When rpm has a
committed handoff from the previous session, it starts from that handoff. When
task selection is open, it shows the durable backlog menu.

### Runs A Session Lifecycle

rpm gives each session a lifecycle:

- start with context
- work from a durable task
- capture high-signal learnings
- checkpoint before compaction
- restore after compaction
- reconcile native task events
- wrap up with `/session-end`
- write the next handoff

### Controls Drift

rpm checks the project surfaces that drift during agent work:

- README, CLAUDE.md, AGENTS.md, and skill instructions
- backlogged tasks and task dependencies
- session handoffs
- project status
- documentation references
- contradictions between docs and implementation

`/audit quick` runs deterministic checks. `/audit documents` runs a semantic
documentation review. `/audit project` runs a broader project review and saves
a plan.

### Writes An Audit Trail

rpm turns agent work into repo artifacts:

- selected task
- completed work
- learnings
- open risks
- verification results
- next step

The trail lives in plain text under `docs/rpm/`.

### Works Across Runtimes

rpm ships for Claude Code, Codex, and opencode. Each port uses the hooks and
task surfaces that runtime exposes, while the project state stays in the repo.

## Install

### Claude Code

Install once per machine:

```text
/plugins marketplace add https://github.com/dppdppd/rpm
/plugins install rpm@dppdppd-plugins
```

For local development against a checkout:

```bash
claude --plugin-dir /path/to/rpm
```

Initialize once inside the project:

```text
/init-rpm
```

`/init-rpm` scans the codebase, asks setup questions, scaffolds `docs/rpm/`,
and creates or updates project instructions. Hooks activate immediately.

### Codex

Install from a shell:

```bash
codex plugin marketplace add dppdppd/rpm@codex --enable hooks
```

Enable the plugin in `~/.codex/config.toml`:

```toml
[plugins."rpm@dppdppd-rpm"]
enabled = true
```

Enable hooks:

```toml
[features]
hooks = true
```

Run `$init-rpm` inside the project. Codex skills use `$skill-name`
invocation.

### opencode

From inside the project directory:

```bash
curl -fsSL https://raw.githubusercontent.com/dppdppd/rpm/opencode/install.sh | bash
```

Then run:

```text
/init-rpm
```

## Daily Workflow

### First Run

Run `/init-rpm`. rpm creates the project state under `docs/rpm/` and wires the
session hooks.

### Start A Session

Start the agent normally. rpm injects current project state, current task,
recent commits, backlog items, and handoff instructions.

### Work Mid-Session

Use `/backlog` for durable project tasks. Use `Key finding:` for learnings that
should be captured. rpm checkpoints state around compaction and records native
task events for reconciliation.

### End A Session

Run:

```text
/session-end
```

rpm updates the daily log, present state, backlog, native-task reconciliation,
and next handoff.

## Commands

### `/init-rpm`

Scans the project, creates `docs/rpm/`, and patches the project instruction
file so future sessions can find rpm state.

### `/session-end`

Wraps up the current session. Updates past, present, and future trackers;
records learnings; reconciles native tasks; and writes the next handoff.

### `/backlog`

Manages the durable rpm backlog in `docs/rpm/future/tasks.org`. Add, list,
review, postpone, or mark entries done.

### `/next`

Runs rpm's task-selection loop. It performs preflight checks, reviews completed
worker results, then starts the next actionable backlog item. It also supports
bounded sequences such as `/next 3`, `/next all`, and `/next <group>`.

### `/audit quick`

Fast deterministic scan. Uses zero LLM tokens. Checks common mechanical drift:
git state, tracker gaps, broken references, task dependency issues, and
bookkeeping.

### `/audit documents`

LLM-assisted documentation audit. Looks for stale docs, contradictions, missing
updates, and instruction drift.

### `/audit project`

Full project review. Reads the codebase and docs, uses external research when
needed, and writes a review plus plan file.

### `/research`

Structured research workflow for external facts, comparison, source gathering,
and adversarial validation. Saves artifacts under `docs/rpm/research/`.

### `/rpm ?`

Quick command reference.

## Example Session Start

Backlog selection:

```text
rpm: session active (rpm 2.31.0)

=== git ===
modified=1 untracked=0 staged=0 stashes=0

=== backlog_menu ===
Your rpm backlog:

Active
   1. Add API rate-limit middleware
      detail: future/2026-07-13-rate-limit.md
   2. Fix stale deployment docs

S: something else
R: review tasks

Pick #, #? for details, S, or R.
```

Active-task resume:

```text
rpm: resuming - add API rate-limit middleware (rpm 2.31.0)

An rpm session marker is present - unfinished work on this task.
Treat that task as already selected.
```

## Hooks

| Hook | What it does |
|------|-------------|
| `SessionStart` | Loads project state, git state, backlog, handoffs, and current task |
| `SessionEnd` | Detects sessions that exited before `/session-end` and stubs recovery state |
| `Stop` | Captures learning signals and validates handoff completeness |
| `PostToolUse` | Watches transcript token pressure and review-ready worker results |
| `PreCompact` | Checkpoints state before compaction |
| `PostCompact` | Re-injects state after compaction |
| `TaskCreated` | Persists native task creation events |
| `TaskCompleted` | Persists native task completion events for backlog reconciliation |

Claude Code exposes the full lifecycle. Codex and opencode use each runtime's
supported subset.

## Configuration

Set the context window size used by the PostToolUse monitor. The default is a
1M-token window; override it for smaller model contexts:

```bash
export RPM_CONTEXT_TOKENS=200000
```

## Repository Layout

| Path | Meaning |
|------|---------|
| `plugin/` | Claude Code plugin source |
| `codex/` | Codex port generated from `plugin/` plus overlays |
| `opencode/` | opencode port and installer |
| `docs/rpm/` | This repo's own rpm state |
| `scripts/sync-codex.sh` | Regenerates the Codex port |
| `scripts/sync-opencode.sh` | Regenerates opencode mirrors |
| `scripts/publish-all.sh` | Publishes Claude, Codex, opencode, and version tag |

## License

MIT

More