[BUG] Skills Being Interpretted as SlashCommands

Resolved 💬 4 comments Opened Nov 12, 2025 by cmtschop Closed Jan 22, 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?

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

  1. Create a test workspace

mkdir -p /tmp/claude-skills-bug-test
cd /tmp/claude-skills-bug-test

  1. Create skill directory structure

mkdir -p .claude/skills/test-skill

  1. 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

  1. 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

  1. Start Claude Code CLI session

claude

  1. 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.

  1. 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:

  1. Scanning .claude/skills/*/SKILL.md files
  2. Parsing YAML frontmatter (name: and description: fields)
  3. Creating SlashCommand tool entries from skills
  4. 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 /

---

View original on GitHub ↗

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