Rust was still treating local skills as flat roots and had no plugin-backed discovery for /skills, /agents, or Skill tool resolution. This patch adds plugin manifest component paths, recursive namespaced discovery, plugin-prefixed skill/agent listing, and bare-name invoke routing that falls back to unique namespaced suffix matches.
The implementation stays narrow to loading and routing: plugin tools and UI flows remain unchanged. Focused tests cover manifest parsing, plugin/local discovery, plugin-prefixed reports, unique plugin suffix resolution, and ambiguous bare-name failures.
Constraint: Keep scope limited to plugin/skill/agent loading and invoke routing parity; no UI work
Rejected: Introduce a new shared discovery crate | unnecessary drift for a parity patch
Confidence: high
Scope-risk: moderate
Reversibility: clean
Directive: Keep plugin skill and agent names prefixed with the plugin manifest name so bare-name suffix resolution stays deterministic
Tested: cargo check; cargo test
Not-tested: Runtime interactive UI rendering for /skills and /agents beyond report output