<!-- llms-explorer concept facts · https://llms-explorer.com/tree/multi-root-skill-discovery-and-duplicated-skill/ · pack 2026-10-05 · ~817 tokens -->

# Multi-root skill discovery and duplicated skill directories

> Claude Code same-name precedence: enterprise over personal over project; any of these replaces a bundled command (not its aliases); a skill beats a .claude/commands file; a project-root skill and a nested skill both load; a plugin skill and any other both load because plugins are namespaced plugi...

Parent: [Mac local LLMs: Agent clients, context and compaction](https://llms-explorer.com/tree/mac-local-llms-agent-clients-context-and-compaction/) · 1 facets · 13 facts · page: https://llms-explorer.com/tree/multi-root-skill-discovery-and-duplicated-skill/

## Facts

- Claude Code same-name precedence: enterprise over personal over project; any of these replaces a bundled command (not its aliases); a skill beats a .claude/commands file; a project-root skill and a nested skill both load; a plugin skill and any other both load because plugins are namespaced plugin-name:skill-name. — source: `asserted`
- Nested skills with a clashing name appear as a directory-qualified entry such as /apps/web:deploy, and the listing tells Claude to invoke the one whose directory holds the files in use. — source: `asserted`
- Claude Code loads .claude/skills from the start directory and every parent up to the repository root; --add-dir or /add-dir loads that directory's .claude/skills, commands and agents. — source: `asserted`
- Claude Code watches skill directories and picks up changes in the session, except in bare mode. — source: `asserted`
- Before v2.1.246, /cd did not add the new directory's project skills; from v2.1.246 it does. — source: `asserted`
- Issue 43003 (2026-04-03, closed not planned): personal skills copied to ~/.claude/skills did not suppress the anthropic-skills: copies, so both appeared in the list. This matches the plugin-namespaced both-load rule, so duplicate listing cost across a plugin copy and a local copy is by design. — source: `asserted`
- Because plugin skills and qualified nested skills never dedupe, a sync tool that copies a library into a plugin and a personal root pays the listing twice in Claude Code, unlike OpenCode where unique names are required. [inferred] — source: `asserted`
- Whether OpenCode drops or errors on a duplicate name across roots; the measured 441 distinct names suggests it dedupes but the rule is undocumented. — source: `asserted`
- Claude Code resolves same-name skills as enterprise over personal over project, and a plugin skill and a non-plugin skill both load — [source](https://code.claude.com/docs/en/skills)
- A project-root skill and a nested skill of the same name both load, and the nested one is listed as a directory-qualified name — [source](https://code.claude.com/docs/en/skills)
- Claude Code loads .claude/skills from the start directory up to the repository root and from --add-dir directories — [source](https://code.claude.com/docs/en/skills)
- Issue 43003 reported local personal skills not suppressing anthropic-skills: duplicates in the list; closed as not planned — [source](https://github.com/anthropics/claude-code/issues/43003)
- A skill name or directory clash across roots is the cause of duplicate listing cost in Claude Code; keeping one small root for local sessions avoids it — source: `asserted`
