Slash command skill invocation is invisible to user when pre-loaded via <command-name>

Resolved 💬 3 comments Opened Mar 29, 2026 by sadiksaifi Closed Apr 2, 2026

Preflight

  • [x] I have searched for existing issues
  • [x] This is a single bug report (not multiple bugs)
  • [x] I am using the latest version of Claude Code

What's wrong?

When a user invokes a slash command (e.g. /snap-forge), Claude Code pre-loads the skill content into the conversation context via a <command-name> tag and instructs the model:

"If you see a <command-name> tag in the current conversation turn, the skill has ALREADY been loaded — follow the instructions directly instead of calling this tool again"

The model then follows the skill instructions without calling the Skill tool, which means the user sees no visible indication that the skill was activated. From the user's perspective, it looks like the model ignored the slash command entirely.

The user then has to ask the model to invoke the skill again, at which point the model calls the Skill tool (which loads the identical content a second time), and the user finally sees the tool call in the UI.

What should happen?

When a user invokes a slash command, there should be visible feedback in the UI that the skill was loaded and activated. Either:

  1. The system should not instruct the model to skip the Skill tool call (so the user sees it in the tool call UI), or
  2. The UI should show a visible indicator that the skill was pre-loaded (e.g. a badge, status message, or collapsed tool-call-like element)

Error messages/logs

No error — the skill loads correctly. The issue is purely a UX gap: silent activation with no visible feedback.

Steps to reproduce

  1. Create a custom skill (e.g. a skill called snap-forge in ~/.claude/skills/snap-forge/)
  2. In a Claude Code conversation, type /snap-forge
  3. Observe that the model starts following the skill instructions but no Skill tool call appears in the UI
  4. The user has no visual confirmation the skill was activated
  5. If the user asks "why didn't you invoke the skill?", the model explains it was pre-loaded — but this is not visible in the UI

Claude model

Opus

Is this a regression?

Unknown

Claude Code version

2.1.87 (Claude Code)

Platform

Anthropic API

Operating system

macOS

Terminal/shell

Ghostty

Additional information

This affects all custom skills invoked via slash commands. The workaround is adding "Always invoke skills with the Skill tool, even if already pre-loaded via <command-name>" to CLAUDE.md, but this causes the skill content to be loaded twice — once by the system pre-load and once by the explicit tool call.

The root cause is the system prompt instruction that tells the model to skip the Skill tool when <command-name> is detected. This optimization saves a tool call but removes the only visible signal to the user that the skill was activated.

View original on GitHub ↗

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