Custom skills don't shadow built-in commands with the same name

Resolved 💬 4 comments Opened Feb 18, 2026 by adamtaylor13 Closed Mar 19, 2026

Description

When a user creates a custom skill with the same name as a built-in command (e.g., /review), both appear in the autocomplete picker. The custom skill does not shadow or replace the built-in. There is no configuration to disable individual built-in commands.

Steps to Reproduce

  1. Create a custom skill at ~/.claude/skills/review/SKILL.md
  2. Type /review in the input
  3. Both the built-in "Review a pull request" and the custom skill appear in the autocomplete list

Expected Behavior

The custom skill should shadow the built-in command of the same name, consistent with the documented precedence: enterprise > personal > project > built-in.

Alternatively, provide a setting to disable specific built-in commands.

Root Cause

The main command loader (AE / getEnabledCommands) concatenates all command sources into a flat array with no name-based deduplication:

H = [...bundledSkills, ...skillDirCommands, ...pluginSkills,
     ...marketplaceSkills, ...builtinCommands].filter(J => J.isEnabled())

Built-in commands created via FKT have isEnabled: () => true and isHidden: false hardcoded with no config check. Custom skills load separately and both end up in the autocomplete list.

Environment

  • Claude Code v2.1.45
  • macOS 15.5 (Darwin 24.6.0)

View original on GitHub ↗

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