project-roadmap-manager
npx machina-cli add skill gaelic-ghost/productivity-skills/project-roadmap-manager --openclawProject Roadmap Manager
Maintain ROADMAP.md in the project root as the canonical roadmap record. Prefer updating existing sections over appending duplicates, and keep Current Milestone synchronized with the latest accepted plan.
Workflow
- Load active customization config:
- Prefer
<skill_root>/config/customization.yaml. - Fall back to
<skill_root>/config/customization.template.yaml. - Apply settings under
settingsto roadmap generation and update decisions. - Treat missing sub-milestone keys in user config as template defaults.
- Prefer
- Identify project root and target file:
- Use
<project_root>/ROADMAP.md. - If root is ambiguous, infer from repository root.
- Use
- Ensure
ROADMAP.mdexists:- If missing, create it using the template in this skill.
- Classify the request into one of these event types:
- Project bootstrap.
- Plan acceptance/completion.
- Milestone/version roadmap set or changed.
- Milestone reached/blocked/de-scoped.
- Roadmap reference/query.
- Apply the event-specific update rules.
- Keep all sections internally consistent:
Current Milestonematches active milestone inMilestones.Plan Historyincludes accepted plan snapshots.Change Logcaptures each roadmap mutation with date and reason.- When sub-milestones are enabled, parent/child linkage and ID uniqueness are valid.
Customization Workflow
When a user asks to customize this skill, use this deterministic flow:
- Read active config from
config/customization.yaml; if missing, useconfig/customization.template.yaml. - Confirm target profile and desired behavior for:
milestoneIdStyletargetStylestatusValues- sub-milestone enablement, ID style, and status model
- owner/dependency fields
- plan history and changelog verbosity
- Propose 2-4 option bundles with one recommended default.
- Create or update
config/customization.yamlfrom the template and set:schemaVersion: 1isCustomized: trueprofile: <selected-profile>
- Apply the selected settings immediately to roadmap output behavior.
- Validate with a dry-run roadmap update and report changed keys plus behavior deltas.
Customization Reference
- Detailed knobs and examples:
references/customization.md - YAML schema and allowed values:
references/config-schema.md
ROADMAP.md Template
Use this structure when creating a new roadmap:
# Project Roadmap
## Current Milestone
- ID: M1
- Name: Initial Setup
- Status: Planned
- Target Version: v0.1.0
- Last Updated: YYYY-MM-DD
- Summary: One-paragraph summary of the currently accepted plan.
## Milestones
| ID | Name | Target Version | Status | Target Date | Notes |
| --- | --- | --- | --- | --- | --- |
| M1 | Initial Setup | v0.1.0 | Planned | YYYY-MM-DD | Bootstrap milestone |
<!-- Include this section only when settings.enableSubMilestones is true. -->
## Sub-Milestones
| ID | Parent Milestone | Name | Status | Target Date | Notes |
| --- | --- | --- | --- | --- | --- |
| M1.1 | M1 | First deliverable | Planned | YYYY-MM-DD | Optional child milestone |
## Plan History
### YYYY-MM-DD - Accepted Plan (v0.1.0 / M1)
- Scope:
- Acceptance Criteria:
- Risks/Dependencies:
## Change Log
- YYYY-MM-DD: Initialized roadmap.
Event Handling Rules
Project Bootstrap
- Create
ROADMAP.mdif absent. - Add an initial milestone (
M1unless user provides a different identifier). - If
enableSubMilestonesis true and initial child milestones are provided, generate IDs deterministically from style settings. - Add a changelog entry indicating roadmap initialization.
Plan Acceptance or Completion
- Update
Current Milestoneto reflect the accepted plan. - Add or update corresponding row in
Milestones. - If
enableSubMilestonesis true, add or update affected child entries under the active milestone. - Append an
Accepted Planentry inPlan Historywith scope and acceptance criteria. - Add a changelog entry summarizing what changed and why (include parent + child transition details when child entries changed).
Milestone or Version Roadmap Set/Update
- Update existing milestone by ID/version if it exists.
- Add milestone only when no matching milestone exists.
- Avoid duplicate milestones for the same ID or target version.
- When
enableSubMilestonesis true:- Avoid duplicate child IDs within the same parent milestone.
- Keep child status values inside
subMilestoneStatusValues(or inheritstatusValueswhen child list is absent). - Use deterministic ID generation rules from settings:
hierarchical:<milestoneID><delimiter><n>(defaultM2.1).letter:<milestoneID><letter>(for exampleM2a).ticket:<prefix><delimiter><zero-padded n>and render with parent context (for exampleM2-T01).external: accept tracker IDs only whenallowExternalTrackerIdsis true.
- If the updated milestone is active, sync
Current Milestone.
Milestone Reached/Changed
- Update milestone status (
Completed,In Progress,Blocked,De-scoped, orPlanned). - Update
Current Milestoneif active milestone changed. - If
enableSubMilestonesis true, keep child transitions and parent/child linkage consistent. - Add a dated note in
Change Logthat captures transition and reason (include parent + child details when children are involved).
Roadmap Reference Requests
- Point explicitly to
<project_root>/ROADMAP.md. - Cite the relevant section name (
Current Milestone,Milestones,Plan History, orChange Log). - If file is missing, create it first, then reference it.
Quality Bar
- Preserve existing useful roadmap content.
- Use ISO date format (
YYYY-MM-DD) for all dated fields. - Keep edits minimal and deterministic.
- Never leave conflicting milestone statuses across sections.
- If sub-milestones are disabled, do not require or mutate any sub-milestone section.
- If sub-milestones are enabled, enforce deterministic child ID style and unique IDs within parent scope.
Automation Templates
Use $project-roadmap-manager inside automation prompts so Codex consistently applies the roadmap update rules.
For ready-to-fill Codex App and Codex CLI (codex exec) templates, including bounded-edit guardrails and placeholders, use:
references/automation-prompts.md
References
- Automation prompt templates:
references/automation-prompts.md - Customization guide:
references/customization.md - Customization schema:
references/config-schema.md
Source
git clone https://github.com/gaelic-ghost/productivity-skills/blob/main/project-roadmap-manager/SKILL.mdView on GitHub Overview
Project Roadmap Manager maintains ROADMAP.md in the repository root as the canonical record of milestones and accepted plans. It guides bootstrapping, plan acceptance, and milestone updates, ensuring the Current Milestone stays aligned with the active plan. It also prevents duplicate sections and keeps a consistent Change Log and Plan History.
How This Skill Works
It loads an active customization config (prefer customization.yaml, fallback to customization.template.yaml), determines the project root, and ensures ROADMAP.md exists. It classifies requests into event types (bootstrap, plan acceptance, milestone changes, or queries) and applies event-specific rules, maintaining internal consistency for Current Milestone, Milestones, and Change Log, with deterministic handling of sub-milestones when enabled.
When to Use It
- Project bootstrap
- Plan acceptance/completion
- Milestone/version roadmap set or changed
- Milestone reached/blocked/de-scoped
- Roadmap reference/query
Quick Start
- Step 1: Load active customization config from config/customization.yaml (or config/customization.template.yaml).
- Step 2: Identify project root and ensure ROADMAP.md exists at the repository root.
- Step 3: Apply an event (bootstrap, plan acceptance, milestone change) and verify Current Milestone, Plan History, and Change Log stay consistent.
Best Practices
- Prefer updating existing sections over appending duplicates.
- Keep Current Milestone in sync with the active Milestones section.
- Document changes in Change Log with date and reason.
- Ensure sub-milestone IDs are unique and properly linked when enabled.
- Validate changes with a dry-run roadmap update when customizing.
Example Use Cases
- Initializing ROADMAP.md for a fresh repository during project bootstrapping.
- Recording plan acceptance and updating Current Milestone after completion.
- De-scoping a milestone and reflecting it in Milestones and Change Log.
- Answering a roadmap status query by referencing ROADMAP.md sections.
- Synchronizing Current Milestone after milestone changes and plan reviews.