SKILL.md
readonlyread-only
name
git-guardrails-claude-code
description
設定 Claude Code 鉤子,在執行前封鎖危險的 git 指令(push、reset --hard、clean、branch -D 等)。當使用者想要防止破壞性 git 操作、新增 git 安全鉤子,或封鎖 Claude Code 中的 git push/reset 時使用。
設定 Git 安全護欄
設定一個 PreToolUse 鉤子,在 Claude 執行危險 git 指令前攔截並封鎖它們。
會被封鎖的指令
git push(所有變體,包含--force)git reset --hardgit clean -f/git clean -fdgit branch -Dgit checkout ./git restore .
被封鎖時,Claude 會看到一則訊息,告知它沒有權限存取這些指令。
步驟
1. 詢問範圍
詢問使用者:僅安裝於此專案(.claude/settings.json)或所有專案(~/.claude/settings.json)?
2. 複製鉤子腳本
內附腳本位於:scripts/block-dangerous-git.sh
根據範圍複製到目標位置:
- 專案:
.claude/hooks/block-dangerous-git.sh - 全域:
~/.claude/hooks/block-dangerous-git.sh
使用 chmod +x 設定為可執行。
3. 將鉤子加入設定
加入對應的設定檔:
專案(.claude/settings.json):
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-dangerous-git.sh"
}
]
}
]
}
}
全域(~/.claude/settings.json):
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/block-dangerous-git.sh"
}
]
}
]
}
}
如果設定檔已存在,請將鉤子合併到現有的 hooks.PreToolUse 陣列中——不要覆蓋其他設定。
4. 詢問自訂選項
詢問使用者是否要從封鎖清單中新增或移除任何模式。編輯已複製的腳本以進行修改。
5. 驗證
執行快速測試:
echo '{"tool_input":{"command":"git push origin main"}}' | <path-to-script>
應以代碼 2 退出,並在 stderr 中印出 BLOCKED 訊息。






