feat: 接關 hook + SDD 強制 hook(實作 wishlist 兩項)
§1 接關機制(雙保險): - session-start-recall.sh:SessionStart 自動注入 status 重點 + 快照核實提醒 - /wiki-recall:fallback 命令,hook 失效時手動接關 §2 軟規範 → 硬攔截: - sdd-guard.sh:動 code 檔但無 SDD → exit 2 擋(/sdd-check 自動版) - pre-write-guard.sh:專案自訂禁令骨架(預設停用) - settings.json:掛 SessionStart + PreToolUse 配套:install.sh 下載 hooks/settings(settings 比照 CLAUDE.md 不覆蓋); README/CLAUDE.md 補文件 + 誠實限制聲明。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -34,6 +34,7 @@ create_dir "docs/5-records/test-reports"
|
||||
create_dir "docs/6-user"
|
||||
create_dir ".claude/wiki"
|
||||
create_dir ".claude/commands"
|
||||
create_dir ".claude/hooks"
|
||||
|
||||
# ── 檔案(從 repo 下載,只在不存在時)──────────────
|
||||
|
||||
@@ -58,8 +59,15 @@ download_if_missing ".claude/wiki/decisions-summary.md" "$REPO_URL/.claude/wiki/
|
||||
download_if_missing ".claude/commands/wiki-init.md" "$REPO_URL/.claude/commands/wiki-init.md"
|
||||
download_if_missing ".claude/commands/wiki-capture.md" "$REPO_URL/.claude/commands/wiki-capture.md"
|
||||
download_if_missing ".claude/commands/wiki-update.md" "$REPO_URL/.claude/commands/wiki-update.md"
|
||||
download_if_missing ".claude/commands/wiki-recall.md" "$REPO_URL/.claude/commands/wiki-recall.md"
|
||||
download_if_missing ".claude/commands/sdd-check.md" "$REPO_URL/.claude/commands/sdd-check.md"
|
||||
|
||||
# hooks(軟規範 → 硬攔截。下載後補執行權限)
|
||||
download_if_missing ".claude/hooks/session-start-recall.sh" "$REPO_URL/.claude/hooks/session-start-recall.sh"
|
||||
download_if_missing ".claude/hooks/sdd-guard.sh" "$REPO_URL/.claude/hooks/sdd-guard.sh"
|
||||
download_if_missing ".claude/hooks/pre-write-guard.sh" "$REPO_URL/.claude/hooks/pre-write-guard.sh"
|
||||
chmod +x .claude/hooks/*.sh 2>/dev/null || true
|
||||
|
||||
# docs/README.md(分類地圖)
|
||||
download_if_missing "docs/README.md" "$REPO_URL/docs/README.md"
|
||||
|
||||
@@ -70,6 +78,13 @@ else
|
||||
SKIPPED+=("CLAUDE.md (已存在,請手動加入 wiki 讀取順序區塊)")
|
||||
fi
|
||||
|
||||
# .claude/settings.json:只在完全不存在時建立(比照 CLAUDE.md,不覆蓋既有設定)
|
||||
if [ ! -f ".claude/settings.json" ]; then
|
||||
download_if_missing ".claude/settings.json" "$REPO_URL/.claude/settings.json"
|
||||
else
|
||||
SKIPPED+=(".claude/settings.json (已存在,請手動加入 hooks 區塊)")
|
||||
fi
|
||||
|
||||
# ── 輸出結果 ──────────────────────────────────────
|
||||
|
||||
echo ""
|
||||
@@ -105,6 +120,21 @@ if [ -f "CLAUDE.md" ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# 如果 settings.json 已存在,提醒手動加入 hooks 區塊
|
||||
if [ -f ".claude/settings.json" ]; then
|
||||
if ! grep -q "session-start-recall.sh" .claude/settings.json; then
|
||||
echo ""
|
||||
echo "📌 .claude/settings.json 已存在但缺少 hooks。"
|
||||
echo " 請手動把以下 hooks 合併進去(已有設定請保留):"
|
||||
echo ""
|
||||
echo ' "SessionStart": [{ "matcher": "startup|resume|clear",'
|
||||
echo ' "hooks": [{ "type": "command", "command": ".claude/hooks/session-start-recall.sh" }] }],'
|
||||
echo ' "PreToolUse": [{ "matcher": "Write|Edit",'
|
||||
echo ' "hooks": [{ "type": "command", "command": ".claude/hooks/sdd-guard.sh" },'
|
||||
echo ' { "type": "command", "command": ".claude/hooks/pre-write-guard.sh" }] }]'
|
||||
fi
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "🚀 下一步:在 Claude Code 對話裡執行:"
|
||||
echo " /wiki-init"
|
||||
|
||||
Reference in New Issue
Block a user