jiantw83 f2029d4cd0 feat(cli): 新增 model-config.sh 的 resolve 子指令
What:
在 `tools/model-config.sh` 新增 `resolve {stage}` 子指令。這個指令會取出某個 SDLC 階段的模型鏈(跟 `get {stage}` 用同樣的解析規則:先讀專案的 `.jsc/models`,找不到再讀 `$JSC_HOME/models.conf`),然後印出鏈中第一個模型名稱,當作目前這個 CLI 可用的模型。同時新增 `current_cli()` 這個輔助函式,透過各家 CLI 的環境變數,判斷目前是在 claude、codex、copilot、antigravity、還是 kiro 底下執行。這個版本先把 `current_cli()` 的結果記錄下來,還沒有拿它去過濾模型鏈中不可用的模型,這件事留到之後再做,因為要判斷某個模型是否可用,需要 LLM 層級的判斷,不是單純的 shell script 能做到的。之後的計畫是拿 `current_cli()` 的結果,對照 `references/model-tags.md` 和 `detect-clis.sh`,跳過模型鏈裡不可用的模型。另外,把 README.md 裡 `tools/model-config.sh` 的工具說明表格,加上新的 `resolve {stage}` 子指令說明。版本號也從 0.0.2 升到 0.0.3,同步改了 `plugin.json`、`.claude-plugin/plugin.json`、`.codex-plugin/plugin.json` 這三份清單檔,這是這個 repo 的慣例:新增功能時要一併升版號。

Why:
jsc-meta:skill-check 這次稽核發現,jsc-sdlc 底下 plan、analyze、implement、maintain 這四個階段的技能,各自都要幫自己的階段挑一個模型,來做 gate check。如果沒有 `resolve` 這個子指令,這四個技能就要各自在技能說明裡,重複寫一次「讀模型鏈、選一個候補模型」的邏輯。這樣容易寫錯,也難維護。

How:
在既有的 `get`/`list` 邏輯基礎上,加一個 `resolve` 子指令,直接回傳模型鏈的第一個模型。同時加上 `current_cli()`,先把偵測 CLI 的能力做出來,但先不接上過濾邏輯,用註解說明後續要怎麼接。文件和版本號一併更新。

Who:
這個功能是給 jsc-sdlc 的四個階段技能(plan、analyze、implement、maintain)用的。它們可以直接呼叫 `resolve {stage}`,取得一個可用的模型名稱,不用各自重複寫模型鏈的判斷邏輯。
2026-08-24 14:49:28 +08:00
2026-08-21 04:42:50 +00:00

jsc-cli — CLI 偵測與技能庫部署

jsc 技能組的 CLI domain:找出已安裝的 AI CLI、列出各 CLI 可用模型並加上能力標籤,以及對每個 CLI 批次安裝、更新、解除安裝整組 jsc plugins。

安裝、更新、移除

Marketplace 統一為 jsc(https://gitea.jsc.idv.tw/plugins/jsc.git),安裝 token 為 jsc-cli@jsc。每個指令一行:

CLI 安裝 更新 移除
claude claude plugin marketplace add https://gitea.jsc.idv.tw/plugins/jsc.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/jsc.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/jsc.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/jsc.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。

工具

工具 用途
tools/detect-clis.sh 列出已安裝的 AI CLI 與執行檔路徑(TSV:name / path / version;kiro 的執行檔為 kiro-cli)
tools/model-config.sh 解析 SDLC 各階段的指定模型鏈(get {stage}、list、resolve {stage} 印出目前 CLI 可用的第一個模型);專案 .jsc/models 優先於 $JSC_HOME/models.conf,格式見 references/model-tags.md

Skills 目錄

呼叫方式:Claude / Antigravity /jsc-cli:{name};Codex ${name};Copilot / Kiro 描述需求自動觸發。

models

讀取各已安裝 CLI 可使用的模型並加上能力標籤(references/model-tags.md),列出 SDLC 各階段的必要標籤,並用 tools/model-config.sh 解析各階段的指定模型鏈(專案 .jsc/models 優先於 $JSC_HOME/models.conf)。jsc-sdlc 閘門先看指定模型,沒有指定才退回標籤比對。

deploy

技能庫批次安裝、更新、解除安裝:偵測 CLI → 決策樹選模式 → 每個 CLI 一個 sub agent 執行原生 plugin 指令(統一 marketplace jsc,token jsc-{domain}@jsc)。domain 名單動態取自 plugins/jsc 的 marketplace.json,不硬編碼。

相關 domain

  • jsc-gitea:取得 domain 名單(tools/gitea.sh repos plugins)
  • jsc-hooks:deploy 完成後重新接線 hooks(jsc-hooks:hooks-install)
S
Description
No description provided
Readme
756 KiB
Languages
Shell 100%