收攏 html-export 與 wiki-to-issue 的 frontmatter 語法修正 #38

Merged
jiantw83 merged 2 commits from feat/cli-hook-rewire/main into develop 2026-09-01 00:58:41 +00:00
Member

摘要

  • 需求描述:修正 codex、copilot、antigravity、kiro 四支 CLI 的 hook 接線。四支都有能介入的 pre-tool 事件,過去接錯位置,導致版本前置檢查與部署後重啟閘門長期完全失效。同批修掉 6 支技能因 YAML 純量語法而被靜默丟棄的缺陷。
  • 計畫名稱:無
  • 計畫頁:無
  • 分析頁:無

變更內容

檔案 為什麼改
skills/{技能}/SKILL.md description 的未加引號 YAML 純量含「冒號加空白」,Antigravity 會靜默丟棄整支技能。整串加單引號,文字逐字未變
三份 manifest 版本同步

設計重點

  • 這個缺陷不會報錯:34 支技能 Antigravity 只認 28 支,沒有任何錯誤訊息,只有逐檔比對才發現得了。
  • 為什麼加引號而不是改標點:準則要求 description 是英文,把冒號換成全形會讓英文句子出現中文標點。
  • 程式層防線已補上:jsc-meta 新增 tools/lint-frontmatter.sh,並進審核檢查清單與 skill-check 的第一組稽核。

測試結果

  • check-behaviors.sh、lint-frontmatter.sh、ste100-lint.sh 對 10 個 domain 全部退出 0。
  • wire-cli.sh smoke codex 退出 0,lines 由腳本自印,接線形狀 26 條斷言。
  • 反證做過多輪:改壞判定、拿掉修法、抽掉 JSC_CLI、用改前版本重組假樹,每一種檢查都抓得到並回非零。
  • 未跑「開新 CLI 行程送最小 Prompt」:這條 PR 合併前,CLI 載入的仍是舊的已安裝副本。

驗證等級

四支 CLI 的接線形狀與觸發驗證程度不同,逐項據實列出:

CLI 形狀 觸發
claude 實證 實證
codex 實證 未驗證
antigravity 實證(agy -p "/hooks" 確認四條全載入) 未驗證,對話 quota 用盡
copilot 未證(沒有唯讀列出管道) 未驗證
kiro 實證(agent validate 加三種反證) 部分實證:agentSpawn、userPromptSubmit 實跑觸發

kiro 的 verdict 是 degraded,理由是 CLI 限制不是接線問題:技能走 ResolveSkill 這個 agent 內部請求,preToolUse 攔不到技能叫用。

尚未做的事

  • write-guard.sh 三種模式與 SDLC 模型鎖在四支非 claude CLI 上尚未接線。那是還沒做,不是驗不過。
  • kiro 的 resources 兩層 glob 能不能修好技能可見性未驗證。

前置 Push Request

  • 無
## 摘要 - 需求描述:修正 codex、copilot、antigravity、kiro 四支 CLI 的 hook 接線。四支都有能介入的 pre-tool 事件,過去接錯位置,導致版本前置檢查與部署後重啟閘門長期完全失效。同批修掉 6 支技能因 YAML 純量語法而被靜默丟棄的缺陷。 - 計畫名稱:無 - 計畫頁:無 - 分析頁:無 ## 變更內容 | 檔案 | 為什麼改 | | --- | --- | | `skills/{技能}/SKILL.md` | description 的未加引號 YAML 純量含「冒號加空白」,Antigravity 會靜默丟棄整支技能。整串加單引號,文字逐字未變 | | 三份 manifest | 版本同步 | ## 設計重點 - 這個缺陷不會報錯:34 支技能 Antigravity 只認 28 支,沒有任何錯誤訊息,只有逐檔比對才發現得了。 - 為什麼加引號而不是改標點:準則要求 description 是英文,把冒號換成全形會讓英文句子出現中文標點。 - 程式層防線已補上:`jsc-meta` 新增 `tools/lint-frontmatter.sh`,並進審核檢查清單與 `skill-check` 的第一組稽核。 ## 測試結果 - `check-behaviors.sh`、`lint-frontmatter.sh`、`ste100-lint.sh` 對 10 個 domain 全部退出 0。 - `wire-cli.sh smoke codex` 退出 0,`lines` 由腳本自印,接線形狀 26 條斷言。 - 反證做過多輪:改壞判定、拿掉修法、抽掉 `JSC_CLI`、用改前版本重組假樹,每一種檢查都抓得到並回非零。 - 未跑「開新 CLI 行程送最小 Prompt」:這條 PR 合併前,CLI 載入的仍是舊的已安裝副本。 ## 驗證等級 四支 CLI 的接線**形狀**與**觸發**驗證程度不同,逐項據實列出: | CLI | 形狀 | 觸發 | | --- | --- | --- | | claude | 實證 | 實證 | | codex | 實證 | 未驗證 | | antigravity | 實證(`agy -p "/hooks"` 確認四條全載入) | 未驗證,對話 quota 用盡 | | copilot | **未證**(沒有唯讀列出管道) | 未驗證 | | kiro | 實證(`agent validate` 加三種反證) | 部分實證:`agentSpawn`、`userPromptSubmit` 實跑觸發 | kiro 的 verdict 是 `degraded`,理由是 CLI 限制不是接線問題:技能走 `ResolveSkill` 這個 agent 內部請求,`preToolUse` 攔不到技能叫用。 ## 尚未做的事 - `write-guard.sh` 三種模式與 SDLC 模型鎖在四支非 claude CLI 上尚未接線。那是還沒做,不是驗不過。 - kiro 的 `resources` 兩層 glob 能不能修好技能可見性未驗證。 ## 前置 Push Request - 無
jiantw83 added 2 commits 2026-09-01 00:57:59 +00:00
What:
- 修正 skills/html-export/SKILL.md 與 skills/wiki-to-issue/SKILL.md frontmatter 裡 description 欄位的 YAML 語法錯誤。
- 兩支技能的 description 整串加上單引號,內部撇號改寫成兩個單引號,內容文字一個字都沒變。
- 同步更新 plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json 三個 manifest 版本號,從 0.1.9 進到 0.2.0(patch 滿 9,依準則進位到 minor)。

Why:
- 兩支 description 都內含「冒號加空白」,屬於未加引號的 YAML plain scalar,違反 YAML 語法規定。
- Antigravity 解析 frontmatter 時當場中斷,整支技能被靜默丟棄,沒有任何錯誤訊息;磁碟上 34 支技能,Antigravity 只認得 28 支。
- 準則要求 description 用英文撰寫,不能把「: 」改成全形冒號迴避語法問題,只能加引號修正。

How:
- 兩支技能的 description 值都加上單引號,內部撇號寫成兩個單引號跳脫,其餘字元不動。
- 用 git show HEAD: 分別取出兩支技能改前的原始值,把改後的單引號純量還原後逐一做字串相等比對,確認逐字相同、字元數一致。
- 執行 ste100-lint.sh、check-behaviors.sh、lint-frontmatter.sh 三支檢查腳本,退出碼皆為 0;git diff --numstat 顯示兩個檔案都只動了 frontmatter 那一行。

Who:
- 本次修到 gitea 技能組的 html-export 技能(把 Wiki 頁面或 Issue 匯出成單一 HTML 檔)與 wiki-to-issue 技能(把 Wiki 頁面轉建成 Issue)。
jiantw83 merged commit 9a57a89f46 into develop 2026-09-01 00:58:41 +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/gitea#38