npx claudepluginhub nsalvacao/nsalvacao-claude-code-plugins --plugin repo-structureDefined in hooks/hooks.json
{
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "bash ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/audit-reminder.sh",
"timeout": 10,
"description": "Suggest /repo-validate if new files were created"
}
],
"matcher": ".*"
}
],
"PreToolUse": [
{
"hooks": [
{
"type": "command",
"command": "bash ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/validate-structure.sh",
"timeout": 10,
"description": "Validate structure files before writing"
}
],
"matcher": "Write|Edit|MultiEdit"
}
],
"PostToolUse": [
{
"hooks": [
{
"type": "command",
"command": "bash ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/lf-check-hook.sh",
"timeout": 10,
"description": "Warn on CRLF line endings"
}
],
"matcher": "Write|Edit|MultiEdit"
},
{
"hooks": [
{
"type": "command",
"command": "bash ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/shellcheck-hook.sh",
"timeout": 15,
"description": "Lint .sh files with shellcheck"
}
],
"matcher": "Write|Edit|MultiEdit"
},
{
"hooks": [
{
"type": "command",
"command": "bash ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/yamllint-hook.sh",
"timeout": 15,
"description": "Lint .yml/.yaml files"
}
],
"matcher": "Write|Edit|MultiEdit"
}
]
}"{\"riskFlags\": {\"touchesBash\": false, \"matchAllTools\": false, \"touchesFileWrites\": true}, \"typeStats\": {\"command\": 5}, \"eventStats\": {\"Stop\": 1, \"PreToolUse\": 1, \"PostToolUse\": 3}, \"originCounts\": {\"absolutePaths\": 0, \"pluginScripts\": 5, \"projectScripts\": 0}, \"timeoutStats\": {\"commandsWithoutTimeout\": 0}}"