Files
claude-code-best-practice/.claude/settings.json
T
2026-03-05 13:05:41 +05:00

337 lines
8.2 KiB
JSON

{
"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__get_post_details",
"mcp__reddit-mcp-server__search_reddit",
"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:wttr.in)"
],
"deny": [],
"ask": [
"Bash(rm *)",
"Bash(rmdir *)",
"Bash(shred *)",
"Bash(unlink *)",
"Bash(dd *)",
"Bash(mkfs *)",
"Bash(fdisk *)",
"Bash(chmod *)",
"Bash(chown *)",
"Bash(git *)",
"Bash(gh *)",
"Bash(npm *)",
"Bash(pip *)",
"Bash(pip3 *)",
"Bash(yarn *)",
"Bash(pnpm *)",
"Bash(docker *)",
"Bash(kubectl *)",
"Bash(firebase *)",
"Bash(gcloud *)",
"Bash(curl *)",
"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,
"disableAllHooks": false,
"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"
}
]
}
],
"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"
}
]
}
],
"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"
}
]
}
]
}
}