Review feedback (#7246): the added tests disabled every default discovery
source, so the custom-overrides-default branch was never exercised — the
suite would pass without the production change.
- New test writes a same-named skill into an enabled Claude project
default path (cwd/.claude/skills) and a customDirectories entry, then
asserts the custom path and content win; verified it fails against the
pre-change loader.
- Construct protocol URLs via parseInternalUrl instead of casting.
- Reset the process-global active skill snapshot after each test.
- Add the coding-agent [Unreleased] changelog entry.
When a skill name exists both in a default discovery path (e.g.
~/.claude/skills/<name>) and in an explicitly configured
skills.customDirectories entry, the default-path copy loaded first and the
custom-directory skill was silently dropped on the name collision. As a
result skill://<name> resolved to the default path and reported "File not
found" when the user's skill lived only in the custom directory.
Custom-directory skills now override same-named default-path skills (the
user's explicit configuration is the higher-priority source); duplicates
within customDirectories keep first-wins.