plmhub
All commands

Roadmaps

23 commands · plm roadmap

Visual plans toward an outcome: a single road of cliffs, climbed one at a time.

A roadmap is one road toward one outcome: Launch, first sale, first income. It is a strict sequence of stops (the web draws them as cliffs on a mountain climb), each with a label, a status, a note, and its own comment thread. The whole plan is a plm.roadmap/v1 document, so an agent can build or reshape a plan from the terminal while a human watches it redraw live in the browser, and every mutation lands in an audit trail that outlives even deletion.

  1. Step 1 of 6

    Raise the road

    One roadmap = one outcome. Start from a template (launch, first-sale, first-income, fundraise) or blank. The new roadmap becomes your active one, so every verb after this can omit the id.

    plm roadmap new
    $ plm roadmap new "Launch" --template launch
    ✓ created roadmap "Launch" from launch · now active
    rdmp_5c1284aa90b1

    full form · plm roadmap new <title> [--template launch|first-sale|first-income|fundraise|blank]

  2. Step 2 of 6

    Add the cliffs

    Each stop on the road is a cliff: a label, an optional markdown note, a lucide icon, a status. Keep labels short and outcome-shaped; the note carries the detail. Order is the road itself, and plm roadmap reorder rearranges it later.

    plm roadmap node
    $ plm roadmap node --label "Beta cohort onboarded" --icon Users
    ✓ added node "Beta cohort onboarded"
    n_8f21c4d0

    full form · plm roadmap node [<id>] --label "…" [--note "…" --icon <Lucide> --status todo|doing|done]

  3. Step 3 of 6

    Climb it

    Progress on a roadmap is flipping cliffs: todo becomes doing becomes done. Status is deliberately manual here (unlike goals, where progress derives from problems): a roadmap is the outward-facing plan, and marking a cliff done is a statement.

    plm roadmap node-set
    $ plm roadmap node-set --node n_8f21c4d0 --status done
    ✓ updated n_8f21c4d0
    n_8f21c4d0

    full form · plm roadmap node-set [<id>] --node <n_…> [--label --note --icon --status todo|doing|done]

  4. Step 4 of 6

    Read the climb

    The show view is the whole plan in one glance: every cliff in order, its status, its icon, its comment count. This is what an agent reads before proposing the next move, and what you paste into a standup instead of a screenshot.

    plm roadmap show
    $ plm roadmap show
    Launch [active] rev 12 · owner Edvard
    1. Domain live [done] n_2ba90c11
    2. Beta cohort onboarded [doing] (Users) n_8f21c4d0
    3. First paying customer [todo] [2 comments] n_f00d3e42

    full form · plm roadmap show [<id>]

  5. Step 5 of 6

    Discuss on the cliff

    Every cliff carries its own thread: doubts, context, links to evidence, nested replies. The conversation lives inside the plan document itself, so it travels with the roadmap instead of scrolling away in chat.

    plm roadmap comment
    $ plm roadmap comment n_f00d3e42 --body "pricing page must land before this one"
    ✓ commented on n_f00d3e42
    c_77ab120e

    full form · plm roadmap comment [<id>] <n_…> --body "…" [--parent <c_…>]

  6. Step 6 of 6

    Watch it move, live

    The scene is the source of truth and every save bumps its rev. watch streams those signals: an agent reshaping the plan makes the browser redraw live, and a human dragging cliffs in the editor is visible to a watching agent. Two hands, one document.

    plm roadmap watch
    $ plm roadmap watch
    watching rdmp_5c1284aa90b1 — Ctrl-C to stop

    full form · plm roadmap watch [<id>]

Also in this chapter

plm roadmap templates
$ plm roadmap templates

List the starter templates: launch, first-sale, first-income, fundraise, blank.

plm roadmap use
$ plm roadmap use <rdmp_…>
✓ active roadmap: rdmp_5c1284aa90b1
rdmp_5c1284aa90b1

Set the active roadmap; verbs below omit the id.

plm roadmap ls
$ plm roadmap ls
rdmp_5c1284aa90b1 [active] Launch (8 cliffs)

This project's roadmaps with status and cliff count.

plm roadmap pull
$ plm roadmap pull [<id>]

Raw plm.roadmap/v1 content JSON, for editing and set.

plm roadmap set
$ plm roadmap set [<id>] --file <path|-> | --stdin | --content "…"
✓ saved rdmp_5c1284aa90b1 · rev 13
rdmp_5c1284aa90b1

Replace the whole content document. The raw counterpart to node and node-set.

plm roadmap node-rm
$ plm roadmap node-rm [<id>] <n_…>
✓ removed n_8f21c4d0

Delete a cliff. Order reindexes.

plm roadmap reorder
$ plm roadmap reorder [<id>] <n_…> <n_…> …
✓ reordered rdmp_5c1284aa90b1

Set cliff order: listed first, the rest keep their order.

plm roadmap comment-edit
$ plm roadmap comment-edit [<id>] <c_…> --body "…"
✓ edited c_77ab120e

Edit your own comment. Stamps it as edited.

plm roadmap comment-rm
$ plm roadmap comment-rm [<id>] <c_…>
✓ removed c_77ab120e

Delete your own comment while fresh.

plm roadmap rename
$ plm roadmap rename [<id>] <new title>
✓ renamed rdmp_5c1284aa90b1 → "Launch v2"

Rename the roadmap.

plm roadmap archive
$ plm roadmap archive | unarchive [<id>]
✓ rdmp_5c1284aa90b1 → archived

Toggle archived status.

plm roadmap rm
$ plm roadmap rm <rdmp_…>
✓ deleted rdmp_5c1284aa90b1 (content purged; audit kept)

Delete. Owner-only, soft-delete: content purged, audit kept.

plm roadmap audit
$ plm roadmap audit [<id>]
2026-07-12 14:02:11 node_set n_8f21c4d0 → done · Edvard

The kept audit trail. Outlives a delete.

plm roadmap delegate
$ plm roadmap delegate [<id>] --user <usr_…> --right manage|delete
✓ delegated manage to usr_9a4b2c

Owner delegates rights to a teammate.

plm roadmap undelegate
$ plm roadmap undelegate [<id>] --user <usr_…>
✓ revoked usr_9a4b2c on rdmp_5c1284aa90b1

Owner revokes a delegate.

plm roadmap transfer
$ plm roadmap transfer [<id>] --user <usr_…>
✓ transferred rdmp_5c1284aa90b1 → usr_9a4b2c

Owner transfers ownership. The new owner must be a member.

plm roadmap overview
$ plm roadmap overview · overview-set
✓ overview saved

Read or save the roadmaps-page diagram: card positions and links between roadmaps.

  • Add --as <label> to any mutating verb to name the agent in the live-edit bar a watching human sees.
  • Active roadmap: after new or use, omit the id. Verbs use the active roadmap from .plmhub/state.json; an explicit rdmp_… first argument always overrides it.
  • A node is called a Cliff in the web editor (the mountain climb); the id and API keep node.
  • Cliff status is manual (todo, doing, done) by design; goal progress stays derived. A roadmap is the outward plan, goals are the internal engine.
  • Delete is owner-only and soft: content is purged, the audit trail stays readable forever.