feat(gitea): wiki 支援 SKILLSET 技能組異動報告頁型 #26

Merged
admin merged 5 commits from feat/skillset-governance/main into develop 2026-08-27 08:54:42 +00:00
Member

PR 描述

摘要

  • 需求描述:使用者提出的 15 條工作規則中,群三(技能組治理)的 R13 要求技能組每次異動都寫一份異動報告。報告頁由 jsc-meta 四支異動技能產出,落地路徑必經 jsc-gitea:wiki,所以本存取庫要先認得 SKILLSET 這個頁型:允許清單、專用環境變數 JSC_WIKI_REPO_SKILLSET 與頁型驗證都要放行它,否則 gitea.sh wiki-repo SKILLSET 會回 unknown wiki type 而 exit 2,報告一行都寫不進去。決策紀錄在 wiki knowledges/QUESTION 的 QUESTION_FB8DF0B5(2026-08-27 兩節共 12 題)。本 PR 是主幹 feat/skillset-governance/main 併回 develop 的釋出 PR,內容為已合併的子功能 PR #25。
  • 計畫名稱:無
  • 計畫頁:無
  • 分析頁:無

變更內容

檔案 為什麼改
tools/gitea.sh resolve_wiki_repo 的允許清單加上 SKILLSET,用法註解同步。不加就是 exit 2,報告寫不進去
skills/wiki/SKILL.md 第 2 步的允許類型清單補上 SKILLSET;description 的呼叫端清單補上 jsc-meta 寫 SKILLSET 頁
tools/check-wiki-rules.sh TYPES 加上 SKILLSET,讓專用變數優先、退回共用變數、不得跨類型代用三項驗證自動涵蓋新頁型。註解裡的「十一種」、「其他八個類型」改成不綁數量的說法
README.md wiki-repo 的用法列與環境變數表補上 SKILLSET,並另立一列說明 JSC_WIKI_REPO_SKILLSET 的雜湊來源
plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json 三份 manifest 同步升版至 0.1.6

設計重點

  • 只加頁型,不改解析規則。 解析順序仍是 JSC_WIKI_REPO_SKILLSET 優先、再退回 JSC_WIKI_REPO、不得跨類型代用,與其他頁型完全一致。新頁型不該帶進新的例外,否則每加一種頁型就要記一條特例。
  • 驗證腳本的註解改成不綁數量。 原本寫「涵蓋全部十一種頁面類型」與「其他八個類型的誘餌值」,兩處都把數字寫死。加一種頁型就要同時改三個地方,漏一個註解就開始騙人。改成「涵蓋 TYPES 列的每一種頁面類型」與「其餘每一個類型」之後,下次加頁型只要動 TYPES 一行。這正是本批同時加進 jsc-meta 稽核清單的流程檢查第 1 項要抓的——文件裡的數字與清單指得到實際內容。
  • 誘餌值機制沿用,不特例處理。 decoys() 會把除受測類型以外的每一個 JSC_WIKI_REPO_{TYPE} 都設成 decoy/{類型},跨類型代用一旦發生,回傳的就是誘餌值。SKILLSET 進了 TYPES 就自動成為別人的誘餌、也自動被別人當誘餌,兩個方向都驗到。
  • 雜湊來源是被改動的 domain 存取庫。 SKILLSET_{HASH} 的 {HASH} 取自 domain 存取庫的 {owner}/{repo},算法與 8 碼、H 前綴規則完全相同,由同一支 tools/hash-id 產生,本存取庫不需要為它另寫算法。
  • 頁內累積、不覆蓋。 每次異動附加一節,要看一支技能改過幾次就在同一頁上翻。這是頁型的內容約定,寫在 jsc-meta 的準則裡;本存取庫只提供讀寫入口,不管內容編排。

測試結果

  • tools/ste100-lint.sh 掃本存取庫全綠。
  • 三份 manifest(plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json)版本一致,皆為 0.1.6。
  • tools/gitea.sh wiki-repo SKILLSET 四種情境實測:只設 JSC_WIKI_REPO_SKILLSET 時回專用值、只設 JSC_WIKI_REPO 時回共用值、兩者都設時專用值優先、兩者都未設時 exit 3。
  • tools/check-wiki-rules.sh 全數通過並印 OK(exit 0),十二種頁型每種三項,含 SKILLSET 的專用變數優先、退回共用變數、不得跨類型代用。
  • 未測試項目:真實 Gitea 站台上實際建立 SKILLSET_{HASH} 頁面並回讀的端到端流程沒跑過。本批驗到的是頁型解析與規則驗證這一層,wiki-put 對這個新頁型的行為與其他頁型共用同一段程式碼,未另外實測。

前置 Push Request

  • 無。本批的跨存取庫依賴方向是別人依賴這裡:jsc-meta 的 SKILLSET_{HASH} 報告要靠本存取庫的允許清單才寫得進去,因此 meta 那支釋出 PR 依賴本 PR,本 PR 自己沒有前置。子功能 PR #25 已合併進主幹 feat/skillset-governance/main,本 PR 只是把主幹併回 develop,沒有未結清的前置 PR。
# PR 描述 ## 摘要 - 需求描述:使用者提出的 15 條工作規則中,群三(技能組治理)的 R13 要求技能組每次異動都寫一份異動報告。報告頁由 `jsc-meta` 四支異動技能產出,落地路徑必經 `jsc-gitea:wiki`,所以本存取庫要先認得 `SKILLSET` 這個頁型:允許清單、專用環境變數 `JSC_WIKI_REPO_SKILLSET` 與頁型驗證都要放行它,否則 `gitea.sh wiki-repo SKILLSET` 會回 `unknown wiki type` 而 exit 2,報告一行都寫不進去。決策紀錄在 wiki `knowledges/QUESTION` 的 `QUESTION_FB8DF0B5`(2026-08-27 兩節共 12 題)。本 PR 是主幹 `feat/skillset-governance/main` 併回 `develop` 的釋出 PR,內容為已合併的子功能 PR #25。 - 計畫名稱:無 - 計畫頁:無 - 分析頁:無 ## 變更內容 | 檔案 | 為什麼改 | | --- | --- | | `tools/gitea.sh` | `resolve_wiki_repo` 的允許清單加上 `SKILLSET`,用法註解同步。不加就是 exit 2,報告寫不進去 | | `skills/wiki/SKILL.md` | 第 2 步的允許類型清單補上 `SKILLSET`;description 的呼叫端清單補上 `jsc-meta` 寫 SKILLSET 頁 | | `tools/check-wiki-rules.sh` | `TYPES` 加上 `SKILLSET`,讓專用變數優先、退回共用變數、不得跨類型代用三項驗證自動涵蓋新頁型。註解裡的「十一種」、「其他八個類型」改成不綁數量的說法 | | `README.md` | `wiki-repo` 的用法列與環境變數表補上 `SKILLSET`,並另立一列說明 `JSC_WIKI_REPO_SKILLSET` 的雜湊來源 | | `plugin.json`、`.claude-plugin/plugin.json`、`.codex-plugin/plugin.json` | 三份 manifest 同步升版至 0.1.6 | ## 設計重點 - **只加頁型,不改解析規則。** 解析順序仍是 `JSC_WIKI_REPO_SKILLSET` 優先、再退回 `JSC_WIKI_REPO`、不得跨類型代用,與其他頁型完全一致。新頁型不該帶進新的例外,否則每加一種頁型就要記一條特例。 - **驗證腳本的註解改成不綁數量。** 原本寫「涵蓋全部十一種頁面類型」與「其他八個類型的誘餌值」,兩處都把數字寫死。加一種頁型就要同時改三個地方,漏一個註解就開始騙人。改成「涵蓋 `TYPES` 列的每一種頁面類型」與「其餘每一個類型」之後,下次加頁型只要動 `TYPES` 一行。這正是本批同時加進 `jsc-meta` 稽核清單的流程檢查第 1 項要抓的——文件裡的數字與清單指得到實際內容。 - **誘餌值機制沿用,不特例處理。** `decoys()` 會把除受測類型以外的每一個 `JSC_WIKI_REPO_{TYPE}` 都設成 `decoy/{類型}`,跨類型代用一旦發生,回傳的就是誘餌值。`SKILLSET` 進了 `TYPES` 就自動成為別人的誘餌、也自動被別人當誘餌,兩個方向都驗到。 - **雜湊來源是被改動的 domain 存取庫。** `SKILLSET_{HASH}` 的 `{HASH}` 取自 domain 存取庫的 `{owner}/{repo}`,算法與 8 碼、`H` 前綴規則完全相同,由同一支 `tools/hash-id` 產生,本存取庫不需要為它另寫算法。 - **頁內累積、不覆蓋。** 每次異動附加一節,要看一支技能改過幾次就在同一頁上翻。這是頁型的內容約定,寫在 `jsc-meta` 的準則裡;本存取庫只提供讀寫入口,不管內容編排。 ## 測試結果 - `tools/ste100-lint.sh` 掃本存取庫全綠。 - 三份 manifest(`plugin.json`、`.claude-plugin/plugin.json`、`.codex-plugin/plugin.json`)版本一致,皆為 0.1.6。 - `tools/gitea.sh wiki-repo SKILLSET` 四種情境實測:只設 `JSC_WIKI_REPO_SKILLSET` 時回專用值、只設 `JSC_WIKI_REPO` 時回共用值、兩者都設時專用值優先、兩者都未設時 exit 3。 - `tools/check-wiki-rules.sh` 全數通過並印 `OK`(exit 0),十二種頁型每種三項,含 `SKILLSET` 的專用變數優先、退回共用變數、不得跨類型代用。 - 未測試項目:真實 Gitea 站台上實際建立 `SKILLSET_{HASH}` 頁面並回讀的端到端流程沒跑過。本批驗到的是頁型解析與規則驗證這一層,`wiki-put` 對這個新頁型的行為與其他頁型共用同一段程式碼,未另外實測。 ## 前置 Push Request - 無。本批的跨存取庫依賴方向是別人依賴這裡:`jsc-meta` 的 `SKILLSET_{HASH}` 報告要靠本存取庫的允許清單才寫得進去,因此 meta 那支釋出 PR 依賴本 PR,本 PR 自己沒有前置。子功能 PR #25 已合併進主幹 `feat/skillset-governance/main`,本 PR 只是把主幹併回 `develop`,沒有未結清的前置 PR。
jiantw83 added 5 commits 2026-08-27 08:52:27 +00:00
What:`tools/gitea.sh` 的 `resolve_wiki_repo()` 允許清單加入 `SKILLSET`,`wiki-repo` 的用法註解同步。`skills/wiki/SKILL.md` 第 2 步的允許頁型補上 `SKILLSET`,同時補上先前漏列的 `CHECK` 與 `REPORT`;`description` 的呼叫端清單補上「`jsc-meta` 的 `SKILLSET` 頁」。

Why:`jsc-meta` 的四支異動技能收尾要把驗證結果寫進 `SKILLSET_{HASH}`,而所有 wiki 讀寫都走這一支技能與這一支腳本。頁型不在允許清單裡,`wiki-repo` 會直接 exit 2,報告一個字也寫不進去。`CHECK` 與 `REPORT` 是另一件事:腳本早就支援,技能的允許清單卻沒補,照技能寫的走會以為那兩種頁型不合法。

How:只加類型名,解析規則不動——`JSC_WIKI_REPO_SKILLSET` 優先,未設定才退回 `JSC_WIKI_REPO`,不做跨類型代用,兩個都沒有仍是 exit 3 交回技能問使用者。雜湊來源是被改動的 domain 存取庫 `{owner}/{repo}`,用的是同一支 `hash-id`,所以這裡不必為它多寫一條特例(`CHECK` 那種主機加帳號的例外才需要)。

Who:`jsc-gitea:wiki` 技能與 `jsc-meta` 四支異動技能的異動報告寫入路徑。
What:`tools/check-wiki-rules.sh` 的 `TYPES` 加入 `SKILLSET`,檔頭的「涵蓋全部十一種頁面類型」改成「涵蓋 `TYPES` 列的每一種頁面類型」,誘餌值那段註解的「其他八個類型」改成「其餘每一個類型」。

Why:驗證清單沒跟上,新頁型的三項判定(專用變數優先、退回共用變數、不得跨類型代用)就一次都沒驗到。註解裡寫死數字更麻煩:每加一種頁型就要記得改兩個數字,忘了改註解就開始騙人——事實上加 `CHECK` 與 `REPORT` 那次就已經漏了一個。

How:只加 `TYPES` 一個字串,三項判定與誘餌值都是照 `TYPES` 展開的,加進去就自動涵蓋,不必另外寫測項。註解一律改成指向 `TYPES` 這個變數,不再寫死數量,日後加頁型只要改一個地方。

Who:`jsc-gitea` 的 wiki 頁型解析驗證,以及日後新增頁面類型的人。
What:`README.md` 兩處增修。`wiki-repo` 的用法說明把允許的 `TYPE` 清單補到十二種(加上 `CHECK`、`REPORT`、`SKILLSET`);環境變數表新增 `JSC_WIKI_REPO_SKILLSET` 一列,寫明對應 `SKILLSET_CONTENTS`、`SKILLSET_{HASH}`(技能組異動報告)與雜湊來源 `{owner}/{repo}`。

Why:README 的類型清單停在九種,`CHECK` 與 `REPORT` 支援了卻沒補上。照 README 設定環境變數的人會以為這幾種頁型沒有專用變數,只能全塞進共用的 `JSC_WIKI_REPO`。

How:`SKILLSET` 單獨列一列而不是併進 `JSC_WIKI_REPO_{TYPE}` 那一行,因為它要多寫雜湊來源;`JSC_WIKI_REPO_{TYPE}` 那一行只補清單,退回規則不動,兩列都保留「不做跨類型代用」這句。

Who:讀 `jsc-gitea` 說明設定 wiki 位置的操作者。
What:`plugin.json`、`.claude-plugin/plugin.json`、`.codex-plugin/plugin.json` 的 `version` 由 0.1.5 改為 0.1.6。

Why:本次 `wiki-repo` 多支援一種頁面類型,`wiki` 技能的允許頁型也跟著補齊,屬於行為變更,版本要跟著往上走,各 CLI 才知道要更新。

How:三份只改 `version` 一個欄位,其餘內容不動,三份保持同一版號。

Who:`jsc-gitea` 外掛的套件描述檔。
Reviewed-on: #25
admin merged commit 8483f8d1bb into develop 2026-08-27 08:54:42 +00:00
admin deleted branch feat/skillset-governance/main 2026-08-27 08:54:42 +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#26