跳至主要內容

從既有 Skills 遷移

你的 skills 目前散落在 ~/.claude/skills/~/.cursor/skills/ 或其他 AI CLI 目錄中。這份指南會把它們整併到單一 source,並把原本的檔案換成 symlink。

BEFORE                                  AFTER
─────────────────────────────────────────────────────────────────
~/.claude/skills/ Source (one source of truth)
├── skill-a/ ~/.config/skillshare/skills/
└── skill-b/ ├── skill-a/
├── skill-b/
~/.cursor/skills/ ├── skill-c/
├── skill-b/ (duplicate!) └── skill-d/
└── skill-c/
Targets (symlinked back)
~/.codex/skills/ ~/.claude/skills/ → source
└── skill-d/ ~/.cursor/skills/ → source
~/.codex/skills/ → source
請先備份

collect 會變更 target 目錄 — 本機 skills 會被換成 symlink。請務必先執行 skillshare backup 再 collect,這樣萬一事後發現不對勁,skillshare restore <target> 才能復原。

你屬於哪一種情況

你的情況路線
Skills 只存在單一 CLI 中單一 CLI 遷移
Skills 分散在多個 CLI 中多 CLI 整併
你已經有一個 skills git repo 在別處接上既有的 repo

單一 CLI 遷移

如果所有 skills 都在同一個 target 裡(例如 Claude),init --copy-from 一步就能搞定:

skillshare init --copy-from claude
skillshare sync

--copy-from claude 會在 init 期間把 ~/.claude/skills/ 裡的每個 skill 複製進 source。接著的 sync 會把原本的檔案換成指回 source 的 symlink。


多 CLI 整併

Skills 分散在多個 targets 中。先初始化成空的,建立快照,再從每個 target collect

# 1. 初始化成空的
skillshare init --no-copy

# 2. 在變更之前先為每個 target 建立快照
skillshare backup

# 3. Collect — 一次全部,或逐一 target
skillshare collect --all
# 或:
# skillshare collect claude
# skillshare collect cursor

# 4. Sync — targets 現在會 symlink 回 source
skillshare sync

collect 對每個 target 做的事:

  1. 把非 symlink 的本機 skills 複製進 source(會略過 skill 內部的任何 .git/)。
  2. 把原本的檔案換成指回 source 的 symlink。
  3. 偵測重複項目(同一個 skill 名稱出現在多個 target),並回報而不覆寫。

處理重複項目

當某個 skill 同時存在於 source 和你正在 collect 的 target 中,target 版本會被略過並回報:

Warning: skill-b exists in source
Source: ~/.config/skillshare/skills/skill-b/
Skipped: ~/.cursor/skills/skill-b/

請手動處理:比對兩份副本的差異,把你要的那份保留在 source,接著要嘛不動 target 版本(下次 sync 時會被 symlink 取代),要嘛在你比較想保留 target 版本時重新執行 collect --force


接上既有的 repo

如果你在 GitHub 上已經有一個 skills repo(也許來自前一台機器),就別用 collect — 直接 clone 下來:

skillshare init --remote [email protected]:you/skills.git --all-targets --no-skill
skillshare sync

Tracked 相依項目已被 gitignore,不會跟著 clone 下來。init 之後重新安裝它們:

skillshare install https://github.com/your-company/skills --track --force
skillshare sync

把遷移後的 source 推上 git

遷移完成後,把 source 納入版本控管,未來的機器才能用同樣方式復原。

# 如果 init 時已經帶過 --remote,這步可略過。
cd ~/.config/skillshare/skills
git remote add origin [email protected]:you/skills.git

skillshare push -m "Initial commit: migrated skills"

從此以後,skillshare pushskillshare pull 就能在機器之間搬移 skills。


驗證

skillshare status     # 每個 target 都應回報 'synced'
skillshare list # 所有 collect 進來的 skills 都應出現
skillshare doctor # 診斷 — 失效的 symlink、缺少的 targets 等

回復

因為你事先跑過 backup,所以 collect 是可以回復的:

skillshare restore claude
skillshare restore cursor

每個 target 都會回到 collect 之前的狀態 — 實體檔案,沒有 symlink。


延伸閱讀