Slash command skill invocation is invisible to user when pre-loaded via <command-name>
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:
- The system should not instruct the model to skip the
Skilltool call (so the user sees it in the tool call UI), or - 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
- Create a custom skill (e.g. a skill called
snap-forgein~/.claude/skills/snap-forge/) - In a Claude Code conversation, type
/snap-forge - Observe that the model starts following the skill instructions but no
Skilltool call appears in the UI - The user has no visual confirmation the skill was activated
- 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.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗