Feature Request: Meaningful plan file names

Status Fixed / completed
Maintainer reply None cached
Activity 12 comments · opened Jan 27, 2026 · closed Aug 17, 2026

Feature Request: Meaningful Plan File Names

Summary

Use descriptive kebab-case names for plan files instead of random adjective-verb-noun patterns.

Current Behavior

Plan files are saved with random names:

  • fuzzy-snuggling-fog.md
  • abundant-noodling-firefly.md
  • bubbly-launching-mango.md

Proposed Behavior

Name plans with a short kebab-case summary of the feature/task:

  • add-user-authentication.md
  • fix-cache-invalidation.md
  • refactor-api-endpoints.md

Why This Matters

  1. Findability: When returning to a project, it's hard to find the relevant plan among dozens of randomly-named files
  2. Context: The filename itself provides context about what the plan covers
  3. Consistency: Aligns with how specs and other project documents are typically named
  4. History: Makes ~/.claude/plans/ a useful reference of past work

View original on GitHub ↗

11 Comments

github-actions[bot] · 7 months ago

Found 3 possible duplicate issues:

  1. https://github.com/anthropics/claude-code/issues/18789
  2. https://github.com/anthropics/claude-code/issues/16094
  3. https://github.com/anthropics/claude-code/issues/15714

This issue will be automatically closed as a duplicate in 3 days.

  • If your issue is a duplicate, please close it and 👍 the existing issue instead
  • To prevent auto-closure, add a comment or 👎 this comment

🤖 Generated with Claude Code

crespire · 7 months ago

This would be a huge usability improvement.

specul8 · 6 months ago

Not a fix, but an effective workaround (identified after looking at Claude's Debug logs and recognising events that could be targeted) - remap "write" and "Edit" and "ExitPlanMode" actions to custom hooks that push plan content into a consistently-named and repo-based Serena folder.

Step 1: Ensure Serena's active on your project (who doesn't want to save tokens, eh!)

Step 2: Create the 4 files that drive the solution (_and also take the opportunity in session-directive.sh to remind Claude on every StartSession, Resume or Compact key points you wish he'd remember_).

plan-file-redirect.sh
session-directive.sh
session-init.sh
sync-plan-to-serena.sh

Step 3: Add to your claude.settings.json file (_not sure how to make code blocks line-break, sorry_):

{
"plansDirectory": ".claude/plans",
"hooks": {
"SessionStart": [
{
"matcher": "startup",
"hooks": [
{
"type": "command",
"command": "bash .claude/hooks/session-init.sh",
"timeout": 15,
"statusMessage": "Initialising session..."
},
{
"type": "command",
"command": "bash .claude/hooks/session-directive.sh",
"timeout": 5
}
]
},
{
"matcher": "resume",
"hooks": [
{
"type": "command",
"command": "bash .claude/hooks/session-directive.sh",
"timeout": 5
}
]
},
{
"matcher": "compact",
"hooks": [
{
"type": "command",
"command": "bash .claude/hooks/sync-plan-to-serena.sh",
"timeout": 10
},
{
"type": "command",
"command": "bash .claude/hooks/session-directive.sh",
"timeout": 5
}
]
},
{
... <Existing SessionStart hooks if any> ...
}
],
"PostToolUse": [
{
"matcher": "Write",
"hooks": [
{
"type": "command",
"command": "bash .claude/hooks/plan-file-redirect.sh",
"timeout": 10
}
]
},
{
"matcher": "Edit",
"hooks": [
{
"type": "command",
"command": "bash .claude/hooks/plan-file-redirect.sh",
"timeout": 10
}
]
},
{
"matcher": "ExitPlanMode",
"hooks": [
{
"type": "command",
"command": "bash .claude/hooks/sync-plan-to-serena.sh",
"timeout": 10
}
]
},
{
... <Existing hooks if any> ...
}
],
"PostToolUse": [
{
"matcher": "Write",
"hooks": [
{
"type": "command",
"command": "bash .claude/hooks/plan-file-redirect.sh",
"timeout": 10
}
]
},
{
"matcher": "Edit",
"hooks": [
{
"type": "command",
"command": "bash .claude/hooks/plan-file-redirect.sh",
"timeout": 10
}
]
},
{
... <Existing PostToolUse hooks if any> ...
}
],
"PreToolUse": [
{
"matcher": "ExitPlanMode",
"hooks": [
{
"type": "command",
"command": "bash .claude/hooks/sync-plan-to-serena.sh",
"timeout": 10
}
]
},
{
... <Existing PreToolUse hooks if any> ...
}
]
},
"permissions": {
"allow": [
...<existing allow permissions>...
]
}
}

<EOF>

_Update: formatting_

leblancmeneses · 6 months ago

add a timestamp to avoid collisions:

add-user-authentication-YYYYMMDD-HHmmss-XXX.md
add-user-authentication-20260123-192430-iju.md
dim882 · 6 months ago

Can someone from Anthropic comment on this? This feature has been requested over and over, and closed as a duplicate over and over.

It's pretty crazy how well thought out Claude Code is, and that Claude is _able to generate meaningful file names_, yet this feature request remains ignored.

crespire · 5 months ago

Another +1 on this, this is a persistent pain point.

pavel-georgiev · 5 months ago

Update: Looks like CC v2.1.77 added the ability to automatically rename the session when a plan is accepted. In other words - it already generates a short summary when a plan is created/accepted, so my original request can be satisfied by just using that as the plan name (or allowing us to configure CC to do so).

S-Luiten · 4 months ago

As of v2.1.111, plan files are now partially based on the prompt and partially randomized. This results in plan file names such as fix-build-errors-in-<random-words>.md. However I'd like to note that this solution introduced another issue, as this new naming scheme seems to be confusing Claude:

Wait — the user asked to fix errors in submodules/<path>, but looking at the plan filename the user suggested fix-build-errors-in-spicy-owl.md), it seems they may be referring to this submodule by a different name. Let me check.
crespire · 4 months ago

I just have a hook to rename the file after the title line claude gives the plan - at least it has all the key info.

S-Luiten · 4 months ago

If the purpose of keeping the filename partially random was to prevent conflicts due to having the same plan filename, I'd like to suggest adding a timestamp instead. These random words are quickly becoming a real annoyance. Here's another example from implement-server-side-filtering-and-iridescent-star.md (the question is asked before the plan file is written so you can't even see where it's coming from):

<img width="909" height="159" alt="Image" src="https://github.com/user-attachments/assets/8fabe790-388d-4a0b-8c71-3bd6e9891c06" />

S-Luiten · 3 months ago

Just adding another comment before the bot auto-closes this, this is still an issue and happened to me twice today.

Showing cached comments. Read the full discussion on GitHub ↗