Project skill named code-review silently shadows built-in /code-review, making /code-review ultra unreachable
Description
A project-level skill named code-review (in .claude/skills/code-review/) silently shadows the built-in /code-review command. Typing /code-review ultra therefore never reaches the built-in ultrareview flow — instead the local skill is invoked with ultra passed as an ordinary argument, which the skill can't interpret (it expects a git ref).
There is no warning at invocation time that a built-in command was shadowed, and no syntax to explicitly address the built-in when a project skill has claimed the name. The user never sees the ultrareview confirmation/billing dialog and gets no signal about why.
Steps to reproduce
- In a git repo, create a project skill at
.claude/skills/code-review/SKILL.md(any content — e.g. a custom diff-review skill). - Run Claude Code in that repo and type
/code-review ultra.
Expected
Either the built-in /code-review ultra runs, or the user is told the built-in command is shadowed by a project skill and how to reach the built-in (e.g. an explicit namespace/prefix for built-ins).
Actual
The project skill runs with ultra as its argument. No shadowing warning. The only discovered workarounds are the deprecated /ultrareview alias (works only because no skill claims that name) or temporarily moving the skill directory aside.
Suggested fixes (any of)
- Warn at invocation when a project skill shadows a built-in command name.
- Provide an explicit way to invoke the shadowed built-in (e.g.
/builtin:code-review). - Reserve built-in command names so project skills can't claim them.
Environment
- Claude Code v2.1.220
- macOS (Darwin 24.6.0), zsh