Plan mode default save location + naming actively degrade model performance — should default to `<repo>/.claude/plans/YYYY-MM-DD-<topic>.md`

Resolved 💬 2 comments Opened May 22, 2026 by smbiz1 Closed May 26, 2026

Current behavior

When plan mode produces a markdown file, it lands at
~/.claude/plans/<kebab-case-of-first-prompt>-<random-adjective-noun>.md.

Two compounding problems:

  1. Location is wrong: ~/.claude/plans/ is global/personal, outside any repo. The plan doesn't follow the work it describes — across machines, teammates, clones, or new sessions.
  2. Naming is uninformative: no date, no topic clarity. The visible token (tranquil-abelson random suffix) is pure collision-avoidance noise carrying zero signal about what the plan is.

Why this is worse than it looks (the actual cost)

This isn't a "long-running work" edge case. Anyone using plan mode multiple times per day hits this within a week. After 20 plans:

  • 20 files named <your-opening-words>-<random-noun>.md
  • Sorted alphabetically by accident of phrasing, not by recency or topic
  • No date, so "the one from Tuesday" is unfindable
  • No topic slug the user picked, so the directory is unsearchable by what the work actually was

More importantly: this degrades the model. When a future session asks Claude to "load my recent plan on X" or "resume that reorg from last week", Claude is reading a directory of opaque filenames against its own context limits. The two failure modes — both real, both observable — are:

  1. Wrong-file-loaded: Claude picks a similarly-named adjacent plan and resumes work against a stale or unrelated design doc.
  2. Hallucinated context: Claude can't find the right file, gives up on the literal search, and reconstructs what it "thinks" the plan said from conversation memory or vibes.

Both produce silently-wrong execution. This is the failure mode Anthropic spends real eng effort preventing elsewhere in the product (memory tools, scratchpads, structured outputs), and the plan-mode default re-introduces it through naming.

The structural fix — date prefix + user-picked topic slug + repo-local — is what every long-lived artifact convention in software does (ADRs, RFCs, migrations, changelogs), specifically because it makes "which one is which" answerable by filename alone, no search required.

Expected behavior (with prior art)

Default to <repo>/.claude/plans/YYYY-MM-DD-<topic-slug>.md.

  • Cursor already uses .cursor/plans/ (repo-local).
  • Claude Code itself already uses .claude/skills/, .claude/commands/, .claude/hooks/ — all repo-local. Plans are the lone Claude Code artifact that diverges to ~/.claude/.
  • Every long-form artifact in dev tooling (ADRs, RFCs, migrations, release notes) is date-prefixed because future-anyone needs to know when.

Suggested fix

  • Default plan output path: <repo>/.claude/plans/YYYY-MM-DD-<slug>.md where <slug> is a 2-4 word kebab-case topic distilled from the plan-mode prompt (model picks; user can override at finalize).
  • Drop the random-noun suffix from the default. Only add a numeric -2/-3 suffix on actual same-day same-slug collision.
  • Fall back to ~/.claude/plans/ only when not inside a git repo (or behind an explicit --global flag).
  • At plan finalize, prompt: "Save as .claude/plans/2026-05-22-<slug>.md? [Y/edit name]" — same way good commit-message tooling prompts for clarity at the right moment.

The point isn't to make humans happier (though it does). It's to make the AI's "find and load the right plan" step reliable instead of a guess.

Environment

  • claude-code (current as of 2026-05)
  • macOS, VSCode native extension
  • Used in a working repo, but plan files land outside it by default

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗