From 19303ca555509b2987327702ee07422bb04dc5e7 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Thu, 27 Aug 2026 09:42:51 +0800 Subject: [PATCH 1/4] =?UTF-8?q?feat(ste100):=20=E8=AA=9E=E8=A8=80=E8=A6=8F?= =?UTF-8?q?=E5=89=87=E7=B4=8D=E5=85=A5=E9=81=A9=E7=94=A8=E7=AF=84=E5=9C=8D?= =?UTF-8?q?=E8=88=87=E7=B7=A8=E7=A2=BC=E8=A6=81=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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` 的人要照新清單檢查。 --- references/guidelines.md | 3 ++- references/ste100.md | 29 +++++++++++++++++++++++++++-- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/references/guidelines.md b/references/guidelines.md index 2cd4d4b..d9012b5 100644 --- a/references/guidelines.md +++ b/references/guidelines.md @@ -40,7 +40,7 @@ ## 語言 -1. 所有交談與輸出內容使用 STE100 繁體中文,帶擬人台灣感:短句、一句一指令、主動語態、術語一致、台灣用語、全形標點、去 AI 味、直接講重點。完整規則的唯一來源:[`references/ste100.md`](ste100.md)。 +1. **所有非程式碼輸出**一律 STE100 繁體中文、UTF-8、無亂碼、無簡體字,帶擬人台灣感:短句、一句一指令、主動語態、術語一致、台灣用語、全形標點、去 AI 味、直接講重點。範圍涵蓋程式碼註解、commit 訊息、PR 描述、wiki 頁、對使用者的回報、README 與各種文件;程式碼本身(識別字、關鍵字、API 名稱)不受此規則限制。完整適用範圍表、編碼要求與替換表的唯一來源:[`references/ste100.md`](ste100.md)。 2. **技能文件(SKILL.md)整份為英文**:frontmatter 與內文都是。風格比照 STE100:短句、祈使句、術語一致。 3. 技能文件裡「要原樣輸出的繁中字面內容」保留繁中:wiki 狀態字串(例:已分析、未完成)、hook 注入文字、要寫進 wiki 或 commit 的文案。技能執行時產生的 commit 訊息、PR 描述、wiki 頁內容仍依第 1 條輸出繁中。 4. README、AGENTS.md、`templates/`、`references/` 為 STE100 繁體中文。中文並列項用頓號「、」,不用半形「/」;英文項目的並列(CLI 名、頁名前綴)可用「/」。 @@ -144,4 +144,5 @@ - [ ] wiki repo 與 Gitea 認證先讀目前 shell 繼承的環境變數;只有缺值或無法解析時才詢問;頁面類型不得跨用其他 `JSC_WIKI_REPO_{TYPE}` - [ ] 問詢透過 jsc-ask 決策樹規則 - [ ] SKILL.md 整份為英文(要原樣輸出的繁中字面除外);README、AGENTS、templates、references 為 STE100 繁中;UTF-8 無亂碼 +- [ ] 所有非程式碼輸出(程式碼註解、commit 訊息、PR 描述、wiki 頁、回報、文件)為繁體中文、UTF-8、無亂碼、無簡體字,且 `tools/ste100-lint.sh` 對該 domain 全綠 - [ ] 已同步更新該 domain 的 README「Skills 目錄」與三份 manifest 的 version diff --git a/references/ste100.md b/references/ste100.md index ee857db..6143142 100644 --- a/references/ste100.md +++ b/references/ste100.md @@ -4,11 +4,36 @@ jsc 技能組所有交談與文件的語言規則,唯一來源在這裡。基 上游版本:speak-human-tw v1.4.0(2026-07-18)。上游有新版時用 `jsc-meta:ste100-sync` 同步。 +## 適用範圍 + +**所有非程式碼輸出一律適用**。程式碼本身不受限。 + +| 對象 | 適用 | 說明 | +| :-- | :-- | :-- | +| 程式碼註解 | 是 | 含檔頭說明與行內註解 | +| commit 訊息 | 是 | 標題與內文;type 與 scope 仍為英文 | +| PR 描述 | 是 | 標題、各節內文 | +| wiki 頁內容 | 是 | 頁名前綴與範本欄位名維持英文 | +| 對使用者的回報 | 是 | 交談、進度回報、錯誤說明 | +| README、AGENTS.md | 是 | | +| `references/`、`templates/` | 是 | | +| 程式碼識別字、關鍵字、API 名稱 | 否 | 變數、函式、型別、參數、指令、路徑、URL | +| SKILL.md | 否 | 整份英文,規則見 `guidelines.md`「語言」 | + ## 基礎紀律 1. 短句,一句一指令,主動語態。 2. 同一個概念全程用同一個詞,不換詞循環。 -3. UTF-8,無亂碼。 + +## 編碼 + +| 要求 | 內容 | 常見違規 | +| :-- | :-- | :-- | +| UTF-8 | 檔案一律 UTF-8(無 BOM) | Big5、GBK 存檔 | +| 無亂碼 | 不得出現替代字元或雙重編碼殘留 | `�`、`�`、`ä`、`â` 開頭的三字元序列 | +| 無簡體字 | 一律繁體字形 | 应、这、说、国、网、码 | + +亂碼多半來自轉檔或複製貼上,肉眼容易漏掉,交給 `tools/ste100-lint.sh` 的「亂碼」類別擋。 ## 台灣用語 @@ -63,4 +88,4 @@ jsc 技能組所有交談與文件的語言規則,唯一來源在這裡。基 ## 機檢 -可機檢的部分(中國用語、中文句內半形標點、AI 套話)用 `tools/ste100-lint.sh ` 檢查,命中 exit 1。掃描時跳過本檔(規則文件裡的詞是被討論,不是被使用);語感與翻譯腔仍要人工判讀。 +可機檢的部分(中國用語、中文句內半形標點、AI 套話、簡體字、亂碼、並列斜線)用 `tools/ste100-lint.sh ` 檢查,命中 exit 1。`.md` 與 `.json` 跑全部類別;程式碼檔只跑簡體字與亂碼,其餘類別對英文標點與路徑誤報率太高。掃描時跳過本檔(規則文件裡的詞是被討論,不是被使用);語感與翻譯腔仍要人工判讀。 From 7c963b73cf0fe799be675b98e2d2f203d932240e Mon Sep 17 00:00:00 2001 From: Jeffery Date: Thu, 27 Aug 2026 09:43:14 +0800 Subject: [PATCH 2/4] =?UTF-8?q?feat(lint):=20=E6=A9=9F=E6=AA=A2=E6=94=B9?= =?UTF-8?q?=E8=AE=80=E5=85=B1=E7=94=A8=E7=B0=A1=E9=AB=94=E5=AD=97=E8=A1=A8?= =?UTF-8?q?=E3=80=81=E5=8A=A0=E4=BA=82=E7=A2=BC=E9=A1=9E=E5=88=A5=E3=80=81?= =?UTF-8?q?=E6=8E=83=E6=8F=8F=E6=93=B4=E5=8F=8A=E7=A8=8B=E5=BC=8F=E7=A2=BC?= =?UTF-8?q?=E6=AA=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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` 兩支技能。 --- tools/ste100-lint.sh | 97 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 84 insertions(+), 13 deletions(-) diff --git a/tools/ste100-lint.sh b/tools/ste100-lint.sh index 6b8ec8e..e14b889 100755 --- a/tools/ste100-lint.sh +++ b/tools/ste100-lint.sh @@ -7,16 +7,66 @@ # 3. 常見 AI 套話(總的來說、綜上所述、希望這對你有幫助 等) # 4. 簡體字(只收沒有繁體正當用法的字,避免誤報) # 5. 中文並列項用斜線(半形 / 或全形 / 夾在中日韓字元之間),應改頓號「、」 +# 6. 亂碼(U+FFFD 替代字元、Latin-1 雙重編碼殘留) # 輸出: {檔案}:{行號}:{類別}:{命中內容};全部通過 exit 0,有命中 exit 1。 -# 限制: 掃 .md 與 .json 檔;程式碼圍欄內的內容可能誤報,人工複核。 -# references/ste100.md 本身跳過——規則文件裡的詞是被討論,不是被使用。 +# 掃描範圍與分流: +# 文件檔(.md、.json)跑全部六項。 +# 程式碼檔(.sh .js .ts .py .cs .java .go .rb .php .sql .yml .yaml .toml)只跑簡體字與亂碼。 +# 理由: 程式碼註解也要繁中無亂碼,但中國用語、半形標點、AI 套話、並列斜線這四項在程式碼裡 +# 誤報率太高——英文標點、檔案路徑、URL、正規表示式到處都是半形逗號與斜線,識別字也常撞到 +# 替換表左欄。只留簡體字與亂碼,命中就幾乎都是真的。 +# 限制: 程式碼圍欄內的內容可能誤報,人工複核。 +# references/ste100.md 與本檔本身跳過——規則文件與規則實作裡的詞是被討論,不是被使用。 # 並列斜線會誤報兩類:含中文的路徑或分支名範例(例 feat/報表/P2), # 以及英文項目並列(準則允許)。命中後先判斷是不是真的並列項。 set -u TERMS='默認|支持某|兼容|信息|數據庫|服務器|軟件|硬件|網絡|質量|卸載|反饋|視頻|屏幕|鼠標|打印|立馬|靠譜|賦能|閉環|抓手|復盤' CLICHES='總的來說|綜上所述|希望這對你有幫助|好問題|在當今|瞬息萬變|標誌著|奠定了基礎|體現了|不僅僅是|讓我們一起' +# 亂碼特徵,全部用十六進位跳脫寫,本檔才不會存進真的亂碼字元自己打自己: +# \x{fffd} 替代字元,轉檔失敗留下的痕跡 +# \x{ef}\x{bf}\x{bd} U+FFFD 本身又被雙重編碼一次(顯示成 �) +# [\x{c2}-\x{f4}][\x{80}-\x{bf}] +# 雙重編碼特徵:UTF-8 位元組被當 Latin-1 解讀再存回去,原本的前導位元組變成 +# U+00C2–U+00F4 的拉丁字母(Ã、â、ä),後面緊跟著本來的續接位元組 U+0080–U+00BF。 +# 兩者相連在正常文字裡幾乎不會出現,所以誤報極低;只寫 à 或 â 開頭會漏掉中日韓 +# 字元最常見的 中 這一類。 +GARBLED='\x{fffd}|\x{ef}\x{bf}\x{bd}|[\x{c2}-\x{f4}][\x{80}-\x{bf}]' +# 簡體字表的真實來源是 jsc-hooks 的 hooks/simplified.txt(ste100-guard.sh 共用同一份)。 +# 讀不到就退回下面的內建備援字表。備援不能拿掉: jsc-hooks 不一定裝在這台機器上(單獨 clone +# plugins/meta、CI 只取一個 repo 都會發生),缺了基礎設施就讓簡體字檢查靜靜失效,會把「沒命中」 +# 變成假通過,比不檢查更危險。 # 刻意排除繁體也在用的字(后、台、干、只、里、面、制、志),只留簡化後才出現的字形。 -SIMPLIFIED='应|为|这|说|发|国|过|对|开|关|问|题|东|车|马|鸟|龙|飞|见|无|产|业|务|书|写|学|习|报|纸|认|识|证|际|网|络|计|划|实|现|给|条|约|级|组|织|变|换|电|脑|两|双|单|构|价|钱|众|议|论|传|统|么|儿|们|从|来|时|间|长|门|闻|声|员|图|团|转|输|达|运|进|远|连|边|还|经|该|营|规|则|范|围|参|数|类|结|态|设|备|辑|译|码|库|档' +SIMPLIFIED_FALLBACK='应|为|这|说|发|国|过|对|开|关|问|题|东|车|马|鸟|龙|飞|见|无|产|业|务|书|写|学|习|报|纸|认|识|证|际|网|络|计|划|实|现|给|条|约|级|组|织|变|换|电|脑|两|双|单|构|价|钱|众|议|论|传|统|么|儿|们|从|来|时|间|长|门|闻|声|员|图|团|转|输|达|运|进|远|连|边|还|经|该|营|规|则|范|围|参|数|类|结|态|设|备|辑|译|码|库|档' + +# 找共用字表。搜尋路徑比照 jsc-hooks/hooks/lib.sh 的 jsc_gitea_sh(): +# 先環境變數,再開發用的並排存取庫版面,最後已安裝的 plugin 快取版面。 +simplified_file() { + if [ -n "${JSC_SIMPLIFIED_FILE:-}" ] && [ -f "$JSC_SIMPLIFIED_FILE" ]; then + printf '%s\n' "$JSC_SIMPLIFIED_FILE"; return 0 + fi + _root="${CLAUDE_PLUGIN_ROOT:-$(dirname "$0")/..}" + # 開發用的並排存取庫版面:{workspace}/meta 旁邊就是 {workspace}/hooks + for _c in "$_root/../hooks/hooks/simplified.txt" "$_root/../jsc-hooks/hooks/simplified.txt"; do + [ -f "$_c" ] && { printf '%s\n' "$_c"; return 0; } + done + # 已安裝版面:每個 plugin 各有版本目錄,取排序最後的一份(通常即最新版) + _c=$(ls "$_root"/../../jsc-hooks/*/hooks/simplified.txt \ + "$_root"/../../hooks/*/hooks/simplified.txt \ + "$HOME"/.claude/plugins/cache/*/jsc-hooks/*/hooks/simplified.txt 2>/dev/null \ + | sort | tail -n1) + [ -n "$_c" ] && [ -f "$_c" ] && { printf '%s\n' "$_c"; return 0; } + return 1 +} + +SIMPLIFIED='' +SIMPLIFIED_SRC=$(simplified_file || true) +if [ -n "$SIMPLIFIED_SRC" ]; then + # 一行一個字,# 開頭與空行忽略,行內空白去掉,再串成 grep -E 的交替式 + SIMPLIFIED=$(sed 's/#.*//; s/[[:space:]]//g' "$SIMPLIFIED_SRC" \ + | grep -v '^$' | tr '\n' '|' | sed 's/|$//') +fi +[ -n "$SIMPLIFIED" ] || SIMPLIFIED=$SIMPLIFIED_FALLBACK + hit=0 # 不帶參數會空跑並回 0,看起來像「全部通過」。這種假通過比不檢查更危險,所以擋掉。 if [ "$#" -eq 0 ]; then @@ -24,16 +74,31 @@ if [ "$#" -eq 0 ]; then echo '沒有給檢查對象。空跑會回 0,看起來像通過,所以這裡直接視為錯誤。' >&2 exit 2 fi +skip() { # $1=路徑;規則文件與規則實作本身不掃 + case "$1" in + */references/ste100.md|references/ste100.md) return 0 ;; + */tools/ste100-lint.sh|tools/ste100-lint.sh) return 0 ;; + *) return 1 ;; + esac +} +kind() { # $1=路徑;輸出 doc(跑全部六項)或 code(只跑簡體字與亂碼),其餘不掃 + case "$1" in + *.md|*.json) printf 'doc' ;; + *.sh|*.js|*.ts|*.py|*.cs|*.java|*.go|*.rb|*.php|*.sql|*.yml|*.yaml|*.toml) printf 'code' ;; + *) printf '' ;; + esac +} files() { for p in "$@"; do if [ -d "$p" ]; then - find "$p" \( -name '*.md' -o -name '*.json' \) \ - -not -path '*/.git/*' -not -path '*/references/ste100.md' + find "$p" \( \ + -name '*.md' -o -name '*.json' \ + -o -name '*.sh' -o -name '*.js' -o -name '*.ts' -o -name '*.py' \ + -o -name '*.cs' -o -name '*.java' -o -name '*.go' -o -name '*.rb' \ + -o -name '*.php' -o -name '*.sql' -o -name '*.yml' -o -name '*.yaml' \ + -o -name '*.toml' \) -not -path '*/.git/*' else - case "$p" in - */references/ste100.md|references/ste100.md) ;; - *) echo "$p" ;; - esac + echo "$p" fi done } @@ -42,10 +107,16 @@ check() { # $1=檔案 $2=類別 $3=grep 模式 $4=grep 旗標 if [ -n "$out" ]; then printf '%s\n' "$out"; hit=1; fi } for f in $(files "$@"); do - check "$f" "中國用語" "$TERMS" E - check "$f" "半形標點" '[\x{4e00}-\x{9fff}][,;!?]|[,;][\x{4e00}-\x{9fff}]' P - check "$f" "AI 套話" "$CLICHES" E + skip "$f" && continue + k=$(kind "$f") + [ -n "$k" ] || continue + if [ "$k" = doc ]; then + check "$f" "中國用語" "$TERMS" E + check "$f" "半形標點" '[\x{4e00}-\x{9fff}][,;!?]|[,;][\x{4e00}-\x{9fff}]' P + check "$f" "AI 套話" "$CLICHES" E + check "$f" "並列斜線" '[\x{4e00}-\x{9fff}][ ]?[//][ ]?[\x{4e00}-\x{9fff}]' P + fi check "$f" "簡體字" "$SIMPLIFIED" E - check "$f" "並列斜線" '[\x{4e00}-\x{9fff}][ ]?[//][ ]?[\x{4e00}-\x{9fff}]' P + check "$f" "亂碼" "$GARBLED" P done exit $hit From 7a2544772fdded14971030f7f281c1b348720f69 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Thu, 27 Aug 2026 09:43:14 +0800 Subject: [PATCH 3/4] =?UTF-8?q?feat(manifest):=20=E4=B8=89=E4=BB=BD=20mani?= =?UTF-8?q?fest=20=E7=89=88=E6=9C=AC=E5=8D=87=E5=88=B0=200.1.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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。 --- .claude-plugin/plugin.json | 2 +- .codex-plugin/plugin.json | 2 +- plugin.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index e408ca7..4ff5472 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc-meta", - "version": "0.1.1", + "version": "0.1.2", "description": "技能組自我管理:新建、更新、刪除技能與技能準則", "skills": "./skills", "author": { diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index 7daa0cc..6181eda 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc-meta", - "version": "0.1.1", + "version": "0.1.2", "description": "技能組自我管理:新建、更新、刪除技能與技能準則", "skills": "./skills" } diff --git a/plugin.json b/plugin.json index cbfc4ad..cc24284 100644 --- a/plugin.json +++ b/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc-meta", - "version": "0.1.1", + "version": "0.1.2", "description": "技能組自我管理:新建、更新、刪除技能與技能準則", "skills": "./skills/" } From 69003a7d2c486c0faced6fc44042b64ec1ca437c Mon Sep 17 00:00:00 2001 From: Jeffery Date: Thu, 27 Aug 2026 09:50:42 +0800 Subject: [PATCH 4/4] =?UTF-8?q?fix(lint):=20=E4=BF=AE=E6=AD=A3=E7=B0=A1?= =?UTF-8?q?=E9=AB=94=E5=AD=97=E4=B8=A6=E6=8A=8A=E8=A6=8F=E5=89=87=E5=AF=A6?= =?UTF-8?q?=E4=BD=9C=E6=9C=AC=E8=BA=AB=E5=8A=A0=E9=80=B2=E8=B7=B3=E9=81=8E?= =?UTF-8?q?=E6=B8=85=E5=96=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit What:把 sync-domains.sh 檔頭註解的簡體字「脏」改成正體「髒」;ste100-lint.sh 的 skip() 新增三個檔案:jsc-hooks 的 simplified.txt、ste100-guard.sh、lang-guard.sh。 Why:「脏」是既有的簡體字,擴充字表後才驗出來,正好證明檢查有效。另外三個檔案 裡的簡體字是被列舉、被討論的對象,不是被使用;掃它們會每次都命中卻永遠改不掉, 久了就會有人乾脆把整個檢查關掉。 How:skip() 沿用既有的 case 比對,同時吃絕對路徑與純檔名兩種寫法,並在註解裡 寫明為什麼要跳過,避免後人誤以為是漏掉。 Who:STE100 語言規則的機檢工具。 --- tools/ste100-lint.sh | 7 ++++++- tools/sync-domains.sh | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/tools/ste100-lint.sh b/tools/ste100-lint.sh index e14b889..f7d59ee 100755 --- a/tools/ste100-lint.sh +++ b/tools/ste100-lint.sh @@ -74,10 +74,15 @@ if [ "$#" -eq 0 ]; then echo '沒有給檢查對象。空跑會回 0,看起來像通過,所以這裡直接視為錯誤。' >&2 exit 2 fi -skip() { # $1=路徑;規則文件與規則實作本身不掃 +skip() { # $1=路徑;規則文件、字表與規則實作本身不掃 + # 這幾個檔案裡的簡體字是被討論、被列舉的對象,不是被使用。掃它們等於自己打自己, + # 每次都命中卻永遠改不掉,久了就會有人把整個檢查關掉。 case "$1" in */references/ste100.md|references/ste100.md) return 0 ;; */tools/ste100-lint.sh|tools/ste100-lint.sh) return 0 ;; + */hooks/simplified.txt|simplified.txt) return 0 ;; + */hooks/ste100-guard.sh|ste100-guard.sh) return 0 ;; + */hooks/lang-guard.sh|lang-guard.sh) return 0 ;; *) return 1 ;; esac } diff --git a/tools/sync-domains.sh b/tools/sync-domains.sh index 5535100..7b4f3df 100755 --- a/tools/sync-domains.sh +++ b/tools/sync-domains.sh @@ -18,7 +18,7 @@ # 結束碼: 0=正本讀到、每個 domain 都在本機,而且每個既有存取庫都更新到最新 # 1=讀不到正本 marketplace 或找不到 gitea.sh(不輸出任何 domain) # 2=正本讀到,但有 domain 沒能取得或 clone 失敗(已輸出其餘 domain) -# 3=每個 domain 都在本機,但有存取庫沒更新到最新:工作區脏而跳過 pull, +# 3=每個 domain 都在本機,但有存取庫沒更新到最新:工作區髒而跳過 pull, # 或 pull 失敗。stderr 會逐一列出這些路徑。**exit 0 才代表「全部最新」**; # 拿 3 當乾淨會讓後續步驟改在落後的檔案上。 # 同時發生時回較嚴重的那個:2 蓋過 3。