Roadmap Maintainer
SkillWeb & browsingThis skill helps your AI maintain the Atmos roadmap page. It knows how roadmap entries are organized into milestones, initiatives, and quarters, and it applies the page's rules when adding or updating them. Once added, your AI can keep the roadmap current without breaking its structure.
Available today. Use it from your connected AI after setup.
No other account needed.
Ask your AI to add or update a milestone or initiative on the Atmos roadmap. It will use the correct structure and follow the page's rules as it makes the change.
Then ask your AI: use the Roadmap Maintainer skill
What your AI can do with it
- Add or update milestones, initiatives, and quarters on the roadmap
- Calculate progress percentages for roadmap items
- Keep the curated featured list capped at six items and never change it automatically
- Leave internal refactors out of the changelog
- Format new roadmap entries to match the existing structure
What this skill tells your AI
The instructions your AI receives, as published by cloudposse/atmos in .claude/skills/roadmap/SKILL.md and read by ahel’s review.
Use this skill to keep the Atmos roadmap page at /roadmap accurate, up-to-date, and aligned with actual
development progress.
Core Responsibilities
- Update milestone statuses inside
initiatives[].milestones[]when features ship — never promote a milestone intofeatured[]. - Link milestones to changelog entries when announcements are published — but only for user-visible
changes (see "No Changelog Posts for Internal-Only Refactors" below). For the post itself, use the
changelogskill; this skill only owns theroadmap.jslink. - Add new milestones as development plans evolve.
- Update progress percentages based on milestone completion.
- Add new quarters as time progresses.
- Add new initiatives when strategic priorities expand.
- Audit roadmap accuracy against recent releases.
Featured Items: Curated, Max 6, Do Not Modify
The featured: [] array in roadmap.js is a manually curated highlight reel of the top 6 strategic
initiatives only. It is not the changelog and not a list of every shipped milestone.
Hard cap: 6 items. If a featured slot needs to be added, an existing entry must be removed first — and only the user can decide which.
Rule: Never add, remove, or reorder entries in featured unless the user explicitly asks ("add X to
featured", "promote Y to featured", "remove Z from featured"). When you ship a milestone, update its entry
inside initiatives[].milestones[]. You do not mirror it into featured.
Bar for "featured": A featured item represents a strategic, transformative capability — e.g., "Atmos AI", "Cloud Authentication", "Native CI/CD". Per-release improvements, plumbing, and incremental enhancements never qualify, even when they are shipped.
If unsure, ask the user. Do not guess.
No Changelog Posts for Internal-Only Refactors
Changelog posts in website/blog/ are user-facing release announcements. Internal refactors with no
user-visible behavior change do NOT belong in the changelog, even when they are significant engineering
achievements (complexity reduction, test coverage improvements, function decomposition, dependency removal,
etc.).
Test: If a user upgrading Atmos would see no change in behavior, output, errors, performance, or available
commands/flags, do not write a changelog post. Refactors are visible in PR descriptions and git log; that is
sufficient.
Engineering wins like "function refactored to 100% coverage" or "complexity reduced 247→10" can still be
milestones inside the quality initiative on the roadmap — but without a changelog: field, and without
a corresponding website/blog/*.mdx post.
Key Files
| File | Purpose |
|---|---|
website/src/data/roadmap.js | Primary data file - All initiatives, milestones, quarters, progress |
website/src/components/Roadmap/ | React components (rarely need changes) |
website/blog/ | Changelog entries to link from milestones |
Data Structure
Initiative Format
{
id: 'unique-id', // kebab-case identifier
icon: 'RiIconName', // React Icons (Remix) name
title: 'Initiative Title',
tagline: 'Short tagline',
description: 'Longer description...',
progress: 75, // 0-100 percentage
status: 'in-progress', // 'completed' | 'in-progress' | 'planned'
milestones: [...], // Array of milestones
issues: [1234, 5678], // GitHub issue numbers
}
Milestone Format
{
label: 'Feature name',
status: 'shipped', // 'shipped' | 'in-progress' | 'planned'
quarter: 'q4-2025', // Quarter ID (e.g., 'q1-2025', 'q2-2025')
changelog: 'slug-name', // Optional: changelog slug (links to /changelog/{slug})
pr: 1234, // Optional: GitHub PR number
}
Quarter Format
{
id: 'q4-2025', // Format: q{1-4}-{year}
label: 'Q4 2025', // Display label
status: 'current', // 'completed' | 'current' | 'planned'
}
Featured Item Format (CURATED — DO NOT MODIFY without explicit user request)
{
id: 'unique-id', // kebab-case identifier
icon: 'RiIconName', // React Icons (Remix) name
title: 'Initiative Title',
tagline: 'Short tagline',
description: 'Longer description...',
benefits: 'User-visible benefit...',
status: 'shipped', // 'shipped' | 'in-progress' | 'planned'
quarter: 'q1-2026', // Quarter ID
changelog: 'slug-name', // Optional
pr: 1234, // Optional
experimental: true, // Optional
}
Hard cap: 6 entries in featured: []. Only edit when the user explicitly asks.
Common Tasks
1. Mark Milestone as Shipped
When a feature ships:
- Find the milestone in
website/src/data/roadmap.js - Update
status: 'shipped' - Add
changelog: 'changelog-slug'if announcement exists - Recalculate initiative progress percentage
Example:
// Before
{ label: 'EKS Kubeconfig integration', status: 'in-progress', quarter: 'q4-2025' },
// After
{ label: 'EKS Kubeconfig integration', status: 'shipped', quarter: 'q4-2025', changelog: 'eks-kubeconfig-integration' },
2. Calculate Progress Percentage
Progress = (shipped milestones / total milestones) * 100
// Count milestones
const shipped = milestones.filter(m => m.status === 'shipped').length;
const total = milestones.length;
const progress = Math.round((shipped / total) * 100);
3. Add New Milestone
When adding planned work:
- Add to the appropriate initiative's
milestonesarray - Set
status: 'planned' - Set
quarterto target quarter - Update progress percentage (will decrease since total increased)
4. Link to Changelog
Find changelog slugs in website/blog/:
# Find changelog files
ls website/blog/*.mdx
# Check frontmatter for slug
head -20 website/blog/2025-01-15-feature-name.mdx
The slug in frontmatter becomes the changelog link path. For the post itself, use the changelog skill.
5. Add New Quarter
When a new quarter starts:
- Add quarter to
quartersarray inroadmap.js - Update previous quarter's status to
'completed' - Set new quarter's status to
'current'
quarters: [
{ id: 'q3-2025', label: 'Q3 2025', status: 'completed' },
{ id: 'q4-2025', label: 'Q4 2025', status: 'current' }, // Current
{ id: 'q1-2026', label: 'Q1 2026', status: 'planned' },
],
6. Add New Initiative
When adding a new strategic initiative:
- Add to
initiativesarray - Choose appropriate icon from React Icons (Remix set -
Ri*prefix) - Start with
progress: 0andstatus: 'planned' - Add initial milestones
{
id: 'new-initiative',
icon: 'RiRocketLine',
title: 'New Initiative',
tagline: 'Brief tagline',
description: 'Detailed description of the initiative goals...',
progress: 0,
status: 'planned',
milestones: [
{ label: 'First milestone', status: 'planned', quarter: 'q1-2026' },
],
issues: [],
},
Workflow for Updates
-
Identify what changed
- New feature shipped? → Update milestone status
- New changelog published? → Link milestone to changelog
- New quarter started? → Update quarter statuses
- New work planned? → Add milestones
-
Edit
website/src/data/roadmap.js- Make targeted changes
- Recalculate progress percentages
-
Verify the build
cd website && npm run build -
Preview if needed
cd website && npm run start # Visit http://localhost:3000/roadmap
Auditing Roadmap Accuracy
Periodically verify roadmap against actual releases:
# Check recent changelog entries
ls -la website/blog/ | tail -20
# Check recent PRs for shipped features
gh pr list --state merged --limit 20 --repo cloudposse/atmos
# Search for features mentioned in roadmap
grep -r "feature-name" website/blog/
Icon Reference
Common icons (React Icons Remix set):
RiLockLine- Authentication/SecurityRiFlashlightLine- Performance/DXRiSearchLine- DiscoverabilityRiFlowChart- WorkflowsRiPlugLine- ExtensibilityRiBox3Line- Vendoring/PackagingRiGitBranchLine- CI/CDRiExchangeLine- MigrationRiShieldCheckLine- QualityRiBookOpenLine- DocumentationRiRocketLine- New featuresRiCodeLine- DevelopmentRiToolsLine- Tooling
Quality Checks
Before completing any roadmap update:
- Progress percentages are accurate (shipped/total * 100)
- Initiative status reflects milestone states
- Changelog links are valid slugs
- Quarter statuses are consistent (only one 'current')
- Website builds successfully
- Did NOT add to
featured[]without explicit user request -
featured[]still contains <= 6 entries - No changelog post for an internal-only refactor (would a user notice the change? if not, no post)
Related skills
changelogskill — owns the blog post template, tags, authors, and style rules for the post a milestone links to. This skill only ownsroadmap.js; hand off post-writing tochangelog.pull-requestskill — decides whether a roadmap update is required at all (onlyminor/majorPRs).
Self-Maintenance
This skill should be updated when:
- Roadmap data structure changes
- New initiative categories are added
- Component structure changes
Dependencies:
website/src/data/roadmap.js- Primary data filewebsite/src/components/Roadmap/- Component structurewebsite/blog/- Changelog entries for linking
Signals
- GitHub stars
- 1k
- Forks
- 175
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
roadmap-cloudposse- Source
- github.com/cloudposse/atmos