Claude Code · macOS & Linux

Browse your plans by name,
not by hash

cpo reads the cryptic timestamp-hash files in ~/.claude/plans, gives each one a real title, description, and tags, and caches it so the next run is instant.

$ git clone https://github.com/jhubbardsf/claude-plans-organizer && cd claude-plans-organizer && bun install && bun link

Requires bun and a claude-h shell alias for the Claude CLI. Full install →

The plans folder problem

Claude Code names every saved plan with a timestamp and a hash. After a week you have a folder full of files you can't tell apart.

Before

$ ls ~/.claude/plans
1733956987164-bdb8f1b2db294f8a.md
1733951220933-a1c9f0e2bb7d419c.md
1733889104551-77de0b9c12fa4801.md
1733844511287-3e1b8a9c44d0f2bb.md
1733799820145-9f0c2d7e6a1b3577.md

# Which one was the auth plan? No idea.

After

$ cpo list
 1. JWT Authentication Implementation · today #auth
 2. Postgres Schema Migration · today #database
 3. React Server Components Refactor #ui
 4. Stripe Webhook Retry Handler #api
 5. Redis Rate Limiter #perf

# Found it.

Watch it think

First run: cpo scans the folder, hands each new plan to Claude in parallel, and streams back readable titles. Every later run loads from cache in a blink.

cpo · ~/.claude/plans

Cryptic timestamps go in. A browsable, tagged library comes out, and the checksum cache means you only ever pay for analysis once per plan.

What you get

🤖

AI-written metadata

The Claude CLI reads each plan and returns a concise title, a one-line summary, and 1–3 tags.

⚡

Instant after first run

Metadata is cached by file checksum. Unchanged plans are never re-analyzed, so warm runs are immediate.

🧵

Parallel analysis

New plans are analyzed concurrently (10 workers by default). Tune it with --concurrency.

🧭

Interactive browser

Arrow-key through your plans, then view, copy, export, or open any one in your editor.

🏷️

Sort, filter, search

Sort by date, name, or size. Filter by tag. Match plans by partial name or title.

🔧

Scriptable output

cpo list --json pipes clean metadata straight into jq and the rest of your toolchain.

Every command

Eight subcommands. The default is the interactive browser, so plain cpo just works.

cpo / browse

Launch the interactive plan browser. This is the default command.

cpo list / ls

Print a compact list of every plan. Supports --sort, --reverse, --limit, --tag, and --json.

cpo view <plan> / show

Print a plan's full content. Accepts a partial filename or title match.

cpo copy <plan> / cp

Copy a plan's content to the system clipboard.

cpo export <plan> [dest] / save

Write a plan to a file. Defaults to the original filename in the current directory.

cpo refresh [plan]

Force re-analysis. Use --all to rebuild the entire cache, or pass one plan to refresh just that title.

cpo stats

Show cache statistics: total plans, cached plans, pending analysis, and paths.

cpo projects

Resolve which project each plan came from by scanning session files. Slow, and cached after the first run.

Stop scrolling through hashes