Project-level skills with same name as global skills show both instead of overriding
Description
When a project-level skill (in .claude/skills/<name>/SKILL.md) has the same name as a global skill (in ~/.claude/skills/<name>/SKILL.md), both appear in the skill picker instead of the project-level skill overriding/shadowing the global one.
Expected behavior
A project-level skill with the same name should take priority and shadow the global skill, similar to how project-level settings override global settings. Only one /handoff should appear when inside that project.
Actual behavior
Both skills appear in the skill list:
handoff: Generate a complete, verified handoff update for the project's status/handoff document(global)handoff: Generate a complete, verified handoff update for STATUS.md (project-specific override)(project)
The user is forced to choose between them, which defeats the purpose of having a project-specific override.
Steps to reproduce
- Create a global skill at
~/.claude/skills/handoff/SKILL.mdwithname: handoffin frontmatter - Create a project-level skill at
<project>/.claude/skills/handoff/SKILL.mdwithname: handoffin frontmatter - Open Claude Code in that project
- Both skills appear in the available skills list
Workaround
Rename the global skill to a different name (e.g., handoff-universal) so they don't collide.
Environment
- Claude Code CLI
- macOS (Darwin 25.2.0)
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗