/plugin marketplace add b-open-io/prompts/plugin install bopen-tools@b-open-ioDefined in hooks/hooks.json
{
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "if git status -s | grep -q .; then echo 'Uncommitted changes detected:' && git status -s && echo '' && echo 'Consider committing these changes.'; fi"
}
]
}
],
"PreToolUse": [
{
"hooks": [
{
"type": "command",
"command": "FILE_PATH=$(cat | jq -r '.tool_input.file_path // .tool_input.path // empty'); if echo \"$FILE_PATH\" | grep -E '\\.(env|env\\.local|env\\.production|env\\.staging)$' >/dev/null; then echo 'Protected file: This appears to be an environment configuration file with potential secrets.' >&2 && echo 'If you really need to edit this file, please confirm in the UI.' >&2 && exit 2; fi"
}
],
"matcher": "Write|Edit|MultiEdit"
},
{
"hooks": [
{
"type": "command",
"command": "FILE_PATH=$(cat | jq -r '.tool_input.file_path // .tool_input.path // empty'); if echo \"$FILE_PATH\" | grep -q 'components/ui/'; then echo 'Protected Path: shadcn/ui components should not be edited manually.' >&2; exit 2; fi"
}
],
"matcher": "Write|Edit|MultiEdit|write_file|replace"
}
],
"PostToolUse": [
{
"hooks": [
{
"type": "command",
"command": "git add -A",
"timeout": 5
}
],
"matcher": "Write|Edit|MultiEdit"
},
{
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/scripts/lint-on-save.sh"
}
],
"matcher": "Edit|Write"
},
{
"hooks": [
{
"type": "command",
"command": "FILE_PATH=$(cat | jq -r '.tool_input.file_path // .tool_input.path // empty'); if echo \"$FILE_PATH\" | grep -E '\\.(test|spec)\\.(js|jsx|ts|tsx)$|\\.(js|jsx|ts|tsx)$' >/dev/null; then (bun test --findRelatedTests \"$FILE_PATH\" 2>/dev/null || true) & fi",
"timeout": 30
}
],
"matcher": "Write|Edit|MultiEdit"
}
]
}{
"riskFlags": {
"touchesBash": false,
"matchAllTools": false,
"touchesFileWrites": true
},
"typeStats": {
"command": 6
},
"eventStats": {
"Stop": 1,
"PreToolUse": 2,
"PostToolUse": 3
},
"originCounts": {
"absolutePaths": 0,
"pluginScripts": 1,
"projectScripts": 0
},
"timeoutStats": {
"commandsWithoutTimeout": 4
}
}