{"_id":"claude-git-hooks","_rev":"75-0d8fdd2ad04096391620350e0c5db1a1","name":"claude-git-hooks","dist-tags":{"latest":"3.11.3"},"versions":{"1.0.0":{"name":"claude-git-hooks","version":"1.0.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@1.0.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"ad01db14515db53cbebf8e2b29a96c110adfc226","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-1.0.0.tgz","fileCount":8,"integrity":"sha512-7mmx+dhEqH2729o6HmxPxNHYIs3Q/dBWFLfJJ18hs18OMd0O++mFB7Im4kQk/sB6sv9YpJYR4EnvZ37Xk7epeA==","signatures":[{"sig":"MEYCIQCAs83RBARdS1Jkz/5zdaYaclV9ld8xwkuik9DAJMfCpgIhAJGUXx0MDWeaQxyiXCEkdeLMpr0Xummi5jV+MWBOnePG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42314},"main":"lib/index.js","engines":{"node":">=14.0.0"},"gitHead":"788bcc26589ff2f19b06f1729dda8c6c87922107","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"9.2.0","description":"Git hooks con Claude CLI para análisis de código y generación automática de mensajes de commit","directories":{},"_nodeVersion":"18.19.1","dependencies":{},"preferGlobal":true,"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_1.0.0_1753349657523_0.6821586617940283","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"claude-git-hooks","version":"1.1.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@1.1.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"e0e57bca6a2b1ce672c943252d4c4a2b3219e3b0","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-1.1.0.tgz","fileCount":8,"integrity":"sha512-+oBu0vtv7sZdE/avKGfeoM23BXsRlaeyqBFTwaoTtT4FFtPu6AMFe/dJIaICES5UeBfF9YhHbeWVR0kTFJLC8Q==","signatures":[{"sig":"MEQCIA3YkR7e2tXuQDqsdnMQwcCvLvJDoj9I/dR3BA2hy8xKAiAksod9rODJTOYiRaL1GzYVzz8a3VOQgk+oxmZ5yMzW7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47703},"main":"lib/index.js","engines":{"node":">=14.0.0"},"gitHead":"363380241ecc35705aa00318608c44e95d685966","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"9.2.0","description":"Git hooks con Claude CLI para análisis de código y generación automática de mensajes de commit","directories":{},"_nodeVersion":"18.19.1","dependencies":{},"preferGlobal":true,"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_1.1.0_1753352230202_0.0888093299827768","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"claude-git-hooks","version":"1.2.1","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@1.2.1","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"a356eb3866fb1fd5ac3d70b4ca270328506af78f","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-1.2.1.tgz","fileCount":9,"integrity":"sha512-6vr/wEm8CW5tdU3Q37PRQWZcja/tnFmwOcMFsDmsAAU3rxpoNkIlU/o5oHJmLVnQOCgQuNBArQxgzdFrPMErfw==","signatures":[{"sig":"MEUCIFHd//1sZ8BWRf6lPMRCxw/yCPCHBiwDjdHbRTqT2wbYAiEA/VPnlcKB6xLkF0FqV/8B/PF118vnm/bHiD+iJ0NPF3o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64427},"main":"lib/index.js","engines":{"node":">=14.0.0"},"gitHead":"4ae454ef30abfdcbe402ad5a2e6ea69fbaff2351","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"9.2.0","description":"Git hooks con Claude CLI para análisis de código y generación automática de mensajes de commit","directories":{},"_nodeVersion":"18.19.1","dependencies":{},"preferGlobal":true,"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_1.2.1_1753371957825_0.5822801107818003","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"claude-git-hooks","version":"1.2.4","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@1.2.4","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"2cf1fd6cf24facdbbea8a818926896a1fc5408ce","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-1.2.4.tgz","fileCount":9,"integrity":"sha512-pERCs/DKeDxXpbDnnDGR0jgibOJDsUgpLN+NOEdayLOmsqHcKEkJf5ST3EK62unYKji6SfAOG9TK0KheNf570w==","signatures":[{"sig":"MEUCIQCzipnRTid/QwnOHG8Dmm8Hkla8wuO5onWN4I9VFP4m2wIgWd9VageTB47VqooNT593eZ7GHMIkCLUvMqSE29xVt3w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71943},"main":"lib/index.js","engines":{"node":">=14.0.0"},"gitHead":"e9b7223eb4e52236ff781bcd5f8d8d49bb2dd214","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks con Claude CLI para análisis de código y generación automática de mensajes de commit","directories":{},"_nodeVersion":"20.19.1","dependencies":{},"preferGlobal":true,"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_1.2.4_1755883654013_0.7966861078903476","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"claude-git-hooks","version":"1.3.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@1.3.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"15b5f91bf0e90ef2c605e649867500b4a174c38b","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-1.3.0.tgz","fileCount":10,"integrity":"sha512-YjOZndJwib00gdFywo2/anHDgnVLW2LaoP5NQzqqYkLmLkAALpASsAFTC2OtFq1GhgFu+vEOMYbVSZHgdLXKzA==","signatures":[{"sig":"MEQCIAQX3ern/RIL4OJaMa9dKoLVV9kj8fN4MUIi2L5NEIAAAiAgqLe+bjyTv5tWNdzP3tZGyv6zSs5MJq+nyNR91ckxng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91076},"main":"lib/index.js","engines":{"node":">=14.0.0"},"gitHead":"e9b7223eb4e52236ff781bcd5f8d8d49bb2dd214","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks con Claude CLI para análisis de código y generación automática de mensajes de commit","directories":{},"_nodeVersion":"20.19.1","dependencies":{},"preferGlobal":true,"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_1.3.0_1756397372989_0.8144507969976944","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"claude-git-hooks","version":"1.4.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@1.4.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"7f2075da452fb39a7265e242d254a8650415eb17","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-1.4.0.tgz","fileCount":13,"integrity":"sha512-rI0WkNNpk0lj4lhHZttirDpII0K75ZTan6LUgzfrbmChTX2hUUiz4+8XNdFKG1xAzu+eG6KiiYX0zc4ENOUR+A==","signatures":[{"sig":"MEUCIFULrjbTNMwzrZDJtrGraPPicgTK0FeIDqQTG7TlZbDhAiEA/O2d1m5BK15Z4YaiiRjIrvJwzwCVZV9r9s5HIQ/opOo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":106046},"main":"lib/index.js","engines":{"node":">=14.0.0"},"gitHead":"ee53022f85562d5af6fb56b62c3f70dad18d1dfc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks con Claude CLI para análisis de código y generación automática de mensajes de commit","directories":{},"_nodeVersion":"20.19.1","dependencies":{},"preferGlobal":true,"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_1.4.0_1756465234191_0.3802584153777617","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"claude-git-hooks","version":"1.4.1","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@1.4.1","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"7e8dcb168ffeb723c5245c9681e8bc767290fd63","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-1.4.1.tgz","fileCount":13,"integrity":"sha512-ARVrd7sMbBFayr4H2XW2sy1u0Xa9XISKsrT9gF7oAPdKExdxZj+ASNzlek9xxvWG/sq1yC7s0gGChbXyTSjckw==","signatures":[{"sig":"MEUCIA8HVDEFBfE0xE9T0u/4aDnZbeyEDEkdYuQmTeQRaVEWAiEA4bShl+qyTZEYS9DIl5WrufENkrfpn4WeuuqYnP1Nixg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":106689},"main":"lib/index.js","engines":{"node":">=14.0.0"},"gitHead":"63e8f1f74f3f212a5cbd4b141df37a5b0b7f5c32","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks con Claude CLI para análisis de código y generación automática de mensajes de commit","directories":{},"_nodeVersion":"20.19.1","dependencies":{},"preferGlobal":true,"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_1.4.1_1756921467746_0.4917664579057872","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"claude-git-hooks","version":"1.4.2","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@1.4.2","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"22fb8350bdee4a9cd83c315ac139fed5df5544fc","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-1.4.2.tgz","fileCount":11,"integrity":"sha512-h1D/rR9b/Rp6gi9LT5WUTbZBsGK76c3uNK1xUFZxZt31F4ozjC/S8Li+m8cTWtTNnKqkB6hvD+2N+ETOz1IrKQ==","signatures":[{"sig":"MEUCIQCX+fSKTaKa/EMKgl9hF6ICIuyjuXkPJ9WfLrylwTHS2QIgHd6qP1HgmIoSlYWFgyT0tiYeOopOUTcoEqfM99ZVszc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101698},"main":"lib/index.js","engines":{"node":">=14.0.0"},"gitHead":"63e8f1f74f3f212a5cbd4b141df37a5b0b7f5c32","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks con Claude CLI para análisis de código y generación automática de mensajes de commit","directories":{},"_nodeVersion":"20.19.1","dependencies":{},"preferGlobal":true,"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_1.4.2_1757328261689_0.08490546452584136","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"claude-git-hooks","version":"1.5.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@1.5.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"d73a13767e2df421b759e4ec4de099d4fad4fa1c","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-1.5.0.tgz","fileCount":11,"integrity":"sha512-oVMsIKssKMWOVy6ed+Q0HvRLK1GdPYjsFvLCk3esBMd032y2LqJ7qPjy/hBmzhj2POFIThXbssK1OcJ09mrf1g==","signatures":[{"sig":"MEUCIHmXYEZqD4ZJi4KwVCwe3CkEhXhXrInTYH9A8vCPo/LsAiEA+fJbiVISAmoMnMcHRJ4V4zvWEJS1B4NwxCVVGLpKslQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":112192},"main":"lib/index.js","engines":{"node":">=14.0.0"},"gitHead":"610e5a8d2102249357b69cd47043591ab64726a1","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"9.2.0","description":"Git hooks con Claude CLI para análisis de código y generación automática de mensajes de commit","directories":{},"_nodeVersion":"18.19.1","dependencies":{},"preferGlobal":true,"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_1.5.0_1757508632812_0.8915535083030721","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"claude-git-hooks","version":"1.5.1","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@1.5.1","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"4ca1444397a636987c7b4a5f07a3f5f3d3d4e14f","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-1.5.1.tgz","fileCount":11,"integrity":"sha512-Q6ipDp1Iq5BZ8AeuD82ZQl3Oj377hUUKpQzHKqhTJFNu8sx9JbrRdN0CpZDNel/aLn7htHwuQCX4Y189E5CJnw==","signatures":[{"sig":"MEYCIQCHWwKJnD7tiseCHg7upmfMG+PA/l0OKSF5apcxbCr3ZQIhANCLXWxOEUmbVn6y7TFkPaPB8T6RyX+JRuh5O2yEf4by","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104650},"main":"lib/index.js","engines":{"node":">=14.0.0"},"gitHead":"610e5a8d2102249357b69cd47043591ab64726a1","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"9.2.0","description":"Git hooks con Claude CLI para análisis de código y generación automática de mensajes de commit","directories":{},"_nodeVersion":"18.19.1","dependencies":{},"preferGlobal":true,"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_1.5.1_1757588610428_0.17569421976110933","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"claude-git-hooks","version":"1.5.2","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@1.5.2","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"1e37c9506ee8bc52e0f04442c971f8075816df37","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-1.5.2.tgz","fileCount":11,"integrity":"sha512-vJInFZSgyxIvZYzt2ejBNC+qAw0UlSMCKoSQFGT+ZRDu0m4qbfgplHDBVbuh3J/P/eeEpHdhfqu1cl9DvqfvhQ==","signatures":[{"sig":"MEUCIQCzSnnHua64OoAha9LlSERq//0PTNj6d7XaNPxlI5htoAIgDQbJpaSGfdy8wgkcTwe8jP6c98dlEZUiPjpY2DrIAdE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103138},"main":"lib/index.js","engines":{"node":">=14.0.0"},"gitHead":"8135193d089c75020cac37672210e23e0e6cda12","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"9.2.0","description":"Git hooks con Claude CLI para análisis de código y generación automática de mensajes de commit","directories":{},"_nodeVersion":"18.19.1","dependencies":{},"preferGlobal":true,"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_1.5.2_1757606324092_0.5404933909261809","host":"s3://npm-registry-packages-npm-production"}},"1.5.3":{"name":"claude-git-hooks","version":"1.5.3","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@1.5.3","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"3c51cb5186c961075f4db3e633e7556d17b39a71","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-1.5.3.tgz","fileCount":11,"integrity":"sha512-GiuAveVQ95hkgdlTR8CZ0FMrWMWlmQkdg/M1Xt2crPH+wzD1nVn/nPsQIm7eXc5cOgisaXK3cpUG/ngTvYWfGA==","signatures":[{"sig":"MEUCIQDkTaTaPMQSKpkfpChs50NYT2u9nW8evEMI7MvG1C++WAIgZXZ+S6zQ/NqUo7gbCXjcqPch7mGttqBHHJ6nw9sVFYA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103819},"main":"lib/index.js","engines":{"node":">=14.0.0"},"gitHead":"57c1682624c74b8253dd96378ffd4b531467795a","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"9.2.0","description":"Git hooks con Claude CLI para análisis de código y generación automática de mensajes de commit","directories":{},"_nodeVersion":"18.19.1","preferGlobal":true,"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_1.5.3_1757682416504_0.8270532981233396","host":"s3://npm-registry-packages-npm-production"}},"1.5.4":{"name":"claude-git-hooks","version":"1.5.4","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@1.5.4","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"c972f41ffec369883a14b38ca83d0bdd83eafce0","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-1.5.4.tgz","fileCount":11,"integrity":"sha512-w4dPNOfwpPNBaQJRXRPBRbirsBlh/GQBTYuuaws89SbV8A68p2lArXw0eIynfFrbVdqnFr7vxb5buFHMXnhacg==","signatures":[{"sig":"MEQCIEj3aOu3ePevXaHKlq7Yb/Rl2RZyZTV1kF2XxVVXrS72AiAo7Vxx2VbRVLsiLlj2f2FV2aGQeXSrJRAu3VzS6iwJNg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103177},"main":"lib/index.js","engines":{"node":">=14.0.0"},"gitHead":"20a66cb87919fc2a59c559157ef420f6ab155f44","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks con Claude CLI para análisis de código y generación automática de mensajes de commit","directories":{},"_nodeVersion":"20.19.1","preferGlobal":true,"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_1.5.4_1758553298229_0.46814674944294854","host":"s3://npm-registry-packages-npm-production"}},"1.5.5":{"name":"claude-git-hooks","version":"1.5.5","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@1.5.5","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"55d00953d054a49479a3d3b7a4c9dd10c5600100","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-1.5.5.tgz","fileCount":11,"integrity":"sha512-fRFLuzGU1fCCr5e66JwMK98T/EZuQX7Fvv3CXF5L0YQOYpN8ny8+HQhyjJMu7gejbvF6PGFjFvFrfi8y/8Azcg==","signatures":[{"sig":"MEUCIQD03Tdtph1Kfxw6G+t7TArDWxLjI+pujTU59CYahmg8JQIgNCFJbfHMj+gu+gKEj7je4ntu/XWPoicDgfyFsoOTjK0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113080},"main":"lib/index.js","engines":{"node":">=14.0.0"},"gitHead":"f15916029c78f74d87b129b29982bb4efa96e5eb","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks con Claude CLI para análisis de código y generación automática de mensajes de commit","directories":{},"_nodeVersion":"20.19.1","preferGlobal":true,"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_1.5.5_1761778524324_0.7430014445680506","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"claude-git-hooks","version":"2.0.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.0.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"18f3096498c27b6061f47ee2e91ee2b4df5d3d4e","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.0.0.tgz","fileCount":19,"integrity":"sha512-WIWFZCCrnXWu4XQa6syO2DX7nnzkZyK7uwakG4VtmhkvgqXkLbgUpHOw5TtxhGm9ZApJR9sE8qoyLBVu6Y7XFA==","signatures":[{"sig":"MEUCIQD2KrKRODu36WqRvLdMh54BFcDyfBM+NE5NaOduBN+dLwIgKuILYQ1Ssitx7OuPw8kO1VhIWR7Zk+O+N1DoCURqevM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":175931},"main":"lib/index.js","type":"module","engines":{"node":">=16.9.0"},"gitHead":"57474781ddbe09c8baf20aaca16dc99ce8f73d4a","scripts":{"lint":"eslint lib/ bin/","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","format":"prettier --write \"lib/**/*.js\" \"bin/**\"","lint:fix":"eslint lib/ bin/ --fix","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.0.0_1762252607262_0.14819101226443232","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"claude-git-hooks","version":"2.1.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.1.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"94b6c1145a0c392ad0f0b8d8347fe4ff4df0c7d9","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.1.0.tgz","fileCount":19,"integrity":"sha512-K9JHzibszKmTA1n3zJX2uM7vWZYX3lDFbknIKNzys9ix/TwsGWmjWYWdwaRxgOTSrSDKVyiyR3qq74qvDI6p2A==","signatures":[{"sig":"MEQCIGTqBTqQd0I2hnF27wDih2/IBY+vGFIQOV/xkLXadpBRAiA2g0rbJrdYNDI7TV4tZPyJicPjqS3/1dDzSKsO4VQ7vQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":177386},"main":"lib/index.js","type":"module","engines":{"node":">=16.9.0"},"gitHead":"dee495df723cd56b002437a51f1db7a0142d5c1b","scripts":{"lint":"eslint lib/ bin/","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","format":"prettier --write \"lib/**/*.js\" \"bin/**\"","lint:fix":"eslint lib/ bin/ --fix","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.1.0_1762266669717_0.9088913701108563","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"claude-git-hooks","version":"2.3.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.3.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"7df44a19b32a33bf463fd0cc03bcb17486223770","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.3.0.tgz","fileCount":54,"integrity":"sha512-rZkaWcPqUTu8XDlOxuICvKdr/Q2Ye5FbDGMuVq4Mm2b3ox0OlRoBbCDoX6iEH3H920T+DET7V+ZQ/ZjbIa0jYg==","signatures":[{"sig":"MEUCIH1DC51xcFNn89jnayUpKq0mskhuhaBaHuLWOSwlakTyAiEAsD2N3HBePvm16ToBzBjz8pxIaLD5ynHYqY7nKMe7Tjw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":260410},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"0d96cf57ce40fbea954b1b4debc1839820681fa7","scripts":{"lint":"eslint lib/ bin/","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","format":"prettier --write \"lib/**/*.js\" \"bin/**\"","lint:fix":"eslint lib/ bin/ --fix","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.3.0_1762899977933_0.16908374786495473","host":"s3://npm-registry-packages-npm-production"}},"2.3.1":{"name":"claude-git-hooks","version":"2.3.1","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.3.1","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"b555d9ed06c6bff3f0665a099a7528130a2cf8f8","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.3.1.tgz","fileCount":57,"integrity":"sha512-sEmkbn3+Iqjs6L7EHmuFQ+4F50i1bj2sKAbdH/FMjUek0RzNJFgtEsMa9oF/ULvAwGQQuCMagZg/xHYkyju2fg==","signatures":[{"sig":"MEQCIDfiuHkrOsAPBs+xKXZCKII/56qeVDRiCh80EW1zz0QWAiBzdftVHE5m6DQt6wEGXlquxMhjhxPs10H2Ag/fLw363w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":307724},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"4568b36a0d421db080e584c25c80d238ef138039","scripts":{"lint":"eslint lib/ bin/","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","format":"prettier --write \"lib/**/*.js\" \"bin/**\"","lint:fix":"eslint lib/ bin/ --fix","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.3.1_1763048170496_0.48380477333210714","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"claude-git-hooks","version":"2.4.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.4.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"358ac09e0fb1ad6e0054b55f39a816f130ea1d66","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.4.0.tgz","fileCount":57,"integrity":"sha512-SDKkpqiBxQa9tfXmNvpS5tbdGJJZJqy9xbY7PZevtYCFkOYMSHzmlcRSMMq2JGa7axV81x7GCz3yrPFazg3iFg==","signatures":[{"sig":"MEUCIEUwKKRcNFcvE7710OgeK6ALCdEooMNn4RZ6/YbCIKKTAiEA3ewPeea3yoVWFgHlIxXFzWmbgWrTMoCxJ41wIC61byA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":316787},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"15a103dec7bdfbe6465b01c6bb9ff598608027f4","scripts":{"lint":"eslint lib/ bin/","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","format":"prettier --write \"lib/**/*.js\" \"bin/**\"","lint:fix":"eslint lib/ bin/ --fix","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.4.0_1763395017937_0.5752185576704636","host":"s3://npm-registry-packages-npm-production"}},"2.4.1":{"name":"claude-git-hooks","version":"2.4.1","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.4.1","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"06532fcdcafbe5656149bef4616837119ee75be3","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.4.1.tgz","fileCount":57,"integrity":"sha512-skaSkIwSz9mVKQklqDOxxWdiI8XVGrJCqmAHhv38Vbp6MnLuQdhrrG+/GialVQanHq15D4BsnQmnJhrlZcQ+pg==","signatures":[{"sig":"MEUCIQDV7XN2sAT79+kmEIEXiJnXLnqp7o2EA4wIOk/xNo4APgIgRm+KfzmQ770MeafeBZXHRrC+hm42EHcXnzGxUd3aiac=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":322008},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"32319b287bf2cf9553ad7cec09db25e99def60e8","scripts":{"lint":"eslint lib/ bin/","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","format":"prettier --write \"lib/**/*.js\" \"bin/**\"","lint:fix":"eslint lib/ bin/ --fix","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.4.1_1763569937303_0.7015545796897344","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"claude-git-hooks","version":"2.5.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.5.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"206a5b19155a5a96dbca68f60ca601361fe6e44b","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.5.0.tgz","fileCount":66,"integrity":"sha512-0NqSu34cpE3ohrYIv/tdbFaGaFa8P9Fc9a2n8mYEw5lUpMl9e904UGMrguT4eZdBj0yissuqhrkCxZzFp7PNpg==","signatures":[{"sig":"MEUCIQDf7uRdr6EfX5nAsyO9waYfiCNzhnjQTCPeKRwUagCCcgIgLG6cyDG0cl4oTnd4xrlmwSYaw7Amp/cgb8Z+YeTD/O0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":443790},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"7d7273ff92adf10ad114368c00fd6a06bf045101","scripts":{"lint":"eslint lib/ bin/","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","format":"prettier --write \"lib/**/*.js\" \"bin/**\"","lint:fix":"eslint lib/ bin/ --fix","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"@octokit/rest":"^21.0.0"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.5.0_1764250524047_0.6982054345006699","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"claude-git-hooks","version":"2.6.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.6.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"5e4e5b6de2b8c08d00166b4229007d9843ab1822","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.6.0.tgz","fileCount":67,"integrity":"sha512-oaqWcTKnW/1Zzal/xrVUg7NYcudA9HbCexumpXAS8Me4SmVyeuhxxSOneSVg7B7pgRakFWTKh1tHyFzkhRDf6A==","signatures":[{"sig":"MEQCIAbuCC8O+x8JPW7I0F4axpfKPa4/D42+KOpQxuLpBbs3AiAX0ti+BxDT5BdX0K0/JzDNylE4csTBR4qYtPzsCjF+5g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":456908},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"766766032415959f5110ee53c3a3f5798f99b637","scripts":{"lint":"eslint lib/ bin/","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","format":"prettier --write \"lib/**/*.js\" \"bin/**\"","lint:fix":"eslint lib/ bin/ --fix","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"11.6.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.6.0_1764839133883_0.18950364376693707","host":"s3://npm-registry-packages-npm-production"}},"2.6.1":{"name":"claude-git-hooks","version":"2.6.1","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.6.1","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"c172d9b88c0e1eeb767a8d33c1e48e6dff94d9f0","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.6.1.tgz","fileCount":67,"integrity":"sha512-/Cl7DpUzK6RMOtbF+/CmlZ7fRDTD5cjJqh0gFNp4LJICOUwqmC+KWXYdA02IYDh5RmFgRIHXInAgQP9dUxnRUg==","signatures":[{"sig":"MEUCIQD9VvnzXYPStA7P4yPt0YVOILYXGwdhol5fhoRaURLzVwIgBA+AwNfP27pkpE8rHjtxWefSNO57m11AlPxBuT6m0Pg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":459973},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"b82bc18c23512f0d662a7c540853c1a3d03fdcd6","scripts":{"lint":"eslint lib/ bin/","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","format":"prettier --write \"lib/**/*.js\" \"bin/**\"","lint:fix":"eslint lib/ bin/ --fix","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"11.6.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.6.1_1764875266292_0.6473147974129445","host":"s3://npm-registry-packages-npm-production"}},"2.6.2":{"name":"claude-git-hooks","version":"2.6.2","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.6.2","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"e1d263cd0d0e1f4061485dc5c3113fb47d5393bd","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.6.2.tgz","fileCount":67,"integrity":"sha512-UEVDgWY4ldVKwLC4En4o9BAdaCZ0/1maqDgdS9iudSCCoR4c1o5R1Q6+N8HDFu5svy5TNZ4/oilJUlpuwfxdpg==","signatures":[{"sig":"MEUCICWVnat8gF8s27Qd5rqaZpFSxATR/hUk8M7GT47aa2TKAiEAnDACgSWNHkoB/mGqEzYc+uL/dXZ992ncWeDhZokoikk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":462367},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"9325bd53996d38b8dfdb329faba160c0e63ced66","scripts":{"lint":"eslint lib/ bin/","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","format":"prettier --write \"lib/**/*.js\" \"bin/**\"","lint:fix":"eslint lib/ bin/ --fix","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"11.6.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.6.2_1765667890236_0.06177668939225245","host":"s3://npm-registry-packages-npm-production"}},"2.6.3":{"name":"claude-git-hooks","version":"2.6.3","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.6.3","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"b3b940a9d5ae5707e6f21379460dbe97df000a07","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.6.3.tgz","fileCount":67,"integrity":"sha512-Qk9fUXF1xSQv0mfm4T+RqefscqwJhpx/hbaLBbYaLNrW90/TkXFVNBv2Gji19a6zHAFtHNf+3nzgusxuXalmIw==","signatures":[{"sig":"MEUCIQC82kSJuWeqzCTvH5jHpwm8Tf/b09qlM5K6jSVCp1tMdwIgHNvoQKHQOkjnc3bdTkwy1Up5pX0RhpeVTLgR0yspBXo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":465367},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"79fe36b18370c65c13ad5cf9868d9032c25230f7","scripts":{"lint":"eslint lib/ bin/","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","format":"prettier --write \"lib/**/*.js\" \"bin/**\"","lint:fix":"eslint lib/ bin/ --fix","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"11.6.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.6.3_1766150348020_0.6959683558764678","host":"s3://npm-registry-packages-npm-production"}},"2.7.1":{"name":"claude-git-hooks","version":"2.7.1","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.7.1","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"801f6ca230665b8ecc3872c20aa5f4ce3f736755","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.7.1.tgz","fileCount":67,"integrity":"sha512-cTM4cjPsPwdYrAsmY7CDv8addkt3KxN8uAg07Q+p/NdFPGNxSR+Kyvu2TCfW/YPCdMHq4THDVT13XTJlrimw1Q==","signatures":[{"sig":"MEQCICcQjhEF3e0wMXVJD+ap0qgQ4ExAhKNc9tZ57HVbIFikAiADEJbmyq8IKI65rlHohT4uxpO4GF23qWbYgDPXI6ePjw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":475630},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"437f6dbf609273deab0c3eb841e63b9aca42ded0","scripts":{"lint":"eslint lib/ bin/","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","format":"prettier --write \"lib/**/*.js\" \"bin/**\"","lint:fix":"eslint lib/ bin/ --fix","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"11.6.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.7.1_1766485781686_0.3598461152331942","host":"s3://npm-registry-packages-npm-production"}},"2.8.0":{"name":"claude-git-hooks","version":"2.8.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.8.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"46dfd7426b389d83c23ea2050f24c51f9f99a5b1","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.8.0.tgz","fileCount":68,"integrity":"sha512-z1jboXG1s7Q+fvxVl31WwAOjzZbJhw3+aVAdHrj33lA4iGqEAI//UOkjCoGwyc6scRm8B3vXBzu9fstOkk0gbQ==","signatures":[{"sig":"MEUCIHJHD/CtkZj5Ymh4/cuM7+Mx9oVStUvpVG5+JEKMwd7/AiEAmkhsbvNn/91AUTNozmZ0Ysk4PbJDdYcLK6fNJ+9okcg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":505604},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"7f556b112012c4a30783a942a7061979d0eb0701","scripts":{"lint":"eslint lib/ bin/","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","format":"prettier --write \"lib/**/*.js\" \"bin/**\"","lint:fix":"eslint lib/ bin/ --fix","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"11.6.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.8.0_1766579591789_0.27643687065563505","host":"s3://npm-registry-packages-npm-production"}},"2.9.1":{"name":"claude-git-hooks","version":"2.9.1","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.9.1","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"5a28470b6389f5d87a35aed2df2b2a00a5748832","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.9.1.tgz","fileCount":69,"integrity":"sha512-zXH+Tl5Wvtn4YU0szDNPQbH63WZ8ZPkG9vkDkz8b+1g30Je6QHW91qwsMzoaCdG/1WsrFCtMl1O3tX4jlA9jTA==","signatures":[{"sig":"MEUCIQDJ11URKDmUhme2GaFrtSMS4XXyMUY8qi31vIOPkUVePQIgaUWTdLc8PcINvhrHCkccQieveIOEZAibBx6E0EY2nmE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":533520},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"e8a4cbfbfff13c17fe15a1574dbb4928594bb037","scripts":{"lint":"eslint lib/ bin/","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","format":"prettier --write \"lib/**/*.js\" \"bin/**\"","lint:fix":"eslint lib/ bin/ --fix","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"11.6.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.9.1_1767119438041_0.7366220201135805","host":"s3://npm-registry-packages-npm-production"}},"2.10.0":{"name":"claude-git-hooks","version":"2.10.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.10.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"f85838503863fa673eb0402cb12ee34ed2381e4b","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.10.0.tgz","fileCount":80,"integrity":"sha512-gJGLNyN/XSz42XKGRRW3WdW4N6scID8Xm/t4kFNQdbfeuvQgz1nZXHEYw5VcY+KzY3+PJknxon1m71t6XEOpSQ==","signatures":[{"sig":"MEUCIQDSAez1nsvFkkuffGIui+WmUNeWzRnkwd9s7k7hjC1kbwIgUU5q2gsk+DgtfMfetJu2p3H5LA3XPYuy19xOEDDGyis=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":501308},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"efedf7fcddebd5fffa9dd29ef5b1914afef04ca1","scripts":{"lint":"eslint lib/ bin/","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","format":"prettier --write \"lib/**/*.js\" \"bin/**\"","lint:fix":"eslint lib/ bin/ --fix","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.10.0_1770112321818_0.8487984385529104","host":"s3://npm-registry-packages-npm-production"}},"2.11.0":{"name":"claude-git-hooks","version":"2.11.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.11.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"db792941363c2c22f360d86438cf2f362c37d320","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.11.0.tgz","fileCount":80,"integrity":"sha512-Cz34YejbX4lGZchx+TXuTt8dVmMu5ZbVddNBaD9Ge3xNYD8VK5aKFjk3UkfnLjNrdYiH5NqHiTlFEIVw4tonFg==","signatures":[{"sig":"MEUCIQCHG7lGwYDG8Xx5spOvjbacGBBZtyf7kjBxl7wSeOR6xAIgMg2lTlAsjnoScHlgiQ+oVdmdawWFEkUc8yF0wmRSe2E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":515060},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"b5151b46505befc404769c8b23faf649c0e11697","scripts":{"lint":"eslint lib/ bin/","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","format":"prettier --write \"lib/**/*.js\" \"bin/**\"","lint:fix":"eslint lib/ bin/ --fix","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.11.0_1770123249350_0.6784276745276687","host":"s3://npm-registry-packages-npm-production"}},"2.12.0":{"name":"claude-git-hooks","version":"2.12.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.12.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"d526f1642f267d9f25186bcb2da88306b64b10c6","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.12.0.tgz","fileCount":86,"integrity":"sha512-Ubbo5ppImZDmpCXe9c9T9OkmeEKuLwiOXwD2+r6GSolW1vKJdkFbigHWle8Hw/fa30ax6ViS2lUxhtzoeti0jQ==","signatures":[{"sig":"MEUCIQD735lhafnTagPge/+ZDImx2a6fUutmn4fYctqETlqTQgIgHRNjIvRF6WZi1q1pOqsEwaT1uYF9l5L0JhXw4SDYLYU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":599300},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"4d3702789f70fc09986abe5ed616f2c956921735","scripts":{"lint":"eslint lib/ bin/","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","format":"prettier --write \"lib/**/*.js\" \"bin/**\"","lint:fix":"eslint lib/ bin/ --fix","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.12.0_1770149280632_0.09632078506708819","host":"s3://npm-registry-packages-npm-production"}},"2.13.0":{"name":"claude-git-hooks","version":"2.13.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.13.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"6ba1185f39204b8bef806cd8a1892a3a25d0d58c","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.13.0.tgz","fileCount":88,"integrity":"sha512-98c9k36ydKY8fTE2COgI7mui+3syXsX9F8DWHMK3cDM8pceRR9jm/zwMOFtiPd8dcjbyp13TBKa3HWuSSX6Fpg==","signatures":[{"sig":"MEQCIGCUUPzSpTY823YmIRi7Fng1uYMWyuyK/MVRAIYnEqaPAiAdNzjW8akUGOuM9pQNr12dVMzXvfOgGS2DT0pWJGsyhA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":632504},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"d79c8145f470b7ff68442164eb97b6d9083eacec","scripts":{"lint":"eslint lib/ bin/","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","format":"prettier --write \"lib/**/*.js\" \"bin/**\"","lint:fix":"eslint lib/ bin/ --fix","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.13.0_1770284918436_0.9688903564547491","host":"s3://npm-registry-packages-npm-production"}},"2.14.1":{"name":"claude-git-hooks","version":"2.14.1","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.14.1","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"22e876c2d1237e2e6ecfcb8d60ae25d6ed735365","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.14.1.tgz","fileCount":89,"integrity":"sha512-g1DSvF26VhOQQBihtScb3HmsELd1mMCk7qwKFThQR2zqawrfJaQfqHTH2z0RzEPdiDQGlpUo+9wmbsxtLc+Bag==","signatures":[{"sig":"MEYCIQDkmHzPcCMHVAmXYM4MDIHz+zRLzi+UTo7iA6kzTvA/rgIhAJXcC9eEe1TLRQJJDblysrS/SKO0iz+rplLgabWODIHj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":664308},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"0c02a7d29d7afdc133d90c5e3dc0f89b44414a8c","scripts":{"lint":"eslint lib/ bin/","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","format":"prettier --write \"lib/**/*.js\" \"bin/**\"","lint:fix":"eslint lib/ bin/ --fix","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.14.1_1770383297319_0.2821578312764219","host":"s3://npm-registry-packages-npm-production"}},"2.14.4":{"name":"claude-git-hooks","version":"2.14.4","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.14.4","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"57d666d49dfee7b404c32107a4b49250a678aec5","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.14.4.tgz","fileCount":89,"integrity":"sha512-jLhUghJM1U1lrjdEqPCOArB4fYp0GnWJYBGz4Pp9WW0wNAEC/+nszLuHbTB21k45xA/FlvyisUI1yl+0fpGWwQ==","signatures":[{"sig":"MEUCIQDoy2/BelonG2GtGeNNlPrljI9DDUexJskUf6Sbvry0RQIgQgmDdRh90lUQnTOkLWS9gKAjqUYwbUOWuTo5qg1V0gc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":671765},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"45fb7f399f246313c52ad6f71aec42cf54474aa2","scripts":{"lint":"eslint lib/ bin/","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","format":"prettier --write \"lib/**/*.js\" \"bin/**\"","lint:fix":"eslint lib/ bin/ --fix","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.14.4_1770386959202_0.20421294641669485","host":"s3://npm-registry-packages-npm-production"}},"2.15.5":{"name":"claude-git-hooks","version":"2.15.5","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.15.5","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"92af1ade432b8b58855226dc098f1329fd0ede92","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.15.5.tgz","fileCount":89,"integrity":"sha512-uv9HIwJS5sOa0ljNjuD7DFSWZpBrUxPtYN0G8aFwczxHHT8P2qVn5MmDMy8lDRZ1s4KZ+3eFzSlKaZWIR0KYrw==","signatures":[{"sig":"MEQCIGbgELLYDn+oqHkGkKrC9/cIeh8s++izQiLeX/VGvl/GAiB2lzkN/rvi2Vhq6Xr7nH0cYwAKrnl1nyE4FPx2TwB2ZQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":677167},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"8d7e1aa76f15b7798305b3d865b12d102b74ff4c","scripts":{"lint":"eslint lib/ bin/claude-hooks","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run test:all","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.15.5_1770921589767_0.8274557518754029","host":"s3://npm-registry-packages-npm-production"}},"2.16.0":{"name":"claude-git-hooks","version":"2.16.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.16.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"560fdc9a4b49ac727c0bafc0430f138eb9491ffd","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.16.0.tgz","fileCount":89,"integrity":"sha512-VEL35nRzWWCP4lFiWoOQi5HngSyKPAgMFJLN1ZHAjO6yC6MDkyQttmE0zc3wkibTE/IWATTh/6n0zc8LC82jPA==","signatures":[{"sig":"MEYCIQD/naXGI6kX63MdGPx4UGplxGjRZMKYzzDLQ9dFLQMbHAIhAO94GrQCA0fHIk3u8omXLszzKxfl3MvqmssTxfao+MCV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":702684},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"270a32e1e55dac907770a0a893c28bc34642785e","scripts":{"lint":"eslint lib/ bin/claude-hooks","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run test:all","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.16.0_1771189269028_0.3078336030974391","host":"s3://npm-registry-packages-npm-production"}},"2.17.0":{"name":"claude-git-hooks","version":"2.17.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.17.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"ecbb40b9be282647bdcd36ef187e3145a983cf95","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.17.0.tgz","fileCount":89,"integrity":"sha512-6I6mXrfSYm7fLDsuy8P4Fwnf+2QG72/F5xIIrbpuZDsqTGMaI9wD+M5AmxzIPnFYaumb17DDxDUKhAjAeCL0qw==","signatures":[{"sig":"MEQCIDcN6lPXtoI5+Bog8CitYugGeSQj2Io6vaD/EvhxB8niAiBfFLeiW3aKoQ6pHM24yv47DhdfYhKiRfEYe6qojns/Yw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":696450},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"43b73689701c9181511746dfc5d8ca415f6b5515","scripts":{"lint":"eslint lib/ bin/claude-hooks","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run test:all","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.17.0_1771241006018_0.6591695397263646","host":"s3://npm-registry-packages-npm-production"}},"2.17.1":{"name":"claude-git-hooks","version":"2.17.1","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.17.1","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"969ef03396b1ccdc284c7d472e5fd7edd200acdd","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.17.1.tgz","fileCount":89,"integrity":"sha512-MDrunk+CjyHi3sruelmiheTxXe9woZTCDALpB0KfFH3eqsB9p02w9onCB/FhaD4LewbrxoCBlFp1+DA2cI6p/g==","signatures":[{"sig":"MEUCIFciUoqaD3jmwp/aNfT4tg/cGmOEcyW3bdlePjEassOoAiEA6Hcs9o2abFG3np6Wy1agTOVkLCVDnFutFSut0Q7KQw4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":698118},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"1f24658dd39c55a1131830dbf0238b9eb4a93ec4","scripts":{"lint":"eslint lib/ bin/claude-hooks","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run test:all","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.17.1_1772470117483_0.28481289558634604","host":"s3://npm-registry-packages-npm-production"}},"2.17.2":{"name":"claude-git-hooks","version":"2.17.2","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.17.2","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/pablorovito/claude-git-hooks#readme","bugs":{"url":"https://github.com/pablorovito/claude-git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"6a94d04590fc1b87ea9d080f71678ff2637f6542","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.17.2.tgz","fileCount":89,"integrity":"sha512-ef+ZZEHrQIpSbnBm5xbIovYQ3wXH+ywe1XlKB0dlo7/9f6JlPHyGQwZRjOIc9ReL+O7ZSk1oac4x6humLg6dnQ==","signatures":[{"sig":"MEQCIH8oglCuE/PkwDSGyN1JOsnz8CelwYTwvtyUs9JBQQy3AiAnPN29Ef+iMRerutpS1rR203RFQBYl3hrUWgrvh5p1dQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":701014},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"4a7ef67f3e507429c5b522ba4926386e20b7fa4d","scripts":{"lint":"eslint lib/ bin/claude-hooks","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run test:all","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/pablorovito/claude-git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.17.2_1772529765012_0.06981280301360404","host":"s3://npm-registry-packages-npm-production"}},"2.18.0":{"name":"claude-git-hooks","version":"2.18.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.18.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"068f34986431e6f7a88ba38265c5e4c92a5d9aee","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.18.0.tgz","fileCount":93,"integrity":"sha512-KodhmPHkCzbHYrWdbOkLSorIheUTe33kEZ4I/z+jcAXlkwOwsfi/ZY7cIkbH50IohpaIRedYwpxtbiZ91q90xQ==","signatures":[{"sig":"MEYCIQDC+O9mLwFIvbepuw6SZTpuMFuL2f3ycyA3mIkmtdTwRwIhAN+ZD+Z0Zst8w4SDVG9GLHYBVAv0/TWlB0ccJjLb+TVX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":761730},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"672f5a7ce8aa043ed3b3cabdafa6b5937b841922","scripts":{"lint":"eslint lib/ bin/claude-hooks","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run test:all","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.18.0_1772568508612_0.4687324243826414","host":"s3://npm-registry-packages-npm-production"}},"2.18.1":{"name":"claude-git-hooks","version":"2.18.1","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.18.1","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"3e58ae69c57e14ea686ff481409d2f2f55a1029f","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.18.1.tgz","fileCount":93,"integrity":"sha512-7ceSK9RV97cDZbNlfqJYa5RfCkX/ehOq4PiZhNlAbN4g9qC0ZcWpRuBY9Csl/Srd8fN/YaR3NZYn1xKv4p1vIQ==","signatures":[{"sig":"MEYCIQCcFn984t6/oXYKLOB7am+H4z3SGlgh1pOwr0mmW1187gIhAL9Z0ioDdmzlZP3ELAm0kNw7hJkXWNsKgkMkSzGvOqS4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":767331},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"5e5c26ab590291b22a32296d00dfc99578cf9709","scripts":{"lint":"eslint lib/ bin/claude-hooks","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run test:all","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.18.1_1772629162093_0.6134982123213464","host":"s3://npm-registry-packages-npm-production"}},"2.19.0":{"name":"claude-git-hooks","version":"2.19.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.19.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"0fea3954602fcd3e5fe830d71cc40b7b206b9164","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.19.0.tgz","fileCount":94,"integrity":"sha512-eLIhs7A7UM1lB5Oo9e/uYNc1R3P6VQuPS//jdnnv+XMW4BOnC3cCHXnLfXm5xckxNFYuI6PK9MeXTUX8FDNhKw==","signatures":[{"sig":"MEUCIQDftTZSdn8mYWxF5WGANqub4Ox8FC1LR1lO9D6uvKqz1QIgEOMuHvBbK3qMa6W3BY7UPDMyrNDGdZOWGykjxK+ge/g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":804723},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"e0f267adac47746717a457de919c8ca4286a76aa","scripts":{"lint":"eslint lib/ bin/claude-hooks","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run test:all","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.19.0_1772806401702_0.9331284973370098","host":"s3://npm-registry-packages-npm-production"}},"2.20.0":{"name":"claude-git-hooks","version":"2.20.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.20.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"8eadf0931edc5d64bf7ca485edee5d5427248314","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.20.0.tgz","fileCount":98,"integrity":"sha512-i2/ztddlU4VOXu9eyXJt3EWccVHvaDK3NFE8JM9TlM/959S8YymlbsNllSVsNO+jCLbUjB8dMryVp8q0O+P/Og==","signatures":[{"sig":"MEUCIQCjNrimW9IF9W+/IpkmwMxgxe7Hr7Xq3C6B8VNLq13VmQIgfOZzlB9z6IiFAF+MII87JpbvQtgszAsQqPzl83OcDL4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":836580},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"98176a09eb152b1398f5b971487c8ddd604ef2dc","scripts":{"lint":"eslint lib/ bin/claude-hooks","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run test:all","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.20.0_1773076107172_0.06648270635479481","host":"s3://npm-registry-packages-npm-production"}},"2.21.0":{"name":"claude-git-hooks","version":"2.21.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.21.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"2717cf00fde81373dceab7d5c3cff5488b9da796","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.21.0.tgz","fileCount":104,"integrity":"sha512-Wyhtm81b9IzevsSpRaG+k56N5SYevbJVjq5iRTGLhPs/jbT0DEZv2lfkrnaFUGIYDn9tJXmhxBIrnTyGXgqH/Q==","signatures":[{"sig":"MEUCIQDLjHjZstzjLu6uFU53TBGlbnHyM1CMwZ2aEKzuJFILCAIgYxmvS003hhl1f+mpZuBZxLEkNZJCeqU+DXqw5c/iUPA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":893691},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"cfa3c14d643047c710736d1f8edabedb6801488d","scripts":{"lint":"eslint lib/ bin/claude-hooks","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run test:all","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.21.0_1773161971279_0.8886730031611512","host":"s3://npm-registry-packages-npm-production"}},"2.30.1":{"name":"claude-git-hooks","version":"2.30.1","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.30.1","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"af36b1b6ebe28d294e9a29ee3ac4ebf83e4c6638","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.30.1.tgz","fileCount":112,"integrity":"sha512-gl1Bo/sNHU4Xucq9TKtbu/xOM9SpgAMnUe/1wUq1zO6hbn+xbNi8Bp8r7K93LK1FYba78ROYtypLhy0qri7JdQ==","signatures":[{"sig":"MEUCIQDi8582Wz59ngk8cx0wS60RG/da6qlsz6xYI0r2v/WAtwIgVb/pE9YAket2H8gmq//CTt9pMa6mINdJPtlJboaQX8g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1107995},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"13bc35cc35d267af7fd61df5d57735f172c6a336","scripts":{"lint":"eslint lib/ bin/claude-hooks","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run test:all","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.30.1_1773778294947_0.04583932454287143","host":"s3://npm-registry-packages-npm-production"}},"2.30.2":{"name":"claude-git-hooks","version":"2.30.2","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.30.2","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"47744e431048b96a9b25501febc6150151fcc74a","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.30.2.tgz","fileCount":112,"integrity":"sha512-gwBvODQRXj5IFSnBxBoe9/j/AnrDAwJp8NfL1x+s+o2KE6ZGmmX81ONNjLeMiK5dRNiI6So4VHOV5XuSG9vnaw==","signatures":[{"sig":"MEYCIQCKFbzdVgVU2b4zmt4fWmfcRRc12VTlF27nfY4FQ88SCwIhAObD6sfLtLn+0YhexcUU0bdA4921Xxmv4wp4gIplTI6f","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1108774},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"8bc5e3d83d2c73faab74c6ec8c8423c4bde5566f","scripts":{"lint":"eslint lib/ bin/claude-hooks","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run test:all","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.30.2_1773850576331_0.5281362110901673","host":"s3://npm-registry-packages-npm-production"}},"2.32.0":{"name":"claude-git-hooks","version":"2.32.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.32.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"f8a8be578d05e2b192fe4d3e7a36753d1209ddd0","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.32.0.tgz","fileCount":115,"integrity":"sha512-ci1RRFXAEavrVmIxbUSCR9rJESvKxEJW7w2nNhub3RsvtPyLRUjKR//CBJATc4npS/UtqNWlwRYNSRm4wLEifA==","signatures":[{"sig":"MEQCIAZBWFNncMqflD7g3luEqoo9iz7hE//O5VU7bqgmKQimAiAfcxjnjEpvpffzuxL8a33MN0sClp7MrKqUGtccOVtrAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1140543},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"f117e9dfc164bd3afafe766f68511edc16309c3a","scripts":{"lint":"eslint lib/ bin/claude-hooks","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run test:all","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.32.0_1773940683262_0.7427590066459491","host":"s3://npm-registry-packages-npm-production"}},"2.33.0":{"name":"claude-git-hooks","version":"2.33.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.33.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"5bccd593d62c2b1af1168cb02e4377b1021207b9","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.33.0.tgz","fileCount":116,"integrity":"sha512-PLGV4pvg4rsERJAVdlI6SQq2efDmp5cS5/QUUyOlA2AdB1fDlvZWpwKlckJdRWXmqPlfYPpxc81UHuxH1hRchA==","signatures":[{"sig":"MEUCIFC7aUdERMtGLAxpGFpecvjdNZYYFTtHHC49m9O4Sv0XAiEAuDRX94Gvl4+lCbSOpskgwh3MFyGRQN61O6nAsXr28gI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1152127},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"ea9969eaef20ba222ae730a0d99c54224120737c","scripts":{"lint":"eslint lib/ bin/claude-hooks","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run test:all","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.33.0_1774260952860_0.23129488820307142","host":"s3://npm-registry-packages-npm-production"}},"2.33.1":{"name":"claude-git-hooks","version":"2.33.1","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.33.1","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"b24c1dd206bbc3814e3d4fb7b1cf462d5b8d374b","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.33.1.tgz","fileCount":116,"integrity":"sha512-WgGvKc6f9V5PvEETw3FE0xU9gPgHd8wyUeYGUVs8IdCUyJSjwYryEodHe6LekapfsGfCVRUDNJa2usuOVstB2Q==","signatures":[{"sig":"MEQCIGyd6yZKtFwlHwRAeOAvEqPRkQvimxWQSIrt2gmG1qdeAiBlTiGqcPp62WbASlQZSuBnNwyZejmZRix0pXZguLGskw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1162641},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"e8a6365dfe5798ab3ab3e812ef534b8fdd26a052","scripts":{"lint":"eslint lib/ bin/claude-hooks","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run test:all","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.33.1_1774533207222_0.12604006720141703","host":"s3://npm-registry-packages-npm-production"}},"2.34.0":{"name":"claude-git-hooks","version":"2.34.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.34.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"54e3e8ab89fd69858aa58a1d7bdffd470778e09e","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.34.0.tgz","fileCount":119,"integrity":"sha512-4rL9i6oYbjJPcF1suXUwXc3D1mNnBsVO1aAJSLBOmlqtJGVCnVYHt2T5q5+57UY7Qn0mLwUElzGTp5fk426umg==","signatures":[{"sig":"MEQCIGVSa90hQ8h7EyUbdF4G8kFl2CjiJi19gr79NdpwZClrAiA++HS/KoyYYz0n8b+p3PPnz6BFQLW+SwhvfmFmdfwvWg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1209259},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"9644c44b6a854e4f0b1271dbdc74a2801ccc8b38","scripts":{"lint":"eslint lib/ bin/claude-hooks","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run test:all","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.1","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.34.0_1774614967482_0.6171374934439138","host":"s3://npm-registry-packages-npm-production"}},"2.35.0":{"name":"claude-git-hooks","version":"2.35.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.35.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"d2d29aca9923b47935af9ed86291421e31f1f065","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.35.0.tgz","fileCount":119,"integrity":"sha512-6F7BaqavLf6QuuoTgdF9FM41cuM+mZjZuSO+l/w0e9E9+ZMlNsf78WSnh8N+bH9jlGgkNqWl7k9SGtjik9QxlQ==","signatures":[{"sig":"MEUCIQD3KZcKPACiwiYUKETEfdiJzBn291l5qBYpyokYcJIQAAIgaakl7+T/j7zKCLIC0RV8agkJAciV6jvFO6qx2RX7zwA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1215256},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"2e592ef359812c7889de273a6fe8ab540d8dde12","scripts":{"lint":"eslint lib/ bin/claude-hooks","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run test:all","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.1","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.35.0_1774643530311_0.4835479749709919","host":"s3://npm-registry-packages-npm-production"}},"2.35.2":{"name":"claude-git-hooks","version":"2.35.2","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.35.2","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"23222be19d3b9e6e382c8c4f56777ad5028812c8","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.35.2.tgz","fileCount":119,"integrity":"sha512-tf6G1U+4i77PhVdMsi6xs95QZR6E2xVVeRy/jLvjfKxe8m1/Lj8/uPpRGZVh0METaGIY3ffbNiSPgu9npOQvsg==","signatures":[{"sig":"MEUCICC6XGRcLEZERQ5wXktNkajlxVixOswXttd2X5CMxjUjAiEAivgNnX8brSFL3CONTzNwoyzWomgZRxgwnvIJw5JqRmI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1235302},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"f1df9155972c825b92ff5834188a91d666473e5a","scripts":{"lint":"eslint lib/ bin/claude-hooks","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","library:graph":"node .library/tools/generate-graph.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","library:tokens":"node .library/tools/measure-tokens.js","prepublishOnly":"npm run test:all","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","madge":"^8.0.0","eslint":"^8.57.1","prettier":"^3.2.0","@types/jest":"^29.5.0","js-tiktoken":"^1.0.18"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.35.2_1776108837591_0.4795230383635263","host":"s3://npm-registry-packages-npm-production"}},"2.35.3":{"name":"claude-git-hooks","version":"2.35.3","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.35.3","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"cd7c08af52497e6f8f2fb6f2bb4c873abfc60a24","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.35.3.tgz","fileCount":119,"integrity":"sha512-itcfyou/AXeXgcHJAMDsEMaNjdToTWNUcRbzfobjeDMqNyc5MnyJvQp4yN/1/tmSiCzvMYU/Yt2XbwSbzMyIrw==","signatures":[{"sig":"MEYCIQCPhzjW8g8xjoEqEnKD21oY/171AHUjR4VjMEvIpOJijQIhAMzzb6xT+hMQ3PC9l20yBloveXfMDZcpEHhffns0MNmH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1238363},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"98b8de15d8395894d7a2de1a77402a2872007c6b","scripts":{"lint":"eslint lib/ bin/claude-hooks","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","library:graph":"node .library/tools/generate-graph.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","library:tokens":"node .library/tools/measure-tokens.js","prepublishOnly":"npm run test:all","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"@octokit/rest":"^21.0.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","madge":"^8.0.0","eslint":"^8.57.1","prettier":"^3.2.0","@types/jest":"^29.5.0","js-tiktoken":"^1.0.18"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.35.3_1776866552748_0.6686599476629524","host":"s3://npm-registry-packages-npm-production"}},"2.43.0":{"name":"claude-git-hooks","version":"2.43.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.43.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"185ff8b781e586582d519084f71a1408b00886ac","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.43.0.tgz","fileCount":122,"integrity":"sha512-gQz3crlR64NjshwbBD+dyeufuPWSzrHdqkXeG5zpVAejnej2e5pR6XZNKJtnqiXQfOjpQRaPgXRfqK5rWtjX4Q==","signatures":[{"sig":"MEUCIAeXl59vYbvm8Ito624pKR7B0a8sIXj5ixsy6CcGFemtAiEA0VCnHek1Uu59Ppuke81+GNPptdx5VnaygK0oZ3aJ5Pw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1219909},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"78442218adf48012e7a7748995e5684b0ff80e44","scripts":{"lint":"eslint lib/ bin/claude-hooks","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","library:graph":"node .library/tools/generate-graph.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","library:tokens":"node .library/tools/measure-tokens.js","prepublishOnly":"npm run test:all","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"langfuse":"^3.38.20","@octokit/rest":"^21.0.0","@anthropic-ai/sdk":"^0.91.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","madge":"^8.0.0","eslint":"^8.57.1","prettier":"^3.2.0","@types/jest":"^29.5.0","js-tiktoken":"^1.0.18"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.43.0_1777907508434_0.2665039360525139","host":"s3://npm-registry-packages-npm-production"}},"2.44.0":{"name":"claude-git-hooks","version":"2.44.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.44.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"b636aac23c1623262c94d85a66063d4fad674424","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.44.0.tgz","fileCount":123,"integrity":"sha512-uAN/ZAVFpEusw2rBFcl2BdzecZ/TTao93eDo9Dtg0lyEkKwSln1rdJTURFxDbP2U5Eio9PCLlM2V6tnqxbptEA==","signatures":[{"sig":"MEYCIQDQ8ZPkJtWxYIhZuUFadmV4vEER7gmiG+2bZdHhuJ8/IAIhAJuSwcWA6iZ61PV7xLbxqQ1aiqE3uRuy5AM7bbUAKdrg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1225208},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"84c2d492b084a9c837efb537213623f599b9162f","scripts":{"lint":"eslint lib/ bin/claude-hooks","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","library:graph":"node .library/tools/generate-graph.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","library:tokens":"node .library/tools/measure-tokens.js","prepublishOnly":"npm run test:all","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"langfuse":"^3.38.20","@octokit/rest":"^21.0.0","@anthropic-ai/sdk":"^0.91.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","madge":"^8.0.0","eslint":"^8.57.1","prettier":"^3.2.0","@types/jest":"^29.5.0","js-tiktoken":"^1.0.18"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.44.0_1777919980069_0.5451729828129204","host":"s3://npm-registry-packages-npm-production"}},"2.45.0":{"name":"claude-git-hooks","version":"2.45.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.45.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"b3be7767b1abbcd1b3f79dc1732546ab8e81048d","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.45.0.tgz","fileCount":125,"integrity":"sha512-HMjLH6qZZbQ64kK/omkbo1n0yRfJLFHMPDRyDZl+GOmQ7BeNpQWpeCZn2bsW3PhFEttk5U/+K2nvNe9AubWYdA==","signatures":[{"sig":"MEYCIQDvH3uhGp07x3JuinFlSlOAAMdjwh75ROvf7kF+FzQbtQIhAJOVuzDyKHkm1WVSUfStXoj5j+h+Tvc2ut9PnBfJJ7kF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1240072},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"2f0385ee605e9a3b458ecba0dc64e9d39a21ea89","scripts":{"lint":"eslint lib/ bin/claude-hooks","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","library:graph":"node .library/tools/generate-graph.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","library:tokens":"node .library/tools/measure-tokens.js","prepublishOnly":"npm run test:all","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"langfuse":"^3.38.20","@octokit/rest":"^21.0.0","@anthropic-ai/sdk":"^0.91.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","madge":"^8.0.0","eslint":"^8.57.1","prettier":"^3.2.0","@types/jest":"^29.5.0","js-tiktoken":"^1.0.18"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.45.0_1778694377480_0.9052604197352023","host":"s3://npm-registry-packages-npm-production"}},"2.51.2":{"name":"claude-git-hooks","version":"2.51.2","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.51.2","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"2d5a7438798e3491aa1ccc560ac8d6a8be2caa09","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.51.2.tgz","fileCount":125,"integrity":"sha512-1TiKtgKfReezoQBoKQaW8PlKri1X4jnnjDXsaXw2wB4NMieEkJ1rSAbEJUsDo7x3DiDnWMrDj9MESMsrXOo6jA==","signatures":[{"sig":"MEYCIQD7zOHVQP6htpTC16LOexprcKgwBnCHzcooJbmM0wm9wwIhANlUEKwxPifAjoH6EjTsMMrwbWdJEQ2mYX7PgOirX65t","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1255792},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"1c2d32ec88d4436bb26104e5b60f1847284a8e95","scripts":{"lint":"eslint lib/ bin/claude-hooks","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","library:check":"node .library/bin/library check","library:graph":"node .library/bin/library graph","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","library:inject":"node .library/bin/library inject","library:report":"node .library/bin/library report","library:tokens":"node .library/bin/library tokens","prepublishOnly":"npm run test:all","library:extract":"node .library/bin/library extract","library:validate":"node .library/bin/library validate","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","library:regenerate":"node .library/bin/library regenerate","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"langfuse":"^3.38.20","@octokit/rest":"^21.0.0","@anthropic-ai/sdk":"^0.91.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","madge":"^8.0.0","eslint":"^8.57.1","prettier":"^3.2.0","@types/jest":"^29.5.0","js-tiktoken":"^1.0.18","web-tree-sitter":"^0.24.7","tree-sitter-wasms":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.51.2_1779818330681_0.3318708380290727","host":"s3://npm-registry-packages-npm-production"}},"2.61.2":{"name":"claude-git-hooks","version":"2.61.2","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.61.2","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"9e314f60d0965d13d71936c0172b2a3431c239fe","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.61.2.tgz","fileCount":126,"integrity":"sha512-X/b0NnIkMc19IdL+SDlu4PMu0XBFixYIYvSgSfjBYz6ZwS2YHci+WYHv1uCF5Xmn4Uxe1qsOmqLLeLposm+M0w==","signatures":[{"sig":"MEQCIAuIfCil9gPGkO9P2c1KvbNiARdB5bNzCdKrUAM6am/LAiAd53CiIzSttyIv9FxVVmDcXqj5f8iWv5RZIFO4FHaHkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1281790},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"63c9ae7e09f7ebfa9bfdeb79b8d648d10b7bcac6","scripts":{"lint":"eslint lib/ bin/claude-hooks .library/librarian/","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks .library/librarian/ --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","library:check":"node .library/bin/library check","library:graph":"node .library/bin/library graph","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","library:inject":"node .library/bin/library inject","library:report":"node .library/bin/library report","library:tokens":"node .library/bin/library tokens","prepublishOnly":"npm run test:all","library:extract":"node .library/bin/library extract","library:validate":"node .library/bin/library validate","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","library:regenerate":"node .library/bin/library regenerate","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"langfuse":"^3.38.20","@octokit/rest":"^21.0.0","@anthropic-ai/sdk":"^0.91.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","madge":"^8.0.0","eslint":"^8.57.1","prettier":"^3.2.0","@types/jest":"^29.5.0","js-tiktoken":"^1.0.18","web-tree-sitter":"^0.24.7","tree-sitter-wasms":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.61.2_1780324365033_0.590066083006791","host":"s3://npm-registry-packages-npm-production"}},"2.66.1":{"name":"claude-git-hooks","version":"2.66.1","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.66.1","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"e4b072953681407502ef1cdf37ca0623180f3379","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.66.1.tgz","fileCount":126,"integrity":"sha512-rpOf43a67HbO8XyA9nMA2IwJxBjiVvYUi2DLPvWi4kn3Pl3k6qwlsJ+7vZOUFBahgjrIWbe2vHxN9oQXFJc3HA==","signatures":[{"sig":"MEUCIQDuXapgqz5TzHFp7Jb9l2qliFkCvMDNqWZO6LczhgdUFQIgRPeq86cuc0aMD1iwe8ynGwYshOYq+OPux20adLYJ26E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1306775},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"413e23169dd255e1311b121356da29cbd226a1c7","scripts":{"lint":"eslint lib/ bin/claude-hooks .library/librarian/","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks .library/librarian/ --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","test:e2e":"bash test/manual/sdlc-stability-check.sh","precommit":"npm run lint && npm run test:smoke","test:full":"npm run test:all && npm run test:e2e","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","library:check":"node .library/bin/library check","library:graph":"node .library/bin/library graph","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","library:inject":"node .library/bin/library inject","library:report":"node .library/bin/library report","library:tokens":"node .library/bin/library tokens","prepublishOnly":"npm run test:all","library:extract":"node .library/bin/library extract","library:validate":"node .library/bin/library validate","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","library:regenerate":"node .library/bin/library regenerate","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"langfuse":"^3.38.20","@octokit/rest":"^21.0.0","@anthropic-ai/sdk":"^0.91.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","madge":"^8.0.0","eslint":"^8.57.1","prettier":"^3.2.0","@types/jest":"^29.5.0","js-tiktoken":"^1.0.18","web-tree-sitter":"^0.24.7","tree-sitter-wasms":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.66.1_1781091642650_0.14084277977697446","host":"s3://npm-registry-packages-npm-production"}},"2.67.3":{"name":"claude-git-hooks","version":"2.67.3","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.67.3","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"86f907a7bf0150a4e94ea34805534ad377c31608","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.67.3.tgz","fileCount":133,"integrity":"sha512-JEofIZCa1OQIFOBHDy4IrNlrddktliTTyG31BnI1dKorCt+8++TsdxZs8NOMiZdXdhHp1Ph3gZoM2wL1+TyKcw==","signatures":[{"sig":"MEUCIQC1RisrZC4ELqCwzNcjzIb6+GXsFhhV4a98b9wj6ABQrwIgBeZXq0e9XE+nWgItwkMN9EbdynLID/8f2LghpHMfBNQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1373804},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"e05d151b05327bffa75614e93061ba4d2892944d","scripts":{"lint":"eslint lib/ bin/claude-hooks .library/librarian/","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks .library/librarian/ --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","test:e2e":"bash test/manual/sdlc-stability-check.sh","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","library:check":"node .library/bin/library check","library:graph":"node .library/bin/library graph","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","library:inject":"node .library/bin/library inject","library:report":"node .library/bin/library report","library:tokens":"node .library/bin/library tokens","prepublishOnly":"npm run test:all","library:extract":"node .library/bin/library extract","library:validate":"node .library/bin/library validate","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","library:regenerate":"node .library/bin/library regenerate","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"langfuse":"^3.38.20","@octokit/rest":"^21.0.0","@anthropic-ai/sdk":"^0.91.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","madge":"^8.0.0","eslint":"^8.57.1","prettier":"^3.2.0","@types/jest":"^29.5.0","js-tiktoken":"^1.0.18","web-tree-sitter":"^0.24.7","tree-sitter-wasms":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.67.3_1781250444727_0.9332913231267859","host":"s3://npm-registry-packages-npm-production"}},"2.68.0":{"name":"claude-git-hooks","version":"2.68.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.68.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"aef5ad3fb207c090097d265435730d44cd9a1a7a","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.68.0.tgz","fileCount":134,"integrity":"sha512-SEJjXSbQs6vZzOYAsZla4Fsb7J5gbwVqFyMsmqnY3b5cgRx2U2uVk3s4TIFxrKKp7/XAZ8G7Nv2iDcQya0Dh6g==","signatures":[{"sig":"MEUCIQD9w54+YqozVNmMgbg5yep8ToC67c9LLsqDRH7BgxNWhQIgdqKgEvKnCjpxnsx3X1JI5NR5djrYi6ipdxdtK5ujfhU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1383797},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"eafc2d2aba31bbd9d645b3019a270a12a55b8b19","scripts":{"lint":"eslint lib/ bin/claude-hooks .library/librarian/","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks .library/librarian/ --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","test:e2e":"bash test/manual/sdlc-stability-check.sh","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","library:check":"node .library/bin/library check","library:graph":"node .library/bin/library graph","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","library:inject":"node .library/bin/library inject","library:report":"node .library/bin/library report","library:tokens":"node .library/bin/library tokens","prepublishOnly":"npm run test:all","library:extract":"node .library/bin/library extract","library:validate":"node .library/bin/library validate","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","library:regenerate":"node .library/bin/library regenerate","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"langfuse":"^3.38.20","@octokit/rest":"^21.0.0","@anthropic-ai/sdk":"^0.91.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","madge":"^8.0.0","eslint":"^8.57.1","prettier":"^3.2.0","@types/jest":"^29.5.0","js-tiktoken":"^1.0.18","web-tree-sitter":"^0.24.7","tree-sitter-wasms":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.68.0_1781258502429_0.29919297202468487","host":"s3://npm-registry-packages-npm-production"}},"2.68.1":{"name":"claude-git-hooks","version":"2.68.1","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.68.1","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"33c1567a0960f5f33a251fc659e3dc61ff849308","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.68.1.tgz","fileCount":134,"integrity":"sha512-5elICKbyX83KF7+ZCX8Q0qzNwnShuivySl/Aq3D2qF86pCXzbpPpY3OD6EhE7Y2yAdQFJKmaysnt9STh1yfbJw==","signatures":[{"sig":"MEUCIATN5eLasE6/aJsGPLrVvVPzxZKUOVkook40L9hvh+DxAiEAyQGywRESJpB10XTXu9dFySAU82A30o1GR5X90RSsEK0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1385171},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"249e9a571479d88193265768abfeb19957b9fe2e","scripts":{"lint":"eslint lib/ bin/claude-hooks .library/librarian/","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks .library/librarian/ --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","test:e2e":"bash test/manual/sdlc-stability-check.sh","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","library:check":"node .library/bin/library check","library:graph":"node .library/bin/library graph","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","library:inject":"node .library/bin/library inject","library:report":"node .library/bin/library report","library:tokens":"node .library/bin/library tokens","prepublishOnly":"npm run test:all","library:extract":"node .library/bin/library extract","library:validate":"node .library/bin/library validate","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","library:regenerate":"node .library/bin/library regenerate","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"langfuse":"^3.38.20","@octokit/rest":"^21.0.0","@anthropic-ai/sdk":"^0.91.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","madge":"^8.0.0","eslint":"^8.57.1","prettier":"^3.2.0","@types/jest":"^29.5.0","js-tiktoken":"^1.0.18","web-tree-sitter":"^0.24.7","tree-sitter-wasms":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.68.1_1781271305255_0.7000701369690137","host":"s3://npm-registry-packages-npm-production"}},"2.68.2":{"name":"claude-git-hooks","version":"2.68.2","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.68.2","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"16616536a78854ccbfab005337defd08c4647c96","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.68.2.tgz","fileCount":135,"integrity":"sha512-aYbytOuThb737q9u9fnode7H4XNCujxETPBdM0JSRXgBT3EwFL852SQxddOBXf0RfQjrrAxB69v7ftvAZSsBqg==","signatures":[{"sig":"MEYCIQC+wTIT3okvY0wOEJ4OjzXQ/WCLMPS3nG8VBzFWz3kHrAIhAMIZRn8+gi79NNCvJ0S0hAOd9g8O1Rgnv36jPYJX9kTj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1395023},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"32288e39f440c1869fae182b433b059a0747e5ba","scripts":{"lint":"eslint lib/ bin/claude-hooks .library/librarian/","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks .library/librarian/ --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","test:e2e":"bash test/manual/sdlc-stability-check.sh","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","library:check":"node .library/bin/library check","library:graph":"node .library/bin/library graph","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","library:inject":"node .library/bin/library inject","library:report":"node .library/bin/library report","library:tokens":"node .library/bin/library tokens","prepublishOnly":"npm run test:all","library:extract":"node .library/bin/library extract","library:validate":"node .library/bin/library validate","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","library:regenerate":"node .library/bin/library regenerate","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"langfuse":"^3.38.20","@octokit/rest":"^21.0.0","@anthropic-ai/sdk":"^0.91.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","madge":"^8.0.0","eslint":"^8.57.1","prettier":"^3.2.0","@types/jest":"^29.5.0","js-tiktoken":"^1.0.18","web-tree-sitter":"^0.24.7","tree-sitter-wasms":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.68.2_1781610465801_0.9349530686988803","host":"s3://npm-registry-packages-npm-production"}},"2.70.0":{"name":"claude-git-hooks","version":"2.70.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@2.70.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"58e73a3600dbac7c3e6bb52aefdaef48f596ca4e","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-2.70.0.tgz","fileCount":140,"integrity":"sha512-sbYTfSRpcD7ZhtadzxR8vuesOWpy2OeDOnCLph39+qgEtSrSw1cfHHfYB0Xc68ljzqqeYo6gFLrn6TOL5+hWjA==","signatures":[{"sig":"MEUCIDxyLHsSU+cBevgL4K9UlkgR2oupOqS5xCHlrfJ7qPx+AiEA/P+P57SS7nQUSpJlrvLVNqHqXy6APwIrZjL3bVlKGqc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1418235},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"8ba94cb748024c87c0ba0317f6f41cefc413aaa5","scripts":{"lint":"eslint lib/ bin/claude-hooks .library/librarian/","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks .library/librarian/ --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","test:e2e":"bash test/manual/sdlc-stability-check.sh","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","library:check":"node .library/bin/library check","library:graph":"node .library/bin/library graph","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","library:inject":"node .library/bin/library inject","library:report":"node .library/bin/library report","library:tokens":"node .library/bin/library tokens","prepublishOnly":"npm run test:all","library:extract":"node .library/bin/library extract","library:validate":"node .library/bin/library validate","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","library:regenerate":"node .library/bin/library regenerate","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js --maxWorkers=1 --testTimeout=30000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"langfuse":"^3.38.20","@octokit/rest":"^21.0.0","@anthropic-ai/sdk":"^0.91.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","madge":"^8.0.0","eslint":"^8.57.1","prettier":"^3.2.0","@types/jest":"^29.5.0","js-tiktoken":"^1.0.18","web-tree-sitter":"^0.24.7","tree-sitter-wasms":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_2.70.0_1784062993996_0.2368160514286326","host":"s3://npm-registry-packages-npm-production"}},"3.1.1":{"name":"claude-git-hooks","version":"3.1.1","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@3.1.1","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"1ee7d70fe6f1c5c0ee0b280c99719850c1c4206b","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-3.1.1.tgz","fileCount":141,"integrity":"sha512-4tH1BmW0KXRHd61KWMcoq30rv5rqMsBmEw8vd75P6IU2a2Lee6kzT3Dhvn1lKabpCu0kCwSrV3IRa9DdSmLNnw==","signatures":[{"sig":"MEUCIEBY1nC1LPEVWN6+BO3O3jZfSWq91NGYx+hdli6MuvcMAiEAvql45vpTjjTZuHnqVG2LsKSXRtI9UbwzzcDK3YvKrtM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1491587},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"17be3617635021dfb163dbb806a4279d8e95ee50","scripts":{"lint":"eslint lib/ bin/claude-hooks .library/librarian/","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks .library/librarian/ --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","test:e2e":"bash test/manual/sdlc-stability-check.sh","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","library:check":"node .library/bin/library check","library:graph":"node .library/bin/library graph","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","library:inject":"node .library/bin/library inject","library:report":"node .library/bin/library report","library:tokens":"node .library/bin/library tokens","prepublishOnly":"npm run test:all","library:extract":"node .library/bin/library extract","library:validate":"node .library/bin/library validate","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","library:regenerate":"node .library/bin/library regenerate","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js test/integration/spawn-contract.test.js --maxWorkers=1 --testTimeout=60000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"langfuse":"^3.38.20","@octokit/rest":"^21.0.0","@anthropic-ai/sdk":"^0.91.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","madge":"^8.0.0","eslint":"^8.57.1","prettier":"^3.2.0","@types/jest":"^29.5.0","js-tiktoken":"^1.0.18","web-tree-sitter":"^0.24.7","tree-sitter-wasms":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_3.1.1_1785748706715_0.9777921151251547","host":"s3://npm-registry-packages-npm-production"}},"3.3.0":{"name":"claude-git-hooks","version":"3.3.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@3.3.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"06afaf5a074bc071ba7ae4d79d4f2661e88206a3","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-3.3.0.tgz","fileCount":144,"integrity":"sha512-CYZksMBHsrEy3sYTERJlr/s+VgiBgB4biFJ1Rht6QVYqGwuQco0FW1Nqt8jH1OgI1g3hAROZ24alVC7FN6ia7w==","signatures":[{"sig":"MEYCIQCnuROUwLoF2ohh/wocFXXMS9FbVYNWSage9dyTH5tclwIhAPSILK/RL8ax3cwoxu0oU4Wj7ZE7Iebu9VGSSKwjXY4P","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1591854},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"8bdc739476c6b61e7b12c3c42c27605e4551f6c8","scripts":{"lint":"eslint lib/ bin/claude-hooks .library/librarian/","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks .library/librarian/ --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","test:e2e":"bash test/manual/sdlc-stability-check.sh","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","library:check":"node .library/bin/library check","library:graph":"node .library/bin/library graph","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","library:inject":"node .library/bin/library inject","library:report":"node .library/bin/library report","library:tokens":"node .library/bin/library tokens","prepublishOnly":"npm run test:all","library:extract":"node .library/bin/library extract","library:validate":"node .library/bin/library validate","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","library:regenerate":"node .library/bin/library regenerate","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js test/integration/spawn-contract.test.js --maxWorkers=1 --testTimeout=60000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"langfuse":"^3.38.20","@octokit/rest":"^21.0.0","@anthropic-ai/sdk":"^0.91.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","madge":"^8.0.0","eslint":"^8.57.1","prettier":"^3.2.0","@types/jest":"^29.5.0","js-tiktoken":"^1.0.18","web-tree-sitter":"^0.24.7","tree-sitter-wasms":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_3.3.0_1785835757526_0.7977908008805705","host":"s3://npm-registry-packages-npm-production"}},"3.5.4":{"name":"claude-git-hooks","version":"3.5.4","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@3.5.4","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"60b132cf07847dc81eb198263f9aacc22217f36d","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-3.5.4.tgz","fileCount":153,"integrity":"sha512-kklANdVCu7sKi6yEn5Ti6S1GvLaDaqSWWqz471t6QbY/awvnPtR8cBjFIIqS5u0YkJwC9eh0OLhP12SfMmCszg==","signatures":[{"sig":"MEUCIBW5i8K5CC3UnCUeZR4GWWAHZ/lcpKwrfGPJkvwULgnYAiEA36jsl2Ma+wfALfn0I3PKfc9nAC46Z4CkIEeI6OExUbI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1868688},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"a56f6b1f4e9ab7e5b0d42cd702443a288f82567f","scripts":{"lint":"eslint lib/ bin/claude-hooks .library/librarian/ test/ scripts/ --max-warnings 0","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\" \"scripts/**/*.js\" \".library/librarian/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks .library/librarian/ test/ scripts/ --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","test:e2e":"bash test/manual/sdlc-stability-check.sh","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","format:check":"prettier --check \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\" \"scripts/**/*.js\" \".library/librarian/**/*.js\"","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","library:check":"node .library/bin/library check","library:graph":"node .library/bin/library graph","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","library:inject":"node .library/bin/library inject","library:report":"node .library/bin/library report","library:tokens":"node .library/bin/library tokens","prepublishOnly":"npm run test:all","library:extract":"node .library/bin/library extract","test:e2e:origin":"bash test/manual/sdlc-stability-check.sh --against-origin","library:validate":"node .library/bin/library validate","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","library:regenerate":"node .library/bin/library regenerate","test:unit:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --coverage --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js test/integration/spawn-contract.test.js test/integration/extension-contract.test.js test/integration/extension-wiring.test.js --maxWorkers=1 --testTimeout=120000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"langfuse":"^3.38.20","@octokit/rest":"^21.0.0","@anthropic-ai/sdk":"^0.91.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","madge":"^8.0.0","eslint":"^8.57.1","prettier":"^3.2.0","@types/jest":"^29.5.0","js-tiktoken":"^1.0.18","web-tree-sitter":"^0.24.7","tree-sitter-wasms":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_3.5.4_1788547822856_0.35704530146577995","host":"s3://npm-registry-packages-npm-production"}},"3.7.0":{"name":"claude-git-hooks","version":"3.7.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@3.7.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"cf16582c711bb87cb70fac6dc8807c28da5d2e42","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-3.7.0.tgz","fileCount":150,"integrity":"sha512-HRNGqgY2bv/QSWr9P0ILAPjwcpYxsKb9C5WYR4sW73JvohcAbLcq2WwY4JMO6UtgivKAmyIt2/7O8wU4iqT9iw==","signatures":[{"sig":"MEQCIHdLLlljrXOOnSveQ2Ak4fkXtEIw8xahapGsBjaJpG1LAiB39qnuLLlV4pIjoK21A4atkc2Oaug3lzNf0nsmOGrkhA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1941767},"type":"module","engines":{"node":">=16.9.0"},"gitHead":"197f809262749515887ac3f42bce490f561f4bf0","scripts":{"lint":"eslint lib/ bin/claude-hooks .library/librarian/ test/ scripts/ --max-warnings 0","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\" \"scripts/**/*.js\" \".library/librarian/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks .library/librarian/ test/ scripts/ --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","test:e2e":"bash test/manual/sdlc-stability-check.sh","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","format:check":"prettier --check \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\" \"scripts/**/*.js\" \".library/librarian/**/*.js\"","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","library:check":"node .library/bin/library check","library:graph":"node .library/bin/library graph","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","library:inject":"node .library/bin/library inject","library:report":"node .library/bin/library report","library:tokens":"node .library/bin/library tokens","prepublishOnly":"npm run test:all","library:extract":"node .library/bin/library extract","test:e2e:origin":"bash test/manual/sdlc-stability-check.sh --against-origin","library:validate":"node .library/bin/library validate","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","library:regenerate":"node .library/bin/library regenerate","test:unit:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --coverage --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js test/integration/spawn-contract.test.js test/integration/extension-contract.test.js test/integration/extension-wiring.test.js test/integration/extension-triggers.test.js --maxWorkers=1 --testTimeout=120000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"langfuse":"^3.38.20","@octokit/rest":"^21.0.0","@anthropic-ai/sdk":"^0.91.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","madge":"^8.0.0","eslint":"^8.57.1","prettier":"^3.2.0","@types/jest":"^29.5.0","js-tiktoken":"^1.0.18","web-tree-sitter":"^0.24.7","tree-sitter-wasms":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_3.7.0_1789050995216_0.7513535340343509","host":"s3://npm-registry-packages-npm-production"}},"3.8.0":{"name":"claude-git-hooks","version":"3.8.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@3.8.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"6d77a26f08052276b75ac1ad6ece833bd581abe8","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-3.8.0.tgz","fileCount":155,"integrity":"sha512-ZAzt0Rq+wQbj3S4AzmYu2y86DeDhoqs5nKg+9/5p0/dgHGSS/7aSos+7SQvlI181yBxsHUjFD869g94wKFvxOA==","signatures":[{"sig":"MEQCIFEukzYpeK7RvCFPWpKrm/Nz6+SWnRA10EZtAp4YmZBPAiB7pplsHuubEWm0poh7yqkJBwbv/qOz7DMWzQPzBcvMow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2017728},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"f3b055b4e350a6d1ac11fb0e6fca93cdf0b0de83","scripts":{"lint":"eslint lib/ bin/claude-hooks .library/librarian/ test/ scripts/ --max-warnings 0","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\" \"scripts/**/*.js\" \".library/librarian/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks .library/librarian/ test/ scripts/ --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","test:e2e":"bash test/manual/sdlc-stability-check.sh","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","format:check":"prettier --check \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\" \"scripts/**/*.js\" \".library/librarian/**/*.js\"","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","library:check":"node .library/bin/library check","library:graph":"node .library/bin/library graph","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","library:inject":"node .library/bin/library inject","library:report":"node .library/bin/library report","library:tokens":"node .library/bin/library tokens","prepublishOnly":"npm run test:all","library:extract":"node .library/bin/library extract","test:e2e:origin":"bash test/manual/sdlc-stability-check.sh --against-origin","library:validate":"node .library/bin/library validate","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","library:regenerate":"node .library/bin/library regenerate","test:unit:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --coverage --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js test/integration/spawn-contract.test.js test/integration/extension-contract.test.js test/integration/extension-wiring.test.js test/integration/extension-triggers.test.js --maxWorkers=1 --testTimeout=120000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"langfuse":"^3.38.20","@octokit/rest":"^21.0.0","@anthropic-ai/sdk":"^0.91.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","madge":"^8.0.0","eslint":"^8.57.1","prettier":"^3.2.0","@types/jest":"^29.5.0","js-tiktoken":"^1.0.18","web-tree-sitter":"^0.24.7","tree-sitter-wasms":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_3.8.0_1789559663145_0.9043626865605665","host":"s3://npm-registry-packages-npm-production"}},"3.8.1":{"name":"claude-git-hooks","version":"3.8.1","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@3.8.1","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"29ec59f578f8ad2b9876921be4b351eb1527e895","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-3.8.1.tgz","fileCount":155,"integrity":"sha512-ZN5YaJpzN2sCyTVDKkhvKI7UaNaxWHL1S3rynmOrCN908mzhb3QovdsRX/c42s6i+6+8pBlpXRjGsxVjjrfnlQ==","signatures":[{"sig":"MEYCIQCX2rSNiQJz+lbjpmSBHefIRU0oAYn0tzJEYbSQrJxxnQIhAJk7f9Lzw48EbEv/eyiWIZzWbBtkybfLrkSQmf6TVwzw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIC6aE4qOy/+hKkGkWjKJEHxcV4pQbmJAuZiPUfxY+i3rAiEAtB162fUruelDEjXWeXs9p7utL6IiyJ6H6p1Vx7xJH/I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2020053},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"b83307c01f3534f6b4521e4856d3c7a87de1d885","scripts":{"lint":"eslint lib/ bin/claude-hooks .library/librarian/ .library/paths.js test/ scripts/ --max-warnings 0","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\" \"scripts/**/*.js\" \".library/librarian/**/*.js\" \".library/paths.js\"","lint:fix":"eslint lib/ bin/claude-hooks .library/librarian/ .library/paths.js test/ scripts/ --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","test:e2e":"bash test/manual/sdlc-stability-check.sh","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","format:check":"prettier --check \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\" \"scripts/**/*.js\" \".library/librarian/**/*.js\" \".library/paths.js\"","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","library:check":"node .library/bin/library check","library:graph":"node .library/bin/library graph","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","library:inject":"node .library/bin/library inject","library:report":"node .library/bin/library report","library:tokens":"node .library/bin/library tokens","prepublishOnly":"npm run test:all","library:extract":"node .library/bin/library extract","test:e2e:origin":"bash test/manual/sdlc-stability-check.sh --against-origin","library:validate":"node .library/bin/library validate","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","library:regenerate":"node .library/bin/library regenerate","test:unit:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --coverage --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js test/integration/spawn-contract.test.js test/integration/extension-contract.test.js test/integration/extension-wiring.test.js test/integration/extension-triggers.test.js --maxWorkers=1 --testTimeout=120000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"langfuse":"^3.38.20","@octokit/rest":"^21.0.0","@anthropic-ai/sdk":"^0.91.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","madge":"^8.0.0","eslint":"^8.57.1","prettier":"^3.2.0","@types/jest":"^29.5.0","js-tiktoken":"^1.0.18","web-tree-sitter":"^0.24.7","tree-sitter-wasms":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_3.8.1_1790012128824_0.29154337842283495","host":"s3://npm-registry-packages-npm-production"}},"3.8.3":{"name":"claude-git-hooks","version":"3.8.3","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@3.8.3","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"379ef7d4062c75bee01fbc0078ed3add1eead9f4","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-3.8.3.tgz","fileCount":155,"integrity":"sha512-MPhNJSIw5gZKGjBfxwhHhNU0D0yDRV6T8Jxh6AekJBP2XrBXNlX/GvYqEZuxKy4jKgnSumNMF809MKKnGMb8SQ==","signatures":[{"sig":"MEUCIEG3r9NKQGOk0EW35UIakxo9/HdDF5wfLTEAfNwprL/DAiEA/VcPP9mma5VfWmsjC25N+rbn/QHrpf9ZrZao4gBxJag=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIG6Hxu2rv2YApzaTZtWtbzah4aARarHteeFDkgWsQ+TkAiBSAzY9xhiWHVsUlBbgI37uLv9s13EIDxmf8ZtsbLwK7Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2023346},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"c6989be10bd052dbcf3a7f149a2b28f5188bd849","scripts":{"lint":"eslint lib/ bin/claude-hooks .library/librarian/ .library/paths.js test/ scripts/ --max-warnings 0","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\" \"scripts/**/*.js\" \".library/librarian/**/*.js\" \".library/paths.js\"","lint:fix":"eslint lib/ bin/claude-hooks .library/librarian/ .library/paths.js test/ scripts/ --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","test:e2e":"bash test/manual/sdlc-stability-check.sh","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","format:check":"prettier --check \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\" \"scripts/**/*.js\" \".library/librarian/**/*.js\" \".library/paths.js\"","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","library:check":"node .library/bin/library check","library:graph":"node .library/bin/library graph","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","library:inject":"node .library/bin/library inject","library:report":"node .library/bin/library report","library:tokens":"node .library/bin/library tokens","prepublishOnly":"npm run test:all","library:extract":"node .library/bin/library extract","test:e2e:origin":"bash test/manual/sdlc-stability-check.sh --against-origin","library:validate":"node .library/bin/library validate","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","library:regenerate":"node .library/bin/library regenerate","test:unit:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --coverage --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js test/integration/spawn-contract.test.js test/integration/extension-contract.test.js test/integration/extension-wiring.test.js test/integration/extension-triggers.test.js --maxWorkers=1 --testTimeout=120000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"langfuse":"^3.38.20","@octokit/rest":"^21.0.0","@anthropic-ai/sdk":"^0.91.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","madge":"^8.0.0","eslint":"^8.57.1","prettier":"^3.2.0","@types/jest":"^29.5.0","js-tiktoken":"^1.0.18","web-tree-sitter":"^0.24.7","tree-sitter-wasms":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_3.8.3_1790088201308_0.6825956247114904","host":"s3://npm-registry-packages-npm-production"}},"3.9.0":{"name":"claude-git-hooks","version":"3.9.0","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@3.9.0","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"41e3a0959348330d15ff51863da51d2f46b2f860","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-3.9.0.tgz","fileCount":155,"integrity":"sha512-fiE4qMycQAO9YZCjHInEbR0IYD9tfmWcsK8m1KHueUNNc9CuACPBHY48emvbTTmugwa0Xs8NwL17bYE/ujECqg==","signatures":[{"sig":"MEUCIBGMPBbE6Y49uEdfaKug0jMNIF000HZtmgTvM1pNiErNAiEAi28KpkXzVI6mvaRrVWZjESSur8+C5kZuXK7Xl09YxP0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICKsmxoWPGZQaZ7JKv6GNAvBwm12uITFwzZHnbAUHiKLAiEAsztzvGIOLyIitHouxZvP76eQGIZd+RxoSdJYqzivaYE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2025612},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"e213ebe54a201bf12650d6b63836ea3f883e197c","scripts":{"lint":"eslint lib/ bin/claude-hooks .library/ test/ scripts/ --max-warnings 0","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\" \"scripts/**/*.js\" \".library/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks .library/ test/ scripts/ --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","test:e2e":"bash test/manual/sdlc-stability-check.sh","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","format:check":"prettier --check \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\" \"scripts/**/*.js\" \".library/**/*.js\"","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","library:check":"node .library/bin/library check","library:graph":"node .library/bin/library graph","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","library:inject":"node .library/bin/library inject","library:report":"node .library/bin/library report","library:tokens":"node .library/bin/library tokens","prepublishOnly":"npm run test:all","library:extract":"node .library/bin/library extract","test:e2e:origin":"bash test/manual/sdlc-stability-check.sh --against-origin","library:validate":"node .library/bin/library validate","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","library:regenerate":"node .library/bin/library regenerate","test:unit:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --coverage --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js test/integration/spawn-contract.test.js test/integration/extension-contract.test.js test/integration/extension-wiring.test.js test/integration/extension-triggers.test.js --maxWorkers=1 --testTimeout=120000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"langfuse":"^3.38.20","@octokit/rest":"^21.0.0","@anthropic-ai/sdk":"^0.91.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","madge":"^8.0.0","eslint":"^8.57.1","prettier":"^3.2.0","@types/jest":"^29.5.0","js-tiktoken":"^1.0.18","web-tree-sitter":"^0.24.7","tree-sitter-wasms":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_3.9.0_1790176302723_0.708187073231537","host":"s3://npm-registry-packages-npm-production"}},"3.9.3":{"name":"claude-git-hooks","version":"3.9.3","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@3.9.3","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"ad996909b8721b83889e34161faf39032173a39d","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-3.9.3.tgz","fileCount":155,"integrity":"sha512-5zh1xCwyfu4O/pbNEbrlbT+qt4iBg0v69MkCZpxWXblzwJkpKSdZXwyGuMRqsgXUeq3LjPRWfH6sKytcx+/0DQ==","signatures":[{"sig":"MEYCIQD31xzzgOmuEXgBjHDG3VmMcPRGivmUdUZe0LpdERjqoAIhALxMS8q3rRzawFi9+CwLaHKv1Wdbo1kVONat8TR7lFop","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHz023JRrQJ18WFNGJmwc4+j8NuKs2NcXLC1DiPL0kazAiAOPxmEpfjHK+f5NB7q/2O/Yz0pIJU7T5Rrg0dUmKIyUQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2029696},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"bc8dab6aec35aea71f7158dfc9444ba0085d89f2","scripts":{"lint":"eslint lib/ bin/claude-hooks .library/ test/ scripts/ --max-warnings 0","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\" \"scripts/**/*.js\" \".library/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks .library/ test/ scripts/ --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","test:e2e":"bash test/manual/sdlc-stability-check.sh","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","format:check":"prettier --check \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\" \"scripts/**/*.js\" \".library/**/*.js\"","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","library:check":"node .library/bin/library check","library:graph":"node .library/bin/library graph","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","library:inject":"node .library/bin/library inject","library:report":"node .library/bin/library report","library:tokens":"node .library/bin/library tokens","prepublishOnly":"npm run test:all","library:extract":"node .library/bin/library extract","test:e2e:origin":"bash test/manual/sdlc-stability-check.sh --against-origin","library:validate":"node .library/bin/library validate","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","library:regenerate":"node .library/bin/library regenerate","test:unit:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --coverage --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js test/integration/spawn-contract.test.js test/integration/extension-contract.test.js test/integration/extension-wiring.test.js test/integration/extension-triggers.test.js --maxWorkers=1 --testTimeout=120000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"langfuse":"^3.38.20","@octokit/rest":"^21.0.0","@anthropic-ai/sdk":"^0.91.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","madge":"^8.0.0","eslint":"^8.57.1","prettier":"^3.2.0","@types/jest":"^29.5.0","js-tiktoken":"^1.0.18","web-tree-sitter":"^0.24.7","tree-sitter-wasms":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_3.9.3_1790242170479_0.3672817917236548","host":"s3://npm-registry-packages-npm-production"}},"3.9.4":{"name":"claude-git-hooks","version":"3.9.4","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"author":{"name":"Pablo Rovito"},"license":"MIT","_id":"claude-git-hooks@3.9.4","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"homepage":"https://github.com/mscope-S-L/git-hooks#readme","bugs":{"url":"https://github.com/mscope-S-L/git-hooks/issues"},"os":["darwin","linux","win32"],"bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"3eea4097324673ab28225f90c9feeecc23bed6ae","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-3.9.4.tgz","fileCount":155,"integrity":"sha512-ScgtzPSA1NcCaH65UYsz6hp2ojVMkkO6kvXEsgI0R7AAUCt0J5JI1yzT6Nwc53FfmTwiVFlgUlubgbuRYj9Efw==","signatures":[{"sig":"MEQCIANfj9LfPx7lNLcCZm+dxvTpy2eDhW4Tvh4PIrh4vcfyAiAmwSOwbmDTB8u2tV4i7Dn95TjIBcopDNparbSLFHJoFA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIC1T4QwJJMl6QlghbkTmi20PURVRTfBJMURiIgbPrOWHAiB7WRZKr99A2C5shV1Sy26B+AKwPvLP9ndjq7cG2aatow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2031159},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"9b5fe0682b5c85c46626467bd29d5aea9674031b","scripts":{"lint":"eslint lib/ bin/claude-hooks .library/ test/ scripts/ --max-warnings 0","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\" \"scripts/**/*.js\" \".library/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks .library/ test/ scripts/ --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","test:e2e":"bash test/manual/sdlc-stability-check.sh","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","format:check":"prettier --check \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\" \"scripts/**/*.js\" \".library/**/*.js\"","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","library:check":"node .library/bin/library check","library:graph":"node .library/bin/library graph","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","library:inject":"node .library/bin/library inject","library:report":"node .library/bin/library report","library:tokens":"node .library/bin/library tokens","prepublishOnly":"npm run test:all","library:extract":"node .library/bin/library extract","test:e2e:origin":"bash test/manual/sdlc-stability-check.sh --against-origin","library:validate":"node .library/bin/library validate","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","library:regenerate":"node .library/bin/library regenerate","test:unit:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --coverage --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js test/integration/spawn-contract.test.js test/integration/extension-contract.test.js test/integration/extension-wiring.test.js test/integration/extension-triggers.test.js --maxWorkers=1 --testTimeout=120000 --forceExit"},"_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"repository":{"url":"git+https://github.com/mscope-S-L/git-hooks.git","type":"git"},"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"_nodeVersion":"20.19.1","dependencies":{"langfuse":"^3.38.20","@octokit/rest":"^21.0.0","@anthropic-ai/sdk":"^0.91.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","madge":"^8.0.0","eslint":"^8.57.1","prettier":"^3.2.0","@types/jest":"^29.5.0","js-tiktoken":"^1.0.18","web-tree-sitter":"^0.24.7","tree-sitter-wasms":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/claude-git-hooks_3.9.4_1790597448516_0.8106744021108765","host":"s3://npm-registry-packages-npm-production"}},"3.11.3":{"os":["darwin","linux","win32"],"_id":"claude-git-hooks@3.11.3","bin":{"claude-hooks":"bin/claude-hooks"},"dist":{"shasum":"f280f089ff81d1fec661ef496f8039006dd48a60","tarball":"https://registry.npmjs.org/claude-git-hooks/-/claude-git-hooks-3.11.3.tgz","fileCount":156,"integrity":"sha512-YmG+cGO9rqXJ/L94uog3uKbQ54cjfRZ/plfCN7x+wASc53jRPzR2/eEh8M9MhzjKQxCpcX27D+ppZSPsZPQp8Q==","signatures":[{"sig":"MEYCIQDGQNlI+mNKwJvxrsBSnr8nZ9POOuVW2PI4F9eEgXJvlQIhANcpQy4BbdU1K3DKhC7qLHa5WBbzeeOFRy4XpHGEkc3l","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHt2V2zXCENMwqMCcwT9rB7HEN8caycCcxRycRNwLjC5AiEAp25HfMuHKR0Bt2iNfHAW0omj1wCvwZ5dkyIgOLuVH+o="}],"unpackedSize":1799792},"name":"claude-git-hooks","type":"module","author":{"name":"Pablo Rovito"},"engines":{"node":">=18.0.0"},"gitHead":"1129d86f1ace2b23ebab9b2996d900d28c71a3bf","license":"MIT","scripts":{"lint":"eslint lib/ bin/claude-hooks test/ scripts/ --max-warnings 0","test":"npm run test:all","format":"prettier --write \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\" \"scripts/**/*.js\"","lint:fix":"eslint lib/ bin/claude-hooks test/ scripts/ --fix","test:all":"npm run lint && npm run test:smoke && npm run test:unit && npm run test:integration","test:e2e":"bash test/manual/sdlc-stability-check.sh","precommit":"npm run lint && npm run test:smoke","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --forceExit","test:smoke":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/smoke --maxWorkers=1","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","format:check":"prettier --check \"lib/**/*.js\" \"bin/**\" \"test/**/*.js\" \"scripts/**/*.js\"","test:changed":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --changedSince=main --forceExit","library:check":"library check","library:graph":"library graph","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","library:inject":"library inject","library:report":"library report","library:tokens":"library tokens","prepublishOnly":"npm run test:all","library:extract":"library extract","test:e2e:origin":"bash test/manual/sdlc-stability-check.sh --against-origin","library:validate":"library validate","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration --maxWorkers=1 --testTimeout=30000 --forceExit","library:regenerate":"library regenerate","test:unit:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit --coverage --forceExit","test:integration:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration/ci-safe.test.js test/integration/library-engine-resolution.test.js test/integration/spawn-contract.test.js test/integration/extension-contract.test.js test/integration/extension-wiring.test.js test/integration/extension-triggers.test.js --maxWorkers=1 --testTimeout=120000 --forceExit"},"version":"3.11.3","_npmUser":{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"},"keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"_npmVersion":"10.8.2","description":"Git hooks with Claude CLI for code analysis and automatic commit messages","directories":{},"maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"_nodeVersion":"20.19.1","dependencies":{"langfuse":"^3.38.20","@octokit/rest":"^21.0.0","@anthropic-ai/sdk":"^0.91.0"},"engineStrict":false,"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.1","prettier":"^3.2.0","@types/jest":"^29.5.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/claude-git-hooks_3.11.3_1790935901401_0.9536382588323713"}}},"time":{"created":"2025-07-24T09:34:17.410Z","modified":"2026-10-02T10:11:41.704Z","1.0.0":"2025-07-24T09:34:17.704Z","1.1.0":"2025-07-24T10:17:10.363Z","1.2.1":"2025-07-24T15:45:58.015Z","1.2.4":"2025-08-22T17:27:34.205Z","1.3.0":"2025-08-28T16:09:33.200Z","1.4.0":"2025-08-29T11:00:34.391Z","1.4.1":"2025-09-03T17:44:27.900Z","1.4.2":"2025-09-08T10:44:21.903Z","1.5.0":"2025-09-10T12:50:32.983Z","1.5.1":"2025-09-11T11:03:30.586Z","1.5.2":"2025-09-11T15:58:44.263Z","1.5.3":"2025-09-12T13:06:56.719Z","1.5.4":"2025-09-22T15:01:38.395Z","1.5.5":"2025-10-29T22:55:24.523Z","2.0.0":"2025-11-04T10:36:47.453Z","2.1.0":"2025-11-04T14:31:09.901Z","2.3.0":"2025-11-11T22:26:18.151Z","2.3.1":"2025-11-13T15:36:10.687Z","2.4.0":"2025-11-17T15:56:58.141Z","2.4.1":"2025-11-19T16:32:17.514Z","2.5.0":"2025-11-27T13:35:24.220Z","2.6.0":"2025-12-04T09:05:34.132Z","2.6.1":"2025-12-04T19:07:46.453Z","2.6.2":"2025-12-13T23:18:10.382Z","2.6.3":"2025-12-19T13:19:08.232Z","2.7.1":"2025-12-23T10:29:41.843Z","2.8.0":"2025-12-24T12:33:11.939Z","2.9.1":"2025-12-30T18:30:38.236Z","2.10.0":"2026-02-03T09:52:01.984Z","2.11.0":"2026-02-03T12:54:09.547Z","2.12.0":"2026-02-03T20:08:00.844Z","2.13.0":"2026-02-05T09:48:38.619Z","2.14.1":"2026-02-06T13:08:17.483Z","2.14.4":"2026-02-06T14:09:19.411Z","2.15.5":"2026-02-12T18:39:49.961Z","2.16.0":"2026-02-15T21:01:09.283Z","2.17.0":"2026-02-16T11:23:26.203Z","2.17.1":"2026-03-02T16:48:37.673Z","2.17.2":"2026-03-03T09:22:45.171Z","2.18.0":"2026-03-03T20:08:28.832Z","2.18.1":"2026-03-04T12:59:22.322Z","2.19.0":"2026-03-06T14:13:21.905Z","2.20.0":"2026-03-09T17:08:27.389Z","2.21.0":"2026-03-10T16:59:31.453Z","2.30.1":"2026-03-17T20:11:35.126Z","2.30.2":"2026-03-18T16:16:16.592Z","2.32.0":"2026-03-19T17:18:03.453Z","2.33.0":"2026-03-23T10:15:53.075Z","2.33.1":"2026-03-26T13:53:27.429Z","2.34.0":"2026-03-27T12:36:07.714Z","2.35.0":"2026-03-27T20:32:10.555Z","2.35.2":"2026-04-13T19:33:57.799Z","2.35.3":"2026-04-22T14:02:32.934Z","2.43.0":"2026-05-04T15:11:48.583Z","2.44.0":"2026-05-04T18:39:40.224Z","2.45.0":"2026-05-13T17:46:17.651Z","2.51.2":"2026-05-26T17:58:50.957Z","2.61.2":"2026-06-01T14:32:45.169Z","2.66.1":"2026-06-10T11:40:42.812Z","2.67.3":"2026-06-12T07:47:24.885Z","2.68.0":"2026-06-12T10:01:42.702Z","2.68.1":"2026-06-12T13:35:05.474Z","2.68.2":"2026-06-16T11:47:45.998Z","2.70.0":"2026-07-14T21:03:14.287Z","3.1.1":"2026-08-03T09:18:26.861Z","3.3.0":"2026-08-04T09:29:17.678Z","3.5.4":"2026-09-04T18:50:22.998Z","3.7.0":"2026-09-10T14:36:35.414Z","3.8.0":"2026-09-16T11:54:23.317Z","3.8.1":"2026-09-21T17:35:28.923Z","3.8.3":"2026-09-22T14:43:21.404Z","3.9.0":"2026-09-23T15:11:42.876Z","3.9.3":"2026-09-24T09:29:30.609Z","3.9.4":"2026-09-28T12:10:48.611Z","3.11.3":"2026-10-02T10:11:41.514Z"},"author":{"name":"Pablo Rovito"},"license":"MIT","keywords":["git","hooks","claude","ai","code-review","commit-messages","pre-commit","automation"],"description":"Git hooks with Claude CLI for code analysis and automatic commit messages","maintainers":[{"name":"pablo.rovito","email":"pablo.rovito@outlook.com"}],"readme":"# Claude Git Hooks\n\nAI-powered git hooks for automatic commit messages, code analysis, and PR creation.\n\n## Requirements\n\n- Node.js >=16.9.0\n- Git\n- Claude CLI (authenticated)\n\n## Quick Start\n\n```bash\nnpm install -g claude-git-hooks\ncd your-project\nclaude-hooks install\n```\n\nInstall verifies Node.js, npm, Git and the Claude CLI. `--headless` makes the install\nnon-interactive (CI/containers) but **still runs those checks** — it changes interaction,\nnever scope. To skip them deliberately:\n\n```bash\nclaude-hooks install --headless                          # non-interactive, checks run\nclaude-hooks install --headless --skip-dependency-checks # opt out, prints a warning\n```\n\n## Usage\n\n### Auto Commit Message\n\n```bash\ngit commit -m \"auto\"\n# Claude generates message from branch name + changes\n# Format: [TASK-ID] type: description\n# Example: branch feature/IX-123-auth → [IX-123] feat: add authentication\n```\n\n### Create PR\n\n```bash\nclaude-hooks create-pr develop\n# Automatically pushes branch if unpublished (with confirmation)\n# Analyzes diff, generates title/description, creates PR on GitHub\n```\n\n**Auto-push feature (v2.11.0):**\n\n- Detects unpublished branches or unpushed commits\n- Shows commit preview before pushing\n- Prompts for confirmation (configurable)\n- Handles diverged branches gracefully\n\n**Merge strategy awareness (v2.25.0):**\n\n- Auto-detects required strategy from branch naming: `feature/*`/`release-fix/*` → squash, `release-candidate/*`/`hotfix/*`/`→ main` → merge commit\n- Displays strategy in PR preview; adds `merge-strategy:squash` or `merge-strategy:merge-commit` label\n- Prepends body reminder for merge-commit PRs; unknown patterns prompt user to select manually\n\n**Automatic label resolution (v2.31.0):**\n\n- Resolves labels from 5 rule types: preset, size, quality, strategy, and defaults\n- Remote config priority (your organisation's `git-hooks-config` repository, `labels.json`) with local fallback\n- Size labels: `size:S` (<10 files), `size:M` (10-50), `size:L` (50-100), `size:XL` (>100) — thresholds configurable remotely\n- Quality labels: `breaking-change`, `security`, `performance` from analysis result\n- Each rule type independently enabled/disabled via remote config\n\n### Team Configuration\n\nLabel rules, PR categories, and role-based permissions are managed centrally in a `git-hooks-config` repository belonging to your organisation. Changes there take effect immediately across all governed repositories — no tool update or deploy required. The repository is resolved from your configuration; see `claude-hooks setup-github`.\n\n### Code Knowledge Library (optional)\n\nSeveral commands maintain a repository's Code Knowledge Library — per-file Markdown \"books\"\nextracted from source. `create-pr` regenerates stale books, `bump-version` and `create-release`\nverify them, `pre-commit` flags a book whose source changed, and `close-release` refuses to close\non drift. All of it is skipped silently in a repository that has no Library, which is most of them.\n\nTwo pieces have to be present for any of it to run:\n\n| Piece | What it is | Where it comes from |\n|---|---|---|\n| **Content** | `.library/` with `resolver.yaml`, books and indexes | Committed in the repository |\n| **Engine** | The code that extracts and checks books | A package you declare, or a copy vendored into `.library/` |\n\nclaude-git-hooks does **not** bundle an engine, and names none in its own code: it is a public\npackage, and hardcoding one organisation's engine would ship a dependency most consumers cannot\nresolve. A repository says which engine maintains its books:\n\n```jsonc\n// .claude-hooks.json at the repository root — tracked, and never published\n{\n    \"libraryEngine\": \"@your-scope/librarian\"\n}\n```\n\n`claudeHooks.libraryEngine` in `package.json` works too. Prefer `.claude-hooks.json` when the\nengine's name identifies your organisation and your package is public: `package.json` is published\nand rendered on the npm page, and `.claude-hooks.json` is neither.\n\nInstall the engine where the Library is maintained. Keep it out of `dependencies` — and out of\n`devDependencies` if it lives in a private repository, or `npm ci` will fail for anyone without\naccess, CI included. `CLAUDE_HOOKS_LIBRARY_ENGINE=@your-scope/librarian` overrides the declaration\nfor a single run.\n\nAn engine is expected to expose three entry points: its package root (the pipeline), `/paths`\n(path resolution) and `/staleness` (book checking).\n\n**No configuration needed if the engine is vendored.** A repository that carries its own engine at\n`.library/librarian/index.js`, `.library/paths.js` and `.library/tools/staleness.js` is used as-is;\nthat was the only layout before the engine became installable, and it still works.\n\nWith neither, a repository that has books reports as `content-only`: the commands say so once and\ncarry on rather than failing.\n\n### Token Setup\n\n```bash\nclaude-hooks setup-github  # Configure GitHub token for PR creation\nclaude-hooks setup-linear  # Configure Linear token for ticket enrichment\n```\n\n**Option 1 - Settings file (recommended):**\n\n```json\n// .claude/settings.local.json (gitignored)\n{ \"githubToken\": \"ghp_...\" }\n```\n\n**Option 2 - Environment variable:**\n\n```bash\nexport GITHUB_TOKEN=\"ghp_...\"\n```\n\nCreate token at https://github.com/settings/tokens with scopes: `repo`, `read:org`\n\n### Linting & Formatting\n\nRuns formatters and linters on staged files automatically during pre-commit, or on demand:\n\n```bash\n# Lint staged files (default)\nclaude-hooks lint\n\n# Lint all files in a directory\nclaude-hooks lint src/\n\n# Lint specific files\nclaude-hooks lint file1.js file2.java\n\n# Mix of directories and files\nclaude-hooks lint src/ lib/utils/ file.js\n```\n\n**Tools per preset** (configured via your organisation's remote config repository):\n\n| Preset      | Tools                         |\n| ----------- | ----------------------------- |\n| `frontend`  | Prettier, ESLint              |\n| `backend`   | Spotless                      |\n| `fullstack` | Prettier, ESLint, Spotless    |\n| `database`  | sqlfluff                      |\n| `ai`        | Prettier, ESLint              |\n| `default`   | Prettier, ESLint              |\n\n**Behavior:**\n\n- Formatters run first (Prettier), then linters (ESLint) — format before lint\n- Auto-fix enabled by default — fixes and re-stages files automatically\n- Missing tools are skipped with install instructions (never blocks)\n- Unfixable issues are forwarded to the Claude judge for semantic resolution\n- Tool-to-preset mapping is fetched from remote config (team-controlled, no release needed)\n\n### Analyze Code (Interactive Review)\n\nRun interactive code analysis before committing:\n\n```bash\n# Analyze staged changes (default)\nclaude-hooks analyze\n\n# Analyze unstaged changes\nclaude-hooks analyze --unstaged\n\n# Analyze all tracked files\nclaude-hooks analyze --all\n```\n\n**What it does:**\n\n- Analyzes selected file scope (staged, unstaged, or all)\n- Shows all issues (INFO, MINOR, MAJOR, CRITICAL, BLOCKER)\n- Interactive prompt with options:\n    - **Continue**: Creates commit automatically with auto-generated message\n    - **Abort**: Generate resolution prompt and fix issues\n    - **View**: Show detailed issue list\n- Executes `git commit -m \"auto\" --no-verify` on confirmation\n- Works outside git hooks (no stdin limitations)\n\n**Use case:** Complete analysis-to-commit workflow in one command.\n\n### Analyze Diff (without creating PR)\n\n```bash\nclaude-hooks analyze-diff develop\n# Generates PR metadata without creating\n```\n\n### Analyze PR from GitHub URL\n\n```bash\nclaude-hooks analyze-pr https://github.com/owner/repo/pull/123\n# Fetches PR, applies preset guidelines, posts review comments\n\nclaude-hooks analyze-pr https://github.com/owner/repo/pull/123 --dry-run\n# Analyze without posting comments\n\nclaude-hooks analyze-pr https://github.com/owner/repo/pull/123 --preset backend --model opus\n# Override preset and model\n```\n\n- Auto-detects preset from PR labels, Linear ticket labels, or file extensions\n- Enriches with Linear ticket context when `[AUT-1234]` found in PR title\n- Interactive comment workflow: confirm/skip each finding before posting\n- Classifies into inline (file:line) and general (review-level) categories\n\n### Bump Version\n\nAutomatic version management with CHANGELOG generation and Git tagging:\n\n```bash\n# Bump patch version (1.0.0 → 1.0.1)\nclaude-hooks bump-version patch\n\n# Bump with suffix\nclaude-hooks bump-version minor --suffix SNAPSHOT  # → 1.1.0-SNAPSHOT\n\n# Bump and generate CHANGELOG\nclaude-hooks bump-version major --update-changelog\n\n# Preview without applying\nclaude-hooks bump-version patch --dry-run\n\n# Push tag immediately (otherwise pushed by create-pr)\nclaude-hooks bump-version patch --push\n\n# Manual workflow (skip automatic commit)\nclaude-hooks bump-version patch --no-commit\n```\n\n**What it does:**\n\n- Detects project type (Node.js, Maven, or monorepo with both)\n- Updates `package.json` and/or `pom.xml`\n- Generates CHANGELOG entry with Claude (analyzes commits)\n- Commits changes automatically with conventional commit format\n- Creates annotated Git tag with `v` prefix (e.g., `v2.7.0`)\n- Tags stay local by default (use `--push` to push immediately, or let `create-pr` handle it)\n\n**Version workflow:**\n\n```\n2.7.0 → 2.8.0-SNAPSHOT    # Start development\n2.8.0-SNAPSHOT → 2.8.0-RC # Release candidate\n2.8.0-RC → 2.8.0          # Final release\n```\n\n**Integration with create-pr:**\n\n- Validates version alignment (package.json, pom.xml, CHANGELOG, tags)\n- Detects and prompts to push unpushed tags\n- Warns if local version ≤ remote version\n\n### Generate CHANGELOG\n\nStandalone CHANGELOG generation (without version bump):\n\n```bash\n# Auto-detect version from package.json/pom.xml\nclaude-hooks generate-changelog\n\n# Specific version with release marking\nclaude-hooks generate-changelog 2.7.0 --release\n\n# Compare against different base branch\nclaude-hooks generate-changelog --base-branch develop\n```\n\n**What it does:**\n\n- Analyzes commits since last tag using Claude\n- Categorizes by Conventional Commits types (feat, fix, refactor, etc.)\n- Generates Keep a Changelog format entries\n- Discovers all CHANGELOG.md files (monorepo aware); prompts to select when multiple found\n- Updates the selected CHANGELOG.md automatically\n- Useful when `bump-version --update-changelog` fails\n\n### Disable/Enable Hooks\n\n```bash\nclaude-hooks disable [pre-commit|prepare-commit-msg]\nclaude-hooks enable [pre-commit|prepare-commit-msg]\n```\n\n### Uninstall\n\n```bash\nclaude-hooks uninstall\n```\n\n### Presets\n\n```bash\nclaude-hooks presets              # List available\nclaude-hooks --set-preset backend # Set preset\nclaude-hooks preset current       # Show current\n```\n\n| Preset    | Extensions                               | Focus                    |\n| --------- | ---------------------------------------- | ------------------------ |\n| backend   | .java, .xml, .yml, .yaml                 | Spring Boot, JPA, OWASP  |\n| frontend  | .js, .jsx, .ts, .tsx, .css, .scss, .html | React, XSS, a11y         |\n| fullstack | all above                                | API contract consistency |\n| database  | .sql                                     | SQL injection, indexes   |\n| liquibase | .yaml, .sql                              | Liquibase changesets, rollback, T-SQL |\n| ai        | .js, .json, .md, .sh                     | Node.js, Claude API      |\n| default   | multiple                                 | General quality          |\n\n### Skip Analysis\n\n```bash\ngit commit --no-verify -m \"message\"\n```\n\n### Judge Auto-Fix (opt-in)\n\nThe judge always reports its findings and the concrete patch it would apply. Whether\nthat patch is **written to your working tree** is opt-in and **off by default**.\n\n```bash\ngit commit -m \"message\"                    # default: fixes are suggested, not applied\nCLAUDE_HOOKS_FIX=1 git commit -m \"message\" # apply fixes and stage them\nCLAUDE_HOOKS_FIX=0 git commit -m \"message\" # force off, even if config enables it\n```\n\nPersistently, via `.claude/config.json` or the team's remote `settings.json`:\n\n```json\n{ \"judge\": { \"autoFix\": true } }\n```\n\nPrecedence: `CLAUDE_HOOKS_FIX` > user config > remote/team settings > packaged default (`false`).\n\nA suggested-but-unapplied fix **still blocks the commit** — the defect is real and\nstill present. Suggestion mode removes the mutation, not the quality gate.\n\n> Why off by default: field data across multiple sessions put auto-fixes at roughly\n> 50/50 between resolving the issue and introducing an error that had to be reverted.\n> Until fix quality is measured per issue category, the safe default is to show the\n> patch and let you apply it.\n\n### Claude transport (CLI vs SDK)\n\nHow claude-hooks reaches Claude is an explicit configuration choice, independent of how\nyou invoke it. The default is the **Claude CLI**, using your normal interactive login:\n\n```json\n{ \"claude\": { \"spawn\": { \"transport\": \"cli\" } } }\n```\n\nSetting `transport` to `\"sdk\"` routes calls through the Anthropic SDK instead, which\nrequires `ANTHROPIC_API_KEY` in the environment. **This is a parked capability, not a\nsupported configuration** — spend is expected to stay on personal login tokens, so the\nSDK path is retained (and deliberately exercised by `claude-hooks install --verify-sdk`)\nbut is not funded. Leave it on `cli` unless that changes.\n\nWhere it can be set, and where it cannot:\n\n| Channel | Works? |\n|---|---|\n| `lib/defaults.json` (packaged default) | ✅ `\"cli\"` |\n| Team remote `settings.json` → `claude.spawn.transport` | ✅ deep-merged over the default |\n| Per-call `transport` option in code | ✅ overrides both |\n| User `.claude/config.json` | ❌ **silently ignored** — `resolveSpawnConfig()` reads the resolved `claude` section directly and never consults user config |\n\nThat last row is a real limitation, not an oversight in this table: wiring user config into\nspawn resolution would also change how `claude.defaultModel` resolves for existing callers,\nwhich is out of scope for a transport switch.\n\n> **`--headless` does not select a transport.** It means *non-interactive* — skip prompts —\n> and nothing more. It used to also mean \"use the SDK\", which made `--format json` (which\n> required `--headless`) unreachable without an API key. Those meanings are now separate, and\n> `--format json` works on its own. Likewise `CLAUDE_HOOKS_HEADLESS=1` no longer has any\n> effect in the git hooks; they warn if it is set.\n\n### Debug Mode\n\n```bash\nclaude-hooks --debug true|false|status\n```\n\n### Extensions\n\nThird-party tools plug into the pre-commit hook as isolated child processes. They are **opt-in**:\nan extension runs only when `.claude/config.json` names it, and remote team config may disable one\nbut never enable it.\n\nIn v1 the wiring is narrower than the manifest schema: only `pre-commit:pre-analysis` and\n`pre-commit:post-analysis` are wired, and only `sync-joining` subscriptions there actually run. An\n`async` subscription — or one to any of the other ten hook points a manifest accepts — validates\ncleanly and shows as `enabled` in `claude-hooks extension list`, but is never launched and emits no\nmetric.\n\n```bash\nclaude-hooks extension list             # Installed extensions, activation and breaker state\nclaude-hooks extension enable <name>    # Clear a tripped circuit breaker\nclaude-hooks extension disable <name>   # Trip the breaker by hand\n```\n\nAn extension that fails three times in a row is disabled automatically and stops being launched, so\na broken integration costs three failed invocations rather than every commit. The trip lands on the\nthird commit — or the second, if the extension subscribes to both wired pre-commit points and is\ntherefore launched twice per commit. A new manifest version clears the breaker and restores the full\nthree strikes. `enable` clears it too, but it does **not** opt the extension in, which stays a\nconfig decision.\n\n**Extension findings are reported, never judged.** An extension runs an SDLC process *parallel* to\nthe analysis — a linter, a scanner, a licence check — so its output is a pass/fail fact about the\nrepo rather than a second opinion on the code. Its findings are therefore excluded from the judge\nentirely: they neither trigger a judge run nor appear in its input, and a clean commit stays a\none-spawn commit no matter how much an extension reports. They are still shown, still counted in\nthe totals, and still summarised in the \"reported, not blocking\" notice.\n\nBy default a finding also cannot block: it is clamped to `info` and stamped with the `extension`\ncategory, both of which the gate demotes. Adding `\"allowBlocking\": true` beside `\"enabled\": true`\nin an extension's entry lifts both, and does so **deterministically** — because the judge never\nsees the finding, nothing can dismiss it as a false positive. There is no `allowJudging` grant.\n\nThe opt-in must sit inside `overrides`, in a config declaring `\"version\": \"2.8.0\"`. A section\nwritten at the top level is ignored — with a warning, but the extension will not run:\n\n```json\n{\n  \"version\": \"2.8.0\",\n  \"overrides\": { \"extensions\": { \"entries\": { \"my-extension\": { \"enabled\": true } } } }\n}\n```\n\n### Telemetry\n\n```bash\nclaude-hooks telemetry show   # View statistics\nclaude-hooks telemetry clear  # Clear data\n```\n\n### Help & Issue Reporting\n\n```bash\nclaude-hooks help \"how do presets work?\"  # AI-powered help (navigates .library/)\nclaude-hooks help --report-issue          # Interactive GitHub issue creation\nclaude-hooks --help                       # Static command reference\n```\n\n### Batch Info\n\n```bash\nclaude-hooks batch-info\n# Shows: orchestration model, threshold, default analysis model\n# Shows: per-model average analysis time and orchestration overhead (from telemetry)\n```\n\n### Third-Party Integrations (extension points)\n\nThird-party tools plug in through the **extension-point contract** — isolated child processes\nspeaking JSON over stdio, opt-in per extension, and unable to block a commit unless explicitly\ngranted. The in-process `skillRegistry` integration this replaced was removed with the contract\n(AUT-4409); a `skillRegistry` block left in your config is ignored and reported once on load.\n\nActivation requires **both** a local install and a config opt-in:\n\n| Installed locally | Enabled in config | Behaviour |\n| --- | --- | --- |\n| yes | yes | runs, bounded by the manifest timeout |\n| no | yes | one warning naming what is missing |\n| yes | no | nothing — opt-in is mandatory (INV-5) |\n| no | no | nothing |\n\n```bash\nclaude-hooks extension list             # installed extensions, activation and breaker state\nclaude-hooks extension enable <name>    # clear a tripped circuit breaker\nclaude-hooks extension disable <name>   # trip the breaker by hand\n```\n\nTools that need no adapter at all can be run straight from config as **triggers** — before or\nafter any claude-hooks command, sync or async:\n\n```json\n{ \"on\": \"create-pr\", \"when\": \"after\", \"mode\": \"async\", \"timeoutMs\": 30000,\n  \"run\": [\"automation-skills\", \"retro\"] }\n```\n\n**Writing or reintegrating an extension:** see **[docs/EXTENSIONS.md](docs/EXTENSIONS.md)** — §8\nfor triggers (no adapter), §2–6 for contributions (JSON envelope), §9 for skills.\n\n### Other Commands\n\n```bash\nclaude-hooks status   # Show hook status\nclaude-hooks update   # Update to latest version\n```\n\n---\n\n## Architecture Reference (AI Context)\n\n### Design Philosophy\n\n**Modular, decoupled, reusable code.** Each component has a single responsibility and can be tested/modified independently.\n\n### Directory Map\n\n| Path               | Purpose                                                  | Key Exports                              |\n| ------------------ | -------------------------------------------------------- | ---------------------------------------- |\n| `bin/claude-hooks` | **Thin CLI router** - argument parsing, command dispatch | -                                        |\n| `lib/commands/`    | **Command modules** - one file per CLI command           | See table below                          |\n| `lib/config.js`    | **Config system** - load/merge configuration             | `getConfig()`                            |\n| `lib/hooks/`       | **Git hook logic** - Node.js implementations             | `pre-commit.js`, `prepare-commit-msg.js` |\n| `lib/utils/`       | **Reusable utilities** - shared across commands          | See table below                          |\n| `templates/`       | **Static assets** - bash wrappers, prompts, presets      | Copied during install                    |\n\n### Command Modules (`lib/commands/`)\n\n| Module                  | Purpose                                                           | Key Exports                                                                   |\n| ----------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------------------- |\n| `helpers.js`            | **Shared CLI utilities** - colors, output, platform detection     | `colors`, `error()`, `success()`, `info()`, `checkGitRepo()`, `Entertainment` |\n| `install.js`            | **Installation logic** - dependencies, hooks, templates           | `runInstall()`, `extractLegacySettings()`                                     |\n| `hooks.js`              | **Hook management** - enable, disable, status, uninstall          | `runEnable()`, `runDisable()`, `runStatus()`, `runUninstall()`                |\n| `analyze.js`            | **Interactive code analysis** - analyze before committing         | `runAnalyze()`                                                                |\n| `analyze-diff.js`       | **Diff analysis** - generate PR metadata from git diff            | `runAnalyzeDiff()`                                                            |\n| `analyze-pr.js`         | **PR analysis** - analyze GitHub PR with team guidelines          | `runAnalyzePr()`                                                              |\n| `create-pr.js`          | **PR creation** - full workflow via Octokit                       | `runCreatePr()`                                                               |\n| `bump-version.js`       | **Version management** - bump with CHANGELOG and Git tag          | `runBumpVersion()`                                                            |\n| `generate-changelog.js` | **CHANGELOG generation** - standalone command                     | `runGenerateChangelog()`                                                      |\n| `setup-github.js`       | **Token setup** - interactive GitHub configuration                | `runSetupGitHub()`                                                            |\n| `setup-linear.js`       | **Token setup** - interactive Linear configuration                | `runSetupLinear()`                                                            |\n| `presets.js`            | **Preset management** - list, set, show current                   | `runShowPresets()`, `runSetPreset()`, `runCurrentPreset()`                    |\n| `update.js`             | **Self-update** - check and install latest version                | `runUpdate()`                                                                 |\n| `migrate-config.js`     | **Config migration** - legacy to the current format                    | `runMigrateConfig()`                                                          |\n| `debug.js`              | **Debug toggle** - enable/disable verbose logging                 | `runSetDebug()`                                                               |\n| `telemetry-cmd.js`      | **Telemetry commands** - show/clear statistics                    | `runShowTelemetry()`, `runClearTelemetry()`                                   |\n| `diff-batch-info.js`    | **Batch info** - orchestration config + per-model speed telemetry | `runDiffBatchInfo()`                                                          |\n| `help.js`               | **Help, AI librarian, report-issue**                              | `runShowHelp()`, `showStaticHelp()`, `runShowVersion()`                       |\n\n### Utility Modules (`lib/utils/`)\n\n| Module                          | Purpose                                                                                | Key Exports                                                                                                                                                                                                                         |\n| ------------------------------- | -------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `analysis-engine.js`            | **Shared analysis logic** - file data, orchestration, results (v2.13.0)                | `buildFilesData()`, `runAnalysis()`, `consolidateResults()`, `displayResults()`                                                                                                                                                     |\n| `diff-analysis-orchestrator.js` | **Intelligent orchestration** - semantic batch grouping via Opus (v2.20.0)             | `orchestrateBatches()`, `buildFileOverview()`, `detectDependencies()`                                                                                                                                                               |\n| `claude-client.js`              | **Claude CLI wrapper** - spawn, retry, model override                                  | `analyzeCode()`, `executeClaudeWithRetry()`, `extractJSON()`                                                                                                                                                                        |\n| `prompt-builder.js`             | **Prompt construction** - load templates, replace variables, inject commit context     | `buildAnalysisPrompt()`, `loadPrompt()`                                                                                                                                                                                             |\n| `git-operations.js`             | **Git abstractions** - staged files, diff, branch comparison                           | `getStagedFiles()`, `getDiff()`, `getRepoRoot()`, `resolveBaseBranch()`, `getDiffBetweenRefs()`                                                                                                                                     |\n| `pr-metadata-engine.js`         | **PR metadata generation** - branch context, diff reduction (v2.14.0)                  | `getBranchContext()`, `buildDiffPayload()`, `generatePRMetadata()`, `analyzeBranchForPR()`                                                                                                                                          |\n| `github-api.js`                 | **Octokit integration** - PR creation, PR analysis, token validation, content fetching | `createPullRequest()`, `fetchPullRequest()`, `fetchPullRequestFiles()`, `createPullRequestReview()`, `parseGitHubPRUrl()`, `validateToken()`, `saveGitHubToken()`, `fetchFileContent()`, `fetchDirectoryListing()`, `createIssue()` |\n| `token-store.js`                | **Token persistence** - centralized settings.local.json read/write                     | `loadToken()`, `saveToken()`, `hasToken()`, `loadLocalSettings()`                                                                                                                                                                   |\n| `linear-connector.js`           | **Linear integration** - ticket context fetching with retry                            | `fetchTicket()`, `extractLinearTicketFromTitle()`, `testConnection()`, `loadLinearToken()`                                                                                                                                          |\n| `pr-statistics.js`              | **PR statistics** - write-only JSONL analytics                                         | `recordPRAnalysis()`                                                                                                                                                                                                                |\n| `github-client.js`              | **GitHub helpers** - repo parsing, config-based reviewers                              | `getReviewersForFiles()`, `parseGitHubRepo()`                                                                                                                                                                                       |\n| `reviewer-selector.js`          | **Team-based reviewer selection** - GitHub Teams API resolution (v2.32.0)              | `selectReviewers()`                                                                                                                                                                                                                  |\n| `preset-loader.js`              | **Preset system** - load tech-stack configurations                                     | `loadPreset()`, `listPresets()`                                                                                                                                                                                                     |\n| `task-id.js`                    | **Task ID extraction** - Jira, GitHub, Linear patterns                                 | `getOrPromptTaskId()`, `formatWithTaskId()`                                                                                                                                                                                         |\n| `judge.js`                      | **Auto-fix judge** - LLM verdict + search/replace fixes (v2.20.0)                      | `judgeAndFix()`, `applyFix()`                                                                                                                                                                                                       |\n| `resolution-prompt.js`          | **Issue resolution** - AI-friendly fix prompts                                         | `generateResolutionPrompt()`                                                                                                                                                                                                        |\n| `logger.js`                     | **Logging system** - centralized output with debug mode                                | `info()`, `warning()`, `error()`, `debug()`                                                                                                                                                                                         |\n| `interactive-ui.js`             | **CLI UI components** - previews, prompts, spinners                                    | `showPRPreview()`, `promptConfirmation()`, `promptMenu()`                                                                                                                                                                           |\n| `telemetry.js`                  | **Local telemetry** - track JSON parsing, retries                                      | `recordEvent()`, `displayStatistics()`                                                                                                                                                                                              |\n\n### Execution Flow\n\n#### Pre-commit Hook\n\n```\ngit commit → templates/pre-commit (bash wrapper)\n  → lib/hooks/pre-commit.js\n  → getStagedFiles() → filterFiles() by preset extensions + size\n  → buildFilesData() → runAnalysis() (via analysis-engine.js)\n  → displayResults() → show quality gate status\n  → judge evaluates ALL issues (any severity):\n    → TRUE_ISSUE, judge.autoFix off (DEFAULT): patch printed as a suggestion,\n      working tree untouched, issue stays unresolved\n    → TRUE_ISSUE, judge.autoFix on: auto-fix via search/replace + git add\n    → FALSE_POSITIVE: dismissed\n    → LATENT: recorded, never fixed, never blocking (no caller reaches it today)\n    → ALL resolved: exit 0 (pass)\n    → ANY unresolved: generates resolution prompt → exit 1 (block)\n    → judge failure: user warned → exit 1 (block)\n  → judge disabled: original quality gate (blocks on critical/blocker only)\n```\n\n**Note:** For interactive review of non-blocking issues, use `claude-hooks analyze` before committing.\n\n#### Commit Message Generation\n\n```\ngit commit -m \"auto\" → templates/prepare-commit-msg (bash wrapper)\n  → lib/hooks/prepare-commit-msg.js\n  → extract task-id from branch name\n  → generate message via Claude\n  → write to COMMIT_EDITMSG\n```\n\n#### PR Metadata Generation (analyze-diff / create-pr)\n\n```\nclaude-hooks analyze-diff|create-pr → bin/claude-hooks (router)\n  → lib/commands/analyze-diff.js or create-pr.js (thin wrapper)\n  → analyzeBranchForPR() (pr-metadata-engine.js)\n    → resolveBaseBranch() (git-operations.js)\n    → getDiffBetweenRefs() + getCommitsBetweenRefs()\n    → buildDiffPayload() with tiered reduction (context → proportional → stat-only)\n    → executeClaudeWithRetry() → PRMetadata\n  → analyze-diff: formats to console + saves JSON\n  → create-pr: additionally creates PR via Octokit API\n```\n\n#### PR Analysis (analyze-pr)\n\n```\nclaude-hooks analyze-pr <url> → bin/claude-hooks (router)\n  → lib/commands/analyze-pr.js\n  → parseGitHubPRUrl() → fetchPullRequest() + fetchPullRequestFiles()\n  → extractLinearTicketFromTitle() → fetchTicket() (optional enrichment)\n  → resolvePreset() (labels → ticket → auto-detect → default)\n  → loadPrompt('ANALYZE_PR.md') with preset guidelines + categories\n  → executeClaudeWithRetry() → extractJSON() → normalizeCategory()\n  → interactive comment workflow (confirm/skip)\n  → createPullRequestReview() → inline + general comments\n  → recordPRAnalysis() (JSONL statistics)\n```\n\n### Config Priority\n\n```\ndefaults (lib/config.js)\n  < user config (.claude/config.json)\n  < preset config (.claude/presets/{name}/)\n```\n\nPreset always wins - tech-stack specific has priority over user preferences.\n\n> **`claude.spawn` does not follow this chain.** Model, timeouts and transport resolve from\n> `lib/defaults.json` merged with the team's **remote** `settings.json`. User\n> `.claude/config.json` hydrates only `analysis`, `commitMessage` and `linting`, so a\n> `claude.spawn` block placed there is silently ignored. Change those knobs in the remote\n> settings file.\n\n### Environment variables\n\n| Variable | Effect |\n|---|---|\n| `CLAUDE_HOOKS_FIX=1` / `=0` | Force judge auto-fix on or off for one hook run |\n| `CLAUDE_HOOKS_PREFER_GLOBAL=1` | Make the hook shim resolve the globally installed package instead of the local checkout. Only relevant inside the claude-git-hooks repo itself, where the shim self-hosts so that a hook change gates itself |\n| `CLAUDE_HOOKS_HEADLESS=1` | **Inert.** Once selected the SDK transport; now warns and does nothing. Use `claude.spawn.transport` |\n\n### Config Format (v2.8.0)\n\nThe `version` field is a **config format** version, unrelated to the package version. It is\nmatched by **major**, so any `2.x` or `3.x` config is read as-is and `2.x` configs keep working\nindefinitely — there is no forced migration.\n\nNew configs are still written as `2.8.0`, deliberately. A config declaring a version an *older*\ninstallation does not recognise is fatal there — every release before this one compares the string\nexactly and fails the hook — so the reader learns to accept the next format before anything starts\nwriting it. Nothing behavioural depends on which supported version the string names.\n\n```json\n{\n    \"version\": \"2.8.0\",\n    \"preset\": \"backend\",\n    \"overrides\": {\n        \"github\": {\n            \"pr\": {\n                \"defaultBase\": \"develop\",\n                \"reviewers\": [\"user\"],\n                \"autoPush\": true, // Auto-push unpublished branches (v2.11.0)\n                \"pushConfirm\": true, // Prompt before push (v2.11.0)\n                \"showCommits\": true, // Show commit preview (v2.11.0)\n                \"verifyRemote\": true // Verify remote exists (v2.11.0)\n            }\n        }\n    }\n}\n```\n\n### Key Patterns\n\n- **Factory**: `preset-loader.js` - dynamic config per tech-stack\n- **Template Method**: `prompt-builder.js` - prompts from .md templates\n- **Strategy**: `analysis-engine.js` - sequential vs orchestrated analysis\n- **Adapter**: `git-operations.js` - git commands to JS functions\n- **Command**: `lib/commands/*.js` - one module per CLI command\n\n### Modification Guide\n\n| To change...              | Edit...                                           |\n| ------------------------- | ------------------------------------------------- |\n| CLI argument parsing      | `bin/claude-hooks`                                |\n| Install workflow          | `lib/commands/install.js`                         |\n| PR creation flow          | `lib/commands/create-pr.js`                       |\n| PR analysis from URL      | `lib/commands/analyze-pr.js`                      |\n| Analysis logic            | `lib/hooks/pre-commit.js`                         |\n| Message generation        | `lib/hooks/prepare-commit-msg.js`                 |\n| Prompt templates          | `templates/*.md` or `.claude/prompts/*.md`        |\n| Preset definitions        | `templates/presets/{name}/`                       |\n| Config defaults           | `lib/config.js`                                   |\n| GitHub integration        | `lib/utils/github-api.js`                         |\n| Claude CLI calls          | `lib/utils/claude-client.js`                      |\n| Batch orchestration logic | `lib/utils/diff-analysis-orchestrator.js`         |\n| Orchestration prompt      | `templates/DIFF_ANALYSIS_ORCHESTRATION_PROMPT.md` |\n| Auto-fix judge logic      | `lib/utils/judge.js`                              |\n\n### File Structure\n\n```\nclaude-git-hooks/\n├── bin/claude-hooks              # Thin CLI router - dispatch to commands\n├── lib/\n│   ├── config.js                 # Config system - load and merge\n│   ├── commands/                 # Command modules - one per CLI command\n│   │   ├── helpers.js            # Shared utilities - colors, output\n│   │   ├── install.js            # Install command - hooks, templates\n│   │   ├── hooks.js              # Hook management - enable/disable\n│   │   ├── analyze-diff.js       # Diff analysis - PR metadata\n│   │   ├── analyze-pr.js         # PR analysis - GitHub PR review\n│   │   ├── create-pr.js          # PR creation - Octokit workflow\n│   │   ├── setup-github.js       # Token setup - interactive GitHub config\n│   │   ├── setup-linear.js       # Token setup - interactive Linear config\n│   │   ├── presets.js            # Preset commands - list/set\n│   │   ├── update.js             # Self-update - npm latest\n│   │   ├── migrate-config.js     # Migration - legacy to current format\n│   │   ├── debug.js              # Debug mode - toggle verbose\n│   │   ├── telemetry-cmd.js      # Telemetry - show/clear stats\n│   │   ├── diff-batch-info.js    # Batch info - orchestration config\n│   │   └── help.js               # Help display - usage info\n│   ├── hooks/                    # Git hooks - Node.js logic\n│   │   ├── pre-commit.js         # Pre-commit analysis\n│   │   └── prepare-commit-msg.js # Message generation\n│   └── utils/                    # Reusable modules - shared logic\n│       ├── diff-analysis-orchestrator.js  # Intelligent batch orchestration\n│       ├── judge.js                      # Auto-fix judge (v2.20.0)\n│       └── token-store.js               # Token persistence - settings.local.json\n├── .library/                     # Code Knowledge Library - auto-generated module docs\n│   ├── books/                    # One book per source module (auto + manual sections)\n│   ├── extractor/                # Tree-sitter AST tooling\n│   │   ├── extract.js            # Source → book auto-section generator\n│   │   ├── parser.js             # WASM parser init and grammar loading\n│   │   └── adapters/             # Language-specific CST → normalized AST\n│   └── templates/                # Book schema and category reference\n├── templates/\n│   ├── pre-commit                # Bash wrapper - invokes Node.js\n│   ├── prepare-commit-msg        # Bash wrapper - invokes Node.js\n│   ├── DIFF_ANALYSIS_ORCHESTRATION_PROMPT.md  # Opus orchestration prompt\n│   ├── *.md                      # Other prompt templates\n│   └── presets/                  # Preset configurations\n└── test/unit/                    # Jest tests\n```\n\n### Analysis Routing (v2.20.0)\n\nTwo-tier strategy based on file count:\n\n| Files | Strategy                      | Details                                                                        |\n| ----- | ----------------------------- | ------------------------------------------------------------------------------ |\n| 1–2   | Sequential                    | Single Claude call, full context                                               |\n| 3+    | **Intelligent orchestration** | Opus groups files semantically, assigns model per batch, shared commit context |\n\n**Orchestration flow (3+ files):**\n\n1. Opus reads a lightweight file overview + detected cross-file dependencies\n2. Groups related files into semantically coherent batches\n3. Assigns model per batch: `haiku` (config/docs), `sonnet` (business logic), `opus` (security-critical)\n4. All batches run in parallel; each receives a shared commit overview header\n5. Falls back to one-file-per-batch if orchestration fails\n\n**Inspect orchestration settings:**\n\n```bash\nclaude-hooks batch-info   # Shows config + per-model avg speed from telemetry\n```\n\n### Hardcoded Defaults\n\n- Max file size: 1MB\n- Max files per commit: unlimited by default (set `analysis.maxFiles` to cap)\n- Orchestrator threshold: 3 files\n- Orchestrator model: opus (internal, not configurable)\n- Extensions: discovered from `.claude/extensions/`, every one disabled until opted in per extension; blocking requires an explicit `allowBlocking` grant\n\n---\n\n## Contributing\n\n### Branching Strategy\n\nThis repository follows **simplified GitHub Flow**:\n\n- **Main branch**: `main` (protected)\n- **Feature branches**: `feature/issue-description` or `feature/TASK-ID-description`\n- **Fix branches**: `fix/issue-description`\n- **Hotfix branches**: `hotfix/urgent-description`\n\n**Rules:**\n\n1. All changes require PR to `main`\n2. No direct commits to `main`\n3. PRs require review (auto-merge NOT allowed)\n\n### Development Process\n\n**1. Initial setup**\n\n```bash\ngit clone <your fork or source checkout>\ncd git-hooks\nnpm install\nnpm link  # Install globally as symlink for development\n```\n\n**2. Create feature branch**\n\n```bash\ngit checkout -b feature/new-functionality\n# or with task-id: feature/IX-123-new-functionality\n```\n\n**3. Develop and test**\n\n```bash\nnpm run lint         # ESLint over lib/ bin/ test/ scripts/\n                     # (fails on warnings too: --max-warnings 0)\nnpm run lint:fix     # Auto-fix ESLint issues\nnpm run format       # Format with Prettier (writes)\nnpm run format:check # Verify formatting WITHOUT writing — this is the CI gate\nnpm run test:e2e     # SDLC e2e; --local-remote is the DEFAULT: a throwaway bare repo\n                     # stands in for origin, so no push rights are needed and origin\n                     # is never touched\nnpm run test:e2e:origin # same suite with --against-origin: pushes test branches and\n                     # deletes remote refs. Requires push authority.\n#\n# bash test/manual/sdlc-stability-check.sh --help   # full flag list\nnpm run test        # Run all tests (Jest)\nnpm run test:watch  # Tests in watch mode\nnpm run test:coverage # Coverage report\n```\n\n**4. Local testing in a test repo**\n\n```bash\ncd /path/to/test-repo\nclaude-hooks install --force --skip-auth  # Reinstall from symlink\ngit commit -m \"test\"  # Test hook (npm link is active, no reinstall needed)\n```\n\n**5. Create PR**\n\n```bash\ngit push -u origin feature/new-functionality\nclaude-hooks analyze-diff main    # Generate PR metadata\nclaude-hooks create-pr main       # Or create PR directly on GitHub\n```\n\n### CI/CD\n\nNo automated CI/CD (GitHub Actions pending). Manual verifications before merge:\n\n1. `npm run lint` passes\n2. `npm run test` — all tests pass\n3. Manual testing in test repo\n4. Peer code review\n5. CHANGELOG.md updated\n\n### Versioning\n\nFollows **Semantic Versioning** (MAJOR.MINOR.PATCH):\n\n- **MAJOR**: Breaking changes (config format, CLI arguments)\n- **MINOR**: New features without breaking changes\n- **PATCH**: Bug fixes\n\n```bash\nnpm version patch    # 2.6.1 → 2.6.2\nnpm version minor    # 2.6.1 → 2.7.0\nnpm version major    # 2.6.1 → 3.0.0\nnpm publish          # Publish to NPM\n```\n\n### Conventional Commits\n\nFormat: `<type>(<scope>): <subject>`\n\n| Type | Purpose |\n|------|---------|\n| `feat` | New functionality |\n| `fix` | Bug fix |\n| `docs` | Documentation only |\n| `style` | Formatting (no logic change) |\n| `refactor` | Refactoring without functional change |\n| `test` | Add or modify tests |\n| `chore` | Maintenance (deps, config) |\n| `perf` | Performance improvements |\n\n**Optional scopes:** `hooks`, `presets`, `github`, `cli`, `config`, `windows`\n\n```\nfeat(presets): add database preset for SQL analysis\nfix(windows): resolve spawn ENOENT with .cmd files\ndocs: update CLAUDE.md with architecture details\nchore(deps): upgrade @octokit/rest to v21\n```\n\n---\n\nMore information: see the source repository for your installation.\n","readmeFilename":"README.md"}