feat(skills): 一次處理多個 CLI,並修掉闇影劍在 #30 找到的問題 #31

Merged
admin merged 2 commits from develop into master 2026-07-31 08:55:00 +00:00
Member

接續已合併的 #30。兩件事:使用者要的「一次處理多個 CLI」,以及上一輪 code review 找到的實作問題。

1. 一次處理多個助理

  • --assistant 從單一值改成清單--assistant claude,codex,copilot,或 all
  • 沒帶參數時偵測本機有哪些 CLI:只有一個直接用,多個就讓使用者多選(安裝預設全選;移除是不可逆的,預設不全選)。
  • 盤點與執行的迴圈改成 助理 × plugin,回報表格加上「助理」欄。
  • 正在執行本 skill 的那個助理排到最後——更新它自己要重啟工作階段;移除時它的 jsc-generic 一沒,後面的助理就處理不到了。

2. 修掉 review 找到的問題

問題 後果 修法
Antigravity/OpenCode 無條件 git clone clone 目錄已存在時 fatal 中止。預設的 ~/plugins 就是開發者自己的工作區 先判斷 .git 存在與否,已存在改 pull --ff-only
沒檢查 clone 在哪個分支 停在 develop 時裝進去的是未合併內容 新增分支確認,不是發佈分支就先告知使用者
OpenCode 移除用 {a,b,c} 逗號後有空格、單一元素、dashsh 三種情況都不展開,什麼都沒刪但結束碼是 0,回報變成假的 改成從 clone 的 skills/ 推導清單跑迴圈,退路是一行一個 rm
硬編碼 skill 目錄清單 只是快照,plugin 新增 skill 後會永久殘留 優先從 clone 推導,用表時註明「清單可能不完整」
說「覆蓋複製」 cp -r 是合併不是覆蓋,上游刪掉的檔案會留著 移除這個不成立的說法,改講「已複製,舊檔可能殘留」
階段 D 的版本欄 Claude/Codex/Copilot 的 plugin 在 CLI 自管快取,讀不到 plugin.json 明說只有 Antigravity/OpenCode 拿得到,其餘寫「未知」

版本

三家 manifest 一起升到 0.1.7(master 現行 0.1.6)。

接續已合併的 #30。兩件事:使用者要的「一次處理多個 CLI」,以及上一輪 code review 找到的實作問題。 ## 1. 一次處理多個助理 - `--assistant` 從單一值改成**清單**:`--assistant claude,codex,copilot`,或 `all`。 - 沒帶參數時偵測本機有哪些 CLI:只有一個直接用,**多個就讓使用者多選**(安裝預設全選;移除是不可逆的,預設不全選)。 - 盤點與執行的迴圈改成 **助理 × plugin**,回報表格加上「助理」欄。 - **正在執行本 skill 的那個助理排到最後**——更新它自己要重啟工作階段;移除時它的 `jsc-generic` 一沒,後面的助理就處理不到了。 ## 2. 修掉 review 找到的問題 | 問題 | 後果 | 修法 | | --- | --- | --- | | Antigravity/OpenCode 無條件 `git clone` | clone 目錄已存在時 `fatal` 中止。預設的 `~/plugins` 就是開發者自己的工作區 | 先判斷 `.git` 存在與否,已存在改 `pull --ff-only` | | 沒檢查 clone 在哪個分支 | 停在 `develop` 時裝進去的是未合併內容 | 新增分支確認,不是發佈分支就先告知使用者 | | OpenCode 移除用 `{a,b,c}` | 逗號後有空格、單一元素、`dash`/`sh` 三種情況都不展開,**什麼都沒刪但結束碼是 0**,回報變成假的 ✅ | 改成從 clone 的 `skills/` 推導清單跑迴圈,退路是一行一個 `rm` | | 硬編碼 skill 目錄清單 | 只是快照,plugin 新增 skill 後會永久殘留 | 優先從 clone 推導,用表時註明「清單可能不完整」 | | 說「覆蓋複製」 | `cp -r` 是合併不是覆蓋,上游刪掉的檔案會留著 | 移除這個不成立的說法,改講「已複製,舊檔可能殘留」 | | 階段 D 的版本欄 | Claude/Codex/Copilot 的 plugin 在 CLI 自管快取,讀不到 `plugin.json` | 明說只有 Antigravity/OpenCode 拿得到,其餘寫「未知」 | ## 版本 三家 manifest 一起升到 **0.1.7**(master 現行 0.1.6)。
jiantw83 added 2 commits 2026-07-31 08:49:36 +00:00
一次處理多個助理(使用者要求):
- `--assistant` 從單一值改成清單,支援 `claude,codex,copilot` 與 `all`。
- 沒帶參數時偵測本機有哪些 CLI:只有一個就直接用,多個就讓使用者多選
  (安裝預設全選;移除是不可逆的,預設不全選)。
- 盤點與執行的迴圈改成「助理 × plugin」,回報表格加上「助理」欄。
- 正在執行本 skill 的那個助理排到最後處理——更新它要重啟工作階段,
  而移除它自己的 jsc-generic 之後,後面的助理就處理不到了。

闇影劍審 PR #30 找到的問題:
- Antigravity 與 OpenCode 的安裝分支無條件 `git clone`,clone 目錄已存在時
  會 fatal 中止(開發者自己就 clone 在預設的 ~/plugins)。改成先判斷
  `.git` 存在與否,已存在就 `pull --ff-only`。
- 新增「先確認 clone 在哪個分支」:預設路徑很可能是開發者的工作區,
  停在 develop 時裝進去的是未合併內容,要先告知使用者。
- OpenCode 的移除指令用 `{a,b,c}` brace expansion,有三種會靜默失效的情況
  (逗號後有空格、單一元素、dash/sh 不支援),全都是「什麼都沒刪但結束碼 0」。
  改成從本機 clone 的 skills/ 推導清單跑迴圈,退路是一行一個 rm。
- 硬編碼的 skill 目錄清單只是快照,plugin 新增 skill 後會殘留。改為優先從
  clone 推導,用表時要註明「清單可能不完整」。
- `cp -r` 不是覆蓋是合併,上游刪掉的檔案會留著。移除「覆蓋複製」這個
  不成立的說法。
- 階段 D 的版本欄只有 Antigravity 與 OpenCode 拿得到,其餘三家寫「未知」。

依 spec-plugin-version 升版 0.1.7(master 現行 0.1.6)。
admin approved these changes 2026-07-31 08:54:58 +00:00
admin merged commit e683a70e95 into master 2026-07-31 08:55:00 +00:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: plugins/shared#31