claude_hooks 0.2.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +137 -0
  3. data/README.md +287 -356
  4. data/claude_hooks.gemspec +2 -2
  5. data/docs/1.0.0_MIGRATION_GUIDE.md +228 -0
  6. data/docs/API/COMMON.md +83 -0
  7. data/docs/API/NOTIFICATION.md +32 -0
  8. data/docs/API/POST_TOOL_USE.md +45 -0
  9. data/docs/API/PRE_COMPACT.md +39 -0
  10. data/docs/API/PRE_TOOL_USE.md +110 -0
  11. data/docs/API/SESSION_END.md +100 -0
  12. data/docs/API/SESSION_START.md +40 -0
  13. data/docs/API/STOP.md +47 -0
  14. data/docs/API/SUBAGENT_STOP.md +47 -0
  15. data/docs/API/USER_PROMPT_SUBMIT.md +47 -0
  16. data/{WHY.md → docs/WHY.md} +15 -8
  17. data/docs/external/claude-hooks-reference.md +34 -0
  18. data/example_dotclaude/hooks/entrypoints/pre_tool_use.rb +25 -0
  19. data/example_dotclaude/hooks/entrypoints/session_end.rb +35 -0
  20. data/example_dotclaude/hooks/entrypoints/user_prompt_submit.rb +17 -12
  21. data/example_dotclaude/hooks/handlers/pre_tool_use/github_guard.rb +253 -0
  22. data/example_dotclaude/hooks/handlers/session_end/cleanup_handler.rb +55 -0
  23. data/example_dotclaude/hooks/handlers/session_end/log_session_stats.rb +64 -0
  24. data/example_dotclaude/hooks/handlers/user_prompt_submit/append_rules.rb +3 -2
  25. data/example_dotclaude/hooks/handlers/user_prompt_submit/log_user_prompt.rb +2 -2
  26. data/example_dotclaude/plugins/README.md +175 -0
  27. data/example_dotclaude/settings.json +22 -0
  28. data/lib/claude_hooks/base.rb +16 -24
  29. data/lib/claude_hooks/cli.rb +75 -1
  30. data/lib/claude_hooks/logger.rb +0 -1
  31. data/lib/claude_hooks/output/base.rb +152 -0
  32. data/lib/claude_hooks/output/notification.rb +22 -0
  33. data/lib/claude_hooks/output/post_tool_use.rb +76 -0
  34. data/lib/claude_hooks/output/pre_compact.rb +20 -0
  35. data/lib/claude_hooks/output/pre_tool_use.rb +94 -0
  36. data/lib/claude_hooks/output/session_end.rb +24 -0
  37. data/lib/claude_hooks/output/session_start.rb +49 -0
  38. data/lib/claude_hooks/output/stop.rb +83 -0
  39. data/lib/claude_hooks/output/subagent_stop.rb +14 -0
  40. data/lib/claude_hooks/output/user_prompt_submit.rb +78 -0
  41. data/lib/claude_hooks/post_tool_use.rb +6 -12
  42. data/lib/claude_hooks/pre_tool_use.rb +0 -37
  43. data/lib/claude_hooks/session_end.rb +43 -0
  44. data/lib/claude_hooks/session_start.rb +0 -23
  45. data/lib/claude_hooks/stop.rb +8 -25
  46. data/lib/claude_hooks/user_prompt_submit.rb +0 -26
  47. data/lib/claude_hooks/version.rb +1 -1
  48. data/lib/claude_hooks.rb +15 -0
  49. metadata +37 -8
data/lib/claude_hooks.rb CHANGED
@@ -5,6 +5,8 @@ require_relative "claude_hooks/configuration"
5
5
  require_relative "claude_hooks/logger"
6
6
  require_relative "claude_hooks/base"
7
7
  require_relative "claude_hooks/cli"
8
+
9
+ # Hook classes
8
10
  require_relative "claude_hooks/user_prompt_submit"
9
11
  require_relative "claude_hooks/pre_tool_use"
10
12
  require_relative "claude_hooks/post_tool_use"
@@ -13,6 +15,19 @@ require_relative "claude_hooks/stop"
13
15
  require_relative "claude_hooks/subagent_stop"
14
16
  require_relative "claude_hooks/pre_compact"
15
17
  require_relative "claude_hooks/session_start"
18
+ require_relative "claude_hooks/session_end"
19
+
20
+ # Output classes
21
+ require_relative "claude_hooks/output/base"
22
+ require_relative "claude_hooks/output/user_prompt_submit"
23
+ require_relative "claude_hooks/output/pre_tool_use"
24
+ require_relative "claude_hooks/output/post_tool_use"
25
+ require_relative "claude_hooks/output/notification"
26
+ require_relative "claude_hooks/output/stop"
27
+ require_relative "claude_hooks/output/subagent_stop"
28
+ require_relative "claude_hooks/output/pre_compact"
29
+ require_relative "claude_hooks/output/session_start"
30
+ require_relative "claude_hooks/output/session_end"
16
31
 
17
32
  module ClaudeHooks
18
33
  class Error < StandardError; end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: claude_hooks
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gabriel Dehan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-08-21 00:00:00.000000000 Z
11
+ date: 2026-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -39,19 +39,19 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '13.0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
42
+ name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.0'
47
+ version: '5.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3.0'
54
+ version: '5.0'
55
55
  description: A Ruby DSL framework for creating Claude Code hooks with composable hook
56
56
  scripts that enable teams to easily implement logging, security checks, and workflow
57
57
  automation.
@@ -63,12 +63,30 @@ extra_rdoc_files: []
63
63
  files:
64
64
  - CHANGELOG.md
65
65
  - README.md
66
- - WHY.md
67
66
  - claude_hooks.gemspec
67
+ - docs/1.0.0_MIGRATION_GUIDE.md
68
+ - docs/API/COMMON.md
69
+ - docs/API/NOTIFICATION.md
70
+ - docs/API/POST_TOOL_USE.md
71
+ - docs/API/PRE_COMPACT.md
72
+ - docs/API/PRE_TOOL_USE.md
73
+ - docs/API/SESSION_END.md
74
+ - docs/API/SESSION_START.md
75
+ - docs/API/STOP.md
76
+ - docs/API/SUBAGENT_STOP.md
77
+ - docs/API/USER_PROMPT_SUBMIT.md
78
+ - docs/WHY.md
79
+ - docs/external/claude-hooks-reference.md
68
80
  - example_dotclaude/commands/.gitkeep
81
+ - example_dotclaude/hooks/entrypoints/pre_tool_use.rb
82
+ - example_dotclaude/hooks/entrypoints/session_end.rb
69
83
  - example_dotclaude/hooks/entrypoints/user_prompt_submit.rb
84
+ - example_dotclaude/hooks/handlers/pre_tool_use/github_guard.rb
85
+ - example_dotclaude/hooks/handlers/session_end/cleanup_handler.rb
86
+ - example_dotclaude/hooks/handlers/session_end/log_session_stats.rb
70
87
  - example_dotclaude/hooks/handlers/user_prompt_submit/append_rules.rb
71
88
  - example_dotclaude/hooks/handlers/user_prompt_submit/log_user_prompt.rb
89
+ - example_dotclaude/plugins/README.md
72
90
  - example_dotclaude/settings.json
73
91
  - lib/claude_hooks.rb
74
92
  - lib/claude_hooks/base.rb
@@ -76,9 +94,20 @@ files:
76
94
  - lib/claude_hooks/configuration.rb
77
95
  - lib/claude_hooks/logger.rb
78
96
  - lib/claude_hooks/notification.rb
97
+ - lib/claude_hooks/output/base.rb
98
+ - lib/claude_hooks/output/notification.rb
99
+ - lib/claude_hooks/output/post_tool_use.rb
100
+ - lib/claude_hooks/output/pre_compact.rb
101
+ - lib/claude_hooks/output/pre_tool_use.rb
102
+ - lib/claude_hooks/output/session_end.rb
103
+ - lib/claude_hooks/output/session_start.rb
104
+ - lib/claude_hooks/output/stop.rb
105
+ - lib/claude_hooks/output/subagent_stop.rb
106
+ - lib/claude_hooks/output/user_prompt_submit.rb
79
107
  - lib/claude_hooks/post_tool_use.rb
80
108
  - lib/claude_hooks/pre_compact.rb
81
109
  - lib/claude_hooks/pre_tool_use.rb
110
+ - lib/claude_hooks/session_end.rb
82
111
  - lib/claude_hooks/session_start.rb
83
112
  - lib/claude_hooks/stop.rb
84
113
  - lib/claude_hooks/subagent_stop.rb
@@ -100,14 +129,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
100
129
  requirements:
101
130
  - - ">="
102
131
  - !ruby/object:Gem::Version
103
- version: 2.7.0
132
+ version: 3.2.0
104
133
  required_rubygems_version: !ruby/object:Gem::Requirement
105
134
  requirements:
106
135
  - - ">="
107
136
  - !ruby/object:Gem::Version
108
137
  version: '0'
109
138
  requirements: []
110
- rubygems_version: 3.2.33
139
+ rubygems_version: 3.4.19
111
140
  signing_key:
112
141
  specification_version: 4
113
142
  summary: Ruby DSL for creating Claude Code hooks