Roadmap Maintainer

SkillWeb & browsing

Lets your agent update the Atmos roadmap page by editing milestones, initiatives, quarters, and progress percentages.

Use Roadmap Maintainer in Claude, ChatGPT or Ahel Desktop

Free. Sign in, add Roadmap Maintainer and connect your AI. About a minute.

Also: Claude Code · Cursor · Codex

Then ask your AI: use the Roadmap Maintainer skill

Details

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Roadmap MaintainerStart free
About this skill

Maintain and update the Atmos roadmap page (website/src/data/roadmap.js): milestone/initiative/quarter schema, progress-percentage math, the curated featured[] cap (max 6, never auto-modified), and the no-changelog-for-internal-refactors gate. Invoke when adding/updating milestones, initiatives, or

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

  1. Update milestone statuses inside initiatives[].milestones[] when features ship — never promote a milestone into featured[].
  2. 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 changelog skill; this skill only owns the roadmap.js link.
  3. Add new milestones as development plans evolve.
  4. Update progress percentages based on milestone completion.
  5. Add new quarters as time progresses.
  6. Add new initiatives when strategic priorities expand.
  7. 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

FilePurpose
website/src/data/roadmap.jsPrimary 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:

  1. Find the milestone in website/src/data/roadmap.js
  2. Update status: 'shipped'
  3. Add changelog: 'changelog-slug' if announcement exists
  4. 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:

  1. Add to the appropriate initiative's milestones array
  2. Set status: 'planned'
  3. Set quarter to target quarter
  4. 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:

  1. Add quarter to quarters array in roadmap.js
  2. Update previous quarter's status to 'completed'
  3. 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:

  1. Add to initiatives array
  2. Choose appropriate icon from React Icons (Remix set - Ri* prefix)
  3. Start with progress: 0 and status: 'planned'
  4. 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

  1. 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
  2. Edit website/src/data/roadmap.js

    • Make targeted changes
    • Recalculate progress percentages
  3. Verify the build

    cd website && npm run build
    
  4. 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/Security
  • RiFlashlightLine - Performance/DX
  • RiSearchLine - Discoverability
  • RiFlowChart - Workflows
  • RiPlugLine - Extensibility
  • RiBox3Line - Vendoring/Packaging
  • RiGitBranchLine - CI/CD
  • RiExchangeLine - Migration
  • RiShieldCheckLine - Quality
  • RiBookOpenLine - Documentation
  • RiRocketLine - New features
  • RiCodeLine - Development
  • RiToolsLine - 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

  • changelog skill — owns the blog post template, tags, authors, and style rules for the post a milestone links to. This skill only owns roadmap.js; hand off post-writing to changelog.
  • pull-request skill — decides whether a roadmap update is required at all (only minor/major PRs).

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 file
  • website/src/components/Roadmap/ - Component structure
  • website/blog/ - Changelog entries for linking

Signals

GitHub stars
1k
Forks
180
Last commit
Oct 2026
Advanced
Item type
skill
Key
roadmap
Source
github.com/cloudposse/atmos