Files
claude-code-best-practice/.claude/settings.json
T
Shayan Rais bbfa6b8894 settings.json: hoist disableAllHooks to top of file
Move disableAllHooks next to the opening brace so the master toggle
is visible at the top instead of buried below env and
enableAllProjectMcpServers. Behavior unchanged (remains false).

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-18 20:24:10 +05:00

444 lines
11 KiB
JSON

{
"disableAllHooks": false,
"permissions": {
"allow": [
"Edit(*)",
"Write(*)",
"NotebookEdit(*)",
"Bash(*)",
"WebFetch(domain:*)",
"WebSearch",
"mcp__*",
"mcp__ide__*",
"mcp__chrome-devtools__*",
"mcp__claude-in-chrome__*",
"mcp__playwright__*",
"mcp__reddit-mcp-server__search_reddit",
"mcp__reddit-mcp-server__get_post_details",
"mcp__tavily-web-search__tavily_search",
"mcp__tavily-web-search__tavily_extract",
"WebFetch(domain:api.open-meteo.com)",
"WebFetch(domain:raw.githubusercontent.com)",
"WebFetch(domain:docs.anthropic.com)",
"WebFetch(domain:support.claude.com)",
"WebFetch(domain:github.com)",
"WebFetch(domain:api.github.com)",
"WebFetch(domain:json.schemastore.org)",
"WebFetch(domain:claudelog.com)",
"WebFetch(domain:www.eesel.ai)",
"WebFetch(domain:shipyard.build)"
],
"deny": [],
"ask": [
"Bash(rm *)",
"Bash(rmdir *)",
"Bash(shred *)",
"Bash(unlink *)",
"Bash(dd *)",
"Bash(mkfs *)",
"Bash(fdisk *)",
"Bash(chmod *)",
"Bash(chown *)",
"Bash(npm *)",
"Bash(pip *)",
"Bash(pip3 *)",
"Bash(yarn *)",
"Bash(pnpm *)",
"Bash(docker *)",
"Bash(kubectl *)",
"Bash(firebase *)",
"Bash(gcloud *)",
"Bash(wget *)",
"Bash(kill *)",
"Bash(killall *)",
"Bash(pkill *)"
]
},
"spinnerVerbs": {
"mode": "replace",
"verbs": ["Admiring Shayan's code", "Learning from Shayan", "Studying Shayan's patterns", "Copying Shayan's genius", "Thanking Shayan deeply", "Absorbing Shayan's wisdom", "Following Shayan's lead", "Praising Shayan's repo"]
},
"spinnerTipsOverride": {
"tips": [
"This is shayan custom tip#1",
"This is shayan custom tip#2"
],
"excludeDefault": true
},
"plansDirectory": "./reports",
"outputStyle": "Explanatory",
"statusLine": {
"type": "command",
"command": "echo \"shayan's best practice status line\"",
"padding": 0
},
"attribution": {
"commit": "Co-Authored-By: Claude <noreply@anthropic.com>",
"pr": "Generated with [Claude Code](https://claude.ai/code)"
},
"spinnerTipsEnabled": true,
"respectGitignore": true,
"env": {
"CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "80"
},
"enableAllProjectMcpServers": true,
"hooks": {
"PreToolUse": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PROJECT_DIR}/.claude/hooks/scripts/hooks.py",
"timeout": 5000,
"async": true,
"statusMessage": "PreToolUse"
}
]
}
],
"PermissionRequest": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PROJECT_DIR}/.claude/hooks/scripts/hooks.py",
"timeout": 5000,
"async": true,
"statusMessage": "PermissionRequest"
}
]
}
],
"PostToolUse": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PROJECT_DIR}/.claude/hooks/scripts/hooks.py",
"timeout": 5000,
"async": true,
"statusMessage": "PostToolUse"
}
]
}
],
"PostToolUseFailure": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PROJECT_DIR}/.claude/hooks/scripts/hooks.py",
"timeout": 5000,
"async": true,
"statusMessage": "PostToolUseFailure"
}
]
}
],
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PROJECT_DIR}/.claude/hooks/scripts/hooks.py",
"timeout": 5000,
"async": true,
"statusMessage": "UserPromptSubmit"
}
]
}
],
"Notification": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PROJECT_DIR}/.claude/hooks/scripts/hooks.py",
"timeout": 5000,
"async": true,
"statusMessage": "Notification"
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PROJECT_DIR}/.claude/hooks/scripts/hooks.py",
"timeout": 5000,
"async": true,
"statusMessage": "Stop"
}
]
}
],
"SubagentStart": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PROJECT_DIR}/.claude/hooks/scripts/hooks.py",
"timeout": 5000,
"async": true,
"statusMessage": "SubagentStart"
}
]
}
],
"SubagentStop": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PROJECT_DIR}/.claude/hooks/scripts/hooks.py",
"timeout": 5000,
"async": true,
"statusMessage": "SubagentStop"
}
]
}
],
"PreCompact": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PROJECT_DIR}/.claude/hooks/scripts/hooks.py",
"timeout": 5000,
"async": true,
"once": true,
"statusMessage": "PreCompact"
}
]
}
],
"PostCompact": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PROJECT_DIR}/.claude/hooks/scripts/hooks.py",
"timeout": 5000,
"async": true,
"statusMessage": "PostCompact"
}
]
}
],
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PROJECT_DIR}/.claude/hooks/scripts/hooks.py",
"timeout": 5000,
"async": true,
"once": true,
"statusMessage": "SessionStart"
}
]
}
],
"SessionEnd": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PROJECT_DIR}/.claude/hooks/scripts/hooks.py",
"timeout": 5000,
"async": true,
"once": true,
"statusMessage": "SessionEnd"
}
]
}
],
"Setup": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PROJECT_DIR}/.claude/hooks/scripts/hooks.py",
"timeout": 30000,
"async": true,
"statusMessage": "Setup"
}
]
}
],
"TeammateIdle": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PROJECT_DIR}/.claude/hooks/scripts/hooks.py",
"timeout": 5000,
"async": true,
"statusMessage": "TeammateIdle"
}
]
}
],
"TaskCreated": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PROJECT_DIR}/.claude/hooks/scripts/hooks.py",
"timeout": 5000,
"async": true,
"statusMessage": "TaskCreated"
}
]
}
],
"TaskCompleted": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PROJECT_DIR}/.claude/hooks/scripts/hooks.py",
"timeout": 5000,
"async": true,
"statusMessage": "TaskCompleted"
}
]
}
],
"ConfigChange": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PROJECT_DIR}/.claude/hooks/scripts/hooks.py",
"timeout": 5000,
"async": true,
"statusMessage": "ConfigChange"
}
]
}
],
"WorktreeCreate": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PROJECT_DIR}/.claude/hooks/scripts/hooks.py",
"timeout": 5000,
"async": true,
"statusMessage": "WorktreeCreate"
}
]
}
],
"WorktreeRemove": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PROJECT_DIR}/.claude/hooks/scripts/hooks.py",
"timeout": 5000,
"async": true,
"statusMessage": "WorktreeRemove"
}
]
}
],
"InstructionsLoaded": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PROJECT_DIR}/.claude/hooks/scripts/hooks.py",
"timeout": 5000,
"async": true,
"statusMessage": "InstructionsLoaded"
}
]
}
],
"Elicitation": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PROJECT_DIR}/.claude/hooks/scripts/hooks.py",
"timeout": 5000,
"async": true,
"statusMessage": "Elicitation"
}
]
}
],
"ElicitationResult": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PROJECT_DIR}/.claude/hooks/scripts/hooks.py",
"timeout": 5000,
"async": true,
"statusMessage": "ElicitationResult"
}
]
}
],
"StopFailure": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PROJECT_DIR}/.claude/hooks/scripts/hooks.py",
"timeout": 5000,
"async": true,
"statusMessage": "StopFailure"
}
]
}
],
"CwdChanged": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PROJECT_DIR}/.claude/hooks/scripts/hooks.py",
"timeout": 5000,
"async": true,
"statusMessage": "CwdChanged"
}
]
}
],
"FileChanged": [
{
"matcher": ".envrc|.env|.env.local",
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PROJECT_DIR}/.claude/hooks/scripts/hooks.py",
"timeout": 5000,
"async": true,
"statusMessage": "FileChanged"
}
]
}
],
"PermissionDenied": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PROJECT_DIR}/.claude/hooks/scripts/hooks.py",
"timeout": 5000,
"async": true,
"statusMessage": "PermissionDenied"
}
]
}
]
}
}