Reviewed-on: #10
jsc-cli — CLI 偵測與技能庫部署
jsc 技能組的 CLI domain:找出已安裝的 AI CLI、列出各 CLI 可用模型並加上能力標籤,以及對每個 CLI 批次安裝、更新、解除安裝整組 jsc plugins。
安裝、更新、移除
Marketplace 統一為 jsc(https://gitea.jsc.idv.tw/plugins/meta.git),安裝 token 為 jsc-cli@jsc。每個指令一行:
| CLI | 安裝 | 更新 | 移除 |
|---|---|---|---|
| claude | claude plugin marketplace add https://gitea.jsc.idv.tw/plugins/meta.git && claude plugin install jsc-cli@jsc |
claude plugin marketplace update jsc && claude plugin update jsc-cli@jsc |
claude plugin uninstall jsc-cli@jsc |
| codex | codex plugin marketplace add https://gitea.jsc.idv.tw/plugins/meta.git && codex plugin add jsc-cli@jsc |
codex plugin marketplace upgrade jsc |
codex plugin remove jsc-cli@jsc |
| copilot | copilot plugin marketplace add https://gitea.jsc.idv.tw/plugins/meta.git && copilot plugin install jsc-cli@jsc |
copilot plugin marketplace update jsc && copilot plugin update jsc-cli@jsc |
copilot plugin uninstall jsc-cli@jsc |
| antigravity | git clone https://gitea.jsc.idv.tw/plugins/cli.git ~/plugins/cli && agy plugin install ~/plugins/cli |
git -C ~/plugins/cli pull && agy plugin uninstall jsc-cli && agy plugin install ~/plugins/cli |
agy plugin uninstall jsc-cli |
| kiro | kiro-cli plugin marketplace add https://gitea.jsc.idv.tw/plugins/meta.git && kiro-cli plugin install jsc-cli@jsc |
kiro-cli plugin marketplace update jsc && kiro-cli plugin update jsc-cli@jsc |
kiro-cli plugin uninstall jsc-cli@jsc |
antigravity 不支援 gitea URL 安裝,改用本地 clone 路徑。批次操作五個 CLI:使用
/jsc-cli:deploy。
舊入口
plugins/jsc已移除,marketplace 正本移到plugins/meta。marketplace 名稱仍是jsc(取自 marketplace.json 的name欄位,與存取庫名無關),安裝 token 不變;已從舊入口安裝過的人先執行claude plugin marketplace remove jsc,再依上表重新 add。
工具
| 工具 | 用途 |
|---|---|
tools/detect-clis.sh |
列出已安裝的 AI CLI 與執行檔路徑(TSV:name / path / version;antigravity 的執行檔為 agy、kiro 為 kiro-cli) |
tools/deploy.sh |
對單一 CLI 執行安裝、更新或解除安裝(deploy.sh [-n] {mode} {cli} {domain}...,mode 為 install / update / uninstall);印出每個指令與其結束碼,最後一行 result 標 ok 或 fail。-n 只印指令不執行。上表五個 CLI 的指令差異全部收在這支腳本裡。站台取自 GITEA_HOST,本地 clone 目錄取自 JSC_LOCAL_PLUGINS,兩者的預設值見下表 |
tools/list-models.sh |
讀各 CLI 設定檔列出模型(TSV:cli / model / in-use);設定檔缺失就不輸出該 CLI 的列,一律 exit 0。設定檔位置只寫在這支腳本裡 |
tools/model-config.sh |
解析 SDLC 各階段的偏好模型鏈(get {stage}、list、resolve {stage} 印出目前 CLI 可用的第一個模型);專案 .jsc/models 優先於 $JSC_HOME/models.conf,格式見 references/model-tags.md。鏈只影響建議與偏好順序,不影響閘門放行 |
tools/model-tags.sh |
解析 references/model-tags.md 的能力標籤與 SDLC 階段必要標籤(dump、sync、stage {階段}、model {模型 id}、gate {階段} {模型 id});sync 寫出 $JSC_HOME/model-tags.tsv 供 jsc-hooks 的 sdlc-gate 讀取 |
Skills 目錄
呼叫方式:Claude / Antigravity /jsc-cli:{name};Codex ${name};Copilot / Kiro 描述需求自動觸發。
models
用 tools/list-models.sh 讀出各已安裝 CLI 可使用的模型並加上能力標籤(references/model-tags.md),用 tools/model-tags.sh sync 把標籤表寫進 $JSC_HOME/model-tags.tsv 供 sdlc-gate 讀取,列出 SDLC 各階段的必要標籤(plan、analyze 需 reasoning-max;implement 需 coding;maintain 任意),並用 tools/model-config.sh 列出各階段的偏好模型鏈。jsc-sdlc 閘門一律以能力標籤判定,偏好鏈只用來建議切換目標。
deploy
技能庫批次安裝、更新、解除安裝:偵測 CLI → 先比對各 plugin 的本機與已發佈版本並列表,只要有任一個落後就把「更新」設為推薦選項 → 決策樹選模式 → 每個 CLI 一個 sub agent 呼叫 tools/deploy.sh 執行原生 plugin 指令(統一 marketplace jsc,token jsc-{domain}@jsc)。domain 名單動態取自 plugins/meta 的 marketplace.json,不硬編碼。
環境變數
| 變數 | 用途 | 未設定時 |
|---|---|---|
GITEA_HOST |
Gitea 站台(可省略 scheme,預設 https) | 用正本站台 https://gitea.jsc.idv.tw |
JSC_GITEA_OWNER |
技能組存取庫的 owner | 用 plugins |
JSC_LOCAL_PLUGINS |
antigravity 與 kiro 退路用的本地 clone 目錄 | 用 $JSC_HOME/plugins(即 ~/.jsc/plugins) |
JSC_KIRO_SKILLS |
kiro 退路複製 skills 的目標目錄 | 用 ~/.kiro/skills |
JSC_DEPLOY_DRYRUN |
設為 1 等同 deploy.sh -n,只印指令不執行 |
照常執行 |
JSC_LOCAL_PLUGINS 的預設值刻意避開 ~/plugins:那是維護者放技能組開發 checkout 的地方,git pull 下去會蓋掉未提交的工作。這個變數指到的目錄若是開發中的樹(有未提交變更,或有未推送的 commit),deploy.sh 只印一行 skip 並直接用現地內容安裝,不執行 git pull。