setup-pluginslisted
Install: claude install-skill abs1294/fulin-claude-plugins
# Setup Plugins(per-project plugin 偵測與推薦)
讓使用者為「當前目錄」按需啟用 plugin,像 Python venv 那樣按專案隔離,避免全部塞 user scope 浪費上下文。
## 核心職責(重要 — 邊界)
setup 做**偵測 + 推薦 + 核可後代裝**,**不手寫 settings**:
- **`claude plugin install <ref> --scope project` 是非互動 CLI**,Claude 可以直接跑(Bash);install 會自己把 `enabledPlugins` 寫進對應 settings.json。這是 install 的職責,setup 不碰。
- 所以 setup **不 Edit、不代寫** `<cwd>/.claude/settings.json` 的 enabledPlugins——寫入一律經由 install CLI(重複手寫只會打架)。
- setup 的價值是:① 看專案**偵測**該裝什麼 → ② **推薦** profile / plugin 組合 → ③ 使用者核可後**直接跑 CLI 裝好**(marketplace 缺就先 add;CLI 失敗才退回列指令請使用者自貼)。
- 舊說法「Claude 不能代執行 /plugin」指的是**互動 slash UI**;CLI 版(`claude plugin install` / `claude plugin marketplace add`)沒有這限制。
## 背景知識
- plugin「安裝」是全域一份 cache(`~/.claude/plugins/cache/`),但「**啟用 scope**」per-scope:`/plugin install` 互動 UI(`/plugin` → Discover → 選 plugin → Enter)可選 **user**(全域)/ **project**(寫 `<cwd>/.claude/settings.json`,團隊共享)/ **local**(寫 `settings.local.json`,只自己、不進 git)。
- 全域常駐(不需 profile 重複處理):`claude-mem`、`codex`、`example-skills`。
- **profile 來源有兩份,讀時合併**:
- 基底(可推廣、進 git):`<monorepo>/plugins/plugin-manager/profiles.json`(monorepo 路徑取自 `~/.claude/plugin-manager/config.json`)——通用 profile(dotnet/frontend/full…)+ 各自的 `detect` 偵測規則。
- 覆寫(本機、不進 git):`~/.claude/plugin-profiles.json`——使用者個人 / 公司專屬 profile(如 supplier)。
- **合併規則**:以基底為底,本機覆寫——同名 profile 本機贏,本機獨有的 profile 保留。
## 執行步驟(Claude 依此操作)
1. **確認當前工作目錄**(cwd)。
2. **讀 profile 清單(合併兩份)**:Read `<monorepo>/plugins/plugin-manager/profiles.json`(基底)與 `~/.claude/plu