[BUG] Model auto-invokes `commands/` entries the same way as `skills/`, defeating the purpose of the distinction

Resolved 💬 2 comments Opened May 12, 2026 by keysilence Closed May 13, 2026

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

  1. Create .claude/commands/hello.md:

---
description: Say hello and list files
---
Print "hello from command" and list the current directory.

  1. Create .claude/skills/hello/SKILL.md:

---
name: hello-skill
description: Say hello and list files
---
Print "hello from skill" and list the current directory.

  1. Start a new Claude Code session in this project.
  2. Type: "say hello and list files"
  3. 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_

View original on GitHub ↗

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