Slash commands should be case-insensitive (e.g. /TODO should work like /todo)
Summary
Custom slash commands defined in ~/.claude/commands/ are looked up in a case-sensitive manner. This means /TODO fails with Unknown skill: TODO even when ~/.claude/commands/todo.md exists.
Steps to Reproduce
- Create a custom command file at
~/.claude/commands/todo.md - Type
/todo <some text>→ works correctly - Type
/TODO <some text>→ fails withUnknown skill: TODO
Expected Behavior
Slash command lookup should be case-insensitive. /todo, /TODO, and /Todo should all resolve to ~/.claude/commands/todo.md.
This is consistent with how most command-line interfaces and shell tools handle commands — users should not need to remember the exact casing of a command name.
Actual Behavior
Unknown skill: TODO error is shown when the command is typed in uppercase. The command is not executed.
Environment
- OS: Windows 11 Pro
- Shell: bash (Git Bash)
- Filesystem: NTFS (case-insensitive at filesystem level, but CLI appears to do string comparison before filesystem lookup)
Additional Context
Interestingly, on a case-insensitive filesystem (NTFS), the file would be found if the CLI resolved the path via the OS. The issue appears to be that the CLI performs an exact string match of the command name against the filename before ever hitting the filesystem.
A partial workaround is to always type commands in lowercase, but this is easy to forget and creates an inconsistent user experience.
Suggested Fix
Normalize the command name to lowercase before performing the lookup, or use a case-insensitive comparison when searching for matching command files in ~/.claude/commands/.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗