Custom skills don't shadow built-in commands with the same name
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
- Create a custom skill at
~/.claude/skills/review/SKILL.md - Type
/reviewin the input - 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)
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗