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>
This commit is contained in:
2026-08-20 11:41:46 +08:00
commit c2638668e3
85 changed files with 11879 additions and 0 deletions
+56
View File
@@ -0,0 +1,56 @@
#!/bin/sh
# worklist-guard.sh — Stop hook**還有未完成的步驟就不准收工寫報告**。
#
# 🔴 leo 2026-08-08 連續兩次點破:
# 「所以你**沒有維持 loop**,而是停下來浪費了時間」
# 「**這樣不行,要解決停止 loop 的問題**」
#
# 病根(誠實的):既有的 self-drive-police 是**事後**勸告——它在我已經停下來之後才響,
# 而我對它的回應是**再寫一段散文**,等於又停一次。**勸告治不了「停」這個動作**,
# 因為停下來寫字正是我回應它的方式。
#
# 治法:把「還沒做完」變成**環境事實**,讓收工這件事在事實上不成立。
# · 開一條鏈之前,先把剩下的步驟寫進 /tmp/.worklist-<session_id>(一行一步)
# · 做完一步就把那行刪掉
# · 只要檔案還有內容 ⇒ 本 hook exit 2 ⇒ **我停不下來,只能繼續做下一步**
#
# 這跟今天立的其他幾道同形狀:**規則被讀到 ≠ 會被執行,要讓環境替我執行。**
# (leo 的母原則:環境邊界取代邏輯判斷。)
#
# 逃生口:鏈真的該中止(撞人閘、前提翻掉、leo 改方向)⇒ 直接刪掉那個檔,
# 並**在回覆裡說明為什麼中止**——留痕,不是默默放掉。
set -eu
SID=$(cat 2>/dev/null | python3 -c '
import sys, json
try: print(json.load(sys.stdin).get("session_id", "") or "nosid")
except Exception: print("nosid")
' 2>/dev/null || echo nosid)
WL="/tmp/.worklist-$SID"
[ -f "$WL" ] || exit 0
# 空白行不算。
# 🔴 2026-08-08 自己踩到:原本寫 `grep -c ... || echo 0`——grep 在 0 命中時**回傳碼非零**,
# 於是 `|| echo 0` 也跑,remaining 變成 "0\n0" ⇒ `-eq` 判斷炸掉 ⇒ **清單空了還是擋**。
# 這是「用 grep 回傳碼當有無」的老坑,改成只認它印出來的數字。
remaining=$(grep -cvE '^[[:space:]]*$' "$WL" 2>/dev/null | head -1)
[ -z "$remaining" ] && remaining=0
[ "$remaining" -eq 0 ] && { rm -f "$WL"; exit 0; }
cat >&2 <<EOF
🔁 Loop 警察:**這條鏈還有 $remaining 步沒做完,現在不是收工的時候。**
【leo 2026-08-08】「所以你**沒有維持 loop**,而是停下來浪費了時間。」
【leo 2026-08-08】「**這樣不行,要解決停止 loop 的問題。**」
還沒做完的:
$(grep -vE '^[[:space:]]*$' "$WL" | sed 's/^/ · /')
**不要寫報告,直接做下一步。** 報告等整條鏈跑完再寫一次就好——
中途每停一次寫一段,就是 leo 說的「停下來浪費時間」。
做完一步 ⇒ 從 $WL 刪掉那一行。
真的要中止(撞人閘/前提翻掉/leo 改方向)⇒ 刪掉整個檔,並在回覆說明為什麼中止。
EOF
exit 2