PM is a Claude Code plugin that tracks epics, maintains a detour stack, and enforces a reconcile gate so nothing is lost across compaction or pivots. PM is a lightweight project-management layer that sits above OpenSpec and Superpowers inside Claude Code. It doesn’t duplicate what those tools already do — it fills the gap above them, owning cross-epic ordering, an explicit detour stack, and the reconcile gate that ties interrupted work back to the proposal it was built against. After any context compaction, PM answers three questions in seconds: what were we working on before the detour, what work is currently outstanding, and what is the next highest-priority item to tackle.
The problem PM solves
Agentic coding sessions are interrupted constantly — a bug surfaces mid-sprint, a new requirement lands, a context window fills up and collapses. Traditional task trackers live outside the session entirely and don’t survive the compaction boundary. Notes in a conversation transcript vanish with the context. Even a carefully maintainedCLAUDE.md doesn’t tell you whether the proposal you were halfway through is still valid after the detour that interrupted it.
PM solves this by living inside Claude Code as a plugin with its own hooks. A SessionStart hook re-injects the full briefing the moment a new context begins — so the agent picking up after compaction sees the active epic, the detour stack, and the next-up queue without any manual re-orientation. A PreToolUse gate-guard hook mechanically blocks writes while a reconcile is still owed. Nothing depends on the agent “remembering” the right thing.
Core mechanisms
PM is built on three interlocking mechanisms. Together they make project state durable across the events that normally destroy it:Epics & Lanes
openspec, superpowers, claude-code, decision, external), a priority (P0–P3), and a lifecycle status. Epics are lane-agnostic at the conductor level — PM tracks them regardless of which tool owns execution.Detour Stack
.conductor/state.json — it survives compaction and session restarts.Reconcile Gate
reconciler agent re-validates it against what the detour actually shipped. The verdict is written durably via record-reconcile — not left in the transcript — and a PreToolUse hook hard-blocks any write while the gate is still owed.Quick Start
/pm:init in your project, and get your first status briefing in under five minutes. No npm install, no external dependencies.What PM is NOT
PM is not a replacement for OpenSpec or Superpowers. It sits deliberately above them and only owns what neither of those tools owns:- OpenSpec owns the spec-driven proposal workflow —
proposal.md,design.md,tasks.md, gate reviews. PM tracks that an OpenSpec epic exists and its priority; it doesn’t touch the spec artifacts themselves. - Superpowers owns execution discipline — brainstorming, TDD, subagent-driven development, code review. PM tracks when and in what order an epic gets built; Superpowers drives how well it gets built.
- PM owns cross-epic ordering, the detour stack, and reconcile links. Nothing else. Stories stay wherever they already live — PM doesn’t move them or replace them.
AGENTS.md-based platforms are on the roadmap — as of 0.24.0 the engine’s rules block is platform-aware groundwork for that (the host declares itself via --platform, and the block is written to the file that platform actually reads), but no second platform’s commands or hooks ship yet.Real numbers
These aren’t benchmarks — they’re real figures pulled mechanically from PM’s own repo (grep/wc/the test runner), refreshed every release, from the project that manages its own development through PM itself:
From Industry-Frontier Practice
AI-agent reference — two channels, and only one of them can lie
What your engine accepts: ask your engine. Since 0.37.0,--help is per-verb — node "$ENGINE" <verb> --help prints that verb’s real flag surface: every flag, which take no value, which repeat, and the legal values of every closed enum (--outcome, --status, --lane, --priority, --platform). As of 0.44.0 it also names the verb’s positional form and, on a mutating verb, --force, all projected from the same declarations the engine’s pre-dispatch command-line check enforces, so it is version-exact by construction and cannot advertise a flag your engine refuses. The help token works anywhere after the verb and never performs the verb’s write. Reach for it before reading engine source, and before guessing a flag name.
Procedure, concepts and rationale: this site. It publishes llms.txt — a lightweight (~9KB) index of every doc page, whose entries are already markdown URLs — and a free, no-auth MCP server at https://pm-plugin.dev/mcp that answers a targeted question in one call. llms-full.txt is the entire site as one document (~360KB, tens of thousands of tokens); reach for it only when you genuinely need the complete reference in one shot.
/pm:changelog says what your repo is missing.About the Author

Rob Sherman is VP of Product Development, Head of AI at Highway.ai, and the founder of Onvex AI. He works out of Los Angeles.
Thirty years of it: software engineering, marketing, engineering management, video game production, and taking SaaS products from zero to one. Most of his open-source work sits where agents meet the systems they have to touch — MCP servers for shells, Jira, Google Workspace, financial data, and the Claude Code plugins that tie them together.
pm exists because agents keep missing the plainest project management there is. They lose the thread of what the work was for, skip the gate that would have caught the defect, and leave no record that anyone decided anything. His own projects drifted the same way. So pm is that experience written down as a thin layer above whatever the agents are doing — not a framework to adopt, just the questions a good producer would have asked anyway, asked at the moment they still change the outcome.
It manages its own development, too. Every release is planned, gated, reviewed and archived by the plugin itself, so every rule it asks of you is one it already lives with.

