roadmap
Skill542 starsChanged 11 days agoMITView on GitHub
Update / create / reprioritise the product roadmap — add, remove, reorder milestones; renders a markdown table per milestone.
We split this skill into the rules it gives an agent
15 rules. 0 are common, 4 are distinctive, and 11 are very specific to this project.
0
Common
Most of the 40 edited versions we read keep these.
4
Distinctive
This author's own choices. Worth a look.
11
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 10
Read .claude/rules/writing-standard.md.
- Very specific: line 17
Read the registry path via portfolio_registry, the per-project docs dir via portfolio_projects_dir, and the ideas backlog via …
- Very specific: line 43
When /roadmap runs, activate the Head of Product role — they own roadmap prioritisation, strategic sequencing, and milestone decisions.
- Very specific: line 59
Every roadmap lives at projects/<name>/roadmap.md inside your ops repo, where <name> matches an entry in apexyard.projects.yaml.
- Distinctive: line 100
Read the roadmap file
- Very specific: line 114
Update the Last updated date
- Distinctive: line 115
Write the file back
- Distinctive: line 121
Remove the row, update the date
- Very specific: line 126
Ask for the new ordering (e.g.
- Distinctive: line 132
Remove it from the current milestone
- Very specific: line 140
Add Shipped date and PR column reference (ask user for PR # if it can't be inferred)
- Very specific: line 144
If the user passes --with-issues, also create or update tracker issues to mirror the roadmap.
- Very specific: line 156
Read the active-ticket marker of the working tree you are in to determine which repo we're working in.
- Very specific: line 157
If no active ticket, check apexyard.projects.yaml for managed projects.
- Very specific: line 164
If no projects are registered, ask for the repo in owner/repo format.
“Common” is measured: kept by at least 6 in 10 of the 40 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
/roadmap — Product Roadmap
Read .claude/rules/writing-standard.md. Use the controlled technical writing profile for roadmap
artefacts: keep decisions, uncertainty, and next actions clear and concise.
Manage the product roadmap as a single durable file. The skill is intentionally low-ceremony: a roadmap is a markdown file with milestones, each containing a table of items. /roadmap reads it, edits it, and renders it.
Path resolution
Read the registry path via portfolio_registry, the per-project docs dir via portfolio_projects_dir, and the ideas backlog via portfolio_ideas_backlog — all from .claude/hooks/_lib-portfolio-paths.sh. Source the helper at the top of any bash block that touches those paths:
source "$(git rev-parse --show-toplevel)/.claude/hooks/_lib-read-config.sh"
source "$(git rev-parse --show-toplevel)/.claude/hooks/_lib-portfolio-paths.sh"
projects_dir=$(portfolio_projects_dir)
registry=$(portfolio_registry)Defaults match today's single-fork layout (./apexyard.projects.yaml, ./projects, ./projects/ideas-backlog.md). Adopters in split-portfolio mode override the portfolio.{registry, projects_dir, ideas_backlog} keys in .claude/project-config.json. Don't hardcode literal apexyard.projects.yaml or projects/ paths in bash blocks — the helper resolves whichever mode the adopter is in. See docs/multi-project.md.
Write targets (see me2resh/apexyard#373 + #443): paths documented as projects/<name>/X in this skill are canonical adopter-facing forms — implement them in bash as "${projects_dir}/<name>/X". Never construct from "${PWD}/projects/...", "$(git rev-parse --show-toplevel)/projects/...", or a literal ./projects/... — those break in split-portfolio v2 mode where projects_dir resolves to a sibling repo.
REQUIRED per-block preamble (see #443): Claude executes each bash block as a separate shell invocation. The projects_dir assignment from the Path resolution section above does NOT carry into later blocks. Every bash block that writes to a projects/<name>/X path MUST start with this three-line preamble so it's self-contained:
source "$(git rev-parse --show-toplevel)/.claude/hooks/_lib-read-config.sh"
source "$(git rev-parse --show-toplevel)/.claude/hooks/_lib-portfolio-paths.sh"
projects_dir=$(portfolio_projects_dir)
# ... now write to "${projects_dir}/<name>/X"The Path resolution section's example sources the helper once for documentation purposes; it does not absolve later blocks from sourcing it themselves. Treat each bash fence as a fresh process.
Activated role
When /roadmap runs, activate the Head of Product role — they own roadmap prioritisation, strategic sequencing, and milestone decisions. For adding a specific item with a PRD, chain to /write-spec which activates the Product Manager instead. For items that require data-driven reprioritisation, involve the Product Analyst.
See .claude/rules/role-triggers.md for the full activation protocol.
Usage
/roadmap # show current roadmap
/roadmap add "OAuth login" Q3 P0 # add an item to a milestone
/roadmap remove "OAuth login" # remove an item
/roadmap reorder # interactive reordering
/roadmap show Q3 # show a single milestoneFile location
Every roadmap lives at projects/<name>/roadmap.md inside your ops repo, where <name> matches an entry in apexyard.projects.yaml. Without --project, the skill asks which project's roadmap to operate on, listing the registry.
File format
# Product Roadmap
> Last updated: YYYY-MM-DD
> Owner: @octocat
## Now (current cycle)
| ID | Item | Priority | Status | Owner | Notes |
|----|------|----------|--------|-------|-------|
| RM-001 | CSV export | P0 | in-progress | @alice | GH#42 |
| RM-002 | OAuth login | P0 | not-started | @bob | depends on AgDR-0007 |
## Next (1-3 cycles out)
| ID | Item | Priority | Status | Owner | Notes |
|----|------|----------|--------|-------|-------|
| RM-003 | Multi-currency | P1 | not-started | – | |
## Later (3+ cycles out)
| ID | Item | Priority | Status | Owner | Notes |
|----|------|----------|--------|-------|-------|
## Done
| ID | Item | Shipped | PR |
|----|------|---------|-----|
| RM-000 | Health endpoint | 2026-04-05 | #41 |The default milestones are Now / Next / Later / Done (Now-Next-Later format). Custom milestones (Q1/Q2/Q3 or v1.0/v1.1/v2.0) are also accepted.
Process
show (default)
- Read the roadmap file
- Render each non-empty milestone as a table
Print a footer summary:
12 items · 5 in Now · 4 in Next · 3 in Later · 8 Done
add <item> <milestone> <priority>
- Read the roadmap file
- Find the next available
RM-NNNID - Append a row to the right milestone's table
- Default
Status: not-started,Owner: – - Update the
Last updateddate - Write the file back
remove <item-or-id>
- Locate the row by ID or fuzzy title match
- Confirm before deleting
- Remove the row, update the date
reorder
- List items in the chosen milestone with their position
- Ask for the new ordering (e.g.
2,1,3,4) - Rewrite the table in the new order
move <id> <new-milestone>
- Find the row by ID
- Remove it from the current milestone
- Append it to the target milestone
- Update the date
close <id>
- Find the row by ID across Now / Next / Later
- Move it to Done
- Add
Shippeddate andPRcolumn reference (ask user for PR # if it can't be inferred)
Linking to GitHub Issues
If the user passes --with-issues, also create or update tracker issues to
mirror the roadmap. Dispatch through tracker_create (#670 / AgDR-0072,
extended by the #709 creator sweep) so the issues land in this project's
tracker — GitHub, GitLab, or a custom CLI. For a GitHub adopter this runs
gh issue create exactly as before.
Resolve the target repo
tracker_create's first argument is a concrete owner/repo slug — it is not
resolved for you. Determine it once, before the loop, the same way the other
creator skills (/feature, /bug, /task) do:
Read the active-ticket marker of the working tree you are in to determine which repo we're working in. The marker is the apexyard-ticket file in the git dir of that tree. See /start-ticket "Read the active ticket".
If no active ticket, check apexyard.projects.yaml for managed projects. If only
one project, use it. If multiple, ask:
Which project should the roadmap issues be filed in?If no projects are registered, ask for the repo in owner/repo format. Pass the
resolved value (e.g. me2resh/apexyard) as the first tracker_create argument —
never the literal {owner/repo} placeholder.
# Resolve + source the tracker lib once (before the loop) by walking up from cwd.
tracker_lib="$(r="$PWD"; while [ -n "$r" ] && [ "$r" != / ]; do \
[ -f "$r/.claude/hooks/_lib-tracker.sh" ] && { echo "$r/.claude/hooks/_lib-tracker.sh"; break; }; \
r="${r%/*}"; done)"
# shellcheck source=/dev/null
. "$tracker_lib"
# owner_repo is the value resolved above (e.g. me2resh/apexyard), NOT a literal.
owner_repo="{resolved owner/repo}"
# For each item in Now and Next without a GH link in Notes:
body_file="$(mktemp)"
printf 'Tracking issue for roadmap item %s\n' "{RM-NNN}" > "$body_file"
result="$(tracker_create "$owner_repo" "[Roadmap] {item}" "$body_file" "roadmap,{priority}")"
rc=$?
rm -f "$body_file"
if [ "$rc" -eq 3 ]; then
# tracker.kind=none (shape-only): no tracker to create in. tracker_create
# printed the rendered ticket body to stdout — surface it for manual /
# external filing and skip the Notes back-write.
echo "Tracker is 'none' (shape-only) — nothing was created in a tracker." >&2
printf '%s\n' "$result"
elif [ "$rc" -eq 0 ] && [ -n "$result" ]; then
ref="$(printf '%s' "$result" | jq -r '.ref')"
# write ${ref} back into the item's Notes column
else
echo "Issue creation failed for '{item}' — check the tracker CLI / auth." >&2
fiThen write the issue reference (${ref}) back into the Notes column (only on the
rc -eq 0 path above — the kind=none and failure paths leave Notes untouched).
Output format (show)
ROADMAP — example-app — last updated 2026-04-06
================================================
NOW (current cycle)
| ID | Item | Priority | Status | Owner | Notes |
|--------|-----------------|----------|-------------|--------|----------------------|
| RM-001 | CSV export | P0 | in-progress | @alice | GH#42 |
| RM-002 | OAuth login | P0 | not-started | @bob | depends on AgDR-0007 |
NEXT (1–3 cycles out)
| ID | Item | Priority | Status | Owner | Notes |
|--------|-----------------|----------|-------------|-------|-------|
| RM-003 | Multi-currency | P1 | not-started | – | |
LATER
(empty)
DONE (last 5)
| ID | Item | Shipped | PR |
|--------|-----------------|------------|-----|
| RM-000 | Health endpoint | 2026-04-05 | #41 |
Summary: 3 active · 0 later · 1 done
Owner: @octocatPriorities
| Priority | Meaning |
| P0 | Must ship in current cycle |
| P1 | Should ship soon |
| P2 | Nice to have |
| P3 | Speculative |
Status values
| Status | Meaning |
| not-started | No work yet |
| in-progress | Active work, branch/PR exists |
| blocked | Waiting on something — note in Notes column |
| in-review | PR open, awaiting review |
| done | Shipped (auto-moves to Done milestone) |
Rules
- One file = one project's roadmap — no shared roadmaps across projects
- IDs are stable —
RM-001never changes once assigned - Done is append-only — items move to Done, never out of it
- Update
Last updatedon every write - Confirm destructive ops —
remove,reorderask first - One roadmap per project — always write to
projects/<name>/roadmap.mdin the ops repo - Don't auto-create issues unless asked —
--with-issuesis opt-in - Preserve markdown formatting — don't reflow rows or change column widths unnecessarily
Related skills
/write-spec— once a roadmap item is approved, write its PRD/stakeholder-update— pulls "Now" and "Done" sections to summarise progress/idea— for ideas not yet on the roadmap
Part of ApexYard — multi-project SDLC framework for Claude Code · MIT.
Other versions47 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 47
- cloudposse/atmos★ 1.4ksame name
- andreaskelm/pm-brain★ 235same name
- genkovich/sdd★ 187same name
- YougLin-dev/Aha-Loop★ 181same name
- Ovid/paad★ 147same name
- facebookresearch/autoform-bot★ 130same name
- Mehdibargach/claude-code-pm-skills★ 97same name
- joshuadavidthomas/agent-skills★ 49same name
- spmtitsolution/OpenBA-Kit★ 38same name
- V-Songbird/foreman★ 35same name
37 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use sequence, strategy and 6 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
GTMifySkillsequence
Build a multi-channel outreach cadence (email + LinkedIn + phone) for a target persona or named prospect. Use when the user says 'build a sequence', 'outreach cadence', 'multi-touch sequence', 'multi-channel cadence', 'follow-up sequence', or needs a coordinated multi-channel play. Do NOT use for single cold emails — use cold-email instead.
Also in 3 projects that use this
EpistatesSkillstrategy
Plan weekly or monthly X content strategy. Use when the user wants to plan their content calendar, set growth goals, build a content pipeline, or think strategically about their X presence.
Also in 3 projects that use this
ArvorCoSkillspecify
Create feature specification from natural language description. Use when starting a new feature or creating a spec. Triggers on: create spec, specify feature, new feature spec.
Also in 3 projects that use this
GitHubSkillprd
Generate high-quality Product Requirements Documents (PRDs) for software systems and AI-powered features. Includes executive summaries, user stories, technical specifications, and risk analysis.
Also in 7 projects that use this
Itsokay-coSkilldiscover
Automated pattern discovery — finds what correlates with your best and worst sleep nights. Scans workouts, meals, caffeine, tags, gut scores, and timing patterns. Use when the user wants to know what actually affects their sleep.
Also in 4 projects that use this
MicrosoftSkillhelp
Entry point for the MedImageInsight plugin, covering the getting-started walkthrough, how the skills work, what MI2 is, and troubleshooting.
Also in 4 projects that use this
In this repository71 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- .cursor/rules/apexyard.mdcCursor rule
- accessibility-auditSkill
- agdrSkill
- analytics-auditSkill
- approve-architectureSkill
- approve-designSkill
- approve-mergeSkill
- audit-depsSkill
- bugSkill
- c4Skill
- challengeSkill
- code-reviewSkill
- codify-ruleSkill
- compliance-checkSkill
- debugSkill
- decideSkill
- design-reviewSkill
- design-syncSkill
- dfdSkill
- docs-auditSkill
- eval-agentsSkill
- extract-featuresSkill
- fan-outSkill
- feature-diagramSkill
- featureSkill
- geo-auditSkill
- handoverSkill
- ideaSkill
- inboxSkill
- investigationSkill
- journeySkill
- launch-checkSkill
- migrationSkill
- monitoring-auditSkill
- mutation-testSkill
- onboardSkill
- orbitSkill
- pdfSkill
- performance-auditSkill
- plan-initiativeSkill
- preflightSkill
- processSkill
- projectsSkill
- prototype-closeSkill
- prototypeSkill
- releaseSkill
- release-syncSkill
- report-apexyard-bugSkill
- request-apexyard-featureSkill
- scaffoldSkill
- security-reviewSkill
- seo-auditSkill
- setupSkill
- spike-closeSkill
- spikeSkill
- split-portfolioSkill
- stakeholder-updateSkill
- start-ticketSkill
- The first 60 shown.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

