AGENT SKILL

to-roadmap

Prioritises settled features into a Now / Next / Later kanban board, rendered as a self-contained ./ideas/roadmap.html. Each card is a feature, not a ticket — one card later becomes several tickets via /to-prd -> /to-plan -> /to-tickets. Boards the features in ./docs/approach.md, or the "## Accepted ideas" in ./ideas/CONTEXT.md when there is no approach doc. The approach doc is settled truth: this assigns tiers and reasons about ordering, it never re-litigates what was decided.

适用职业产品经理
License 许可
MIT
最近更新
2026-11-11
Stars
★ 0
Forks
0

01 前言 Front Matter

name
to-roadmap
description
Prioritises settled features into a Now / Next / Later kanban board, rendered as a self-contained ./ideas/roadmap.html. Each card is a feature, not a ticket — one card later becomes several tickets via /to-prd -> /to-plan -> /to-tickets. Boards the features in ./docs/approach.md, or the "## Accepted ideas" in ./ideas/CONTEXT.md when there is no approach doc. The approach doc is settled truth: this assigns tiers and reasons about ordering, it never re-litigates what was decided.
disable-model-invocation
true

02 资源文件 2

03 SKILL.md 正文

Overview

Turn the features you have settled on into a visual product roadmap: a standalone HTML kanban with three columns (Now / Next / Later) where each card is a feature, not a ticket — a thing to be built, which the spine later breaks down into several tickets.

Where this sits

PORTFOLIO — many features        ideate  or  chat-to-approach
                                        ↓
                            ./docs/approach.md  →  ./ideas/roadmap.html
                                                    ^^^^^^^^^^^^ you are here
                                                        ↓  pick ONE card
FEATURE — one feature per run    to-prd → to-plan → to-tickets → ticket-tracker
                                 non-code work: to-prd → to-tickets

Portfolio → feature is a fan-out, not a step. This skill is portfolio-level: it prioritises many features at once. Crossing to the spine means picking one card — six cards means six independent runs of to-prd → to-plan → to-tickets, each producing its own several tickets.

Never send the user backwards. A missing upstream artifact is written inline or offered, never a reason to stop and run another skill first. The one hard gate is an approved plan.

Board from ./docs/approach.md, from ## Accepted ideas in ./ideas/CONTEXT.md, or from a short list the user gives you. The one thing this skill will not do is build a roadmap by parsing a raw conversation — chat-to-approach owns that (see Phase 0).

Solo/indie-builder scale throughout: no assignees, no story points, no sprints, no stakeholder matrices.


Phase 0 — Load the source

Two sources, in priority order. Run artifact-scan as a preflight if it's installed rather than reimplementing its file checks.

1. ./docs/approach.md — the alignment doc, and the richer source. Read it and extract, treating every item as already agreed:

  • All features (Name, Problem, Value, Dependencies) → cards
  • Constraints → a note below the board, not cards
  • Principles → use to inform tier suggestions (e.g. "ship weekly" → fewer Now items)
  • Open questions → carry forward verbatim into the Open Questions section

2. ## Accepted ideas in ./ideas/CONTEXT.md — the ideas the user has decided to build, whether ideate promoted them or they were hand-added. One line each, one card each. Accepting is the selection, so board the whole section rather than asking which of them to include.

Do not modify either file.

If both exist, the approach doc wins: it has been grilled, and it carries the constraints, principles and open questions a bare idea list doesn't.

If neither exists, ask the user for the features to board — a short list, one line each — and mention that ideate or chat-to-approach leaves a durable source next time. What you must not do is build the board by parsing a pasted conversation: chat-to-approach owns conversation → structure, including the grilling that resolves ambiguity before anything is committed. Two skills parsing transcripts differently is how a board ends up built on ungrilled assumptions.

A feature too vague to tier is not a licence to re-litigate it. Say so, and either ask the user for a tier directly or point them back at the source to sharpen it.


Phase 1 — Prioritise

Assign each feature a tier. Offer a suggested tier per feature — biasing dependency-blocking features toward Now and anything speculative toward Later — and let the user confirm or override in one pass.

Now — Committed, ready to start, essential for current momentum. If the user isn't working on it this week or next, it's not Now.

Next — Decided but intentionally deferred. Depends on Now items finishing first, or deliberately held back to maintain focus.

Later — Someday / low urgency / speculative. Worth keeping visible so nothing falls through the cracks, but not near-term.

Why this ordering — the prioritisation lens. A tier is a decision, not a guess. When a feature's tier is unclear, reason it out against four levers:

  • Value — how much user pain it removes or upside it unlocks. High value pulls toward Now.
  • Effort — rough size. High value + low effort is the classic Now; high effort earns Next/Later unless it's blocking.
  • Dependency — does other work need this first? A blocker for several features earns Now even if its own value is modest; something that depends on unfinished work can't be Now.
  • Risk — uncertainty or the cost of getting it wrong. De-risk early when a wrong call is expensive to unwind; defer speculative bets to Later.

State the why in one clause when you suggest a tier (e.g. "Now — blocks capture and auth"), so the ordering is auditable rather than arbitrary.

Default to fewer Now items. A solo builder can realistically focus on 2–4 things at once. If everything looks like Now, something is wrong — push back and ask.


Phase 2 — Generate the board

Write a complete, self-contained HTML file to ./ideas/roadmap.html in the current working directory. Run mkdir -p ./ideas first — the directory may not exist yet. It shares a home with the ideate reports so a project only has one path to gitignore.

Always write the file. Other skills detect this stage with test -f ./ideas/roadmap.html, so a board that only ever existed as a chat artifact leaves the repo looking like no roadmap was made. Render it as an artifact too if the interface supports it, but the file is the deliverable, not the copy.

Use assets/roadmap-template.html as the starting point — inline CSS, no external dependencies, no JavaScript. Replace its placeholder comments with the actual cards and questions.

Card format

Each card represents a feature and shows:

  • A short noun-phrase title naming the feature (e.g. "User authentication", "Onboarding flow")
  • One sentence describing the user problem it solves or the value it delivers
  • A dependency line only if it blocks or is blocked by another feature on the board

Nothing else — no assignees, no tags, no dates, no story points, no implementation tasks.

Open questions format

Below the board, list each open question from the approach doc as a numbered item: the question concisely, plus a one-line note on why it matters or what's blocked on it.

Now (amber)  |  Next (blue)  |  Later (slate)
─────────────────────────────────────────────
[ Card ]       [ Card ]        [ Card ]
[ Card ]       [ Card ]
[ Card ]

Open Questions
──────────────
1. Should auth use JWT or sessions? — blocks mobile client work.
2. Is the pricing page in scope for v1?

Finishing Up

After writing the file, a brief summary (3–5 lines max). It's a receipt, not a re-explanation — don't repeat the roadmap verbatim.

  • How many features are on the board and how they're distributed (N Now / N Next / N Later)
  • How many open questions were flagged
  • Which source was used, left unmodified — to change what's on the board, edit the source (chat-to-approach for the approach doc, or the ## Accepted ideas list directly) and re-run
  • The next step: pick one card and run to-prd on it. Each card is its own pass down the spine.

When finished, ask: 'Would you like to log feedback? (yes/no)'. If yes, invoke skill-feedback-collector passing this skill's name and path.

04 同仓库更多 Skills

O-Marsters-1997
O-Marsters-1997/my-claude-code

to-tickets

Breaks a source into independently-grabbable GitHub tickets. For a code feature the source is the plan (`docs/plans/<feature>.md`, from /to-plan) and every new or changed symbol lands in exactly one ticket, its signatures copied into the ticket body; a non-code feature is cut from the PRD's slices. Cuts tickets for one feature per run. If a code feature has no approved plan, offers /to-plan instead of cutting from prose. In a repo that runs command-centre, also emits `[[task]]` blocks into its config; in a plain treepad repo, emits a Batch Manifest instead so the tickets materialise as stacked worktrees.

★ 0
O-Marsters-1997
O-Marsters-1997/my-claude-code

to-seams

Records an agreed-but-unlanded cross-repo interface as a seam: the file a consumer's agent gets pasted into its prompt as ground truth, plus the `[[seam]]` block command-centre reads for the retirement pointer. Use when two repos need to build against an interface neither has landed yet — "record a seam for X", "we agreed on this schema, seam it", "add a seam so Y can build against Z's new field". Halts for approval before writing either file.

Skill与智能体开发
★ 0
O-Marsters-1997
O-Marsters-1997/my-claude-code

to-prd

Turns one feature idea into a PRD built on journeys: a one-line problem, journeys (each ending in an observable state) and delivery slices that say what is usable after each. Interviews, explores the codebase, and saves to docs/prds/<feature>.md. Covers exactly one feature: given a multi-feature source, ask which one. Reads any approach doc or ideate report as priors so it doesn't re-ask what's settled, but needs none. Starts the per-feature spine (/to-prd -> /to-plan -> /to-tickets).

产品经理
★ 0
O-Marsters-1997
O-Marsters-1997/my-claude-code

to-plan

Turns one feature's PRD into a skimmable plan in docs/plans/<feature>.md: a short overview, then per phase a glossary, the journeys it satisfies, and its new and modified definitions (types, enums, ports, schema), with the project:<slug> label. No code, branch or PR; the user's review of the file is the gate. Use for "plan this feature", "write the contract", "what are the types". One feature per run. Slash-only.

★ 0
O-Marsters-1997
O-Marsters-1997/my-claude-code

ticket-tracker

Use when the request is about the *current state* of GitHub issues rather than creating new ones: "where are my tickets", "show the board", "what's in progress", "what's ready to pick up", "move issue N to in-review", "mark N done", "update the ticket status". Live triage board over GitHub issues via the gh CLI, moving each between backlog -> ready -> in-progress -> in-review -> done using status labels. This is the ticket-level board; ./ideas/roadmap.html is the feature-level one. To file new tickets, use /to-tickets, file-issue for a single ad-hoc one, or /sweep for a batch of small fixes.

★ 0
O-Marsters-1997
O-Marsters-1997/my-claude-code

sweep

Turn a pile of small fixes into a batch /fleet can dispatch. Takes the open `inbox` issues and any items pasted with the command, explores them in one pass, rejects anything too big for a small fix and takes it out of the inbox, merges items that touch the same files into one ticket, and files the tickets under one dated `sweep-YYYY-MM-DD` label. Use for "sweep the inbox", "batch these fixes", "turn these into tickets and fleet them". For one ad-hoc ticket, use file-issue; for a feature, use /to-tickets.

★ 0