Files
shared/skills/plugins-install/SKILL.md
T
jiantw83 e47f4873c7 feat(skills): 新增 plugins-install 與 plugins-uninstall,一次操作所有 JSC plugin
`plugins-install` 一次安裝或更新 jsc-code、jsc-doc、jsc-persona:先盤點每個
plugin 已安裝或未安裝,未安裝就安裝、已安裝就更新到最新,最後以表格回報動作、
結果與版本。不含 jsc-generic 自己(它是這兩個 skill 的所在地)。

`plugins-uninstall` 一次移除四個 JSC plugin:動手前先列出將被移除的項目與
不會被碰的資料請使用者確認,移除順序固定把 jsc-generic 放最後。人格倉庫、
~/.roles、~/.memory 與 Gitea 存取庫一律不刪。

兩個 skill 都涵蓋 Claude Code、Codex、GitHub Copilot CLI、Antigravity 四家
原生 plugin CLI,OpenCode 走複製/逐一刪除 skills 目錄(不用萬用字元,避免
掃到別處裝的 skill)。

同時附帶:README 補上 Skills 目錄與適用範圍、三份 manifest 的 description
補述新能力,並依 spec-plugin-version 把三家 manifest 版號一起升到 0.1.6
(master 現行為 0.1.5)。
2026-07-31 08:34:28 +00:00

8.8 KiB
Raw Blame History

name, description, argument-hint
name description argument-hint
plugins-install 一次把 JSC 的三個 pluginjsc-codejsc-docjsc-persona)安裝或更新到目前的 AI 助理,支援 Claude Code、Codex、GitHub Copilot CLI、Antigravity 四家原生 plugin CLIOpenCode 則以複製 skills 目錄處理;每個 plugin 先判斷已安裝或未安裝,未安裝就安裝、已安裝就更新到最新,最後以表格回報每個 plugin 的結果與版本。當使用者說要安裝所有 jsc plugin、一次更新全部 skill 套件、把 codedocpersona 都裝起來、換新機器要把 plugin 都補齊、或問怎麼一次更新所有 plugin 時觸發。不適用於:移除 plugin(用 /jsc-generic:plugins-uninstall)、只處理單一 plugin(直接照該 plugin README 的安裝章節)、安裝非 JSC 的第三方 plugin。 [--assistant claude|codex|copilot|agy|opencode] [--plugins code,doc,persona] [--host <gitea 主機>] [--clone-dir <目錄>] [--yes]

plugins-install — 一次安裝/更新所有 JSC plugin

四階段 skill:先決定助理與目標清單,再逐一判斷已安裝或未安裝,接著安裝或更新,最後回報結果並提醒重啟工作階段

階段 動作
A. 前置設定 決定要操作哪個助理(--assistant/偵測目前執行環境/詢問)→ 決定 gitea 主機 → 決定 plugin 清單(預設 code、doc、persona
B. 現況盤點 對每個 plugin 查詢 marketplace 與 plugin 是否已存在,決定「安裝」或「更新」
C. 安裝/更新 依助理的原生指令逐一執行;Antigravity 與 OpenCode 走 clone/複製路徑
D. 回報 以表格列出每個 plugin 的動作、結果與版本,並提醒重啟工作階段

共用規範(generic plugin,必要前置)

執行本 skill 前,先以 Skill 工具載入下列共用規範並全程遵守:

  • /jsc-generic:spec-output:繁體中文(台灣用語)、UTF-8(不含 BOM)無亂碼、表格呈現。
  • /jsc-generic:spec-execution:自動執行原則(必要決策才中斷)、不臆測/需人工確認。
  • /jsc-generic:spec-git-safetyAntigravityOpenCode 路徑會動到本機 clone工作區有未提交變更時不得強制更新

本 skill 特有補充:

  • 不移除任何東西。更新時就算需要「先移除再安裝」(Antigravity 沒有 update 子指令),也只針對該 plugin 自己,且移除後必須立刻重裝成功。
  • 必要決策(會中斷詢問):無法判斷目前是哪個助理、指定的助理 CLI 不存在、本機 clone 有未提交變更、安裝失敗且原因需要使用者裁示。
  • 本 skill 不處理 jsc-generic 自己:它是本 skill 的所在地,安裝它請直接照 generic 的 README。

參數

  • --assistant claude|codex|copilot|agy|opencode:指定要操作的助理。省略時依階段 A1 判斷。
  • --plugins code,doc,persona:要處理的 plugin(以逗號分隔,用 repo 短名)。省略時預設三個全做
  • --host <gitea 主機>gitea 主機,省略時預設 gitea.jsc.idv.tw
  • --clone-dir <目錄>AntigravityOpenCode 的本機 clone 根目錄,省略時預設 ~/plugins
  • --yes:全自動,不做確認式詢問(必要決策仍會中斷)。

plugin 對照表(安裝識別的唯一依據)

repo 短名 plugin 名 marketplace 名 安裝 token repo 網址
code jsc-code code jsc-code@code https://<host>/plugins/code.git
doc jsc-doc doc jsc-doc@doc https://<host>/plugins/doc.git
persona jsc-persona jsc-plugins jsc-persona@jsc-plugins https://<host>/plugins/persona.git

persona 的 marketplace 名不是 repo 名(是 jsc-plugins)。指令一律照這張表帶,不要用 repo 短名去猜。

各 plugin 帶入的 skill 目錄(OpenCode 路徑會用到):

repo 短名 skill 目錄
code action-compositeaction-dockeraction-nodeimageissuesnugetreview-resolvesync
doc dockerfuncsissues-analyzeissues-analyze-to-fileissues-syncworklog
persona persona-animepersona-chatpersona-createpersona-iconpersona-invitepersona-memorypersona-relationpersona-sleeppersona-statuspersona-syncpersona-therapistpersona-transfer

階段 A:前置設定

A1. 決定助理

依序判斷,第一個成立的就採用

  1. 有帶 --assistant → 直接採用。
  2. 目前正在執行本 skill 的助理可自我辨識(例如 Claude Code 的 /plugin 指令可用)→ 採用自己。
  3. 逐一檢查哪些 CLI 存在(command -v claude codex copilot agy opencode)→ 只有一個就採用;有多個就列出來問使用者
  4. 一個都沒有 → 回報「找不到任何支援的助理 CLI」並停止。

A2. 決定 gitea 主機與 clone 根目錄

  • 主機:--host$GITEA_HOST → 預設 gitea.jsc.idv.tw
  • clone 根目錄(只有 agyopencode 用得到):--clone-dir → 預設 ~/plugins。目錄不存在就建立。

A3. 決定 plugin 清單

--plugins 指定則照它,否則 code,doc,persona 三個都做。清單中出現對照表以外的名稱 → 回報並略過該項,其餘照做。


階段 B:現況盤點

對清單中每個 plugin,先查現況再決定動作(先查再做,不要盲目重裝):

助理 查詢指令 判定
Claude Code claude plugin marketplace listclaude plugin list 兩者都有 → 更新;缺 marketplace → 先 add;缺 plugin → install
Codex codex plugin marketplace listcodex plugin list 同上
GitHub Copilot CLI copilot plugin marketplace listcopilot plugin list 同上
Antigravity agy plugin list,並看 <clone-dir>/<repo> 是否存在 目錄在且已安裝 → 更新;否則安裝
OpenCode ~/.config/opencode/skills/ 底下是否已有該 plugin 的 skill 目錄 有 → 更新(覆蓋複製);沒有 → 安裝

指令不存在或子指令不被支援(舊版 CLI)時,不要中斷整批:記下該 plugin 為「跳過(CLI 不支援)」,繼續下一個,最後在階段 D 一起回報。


階段 C:安裝/更新

以下 <url><plugin><marketplace><token> 一律取自對照表。

Claude Code

# 安裝(marketplace 尚未加入)
claude plugin marketplace add <url>
claude plugin install <token>

# 更新(已安裝)
claude plugin marketplace update <marketplace>
claude plugin update <token>

Codex

# 安裝
codex plugin marketplace add <url>
codex plugin add <token>

# 更新(重新抓取 marketplace 的 git 快照)
codex plugin marketplace upgrade <marketplace>

GitHub Copilot CLI

# 安裝
copilot plugin marketplace add <url>
copilot plugin install <token>

# 更新
copilot plugin marketplace update <marketplace>
copilot plugin update <token>

Antigravityagy

agy plugin install <url> 目前只支援 github.comgitea 一律走「clone + 本地路徑」。agy 沒有 update 子指令,更新=git pull 後重裝。

# 安裝
git clone <url> <clone-dir>/<repo>
agy plugin install <clone-dir>/<repo>

# 更新
git -C <clone-dir>/<repo> pull --ff-only
agy plugin uninstall <plugin>
agy plugin install <clone-dir>/<repo>
  • git pull --ff-only 失敗(本機有未提交變更或分支分岔)→ 停在該 plugin,回報現況讓使用者裁示,不得 reset --hardclean,其餘 plugin 照常繼續。

OpenCode

OpenCode 的 plugin 是 npm 套件,不適用 skill 包;改用目錄安裝。只會帶入 skills/scripts/hooks/ 不會進去——jsc-persona 依賴 scripts/persona.mjs,以此方式安裝等於只有說明書、沒有工具,安裝前要先告知使用者。

git clone <url> <clone-dir>/<repo>      # 已存在則 git -C <clone-dir>/<repo> pull --ff-only
mkdir -p ~/.config/opencode/skills
cp -r <clone-dir>/<repo>/skills/* ~/.config/opencode/skills/

Windows PowerShellcp -r A BCopy-Item A B -Recurse -Force~$HOME


階段 D:回報

以表格回報,一個 plugin 一列:

plugin 動作 結果 版本
jsc-code 安裝/更新/跳過 成功/⚠ 需處理/ 失敗 0.0.2
  • 版本取自該 plugin 的 plugin.json;拿不到就寫「未知」。
  • 有任何一列不是 → 在表格下方逐項說明原因與建議動作。
  • 最後固定提醒:安裝或更新後要重啟工作階段才會生效;jsc-persona 在 Claude Code 還要用 /hooks 確認六個 hook 都在。