Expand description
Plugin-shadow detector (Claude Code).
The runner stages eval skills into the
project-local .claude/skills/ dir, but eval subagents are dispatched via the
Task tool and run in-process — so they ALSO inherit whatever skills the
orchestrator session loaded from installed plugins and the global skills dir.
When a staged skill name collides with one of those, both copies are
discoverable and the with/without comparison is contaminated. The runner
cannot unload a plugin from a running session, so this module only detects
and reports the overlap, reading declared settings as a best-effort proxy.
Structs§
- Plugin
Shadow Report - The detector’s findings for a run.
Enums§
- Shadow
Source - A staged skill that is also discoverable from the live environment.
Functions§
- config_
dir_ from_ env - The Claude Code config dir, reading the
CLAUDE_CONFIG_DIRoverride from the environment (else~/.claude). Thin convenience overresolve_config_dirfor the call sites that should honor the env var — the override logic itself is covered byresolve_config_dir’s tests. - detect_
plugin_ shadows - Which of
staged_skill_namesare also discoverable from enabled plugins or the global skills dir. Matches on the skill folder name (exact). - format_
shadow_ banner - Build-time banner for the runner. Empty string when nothing is shadowed.
- resolve_
config_ dir - The Claude Code config dir: a non-empty
CLAUDE_CONFIG_DIRoverride (passed in), else~/.claude. - shadow_
validity_ warnings - One
validity_warningsline per shadowed skill (for benchmark.json).