agentsclimarketplace

Roadmap migrate

Skill JasonWarrenUK/goblin-mode/skills/roadmap-migrate

Three goblins in a trenchcoat pretending to be a senior developer. Claude Code config shaped by ADHD, friction, and spite.

Install
npx -y skills add JasonWarrenUK/goblin-mode --skill roadmap-migrate

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

{{ 𝛀𝛀𝛀 }} Convert an old simple-style roadmap (single Markdown, four statuses, <a name> anchors, roadmaps.json pointer registry) into the rich phase-array format (roadmaps.json source of truth + PHASE task list + prose overview).

SKILL.md

6.5 KB, as published. Nobody here has run it

Upgrade an old simple-format roadmap to the rich phase-array format the other roadmap-* skills expect. This is a one-way structural rewrite of the source of truth, so it is user-initiated only (never model-triggered) β€” the other skills detect the old format and point the user here.

Old (simple) format: a single docs/roadmaps/{name}.md is the source of truth, with <a name="m{N}"> anchors, four sections (In Progress / To Do / Blocked / Completed), - [ ]/- [x] checkboxes, prose β€” **depends on {IDs}**, a graph TD diagram; .claude/roadmaps.json is a {"roadmaps":[{name,path}]} pointer registry.

Rich format: .claude/roadmaps.json is the source of truth β€” an array of phase objects {name, path, archived?, externalGates, milestones} with six statuses (todo, blocked, paused, deferred, done, out_of_scope), external gates, milestone/gate dependencies, and a mechanical status recompute. docs/roadmaps/{PHASE}.md and docs/reports/ROADMAP_OVERVIEW.md are projections.

Shared conventions: ~/.claude/library/references/roadmap-conventions.md. The CLI is python3 "$HOME"/.claude/library/scripts/roadmap.py.

Steps

1. Locate and confirm it is old format

Resolve the roadmap: $ARGUMENTS path/name β†’ .claude/roadmaps.json β†’ docs/roadmaps/ scan. Run python3 "$HOME"/.claude/library/scripts/roadmap.py detect:

  • Exit 3 β€” old format, proceed.
  • Exit 0 β€” already rich; tell the user there is nothing to migrate and stop.
  • Exit 2 β€” could not locate; ask for the path.

Show git status and advise the user to commit or stash first β€” this overwrites the source of truth. Do not proceed with a dirty tree unless the user says so.

2. Parse the old Markdown

Read the .md. For each <a name="m{N}"> milestone block, capture:

  • Milestone number and name; the goal (> **Goal:** / > [!IMPORTANT] block).
  • Tasks in each section (m{N}-doing, m{N}-todo, m{N}-blocked, m{N}-done): the ID, the description, and any β€” **depends on {IDs}** clause. Note which section each came from (doing/todo/blocked/done).

Also parse the aggregated graph TD diagram for {A} --> {B} edges β€” merge these into each task's dependency set, so a dependency drawn only in the diagram (not written in prose) is not lost.

3. Derive milestones, tasks, and dependencies

Build milestone objects {id: "M{N}", name, goal, tasks:[…]}. Each task: {id, description, dependsOn:[…]} with dependsOn the union of its prose depends-clause and its incoming Mermaid edges. The old format has no external gates β†’ externalGates: []. Preserve any - Note: sub-bullets as a task notes field.

4. Assign statuses (seed, then recompute)

Seed each task's status from its old section, then let the recompute derive the rest:

  • Completed (- [x]) β†’ done (terminal seed β€” kept).
  • In Progress β†’ there is no in-progress state in the rich format. Seed as todo (the recompute promotes it to blocked if it has non-done deps). Record every task remapped this way for the report β€” the user may want to re-seed one deliberately (e.g. paused).
  • To Do / Blocked β†’ leave unseeded; the recompute sets todo (empty/all-done deps) or blocked (any non-done dep).

Write the seeded JSON, then run python3 "$HOME"/.claude/library/scripts/roadmap.py recompute so every non-terminal status is derived, not carried over. This guarantees the migrated file passes validation immediately.

5. Write the phase-array roadmaps.json

Write a single phase object (or, if migrating one roadmap among several pointer-registry entries, an array β€” append this phase and mark others as needed). Structure, tabs, field order, British spelling exactly as roadmap-create Step 6. Set the phase name from the old roadmap name (or $ARGUMENTS), path to the .md it will regenerate (reuse the old path so existing links hold), archived: false, externalGates: [].

6. Regenerate the .md as a rich projection

Overwrite the old .md at the same path with the rich layout (see roadmap-create Step 7): milestone headings, - [ ] **{ID}** β€” {description} lines with status annotations, and a generated graph LR diagram β€” no <a name> anchors, no four-section structure, no graph TD. The diagram is the verbatim output of python3 "$HOME"/.claude/library/scripts/roadmap.py graph --mermaid --direction LR (terminal milestone edges, canonical colours, correct classDef placement β€” nothing hand-computed).

7. Generate ROADMAP_OVERVIEW.md

The old format had no prose overview. Synthesise a minimal one (see roadmap-create Step 8) from the milestone goals, with the header count from python3 "$HOME"/.claude/library/scripts/roadmap.py stats. Flag the narrative sections as stubs for the user to flesh out β€” do not invent decisions or rationale that weren't in the source.

8. Validate and report

Run python3 "$HOME"/.claude/library/scripts/roadmap.py validate β€” it must report clean; fix any discrepancy. Then report:

  • Milestones and tasks migrated; the status distribution (roadmap.py stats).
  • In-Progress remaps β€” every task that lost its in-progress state, so the user can re-seed any deliberately.
  • Any dependency edges recovered only from the Mermaid diagram (not written in prose) β€” worth a glance in case the diagram was stale.
  • The three artefact paths written, and a note that ROADMAP_OVERVIEW.md's narrative is a stub.

Notes

  • One-way: the old single-file model cannot be reconstructed from the rich format, hence the git-checkpoint advice. disable-model-invocation keeps it explicit.
  • Statuses end up derived, not copied β€” the recompute is the source of truth for everything except done/out_of_scope seeds.
  • Tabs not spaces; British spelling throughout. After migration, the roadmap is maintained by roadmap-maintain, extended by roadmap-update-tasks, and rendered by artefact-roadmap.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.