Three issues where converters didn't account for filesystem sanitization:
1. OpenClaw manifest advertised colon paths (skills/cmd-ce:plan) while
the writer created hyphenated dirs (skills/cmd-ce-plan), making
namespaced skills undiscoverable.
2. Copilot reserved raw skill names (ce:plan) in the dedupe set, so a
generated skill normalizing to ce-plan didn't detect the collision
and both wrote to skills/ce-plan/, with pass-through overwriting.
3. Windsurf same pattern — agent skill dedupe used unsanitized names.
Fix: use sanitizePathName when building dedupe sets and manifest paths.
Add regression tests for all three cases.