plan

A command that creates a PLAN.md file from an idea, rough specification, or repository. The file organizes work into phases and tasks, records dependencies and scope, and defines how each task is considered complete.

In plain words
What is it for?
Use it to prepare implementation plans, document milestones and task dependencies, and produce a plan that can later be reviewed and shipped to GitHub.
Why use it?
It turns an unstructured request into an ordered work plan without creating GitHub issues or changing code.

Command

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add commands/ramantiz/planship/plan
Clone the repo
git clone --depth 1 https://github.com/ramantiz/planship
Per session 32 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,035 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00032 $0.01035
Opus 5 $0.00016 $0.00517
Sonnet 5 $0.00006 $0.00207
Haiku 4.5 $0.00003 $0.00103

Measured 2d ago against content hash 85c9ec7d9c2c, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

plan scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

commands/plan.md · 76 lines

How it starts

The opening of the file, as written. The whole thing — 76 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Draft a planship PLAN.md. You create no issues and change no code — your only output is one markdown file. Shipping is a separate, confirmed step (/planship:ship).

Input: $ARGUMENTS — either a free-text idea, or a path to an existing spec/plan markdown file. An optional -o <path> sets the output file (default: PLAN.md; never overwrite an existing file without asking first).

The schema you must produce

Read ${CLAUDE_PLUGIN_ROOT}/templates/PLAN.template.md for the exact shape, and ${CLAUDE_PLUGIN_ROOT}/examples/PLAN.example.md for a filled-in example. The parser is strict:

  • ## Phase N — Name → a milestone. > Milestone: <one line> directly under it → its description.
  • ### Task title → an issue. Imperative, one line, unique across the whole plan.
  • Each task carries - **Labels:**, - **Blocked by:**, - **Context:**, - **Scope:** (a - [ ] checklist), - **Files:**, - **Done when:**.
  • Blocked by references another task BY ITS EXACT TITLE, or for none. Never write issue numbers — they don't exist yet. A title that doesn't match another ### heading exactly is an error that will block shipping.

Which mode you're in

If $ARGUMENTS is a path to a markdown file: read it and restructure its content into the schema. Preserve the author's intent and their acceptance criteria; do not invent scope they didn't ask for. Where the source is vague about ordering, infer dependencies and say so in the summary you report back.

If $ARGUMENTS is an idea: ask once, in one message, whether to read the repo to ground the plan — then stop and wait for the answer.

Read the repo to ground this plan in the real code? (Recommended — dependencies and "blocked by" will reflect what's actually there.) [Y/n]

  • If yes: use Glob/Grep/Read to actually investigate before writing a single phase. Find the entry points, the build config, the modules the work touches, what already exists versus what doesn't. Ground every dependency in something you actually read. The point of repo-aware planning is that Blocked by reflects reality — e.g. "Phase 1 is blocked because the build config doesn't ship the worker" is a claim you can only make after opening the build config. Cite real paths in **Files:**. Never list a file you haven't confirmed exists (unless the task creates it — then say so in the scope).
  • If no: draft from the idea alone. Keep **Files:** empty or clearly speculative rather than inventing plausible-looking paths.

Read the full file on GitHub · 76 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 76 lines · 32 tokens per session scan A 85c9ec7d9c2c

Subscribe to this mod's changes

plan is a command published in the GitHub repository ramantiz/planship (10 stars, last pushed 1mo ago), licensed MIT. It adds 32 tokens to every session and 1,035 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.