roadmap — what is left, and what is next
A read-only reader over the execution plan named by project.json → roadmap.path, in the family of standup and audit-baseline: it reads state and reports, it never mutates. It is not a workflow phase — it does not enter the Track Guard ordering and never blocks a commit.
standup answers six questions and the roadmap is one of them, so it bounds the roadmap section and drops to tallies on a large plan. This command answers only that one question, so it never collapses open rows at any plan size. What collapses instead is the finished work — that is the bulk, and it carries no pickup.
The verbs
node .claude/skills/roadmap/cli.mjs list [--all] [--epic N] [--json] [--root <dir>]
node .claude/skills/roadmap/cli.mjs tasks [--epic N] [--status done|in-progress|planned] [--json]
node .claude/skills/roadmap/cli.mjs epics [--json]
node .claude/skills/roadmap/cli.mjs next [--json]
| Verb | Answers |
|---|
list | The whole plan as a reader sees it — header, rollup, open rows nested under their epic, and the next pickup. |
tasks | Individual rows, filtered by --epic and/or --status. One line per row. |
epics | One line per epic with its status and its done / in-progress / planned tally. |
next | The first planned row in file order, plus the epic it belongs to. |
Every verb takes --json and prints the raw projection instead of the rendering. A missing plan file exits 2 with the path it looked for; a malformed filter exits 1 with the usage error.
What list prints
Roadmap — docs/roadmap-execution-plan.md
13 epics · 78 rows · 66 done, 0 in progress, 12 planned
✅ Epics 1-7, 10, 12 (53 rows, all done)
Epic 8 ⬜ Codebugger explanation trace (0/3 done)
⬜ A Runtime-witness rule and the mcp-debugger declaration
⬜ B The /codebugger session and the explanation trace
Next planned: Epic 8 A Runtime-witness rule and the mcp-debugger declaration
- The rollup folds every wholly-done epic into one line, compressing consecutive numbers into ranges. A lone finished epic reads
Epic 4, never 4-4.
- Open rows are planned and in-progress rows. Every one of them renders, however many there are.
--all expands the rollup: each epic gets its own header and its done rows render too.
--epic N scopes the view to one epic. Naming an epic is itself a request to see it, so a scoped view never collapses.
Every rendered line is whitespace-collapsed, clipped to 96 characters, and stripped of C0/C1 control characters by .claude/skills/lib/terminal-text.mjs. Roadmap titles are repository-controlled content on its way to a terminal, and a row title in this repo already runs past 1000 characters.
Ordering
next and the Next planned: line both mean first in file order — the first planned row reading the plan top to bottom. Neither resolves a dependency graph; sequencing the work is sprint-planner's job, not this reader's.