plugin-manager-adoptlisted
Install: claude install-skill abs1294/fulin-claude-plugins
# plugin-manager:adopt — 納管自製 skill
把使用者在「當前專案資料夾」隨手寫的自製 skill,集中收進 monorepo,從此真身住 monorepo、原專案靠 symlink 引用同一份(不會有兩份不同步)。
## 何時用
- 使用者在某專案 `.claude/skills/<name>/` 寫了自製 skill,想把它納入集中管理。
- 「靠登記」原則:**只納管使用者明確指定的 skill**,絕不自動掃整個專案、不碰別人的東西或專案機密。
## 執行步驟
1. **確認要納管哪個 skill**:使用者要指明 skill 名稱(對應 `<專案>/.claude/skills/<name>/`)。若沒指明,列出當前專案 `.claude/skills/` 底下的目錄讓使用者選。
2. **確認 plugin 名**:預設與 skill 同名。若 monorepo 已有同名 plugin,請使用者改名。
3. **跑 adopt 腳本**(純檔案/symlink 操作,不需 claude CLI):
```
node "${CLAUDE_PLUGIN_ROOT}/scripts/adopt.js" <skillName> <pluginName> [projectDir]
```
- `${CLAUDE_PLUGIN_ROOT}` 是本 plugin 安裝目錄(Claude Code 會展開)。
- projectDir 省略時用當前工作目錄。
- 腳本會:move 真身 → 建 plugin.json → 更新 marketplace.json → 原位建 symlink → 更新 registry。
4. **檢視腳本輸出**:
- 若腳本提示「此專案是 git repo,建議加 .gitignore」→ 詢問使用者是否要把 `.claude/skills/<name>` 加進該專案 `.gitignore`(避免 symlink 污染專案版控,這是使用者在意的「git 很亂」根源之一)。若使用者同意,幫他加。
- 若 symlink 建立失敗(Windows 權限)→ 回��,真身已在 monorepo,但原位置未連結,需手動處理。
5. **更新 monorepo README**(**規則 4**,詳 `../../CONVENTIONS.md`):adopt 在 marketplace 新增了一個 plugin → 同步更新根 `README.md` 的 plugin 列表與「結構」樹,隨本次一起 publish。
6. **提示下一步**:納管後真身在 monorepo 但**尚未推上 git**。提示使用者用 `/plugin-manager:publish` 發布。
> **規則 1(真身單一份 / C 折衷)**:adopt 一律 move 真身 + 原位 symlink,真身只有 monorepo 一份;開發期靠 symlink 即時迭代、段落完成就 publish。若發現兩份獨立實體則收斂(diff → 刪實體 → 改 symlink)。完整規範見 `../../CONVENTIONS.md`。
## 重要限制(誠實告知)
- 這只是把真身搬家 + 連結,**不會自動 install/enable 該 plugin**(install 是互動指令 /plugin,Claude 不能代執行)。
- Windows sym