[BUG] Skills Being Interpretted as SlashCommands
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?
When I launch Claude CLI from my project's root it seems to be loading my .claude/skills as slash commands instead. It is able to identify that it should use the skill given a prompt but is asking for permission to explicitly invoke a SlashCommand.
What Should Happen?
The skills should be model-invoked when needed and not require Claude CLI actually calling a SlashCommand directly.
Error Messages/Logs
Steps to Reproduce
- Create a test workspace
mkdir -p /tmp/claude-skills-bug-test
cd /tmp/claude-skills-bug-test
- Create skill directory structure
mkdir -p .claude/skills/test-skill
- Create a minimal SKILL.md file
cat > .claude/skills/test-skill/SKILL.md << 'EOF'
---
name: test-skill
description: This is a test skill to demonstrate the bug where skills appear as slash commands.
---
# Test Skill
This skill should be model-invoked, not appear as a slash command.
## When to Use This Skill
Use this skill when testing.
EOF
- Verify no .claude/commands/ directory exists
ls -la .claude/
# Should show only: skills/ directory, no commands/ directory
Expected output:
drwxr-xr-x 3 user user 4096 Nov 11 18:00 .
drwxr-xr-x 3 user user 4096 Nov 11 18:00 ..
drwxr-xr-x 3 user user 4096 Nov 11 18:00 skills
- Start Claude Code CLI session
claude
- Ask Claude to list available slash commands
In the Claude session, type:
What slash commands are available? Show me the SlashCommand tool's Available Commands list.
- Observe the bug
Expected: No slash commands listed (or only built-in commands if any exist)
Actual: The skill appears as a slash command:
Available Commands:
- /test-skill: This is a test skill to demonstrate the bug where skills appear as slash commands. (user)
Claude Model
Sonnet (default)
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.0.15
Platform
Anthropic API
Operating System
Ubuntu/Debian Linux
Terminal/Shell
Xterm
Additional Information
Additional Evidence from Real-World Case
In our actual workspace at /proj/ch_func_dev0/CH/ctschop/ch_ai/:
Directory structure:
$ ls -la .claude/
total 20
drwx--S--- 3 ctschop cores.er 4096 Nov 11 15:07 .
drwxrws--- 23 ctschop cores.er 8192 Nov 11 17:41 ..
-rw-rw-r-- 1 ctschop cores.er 443 Nov 11 15:05 settings.local.json
drwxr-sr-x 7 ctschop cores.er 4096 Nov 11 15:07 skills
$ ls .claude/commands/
ls: cannot access '.claude/commands/': No such file or directory
$ ls .claude/skills/
ch-asciidoc ch-avf-knowledge ch-cpp-guidelines ch-rtl-guidelines ch-unittest
SlashCommand tool shows:
Available Commands:
- /ch-asciidoc: ALWAYS use this skill when creating CH documentation... (user)
- /ch-avf-knowledge: Apply Arm Verification Framework (AVF) concepts... (user)
- /ch-cpp-guidelines: Apply Cache Hierarchy (CH) team C++ coding guidelines... (user)
- /ch-rtl-guidelines: Apply Cache Hierarchy (CH) team RTL coding guidelines... (user)
- /ch-unittest: Write unit tests for Cache Hierarchy (CH) C++ checker components... (user)
Example SKILL.md frontmatter:
$ head -5 .claude/skills/ch-asciidoc/SKILL.md
---
name: ch-asciidoc
description: ALWAYS use this skill when creating CH documentation. Follow CH spec/testplan templates with proper
structure, use TXL attributes for variant-specific content, reference RDL for registers, and include visual diagrams
(Wavedrom, Graphviz, Transaction Flows). Never create basic AsciiDoc documents without following CH conventions - this
skill ensures compliance with team standards for specifications, test plans, and technical documentation.
---
Root Cause Analysis
The CLI appears to be:
- Scanning .claude/skills/*/SKILL.md files
- Parsing YAML frontmatter (name: and description: fields)
- Creating SlashCommand tool entries from skills
- Marking them as (user) commands
This conflicts with the documented behavior where skills should be model-invoked only.
Impact
- Confuses users about how to invoke skills
- Breaks the separation between skills (model-invoked) and slash commands (user-invoked)
- Causes incorrect attempts to use SlashCommand tool for skills
- Contradicts official Claude Code documentation about skills
References
- Claude Code Skills Documentation: https://docs.claude.com/en/docs/claude-code/skills
- Distinction between skills and slash commands per docs:
- Skills: .claude/skills/ - model-invoked automatically
- Slash commands: .claude/commands/ - user-invoked with /
---
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗