commit 050ffe19157b3a31b20a815b00b172d58caae821 Author: Zhongwei Li Date: Sun Nov 30 08:49:04 2025 +0800 Initial commit diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 0000000..fa3bec1 --- /dev/null +++ b/.claude-plugin/plugin.json @@ -0,0 +1,11 @@ +{ + "name": "hook-workflow", + "description": "Comprehensive workflow automation using Claude Code hooks for session management, code quality enforcement, security scanning, token tracking, and git validation", + "version": "1.0.1", + "author": { + "name": "Rafael Calleja" + }, + "hooks": [ + "./settings.json" + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..a3cc20c --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# hook-workflow + +Comprehensive workflow automation using Claude Code hooks for session management, code quality enforcement, security scanning, token tracking, and git validation diff --git a/plugin.lock.json b/plugin.lock.json new file mode 100644 index 0000000..52834c7 --- /dev/null +++ b/plugin.lock.json @@ -0,0 +1,45 @@ +{ + "$schema": "internal://schemas/plugin.lock.v1.json", + "pluginId": "gh:rafaelcalleja/claude-market-place:plugins/hook-workflow", + "normalized": { + "repo": null, + "ref": "refs/tags/v20251128.0", + "commit": "7c798276e6e8aa96b3f79a871c53271526db7302", + "treeHash": "f5eba284985c3bb4a16e1bea731a96956b1974bf2f385eb6297206a2f1f675ba", + "generatedAt": "2025-11-28T10:27:44.768781Z", + "toolVersion": "publish_plugins.py@0.2.0" + }, + "origin": { + "remote": "git@github.com:zhongweili/42plugin-data.git", + "branch": "master", + "commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390", + "repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data" + }, + "manifest": { + "name": "hook-workflow", + "description": "Comprehensive workflow automation using Claude Code hooks for session management, code quality enforcement, security scanning, token tracking, and git validation", + "version": "1.0.1" + }, + "content": { + "files": [ + { + "path": "settings.json", + "sha256": "6ec0d849d403e89f62130381b66733192d290d79007b55dc8810d212f35ac29c" + }, + { + "path": "README.md", + "sha256": "b5c33c49cb16ffb2c417a13934eb631a4f212e72e4b266c8a386c549fad8ff0c" + }, + { + "path": ".claude-plugin/plugin.json", + "sha256": "75183e62d243c21fc3431186493ae42b11f01d25bc8120d0091bebf4c7003bd8" + } + ], + "dirSha256": "f5eba284985c3bb4a16e1bea731a96956b1974bf2f385eb6297206a2f1f675ba" + }, + "security": { + "scannedAt": null, + "scannerVersion": null, + "flags": [] + } +} \ No newline at end of file diff --git a/settings.json b/settings.json new file mode 100644 index 0000000..b129870 --- /dev/null +++ b/settings.json @@ -0,0 +1,194 @@ +{ + "hooks": { + "SessionStart": [ + { + "matcher": "startup", + "hooks": [ + { + "type": "command", + "command": "python3 ${CLAUDE_PLUGIN_ROOT}/hook_scripts/session_start.py", + "timeout": 30 + } + ] + }, + { + "matcher": "resume", + "hooks": [ + { + "type": "command", + "command": "python3 ${CLAUDE_PLUGIN_ROOT}/hook_scripts/context_recovery_helper.py", + "timeout": 30 + } + ] + }, + { + "matcher": "clear", + "hooks": [ + { + "type": "command", + "command": "python3 ${CLAUDE_PLUGIN_ROOT}/hook_scripts/pre_session_hook.py", + "timeout": 30 + } + ] + }, + { + "matcher": "compact", + "hooks": [ + { + "type": "command", + "command": "python3 ${CLAUDE_PLUGIN_ROOT}/hook_scripts/session_start.py", + "timeout": 30 + } + ] + } + ], + "SessionEnd": [ + { + "hooks": [ + { + "type": "command", + "command": "python3 ${CLAUDE_PLUGIN_ROOT}/hook_scripts/post_session_hook.py", + "timeout": 30 + } + ] + } + ], + "UserPromptSubmit": [ + { + "hooks": [ + { + "type": "command", + "command": "python3 ${CLAUDE_PLUGIN_ROOT}/hook_scripts/detect_session_finish.py", + "timeout": 10 + } + ] + } + ], + "PreCompact": [ + { + "matcher": "auto", + "hooks": [ + { + "type": "command", + "command": "python3 ${CLAUDE_PLUGIN_ROOT}/hook_scripts/auto_compact.py", + "timeout": 360 + } + ] + }, + { + "matcher": "manual", + "hooks": [ + { + "type": "command", + "command": "python3 ${CLAUDE_PLUGIN_ROOT}/hook_scripts/auto_compact.py", + "timeout": 360 + } + ] + } + ], + "PreToolUse": [ + { + "matcher": ".*", + "hooks": [ + { + "type": "command", + "command": "python3 ${CLAUDE_PLUGIN_ROOT}/hook_scripts/token_manager.py check", + "timeout": 10 + } + ] + }, + { + "matcher": "Write|Edit", + "hooks": [ + { + "type": "command", + "command": "python3 ${CLAUDE_PLUGIN_ROOT}/hook_scripts/command_restrictor.py", + "timeout": 10 + }, + { + "type": "command", + "command": "python3 ${CLAUDE_PLUGIN_ROOT}/hook_scripts/pattern_enforcer.py", + "timeout": 10 + }, + { + "type": "command", + "command": "python3 ${CLAUDE_PLUGIN_ROOT}/hook_scripts/no_mock_code.py", + "timeout": 10 + }, + { + "type": "command", + "command": "python3 ${CLAUDE_PLUGIN_ROOT}/hook_scripts/secret_scanner.py", + "timeout": 10 + }, + { + "type": "command", + "command": "python3 ${CLAUDE_PLUGIN_ROOT}/hook_scripts/timestamp_validator.py", + "timeout": 10 + } + ] + }, + { + "matcher": "Update", + "hooks": [ + { + "type": "command", + "command": "python3 ${CLAUDE_PLUGIN_ROOT}/hook_scripts/no_mock_code.py", + "timeout": 10 + }, + { + "type": "command", + "command": "python3 ${CLAUDE_PLUGIN_ROOT}/hook_scripts/secret_scanner.py", + "timeout": 10 + } + ] + }, + { + "matcher": "Bash", + "hooks": [ + { + "type": "command", + "command": "python3 ${CLAUDE_PLUGIN_ROOT}/hook_scripts/command_restrictor.py", + "timeout": 10 + }, + { + "type": "command", + "command": "python3 ${CLAUDE_PLUGIN_ROOT}/hook_scripts/validate_git_commit.py", + "timeout": 10 + } + ] + }, + { + "matcher": "WebFetch|WebSearch", + "hooks": [ + { + "type": "command", + "command": "python3 ${CLAUDE_PLUGIN_ROOT}/hook_scripts/command_restrictor.py", + "timeout": 10 + } + ] + } + ], + "PostToolUse": [ + { + "matcher": "Bash|Read|Write|Edit|Grep|Glob|Task|TodoWrite|AskUserQuestion|mcp__.*", + "hooks": [ + { + "type": "command", + "command": "python3 ${CLAUDE_PLUGIN_ROOT}/hook_scripts/token_manager.py extract", + "timeout": 180 + } + ] + }, + { + "matcher": ".*", + "hooks": [ + { + "type": "command", + "command": "python3 ${CLAUDE_PLUGIN_ROOT}/hook_scripts/post_tool_use_compact_progress.py", + "timeout": 5 + } + ] + } + ] + } +}