c2638668e3
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>
53 lines
3.1 KiB
Bash
Executable File
53 lines
3.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# skill-deploy-drift-guard.sh — SessionStart:全機載入的那套 skill 跟它的正本對不上時,講出來
|
||
#
|
||
# 為什麼存在(2026-08-16 查出來的實況):
|
||
# `arcrun-kbdb-guardrails` 這套 skill 有兩份——
|
||
# 正本 arcrun_harness/.claude/skills/arcrun-kbdb-guardrails/ 有版控
|
||
# 產物 ~/.claude/skills/arcrun-kbdb-guardrails/ **全機每個專案真正載入的是這份**
|
||
# 它們已經分家過一次,而且不是「一份新一份舊」:各自有對方沒有的東西。
|
||
# 家目錄那份長出了一整層 D91 影子表防守,**從來沒進過 git**——差一點就在同步時被蓋掉。
|
||
# 反方向也發生過:kbdb guard 的誤擋 bug 修好過,但修在別的拷貝上,
|
||
# 於是它透過這份沒同步的產物又長回來(Leo/InkStoneCo#23,同一個形狀第 7 次)。
|
||
#
|
||
# 🔑 這支 hook 的用途不是同步,是**讓「它們又不一樣了」這件事有人知道**。
|
||
# 同步是 `arcrun_harness/scripts/skill-deploy.sh` 的事,判斷也在那支裡;
|
||
# 本檔**刻意只是一層殼**:沒有自己的邏輯,就沒有自己的漂移。
|
||
#
|
||
# 三條設計約束:
|
||
# 1. 沒事不出聲——乾淨時完全靜音,才不會被當成背景雜訊而被無視。
|
||
# 2. 從不擋人——SessionStart 一律 exit 0,這是通知,不是閘。
|
||
# 3. 環境不在就安靜退場——沒有 harness repo(雲端 session、別台機器)不該報錯。
|
||
#
|
||
# ⚠️ 已知範圍限制:本 hook 掛在 InkStoneCo 的 SessionStart,所以只有「在 InkStoneCo 開
|
||
# session」時會檢查。那份 skill 是全機載入的,在別的專案裡編輯它一樣會漂,只是要等
|
||
# 下次有人開 InkStoneCo 才會被指出來。之所以先這樣,是因為改 ~/.claude/settings.json
|
||
# 等於動全機共用框架——那是要 leo 點頭的事,不是這支腳本自己能決定的。
|
||
|
||
set -uo pipefail
|
||
|
||
DEPLOY_SH="${CLAUDE_PROJECT_DIR:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)}/arcrun_harness/scripts/skill-deploy.sh"
|
||
|
||
# 環境不在 → 安靜退場(約束 3)
|
||
[ -f "$DEPLOY_SH" ] || exit 0
|
||
|
||
OUT="$(bash "$DEPLOY_SH" check 2>&1)" && exit 0 # 乾淨 → 一個字都不印(約束 1)
|
||
|
||
# 走到這裡代表有漂移。SessionStart 用 stdout 把訊息帶進脈絡。
|
||
cat <<EOF
|
||
🧬 skill 漂移警報:\`arcrun-kbdb-guardrails\` 的正本與「全機實際載入的那份」對不上。
|
||
|
||
$OUT
|
||
|
||
先讀懂標籤再動手,**不要反射性地 deploy**:
|
||
TAMPERED / FORKED 🔴 產物端有版控裡沒有的修改。直接部署會把它們永久刪掉——
|
||
先把那些修改收回正本(2026-08-15 D91 那層防守就是這樣差點沒的)。
|
||
STALE 正本前進了、產物沒跟上 → bash arcrun_harness/scripts/skill-deploy.sh deploy
|
||
EXTRA 產物端多出來的檔。deploy 不會清,要不要刪由人決定。
|
||
|
||
🔑 為什麼這件事值得在開工時就講:這份產物是**模型真正讀到的教材**。
|
||
它落後的時候不會報錯、不會變慢、不會有任何症狀——
|
||
只會安靜地教錯的東西,而且錯得很有權威。
|
||
EOF
|
||
exit 0
|