Automated summary
Provides the triage doctrine the roadmap-reviewer agent quotes when /roadmap-review walks roadmap-shape drift one item at a time.
Strengths
- Enforces a one-finding-at-a-time loop where the agent runs the resolution CLI itself on confirm, instead of dumping a report.
- Explicit, non-resortable prioritization order: giant without size_ack, then x-large, container drift, orphan clusters, finally large.
- Exactly four canonical resolutions with paste-ready phrasing, which keeps the agent from improvising its own fixes.
- A clean lens model: sizing is active in v1 while horizons / releases / sprint-shape are explicitly refused as future placeholders.
Limitations
- The file is cut off mid-sentence, so the resolution options, stop condition, and session record format are incomplete.
- v1 only covers the sizing lens; the other perspectives are named placeholders with no behavior.
- Depends on the hero CLI and the roadmap-reviewer agent, and declares opencode-only compatibility.
Use it when a spec tree's declared sizes drift from the effort they actually imply and you want guided, per-item resolution.
Avoid it for a one-shot hygiene report (run hero check instead) or when the hero CLI and roadmap-reviewer agent are not installed.
Security analysis
SafeThe skill defines an agent doctrine and triage loop for roadmap review. It instructs the agent to execute internal CLI commands like 'hero size' or invoke '/compose' and '/split' flows on user confirmation, but these are app-specific operations with no destructive, exfiltrating, or obfuscated behavior. No external network access, shell piping, secret handling, or unsafe commands are involved.
No concerns found
How this analysis is madeExamples
/roadmap-review — walk me through the sizing drift in my roadmap one item at a time.My epic is declared medium but its children roll up to giant. What should I do?Should I run `hero check` or `/roadmap-review`? I just want to know what's stale.name: roadmap-review
description: The doctrine for /roadmap-review — interactive triage of roadmap-shape drift, walked one item at a time, with paste-ready resolution phrasing for the active sizing lens.
compatibility: opencode
metadata:
audience: roadmap-reviewer-agent
purpose: shape-triage
What I do
Define the doctrine the roadmap-reviewer agent quotes from when the
user runs /roadmap-review. I carry:
- the Lenses model (sizing is active in v1; horizons / releases / sprint-shape are named placeholders the agent refuses to act on),
- the prioritization rules for the active sizing lens,
- the four canonical resolution options with paste-ready phrasing,
- the stop condition for a session,
- the session record format and path.
I am the source of truth for the triage loop. The agent loads me on invocation and quotes me directly — it does not improvise wording, and it does not invent resolutions outside the four I name.
hero check vs /roadmap-review (one sentence)
hero checkis workspace hygiene — a one-shot report of stale specs, missing fields, convention drift, and warning counts./roadmap-reviewis roadmap shape — an interactive triage that walks each high-impact drift, proposes a resolution, and executes the resolution CLI on confirm. Both surface drift; only/roadmap-reviewresolves it.
The agent prompt quotes this verbatim. If a user asks "which do I run,"
both surface drift — only /roadmap-review resolves it.
Walk one at a time
The defining behavior. The agent does not produce a wall of prose or enumerate all drift at once. It surfaces one finding, proposes one resolution, accepts the user's answer, executes on confirm, and advances to the next. No bulk operations. The user can opt into more explicitly, but the default rhythm is one item at a time.
Punting the keystrokes back to the user ("now run hero size foo large") defeats the loop. On confirm the agent runs the CLI
itself and surfaces the output before advancing.
Lenses
The extensibility seam. A lens is an analytical perspective the reviewer applies — sizing today, others tomorrow. Adding a new lens later means moving its section from Scaffolding to Active and filling in the four sub-sections (prioritization, resolution options, phrasing, stop condition). The agent prompt does not change.
Active
Sizing
The only lens implemented in v1. Surfaces drift between declared
size: and computed effort, oversized leaves that should /split,
container drift, and topical clusters that lack an initiative parent.
Prioritization rules
The agent walks findings in this order. It does not re-sort.
giantwithoutsize_ack— highest. Month+ specs that haven't been consciously acknowledged are the loudest shape failure.x-largefeatures / bugs / enhancements — multi-week leaf work. Almost always wants a/split.- Container drift (epic/initiative declared smaller than the rolled-up children) — the parent is lying about its scope.
- Multi-spec topical clusters without an initiative parent — the
"2+ related orphans" case. See
spec-compositionfor the detection heuristic and canonical phrasing. largefeatures / bugs / enhancements — soft. Surface only if nothing higher remains.
giant initiatives are normal — they belong in the loop only when
they have no children yet (signal that /compose hasn't been run).
Resolution options + paste-ready phrasing
Exactly four. Any other resolution is out of spec.
| Resolution | When the agent offers it | On confirm |
|---|---|---|
| Acknowledge | giant leaf where the user explicitly wants single-pass delivery | hero size --ack giant <slug> (or write size_ack: giant to frontmatter if the CLI flag doesn't exist yet) |
| /compose | x-large / giant that should become an initiative with phased children | Invoke the /compose flow against the slug — agent hands off, doesn't simulate |
| /split | large / x-large leaf that belongs as 2–3 sibling specs | Invoke the /split flow against the slug — agent hands off |
| Re-horizon (sizing-lens version: bump declared tier) | Drift where declared < computed; user agrees the spec really is the bigger tier | hero size <slug> <new-tier> |
Quote these scripts verbatim:
Acknowledge (for unacknowledged giant leaves):
This
giantspec is intentional? I can stampsize_ack: giantso it stops asking at design time — mid-delivery checks continue. Confirm?
/compose (for x-large / giant that should be an initiative):
This is
x-large— recommended path is/composeinto 3–5 phased children. Want me to kick that off now?
/split (for large / x-large leaves across subsystems):
This is
largeacross two subsystems —/splitinto a pair of sibling specs. Run it?
Re-horizon (for declared < computed drift):
Declared
medium, computedlarge. Bump tolarge? (Y/n)
Stop condition
A session ends on the first of:
- No high-impact drift remains — priorities 1–4 are exhausted. The agent reports the clean state and exits.
- User halts — any of "stop," "enough," "done," "later," or declining a resolution without picking another. The agent does not ask "are you sure"; it accepts and exits.
- Five items resolved in this session — soft cap to keep momentum. The agent reports the cap, summarizes what was resolved, and suggests re-running tomorrow.
The cap lives here, in the skill — tunable without touching the agent prompt.
Scaffolding (not implemented — future work)
The agent refuses to act on these. It does not improvise a triage. Canonical refusal phrase, substituting the lens name:
"<lens>-lens triage isn't implemented yet — that's deferred to future lens work. I can only act on sizing drift in this version."
Horizons
Placeholder. v1 does not act on horizon drift.
Releases
Placeholder. Same refusal pattern.
Sprint-shape
Placeholder. Same refusal pattern.
Session record (knowledge capture)
On exit — any reason — the agent writes a short note to
.hero/knowledge/roadmap-review-sessions/{YYYY-MM-DD}-{HHMM}.md.
This is the dogfood signal: cadence over time, items resolved per
session, what gets deferred. Sibling spec
roadmap-review-ambient-surfacing reads these records to power the
"stop nagging if nothing's changed since the last triage" rule, so the
drift_count_at_exit: frontmatter field is load-bearing, not
optional.
Format:
---
type: note
created: <ISO-8601 timestamp>
tags: [roadmap-review, sizing]
drift_count_at_exit: <int>
---
# Roadmap review — <YYYY-MM-DD HH:MM>
**Findings surveyed:** N (M sizing-drift, K missing-parent clusters)
**Walked:** N
**Resolved:** N (X `/split`, Y ack, Z size bump)
**Deferred:** N (user said "later")
**Exit reason:** <user halt | cap reached | exhausted | empty>
## Items
- `<slug>` (<tier>, <ack-state>) → <what happened>
- `<slug>` (declared <tier>, computed <tier>) → <what happened>
- `<slug-a>` + `<slug-b>` cluster → <what happened>
drift_count_at_exit is the count of remaining sizing-drift findings
at the moment the agent exited (after resolutions applied). Sibling
ambient-surfacing reads it to decide whether to suppress the next 24h
nudge. If the field is missing, the ambient reader treats it as "count
unchanged" — forward-compatible, but write the field every time.
Ambient surfaces
When this skill's interactive triage isn't actively running, three ambient surfaces carry the same paste-ready hint pointing here:
- NEXT.md projection — a
## Roadmap shapesection appears between## Nextand## Blocked onwhen drift surfaces. hero_pulse/hero_kickoffMCP tools — both responses populate asize_driftfield (count + hint) when drift surfaces.- Delivery-lead pre-flight —
feature-delivery-leadandplatform-delivery-leadquote the hint verbatim in their handoff output when the workspace-wide count is non-empty.
All three quote the canonical hint from internal/sizing/ambient.go —
they do not compose the string themselves. The noise threshold (active
spec union 7d recency union horizon:now unsized initiatives) and the
24h stop-nagging rule (suppress while a recent
.hero/knowledge/roadmap-review-sessions/ record's
drift_count_at_exit: is still ahead of the current filtered count)
keep the channel from going noisy. Tune via
hero.json: roadmap.ambient_recency_days and
roadmap.stop_nagging_hours.
Cross-skill references
spec-sizing— the size ladder, per-type bands, design-time nudges, and drift-handling rules live there. This skill is the triage loop over that ladder; the ladder itself is not re-litigated here.spec-composition— the canonical "multiple related specs" detection heuristic and phrasing. Priority-4 findings (orphan clusters) quotespec-compositionfor the recommendation script.note-capture— session record writes follow the note format defined there.
What the agent must not do
- Improvise a resolution outside the four named above.
- Bulk-operate. No "acknowledge all
giant," no "bump all drift." - Punt CLI keystrokes back to the user. On confirm, the agent runs the CLI itself.
- Act on a non-sizing lens. Refuse with the scaffolded phrase above.
- Write to the tracker. Read-local-only is a hard boundary.
- Re-ask after a halt word. "stop," "enough," "done," "later" exit immediately.
From the file to a first result
The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.
View the source and supporting filesThis download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.
1. Download the file
Download SKILL.mdFrom the root of a test project, save the file as .skill-downloads/interactive-roadmap-review-msh3us5m/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.
Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.
mkdir -p '.skill-downloads/interactive-roadmap-review-msh3us5m' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/interactive-roadmap-review-msh3us5m/download' --output '.skill-downloads/interactive-roadmap-review-msh3us5m/SKILL.md.part' && mv '.skill-downloads/interactive-roadmap-review-msh3us5m/SKILL.md.part' '.skill-downloads/interactive-roadmap-review-msh3us5m/SKILL.md'2. Check prerequisites
Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.
Environment declared by the author: opencode
No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.
The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.
3. Load the skill
After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.
Claude Code
test -f '.skill-downloads/interactive-roadmap-review-msh3us5m/SKILL.md' && test -s '.skill-downloads/interactive-roadmap-review-msh3us5m/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/roadmap-review' && cp -R '.skill-downloads/interactive-roadmap-review-msh3us5m' '.claude/skills/roadmap-review'OpenSkills
OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.
Official OpenSkills installationopenskills install './.skill-downloads/interactive-roadmap-review-msh3us5m'openskills read 'interactive-roadmap-review-msh3us5m'Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.
For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.
openskills syncManual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.
4. Try a first task
Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:
Read .skill-downloads/interactive-roadmap-review-msh3us5m/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.
PDF Reader
Productivity
Read and extract text from PDF files, including documents, reports, contracts, and spreadsheets. Works with local files, URLs, and WhatsApp attachments. Use whenever PDF content is needed, even if not explicitly requested.
Discord Messaging Workflows
Productivity
Use the message tool to send, edit, and moderate Discord messages with interactive components.
Interactive Verdict Preview
Productivity
Generate an interactive HTML preview of keep/drop verdicts for maintainer review, then process the pasted feedback JSON.