npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

pi-roadmap

v1.1.1

Published

Roadmap management extension for pi-coding-agent — Epic/Story/Task planning with 5 tools

Readme

📖 pi-atelier 实战指南 — 从零教会你使用 pi-atelier 扩展生态,包含完整示例和最佳实践。

English | 程序中文文档

pi-roadmap

源码仓库 | npm

Project roadmap management for pi — structured Epic/Story/Task planning with progress tracking, priority inheritance, and cross-session continuity.

Why You Need It

AI coding agents are great at writing code, but terrible at remembering what they were supposed to do yesterday. pi-roadmap gives your agent a persistent, structured project plan that survives session restarts:

  • Epic → Story → Task hierarchy — Break any project into actionable chunks
  • Automatic progress tracking — Task completion cascades up to Story and Epic
  • Priority inheritance — Tasks without explicit priority inherit from parent Story/Epic
  • "What's next?" on demand — Get the highest-priority actionable task instantly
  • Cross-project sync — One roadmap can span multiple projects, each getting its own filtered view
  • Session continuity — Reminds you of in-progress tasks when a session ends

How It Works

┌─────────────────────────────────────────────────┐
│                   Roadmap                        │
│  ┌─────────────────────────────────────────────┐ │
│  │ Epic E0 [high] ← maps to a project          │ │
│  │  ┌────────────────────────────────────────┐  │ │
│  │  │ Story E0.S0 [doing]                    │  │ │
│  │  │  ✅ T0: Design schema         [done]   │  │ │
│  │  │  🔄 T1: Implement storage      [doing] │  │ │
│  │  │  ⬜ T2: Write tests            [todo]   │  │ │
│  │  └────────────────────────────────────────┘  │ │
│  │  ┌────────────────────────────────────────┐  │ │
│  │  │ Story E0.S1 [todo]                     │  │ │
│  │  │  ⬜ T0: ...                   [todo]    │  │ │
│  │  └────────────────────────────────────────┘  │ │
│  └─────────────────────────────────────────────┘ │
│                                                   │
│  Priority: Task > Story > Epic > "medium"         │
│  Statuses: todo → doing → done | blocked | dropped│
│  Auto-cascade: all Tasks done → Story done         │
│                all Stories done → Epic done         │
└───────────────────────────────────────────────────┘

Core mechanisms:

  • Priority inheritance — Each task resolves its priority as: own > parent Story > parent Epic > medium
  • Status cascade — Marking the last Task done automatically flips the parent Story to done, and the parent Epic when all its Stories are done
  • Two-level storage — Global roadmap in ~/.pi/roadmap/, project-level filtered view in <project>/.pi/roadmap/

Installation

pi install git:github.com/catlain/pi-roadmap

Restart pi to activate. No configuration required.

Prerequisite: pi must be installed.

Tools

roadmap_list — List all roadmaps

Returns every roadmap with a progress bar and per-Epic breakdown. Optionally filter by status or tag.

Parameters:

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | status | string | No | Filter by status: active / paused / completed / archived | | tag | string | No | Filter by tag |

Example output:

### My Project Roadmap (active) ████████░░ 80%
ID: my-project | Tags: v2
  E0 [done/high] Core feature
    Stories: 2 | Tasks: 5/5
  E1 [doing/medium] Polish & docs
    Stories: 1 | Tasks: 2/5

When to use: Start of a session to see what's active, or to find a specific roadmap by tag.


roadmap_show — View full roadmap details

Displays every Epic, Story, and Task with status icons, descriptions, and completion dates.

Parameters:

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | roadmapId | string | Yes | Roadmap ID (slug format, e.g. "my-project") |

Example output:

# My Project Roadmap ████████░░ 80%

[源码仓库](https://github.com/catlain/pi-roadmap) | [npm](https://www.npmjs.com/package/pi-roadmap)
Status: active | Tags: v2

## Epic E0: Core feature [done/high]
...
  ✅ E0.S0.T1: Design schema (2025-01-15) — approved
  🔄 E0.S1.T2: Write API docs

When to use: When you need to inspect the full hierarchy, check descriptions, or find a specific task ID.


roadmap_plan — Create or update roadmaps

Creates a new roadmap or updates an existing one. The content parameter takes a full roadmap JSON object following the structure below.

Parameters:

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | roadmapId | string | Yes | Roadmap ID (slug format, e.g. pi-atelier-split) | | action | string | Yes | "create" for new, "update" for existing | | content | object | Yes | Full roadmap JSON (see structure below) |

Content structure:

{
  "meta": {
    "id": "my-project",
    "title": "My Project Roadmap",
    "status": "active",
    "created": "2025-01-15",
    "updated": "2025-01-15",
    "tags": ["v2"]
  },
  "epics": [
    {
      "id": "E0",
      "title": "Build core feature",
      "description": "What and why",
      "status": "todo",
      "priority": "high",
      "project": "my-project-dir",
      "stories": [
        {
          "id": "E0.S0",
          "title": "Data model design",
          "description": "Scope, acceptance criteria",
          "status": "todo",
          "priority": "high",
          "tasks": [
            { "id": "E0.S0.T0", "title": "Design schema", "status": "todo" },
            { "id": "E0.S0.T1", "title": "Write migration", "status": "todo" }
          ]
        }
      ]
    }
  ]
}

ID format: E{epicIndex}E{epicIndex}.S{storyIndex}E{epicIndex}.S{storyIndex}.T{taskIndex} (zero-based).

When to use: When the user says "let's plan", "break this down", "create a roadmap", or confirms a discussion into actionable tasks. Also for adjusting existing plans.

Important rules:

  • done tasks are never modified — only todo/doing/blocked items are updated
  • Each Epic must have a project field pointing to an actual project directory
  • Tasks are the leaf level — no nesting below Task

roadmap_next — Get next actionable tasks

Returns the highest-priority tasks across all active roadmaps. Sort order: doing first, then by priority (high > medium > low).

Parameters:

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | roadmapId | string | No | Limit to one roadmap; omit to search all active roadmaps | | limit | number | No | Max tasks to return (default: 5) |

Example output:

## My Project Roadmap
- [doing] E1.S0.T2: Implement storage (Epic: Build core)
- [todo] E1.S1.T0: Write API docs (Epic: Polish & docs)

When to use: When you start working and want to know what to pick up next.


roadmap_done — Mark task complete

Marks a task as done, cascades status to parent Story/Epic if all siblings are done, and syncs to the associated project.

Parameters:

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | roadmapId | string | Yes | Roadmap ID | | taskId | string | Yes | Task ID, e.g. "E1.S2.T3" | | note | string | No | Completion note or output link |

Example output:

✅ Task "E1.S2.T3" marked as done.
Synced to projects: my-project

When to use: When you finish a task and want to record progress.

Storage

| Location | Path | Purpose | |----------|------|---------| | Global | ~/.pi/roadmap/<id>.roadmap.json | Full roadmap data | | Project | <project>/.pi/roadmap/roadmap.json | Filtered view for one project | | Archive | ~/.pi/roadmap/archive/<id>.roadmap.json | Completed/archived roadmaps | | Doing | ~/.pi/roadmap/doing.json | Tracks in-progress tasks for session-end reminders |

Best Practices

✅ Recommended

  • Let the agent propose a plan with roadmap_plan, then confirm before executing
  • Use roadmap_next at session start to pick up where you left off
  • Tag roadmaps for easy filtering (e.g. v2, docs, infra)
  • Keep tasks small (30 min–2 hours) for meaningful progress tracking
  • Add completion notes via the note parameter for future reference

❌ Not Recommended

  • Don't manually edit .roadmap.json files — always use the tools
  • Don't create tasks larger than 2 hours; break them into smaller tasks
  • Don't skip project on Epics — cross-project sync won't work without it

Limitations

| Limitation | Detail | |------------|--------| | ID format | Zero-indexed, manual assignment — no auto-increment | | No undo | Once a task is done, it can't be reverted via tools | | Single writer | No concurrency control — one agent at a time per roadmap | | No due dates | Only priority-based ordering, no calendar scheduling |

Architecture

pi-roadmap/
├── index.ts              # Entry: register tools + agent_end hook
├── lib/
│   ├── types.ts          # Type definitions, constants, priority helpers
│   ├── store.ts          # File I/O: read/write roadmap JSON
│   ├── parser.ts         # Formatting: progress bars, overview text
│   ├── progress.ts       # Logic: progress calc, next-task extraction
│   ├── validator.ts      # JSON schema validation
│   ├── planner.ts        # Plan creation/update orchestration
│   ├── sync.ts           # Global → project-level sync
│   ├── injector.ts       # before_agent_start context injection
│   ├── doing-store.ts    # In-progress task persistence
│   ├── tools-query.ts    # roadmap_list + roadmap_show
│   ├── tools-plan.ts     # roadmap_plan
│   └── tools-action.ts   # roadmap_next + roadmap_done
├── prompts/
│   ├── plan-description.md    # Tool description for roadmap_plan
│   ├── plan-output-format.md  # JSON format spec (appended to description)
│   ├── plan-diff.md           # Diff analysis guidance
│   ├── decompose-epic.md      # Epic decomposition rules
│   ├── decompose-story.md     # Story decomposition rules
│   └── decompose-task.md      # Task decomposition rules
└── package.json

Dependencies:

  • @earendil-works/pi-coding-agent — ExtensionAPI (peer)

License

MIT