write-roadmap

Write an ordered program of plans under .tmp/grunt/roadmaps/. Use for /write-roadmap. Stops for lock. Does not implement.

SKILL.md

GitHub

write-roadmap

You author the roadmap. First read principle-sequence-verifiable-units and follow it. Persist under .tmp/grunt/roadmaps/ via Write (hook runs .rulesync/scripts/persist-roadmap.mjs). Copy the shape below. All boxes [ ]. Status stays draft until the user locks it.

Before you ask the user, read principle-never-block-on-the-human. Ask only when the user alone can answer.

Two or more slices. One slice is /write-plan: say so and stop. Do not write a file.

Research until every slice is defensible. Ask only what changes the program. Then write the draft and stop.

After each save, spawn a fresh host agent whose prompt is only /review-roadmap {n} and the roadmap's absolute path (on Claude Code the claude agent type; grunt is not the reviewer). Accept or reject each finding with a reason. Apply accepted ones to the same file and add one - review: … entry each to ## Previous mistakes. Bump reviews by one in the save that settles the round, even with no findings: send a bare reviews: {n} line above ROADMAP_NAME:. The save denies a lower count.

On feedback, revise the same file (a Write of the saved path updates it in place), add a - feedback: … entry for what the user rejected and what changed, and run /review-roadmap again. Never edit or drop an earlier entry.

On lock, set status: locked on the same file and stop. The save denies the lock while reviews is 0. Do not run /write-plan or /implement-plan from this skill.

Report the serial, the absolute path, the slice titles in order, the top risk, and the review findings you rejected with why. Stop for the lock.

Shape

ROADMAP_NAME: is 3–6 words. The hook turns it into the slug and the frontmatter. Do not invent serial, created, or source.

ROADMAP_NAME: auth program

# auth-program

## Goal
Ship auth as two plans. The second plan waits on the first. Names stay reserved.

## Context
- Init owns reserved names

## Decisions
- D1. Fetch stays upstream. Rejected: a vendored snapshot.

## Order
1 [ ] Title: auth types
      Goal: Reserved names list the new skills.
      Why: Later slices add skills. This slot keeps init and INDEX together.
2 [ ] Title: commit diff pass
      Goal: Commit skills strip narrating comments.
      Why: Every later land goes through commit.

## Watch-outs
- (none)

## Verify
3 [ ] Verify
3.1 [ ] both child plans have finished Verify

## Previous mistakes
(none)

Row rules

  • Headings, this order only: Goal, Context, Decisions, Order, Watch-outs, Verify, Previous mistakes. No other ##.
  • Previous mistakes is (none) on a new roadmap, then one - {feedback|verify|review|premise|slice}: {what was wrong} → {what changed} line per entry, optional (lesson: {slug}). Append-only.
  • Goal is 1–3 sentences.
  • Context, Decisions, and Watch-outs are bullets. Each decision names the rejected alternative.
  • Each slice is N [ ] Title: {2–6 words} then indented Goal: and Why:. Those lines are not checkboxes.
  • Slice Goal is one sentence: what that plan ships.
  • Slice Why is one or two sentences: why this slot, and what it unlocks.
  • Omit Location on a draft. /implement-roadmap fills it with the absolute plan path.
  • No Type. No Commit. Those go on the child plan.
  • Verify is 1–5 leaves, N.M [ ], same grammar as a plan.