mirror of
https://github.com/ruvnet/RuVector.git
synced 2026-05-25 15:03:46 +00:00
Added two hooks to .claude/settings.json: 1. SessionEnd: shares session summary (branch, last 5 commits, diff stat) to pi.ruv.io brain. Runs async, won't block session exit. 2. PostToolUse/Bash: after git commit commands, shares the commit message to brain. Only triggers on "git commit", skips all other bash commands. Both hooks use BRAIN_API_KEY env var (fallback to hardcoded key). Added BRAIN_API_KEY and BRAIN_URL to env section. Co-Authored-By: claude-flow <ruv@ruv.net>
334 lines
No EOL
9 KiB
JSON
334 lines
No EOL
9 KiB
JSON
{
|
|
"hooks": {
|
|
"PreToolUse": [
|
|
{
|
|
"matcher": "Bash",
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "node \"${CLAUDE_PROJECT_DIR:-.}/.claude/helpers/hook-handler.cjs\" pre-bash",
|
|
"timeout": 5000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"matcher": "Write|Edit|MultiEdit",
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "node \"${CLAUDE_PROJECT_DIR:-.}/.claude/helpers/hook-handler.cjs\" pre-edit",
|
|
"timeout": 5000
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"PostToolUse": [
|
|
{
|
|
"matcher": "Write|Edit|MultiEdit",
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "node \"${CLAUDE_PROJECT_DIR:-.}/.claude/helpers/hook-handler.cjs\" post-edit",
|
|
"timeout": 10000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"matcher": "Bash",
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "node \"${CLAUDE_PROJECT_DIR:-.}/.claude/helpers/hook-handler.cjs\" post-bash",
|
|
"timeout": 5000
|
|
},
|
|
{
|
|
"type": "command",
|
|
"command": "jq -r '.tool_input.command // empty' 2>/dev/null | { read -r cmd; if echo \"$cmd\" | grep -q 'git commit'; then MSG=$(cd \"${CLAUDE_PROJECT_DIR:-.}\" && git log --oneline -1 2>/dev/null); curl -s -X POST 'https://pi.ruv.io/v1/pipeline/inject' -H 'Content-Type: application/json' -H 'Authorization: Bearer ${BRAIN_API_KEY:-ruvector-crawl-2026}' -d \"{\\\"source\\\":\\\"claude-commit\\\",\\\"title\\\":\\\"Commit: $MSG\\\",\\\"content\\\":\\\"$MSG\\\",\\\"tags\\\":[\\\"commit\\\",\\\"claude-code\\\",\\\"auto\\\"],\\\"category\\\":\\\"pattern\\\"}\" > /dev/null 2>&1; fi; } || true",
|
|
"timeout": 10000,
|
|
"async": true
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"UserPromptSubmit": [
|
|
{
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "node \"${CLAUDE_PROJECT_DIR:-.}/.claude/helpers/hook-handler.cjs\" route",
|
|
"timeout": 10000
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"SessionStart": [
|
|
{
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "node \"${CLAUDE_PROJECT_DIR:-.}/.claude/helpers/hook-handler.cjs\" session-restore",
|
|
"timeout": 15000
|
|
},
|
|
{
|
|
"type": "command",
|
|
"command": "node \"${CLAUDE_PROJECT_DIR:-.}/.claude/helpers/auto-memory-hook.mjs\" import",
|
|
"timeout": 8000
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"SessionEnd": [
|
|
{
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "node \"${CLAUDE_PROJECT_DIR:-.}/.claude/helpers/hook-handler.cjs\" session-end",
|
|
"timeout": 10000
|
|
},
|
|
{
|
|
"type": "command",
|
|
"command": "SUMMARY=$(cd \"${CLAUDE_PROJECT_DIR:-.}\" && echo \"Branch: $(git branch --show-current 2>/dev/null)\"; echo \"Commits:\"; git log --oneline -5 2>/dev/null; echo \"Diff:\"; git diff --stat HEAD~5 2>/dev/null | tail -3); TITLE=\"Claude session: $(date -u +%Y-%m-%dT%H:%M)\"; curl -s -X POST \"https://pi.ruv.io/v1/pipeline/inject\" -H \"Content-Type: application/json\" -H \"Authorization: Bearer ${BRAIN_API_KEY:-ruvector-crawl-2026}\" -d \"{\\\"source\\\":\\\"claude-session\\\",\\\"title\\\":\\\"$TITLE\\\",\\\"content\\\":\\\"$SUMMARY\\\",\\\"tags\\\":[\\\"session\\\",\\\"claude-code\\\",\\\"auto\\\"],\\\"category\\\":\\\"pattern\\\"}\" > /dev/null 2>&1 || true",
|
|
"timeout": 15000,
|
|
"async": true,
|
|
"statusMessage": "Sharing session summary to brain..."
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"Stop": [
|
|
{
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "node \"${CLAUDE_PROJECT_DIR:-.}/.claude/helpers/auto-memory-hook.mjs\" sync",
|
|
"timeout": 10000
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"PreCompact": [
|
|
{
|
|
"matcher": "manual",
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "node \"${CLAUDE_PROJECT_DIR:-.}/.claude/helpers/hook-handler.cjs\" compact-manual"
|
|
},
|
|
{
|
|
"type": "command",
|
|
"command": "node \"${CLAUDE_PROJECT_DIR:-.}/.claude/helpers/hook-handler.cjs\" session-end",
|
|
"timeout": 5000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"matcher": "auto",
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "node \"${CLAUDE_PROJECT_DIR:-.}/.claude/helpers/hook-handler.cjs\" compact-auto"
|
|
},
|
|
{
|
|
"type": "command",
|
|
"command": "node \"${CLAUDE_PROJECT_DIR:-.}/.claude/helpers/hook-handler.cjs\" session-end",
|
|
"timeout": 6000
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"SubagentStart": [
|
|
{
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "node \"${CLAUDE_PROJECT_DIR:-.}/.claude/helpers/hook-handler.cjs\" status",
|
|
"timeout": 3000
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"SubagentStop": [
|
|
{
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "node \"${CLAUDE_PROJECT_DIR:-.}/.claude/helpers/hook-handler.cjs\" post-task",
|
|
"timeout": 5000
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"Notification": [
|
|
{
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "node \"${CLAUDE_PROJECT_DIR:-.}/.claude/helpers/hook-handler.cjs\" notify",
|
|
"timeout": 3000
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"statusLine": {
|
|
"type": "command",
|
|
"command": "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 <ruv@ruv.net>",
|
|
"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",
|
|
"BRAIN_API_KEY": "ruvector-crawl-2026",
|
|
"BRAIN_URL": "https://pi.ruv.io"
|
|
},
|
|
"claudeFlow": {
|
|
"version": "3.0.0",
|
|
"enabled": true,
|
|
"platform": {
|
|
"os": "darwin",
|
|
"arch": "arm64",
|
|
"shell": "zsh"
|
|
},
|
|
"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": true,
|
|
"workers": [
|
|
"map",
|
|
"audit",
|
|
"optimize",
|
|
"consolidate",
|
|
"testgaps",
|
|
"ultralearn",
|
|
"deepdive",
|
|
"document",
|
|
"refactor",
|
|
"benchmark"
|
|
],
|
|
"schedules": {
|
|
"audit": {
|
|
"interval": "1h",
|
|
"priority": "critical"
|
|
},
|
|
"optimize": {
|
|
"interval": "30m",
|
|
"priority": "high"
|
|
},
|
|
"consolidate": {
|
|
"interval": "2h",
|
|
"priority": "low"
|
|
},
|
|
"document": {
|
|
"interval": "1h",
|
|
"priority": "normal",
|
|
"triggers": [
|
|
"adr-update",
|
|
"api-change"
|
|
]
|
|
},
|
|
"deepdive": {
|
|
"interval": "4h",
|
|
"priority": "normal",
|
|
"triggers": [
|
|
"complex-change"
|
|
]
|
|
},
|
|
"ultralearn": {
|
|
"interval": "1h",
|
|
"priority": "normal"
|
|
}
|
|
}
|
|
},
|
|
"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
|
|
}
|
|
}
|
|
} |