Skip to content
Docs · CLI

roadkeep

A ROADMAP and a CHANGELOG are formats held together by convention, so they drift the moment someone is in a hurry — or the moment an agent writes to them. roadkeep owns the writes: an entry goes in through a command that checks its shape at the point of insertion, which makes the file a schema rather than a habit. Its desktop app reads every backlog on the machine at once.

Public numbers

Latest release
v0.2.576
released 2026-11-09
PyPI downloads
204
last 30 days

Public numbers from GitHub and PyPI, as of 2026-11-13. The site is rebuilt daily.

Install

Claude Code plugin
/plugin marketplace add alegauss/alegauss.github.io
/plugin install roadkeep@alegauss
uvx
uvx roadkeep lint
pip
pip install roadkeep

What comes next

From the product's own docs/ROADMAP.md at dd41f01.

Block M

Codex integration (one engine, host-specific adapters)

  • PartialNo end-to-end evidence shows Roadkeep enforcement inside Codex
  • DesignedUsers have no verified Codex adoption or distribution guide

Recently shipped

All 1222 entries →
  1. two branches that each added a block of their own are refused as prose both sides moved

    Block headings each side inserted under labels the other does not use join one frame verbatim, and their lines and sections land under them.

    RK1750 · a994c3f
  2. syncing main into a feature is refused when main shipped a line the feature waits on

    The driver composes the other side's ledger and store from git's GITHEAD, resolves deps against them and re-derives the annotations the merge moved.

    RK1749 · fb75a57
  3. the renumber the merge driver names derives a destination the other branch already spent

    renumber --past REV derives past the ids that revision spent, read through git, and the driver's refusal names it.

    RK1748 · 49b0e21
  4. the prose merge refuses two branches that each shipped a decision

    The prose merge decides record lines by id with the roadmap's rule and keeps them out of the frame, so decisions merge like sections.

    RK1747 · d7149c1
  5. declare leaves a new governed file out of a merge driver the project already wired

    declare extends .gitattributes to the new file wherever a governed file already merges through the driver, and names the line.

    RK1746 · 55c8f7e
  6. the prose merge refuses or misplaces sections when one branch added a block

    The prose skeleton folds blank runs like the roadmap's, and a section arriving in a block-organised file goes to the end of its own block.

    RK1745 · 0da6b39
  7. no tested strategy keeps one backlog consistent across parallel long-lived branches

    Twenty-one merge scenarios ran against the driver, seven defects were fixed as their own tasks, and the strategy is in the skill.

    RK1744 · a244e9a
  8. merge refuses a branch that adds a block while the other only files lines under an existing one

    The merge skeleton folds blank-line runs, so a block added on one side merges with lines filed under an existing one on the other.

    RK1743 · 38de24a