diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 0e17304..9f9e594 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "isep", "description": "InkStone Environment Plugin —— leo 的 Claude Code 環境唯一真相源:43 支機械閘(53 條註冊,白話盤點見 docs/hooks-inventory.md)、7 支 slash command、2 支 skill、27 支腳本,外加治理規範與標籤真相源。本機與雲端裝同一份,沒有子集。", - "version": "0.3.5", + "version": "0.3.6", "keywords": [ "inkstone", "guardrails", diff --git a/hooks/isep-presence-beacon.sh b/hooks/isep-presence-beacon.sh index 1b187c0..cd75f2c 100755 --- a/hooks/isep-presence-beacon.sh +++ b/hooks/isep-presence-beacon.sh @@ -17,7 +17,17 @@ ROOT="${CLAUDE_PLUGIN_ROOT:-}" VER="$(sed -n 's/.*"version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' \ "$ROOT/.claude-plugin/plugin.json" 2>/dev/null | head -1)" VER="${VER:-未知}" -GATES="$(ls "$ROOT"/hooks/*.sh 2>/dev/null | wc -l | tr -d ' ')" +# 🔴 數「真的被註冊的」,不是數目錄裡有幾個 .sh(leo 的雲端驗收 2026-08-23 抓到): +# 舊寫法 `ls hooks/*.sh` 把 `pre-write-guard.template.sh`(樣板,不是閘) +# 與兩支沒掛註冊的輔助檔一起算進去 ⇒ 報 45,實際註冊 42。 +# 這個數字是 leo 判斷「這個 session 有沒有閘」的唯一介面——**多報就是假綠**。 +# (查過歷史:本檔自 daa1674 建立以來只有那一版,沒有別的分支修過這段。) +GATES="$(grep -oE 'hooks/[a-zA-Z0-9._-]+\.sh' "$ROOT/hooks/hooks.json" 2>/dev/null \ + | sort -u | wc -l | tr -d ' ')" +case "$GATES" in + ''|*[!0-9]*|0) + GATES="$(ls "$ROOT"/hooks/*.sh 2>/dev/null | grep -cv '\.template\.sh$' | tr -d ' ')" ;; +esac MSG="🟢 ISEP v${VER} 已載入(${GATES} 支閘在 ${ROOT})"