{ "hooks": { "PreToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "cmd /c node %CLAUDE_PROJECT_DIR%/.claude/helpers/hook-handler.cjs pre-bash", "timeout": 5000 } ] }, { "matcher": "Write|Edit|MultiEdit", "hooks": [ { "type": "command", "command": "cmd /c node %CLAUDE_PROJECT_DIR%/.claude/helpers/hook-handler.cjs pre-edit", "timeout": 5000 } ] } ], "PostToolUse": [ { "matcher": "Write|Edit|MultiEdit", "hooks": [ { "type": "command", "command": "cmd /c node %CLAUDE_PROJECT_DIR%/.claude/helpers/hook-handler.cjs post-edit", "timeout": 10000 } ] }, { "matcher": "Bash", "hooks": [ { "type": "command", "command": "cmd /c node %CLAUDE_PROJECT_DIR%/.claude/helpers/hook-handler.cjs post-bash", "timeout": 5000 } ] } ], "UserPromptSubmit": [ { "hooks": [ { "type": "command", "command": "cmd /c node %CLAUDE_PROJECT_DIR%/.claude/helpers/hook-handler.cjs route", "timeout": 10000 }, { "type": "command", "shell": "powershell", "statusMessage": "Loading architecture context...", "command": "$f = \"$env:CLAUDE_PROJECT_DIR/graphify-out/GRAPH_REPORT.md\"; if (Test-Path $f) { $c = Get-Content -Raw $f; $o = @{ hookSpecificOutput = @{ hookEventName = 'UserPromptSubmit'; additionalContext = \"=== GRAPHIFY ARCHITECTURE CONTEXT ===`n$c`n=== END GRAPHIFY CONTEXT ===\" } } | ConvertTo-Json -Depth 5 -Compress; Write-Output $o }" } ] } ], "SessionStart": [ { "hooks": [ { "type": "command", "command": "cmd /c node %CLAUDE_PROJECT_DIR%/.claude/helpers/hook-handler.cjs session-restore", "timeout": 15000 }, { "type": "command", "command": "cmd /c node %CLAUDE_PROJECT_DIR%/.claude/helpers/auto-memory-hook.mjs import", "timeout": 8000 }, { "type": "command", "shell": "powershell", "async": true, "statusMessage": "Starting workers and graphify...", "command": "$branch = git branch --show-current; Write-Host \"[Hook] Branch: $branch\"; if (!(Get-NetTCPConnection -LocalPort 37777 -ErrorAction SilentlyContinue)) { Start-Process cmd -ArgumentList '/c','npx','claude-mem','start' -WindowStyle Hidden -ErrorAction SilentlyContinue }; Start-Process claude-flow -ArgumentList 'daemon','start' -WindowStyle Hidden -ErrorAction SilentlyContinue; Start-Process graphify -ArgumentList '--watch' -WindowStyle Minimized -ErrorAction SilentlyContinue; $t=0; while (!(Get-NetTCPConnection -LocalPort 37777 -ErrorAction SilentlyContinue) -and $t -lt 20) { Start-Sleep 1; $t++ }; if (Get-NetTCPConnection -LocalPort 37777 -ErrorAction SilentlyContinue) { Start-Process cmd -ArgumentList '/c','start','\"\"','\"http://localhost:37777\"' -WindowStyle Hidden; Write-Host \"[Hook] Opened claude-mem dashboard\" } else { Write-Host \"[Hook] claude-mem not running on :37777 (needs Bun + plugin install — run 'npx claude-mem install' outside Claude Code)\" }; $graphHtml = \"$env:CLAUDE_PROJECT_DIR\\graphify-out\\graph.html\"; if (Test-Path $graphHtml) { Start-Process cmd -ArgumentList '/c','start','\"\"',\"`\"$graphHtml`\"\" -WindowStyle Hidden; Write-Host \"[Hook] Opened graphify visualization\" }" } ] } ], "SessionEnd": [ { "hooks": [ { "type": "command", "command": "cmd /c node %CLAUDE_PROJECT_DIR%/.claude/helpers/hook-handler.cjs session-end", "timeout": 10000 } ] } ], "Stop": [ { "hooks": [ { "type": "command", "command": "cmd /c node %CLAUDE_PROJECT_DIR%/.claude/helpers/auto-memory-hook.mjs sync", "timeout": 10000 }, { "type": "command", "shell": "powershell", "async": true, "statusMessage": "Updating architecture graph...", "command": "Write-Host \"[Hook] Regenerating graphify...\"; graphify 2>$null; $wshell = New-Object -ComObject WScript.Shell; $wshell.Popup(\"Claude finished. Architecture graph updated.\", 5, \"Claude Code Task Complete\", 64)" } ] } ], "PreCompact": [ { "matcher": "manual", "hooks": [ { "type": "command", "command": "cmd /c node %CLAUDE_PROJECT_DIR%/.claude/helpers/hook-handler.cjs compact-manual" }, { "type": "command", "command": "cmd /c node %CLAUDE_PROJECT_DIR%/.claude/helpers/hook-handler.cjs session-end", "timeout": 5000 } ] }, { "matcher": "auto", "hooks": [ { "type": "command", "command": "cmd /c node %CLAUDE_PROJECT_DIR%/.claude/helpers/hook-handler.cjs compact-auto" }, { "type": "command", "command": "cmd /c node %CLAUDE_PROJECT_DIR%/.claude/helpers/hook-handler.cjs session-end", "timeout": 6000 } ] } ], "SubagentStart": [ { "hooks": [ { "type": "command", "command": "cmd /c node %CLAUDE_PROJECT_DIR%/.claude/helpers/hook-handler.cjs status", "timeout": 3000 } ] } ], "SubagentStop": [ { "hooks": [ { "type": "command", "command": "cmd /c node %CLAUDE_PROJECT_DIR%/.claude/helpers/hook-handler.cjs post-task", "timeout": 5000 } ] } ], "Notification": [ { "hooks": [ { "type": "command", "command": "cmd /c node %CLAUDE_PROJECT_DIR%/.claude/helpers/hook-handler.cjs notify", "timeout": 3000 } ] } ] }, "statusLine": { "type": "command", "command": "sh -c 'exec node \"${CLAUDE_PROJECT_DIR:-.}/.claude/helpers/statusline.cjs\"'" }, "permissions": { "allow": [ "Bash(npx @claude-flow*)", "Bash(npx claude-flow*)", "Bash(node .claude/*)", "mcp__claude-flow__:*" ], "deny": [ "Read(./.env)", "Read(./.env.*)" ] }, "attribution": { "commit": "Co-Authored-By: claude-flow ", "pr": "🤖 Generated with [claude-flow](https://github.com/ruvnet/claude-flow)" }, "env": { "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1", "CLAUDE_FLOW_V3_ENABLED": "true", "CLAUDE_FLOW_HOOKS_ENABLED": "true" }, "claudeFlow": { "version": "3.0.0", "enabled": true, "platform": { "os": "windows", "arch": "x64", "shell": "powershell" }, "modelPreferences": { "default": "claude-opus-4-6", "routing": "claude-haiku-4-5-20251001" }, "agentTeams": { "enabled": true, "teammateMode": "auto", "taskListEnabled": true, "mailboxEnabled": true, "coordination": { "autoAssignOnIdle": true, "trainPatternsOnComplete": true, "notifyLeadOnComplete": true, "sharedMemoryNamespace": "agent-teams" }, "hooks": { "teammateIdle": { "enabled": true, "autoAssign": true, "checkTaskList": true }, "taskCompleted": { "enabled": true, "trainPatterns": true, "notifyLead": true } } }, "swarm": { "topology": "hierarchical-mesh", "maxAgents": 15 }, "memory": { "backend": "hybrid", "enableHNSW": true, "learningBridge": { "enabled": true }, "memoryGraph": { "enabled": true }, "agentScopes": { "enabled": true } }, "neural": { "enabled": true }, "daemon": { "autoStart": false, "workers": [ "map", "audit", "optimize" ], "schedules": { "audit": { "interval": "4h", "priority": "critical" }, "optimize": { "interval": "2h", "priority": "high" } } }, "learning": { "enabled": true, "autoTrain": true, "patterns": [ "coordination", "optimization", "prediction" ], "retention": { "shortTerm": "24h", "longTerm": "30d" } }, "adr": { "autoGenerate": true, "directory": "/docs/adr", "template": "madr" }, "ddd": { "trackDomains": true, "validateBoundedContexts": true, "directory": "/docs/ddd" }, "security": { "autoScan": true, "scanOnEdit": true, "cveCheck": true, "threatModel": true } } }