QuickRouter · 人工操作教材 · 非目标产品 UI / 非模型会话日志
Claude Code hooks 使用 · 配置与操作材料
.claude/settings.json
{
"hooks": {
"PreToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "python3 \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/protect.py"
}
]
}
]
}
}
.claude/hooks/protect.py
import json, os, sys
from pathlib import Path
x = json.load(sys.stdin)
if x.get('tool_name') not in {'Edit', 'Write'}:
sys.exit(0)
root = Path(os.environ.get('CLAUDE_PROJECT_DIR', '.')).resolve()
path = Path(x['tool_input']['file_path'])
path = (root / path).resolve() if not path.is_absolute() else path.resolve()
try:
relative = path.relative_to(root)
except ValueError:
print('This fixture only permits paths inside its project', file=sys.stderr)
sys.exit(2)
if relative.name in {'.env', 'package-lock.json', 'yarn.lock', 'pnpm-lock.yaml'}:
print('Blocked protected fixture: ' + str(relative), file=sys.stderr)
sys.exit(2)