技能委派判定的地基:判準文件、機器可讀清單與檢核腳本 #68

Merged
admin merged 2 commits from feat/skill-delegation-spec-and-checker into develop 2026-09-03 06:28:18 +00:00
Member

摘要

  • 需求描述:助理要知道每一支技能能不能交給它代跑,但那份盤點目前只存在於一份待辦文件的表格裡。技能組每天在動,手工盤點只會過期,而且過期得無聲無息。這張 PR 把判準寫成一份文件、判定結果寫成一份機器可讀清單、再加一支檢核腳本讓清單與實際技能對得起來。
  • 計畫名稱:無
  • 計畫頁:無
  • 分析頁:無

變更內容

檔案 為什麼改
references/delegate-criteria.md 判定決策樹的五題與四種結論各自的必填欄位。四支技能異動技能共用這一份
tools/delegate-spec.tsv 判定結果,一支技能一列,十一個欄位。註解檔頭說明每一欄的意思與可填值
tools/check-delegate.sh 比對清單與實際技能,缺列、多列與必填欄位空著算缺失
三份 manifest 版號 0.3.1 升到 0.3.2

設計重點

  • 為什麼要有這張表:手工盤點會無聲過期。 這一天就有三件事栽在這上面——照舊版資訊列的待辦白列了;一份技能文件寫著雜湊值取 8 碼,工具早就改用 40 碼;另一份技能文件描述的路徑家族已經不存在。待辦文件的 E 表自己也寫著「技能組每天在動,手工盤點只會過期」。
  • 技能名分成兩欄,形狀跟技能清單工具的輸出一致,比對時直接取前兩欄。版本號是 domain 層級的,分欄之後比對也更直接。
  • 初始 35 列依既有盤點種入,來源欄標 seed。 代表還沒正式走過決策樹、待複核。技能有異動時就地走一次決策樹再轉成 judged。這樣本輪就有完整清單可用,不必現場判 35 次。
  • seed 與版本落後都只印提示,不影響結束碼。 版本號是 domain 層級,同 domain 改一支技能其餘技能也會被標到;當成缺失的話每次發版整個 domain 都亮紅,提示很快就會被當成雜訊忽略。
  • 「留在人手上的那一半」是切片交與條件式交的必填欄位。 少了它,助理下一輪會把整支技能當成可交的一路跑完。不交也要留一列並寫理由,否則下次分不出「判過決定不交」與「還沒判」。
  • next 每一列都要填,包含不交的。 不交講的是助理不代跑,跟「跑完之後該接什麼」無關。
  • 種入時有一支改判:體檢從切片交改成條件式交。 既有盤點把它列成無條件可交,理由是「本來就唯讀,只差沒人定期觸發」。實測推翻了那個理由——唯讀跟能不能無人值守跑是兩回事。體檢呼叫自家腳本走的是 CLI 給的外掛基底目錄,那條路徑帶版本號、進不了允許清單,無人值守的每一輪都會無聲卡在第一支腳本。改判之後條件與條件不成立時的行為都寫進欄位裡。留成切片交的話,下一個實作定期健檢的人會看到一列寫著可以交,然後重演一次。

測試結果

  • 清單與實際技能完全一致:35 列對 35 支,前兩欄取出來做差集為空。
  • 必填欄位齊全:切片交 14 列、條件式交 3 列,共 17 列,「留在人手上的那一半」漏填 0 列。
  • 提示不影響結束碼:35 列全是 seed 的情況回結束碼 0;另外把一列的版本號改成落後值重跑,仍回 0 並印出「要複判」的提示,跑完還原並用 diff 確認一致。
  • 失敗路徑逐條驗過:造一份壞掉的清單,缺列、多列、不交的列卻填了交出方式、next 指到不存在的技能、切片交沒填「留在人手上的那一半」,五種都正確回結束碼 1 並逐項指名。用法錯誤回 2,缺清單或列不出技能回 3。
  • lint-scripts.sh、check-behaviors.sh、ste100-lint.sh、check-link-format.sh 對這個存放庫都回結束碼 0。

這一輪只建地基

四支技能異動技能還沒引用這份判準與這支腳本,例行稽核也還沒把 check-delegate.sh 排進它的檢查群組。接線是另外一輪的事。

讀規格時發現的問題

規格本身有八處模糊或自相矛盾,兩處已在這張 PR 處理,其餘記在待辦文件裡:

  • 既有盤點的兩張表重疊:有五支技能同時出現在「可以交」與「整支不交」兩張表。讀得通(不交的是本體、交的是切片),但表面上是矛盾,種入時一律判切片交。
  • 十一個欄位裡沒有獨立的「條件」欄與「不交理由」欄,但四種結論要求條件式交記條件、不交記理由。借欄處理:條件寫進切片欄、不交理由寫進「留在人手上的那一半」欄,檔頭與判準文件把這個約定寫死,檢核腳本照它判必填。語意上說得通——不交等於整支都留在人手上。
  • 既有盤點有五支技能不在 marketplace 正本上(doc 與 code 兩個 domain)。那是範圍問題不是實作問題,已記進待辦文件。
  • 事件型時間點配重複週期時,間隔的意思沒定義。檔頭定成「重新武裝的最短間隔」。

前置 Push Request

  • 無
## 摘要 - 需求描述:助理要知道每一支技能能不能交給它代跑,但那份盤點目前只存在於一份待辦文件的表格裡。技能組每天在動,手工盤點只會過期,而且過期得無聲無息。這張 PR 把判準寫成一份文件、判定結果寫成一份機器可讀清單、再加一支檢核腳本讓清單與實際技能對得起來。 - 計畫名稱:無 - 計畫頁:無 - 分析頁:無 ## 變更內容 | 檔案 | 為什麼改 | | --- | --- | | `references/delegate-criteria.md` | 判定決策樹的五題與四種結論各自的必填欄位。四支技能異動技能共用這一份 | | `tools/delegate-spec.tsv` | 判定結果,一支技能一列,十一個欄位。註解檔頭說明每一欄的意思與可填值 | | `tools/check-delegate.sh` | 比對清單與實際技能,缺列、多列與必填欄位空著算缺失 | | 三份 manifest | 版號 0.3.1 升到 0.3.2 | ## 設計重點 - **為什麼要有這張表:手工盤點會無聲過期。** 這一天就有三件事栽在這上面——照舊版資訊列的待辦白列了;一份技能文件寫著雜湊值取 8 碼,工具早就改用 40 碼;另一份技能文件描述的路徑家族已經不存在。待辦文件的 E 表自己也寫著「技能組每天在動,手工盤點只會過期」。 - **技能名分成兩欄**,形狀跟技能清單工具的輸出一致,比對時直接取前兩欄。版本號是 domain 層級的,分欄之後比對也更直接。 - **初始 35 列依既有盤點種入,來源欄標 `seed`。** 代表還沒正式走過決策樹、待複核。技能有異動時就地走一次決策樹再轉成 `judged`。這樣本輪就有完整清單可用,不必現場判 35 次。 - **`seed` 與版本落後都只印提示,不影響結束碼。** 版本號是 domain 層級,同 domain 改一支技能其餘技能也會被標到;當成缺失的話每次發版整個 domain 都亮紅,提示很快就會被當成雜訊忽略。 - **「留在人手上的那一半」是切片交與條件式交的必填欄位。** 少了它,助理下一輪會把整支技能當成可交的一路跑完。不交也要留一列並寫理由,否則下次分不出「判過決定不交」與「還沒判」。 - **`next` 每一列都要填,包含不交的。** 不交講的是助理不代跑,跟「跑完之後該接什麼」無關。 - **種入時有一支改判:體檢從切片交改成條件式交。** 既有盤點把它列成無條件可交,理由是「本來就唯讀,只差沒人定期觸發」。實測推翻了那個理由——唯讀跟能不能無人值守跑是兩回事。體檢呼叫自家腳本走的是 CLI 給的外掛基底目錄,那條路徑帶版本號、進不了允許清單,無人值守的每一輪都會無聲卡在第一支腳本。改判之後條件與條件不成立時的行為都寫進欄位裡。留成切片交的話,下一個實作定期健檢的人會看到一列寫著可以交,然後重演一次。 ## 測試結果 - **清單與實際技能完全一致**:35 列對 35 支,前兩欄取出來做差集為空。 - **必填欄位齊全**:切片交 14 列、條件式交 3 列,共 17 列,「留在人手上的那一半」漏填 0 列。 - **提示不影響結束碼**:35 列全是 `seed` 的情況回結束碼 0;另外把一列的版本號改成落後值重跑,仍回 0 並印出「要複判」的提示,跑完還原並用 `diff` 確認一致。 - **失敗路徑逐條驗過**:造一份壞掉的清單,缺列、多列、不交的列卻填了交出方式、`next` 指到不存在的技能、切片交沒填「留在人手上的那一半」,五種都正確回結束碼 1 並逐項指名。用法錯誤回 2,缺清單或列不出技能回 3。 - `lint-scripts.sh`、`check-behaviors.sh`、`ste100-lint.sh`、`check-link-format.sh` 對這個存放庫都回結束碼 0。 ## 這一輪只建地基 四支技能異動技能還沒引用這份判準與這支腳本,例行稽核也還沒把 `check-delegate.sh` 排進它的檢查群組。接線是另外一輪的事。 ## 讀規格時發現的問題 規格本身有八處模糊或自相矛盾,兩處已在這張 PR 處理,其餘記在待辦文件裡: - **既有盤點的兩張表重疊**:有五支技能同時出現在「可以交」與「整支不交」兩張表。讀得通(不交的是本體、交的是切片),但表面上是矛盾,種入時一律判切片交。 - **十一個欄位裡沒有獨立的「條件」欄與「不交理由」欄**,但四種結論要求條件式交記條件、不交記理由。借欄處理:條件寫進切片欄、不交理由寫進「留在人手上的那一半」欄,檔頭與判準文件把這個約定寫死,檢核腳本照它判必填。語意上說得通——不交等於整支都留在人手上。 - **既有盤點有五支技能不在 marketplace 正本上**(`doc` 與 `code` 兩個 domain)。那是範圍問題不是實作問題,已記進待辦文件。 - **事件型時間點配重複週期時,間隔的意思沒定義**。檔頭定成「重新武裝的最短間隔」。 ## 前置 Push Request - 無
jiantw83 added 2 commits 2026-09-03 06:04:37 +00:00
助理要知道每一支技能能不能交給它代跑,但那份盤點目前只存在於一份待辦文件的表格裡。技能組每天在動,手工盤點只會過期,而且過期得無聲無息——今天就有三件事栽在這上面:照舊版資訊列的待辦白列了、一份文件寫著「8 碼」而工具早就改用 40 碼、一份技能文件描述的路徑家族已經不存在。

判準寫成 references 一份文件,四支技能異動技能共用。內容是判定決策樹的五題與四種結論各自的必填欄位。

判定結果寫成 tools 底下一份 TSV,一支技能一列,十一個欄位。作法沿用設定規格表那一套:註解檔頭說明每一欄的意思與可填值、TAB 分隔、空值寫短橫。技能名分成 domain 與 name 兩欄,形狀跟技能清單工具的輸出一致,比對時直接取前兩欄就好。

初始 35 列依既有盤點種入,來源欄標 seed,代表還沒正式走過決策樹、待複核。技能有異動時就地走一次決策樹再轉成 judged。

檢核腳本比對清單與實際技能:缺列或多列算缺失,必填欄位空著也算缺失——切片交與條件式交沒填「留在人手上的那一半」,助理下一輪會把整支技能當成可交的一路跑完。版本號落後與來源是 seed 都只印提示、不影響結束碼,理由寫進腳本註解:版本號是 domain 層級,同 domain 改一支技能其餘技能也會被標到,當成缺失的話每次發版整個 domain 都亮紅,提示很快就會被當成雜訊忽略。

種入時有一支改判。體檢那一支在既有盤點裡是無條件的切片交,實測確認它呼叫自家腳本走的是帶版本號的路徑,那種路徑進不了允許清單,無人值守的每一輪都會無聲卡在第一支腳本,所以改判條件式交,把條件與條件不成立時的行為都寫進去。留成切片交的話,下一個實作定期健檢的人會看到一列寫著可以交,然後重演一次。

這一輪只建地基。四支技能異動技能還沒引用這份判準與這支腳本,例行稽核也還沒把它排進檢查群組,接線另外一輪做。
委派判定的地基要靠版號才傳得到機器端。

三份 manifest 由 sync-skill-manifest.sh 同步,只動版本欄位。
admin merged commit 737e3560f3 into develop 2026-09-03 06:28:18 +00:00
admin deleted branch feat/skill-delegation-spec-and-checker 2026-09-03 06:28:18 +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/meta#68