[Bug] User-invocable skills not appearing in tab completion after commands/skills merger

Resolved 💬 2 comments Opened Jan 27, 2026 by cadrianmae Closed Jan 27, 2026

Bug Description

After the Jan 24, 2026 commands/skills merger, skills marked with user-invocable: true are not
appearing in slash command tab completion.

Steps to reproduce:

  1. Create a plugin with skills in skills/ directory
  2. Add user-invocable: true to skill frontmatter
  3. Install plugin via marketplace
  4. Type /plugin-name: and press Tab

Expected behavior:
Skills with user-invocable: true appear in tab completion menu (as documented in the merger
announcement)

Actual behavior:
No completions shown. User must type full skill name manually or create duplicate files in
commands/ directory.

Environment:

  • Claude Code version: [current as of Jan 27, 2026]
  • Platform: Linux

Workaround:
Maintain duplicate command files in both skills/ and commands/ directories (observed pattern in
community marketplace plugins)

Related:

Environment Info

  • Platform: linux
  • Terminal: tmux
  • Version: 2.1.20
  • Feedback ID: 6777e0a3-f185-4f68-9e93-0f5f35e1e192

Errors

[{"error":"Error: ENOENT: no such file or directory, scandir '/etc/claude-code/.claude/skills'\n    at readdirSync (unknown)\n    at <anonymous> (/$bunfs/root/claude:12:2063)\n    at tJ (/$bunfs/root/claude:11:35584)\n    at readdirSync (/$bunfs/root/claude:12:2024)\n    at RC$ (/$bunfs/root/claude:1756:380)\n    at RC$ (/$bunfs/root/claude:1756:1350)\n    at <anonymous> (/$bunfs/root/claude:1756:4670)\n    at <anonymous> (/$bunfs/root/claude:1756:5401)\n    at A (/$bunfs/root/claude:11:7259)\n    at PO1 (/$bunfs/root/claude:4824:4342)","timestamp":"2026-01-27T19:24:07.850Z"},{"error":"Error: LSP server plugin:pyright-lsp:pyright failed to start: Executable not found in $PATH: \"pyright-langserver\"\n    at start (/$bunfs/root/claude:1724:22299)\n    at async f (/$bunfs/root/claude:1724:24751)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-27T19:24:09.898Z"},{"error":"Error: LSP server plugin:gopls-lsp:gopls failed to start: Executable not found in $PATH: \"gopls\"\n    at start (/$bunfs/root/claude:1724:22299)\n    at async f (/$bunfs/root/claude:1724:24751)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-27T19:24:09.898Z"},{"error":"Error: Executable not found in $PATH: \"pyright-langserver\"\n    at spawn (unknown)\n    at spawn (node:child_process:669:35)\n    at spawn (node:child_process:14:39)\n    at start (/$bunfs/root/claude:1724:20844)\n    at start (/$bunfs/root/claude:1724:22353)\n    at f (/$bunfs/root/claude:1724:24751)\n    at f (/$bunfs/root/claude:1724:25726)\n    at L (/$bunfs/root/claude:1724:32513)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-27T19:24:09.898Z"},{"error":"Error: Executable not found in $PATH: \"gopls\"\n    at spawn (unknown)\n    at spawn (node:child_process:669:35)\n    at spawn (node:child_process:14:39)\n    at start (/$bunfs/root/claude:1724:20844)\n    at start (/$bunfs/root/claude:1724:22353)\n    at f (/$bunfs/root/claude:1724:24751)\n    at f (/$bunfs/root/claude:1724:25726)\n    at L (/$bunfs/root/claude:1724:32513)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-27T19:24:09.898Z"},{"error":"Error: Failed to start LSP server plugin:pyright-lsp:pyright: Executable not found in $PATH: \"pyright-langserver\"\n    at <anonymous> (/$bunfs/root/claude:1724:32535)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-27T19:24:09.898Z"},{"error":"Error: Failed to start LSP server plugin:gopls-lsp:gopls: Executable not found in $PATH: \"gopls\"\n    at <anonymous> (/$bunfs/root/claude:1724:32535)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-27T19:24:09.898Z"},{"error":"AbortError: The operation was aborted.\n    at unknown\n    at abortChildProcess (node:child_process:937:42)\n    at onAbortListener2 (node:child_process:35:24)\n    at abort (unknown)\n    at <anonymous> (/$bunfs/root/claude:6271:13481)","timestamp":"2026-01-27T19:24:13.258Z"},{"error":"Error: ENOENT: no such file or directory, scandir '/etc/claude-code/.claude/skills'\n    at readdirSync (unknown)\n    at <anonymous> (/$bunfs/root/claude:12:2063)\n    at tJ (/$bunfs/root/claude:11:35584)\n    at readdirSync (/$bunfs/root/claude:12:2024)\n    at RC$ (/$bunfs/root/claude:1756:380)\n    at RC$ (/$bunfs/root/claude:1756:1350)\n    at <anonymous> (/…

Note: Content was truncated.

View original on GitHub ↗

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