claude-code - 💡(How to fix) Fix [BUG] Model auto-invokes `commands/` entries the same way as `skills/`, defeating the purpose of the distinction

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Error Message

Error Messages/Logs

RAW_BUFFERClick to expand / collapse

Preflight Checklist

  • I have searched existing issues and this hasn't been reported yet
  • This is a single bug report (please file separate reports for different bugs)
  • 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. 2. Create .claude/skills/hello/SKILL.md:

name: hello-skill description: Say hello and list files

Print "hello from skill" and list the current directory. 3. Start a new Claude Code session in this project. 4. Type: "say hello and list files" 5. 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

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

claude-code - 💡(How to fix) Fix [BUG] Model auto-invokes `commands/` entries the same way as `skills/`, defeating the purpose of the distinction