cc-switch Skills import / sync problems (broken, not detected, directory out of sync)
Quick fix
Usually a changed Skills directory layout, or the DB drifting from the file system. Manage through the cc-switch UI and check nested directory support.
Symptom
Section titled “Symptom”Skill 源目录缺少 SKILL.md,拒绝同步以避免覆盖目标目录: /home/fengyu/.cc-switch/skills/ast-grepThe Skill source directory has no SKILL.md; refusing to sync to avoid overwriting the target directory: /home/fengyu/.cc-switch/skills/ast-grep
This cluster holds several Skills problems: 1) plugins and Skills break after switching API provider, because the config was not carried across via general config; 2) the UI still lists a Skill after you delete files under .cc-switch/skills by hand, because it reads the SQLite database rather than scanning the directory; 3) ZIP/.skill imports fail or are not recognised, involving temp directory names containing a dot, unsupported nesting, and .skill suffix filtering; 4) the newer Claude Code plugin directory ~/.claude/plugins/marketplaces/ is not scanned; 5) the DB marks a sync as enabled but the symlink was never created, and an idempotence check means it never self-heals; 6) the skills.zip cloud sync entry count exceeds the 10000 limit. Some are fixed in v3.12.3 and similar releases; others remain open or were folded into other tracking issues.
When Skills/Agents break after switching API provider, use cc-switch 通用配置 (general config) to carry non-provider data across providers.
Do not uninstall a Skill by deleting files under ~/.cc-switch/skills or %USERPROFILE%\.cc-switch\skills by hand. Delete through the cc-switch UI so the SQLite records are cleaned up too.
When a ZIP Skill import is not recognised, upgrade to v3.12.3 or newer. That version fixed .skill suffix support in ZIP import and detection failing on directory names containing a dot.
If the Skill comes from a multi-skill repository or a nested directory (skills/<repo>/skills/*/SKILL.md, for example), some versions only detect a SKILL.md directly inside a first-level directory. The stopgap is to flatten each skill into ~/.cc-switch/skills/.
When Skills under the newer Claude Code plugin directory ~/.claude/plugins/marketplaces/ are not scanned, you have to wait for cc-switch to support that directory; the scan path is still ~/.claude/skills/.
If the DB has enabled_claude=1 or enabled_codex=1 but the matching symlink does not exist, create the symlink by hand or disable and re-enable the Skill. This currently does not repair itself.
When cloud sync reports too many skills.zip entries (over 10000), reduce the number of Skills files you back up, or wait for the 10000-entry limit to be adjusted or removed.
Affected Versions
Section titled “Affected Versions”Source Issues
Section titled “Source Issues”This page is distilled from 18 real issues
- #1000[BUG] codex 无法识别从 cc-switch 中通过“从 ZIP 安装”导入的skills
- #1240Skills ZIP 安装支持 .skill 后缀?
- #1702[BUG]Skills 安装后遗漏共享辅助目录,导致 bundle 型 skill 运行时报缺依赖
- #1794CCSwitch 无法完全控制 OpenCode 的 skills
- #1842v3.12.3 回归:导入已有无法发现本地嵌套 skills,而 v3.12.2 可以
- #2139Bug: Skills Import Count Multiplied When Button Clicked Multiple Times
- #2238切换 API 供应商后,在plugins中安装的Skills/Agents 失效,复制导入的skills有效
- #2569「WebDAV 云同步」无法正常使用
- #3070Codex skill 同步时会把普通用户 skill 放到 .codex/skills/.system 下
- #3498本地多 skill 仓库目录无法识别:skills/<repo>/skills/*/SKILL.md
- #3564[Bug] Skill 同步:DB 标记 enabled=1 但软链未创建,幂等跳过导致永不自愈;重命名 skill 残留旧 name
- #3623windows下,个性化设置中的skills同步方式选择软连接的时候,没有生效,还是普通文件
- #4024手动删除 .cc-switch/skills中的skill,cc-switch 上面还显示
- #4141ast-grep skill 无法安装
- #4266fix(skill): 恢复备份时应还原原有的应用启用状态
- #5499I don't want CC Switch to change my existing Skills location
- #5579[Bug] Skills 扫描失败:未适配 Claude Code 新版插件目录结构
- #5690导入已有Skill时,同时安装于Claude Code和Codex的Skill只被记录一个来源,另一个显示未安装
- I deleted the files under .cc-switch/skills by hand — why does cc-switch still show the Skill?
- The cc-switch UI loads Skills from its SQLite records rather than scanning the .cc-switch/skills directory. Delete the Skill through the cc-switch UI so both the files and the database records are cleaned up.
- My plugins/skills disappeared after switching API provider. What now?
- Config beyond the provider data itself has to be carried across providers with the cc-switch 通用配置 (general config) feature. Some cases were folded into a known issue — watch the relevant tracking issue.
- Why is my local multi-skill repository directory not recognised by import-existing?
- Some versions only recognise a SKILL.md directly inside a first-level directory, such as ~/.cc-switch/skills/<skill-name>/SKILL.md. A nested layout like skills/<repo>/skills/*/SKILL.md may not be recognised — flatten it, or wait for a fix.
- Why are Skills in the newer Claude Code plugin directory not found?
- Claude Code moved its Skills storage from ~/.claude/skills/ to ~/.claude/plugins/marketplaces/, and the cc-switch scan logic has not fully caught up with the new directory.
- Cloud sync says skills.zip has too many entries (14359) against a 10000 limit. What now?
- Restoring a backup currently caps skills.zip at 10000 files. For now, reduce the number of Skill files, or wait for the limit to be adjusted.
- I do not want cc-switch moving my existing Skills. How?
- Users suggest not clicking the import Skills feature in cc-switch, though the exact UI options vary by version.
Related problems
Section titled “Related problems”This is an unofficial community wiki with no affiliation to the cc-switch authors or the project itself. Its content is compiled from the project's public GitHub issues. This site distributes no software.