Roadmap view
AI operating system for product managers. 65 Claude Code skills, 7 multi-perspective review agents, a memory system. Battle-tested in real PM work.
npx -y skills add talgacapri/pm-os --skill roadmap-viewAssembled 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.
- 0 stars0 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
Generate and update a visual, interactive product roadmap from a JSON data file. Produces a branded HTML swimlane view with quarters, sprints, and feature blocks — ready to share with stakeholders. Triggers on: "show roadmap", "update roadmap", "generate roadmap", "roadmap view", "visual roadmap", "sprint roadmap", "share the roadmap", "roadmap HTML", or any request to see or update the product roadmap. Also auto-prompts for roadmap placement when a new PRD or feature concept is created.
SKILL.md
10.8 KB, ~2.7k tokens by cl100k_base, as published. Nobody here has run it
Roadmap View Skill
Generate a visual, interactive product roadmap from a single JSON data file. The output is a branded HTML file that works in any browser, can be shared as a standalone file, and updates instantly when the data changes.
Architecture
outputs/roadmaps/roadmap-data.json <-- Single source of truth (edit this)
|
/roadmap-view skill <-- Reads JSON, generates HTML
|
outputs/roadmaps/roadmap.html <-- Shareable visual output
To update the roadmap: Edit roadmap-data.json, then run /roadmap-view to regenerate.
Step 1: Read the design system
Before generating any output, read your product's design system for brand constants:
- Read your design system file (typically in
context-library/design-system/or wherever your team keeps brand constants) - Pull: backdrop color, surface color, primary text color, accent color, typography choice (heading + body fonts)
- If no design system exists yet, use neutral defaults: backdrop
#F5F7FA, surface#FFFFFF, text#1A1A1A, accent#7C3AED, fontInter
Step 2: Read the roadmap data
Read outputs/roadmaps/roadmap-data.json. This file contains:
{
"product": "[Your product name]",
"owner": "PM name",
"lastUpdated": "2026-04-10",
"todayMarkerLabel": "10 April Update",
"quarters": [
{
"id": "Q2-2026",
"label": "Q2 2026",
"color": "#7C3AED",
"sprints": [
{
"id": "sprint-5",
"label": "Sprint 5",
"dateRange": "31 Mar - 14 Apr",
"startDate": "2026-03-31",
"endDate": "2026-04-14",
"features": [
{
"name": "Feature Name",
"status": "planned",
"category": "feature",
"phase": "design"
}
]
}
]
}
],
"parkingLot": [
{ "name": "Unscheduled Feature", "category": "feature" }
],
"statusConfig": { ... },
"categoryConfig": { ... },
"phaseConfig": { ... }
}
Data model
Quarters contain sprints. Sprints contain features.
Feature statuses: completed, in-progress, planned, at-risk, blocked
Feature categories: feature, maintenance (extend as needed for your team)
Feature phases (optional, omit for maintenance): design, dev, testing
Parking lot: Top-level parkingLot array for features not yet scheduled. Each entry has name and category.
Design-to-Dev auto-rule
When the PM adds a feature with "phase": "design" to a sprint, automatically assume dev work starts the following sprint. When generating or updating the roadmap:
- If a feature appears with
phase: "design"in Sprint N, offer to add it withphase: "dev"to Sprint N+1. - Ask the PM: "[Feature] is in design for Sprint 7. Should I add it to Sprint 8 as dev?"
- If confirmed, add the entry to the next sprint automatically.
This keeps the roadmap honest about the full lifecycle of each feature.
Step 3: Generate the HTML roadmap
Generate a single self-contained HTML file at outputs/roadmaps/roadmap.html.
Layout structure
The layout is a horizontal swimlane grid:
+------ Q1 2026 ------+------------ Q2 2026 ---------------+
| Sprint 3 | Sprint 4 | Sprint 5 | Sprint 6 | Sprint 7 | Sprint 8 |
| 03-17 Mar| 17-31 Mar | 31 Mar- | 14-28 | 04-20 | 20 May- |
| | | 14 Apr | Apr | May | 03 Jun |
+-----------+-----------+----------+----------+----------+----------+
| Feature A | Feature D | Feature G| Feature J| Feature M| Feature P|
| Feature B | Feature E | Feature H| Feature K| Feature N| Feature Q|
| Feature C | Feature F | Feature I| Feature L| Feature O| Feature R|
+-----------+-----------+----------+----------+----------+----------+
^
Today marker
Required visual elements
-
Quarter header row — colored bar spanning all sprints in that quarter. Use the quarter's
colorfield. White text. Full-width within that quarter's columns. -
Sprint header row — below quarters. Each sprint gets a column with:
- Sprint label (bold)
- Date range (smaller, subtext color)
-
Feature blocks — cards within each sprint column:
- White background with category-specific border-left accent (4px)
- Feature name
- Status indicator (colored dot + label)
- Category pill badge
- Subtle shadow on hover
-
Today marker — vertical dashed line positioned at today's date relative to the sprint timeline. Include a label at the top (e.g., "10 April Update") with a small downward arrow/triangle.
-
Legend — bottom of page showing status colors and category colors.
-
Header — Your logo, product name, last updated date, owner.
-
Footer — "Generated by PM-OS" with date.
Visual specs (apply your design system tokens)
/* Page */
background: [your backdrop color];
font-family: [your heading font], sans-serif;
/* Containers */
background: [your surface color];
border-radius: 16px;
box-shadow: 0 4px 6px rgba(0,0,0,0.07);
/* Quarter bars */
border-radius: 8px;
padding: 8px 16px;
color: #FFFFFF;
font-weight: 700;
/* Feature cards */
background: [your surface color];
border-radius: 12px;
border-left: 4px solid [category color];
padding: 12px 16px;
margin-bottom: 8px;
transition: box-shadow 0.2s, transform 0.2s;
/* Feature card hover */
box-shadow: 0 4px 12px rgba(0,0,0,0.12);
transform: translateY(-1px);
/* Status dot */
width: 8px; height: 8px;
border-radius: 50%;
background: [status color];
/* Today marker */
border-left: 2px dashed #EF4444;
position spanning full height of the grid;
Responsive behavior
- Horizontal scroll on small screens (roadmaps are inherently wide)
- Minimum sprint column width: 200px
- Maximum sprint column width: 280px
- Cards stack vertically within each sprint column
Interactive features (CSS/JS only, no frameworks)
- Hover on feature cards — elevate with shadow, show category tooltip
- Click on feature card — toggle expanded view showing full name (for long names)
- Filter by status — clickable legend items toggle visibility
- Filter by category — clickable category pills toggle visibility
- Print-friendly —
@media printstyles that hide filters, show all items, fit to landscape
HTML structure (reference)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>[Your Product] Roadmap</title>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;700&display=swap" rel="stylesheet">
<style>/* All styles inline — single file, no dependencies */</style>
</head>
<body>
<!-- Header: Logo + title + metadata -->
<!-- Filter bar: status and category toggles -->
<!-- Roadmap grid container (horizontal scroll) -->
<!-- Quarter header row -->
<!-- Sprint header row -->
<!-- Feature rows (cards stacked per sprint column) -->
<!-- Today marker (absolute positioned) -->
<!-- Legend -->
<!-- Footer -->
<script>/* Filtering, click handlers, today marker positioning */</script>
</body>
</html>
Step 4: Validate output
Before delivering, check:
- All sprints from JSON appear as columns
- All features appear in correct sprint columns
- Status indicators match the data
- Category borders/pills use correct colors
- Today marker is positioned at the correct sprint (based on today's date vs sprint date ranges)
- Your logo renders correctly
- Your heading font loads
- Horizontal scroll works for many sprints
- Print layout produces a clean landscape view
- File opens correctly in browser with no external dependencies (except Google Fonts)
Step 5: Report to PM
After generating, tell the PM:
- File location:
outputs/roadmaps/roadmap.html - How to update: Edit
outputs/roadmaps/roadmap-data.json, then run/roadmap-viewto regenerate - How to share: Open the HTML in a browser, screenshot or send the file directly
- Quick edits: Describe what JSON fields to change for common operations:
- Add a feature: add object to a sprint's
featuresarray - Move a feature: cut/paste between sprints
- Change status: update the
statusfield - Add a sprint: add sprint object to quarter's
sprintsarray - Add a quarter: add quarter object to
quartersarray
- Add a feature: add object to a sprint's
Trigger: New PRD or feature concept
When this skill detects it's being called after /prd-draft or when a new feature concept is discussed, it should:
- Ask the PM: "Where should this go on the roadmap? Which sprint or quarter?"
- Show current sprints from
roadmap-data.jsonwith their date ranges - Offer options:
- Add to an existing sprint (pick one)
- Create a new sprint
- Add to backlog (not yet scheduled)
- Skip roadmap placement for now
- Update
roadmap-data.jsonwith the new feature entry - Regenerate the HTML automatically
Integration with /prd-draft
At the end of any PRD draft, add this prompt:
This feature has been documented. Would you like to place it on the roadmap?
Current sprints:
- Sprint 5: [date range] ([features])
- Sprint 6: [date range] ([features])
- Sprint 7: [date range] ([features])
- Sprint 8: [date range] ([features])
Options:
1. Add to an existing sprint
2. Create a new sprint
3. Add to backlog
4. Skip for now
Maintaining the roadmap
Common operations via natural language
The PM can say:
- "Move [Feature] to Sprint 7" — update JSON, regenerate
- "Mark [Feature] as completed" — update status, regenerate
- "Add a new sprint 9 from June 3 to June 17" — add sprint to the relevant quarter, regenerate
- "Remove [Feature] from the roadmap" — delete from JSON, regenerate
- "Show the roadmap" — regenerate from current JSON and open
- "Add Q3 2026 to the roadmap" — add new quarter with empty sprints
All operations follow the same pattern: update roadmap-data.json, then regenerate roadmap.html.
Related skills
frontend-design— visual design patterns and component specsprd-draft— PRD creation (triggers roadmap placement prompt)write-prod-strategy— product strategy with roadmap horizonscreate-tickets— engineering backlog (complementary to roadmap view)