Skip to content
Back to skills

Roadmap

ASecurity

Capture and prioritize feature ideas and competitor findings in a private ROADMAP.md backlog.

  • 7 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 24, 2026
devopsgobashreactcode-reviewgitapibackenddocumentation

Works with

  • claude code
  • cursor
  • cli
  • api

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned October 3, 2026

npx -y skills add iuliandita/skills --skill roadmap --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Roadmap?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Roadmap
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/iuliandita-roadmap/badge)](https://www.skillsdirectory.com/skills/iuliandita-roadmap)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: roadmap
description: >
  Capture and prioritize feature ideas and competitor findings in a private ROADMAP.md backlog.
license: MIT
compatibility: "Requires git. Optional: gh (GitHub CLI) or glab (GitLab CLI) for PR tracking and competitive scanning"
metadata:
  source: iuliandita/skills
  date_added: "2026-04-05"
  effort: medium
  argument_hint: "[ideas... | update | scan <repo-url> | review]"
---

# Roadmap: Lightweight Project Idea Tracker

Manage a project's feature backlog in a gitignored ROADMAP.md. Quick idea capture, progress
tracking after PRs and releases, competitive intelligence from similar repos, and periodic
review to keep priorities honest.

Not a project management system. No phases, no execution plans, no milestones. Just a
scratchpad that evolves with the project.

## When to use

- Capturing feature ideas, brainstorms, or "what if" thoughts for a project
- Tracking which ideas shipped via PRs or releases
- Scanning competing or similar repos for feature inspiration
- Reviewing and prioritizing the idea backlog
- Bootstrapping a fresh ROADMAP.md for a project that doesn't have one
- User says "add to roadmap", "what should I build next", or "what are competitors doing"

## When NOT to use

- Structured project management with phases, milestones, execution plans
- Sprint or iteration planning with task dependencies
- Code review or PR review - use **code-review**
- Writing project docs or READMEs - use **update-docs**
- Factual drift in `ROADMAP.md`'s stated version numbers or release-highlight prose - use **update-docs**. This skill owns item status itself: Mode 2 moves shipped `[planned]` / `[exploring]` items to Shipped. update-docs owns the header version and highlight text; roadmap owns which items count as shipped.
- Tracking bugs or incidents - use issue trackers directly

---

## AI Self-Check

Before writing or modifying ROADMAP.md, verify:

- [ ] **Gitignored**: ROADMAP.md is in .gitignore (or user explicitly opted out of gitignoring)
- [ ] **No secrets**: entries don't contain API keys, internal URLs, or sensitive business info
- [ ] **Attribution preserved**: competitive intel cites the source repo or project
- [ ] **No duplicates**: new ideas don't repeat existing entries (check intent, not just wording)
- [ ] **Format preserved**: edits work within the existing file structure - don't reformat
      sections the user didn't ask to change
- [ ] **Shipped items attributed**: completed entries reference the PR, release, or commit
- [ ] **No hallucinated competitive data**: every feature, issue count, or user demand claim
      from a competitor repo is backed by an actual link or quote - not inferred
- [ ] **No priority inflation**: P0 items are genuine blockers, not aspirational wishes
- [ ] **Evidence quality marked**: competitive intel, user feedback, and assumptions are labeled with source and confidence
- [ ] **Backlog hygiene kept**: stale ideas are parked or deleted instead of endlessly reprioritized
- [ ] Cross-cutting agent hygiene applied - see `references/agent-hygiene.md`

## Roadmap Format

### Sections (fixed order)

Every ROADMAP.md uses these sections in this order. Empty sections can be omitted
but the order is not negotiable - consistency makes the file scannable. When adding
content to a previously omitted section, create it in the canonical position relative
to existing sections.

```markdown
# Roadmap

> Project: {name} | Updated: {date} | Current: v{version}
> Local planning doc, gitignored. Not a commitment.

## Snapshot

{1-2 paragraphs: project state, what the next milestone means, current focus}

## Exit Criteria

What "done" means for the next milestone. Each criterion has a verdict.

### {Criterion Name}

**Verdict**: Pass | Fail | Partial

- {Requirement}
- {Requirement}

## Now - P0

Blocks the next milestone or release. Active work only.

- [in-progress] {Description} - {area} | PR #{n}
- [planned] {Description} - {area}

## Next - P1

Committed direction. Happens after Now is clear.

- [planned] {Description} - {area}
- [exploring] {Description} - {area}

## Later - P2

Good ideas, no timeline. Revisit during review.

- {Description} - {context}

## Experiments

Low confidence. Build only with real demand signal.

- {Description} - {what would validate it}

## Shipped

### v{X.Y.Z} ({date})

- ~~{Description}~~ - {area} | PR #{n}, v{X.Y.Z} ({date})

## Competitive Intel

### {owner/repo}

- {Feature} ({strong signal | weak signal | noise}) - {evidence}
- User demand: {issue links, discussion quotes, vote counts}

## Parked

Items deferred with reason.

- {Description} - {reason for parking}
```

### Item format

Items have two tiers depending on where they live:

**Active items (Now, Next)** - structured, with status and tracking:
```
- [status] Description - area | tracking
```

Status values: `exploring`, `planned`, `in-progress`

Area values are project-specific shorthand for the component or domain (e.g., `ui`,
`api`, `backend`, `infra`, `docs`, `auth`). Infer from the project's structure. If
unclear, omit the area rather than guessing.

**Backlog items (Later, Experiments)** - lightweight, quick capture:
```
- Description - context or source
```

Items gain structure as they're promoted. A quick idea in Later becomes a tracked
item when it moves to Next.

**Shipped items** always get attribution:
```
- ~~Description~~ - area | PR #N (or MR #N), vX.Y.Z (date)
```

### When a ROADMAP.md already exists

Read the existing structure first. If it doesn't match this format:
- In **add** or **update** modes: work within the existing structure, don't restructure
- In **review** mode: suggest migrating to this format if the current one is disorganized
- If the user asks to restructure: migrate section by section, preserving all content

---

## Prioritization Practices

- Limit active P0/P1 items so prioritization remains meaningful.
- Group duplicate ideas and link evidence instead of copying long notes repeatedly.
- Tie each near-term item to a clear user, business, or technical outcome.
- Record exit criteria before implementation starts.
- Separate commitments from experiments so speculative work does not crowd delivery.

---

## Workflow

### Step 0: Activity Detection (runs on every invocation)

Before reporting roadmap state, inspect the available repository root, ROADMAP.md, ignore rules,
README, and primary package/project metadata. Distinguish observed, missing, and unavailable state;
never infer that a roadmap is absent or ignored when the repository cannot be inspected. Name any
project context that was unavailable.

If no ROADMAP.md exists yet or a successful activity query returns no recent activity, skip the reminder. Report query failures as unavailable evidence.

Otherwise, check for recent project activity:

```bash
command -v gh; command -v glab   # forge CLI: gh (GitHub), glab (GitLab), or git-only
# GitHub
gh pr list --state merged --limit 10 \
  --json number,title,mergedAt
# GitLab
glab mr list --merged --per-page 10

# Always available (portable - no GNU date required)
git tag --sort=-creatordate | head -5
git log --oneline --since="2 weeks ago" | head -15
```

If neither `gh` nor `glab` is available, note it once ("PR tracking unavailable -
install gh or glab for full coverage") and continue with git-only data (tags + commits).

If merged PRs or new releases look like they match open roadmap items, mention it
briefly before proceeding:

> "Heads up: PR #142 and v0.15.0 landed since the last roadmap update.
> Want me to check those off first, or continue with {requested mode}?"

Don't block. If the user ignores it, proceed with their request.

---

### Mode 1: Add Ideas (default)

Trigger: user throws ideas at the project, says "add to roadmap", or describes features.

#### Step 1: Bootstrap if needed

1. Check if ROADMAP.md exists in the project root (in monorepos, default to the git
   root unless the user specifies a package - if multiple ROADMAP.md files exist, ask)
2. Before writing any content, ensure /ROADMAP.md is ignored unless the user explicitly opted into tracking. If needed, add:
   ```
   # Project roadmap (local planning doc)
   /ROADMAP.md
   ```
   Verify with `git check-ignore --no-index ROADMAP.md` and check `git ls-files --error-unmatch ROADMAP.md`: an already tracked file remains tracked despite ignore rules; do not silently untrack it.
3. If absent, create it using the starter structure. Read README or the primary manifest to fill Snapshot with real context. Report any ignore entry added.

#### Step 2: Parse and place ideas

Extract actionable items from the user's input. For each idea:
- Write a clear, concise description (keep the user's voice - clean up only if unclear)
- Place it in the right priority tier (ask if genuinely ambiguous, default to P1)
- Add context: where the idea came from, what it enables, any constraints mentioned

Append to the appropriate section. Don't reorder existing items.

#### Step 3: Offer competitive scan

If the roadmap has no competitive intel section and this is the first batch of ideas, ask:

> "Want me to scan similar repos for feature ideas that might fit {project-name}?"

Ask once per session. If declined, don't ask again.

---

### Mode 2: Update / Check Off

Trigger: user says "update roadmap", asks to check off items, or after a PR merge / release.

If no ROADMAP.md exists, redirect to Mode 1 (bootstrap) first.

Copy this checklist and track progress:

- [ ] Step 1: Recent activity gathered (or named PRs fetched)
- [ ] Step 2: Matches presented and confirmed
- [ ] Step 3: Confirmed items moved to Shipped with attribution; header date updated
- [ ] Step 4: File re-read; if a confirmed item is still in an active tier or lacks attribution, fix it and return to Step 4

#### Step 1: Gather recent activity

```bash
# Always available (portable - no GNU date required)
git log --oneline --since="2 weeks ago"
git tag --sort=-creatordate | head -5

# GitHub
gh pr list --state merged --limit 20 \
  --json title,number,mergedAt
# GitLab
glab mr list --merged --per-page 20
```

Adjust the time range if the user specifies one. If the user names specific PRs
directly (e.g., "PR #45"), fetch those with `gh pr view 45 --json title,mergedAt`
(or `glab mr view 45`) instead of relying on the time-windowed list.

#### Step 2: Match activity to roadmap items

Compare commit messages, PR titles, and release notes against open roadmap items.
Use semantic matching - "add dark mode support" matches "Dark mode theme option".

Present matches to the user before making changes:

> Found these potential matches:
> - PR #142 "Add dark mode toggle" -> matches "Dark mode theme option" (P1)
> - v0.15.0 release includes backup/restore -> matches "Backup and restore" (P0)
>
> Check these off?

#### Step 3: Update the file

If the user already stated which items shipped (e.g., "PR #45 adds dark mode"),
treat that as pre-confirmed - present the planned changes for review rather than
re-asking "check these off?"

For confirmed matches:
1. Apply strikethrough: `~~description~~`
2. Add attribution in the shipped-item shape from Item format: `- area | PR #N, vX.Y.Z (date)` (include both when a PR and release apply)
3. Move to the "Shipped" section (create it if missing), grouped by version or date

Update the `Updated:` date in the header.

#### Step 4: Verify the edit

Re-read ROADMAP.md. Each confirmed item appears once, under Shipped, with its PR or release
attribution, and unconfirmed items are untouched. Fix any miss and repeat this step.

---

### Mode 3: Competitive Scan

Trigger: user asks to scan competitors, provides repo URLs, or accepts the Mode 1 offer.

Read `references/competitive-scan.md` for target selection, forge CLI commands, strict
fit filtering, approval flow, and Competitive Intel formatting.

Mode 3 requires a bounded, reaction-sorted forge query, or a documented equivalent when that forge
cannot sort by reactions. Apply the reference's repository-size-calibrated strong/weak/noise
thresholds, attribute every candidate, and present candidates for approval before writing them.

---

### Mode 4: Review / Prioritize

Trigger: user asks to review the roadmap, prioritize, or "what should I work on next".

#### Step 1: Load and summarize

Read ROADMAP.md. Present a summary:
- Item counts by priority tier
- Items currently in progress (if tracked)
- Recently shipped items
- Stale items: items untouched for 60+ days are candidates for archival or re-prioritization
  (use per-item dates or recorded history; git blame cannot date an ignored file, and file mtime does not establish individual item age)

#### Step 2: Suggest actions

Based on the current state, flag any of these:
- **P0 items not being worked on** - supposed to be urgent; needs explanation or demotion
- **Items untouched 60+ days** - park with reason or promote; sitting isn't a priority
- **Related items scattered across tiers** - group into a cohesive effort
- **Shipped items still in active sections** - move to Shipped
- **Missing structure** - suggest organizational improvements

#### Step 3: Offer structural improvements

If the roadmap lacks clear organization, suggest improvements:
- Adding priority tiers if everything is a flat list
- Separating product work from promotion/go-to-market
- Adding a Snapshot section for project context
- Adding exit criteria for major milestones
- Creating an Experiments section for low-confidence ideas

Present suggestions. Apply only what the user approves.

#### Step 4: Apply changes

With user approval, reorganize, re-prioritize, park, or remove items. Never delete
silently - move to **Parked** with a reason, or confirm deletion explicitly.

---

## Reference Files

- `references/trigger-integration.md` - optional auto-trigger setup for Claude Code hooks,
  GitHub Actions, and git hooks. Read this when the user wants push-based roadmap updates
  instead of (or in addition to) the built-in activity detection.
- `references/competitive-scan.md` - competitor/repo scan workflow, evidence thresholds,
  and ROADMAP.md Competitive Intel formatting.

## Output Contract

See `references/output-contract.md` for the full contract.

- **Skill name:** ROADMAP
- **Deliverable bucket:** `deliverables`
- **Mode:** conditional. When invoked to **analyze, review, audit, or improve** an existing roadmap (e.g., "review my ROADMAP.md"), apply the reporting size and evidence rules in `references/output-contract.md` and write the deliverable to `docs/local/deliverables/roadmap/<YYYY-MM-DD>-<slug>.md`. When invoked to **build or update a roadmap** (its primary mode, writing to the user's working-directory `ROADMAP.md`), respond freely without the contract; build-mode output goes to `ROADMAP.md` in the working directory, not to `docs/local/`.
- **Severity scale:** `P0 | P1 | P2 | P3 | info` (see shared contract; only used in audit/review mode).

## Related Skills

- Use the host's browsing tools during competitive scans (Mode 3) to read competitor repos
  and documentation when web fetch alone isn't sufficient
- **git** - update mode (Mode 2) reads git history and PR data to match shipped work
- **code-review** - reviews code correctness. This skill tracks what to build;
  code-review evaluates the code that implements it
- **update-docs** - updates project documentation AND audits ROADMAP.md for factual drift in
  the header version and release-highlight prose. This skill owns prioritisation, capture,
  competitive intel, and item status (Mode 2 moves shipped items out of the active tiers);
  update-docs owns the stated version and highlight text staying in sync with HEAD.

## Rules

1. **Gitignore by default.** Ensure ROADMAP.md is in .gitignore before creating or writing it.
   Skip only if the user explicitly asks to track it in git.
2. **Attribute competitive intel.** Every idea from another repo gets a source tag. Never
   present external features as original ideas.
3. **Ask before checking off.** Present matches and let the user confirm. Don't auto-complete
   roadmap items based on fuzzy matches alone.
4. **Headless mode.** In non-interactive contexts (`--bare`, Cursor Automations, Codex
   `exec`): skip confirmation prompts, apply only exact matches in Mode 2, add only
   strong-signal items in Mode 3, and don't offer competitive scans in Mode 1.

Files in this skill

  • SKILL.md16.2 KB
  • references/agent-hygiene.md1.1 KB
  • references/competitive-scan.md4.8 KB
  • references/output-contract.md2.8 KB
  • references/trigger-integration.md4.5 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…