skills/doc-view-roadmap/SKILL.md
{{ ƔƔƔ }} Visualise a project roadmap as an interactive HTML dashboard
npx skillsauth add jasonwarrenuk/goblin-mode doc-view-roadmapInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Generate a self-contained HTML dashboard showing the current state of a project roadmap. Uses the visual-explainer skill's rendering patterns and a pink-to-sky colour palette derived from the user's terminal colour scheme.
Check in this order:
$ARGUMENTS provided — treat as roadmap name or path. Try docs/roadmaps/$ARGUMENTS.md then docs/roadmaps/$ARGUMENTS..claude/roadmaps.json — parse if present. One entry: use it. Multiple entries: list names and paths, ask the user to pick one.docs/roadmaps/ directory — list .md files. One file: use it. Multiple: ask.Grep for classDef.*mile to find roadmap files outside the standard location.Stop and tell the user if nothing is found.
Read the file and extract:
Milestone blocks — for each <a name="m{N}"> anchor:
m{N}-doing), To Do (m{N}-todo), Blocked (m{N}-blocked), Completed (m{N}-done)2TI.7), description, any depends on {IDs} referencesCounts per milestone:
total = done + in_progress + todo + blocked
done_pct = done / total * 100
Dependency edges — extract — **depends on {IDs}** clauses into a map of taskId → [blockedBy...].
Status summary table — read the top-level | **Cat** | Status | Next Up | Blocked | table if present.
Resolve the installed path with Glob:
~/.claude/plugins/cache/visual-explainer-marketplace/visual-explainer/*/
Read these files before generating any HTML:
references/css-patterns.md — depth tiers, Mermaid zoom controls, overflow protection, collapsible patternreferences/libraries.md — font pairings, CDN imports, Mermaid theming guidetemplates/mermaid-flowchart.html — the full diagram-shell pattern with zoom/pan JS (~200 lines; copy wholesale)references/responsive-nav.md — sticky sidebar TOC + mobile horizontal navDo not skip any of these. The zoom/pan JS in particular must be reproduced exactly.
Derive from the user's terminal gradient: warm pink (#B34480) → steel blue (#3E7F96), mapped to Reasonable Colors.
Load the CDN stylesheet in <head>:
<link rel="stylesheet" href="https://unpkg.com/[email protected]/reasonable-colors.css">
Define semantic aliases — components reference these only, never RC vars directly:
:root {
/* Milestone — sky family (≈ #3E7F96) */
--color-milestone: var(--color-sky-4); /* #007590 */
--color-milestone-bg: var(--color-sky-1); /* #e3f7ff */
--color-milestone-text: var(--color-sky-6); /* #001f28 */
/* Primary accent — pink family (≈ #B34480) */
--color-primary: var(--color-pink-4); /* #d2008f */
--color-primary-bg: var(--color-pink-1); /* #fff7fb */
--color-primary-text: var(--color-pink-6); /* #4b0030 */
/* Task status */
--color-done: var(--color-teal-4); /* #007c6e */
--color-done-bg: var(--color-teal-1); /* #d7fff7 */
--color-in-progress: var(--color-sky-4);
--color-in-progress-bg: var(--color-sky-1);
--color-todo: var(--color-gray-4); /* #6f6f6f */
--color-todo-bg: var(--color-gray-1); /* #f6f6f6 */
--color-blocked: var(--color-pink-4);
--color-blocked-bg: var(--color-pink-1);
}
@media (prefers-color-scheme: dark) {
:root {
--color-milestone: var(--color-sky-2); /* #aee9ff */
--color-milestone-bg: var(--color-sky-6); /* #001f28 */
--color-milestone-text: var(--color-sky-1);
--color-primary: var(--color-pink-2); /* #ffdcec */
--color-primary-bg: var(--color-pink-6);
--color-primary-text: var(--color-pink-1);
--color-done: var(--color-teal-2);
--color-done-bg: var(--color-teal-6);
--color-in-progress: var(--color-sky-2);
--color-in-progress-bg: var(--color-sky-6);
--color-todo: var(--color-gray-3);
--color-todo-bg: var(--color-gray-6);
--color-blocked: var(--color-pink-3);
--color-blocked-bg: var(--color-pink-5);
}
}
Shade differences of ≥ 3 guarantee WCAG AA body text contrast on all pairs.
Editorial + Blueprint hybrid:
var(--color-gray-1)), sky-tinted milestone headers, generous whitespace, subtle CSS grid-line background patternmkdir -p {project_root}/docs/diagrams
Write to {project_root}/docs/diagrams/roadmap-{name}.html.
Use the responsive section navigation from references/responsive-nav.md. Four sections:
Hero KPI card (ve-card--hero): {done}/{total} tasks — {pct}% complete. Large type, accent-tinted background.
Per-milestone mini-cards in a CSS Grid row:
{done}/{total} countlinear-gradient, width set via inline style:<div class="progress-bar">
<div class="progress-fill" style="width: {pct}%"></div>
</div>
Colour the fill by milestone health: high completion → --color-done, in-flight → --color-in-progress, unstarted → --color-todo, has blockers → --color-blocked.
One <details>/<summary> per milestone. Open whichever milestone has In Progress tasks; collapse the rest.
Inside each card, four labelled groups:
● In Progress ○ To Do ✓ Done ✗ Blocked
Task items: ID badge (monospace, small, accent-tinted) + description + dependency note.
Overflow rule: never display: flex on <li>. Use position: relative + padding-left for status indicators. All grid/flex children get min-width: 0.
Use the full diagram-shell pattern from templates/mermaid-flowchart.html. Never bare <pre class="mermaid">.
Map the roadmap's existing :::open / :::blocked / :::mile classDefs to the semantic palette:
classDef open fill:var(--color-todo-bg), stroke:var(--color-todo), color:var(--color-todo);
classDef blocked fill:var(--color-blocked-bg), stroke:var(--color-blocked), color:var(--color-blocked);
classDef mile fill:var(--color-milestone-bg), stroke:var(--color-milestone), color:var(--color-milestone-text);
classDef done fill:var(--color-done-bg), stroke:var(--color-done), color:var(--color-done);
graph TD. For 15+ nodes add layout: 'elk' (see libraries.md CDN import).theme: 'base' with themeVariables matching the page palette.fontSize: 16 in themeVariables.<br/>, never \n.Flat prioritised list of tasks that are In Progress or To Do with no unresolved dependencies. Group by milestone. Each item: task ID badge + description + milestone label pill.
Before writing the file:
.mermaid-wrap has +/−/reset/expand buttons, Ctrl/Cmd+scroll zoom, drag-to-pan, click-to-expand.node CSS class (breaks Mermaid SVG positioning)min-width: 0; overflow-wrap: break-word on text containers<link> present in <head>open {project_root}/docs/diagrams/roadmap-{name}.html
Report:
development
Writing style guide for Jason Warren. Use this skill whenever writing prose, reports, documentation, or any substantive text for Jason — including drafting sections, editing existing content, or rewriting passages. Also use when Jason asks you to review or improve writing. Trigger on any request involving writing, drafting, editing, or composing text that isn't purely code. This includes github Pull Requests & Linear tasks
testing
{{ 𝚫𝚫𝚫 }} Check all version number props and update them
tools
{{ 𝛀𝛀𝛀 }} Map out project status, direction, and next steps
development
{{ 𝛀𝛀𝛀 }} Review code changes on the current branch against its open PR