一句既有敘述因這次改動而失效,已一併修正:技能文件原本寫 current 底下沒有 jsc-cli,刷新之後那條連結會存在。改成講清楚它仍然靠不住——第一次建起那條連結的正是這一輪,沒部署過的機器、或上一輪刷新失敗的機器,那一條不在或還停在舊版。所以技能自己的腳本仍然走外掛基底目錄,只是理由從「那裡沒有」換成「那裡靠不住」。
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
摘要
$JSC_HOME/current這組不帶版本的符號連結是所有跨外掛腳本呼叫的根,但沒有任何東西會更新它們,只有接線腳本會更新其中一條。升版之後連結還指著舊版,技能照字面路徑跑到舊腳本,而失敗無聲。部署收尾改成刷新整組連結。變更內容
tools/deploy.shlink輸出行skills/deploy/SKILL.mdlink行的判讀寫進流程;另修正一句因這次改動而失效的敘述references/behaviors.mddeploy四列跟著更新,可驗證跡象能驗到連結指向正確README.mdtools/deploy.sh那一列補上連結農場行為plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json設計重點
jsc-hooks那一條的特例保留不動——那條有自指風險,必須從實體路徑跑,是另一個主題。plugin.json才算數。 裝到一半的目錄沒有它,挑到會讓連結指向不完整的外掛,而且照樣不報錯。本身是符號連結的那一層也跳過,指過去只是多繞一層,原目標一清就跟著斷。link ... fail,技能文件把它接到degraded。ln -sfn對著實體目錄下手會把連結建進那個目錄裡,農場當場壞掉還不會報錯;改用強制刪除更糟,那是這支腳本沒建過、也可能沒有第二份的內容。判準與接線腳本的守衛一致。current/jsc-hooks底下,先刷新才不會撞上舊版路徑。測試結果
link<TAB>{domain}<TAB>{狀態}<TAB>{連結路徑}<TAB>{指向或原因},狀態五選一:ok、removed、skip、fail、dryrun。第五欄在ok與dryrun時就是指向,呼叫端可以直接取用。-n的 dry-run 實測,基準 CLI 印出每一條連結的預定指向;非基準的 CLI 只印一行link - skip,說明這一輪的基準是誰。JSC_HOME底下實測過,沒有真的跑部署:ok會把刻意改成舊版的連結重指回新版,removed清掉斷連結,skip對實體目錄不動手,fail訊息在取不到版本目錄時出現。lint-scripts.sh、check-behaviors.sh、ste100-lint.sh對這個存放庫都回結束碼 0。註解掃描也回 0。current底下沒有jsc-cli,刷新之後那條連結會存在。改成講清楚它仍然靠不住——第一次建起那條連結的正是這一輪,沒部署過的機器、或上一輪刷新失敗的機器,那一條不在或還停在舊版。所以技能自己的腳本仍然走外掛基底目錄,只是理由從「那裡沒有」換成「那裡靠不住」。前置 Push Request