Slash commands should be case-insensitive (e.g. /TODO should work like /todo)

Resolved 💬 2 comments Opened Apr 5, 2026 by saitoko Closed May 15, 2026

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

  1. Create a custom command file at ~/.claude/commands/todo.md
  2. Type /todo <some text> → works correctly
  3. Type /TODO <some text> → fails with Unknown 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/.

View original on GitHub ↗

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