feat/ste100-scope-encoding-and-lint #20

Merged
admin merged 4 commits from feat/ste100-scope-encoding-and-lint into develop 2026-08-27 01:58:46 +00:00
Member

摘要

  • 需求描述:落地新的語言規則——所有非程式碼輸出必須是繁體中文、UTF-8、無亂碼、無簡體字。範圍涵蓋程式碼註解、commit 訊息、PR 描述、wiki 頁、對使用者的回報、README 與各種文件;程式碼本身(識別字、關鍵字、API 名稱)不受限。規則正文與機檢工具一起更新。
  • 計畫名稱:無
  • 計畫頁:無
  • 分析頁:無

變更內容

檔案 為什麼改
references/ste100.md 新增「適用範圍」表(逐項標明哪些輸出適用、哪些不適用)與「編碼」表(UTF-8、無亂碼、無簡體字,各列常見違規);「機檢」一節補上新的類別清單與文件檔、程式碼檔的分流說明。
references/guidelines.md 「語言」第 1 條改寫成「所有非程式碼輸出一律繁中、UTF-8、無亂碼、無簡體字」,細節以一行指引指回 references/ste100.md;「審核檢查清單」新增一個可勾選項目。
tools/ste100-lint.sh 簡體字表改讀 jsc-hooks 的 hooks/simplified.txt(讀不到退回內建備援);新增「亂碼」類別;掃描範圍加入程式碼檔並依檔案類型分流檢查項目。
plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json 版本 0.1.1 升到 0.1.2,安裝端才知道要更新。

設計重點

  • 機檢簡體字表的真實來源在 plugins/hooks 的 hooks/simplified.txt(由另一支 PR 新增)。本工具讀不到那個檔時退回內建備援字表,所以兩支 PR 沒有合併順序相依,任一先合併都能運作。
  • 備援字表刻意保留。jsc-hooks 不一定裝在這台機器上——單獨 clone plugins/meta、CI 只取一個 repo 都會發生。缺了基礎設施就讓簡體字檢查靜靜失效,會把「沒命中」變成假通過,比不檢查更危險。
  • 字表搜尋路徑比照 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。
    • 含 U+FFFD 的 .md → 命中「亂碼」,exit 1。
    • 含簡體字 .sh → 命中「簡體字」,exit 1。
    • 含 U+FFFD 的 .sh → 命中「亂碼」,exit 1。
    • 純英文 .sh → 不命中,exit 0。
    • 誤報防線:含「后、台、干、只、里、面、制、志」的 .md → 不命中,exit 0。
    • 雙重編碼三種樣式(U+00E4 起頭序列、U+00E2 加 U+0080 序列、U+00EF U+00BF U+00BD)→ 皆命中「亂碼」;正常拉丁文字(重音拉丁字母、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

  • 無
## 摘要 - 需求描述:落地新的語言規則——所有非程式碼輸出必須是繁體中文、UTF-8、無亂碼、無簡體字。範圍涵蓋程式碼註解、commit 訊息、PR 描述、wiki 頁、對使用者的回報、README 與各種文件;程式碼本身(識別字、關鍵字、API 名稱)不受限。規則正文與機檢工具一起更新。 - 計畫名稱:無 - 計畫頁:無 - 分析頁:無 ## 變更內容 | 檔案 | 為什麼改 | | --- | --- | | `references/ste100.md` | 新增「適用範圍」表(逐項標明哪些輸出適用、哪些不適用)與「編碼」表(UTF-8、無亂碼、無簡體字,各列常見違規);「機檢」一節補上新的類別清單與文件檔、程式碼檔的分流說明。 | | `references/guidelines.md` | 「語言」第 1 條改寫成「所有非程式碼輸出一律繁中、UTF-8、無亂碼、無簡體字」,細節以一行指引指回 `references/ste100.md`;「審核檢查清單」新增一個可勾選項目。 | | `tools/ste100-lint.sh` | 簡體字表改讀 jsc-hooks 的 `hooks/simplified.txt`(讀不到退回內建備援);新增「亂碼」類別;掃描範圍加入程式碼檔並依檔案類型分流檢查項目。 | | `plugin.json`、`.claude-plugin/plugin.json`、`.codex-plugin/plugin.json` | 版本 0.1.1 升到 0.1.2,安裝端才知道要更新。 | ## 設計重點 - 機檢簡體字表的真實來源在 plugins/hooks 的 `hooks/simplified.txt`(由另一支 PR 新增)。本工具讀不到那個檔時退回內建備援字表,所以**兩支 PR 沒有合併順序相依**,任一先合併都能運作。 - 備援字表刻意保留。jsc-hooks 不一定裝在這台機器上——單獨 clone plugins/meta、CI 只取一個 repo 都會發生。缺了基礎設施就讓簡體字檢查靜靜失效,會把「沒命中」變成假通過,比不檢查更危險。 - 字表搜尋路徑比照 `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。 - 含 U+FFFD 的 `.md` → 命中「亂碼」,exit 1。 - 含簡體字 `.sh` → 命中「簡體字」,exit 1。 - 含 U+FFFD 的 `.sh` → 命中「亂碼」,exit 1。 - 純英文 `.sh` → 不命中,exit 0。 - 誤報防線:含「后、台、干、只、里、面、制、志」的 `.md` → 不命中,exit 0。 - 雙重編碼三種樣式(U+00E4 起頭序列、U+00E2 加 U+0080 序列、U+00EF U+00BF U+00BD)→ 皆命中「亂碼」;正常拉丁文字(重音拉丁字母、`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 - 無
jiantw83 added 3 commits 2026-08-27 01:44:27 +00:00
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。
jiantw83 added 1 commit 2026-08-27 01:50:44 +00:00
What:把 sync-domains.sh 檔頭註解的簡體字「脏」改成正體「髒」;ste100-lint.sh 的
skip() 新增三個檔案:jsc-hooks 的 simplified.txt、ste100-guard.sh、lang-guard.sh。

Why:「脏」是既有的簡體字,擴充字表後才驗出來,正好證明檢查有效。另外三個檔案
裡的簡體字是被列舉、被討論的對象,不是被使用;掃它們會每次都命中卻永遠改不掉,
久了就會有人乾脆把整個檢查關掉。

How:skip() 沿用既有的 case 比對,同時吃絕對路徑與純檔名兩種寫法,並在註解裡
寫明為什麼要跳過,避免後人誤以為是漏掉。

Who:STE100 語言規則的機檢工具。
admin merged commit 44fce3a68c into develop 2026-08-27 01:58:46 +00:00
admin deleted branch feat/ste100-scope-encoding-and-lint 2026-08-27 01:58:47 +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#20