[BUG] VS Code extension: namespaced /plugin:skill form shows “No matching commands” and cannot be submitted; skills whose name matches a built-in command are unreachable

Resolved 💬 0 comments Opened Jul 5, 2026 by tomoking2004 Closed Jul 5, 2026

Environment

  • Claude Code CLI: 2.1.200
  • VS Code extension: anthropic.claude-code 2.1.201 (win32-x64)
  • OS: Windows 11 Home 10.0.26200

Description

The VS Code extension resolves plugin skill commands differently from the CLI, and the combination makes a skill unreachable when its bare name matches a built-in command. Throughout, take a plugin groundwork with skills context, theory, impl, where context matches the built-in /context:

  1. The namespaced /plugin:skill form is not recognized as a command — the command popup shows “No matching commands” and the input cannot be submitted. In the CLI the form works and is disambiguated from built-ins.
  2. Typing /groundwork does surface the plugin's skills as autocomplete candidates, but completion cannot carry you to the namespaced form: by the second character of the skill name (/groundwork:th) every candidate disappears. Skills are invoked by their bare names (/theory).
  3. A skill whose bare name matches a built-in command is dropped from those candidates entirely. Typing /groundwork offers only impl and theory; context is absent, presumably shadowed by the built-in. Typing /context runs the built-in, and /groundwork:context is not recognized (point 1) — so the skill cannot be invoked by typed command at all.

The plugin-name segment plays no role in the collision: a plugin named refine coexists fine with a skill named refine provided by another plugin, since only skill names participate in command lookup.

Steps to reproduce

  1. Install a plugin whose skills include one named after a built-in command, e.g.:

``
plugins/groundwork/.claude-plugin/plugin.json # "name": "groundwork"
plugins/groundwork/skills/context/SKILL.md # name: context — collides with built-in /context
plugins/groundwork/skills/theory/SKILL.md # name: theory
plugins/groundwork/skills/impl/SKILL.md # name: impl
``

Any description/body suffices.

  1. In the VS Code extension chat input, type /groundwork — only impl and theory appear as candidates; context is absent. Continue typing to /groundwork:th — the candidate list empties by the second character of the skill name (“No matching commands”). Typing /context runs the built-in /context; typing /groundwork:context shows “No matching commands” and cannot be submitted.
  2. In the CLI, type /groundwork:context — the plugin skill runs, distinct from the built-in /context.

Expected behavior

The VS Code extension recognizes the namespaced /plugin:skill form like the CLI does, so a skill shadowed by a built-in under its bare name remains reachable through its namespace — and the skill appears among its plugin's autocomplete candidates.

Actual behavior

The namespaced form is never recognized as a command (“No matching commands”; the input cannot be submitted), and autocomplete abandons it two characters into the skill name; command lookup uses bare skill names only, where a built-in always wins; a built-in-colliding skill is omitted from its plugin's candidate list.

Workaround

Rename skills so their bare names never match a built-in command, which defeats part of the purpose of namespacing.

View original on GitHub ↗