From e01ec1b3f505cf9fdc7f0d965dbc34bcfe87dbee Mon Sep 17 00:00:00 2001 From: Jeffery Date: Thu, 27 Aug 2026 12:37:04 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix(deploy):=20kiro=20=E6=9C=AC=E5=9C=B0?= =?UTF-8?q?=E8=A4=87=E8=A3=BD=E8=A3=9C=E4=B8=8A=20tools=E3=80=81references?= =?UTF-8?q?=E3=80=81templates=E3=80=81hooks=20=E8=88=87=20plugin.json?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit What: 改寫 `tools/deploy.sh` 的 `kiro_copy()`。原本只複製 `skills/.` 一個目錄,現在同時複製 `tools`、`references`、`templates`、`hooks` 四個子目錄與 `plugin.json`。四個子目錄逐一判斷來源是否存在,存在才複製;`plugin.json` 缺了不算錯誤,函式一律回傳 0。`deploy_kiro()` 印給使用者看的 `note` 訊息也一併改寫,說清楚退路實際複製了哪些內容。 Why: `kiro-cli 2.18.1` 已經沒有 `plugin` 子指令,kiro 只能走本地複製這條退路。過去只複製 `skills/` 還能動,是因為舊版 SKILL.md 沒叫 kiro 跑同伴目錄裡的腳本。2026-08-27 放行的這批技能(cli 0.1.7、sdlc 0.1.9、git 0.0.8、gitea 0.1.5 等)把 `jsc-sdlc/tools/wp-gate.sh owns`、`jsc-gitea/tools/pr-watch.sh`、`jsc-git/tools/base-branch.sh --derive` 寫成 SKILL.md 的完成條件,kiro 於是拿到一份「指令要求跑腳本、腳本卻不在機器上」的技能,`jsc-sdlc:implement` 與 `jsc-git:pr` 會直接卡住,比不更新更糟。缺 `references/` 也讓 `consensus.md`、`branch.md`、`guidelines.md` 在 kiro 上讀不到。 How: 目標路徑維持 `$KIRO_SKILLS/jsc-{domain}/`,跨 plugin 的引用(例如 `jsc-gitea/tools/…`)以 `$KIRO_SKILLS` 為根就解析得到,不必改動任何 SKILL.md。每個子目錄都用「先 `mkdir -p` 目標,再複製 `src/.` 到 `dst/`」的寫法:目標目錄已經存在時,`cp -R src dst/` 會把來源塞進 `dst/{名稱}/{名稱}`,第二次更新就多疊一層。`plugin.json` 以單檔複製處理,讓 `version-guard.sh` 之類的呼叫端查得到本機版本。函式尾端明確 `return 0`,避免 `plugin.json` 不存在時的測試結果變成函式結束碼。 Who: jsc-cli:deploy 技能的 kiro 部署退路。 --- tools/deploy.sh | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/tools/deploy.sh b/tools/deploy.sh index d52a02a..aef581e 100755 --- a/tools/deploy.sh +++ b/tools/deploy.sh @@ -176,11 +176,34 @@ deploy_antigravity() { done } -# plugin 指令不支援時的退路:從本地 clone 複製 skills 目錄。 +# plugin 指令不支援時的退路:從本地 clone 複製整個 plugin 的可用內容。 +# +# 技能文件會直接引用同伴目錄,例如 jsc-sdlc 的 implement 要跑 jsc-sdlc/tools/wp-gate.sh +# 與 jsc-gitea/tools/pr-watch.sh,jsc-sdlc 的 analyze 要讀 references/consensus.md。 +# 這些引用在 SKILL.md 裡是完成條件,不是選配。只複製 skills 目錄,kiro 會拿到一份 +# 要求跑腳本、腳本卻不在機器上的技能,比不更新更糟——所以 tools、references、 +# templates、hooks 與 plugin.json 一併複製。 +# +# 目標路徑刻意維持 $KIRO_SKILLS/jsc-{domain}/,跨 plugin 的引用(jsc-gitea/tools/…) +# 以 $KIRO_SKILLS 為根就解析得到。 +# +# 每個子目錄都用「先 mkdir,再複製 src/. 到 dst/」的寫法:目標目錄已存在時, +# cp -R src dst/ 會把來源塞進 dst/{名稱}/{名稱},第二次更新就多一層。 kiro_copy() { # $1=domain sync_local "$1" - run mkdir -p "$KIRO_SKILLS/jsc-$1" - run cp -R "$LOCAL_DIR/$1/skills/." "$KIRO_SKILLS/jsc-$1/" + dest="$KIRO_SKILLS/jsc-$1" + run mkdir -p "$dest" + run cp -R "$LOCAL_DIR/$1/skills/." "$dest/" + for sub in tools references templates hooks; do + if [ -d "$LOCAL_DIR/$1/$sub" ]; then + run mkdir -p "$dest/$sub" + run cp -R "$LOCAL_DIR/$1/$sub/." "$dest/$sub/" + fi + done + # plugin.json 讓 version-guard.sh 之類的呼叫端查得到本機版本。缺了不算錯誤, + # 只是查不到版本而已,所以不進 run、也不影響整體結束碼。 + [ -f "$LOCAL_DIR/$1/plugin.json" ] && run cp "$LOCAL_DIR/$1/plugin.json" "$dest/plugin.json" + return 0 } # kiro-cli 是否認得 plugin 子指令:一次性偵測,探測本身不印 cmd/exit(不是部署動作, @@ -213,7 +236,7 @@ deploy_kiro() { return 0 fi - printf 'note\tkiro\t%s\n' "此版本 kiro-cli 沒有 plugin 子指令,改走本地複製(git pull 或 clone 後複製 skills 目錄)" + printf 'note\tkiro\t%s\n' "此版本 kiro-cli 沒有 plugin 子指令,改走本地複製(git pull 或 clone 後,複製 skills、tools、references、templates、hooks 與 plugin.json)" for d in $DOMAINS; do case "$MODE" in install|update) kiro_copy "$d" ;; -- 2.53.0 From ebca8883fc1f9dc09ee35ac4991a320b459ea4b1 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Thu, 27 Aug 2026 12:37:04 +0800 Subject: [PATCH 2/2] =?UTF-8?q?chore(version):=20jsc-cli=20=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E6=8E=A8=E9=80=B2=E5=88=B0=200.1.8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit What: 把三份 manifest 的 `version` 從 `0.1.7` 改成 `0.1.8`:`plugin.json`、`.claude-plugin/plugin.json`、`.codex-plugin/plugin.json`。三份只改版本號,其他欄位不動。 Why: `kiro_copy()` 的修正改變了 kiro 實際拿到的檔案內容,各 CLI 要靠版本號才看得出本機落後、才會重新部署。版本不動,已經裝好舊版的機器不會更新,修正等於沒發出去。 How: 三份 manifest 一起改,避免不同 CLI 讀到不一樣的版本。`kiro_copy()` 這次也把 `plugin.json` 複製到 `$KIRO_SKILLS/jsc-cli/`,所以 kiro 上查到的版本會和 master 一致。 Who: jsc-cli 技能組的版本發布。 --- .claude-plugin/plugin.json | 2 +- .codex-plugin/plugin.json | 2 +- plugin.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index b693c4a..3a4b022 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc-cli", - "version": "0.1.7", + "version": "0.1.8", "description": "CLI 偵測、模型能力標籤、子代理派工與技能庫批次部署", "skills": "./skills", "author": { diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index f18890e..54aff02 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc-cli", - "version": "0.1.7", + "version": "0.1.8", "description": "CLI 偵測、模型能力標籤、子代理派工與技能庫批次部署", "skills": "./skills" } diff --git a/plugin.json b/plugin.json index 23e2c5a..20c521e 100644 --- a/plugin.json +++ b/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc-cli", - "version": "0.1.7", + "version": "0.1.8", "description": "CLI 偵測、模型能力標籤、子代理派工與技能庫批次部署", "skills": "./skills/" } -- 2.53.0