Files
claude-hud/hooks/hooks.json
Jarrod Watts 48ba04953b feat: Security hardening and expanded test coverage
Scripts:
- Add set -uo pipefail to all shell scripts
- Add jq existence check before processing
- Add JSON validation before parsing
- Add session_id regex validation (alphanumeric, dash, underscore)

hooks.json:
- Remove empty matcher fields (follows spec)

Tests:
- Add ToolStream component tests (14 tests)
- Add TodoList component tests (10 tests)
- Add AgentList component tests (13 tests)
- Add SessionStats component tests (8 tests)
- Add ModifiedFiles component tests (10 tests)
- Add McpStatus component tests (14 tests)
- Add stats-reader formatTokens tests (5 tests)

Docs:
- Update README paths for marketplace installs
- Update CLAUDE.md with current architecture

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-02 17:09:39 +11:00

93 lines
1.8 KiB
JSON

{
"hooks": {
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/scripts/session-start.sh",
"timeout": 15
}
]
}
],
"PreToolUse": [
{
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/scripts/capture-event.sh",
"timeout": 5
}
]
}
],
"PostToolUse": [
{
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/scripts/capture-event.sh",
"timeout": 5
}
]
}
],
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/scripts/capture-event.sh",
"timeout": 5
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/scripts/capture-event.sh",
"timeout": 5
}
]
}
],
"SubagentStop": [
{
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/scripts/capture-event.sh",
"timeout": 5
}
]
}
],
"PreCompact": [
{
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/scripts/capture-event.sh",
"timeout": 5
}
]
}
],
"SessionEnd": [
{
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/scripts/cleanup.sh",
"timeout": 5
}
]
}
]
}
}