[BUG] user-invocable: false in SKILL.md does not hide skills from slash command menu (VS Code extension)

Resolved 💬 2 comments Opened Apr 1, 2026 by rafaelmoreira-ciandt Closed May 8, 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?

Skills with user-invocable: false in their SKILL.md frontmatter still appear as unprefixed slash commands in the / menu. According to the docs (https://code.claude.com/docs/en/skills.md), this field should hide them from the menu while keeping them accessible to agents and Claude's auto-trigger.

What Should Happen?

Skills with user-invocable: false should NOT appear in the / slash command menu. Only command wrappers in commands/ should be visible. Agents should still be able to reference and invoke the hidden skills.

Error Messages/Logs

No error — the field is silently ignored. Skills appear in the menu regardless of the user-invocable value.

Steps to Reproduce

  1. Create a plugin with a skill at skills/data-discovery/SKILL.md:

```yaml
---
name: data-discovery
user-invocable: false
description: Migration assessment pipeline
---

  1. Create a command wrapper at commands/skills/data-discovery.md with allowed-tools frontmatter
  1. Install the plugin (local or remote marketplace)
  1. Open the / slash command menu
  1. Both /data-discovery (unprefixed, should be hidden) AND /cit-data-practice:skills:data-discovery (prefixed) appear

Claude Model

Opus

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

2.1.89 (VS Code extension)

Platform

Anthropic API

Operating System

Ubuntu/Debian Linux

Terminal/Shell

VS Code integrated terminal

Additional Information

Use case: We're building a Claude Code plugin marketplace (cit-data-practice) with agents, skills, and commands. We want skills to be agent-only (hidden from menu) and expose them via prefixed command wrappers in commands/skills/ with allowed-tools. Without user-invocable working, users see duplicate entries in the slash menu — both unprefixed /data- and prefixed /cit-data-practice:skills:data- versions.

View original on GitHub ↗

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