Files
ISEP/hooks/pending-changes-retired.sh
T
Leo c2638668e3 ISEP 0.1.0:環境設定收成一個 plugin,本機與雲端共用一份
leo 2026-08-20:「同一個 plugin 你用,薄殼也用,保證兩邊同步」
              「我要你幫雲端做薄殼,永遠都有問題,你要做的就是這組設定
                你自己可以 dogfooding」

搬進來:41 支 hook(51 條註冊)/7 支 command/2 支 skill/23 支腳本。
不搬 .env、wiki、docs——那些是知識不是環境。

51 條 hook 路徑全部從 $CLAUDE_PROJECT_DIR/.claude/hooks/ 改成 ${CLAUDE_PLUGIN_ROOT}/hooks/,
零漏網。那正是薄殼一直壞掉的根:雲端 cwd 不是真身,寫死路徑就斷。

尚未驗證:Claude Code 能不能從私有 Gitea repo 裝 marketplace(要憑證)。
下一步就是在本機實際裝一次,通了才動雲端 bootstrap.sh。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 11:41:46 +08:00

67 lines
3.0 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# pending-changes-retired.sh — `pending-changes.md` 已廢除,寫它一律擋下(leo 2026-08-19
#
# leo 原話:
# 「那種形式根本難以回覆,每個都長篇大論也不易閱讀,**而且寫入後不會提醒**,
# 如果要寫入 pending changes,一律改用票,這個檔案廢除,
# 可以改成一張 index 指向票號及連結。」
#
# 🔴 為什麼要有這道閘,而不是只改文件:
# 規則躺在 CLAUDE.mdSDD-LIFECYCLE 裡,已經被證明不夠——
# wiki mistakes 有一整條「以為『規範存在』=『AI 會照做』」。
# 而這個檔的特性讓違規特別難發現:**寫進去不會通知任何人**,
# 所以「寫了沒人擋」與「寫了沒人看」會同時成立,債靜靜地長。
#
# 擋什麼:WriteEditMultiEdit 指向任何 repo 的 `3-specs/pending-changes.md`。
# 不擋什麼:archive/ 底下的存底(那是唯讀歷史,路徑不同)、以及讀取。
#
# 誠實界線(兩條,都要留著):
# ① 它擋的是**這個路徑**。有人另立一個叫 `pending-changes-v2.md` 的檔照樣繞得過——
# 那屬於語意層,這道閘不假裝擋得到。
# ② 它掛在 WriteEditMultiEdit 上,**用 bashheredocsedcat >)寫檔不會經過它**。
# 這不是疏漏是取捨:PreToolUse 攔不到 shell 內部做什麼;要連那條也擋,得改成
# Bash matcher 上的字串比對,而那會把「只是提到這個檔名的句子」一起擋掉
# `inkstone/InkStoneCo#56` 正在處理的就是這個形狀)。
set -euo pipefail
input="$(cat)"
file_path="$(printf '%s' "$input" | python3 -c '
import sys, json
try:
d = json.load(sys.stdin)
print(d.get("tool_input", {}).get("file_path", "") or "")
except Exception:
print("")
' 2>/dev/null || true)"
[ -z "$file_path" ] && exit 0
# archive/ 底下的存底放行(唯讀歷史,不是提案緩衝區)
case "$file_path" in
*/archive/*) exit 0 ;;
esac
case "$file_path" in
*/3-specs/pending-changes.md|3-specs/pending-changes.md|*/pending-changes.md)
cat >&2 <<'MSG'
❌ BLOCKED`pending-changes.md` 已於 2026-08-19 廢除,不准寫入。
leo 廢除它的理由(原話):
「那種形式根本難以回覆,每個都長篇大論也不易閱讀,**而且寫入後不會提醒**。」
要提規格層變更 → **開一張 Gitea 票**,不是寫檔:
· 標題:👤 裁決題:<一句話>
· 標籤:Human s/triage · 指派:Leo
· 內文只要三段:**要你裁的** / **怎麼回**(給選項,能回一個詞最好) / **誠實標記**
· 開完就停下等 leo 回覆——「停下等 confirm」這條沒有變,變的只是它住在票上
🔴 不要把提案正文貼進票裡當長篇大論。長脈絡寫 wiki,票上只留決策題與連結。
原文存底(唯讀):system-dev/docs/3-specs/archive/pending-changes-archive-20260819.md
規則出處:CLAUDE.md「規格變更唯一路徑」、3-specs/SDD-LIFECYCLE.md 第 3 條
MSG
exit 2
;;
esac
exit 0