Skip to content
yranganaPublic

About

A markdown convention for tracking what you are building. Plain files in your repo, one source of truth for what is active, shipped, and next.

Topics

Resources

Contributing

Stars

2 stars

Watchers

1 watching

Forks

Repository files navigation

Plans

Deploy Tests Listed on ClaudePluginHub

Plans demo

A markdown convention for tracking what you're building. Plain files in your repo, one source of truth for what's active, shipped, and next. AI assistants read it natively as a bonus.

Home · Roadmap demo · Status demo · Slides · Docs · Blog post · Reference spec

Created by Yasiru Rangana, AI Architect and AI Engineer, Sydney.


What this is

A planning convention for solo devs and small teams. Every feature is a markdown file with structured frontmatter and a status banner. One STATUS.md answers "what's in flight, what's next, what just shipped". A static roadmap.html renders an interactive Gantt and dependency graph from the same data.

The primary audience is you, the person doing the work. The structure exists so you stop losing track of what you've shipped vs. what's still in flight. The fact that AI coding assistants (Claude Code, Cursor, Antigravity, Windsurf) can read your roadmap natively, because it's plain markdown with predictable shape, is a side effect, and a useful one.

The data model is plain markdown and JSON. On the script path, the instruction file (CLAUDE.md, AGENTS.md, .cursorrules) is how you tell your assistant the system exists, and it's the one thing that changes per platform. On the plugin path, no instruction-file change is needed at all, since the installed plugin is itself the assistant integration.

I built this for myself and use it daily across my own projects. It's MIT, small and readable end to end, and ships with everything you need including a Claude Code plugin, a CLI, a dashboard, and a /plans sync skill that audits your plans against your git log weekly.

Where this sits in the wider trend: AI-assisted development is shifting toward spec-driven workflows, where the spec is a first-class artifact your assistant reads and writes against. Tools like GitHub's Spec Kit handle the per-feature spec workflow. Plans is the portfolio layer that sits alongside: the multi-feature view of what's active, what shipped, what got abandoned, and what blocks what. Different layer, same shift.

What you get

  • A single source of truth for "what's in flight, what's next, what just shipped"
  • Persistent context across plans, for yourself, over time
  • Persistent context for your AI assistant across sessions
  • A shareable visual roadmap for non-technical stakeholders
  • Drift detection between intent (plans) and reality (git log)

Interactive roadmap dashboard (live demo):

Roadmap dashboard

STATUS.md rendered (live demo):

Status page

Where it fits

Best fit:

  • Solo developers and small teams (1 to 4 people) juggling multiple features in parallel
  • Projects with 3+ ideas in flight where context-switching costs are real
  • AI-assisted workflows where you want your assistant to know what you've already shipped
  • Repos accumulating loose *_PLAN.md files at the root with no shared shape

Less useful when: you already have a working Jira/Linear/Notion setup that fits your team, you're on a single-feature project, or you need a full audit trail for compliance.

Full scope and audience details in docs/reference.md.


Installation

Claude Code (plugin, recommended)

Plans is listed in the Anthropic Directory. Install it one of two ways, not both (two installs register the hooks twice):

From the Claude app (one click): open Settings > Plugins > Discover, search "Plans", and click Add. The plugin syncs into Claude Code on any machine signed in to the same account.

From the terminal:

/plugin marketplace add yrangana/Plans
/plugin install plans@yrangana-plans

Then bootstrap your project in Claude Code:

/plans:plans init

init creates plans/, asks whether to track it in git (default: keep it local), and points you at /plans:plans new for your first plan. Refresh project system files any time with /plans:plans update. The plugin also supplies the project's operational rules (where to write plans, when to update status) automatically via a session hook, no CLAUDE.md edit needed.

The plugin also installs a session guard: if a session changes code while a plan is in flight and no plan file is updated, it asks once per turn for the update before the session ends.

Other assistants and no-plugin setups

Works with Cursor, Antigravity, Windsurf, and any of the roughly 70 assistants the community skills CLI supports.

  1. Install the skill:

    npx skills add yrangana/Plans
  2. In your assistant, bootstrap the project:

    /plans init
    

    init creates plans/, asks whether to track it in git (default: keep it local), and offers to append the planning rules to your CLAUDE.md, AGENTS.md, or .cursorrules (explicit consent, never twice).

  3. Update the skill later with npx skills update.

Prefer plain scripts, with no assistant session involved? The CLI path is still supported:

curl -sSL https://raw.githubusercontent.com/yrangana/Plans/main/install.sh | bash
plans-init /path/to/your/project

Read it before running it:

curl -sSLO https://raw.githubusercontent.com/yrangana/Plans/main/install.sh
less install.sh && bash install.sh

Then, on either path

Open the dashboard (any static file server from your project root, then /plans/roadmap.html):

python -m http.server 8080   # Python 3
npx serve -l 8080            # Node.js
php -S localhost:8080        # PHP

Edit your first plan: open plans/active/EXAMPLE_PLAN.md, replace it with your real first plan, and add a row to plans/STATUS.md.


Updating

How you update depends on how you installed. Plugin installs update the plugin first, then run /plans:plans update; the plans CLI updates itself and your project's system files separately.

Update via the plugin

Update the plugin where you installed it: the Update button on the Plans page in the Claude app (Settings > Plugins) for a Directory install, or /plugin for a terminal install. Then refresh your project's system files (roadmap.html, plans/README.md) any time with:

/plans:plans update

Update an npx-installed skill

npx skills update

Update the plans CLI

Either re-run the installer, or pull the repo manually:

curl -sSL https://raw.githubusercontent.com/yrangana/Plans/main/install.sh | bash

Update an existing project's plans/

plans-update /path/to/your/project

This pulls the latest plans repo, shows a diff of system files, and asks before overwriting. User data (STATUS.md, plans.json, active/, shipped/) is never touched. Backups go to <file>.bak.

To skip the auto-pull (offline or when you have local edits in the plans repo): plans-update --no-pull /path/to/your/project.

Uninstall the plans CLI

To remove the CLI commands without deleting the plans repo:

rm ~/.local/bin/plans-init ~/.local/bin/plans-update

The cloned repo at ~/.local/share/plans is left in place. Delete it too if you want a clean slate:

rm -rf ~/.local/share/plans

Any plans/ directories in your projects are unaffected (they are local-only and git-excluded).

See CHANGELOG.md for what's changed between versions.


Docs and resources

Five ways into the system, depending on what you want:

Resource Best for Format
Home Landing page with links to everything below Web page
Roadmap demo Seeing the Gantt dashboard with real data Interactive web page
Status demo Seeing what STATUS.md looks like rendered Interactive web page
Slides A 5-minute overview of the whole system Reveal.js deck
Docs Browsable docs rendered from the repo Web page
Blog post The story and motivation behind it Long-form prose
Reference spec Implementation details, every field, every rule Technical reference

Repo Structure

plans/
├── docs/                    # Full guide
│   ├── reference.md         # Technical spec
│   ├── blog-post.md         # Narrative explanation
│   └── presentation.html    # Slideshow
├── template/                # What users copy into their projects
│   └── skills/
│       └── plans/           # The /plans skill (self-sufficient package)
│           ├── SKILL.md
│           ├── references/  # Per-mode logic loaded on demand
│           └── template/    # Bundled project template
│               ├── CLAUDE.md.snippet   # under skills/plans/template
│               └── plans/   # STATUS.md, plans.json, roadmap.html, active/, shipped/, superseded/
├── scripts/
│   └── init.sh              # One-command setup
├── web/                     # GitHub Pages site (deployed automatically)
│   ├── index.html           # Landing page
│   ├── roadmap.html         # Live roadmap demo
│   ├── status.html          # Live STATUS.md demo
│   ├── presentation.html    # Slides
│   └── docs.html            # Browsable docs
└── examples/                # Static assets for README
    ├── demo.svg             # Animated demo
    ├── screenshot-dashboard.png
    └── screenshot-status.png

How It Works

plans/active/*.md             plans/shipped/*.md
   (frontmatter + banner)        (frontmatter + banner)
              \                  /
               \                /
                v              v
              plans/plans.json    <- machine-readable snapshot
              /              \
             v                v
   plans/STATUS.md       plans/roadmap.html
   (engineer's front     (stakeholder visual
    door)                 dashboard)

Git log is the ground truth for what shipped. Plan files are the intent layer. The /plans sync skill reconciles them weekly.


The /plans Skill, drift detection between intent and reality

The thing that makes this convention actually hold up over time: plans describe what you intended to do, git log records what actually happened. The two drift apart constantly. /plans sync reconciles them.

It's a Claude Code slash command (with Antigravity and Cursor ports) with four modes:

  • /plans init: bootstraps plans/ in a project from the bundled template. Works on every install path.
  • /plans sync: weekly audit. Reads every plan's frontmatter, runs git log, runs 13 drift rules (stale plans, missing ETAs, orphaned dependencies, frontmatter contradictions, project header gaps), and proposes fixes as a diff. You review and confirm in about 2 minutes. Regenerates plans.json and the auto-managed sections of STATUS.md.
  • /plans new: guided creation of a new plan file with correct frontmatter, status banner, and timeline.
  • /plans update: refreshes system files (roadmap.html, plans/README.md) from the installed skill version. Works on every install path.

All four modes run the same way whether the skill was installed via the plugin, npx skills add yrangana/Plans, or the plans-init script. The plans-init and plans-update scripts remain as a no-assistant fallback for the two setup jobs. See docs/reference.md for the full drift-rule list.


Platform Compatibility

Platform Instruction file Skill format
Claude Code CLAUDE.md .claude/skills/*.md
Antigravity AGENTS.md .agents/skills/*/SKILL.md
Cursor .cursorrules Custom slash commands
Windsurf .windsurfrules Workflows

The plans/ directory is identical across all platforms.


Contributing

This is a small, opinionated convention. Issues and PRs welcome.

Highest-leverage contributions: skill ports to other AI assistants (Cline, Windsurf, aider), roadmap.html improvements (Mermaid export, print stylesheet), bug fixes, doc clarifications.

See CONTRIBUTING.md for specific asks, what to expect, and where the maintainer will push back. For substantive changes to the convention itself (frontmatter spec, lifecycle), open an issue first to discuss.

If Plans saves you time, a star on GitHub helps other people find it.

License

MIT. Fork, adapt, share. Created by Yasiru Rangana.

About

A markdown convention for tracking what you are building. Plain files in your repo, one source of truth for what is active, shipped, and next.

Topics

Resources

Contributing

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages