[BUG] Model auto-invokes `commands/` entries the same way as `skills/`, defeating the purpose of the distinction
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Claude Code treats entries in .claude/commands/ and .claude/skills/ identically — the model auto-invokes both via the Skill tool. There is no behavioral difference between the two directories.
This means if a user has similar entries in both directories (e.g., a lightweight commands/quick-arch.md for manual use and a comprehensive skills/architecture-analyzer/SKILL.md for auto-invocation), the model may randomly pick the command instead of the skill, with no
way for the user to control it. The commands/ vs skills/ directory distinction is organizational only and has no effect on model behavior.
What Should Happen?
┌───────────────────┬──────────────┬───────────────────┐
│ Directory │ Manual /name │ Model auto-invoke │
├───────────────────┼──────────────┼───────────────────┤
│ .claude/commands/ │ Yes │ No │
├───────────────────┼──────────────┼───────────────────┤
│ .claude/skills/ │ Yes │ Yes │
└───────────────────┴──────────────┴───────────────────┘
- commands/ should be user-initiated only. They are shortcuts or macros the user deliberately types.
- skills/ should support both manual and model-initiated invocation based on description matching.
The Skill tool should be restricted to skills/ entries only, respecting the user's intent that commands/ exist for manual invocation.
Error Messages/Logs
Steps to Reproduce
- Create .claude/commands/hello.md:
---
description: Say hello and list files
---
Print "hello from command" and list the current directory.
- Create .claude/skills/hello/SKILL.md:
---
name: hello-skill
description: Say hello and list files
---
Print "hello from skill" and list the current directory.
- Start a new Claude Code session in this project.
- Type: "say hello and list files"
- Observe: the model auto-invokes either /hello or /hello-skill unpredictably. There is no way to ensure it picks the skill and not the command.
Claude Model
None
Is this a regression?
Yes, this worked in a previous version
Last Working Version
_No response_
Claude Code Version
2.1.139 (Claude Code)
Platform
Other
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
_No response_
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗