develop
master
deploy.sh
probe
pending:{理由}
pending
worklog
tools/check-skill-paths.sh
skill-check
版號 0.3.4 到 0.3.7。
一、抄來的子命令會讓巡檢無限卡死。 技能文件點名的那個子命令,實測在標準輸入是無盡流時會一直等(逾時碼 124),換成同一支腳本的另一個子命令才回 0。那支腳本自己的註解就記著這個坑。照文件措辭填的話,種出來的內建項會在無人值守的巡檢裡永遠卡住,沒有錯誤也沒有輸出。
二、抄來的子命令根本不存在。 跑起來是用法錯誤、結束碼 2。種入那一支只驗腳本檔案在不在,不驗子命令,所以那一筆會當成真指令種進待辦簿,每輪失敗一次,而那一輪沒有人在看。
清單檔頭因此補了一句:這一欄填之前一定要真的跑一次。兩種都不會在種入那一刻報錯。
lint-scripts.sh 掃的是目錄裡的檔案,它證明得了「這個存取庫裡有這支腳本」,卻證明不了「文件裡寫的那條路徑解得出那支腳本」。
lint-scripts.sh
例行稽核本來就有一項要人確認本文點名的腳本,但那一項的前提寫著「腳本存在已經證明過了」,於是人去看目錄底下有沒有那個檔名——有,就過了。覆核的問題本身問錯了,所以錯幾次都不會被發現。
三種判定裡只有「指到不存在的檔案」算缺失。不帶 domain 名的寫法全套技能組有三百多處,判成缺失會讓每個存取庫同時亮紅,而一份全紅的報告跟沒有報告一樣。
lint-scripts
lint-frontmatter
check-behaviors
ste100-lint
check-link-format
check-delegate
check-skill-paths.sh
切片交的那幾支,助理現在只會提醒不會動手,因為沒有東西記得下「那一段唯讀盤點到底要跑什麼」。清單加第十二欄記具體指令,種入那一支有值就拿它當動作、沒值才退回只提醒。 只認三種寫法。一行指令,路徑一律寫成代入點開頭,由種入那一支代進字面絕對根目錄;指令裡不可以出現金錢符號或波浪號,那兩種在無人值守那一輪解不出來也進不了允許清單,會被靜靜擋掉。要標未接線就寫理由,留白的話下一輪分不出是刻意還是漏填。沒有唯讀入口的寫減號。 觸發型與不交的列一律填減號。觸發的意思是呼叫整支技能,這一欄填了指令會讓種入那一支改拿指令當動作,於是整支交出降級成只跑一支腳本,該寫的頁一頁都不會寫,而且看起來完全正常。這條由檢核腳本擋。 逐項回各存放庫核對,不照抄既有盤點的措辭,因而抓到五處對不上實際腳本的地方。 最要緊的一處:既有盤點點名的那支工具腳本要三個參數,其中兩個無人值守那一輪根本拿不到,而且它是唯一會去問遠端的一方。改用同一件事的本機那一半,而那個子命令剛好在閘門腳本「免讀標準輸入」的清單裡。這一點非確認不可:同一支腳本的另一個子命令不在那份清單上,標準輸入是管線又沒人關閉時會一直等,實測會無限卡住。腳本自己的註解就記著這個坑,說工具腳本轉呼叫時曾經整支卡死——那正是先前心跳斷掉的同一種死法。 另一處:既有盤點點名的同步子命令會寫檔,不是唯讀。那一列剛好是觸發型所以填減號、衝突沒落地,但措辭本身是錯的。 七項標成未接線,理由都是要連網要金鑰。連網那一種一過期就讓那一項每輪失敗,或每輪靜靜回報沒事——後者更難查;而純本機讀取本來一輪都不會失敗。先填會連網的,等於用一批每輪報錯的項目把真的發現蓋掉。 還記下一件接線那天要注意的事:查遠端版本那一支永遠回成功,查不到就安靜放行,所以金鑰失效時它會靜靜回報沒有新版。接線要用另一個子命令,那個有「查不出來」這第三種結論。 檢核腳本從四項檢查改成五項。填錯欄位、指到不存在的腳本、用了認不得的代入點都算缺失;標未接線只印提示,那是判過知道還沒接,不是漏填;指到的 domain 本機沒裝也只提示,那是機器少裝一套不是清單填錯,算缺失會讓半套機器每輪亮紅。 五支技能異動流程一併改:寫清單時要問到並寫下這一欄,重判時要一併重問,刪除時要檢查別列有沒有指到一起刪掉的腳本,一次改多支時要注意跨存放庫搬腳本是這一欄最容易過期的地方。
Reviewed-on: #73
實測跑過那一行才發現 worklog-pending.sh 沒有 orphans 這個子命令,跑起來 是用法錯誤、結束碼 2。那支腳本七個子命令全部要先給工作階段雜湊,沒有不帶 參數的盤點入口,掃不出「該寫沒寫」的那幾筆,所以改填 pending 並寫明理由。 檔頭補一句:這一欄填之前一定要真的跑一次,不能照技能文件的措辭抄。同一份 清單上已經踩過兩次——一次是子命令根本不存在,一次是子命令會在標準輸入沒人 關閉時無限等待。兩種都不會在種入那一刻報錯,要等無人值守那一輪才發作,而 那一輪沒有人在看。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
lint-scripts.sh 掃的是 tools/ 與 hooks/ 目錄裡的檔案,它證明得了「這個存取庫 裡有這支腳本」,卻證明不了「文件裡寫的那條路徑解得出那支腳本」。兩件事差 很遠,而中間那道縫剛好放得下一整類缺失。 2026-09-04 實際踩到:一份技能本文把自家腳本寫成不帶前綴的相對路徑,而那支 技能的基底目錄是 skills/{名稱}/,照字面解出來的位置沒有那個檔案,結束碼 127。 人工覆核看的是「tools/ 底下有沒有這支」,有,於是每一輪都過。覆核的問題本身 問錯了,所以錯幾次都不會被發現。 三種判定:指到不存在的檔案算缺失;不帶 domain 名但檔案在這個存取庫底下只算 提示;跨 domain 而那個存取庫不在這台機器上也只算提示。中間那一種為什麼不算 缺失——全套技能組有三百多處那樣寫,判成缺失會讓每個存取庫同時亮紅,而一份 全紅的報告跟沒有報告一樣。先量出來、指得出是哪幾行,改不改由人決定。 跨 domain 的路徑靠 plugins-root.sh 找別的存取庫,推不出來的那幾筆印成提示, 不當缺失:這台機器沒裝,跟路徑寫錯,是兩件事。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
檢核腳本沒人叫等於不存在,所以同一批把它接進第一組、接進步驟六的複跑,也 接進完成條件。 它擺在原本那一項的前面,而原本那一項正是抓不到這類缺失的理由:那一項要人 確認「本文點名的每一支腳本,呼叫端有沒有分流它宣告的每一個結束碼」,前提 寫著「lint-scripts.sh 已經證明腳本存在」。人照著讀,就會去看目錄底下有沒有 那個檔名,而不會去問那條路徑解不解得出來。這一段理由寫進了新那一項的本文, 免得下一輪有人把兩項看成重複的而刪掉一項。 unrooted 與 unknown 兩種提示明寫不得升級成決策樹項目。整套技能組有三百多處 不帶 domain 名的寫法,一次全變成待決議項會把真的缺失蓋掉——比照委派清單檢核 的待複核與版本落後那兩種提示,同樣的處置。 三份 manifest 版號從 0.3.4 升到 0.3.6,跳過中間那一號留給還沒合併的另一張。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
上一輪的清單修正沒趕上合併,這一筆帶著它重新送出。清單是隨外掛一起發佈的 資料檔,助理讀它決定要種哪幾筆內建項,所以內容變了版號就要動——安裝端靠 版號才知道要重新取一次。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
0.3.6 讓給另一張還沒合併的清單修正。那一張要緊——它拿掉一個會讓內建項每輪 失敗的值,該先走;這一張是新增檢核,晚一步沒有代價。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Reviewed-on: #75
三份 manifest 取分支上的較高版號:develop 那邊到 0.3.6,這條分支本來就是為了 讓開那一號才升到 0.3.7,取低的等於把版號往回退。 行為清單第 10 行兩邊各改了同一行的不同地方,合起來留:develop 加的是委派 清單檢核多判一種填錯的 probe、以及修法要回該技能的存取庫核對過再改寫;這條 分支加的是第一組多跑一項腳本路徑檢查。兩件事互不相干,取任一邊都會弄丟另 一邊。外部呼叫那一行 develop 沒動過,直接取分支上的。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Reviewed-on: #74
No dependencies set.
The note is not visible to the blocked user.
摘要
deploy.shclone 的是預設分支,所以沒進 master 的東西這台機器上一輪都用不到。這一批的主軸是「委派清單記得下唯讀盤點的實際指令」,外加一支新的機械檢核。這一批的內容
probepending:{理由}、減號pending、其餘填減號worklog那一格再修一次pending。最後是指令型三筆、pending八筆tools/check-skill-paths.shskill-check第一組接上那支檢核版號 0.3.4 到 0.3.7。
逐項核對攔下來的兩件事
一、抄來的子命令會讓巡檢無限卡死。 技能文件點名的那個子命令,實測在標準輸入是無盡流時會一直等(逾時碼 124),換成同一支腳本的另一個子命令才回 0。那支腳本自己的註解就記著這個坑。照文件措辭填的話,種出來的內建項會在無人值守的巡檢裡永遠卡住,沒有錯誤也沒有輸出。
二、抄來的子命令根本不存在。 跑起來是用法錯誤、結束碼 2。種入那一支只驗腳本檔案在不在,不驗子命令,所以那一筆會當成真指令種進待辦簿,每輪失敗一次,而那一輪沒有人在看。
清單檔頭因此補了一句:這一欄填之前一定要真的跑一次。兩種都不會在種入那一刻報錯。
新檢核補的那道縫
lint-scripts.sh掃的是目錄裡的檔案,它證明得了「這個存取庫裡有這支腳本」,卻證明不了「文件裡寫的那條路徑解得出那支腳本」。例行稽核本來就有一項要人確認本文點名的腳本,但那一項的前提寫著「腳本存在已經證明過了」,於是人去看目錄底下有沒有那個檔名——有,就過了。覆核的問題本身問錯了,所以錯幾次都不會被發現。
三種判定裡只有「指到不存在的檔案」算缺失。不帶 domain 名的寫法全套技能組有三百多處,判成缺失會讓每個存取庫同時亮紅,而一份全紅的報告跟沒有報告一樣。
測試結果
lint-scripts、lint-frontmatter、check-behaviors、ste100-lint、check-link-format、check-delegate。check-skill-paths.sh自己:七種判定情境逐一驗過,結束碼 0、1、2、3 四條路各驗一次,對十二個存取庫全掃一輪零缺失。前置 Push Request
lint-scripts.sh 掃的是 tools/ 與 hooks/ 目錄裡的檔案,它證明得了「這個存取庫 裡有這支腳本」,卻證明不了「文件裡寫的那條路徑解得出那支腳本」。兩件事差 很遠,而中間那道縫剛好放得下一整類缺失。 2026-09-04 實際踩到:一份技能本文把自家腳本寫成不帶前綴的相對路徑,而那支 技能的基底目錄是 skills/{名稱}/,照字面解出來的位置沒有那個檔案,結束碼 127。 人工覆核看的是「tools/ 底下有沒有這支」,有,於是每一輪都過。覆核的問題本身 問錯了,所以錯幾次都不會被發現。 三種判定:指到不存在的檔案算缺失;不帶 domain 名但檔案在這個存取庫底下只算 提示;跨 domain 而那個存取庫不在這台機器上也只算提示。中間那一種為什麼不算 缺失——全套技能組有三百多處那樣寫,判成缺失會讓每個存取庫同時亮紅,而一份 全紅的報告跟沒有報告一樣。先量出來、指得出是哪幾行,改不改由人決定。 跨 domain 的路徑靠 plugins-root.sh 找別的存取庫,推不出來的那幾筆印成提示, 不當缺失:這台機器沒裝,跟路徑寫錯,是兩件事。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>