feat/ste100-scope-encoding-and-lint
develop
references/ste100.md
references/guidelines.md
tools/ste100-lint.sh
hooks/simplified.txt
plugin.json
.claude-plugin/plugin.json
.codex-plugin/plugin.json
jsc-hooks/hooks/lib.sh
jsc_gitea_sh()
JSC_SIMPLIFIED_FILE
{root}/../hooks/hooks
{root}/../jsc-hooks/hooks
.md
.json
[\x{c2}-\x{f4}][\x{80}-\x{bf}]
sh -n tools/ste100-lint.sh
/tmp/ste100-t/
.sh
3/4
a/b/c
CLAUDE_PLUGIN_ROOT
农
HOME
应
这
说
/root/plugins
README.md
AGENTS.md
references/
templates/
tools/
plugins/sdlc
references/cpm-chart.md:14
What - `references/ste100.md` 新增「適用範圍」與「編碼」兩節,並以表格列出各類輸出是否適用。 - 「機檢」一節補上新的類別清單與文件檔、程式碼檔的分流說明。 - `references/guidelines.md`「語言」第 1 條改寫成「所有非程式碼輸出一律繁體中文、UTF-8、 無亂碼、無簡體字」,並以一行指引指回 `references/ste100.md`。 - 「審核檢查清單」新增一個可勾選項目,涵蓋非程式碼輸出的語言與編碼,且要求機檢全綠。 Why - 舊條文只講「交談與輸出內容」用 STE100 繁中,沒有把程式碼註解、commit 訊息、PR 描述、 wiki 頁這些實際會產出的東西點名,執行時容易各自解讀。 - 編碼要求原本只有基礎紀律裡的一句「UTF-8,無亂碼」,沒有說明什麼算亂碼,也沒有寫明 不得出現簡體字,機檢與人工判讀對不上。 How - 適用範圍用表格逐項標「是」或「否」,並明講程式碼識別字、關鍵字、API 名稱不受限, SKILL.md 維持整份英文。 - 編碼用表格寫要求、內容與常見違規,違規範例直接對應機檢的「亂碼」類別。 - 細節只寫在 `references/ste100.md` 一處,guidelines.md 只留摘要與指引,維持單一真實來源。 Who - 影響所有 jsc 技能的輸出與審核;撰寫技能與跑 `jsc-meta:skill-check` 的人要照新清單檢查。
What - 簡體字表改成優先讀 jsc-hooks 的 `hooks/simplified.txt`,讀不到才退回內建備援字表。 - 新增「亂碼」類別:U+FFFD 替代字元、雙重編碼的 `�`,以及 Latin-1 雙重編碼特徵。 - 掃描範圍加入程式碼檔(sh、js、ts、py、cs、java、go、rb、php、sql、yml、yaml、toml)。 - 檔頭註解補上分流理由,並把本檔自己加進跳過清單。 Why - 字表寫死在本檔,和 hook 端的守門字表各自維護,兩邊遲早不一致;真實來源只該有一份。 - 內建備援不能拿掉:jsc-hooks 不一定裝在這台機器上,單獨 clone plugins/meta 或 CI 只取 一個 repo 都會發生。缺基礎設施就讓簡體字檢查靜靜失效,會把「沒命中」變成假通過。 - 新規則要求所有非程式碼輸出無亂碼、無簡體字,程式碼註解也算,所以檢查得看得到程式碼檔。 How - `simplified_file()` 的搜尋路徑比照 `jsc-hooks/hooks/lib.sh` 的 `jsc_gitea_sh()`:先環境變數 `JSC_SIMPLIFIED_FILE`,再並排存取庫版面,最後已安裝的 plugin 快取版面取版本排序最後一份。 - 字表格式一行一個字,`#` 開頭與空行忽略,串成 grep -E 交替式。 - 分流:`.md` 與 `.json` 跑全部六項;程式碼檔只跑簡體字與亂碼。中國用語、半形標點、AI 套話、 並列斜線這四項在程式碼裡會被英文標點、路徑、URL、正規表示式大量誤報,留著只會讓人忽略輸出。 - 亂碼樣式一律用十六進位跳脫寫,本檔才不會存進真的亂碼字元自己打自己。 Who - 影響跑 `tools/ste100-lint.sh` 的人與 `jsc-meta:skill-check`、`jsc-meta:ste100-sync` 兩支技能。
What - `plugin.json`、`.claude-plugin/plugin.json`、`.codex-plugin/plugin.json` 由 0.1.1 升到 0.1.2。 Why - STE100 規則正文與機檢工具都有變更,安裝端要靠版本號才知道該更新。 How - 跑 `sh tools/sync-skill-manifest.sh /root/plugins/meta`,三份 manifest 一起 bump, README 的「Skills 目錄」無增減。 Who - 影響安裝或更新 jsc-meta 的所有 CLI。
What:把 sync-domains.sh 檔頭註解的簡體字「脏」改成正體「髒」;ste100-lint.sh 的 skip() 新增三個檔案:jsc-hooks 的 simplified.txt、ste100-guard.sh、lang-guard.sh。 Why:「脏」是既有的簡體字,擴充字表後才驗出來,正好證明檢查有效。另外三個檔案 裡的簡體字是被列舉、被討論的對象,不是被使用;掃它們會每次都命中卻永遠改不掉, 久了就會有人乾脆把整個檢查關掉。 How:skip() 沿用既有的 case 比對,同時吃絕對路徑與純檔名兩種寫法,並在註解裡 寫明為什麼要跳過,避免後人誤以為是漏掉。 Who:STE100 語言規則的機檢工具。
No dependencies set.
The note is not visible to the blocked user.
摘要
變更內容
references/ste100.mdreferences/guidelines.mdreferences/ste100.md;「審核檢查清單」新增一個可勾選項目。tools/ste100-lint.shhooks/simplified.txt(讀不到退回內建備援);新增「亂碼」類別;掃描範圍加入程式碼檔並依檔案類型分流檢查項目。plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json設計重點
hooks/simplified.txt(由另一支 PR 新增)。本工具讀不到那個檔時退回內建備援字表,所以兩支 PR 沒有合併順序相依,任一先合併都能運作。jsc-hooks/hooks/lib.sh的jsc_gitea_sh():先環境變數JSC_SIMPLIFIED_FILE,再開發用的並排存取庫版面({root}/../hooks/hooks、{root}/../jsc-hooks/hooks),最後已安裝的 plugin 快取版面(取版本排序最後一份)。.md與.json跑全部六項;程式碼檔只跑簡體字與亂碼。中國用語、半形標點、AI 套話、並列斜線這四項在程式碼裡會被英文標點、檔案路徑、URL、正規表示式大量誤報,全開只會讓人習慣性忽略輸出。tools/ste100-lint.sh加進跳過清單(規則實作裡的字是被討論,不是被使用)。[\x{c2}-\x{f4}][\x{80}-\x{bf}],比只抓 U+00C3 或 U+00E2 開頭涵蓋更廣:中日韓字元被當 Latin-1 重編後,前導字元多半落在 U+00E3 至 U+00E9,而不是 U+00C3。測試結果
sh -n tools/ste100-lint.sh→ exit 0。/tmp/ste100-t/):.md→ 命中「簡體字」,exit 1。.md→ 命中「亂碼」,exit 1。.sh→ 命中「簡體字」,exit 1。.sh→ 命中「亂碼」,exit 1。.sh→ 不命中,exit 0。.md→ 不命中,exit 0。3/4、a/b/c)→ 不命中。CLAUDE_PLUGIN_ROOT指向並排版面,命中只存在於共用字表的字(农)。CLAUDE_PLUGIN_ROOT與HOME指向隔離目錄,找不到共用字表,农不命中,但共同字集(应、这、说)命中結果與共用字表路徑完全一致。JSC_SIMPLIFIED_FILE直接指定路徑亦驗過,行為與並排版面相同。/root/plugins底下所有 domain 的README.md、AGENTS.md、references/、templates/、tools/(54 個對象)跑新舊版本比對,兩邊皆 109 筆命中,新增 0 筆、消失 0 筆。類別分佈:並列斜線 103、半形標點 3、簡體字 1、中國用語 1、AI 套話 1。程式碼檔零命中,擴大掃描範圍沒有造成誤報。唯一的簡體字命中是plugins/sdlc的references/cpm-chart.md:14(「出现」),依分工由另一支 PR 修正,本 PR 未動。前置 Push Request