What:依 jsc-meta:skill-check 的稽核結果修正技能與工具——補上每個步驟的可檢核完成條件、 把留在內文的標準輸入輸出流程下放 tools/、修正查表與退碼路由造成的誤判。 Why:稽核發現這些缺失會讓技能在實際執行時走錯分支或靜默通過。 完成條件缺漏是最常被違反的一項;退碼誤判與查表錯誤則會讓良性狀況被當成失敗。 How:逐項對照 references/guidelines.md 的審核檢查清單修正,新增的工具都有 documented exit codes,並以真實執行驗證每條路徑。 Who:jsc-meta:skill-check 例行稽核(2026-08-25)。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
52 lines
3.1 KiB
Bash
Executable File
52 lines
3.1 KiB
Bash
Executable File
#!/usr/bin/env sh
|
||
# ste100-lint.sh — 檢查檔案是否違反 STE100 擬人台灣感規則(可機檢的部分)。
|
||
# 用法: ste100-lint.sh <file|dir> [...]
|
||
# 檢查項目:
|
||
# 1. 中國用語(references/ste100.md 的替換表左欄)
|
||
# 2. 中文句內的半形標點(, ; ! ? 緊鄰中日韓字元)
|
||
# 3. 常見 AI 套話(總的來說、綜上所述、希望這對你有幫助 等)
|
||
# 4. 簡體字(只收沒有繁體正當用法的字,避免誤報)
|
||
# 5. 中文並列項用斜線(半形 / 或全形 / 夾在中日韓字元之間),應改頓號「、」
|
||
# 輸出: {檔案}:{行號}:{類別}:{命中內容};全部通過 exit 0,有命中 exit 1。
|
||
# 限制: 掃 .md 與 .json 檔;程式碼圍欄內的內容可能誤報,人工複核。
|
||
# references/ste100.md 本身跳過——規則文件裡的詞是被討論,不是被使用。
|
||
# 並列斜線會誤報兩類:含中文的路徑或分支名範例(例 feat/報表/P2),
|
||
# 以及英文項目並列(準則允許)。命中後先判斷是不是真的並列項。
|
||
set -u
|
||
TERMS='默認|支持某|兼容|信息|數據庫|服務器|軟件|硬件|網絡|質量|卸載|反饋|視頻|屏幕|鼠標|打印|立馬|靠譜|賦能|閉環|抓手|復盤'
|
||
CLICHES='總的來說|綜上所述|希望這對你有幫助|好問題|在當今|瞬息萬變|標誌著|奠定了基礎|體現了|不僅僅是|讓我們一起'
|
||
# 刻意排除繁體也在用的字(后、台、干、只、里、面、制、志),只留簡化後才出現的字形。
|
||
SIMPLIFIED='应|为|这|说|发|国|过|对|开|关|问|题|东|车|马|鸟|龙|飞|见|无|产|业|务|书|写|学|习|报|纸|认|识|证|际|网|络|计|划|实|现|给|条|约|级|组|织|变|换|电|脑|两|双|单|构|价|钱|众|议|论|传|统|么|儿|们|从|来|时|间|长|门|闻|声|员|图|团|转|输|达|运|进|远|连|边|还|经|该|营|规|则|范|围|参|数|类|结|态|设|备|辑|译|码|库|档'
|
||
hit=0
|
||
# 不帶參數會空跑並回 0,看起來像「全部通過」。這種假通過比不檢查更危險,所以擋掉。
|
||
if [ "$#" -eq 0 ]; then
|
||
echo '用法: ste100-lint.sh <file|dir> [...]' >&2
|
||
echo '沒有給檢查對象。空跑會回 0,看起來像通過,所以這裡直接視為錯誤。' >&2
|
||
exit 2
|
||
fi
|
||
files() {
|
||
for p in "$@"; do
|
||
if [ -d "$p" ]; then
|
||
find "$p" \( -name '*.md' -o -name '*.json' \) \
|
||
-not -path '*/.git/*' -not -path '*/references/ste100.md'
|
||
else
|
||
case "$p" in
|
||
*/references/ste100.md|references/ste100.md) ;;
|
||
*) echo "$p" ;;
|
||
esac
|
||
fi
|
||
done
|
||
}
|
||
check() { # $1=檔案 $2=類別 $3=grep 模式 $4=grep 旗標
|
||
out=$(grep -n"$4" "$3" "$1" 2>/dev/null | sed "s|^|$1:|;s|:\([0-9]*\):|:\1:$2:|")
|
||
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
|
||
check "$f" "簡體字" "$SIMPLIFIED" E
|
||
check "$f" "並列斜線" '[\x{4e00}-\x{9fff}][ ]?[//][ ]?[\x{4e00}-\x{9fff}]' P
|
||
done
|
||
exit $hit
|