fix(deploy): kiro 本地複製補上 tools、references、templates、hooks 與 plugin.json #25

Merged
admin merged 2 commits from fix/kiro-copy-missing-tools into develop 2026-08-27 04:40:10 +00:00
Member

PR 描述

摘要

  • 需求描述:kiro-cli 2.18.1 已經沒有 plugin 子指令,kiro 只能走 deploy.sh 的本地複製退路,而該退路只複製 skills/ 一個目錄。2026-08-27 放行的這批技能把 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 在 kiro 上會卡住,比不更新更糟;缺 references/ 也讓 consensus.md、branch.md、guidelines.md 讀不到。本 PR 讓 kiro_copy() 一併複製 tools、references、templates、hooks 與 plugin.json,並推進 jsc-cli 版本到 0.1.8。
  • 計畫名稱:無
  • 計畫頁:無
  • 分析頁:無

變更內容

檔案 為什麼改
tools/deploy.sh kiro_copy() 補複製 tools、references、templates、hooks 與 plugin.json,讓 kiro 拿到技能實際要跑的腳本與要讀的參考文件;deploy_kiro() 的 note 訊息同步說明退路複製了哪些內容。
plugin.json 版本 0.1.7 → 0.1.8,讓各 CLI 看得出本機落後而重新部署。
.claude-plugin/plugin.json 同上,claude 專用 manifest 的版本保持一致。
.codex-plugin/plugin.json 同上,codex 專用 manifest 的版本保持一致。

設計重點

  • 目標路徑維持 $KIRO_SKILLS/jsc-{domain}/。跨 plugin 的引用(例如 jsc-gitea/tools/pr-watch.sh)以 $KIRO_SKILLS 為根就解析得到,任何 SKILL.md 都不必改。
  • 每個子目錄都採「先 mkdir -p 目標,再複製 src/. 到 dst/」。目標目錄已存在時,cp -R src dst/ 會把來源塞進 dst/{名稱}/{名稱},第二次更新就多疊一層;改成複製 src/. 才能重複執行。
  • 四個子目錄逐一判斷來源是否存在,存在才複製,所以沒有 hooks/ 或 templates/ 的 domain 不會出錯。
  • plugin.json 缺了不算錯誤,只是查不到本機版本,因此不影響 kiro_copy() 的結束碼,函式尾端明確 return 0。
  • 三份 manifest 一起 bump,避免不同 CLI 讀到不一樣的版本。

測試結果

  • sh -n tools/deploy.sh:語法檢查通過。
  • -n dry-run 對 kiro 印出的指令序列正確。
  • 實跑 update kiro 十個 domain,全部回報 result kiro update … ok。~/.kiro/skills/ 底下 jsc-gitea/tools/pr-watch.sh、jsc-sdlc/tools/wp-gate.sh(含 owns)、jsc-git/tools/base-branch.sh(--derive 出現 5 次)都到位。
  • 冪等驗證:連跑第二次後,jsc-sdlc/tools/ 底下仍只有 stage-report.sh 與 wp-gate.sh,沒有多出 tools/tools。
  • jsc-hooks 的 hooks/ 目錄也複製過去了。
  • ~/.kiro/skills/jsc-{sdlc,gitea,git,cli}/plugin.json 的版本分別為 0.1.9、0.1.5、0.0.8、0.1.7,與 master 一致。
  • ste100-lint.sh /root/plugins/cli:全綠。

前置 Push Request

  • 無
# PR 描述 ## 摘要 - 需求描述:`kiro-cli 2.18.1` 已經沒有 `plugin` 子指令,kiro 只能走 `deploy.sh` 的本地複製退路,而該退路只複製 `skills/` 一個目錄。2026-08-27 放行的這批技能把 `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` 在 kiro 上會卡住,比不更新更糟;缺 `references/` 也讓 `consensus.md`、`branch.md`、`guidelines.md` 讀不到。本 PR 讓 `kiro_copy()` 一併複製 `tools`、`references`、`templates`、`hooks` 與 `plugin.json`,並推進 jsc-cli 版本到 0.1.8。 - 計畫名稱:無 - 計畫頁:無 - 分析頁:無 ## 變更內容 | 檔案 | 為什麼改 | | --- | --- | | `tools/deploy.sh` | `kiro_copy()` 補複製 `tools`、`references`、`templates`、`hooks` 與 `plugin.json`,讓 kiro 拿到技能實際要跑的腳本與要讀的參考文件;`deploy_kiro()` 的 `note` 訊息同步說明退路複製了哪些內容。 | | `plugin.json` | 版本 0.1.7 → 0.1.8,讓各 CLI 看得出本機落後而重新部署。 | | `.claude-plugin/plugin.json` | 同上,claude 專用 manifest 的版本保持一致。 | | `.codex-plugin/plugin.json` | 同上,codex 專用 manifest 的版本保持一致。 | ## 設計重點 - 目標路徑維持 `$KIRO_SKILLS/jsc-{domain}/`。跨 plugin 的引用(例如 `jsc-gitea/tools/pr-watch.sh`)以 `$KIRO_SKILLS` 為根就解析得到,任何 SKILL.md 都不必改。 - 每個子目錄都採「先 `mkdir -p` 目標,再複製 `src/.` 到 `dst/`」。目標目錄已存在時,`cp -R src dst/` 會把來源塞進 `dst/{名稱}/{名稱}`,第二次更新就多疊一層;改成複製 `src/.` 才能重複執行。 - 四個子目錄逐一判斷來源是否存在,存在才複製,所以沒有 `hooks/` 或 `templates/` 的 domain 不會出錯。 - `plugin.json` 缺了不算錯誤,只是查不到本機版本,因此不影響 `kiro_copy()` 的結束碼,函式尾端明確 `return 0`。 - 三份 manifest 一起 bump,避免不同 CLI 讀到不一樣的版本。 ## 測試結果 - `sh -n tools/deploy.sh`:語法檢查通過。 - `-n` dry-run 對 kiro 印出的指令序列正確。 - 實跑 `update kiro` 十個 domain,全部回報 `result kiro update … ok`。`~/.kiro/skills/` 底下 `jsc-gitea/tools/pr-watch.sh`、`jsc-sdlc/tools/wp-gate.sh`(含 `owns`)、`jsc-git/tools/base-branch.sh`(`--derive` 出現 5 次)都到位。 - 冪等驗證:連跑第二次後,`jsc-sdlc/tools/` 底下仍只有 `stage-report.sh` 與 `wp-gate.sh`,沒有多出 `tools/tools`。 - `jsc-hooks` 的 `hooks/` 目錄也複製過去了。 - `~/.kiro/skills/jsc-{sdlc,gitea,git,cli}/plugin.json` 的版本分別為 0.1.9、0.1.5、0.0.8、0.1.7,與 master 一致。 - `ste100-lint.sh /root/plugins/cli`:全綠。 ## 前置 Push Request - 無
jiantw83 added 2 commits 2026-08-27 04:37:19 +00:00
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 部署退路。
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 技能組的版本發布。
admin merged commit 7af195b342 into develop 2026-08-27 04:40:10 +00:00
admin deleted branch fix/kiro-copy-missing-tools 2026-08-27 04:40:10 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: plugins/cli#25