refactor(plugin 命名空間): generic 改名 shared

This commit is contained in:
2026-07-31 17:33:11 +00:00
parent 220f23234a
commit 5ee39ee2e3
23 changed files with 136 additions and 136 deletions
+17 -17
View File
@@ -1,7 +1,7 @@
---
name: plugins-uninstall
description: 一次把 JSC 的四個 pluginjsc-codejsc-docjsc-personajsc-generic)從一個或多個 AI 助理移除,可同時處理 Claude Code、Codex、GitHub Copilot CLI、Antigravity 四家原生 plugin CLI 與 OpenCode(刪除先前複製進去的 skill 目錄);沒指定時偵測本機裝了哪些 CLI 並讓使用者多選;移除順序固定把 jsc-generic 放到最後(本 skill 就住在裡面,移除後即失效),並在動手前列出將被移除的項目與會受影響的本機資料讓使用者確認。當使用者說要移除所有 jsc plugin、把 skill 套件整組解除安裝、清掉 codedoc/personageneric、重灌前先卸載、要同時從好幾個 CLI 移除、或問怎麼一次移除全部 plugin 時觸發。不適用於:安裝或更新(用 /jsc-generic:plugins-install)、只移除單一 plugin(直接照該 plugin README 的移除章節)、刪除人格資料或 Gitea 上的存取庫。
argument-hint: "[--assistant <助理清單,逗號分隔,或 all>] [--plugins code,doc,persona,generic] [--keep-marketplace] [--keep-clone] [--yes]"
description: 一次把 JSC 的四個 pluginjsc-codejsc-docjsc-personajsc-shared)從一個或多個 AI 助理移除,可同時處理 Claude Code、Codex、GitHub Copilot CLI、Antigravity 四家原生 plugin CLI 與 OpenCode(刪除先前複製進去的 skill 目錄);沒指定時偵測本機裝了哪些 CLI 並讓使用者多選;移除順序固定把 jsc-shared 放到最後(本 skill 就住在裡面,移除後即失效),並在動手前列出將被移除的項目與會受影響的本機資料讓使用者確認。當使用者說要移除所有 jsc plugin、把 skill 套件整組解除安裝、清掉 codedoc/personashared、重灌前先卸載、要同時從好幾個 CLI 移除、或問怎麼一次移除全部 plugin 時觸發。不適用於:安裝或更新(用 /jsc-shared:plugins-install)、只移除單一 plugin(直接照該 plugin README 的移除章節)、刪除人格資料或 Gitea 上的存取庫。
argument-hint: "[--assistant <助理清單,逗號分隔,或 all>] [--plugins code,doc,persona,shared] [--keep-marketplace] [--keep-clone] [--yes]"
---
# plugins-uninstall — 一次移除所有 JSC plugin
@@ -12,32 +12,32 @@ argument-hint: "[--assistant <助理清單,逗號分隔,或 all>] [--plugins
| --- | --- |
| A. 前置設定 | 決定要操作哪些助理(`--assistant` 可帶多個或 all/偵測本機有哪些 CLI/多個就讓使用者多選)→ 決定 plugin 清單(預設四個全移) |
| B. 盤點與確認 | 列出實際已安裝的項目、會一併移除的 marketplace 與本機 clone、以及**不會**被碰的資料,請使用者確認 |
| C. 移除 | 依 `code``doc``persona``generic` 的順序逐一移除 |
| C. 移除 | 依 `code``doc``persona``shared` 的順序逐一移除 |
| D. 回報 | 表格回報每個 plugin 的結果,並列出刻意保留的殘留物 |
---
## 共用規範(generic plugin,必要前置)
## 共用規範(shared plugin,必要前置)
執行本 skill 前,先以 Skill 工具載入下列共用規範並全程遵守:
- `/jsc-generic:spec-output`:繁體中文(台灣用語)、UTF-8(不含 BOM)無亂碼、表格呈現。
- `/jsc-generic:spec-execution`:自動執行原則(必要決策才中斷)、不臆測/需人工確認。
- `/jsc-generic:spec-git-safety`:不破壞既有工作——本機 clone 只在使用者明確同意時刪除,且**有未提交變更就一律保留**。
- `/jsc-shared:spec-output`:繁體中文(台灣用語)、UTF-8(不含 BOM)無亂碼、表格呈現。
- `/jsc-shared:spec-execution`:自動執行原則(必要決策才中斷)、不臆測/需人工確認。
- `/jsc-shared:spec-git-safety`:不破壞既有工作——本機 clone 只在使用者明確同意時刪除,且**有未提交變更就一律保留**。
本 skill 特有補充:
- **移除是不可逆的動作**:階段 B 的確認是**必要決策**,除非帶 `--yes`,否則一定要問過才動手。
- **絕不刪除使用者資料**`~/.claude/personas/`(人格倉庫)、`~/.roles/``~/.memory/`(角色與記憶)一律不動,Gitea 上的存取庫也不動。要清這些請使用者自己來。
- **順序不可調換**`jsc-generic` 一定最後移除。它是本 skill 的所在地,移除後本 skill 隨之失效,後面的步驟會執行不到。
- **多個助理時的順序**:外層先跑完一個助理的四個 plugin,再換下一個助理。**目前正在執行本 skill 的那個助理排到最後**——不然它自己的 `jsc-generic` 一沒,剩下的助理就處理不到了。
- **順序不可調換**`jsc-shared` 一定最後移除。它是本 skill 的所在地,移除後本 skill 隨之失效,後面的步驟會執行不到。
- **多個助理時的順序**:外層先跑完一個助理的四個 plugin,再換下一個助理。**目前正在執行本 skill 的那個助理排到最後**——不然它自己的 `jsc-shared` 一沒,剩下的助理就處理不到了。
---
## 參數
- `--assistant <清單>`:要操作的助理,**可以多個**,以逗號分隔(`claude,codex,copilot,agy,opencode`),或用 `all` 代表本機找得到的全部。**省略時**依階段 A1 判斷(只有一個就直接用,多個就讓使用者多選,且不預設全選)。
- `--plugins code,doc,persona,generic`:要移除的 plugin(以逗號分隔,用 repo 短名)。**省略時預設四個全移**。
- `--plugins code,doc,persona,shared`:要移除的 plugin(以逗號分隔,用 repo 短名)。**省略時預設四個全移**。
- `--keep-marketplace`:只移除 plugin,保留 marketplace 登錄(之後要重裝比較快)。
- `--keep-clone`:保留 AntigravityOpenCode 用的本機 clone 目錄(**預設就是保留**,此旗標僅用於明示)。要刪除本機 clone 必須由使用者在階段 B 明確同意。
- `--yes`:跳過階段 B 的確認(其他必要決策仍會中斷)。
@@ -51,7 +51,7 @@ argument-hint: "[--assistant <助理清單,逗號分隔,或 all>] [--plugins
| `code` | `jsc-code` | `code` | `jsc-code@code` |
| `doc` | `jsc-doc` | `doc` | `jsc-doc@doc` |
| `persona` | `jsc-persona` | `jsc-plugins` | `jsc-persona@jsc-plugins` |
| `generic` | `jsc-generic` | `generic` | `jsc-generic@generic` |
| `shared` | `jsc-shared` | `shared` | `jsc-shared@shared` |
> **`persona` 的 marketplace 名不是 repo 名**(是 `jsc-plugins`)。移除 marketplace 時特別注意別誤刪別的登錄。
@@ -62,7 +62,7 @@ argument-hint: "[--assistant <助理清單,逗號分隔,或 all>] [--plugins
| `code` | `action-composite``action-docker``action-node``image``issues``nuget``review-resolve``sync` |
| `doc` | `docker``funcs``issues-analyze``issues-analyze-to-file``issues-sync``worklog` |
| `persona` | `persona-anime``persona-chat``persona-create``persona-icon``persona-invite``persona-memory``persona-relation``persona-sleep``persona-status``persona-sync``persona-therapist``persona-transfer` |
| `generic` | `role``plugins-install``plugins-uninstall``spec-action-params``spec-doc-funcs-handoff``spec-dockerfile``spec-execution``spec-gitea``spec-git-safety``spec-output``spec-plugin-version``spec-project-board``spec-time-log` |
| `shared` | `role``plugins-install``plugins-uninstall``spec-action-params``spec-doc-funcs-handoff``spec-dockerfile``spec-execution``spec-gitea``spec-git-safety``spec-output``spec-plugin-version``spec-project-board``spec-time-log` |
> 上表是**寫下來當天的快照**,plugin 之後新增 skill 它不會自己更新。所以 OpenCode 的刪除**優先從本機 clone 的 `skills/` 推導清單**(見階段 C 的 OpenCode 段),clone 不在時才退回這張表,並在回報裡註明「清單可能不完整」。
> 兩種做法都**不可用萬用字元一次掃掉整個 `skills/`**——那裡可能還有別處裝進去的 skill。
@@ -88,7 +88,7 @@ argument-hint: "[--assistant <助理清單,逗號分隔,或 all>] [--plugins
### A2. 決定 plugin 清單
`--plugins` 指定則照它,否則四個全做。無論使用者怎麼排,**實際執行順序一律重排為 `code``doc``persona``generic`**。
`--plugins` 指定則照它,否則四個全做。無論使用者怎麼排,**實際執行順序一律重排為 `code``doc``persona``shared`**。
---
@@ -164,13 +164,13 @@ rm -rf ~/.config/opencode/skills/funcs
> **Windows PowerShell**`rm -rf X` → `Remove-Item X -Recurse -Force`、`~` → `$HOME`。
### `jsc-generic` 的收尾
### `jsc-shared` 的收尾
移除 `jsc-generic` 是**最後一步**。動手前先在輸出裡寫清楚:
移除 `jsc-shared` 是**最後一步**。動手前先在輸出裡寫清楚:
- 本 skill 與所有 `spec-*` 共用規範會一起消失;`jsc-code``jsc-doc` 的 skill 內文都會引用 `spec-*`,若它們還留著,之後執行會載入不到共用規範。
- 要重新安裝,得直接照 generic 的 README(那時已經沒有 `/jsc-generic:plugins-install` 可用了):
`claude plugin marketplace add https://gitea.jsc.idv.tw/plugins/generic.git``claude plugin install jsc-generic@generic`
- 要重新安裝,得直接照 shared 的 README(那時已經沒有 `/jsc-shared:plugins-install` 可用了):
`claude plugin marketplace add https://gitea.jsc.idv.tw/plugins/shared.git``claude plugin install jsc-shared@shared`
---