{"_id":"geobuke-code","_rev":"49-9befe78abd6615ea1c93e89d4aabc7c8","name":"geobuke-code","dist-tags":{"latest":"0.14.0"},"versions":{"0.1.0":{"name":"geobuke-code","version":"0.1.0","keywords":["claude-code","hook","gate","pre-implementation","code-review"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.1.0","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"90a56e380fef16b32442fd5fe5b4452b1870f2c6","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.1.0.tgz","fileCount":15,"integrity":"sha512-dGOJ6pudE6EYGog6qbQX+Y+AwEz1ly1axZHNXdooJW1+sg6l5/9MTV0YasfGTw/RTtwMPL9JkRPuwk7LSdYrJg==","signatures":[{"sig":"MEUCIQCfH52wH8ACPEY+0CTFnpCnmff7vKbDOcrGaOJx6MPQJgIgTNQd3rlcTMpeXrCoV/4YYLytF9gHVMWrVB4G+I8+7mo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48523},"type":"module","engines":{"node":">=20"},"gitHead":"afc6449452063b1ccce48442747247712cafb9b3","scripts":{"eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 구현 직전 강제 게이트. Claude Code PreToolUse hook으로 코드 변경 전 계획 케이스 누락·시나리오 미지정을 차단한다.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.40.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.1.0_1782025808074_0.8034602163441613","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"geobuke-code","version":"0.2.0","keywords":["claude-code","hook","gate","pre-implementation","code-review"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.2.0","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"173af1cca23bb8fa3022687768da6febc98e7265","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.2.0.tgz","fileCount":16,"integrity":"sha512-bgy6sUG3WS8gBvbzvTLycQcpPcmyvWrn/k8yRZGKVu4FoXAJuQBjC4oPi7Rkuk8+2wBuIDQgiQejJJCis1CrjA==","signatures":[{"sig":"MEUCIQChhWBVUFmRAWYc7Wzy/fruYN2h0XwAYyX2IGLF0wySCwIgLRkNYyd4S0tO2K/D4AzOvGxATGF94aihBZKME9jltS4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59169},"type":"module","engines":{"node":">=20"},"gitHead":"1ca7b0ec790a85806c9dd44174606f523cd974c1","scripts":{"eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 구현 직전 강제 게이트. Claude Code PreToolUse hook으로 코드 변경 전 계획 케이스 누락·시나리오 미지정을 차단한다.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.40.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.2.0_1782051771532_0.6387254592288554","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"geobuke-code","version":"0.2.1","keywords":["claude-code","hook","gate","pre-implementation","code-review"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.2.1","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"88cdd919865e3085574ee5b27690cb27d497f854","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.2.1.tgz","fileCount":16,"integrity":"sha512-223PbcQNSa1i4hlE3uKRERONyJOPyl0N3RTdIOynwipJDFGiuY6/yqw0+FqLw/Te9FNjr/HpVFZ7a9ekQ1gloQ==","signatures":[{"sig":"MEYCIQDb5pGR4a9ek99wG27xcd0zZVdM73I12CLNChgiDLBNlAIhALsW22OoC1sWbFtKukPObHHM5O0TcU1/3q1iBqtbtGP6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60869},"type":"module","engines":{"node":">=20"},"gitHead":"4af5aae6ca2003d5a006fa87805d95723e148b72","scripts":{"eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 구현 직전 강제 게이트. Claude Code PreToolUse hook으로 코드 변경 전 계획 케이스 누락·시나리오 미지정을 차단한다.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.40.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.2.1_1782087168225_0.9811355257978227","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"geobuke-code","version":"0.2.2","keywords":["claude-code","hook","gate","pre-implementation","code-review"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.2.2","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"6f31dddb8fef0ca11400dcaf17bd0c92259b8bdc","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.2.2.tgz","fileCount":16,"integrity":"sha512-EoXS+z6i018jmeExANp9lwHVMZcBMa7uOzkgSJXZg5X8gkXapKvXKs1uUCcs/xYmpFdoI6TjClktO4kK2257fg==","signatures":[{"sig":"MEQCIFSX/r3BmNgSn9YX8WPYMnVYr7/hc+Mz5oXnqpjBEAe+AiAr7iGcMTFd2Ng69ywnO1+VF4yC2fV3oE8BJw8ic/Z80g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66566},"type":"module","engines":{"node":">=20"},"gitHead":"60d8ba9e7db1d9ee3a9775c51c7ee31fe98994fe","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 구현 직전 강제 게이트. Claude Code PreToolUse hook으로 코드 변경 전 계획 케이스 누락·시나리오 미지정을 차단한다.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.40.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.2.2_1782102757239_0.972677292033655","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"geobuke-code","version":"0.2.3","keywords":["claude-code","hook","gate","pre-implementation","code-review"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.2.3","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"7b170c1412dcc7724eb12a1ac0fbd44684cdb542","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.2.3.tgz","fileCount":19,"integrity":"sha512-+zCMFJZfgAyNoK7t1S4u1usQY+CmiGJ7PxEqT19vkIrYv3KgkPvJvNulu09K4YVVv6wDgMFEiiCrof5RpJJA9Q==","signatures":[{"sig":"MEYCIQC/sSrFHeUZ6vSLi3XFnRceXF44zOvwXgXvD2FTEA4/5gIhAI5w8CrMRJCFbW2fvKUyrYB/yyfYO2iSw+xN+HvMBJr9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83962},"type":"module","engines":{"node":">=20"},"gitHead":"d068428194dbc18898cda2499e1bfbd18d121761","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 구현 직전 강제 게이트. Claude Code PreToolUse hook으로 코드 변경 전 계획 케이스 누락·시나리오 미지정을 차단한다.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.40.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.2.3_1782109489440_0.8056918492955651","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"geobuke-code","version":"0.2.4","keywords":["claude-code","hook","gate","pre-implementation","code-review"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.2.4","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"21b5d92ce62c1be2b7faedce7c3b0ef05890db13","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.2.4.tgz","fileCount":19,"integrity":"sha512-eiYFbwBuzO5KZRhsYdpnwv5hfztPXk3DURLgHf4VjR/S3sEAnvydQJQkVY0fpd0aMc0Uv0kqzFGvRhcaWMr7+w==","signatures":[{"sig":"MEUCIAlNkRzosFUjZsjhiOTiPnpNN2973YYoJqU5S+G1STuIAiEA0ccu5abnSh6wsZap6AmNvDBzm7KOw/wSlhCe1e0/eY4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85033},"type":"module","engines":{"node":">=20"},"gitHead":"cbef6d8d0794dcde1c3d9c136618e5eec4118199","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 구현 직전 강제 게이트. Claude Code PreToolUse hook으로 코드 변경 전 계획 케이스 누락·시나리오 미지정을 차단한다.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.40.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.2.4_1782130614479_0.02947615007690696","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"geobuke-code","version":"0.2.5","keywords":["claude-code","hook","gate","pre-implementation","code-review"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.2.5","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"29bf4fcf554f95962317f18a8c185b8c9ce85cce","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.2.5.tgz","fileCount":19,"integrity":"sha512-d663fFBqcQo+QeKmVEErbxvIpSMuqMpbhNzTmG9Nktf+gRhcuTTLRQwkwGwBGyvGO/IT4s9Tu6WjuVl388XtjA==","signatures":[{"sig":"MEQCIFe+7qHKol+u3W66hm6cRtPtbkbEfQFU/idziMkQ8nLxAiAsR956Uhc5GddBRtr74Y5WN88pPcoCOVMOyr7lZxHX3g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94375},"type":"module","engines":{"node":">=20"},"gitHead":"3a1875af3058363fa8e72e52c3c9a007b9446de3","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 구현 직전 강제 게이트. Claude Code PreToolUse hook으로 코드 변경 전 계획 케이스 누락·시나리오 미지정을 차단한다.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.40.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.2.5_1782138249410_0.6990886721861918","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"geobuke-code","version":"0.2.6","keywords":["claude-code","hook","gate","pre-implementation","code-review"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.2.6","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"8d2ca7acc4fdd67c5a56bfe3ee3e61a003c13d11","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.2.6.tgz","fileCount":21,"integrity":"sha512-gt8WnRueOENO5Gk5YjzoVI8GDBs/fCvoCVRk3XxElfT1BbueMd6XH1bugsVx6uxDEj/R9HIkqPazDJbmLjYf2w==","signatures":[{"sig":"MEUCIGIpFV9EZB4XEPPm+HcHoWCyRzBpAaIPcLgCQQSblq2UAiEA0aCI40Jay1xJTLwEnWM4mphvXZHtMjbE4PrL3nDMKRY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101168},"type":"module","engines":{"node":">=20"},"gitHead":"bed774d9174d15c1574f7381155130a6714fba69","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 구현 직전 강제 게이트. Claude Code PreToolUse hook으로 코드 변경 전 계획 케이스 누락·시나리오 미지정을 차단한다.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.40.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.2.6_1782194030312_0.34830481051438444","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"geobuke-code","version":"0.2.7","keywords":["claude-code","hook","gate","pre-implementation","code-review"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.2.7","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"8afda29f250638eba3fff291d1d751cbe22f4afb","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.2.7.tgz","fileCount":21,"integrity":"sha512-F5Bf6ypshUZO0ir9/pctvsmNLwkUk06M/zfJZfoyHPig2Etb5m/mU4+U4dDNyiUA3CCSEncDS/VJnJT80wBhmA==","signatures":[{"sig":"MEYCIQC6y+/p0DQxdJqFrpPd31o+3AARD9eHe11wwJzo9auTfQIhANriel42zbEuvW+46q15JcBHLczwWyfP+4ymXl4c5RW6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104336},"type":"module","engines":{"node":">=20"},"gitHead":"660390883405592d1d6a1e8f2036ae3bca5bda8c","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 구현 직전 강제 게이트. Claude Code PreToolUse hook으로 코드 변경 전 계획 케이스 누락·시나리오 미지정을 차단한다.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.40.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.2.7_1782201670796_0.24427259083794706","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"geobuke-code","version":"0.2.8","keywords":["claude-code","hook","gate","pre-implementation","code-review"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.2.8","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"8a817bc0993850624e17b3f65d1c2841761019f3","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.2.8.tgz","fileCount":21,"integrity":"sha512-jlCj86tOgfS/L4JcBxTsT0E5kGpblpia07PGz+JLOWRzEYnZ2WOJNGUcQZy3vZ1SAyFuYyziupybG66d05TBrQ==","signatures":[{"sig":"MEUCIC1Lvip+W3uW20htcEuLgy5uAXIzdc5JaU571Jnm5UUNAiEAzJ8FLv5xUCP1EzMyPgzdrLktv3QMOT69m+EWeDTBs90=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":106442},"type":"module","engines":{"node":">=20"},"gitHead":"7a0728345c7421b6f429f8285c0e2f02e255f27a","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 구현 직전 강제 게이트. Claude Code PreToolUse hook으로 코드 변경 전 계획 케이스 누락·시나리오 미지정을 차단한다.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.40.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.2.8_1782224982823_0.22369327169582576","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"geobuke-code","version":"0.2.9","keywords":["claude-code","hook","gate","pre-implementation","code-review"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.2.9","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"1d88a84fad07d32e1486c89a7340865f81b45bb1","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.2.9.tgz","fileCount":22,"integrity":"sha512-Plf02rMUl1X8Kjw2FVcV2RK61Xwn64s+TxhyWengPmlPavXkcIJ9JOScnYOxr/pzVjFh+wlKsYE1+0BR8SZtTw==","signatures":[{"sig":"MEQCH25ia/L5xVkd+s4vkVMqjnicNoR4kawh2DPT47mYS/MCIQCOQVNK57RQ6uliEfg7smAkNn1/EGoGGPcNkBTONxrfMw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":114954},"type":"module","engines":{"node":">=20"},"gitHead":"557037589d1d6e143de0785f20e0b0b418443935","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 구현 직전 강제 게이트. Claude Code PreToolUse hook으로 코드 변경 전 계획 케이스 누락·시나리오 미지정을 차단한다.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.40.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.2.9_1782267980276_0.29665400960076904","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"geobuke-code","version":"0.3.0","keywords":["claude-code","hook","gate","pre-implementation","code-review"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.3.0","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"19858a2e2174dcf19e2e4be33bb01c325b6bba90","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.3.0.tgz","fileCount":22,"integrity":"sha512-vbo/52qQ2EEoQSsxWlXyTmo5U8dvDYn3sC6dyMKRyygLgwzvueVNJQ0F5GdpCeVUrMoq/2RbsBtjEJLlLJdCBA==","signatures":[{"sig":"MEQCID0wdg3z752oA8h9DKemx/VLBV4WnOxTgWbr1iojKQyhAiB7glsY5ktjMses/sZvyD0SYKPd7L5BVaQTMsc2/Agm0Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117424},"type":"module","engines":{"node":">=20"},"gitHead":"8800eccc7bd27cc855be8a45977c946b430bb9f4","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 구현 직전 강제 게이트. Claude Code PreToolUse hook으로 코드 변경 전 계획 케이스 누락·시나리오 미지정을 차단한다.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.40.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.3.0_1782289288576_0.6910560838034894","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"geobuke-code","version":"0.4.0","keywords":["claude-code","hook","gate","pre-implementation","code-review"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.4.0","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"b642b7a1ff54abcfcf6b98471a37c10361730893","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.4.0.tgz","fileCount":24,"integrity":"sha512-oi65S/VSuEP0ugxQT4UHjcv/juZhb3H0tPdP2wT2yEet9RrFZ/edgiyYmXnVTVMfpBLJbX4q0boT/1htYUJ0lQ==","signatures":[{"sig":"MEYCIQCSovqnjmkNzd0J2SwVnUEGih8G7uP7UIyfuYcaaJ9/0AIhAI9z4pgLzmiikzoC71sxjq+yoX3qfW8lGXsq2S7hNBpm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":151180},"type":"module","engines":{"node":">=20"},"gitHead":"de6006db2181fb8b04dee8b060f94ad3fbe91e69","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 구현 직전 강제 게이트. Claude Code PreToolUse hook으로 코드 변경 전 계획 케이스 누락·시나리오 미지정을 차단한다.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.40.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.4.0_1782385593333_0.37909493283889173","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"geobuke-code","version":"0.4.1","keywords":["claude-code","hook","gate","pre-implementation","code-review"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.4.1","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"8a23bcda196c9bc6b0e62e8706ea0e6b5643860d","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.4.1.tgz","fileCount":25,"integrity":"sha512-DWo2XAuZe7RxGnoegImfKxdi+1z4IgymyH5ZbJ77pyzRwv0jYAYKYP1qEcwG5gZhMXDsNTGGAN9IJCZ9lqgThA==","signatures":[{"sig":"MEUCIDxKPGzQvFefSaG6km8GcJmE5mRnTCED/+HeaBGApq5gAiEA/7ehuD09kHq7+b0LFehkpLKzr45jV+Ldcha9HUzSpq4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":160087},"type":"module","engines":{"node":">=20"},"gitHead":"3cde055c7dac5be218be312fd950b6207eea9de9","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 구현 직전 강제 게이트. Claude Code PreToolUse hook으로 코드 변경 전 계획 케이스 누락·시나리오 미지정을 차단한다.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.40.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.4.1_1782398805118_0.322335501349025","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"geobuke-code","version":"0.4.2","keywords":["claude-code","hook","gate","pre-implementation","code-review"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.4.2","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"03bdf74c5f4b1819c9c0716e17ffa7749b9f9378","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.4.2.tgz","fileCount":25,"integrity":"sha512-yA7Zu9RcV+3fQIKvNTyZOlBV+sQAYrIScfN04+dauNU7O81sIF1C0t/yFC1zRT7GiWBBNhsFrPKevsKS5DDd7w==","signatures":[{"sig":"MEUCIEDwlLuypN7K2jV0ktJli+IbsxQ0nfyqv8ZVY0jfb9ajAiEAiXubOdwhCsWABCUiMLj+0/LIMkIVv3+62MpbPui4Cj0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":168070},"type":"module","engines":{"node":">=20"},"gitHead":"c3758e3d8b185aae3a23e9a902fe0f169202ba7e","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 구현 직전 강제 게이트. Claude Code PreToolUse hook으로 코드 변경 전 계획 케이스 누락·시나리오 미지정을 차단한다.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.40.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.4.2_1782460593060_0.46503872706172933","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"geobuke-code","version":"0.5.0","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.5.0","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"b7b495042509f8ed2cf5bad0f20ca0ba221b9ca5","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.5.0.tgz","fileCount":27,"integrity":"sha512-+KH/njcINuXVkQ/B0ojiJ3Nd/w5U6CB14tGL9fty0+oMg92pp48Hyf7yiKMtKJp4x8LlWX6FNuzFHO19gv0hFQ==","signatures":[{"sig":"MEUCIGcc2C6Ng04a219YYtiLymkXfDjfbS0Q0XKe9lbIA9s4AiEA73TxpY+8+5qdDo4D0fzMioYtFPyLUAOtt141zj8dOiU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":193978},"type":"module","engines":{"node":">=20"},"gitHead":"af6e66fc1451b1ddd1ad2285119c44a7ba93fcea","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.40.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.5.0_1782480065970_0.9860813588408734","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"geobuke-code","version":"0.5.1","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.5.1","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"2fc8b1d508f9e17dc56d1b0376b208d9c262e698","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.5.1.tgz","fileCount":27,"integrity":"sha512-5Lm7J9XEfAj3VxIhKHRzcsypkV9DwLzWfAEGI7DQxw8iCeLgNFr/MwSBK40zb6STZPfNQcZC5XIRnoo5g+sKxw==","signatures":[{"sig":"MEUCIHXCxN745qcrvD5G+iB8UD4Vh6ypjjsj8jRoNUPyHcsOAiEAoVz43kjsUKKtOaTIaHFjjVCXcdT4eIQ2u+HpT+3v/kM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":195608},"type":"module","engines":{"node":">=20"},"gitHead":"88fb51ed880ab44ec9e5484ba079119f105bfeff","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.40.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.5.1_1782696294754_0.5418917937941092","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"geobuke-code","version":"0.5.2","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.5.2","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"9d1b7ddf5116141299692f2644f314cf22b83b7a","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.5.2.tgz","fileCount":28,"integrity":"sha512-WgW/zmWvCZ1NbeBxhxWuTawTwTsOmUxzZUerfAK6PDySDO4K/K4Bh8/jDJ8gpfMnQccWnwtA3DcTcVkt0Ffu7w==","signatures":[{"sig":"MEUCIQDmTD1DmRdfAlurcFdTh+7lHIRTbWKLkstyEVJQdp6F7AIge4y3BmyuSQPEOy+WrfgoYLHFUt0KE7oaLCwVSqWDotQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":225466},"type":"module","engines":{"node":">=20"},"gitHead":"18e9fe919ccf84f5065e857da940636e5818dd63","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.40.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.5.2_1782965267157_0.8116250070076778","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"geobuke-code","version":"0.5.3","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.5.3","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"3da62935324b7c9dad0739b4f01d2da2d5d339c0","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.5.3.tgz","fileCount":28,"integrity":"sha512-DU9geNfpFLJbgZJevDIktR9PfWZPRcv1ttyth2adFy7uA35IZ2FcIZLnlx1JPYaZ+zIdg4zA/UHFw05a/HVRgQ==","signatures":[{"sig":"MEQCIAHAzHnNn6AjponKGcoE2tOZazveR9Z5rEjAIP2tmh0XAiA3qiGZXm3DwoAsSmeiaKg8sYiIOoj7J93mD0UxPWG+8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":233070},"type":"module","engines":{"node":">=20"},"gitHead":"d23aa2f910901fbe261cf73ada6adfaa340a6ae6","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.40.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.5.3_1782982155679_0.2087835831275049","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"geobuke-code","version":"0.5.4","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.5.4","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"52afeef48239711fdcc180702d78da732e0b2648","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.5.4.tgz","fileCount":28,"integrity":"sha512-U4GqTARp1zyazbNQJ+7w3liIsA4eTtX68+yZDI1Rc9GFRJD3JtBba2BUjX+spYuTONX5XjqKzTaeHD4xNUAe4Q==","signatures":[{"sig":"MEUCIDR8Cychu+Zj5pYE3c16aEddOwb3lc9qmza2NW0LsPP7AiEAtrTjFwtknvYvuMx8HreH9eGnXhlQYxOgU98EXxjCzXM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":234513},"type":"module","engines":{"node":">=20"},"gitHead":"163324ed72668dc338d5186b1258700a173aa467","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.40.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.5.4_1783041437883_0.19385551654793565","host":"s3://npm-registry-packages-npm-production"}},"0.5.5":{"name":"geobuke-code","version":"0.5.5","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.5.5","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"96d37f8b685bef60c9a8be43617b11692b148134","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.5.5.tgz","fileCount":28,"integrity":"sha512-OMYyuYLGUIHiRRuOpfhpt78uMDtlLvnYvzkrZd1ToOYHvyN4lUCUPirJ7cX8Un+8QksQucqJsAoktDK9rxlABQ==","signatures":[{"sig":"MEUCIHZSpc7m7MqpaefKWq47mxEJ33K2LK9Am0DW5OFf3oOZAiEAkllrBkcZbaBfnxjA7JkALhkymhBUof9wzQQXnptnUvI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":242971},"type":"module","engines":{"node":">=20"},"gitHead":"777009c118a81566b70750a75ed78b9c941ec0d8","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.40.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.5.5_1783057522447_0.34075362479609095","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"geobuke-code","version":"0.6.0","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.6.0","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"054263689e90f9158635858d2ffbdc1ff09c116b","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.6.0.tgz","fileCount":30,"integrity":"sha512-yMatm57JAFaYy+UgJ7L8jY77NfoXLiDSy4HDXBgnAa1zDJ6MmRhRkikXgPwf7+aO5v6ger9+6bQCKNNyj1a5MA==","signatures":[{"sig":"MEYCIQDFWeEhybVVyBPX5w1kRkDY7fIwIpyocLXQk9/nZMLYwAIhAPIbanLYeUJ2fe1RaB3+CsreaKrWzA2fAjNUtdPrprNO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":265070},"type":"module","engines":{"node":">=20"},"gitHead":"fd88360cca379f02a91992e5be654cd8baecef15","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.40.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.6.0_1783239115621_0.2742915367397276","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"geobuke-code","version":"0.6.1","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.6.1","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"1243b6a9c7b98a7d1eee51504f7781dfcf497a51","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.6.1.tgz","fileCount":31,"integrity":"sha512-ojA6pS50DjVlaitjzuCXR+ViAJYCwHXN+f0p0VVZjE6p4fCNSGbTSQ/7TCKxYMQr1cAc8BmVjo4xVyVDX8bFiQ==","signatures":[{"sig":"MEUCIE24YVx7w/tLzirQOe39/DGrzTpc0Nuz2dYJo2K8jvlFAiEA/mUSPJVpEC0hq0QHqUEm6ZXuWD7U2G0BSqpbzD6bGnI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":271002},"type":"module","engines":{"node":">=20"},"gitHead":"25f14561597e480c22720ce0abb93a0e5129701e","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.40.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.6.1_1783311614169_0.8099183741702787","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"geobuke-code","version":"0.7.0","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.7.0","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"5cdb7e2271296dc74d9c15021db0aaf9c440f98a","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.7.0.tgz","fileCount":35,"integrity":"sha512-P/sfOgh7i9sGQwQkDQe3iYfD9iQYgLVqH7R3SiDDgp+85KLr4gIQVOsrHA+/qRAJZGPQtfxLVBiOeD+AyyOYbw==","signatures":[{"sig":"MEYCIQCjfKvwSEdv1dXUTUqIy4NQEtme5Xslr7kUw/KgScF3jgIhALA5+od+pkAI0O25uZ0rfDvWbSSiVISrg0Dy2phUdGqi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":297548},"type":"module","engines":{"node":">=20"},"gitHead":"9eaf6a5274d9a0b234f8fb7956cd8fcc8dce2957","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.110.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"optionalDependencies":{"@anthropic-ai/claude-agent-sdk":"0.3.202"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.7.0_1783499314440_0.37162750701323777","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"geobuke-code","version":"0.8.0","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.8.0","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"e3e2bae33bf8c9014cf348061928c6a651878260","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.8.0.tgz","fileCount":36,"integrity":"sha512-U1QeOiwwxDQnIf00pPWq4KeaKbvPYTFO4SuqMhUqcorWskSKWwJlW4xPln/uTErVdL8Z+oDrxr2pFQvJ3pJr3w==","signatures":[{"sig":"MEYCIQDMH1mzAhpjY5r1dr8vfrOXBck5rA9eaoHCXqA0C6zKWwIhAJ3m+fbyRSpKZ/GRHt+6Y1Gxy5u9lFWMXnMkwP5gqtSU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":323354},"type":"module","engines":{"node":">=20"},"gitHead":"ffd9068c136535a796738c04d8893c640abee6f9","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.110.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"optionalDependencies":{"@anthropic-ai/claude-agent-sdk":"0.3.202"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.8.0_1783582645519_0.6342590287587178","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"geobuke-code","version":"0.9.0","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.9.0","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"ffc76d5bfa17ea482d8c38f4c72a490dd59ab1e8","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.9.0.tgz","fileCount":47,"integrity":"sha512-navTEYTZI+CdVATTmkzkkkjU0MaaPX1j09XOf7PzTucPv1XqMhYzCPsPuUnLCSq+zlWdrao6r/DHFS9aXz/psQ==","signatures":[{"sig":"MEQCIE0c+1B/lBckizS/Ab1yiN3yxYVP/uwu+hh2ERk8zxd+AiB8Fo+PWA4EHiFxZJqYNj97yEcEy7JM695WSMYSSH04jg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":372048},"type":"module","engines":{"node":">=22"},"gitHead":"11917710a50c159f7a6b7a1d25c823f9b5364054","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.110.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/react":"^19.2.0"},"optionalDependencies":{"ink":"^7.1.0","react":"19.2.7","@anthropic-ai/claude-agent-sdk":"0.3.202"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.9.0_1783698949919_0.4301123369645401","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"geobuke-code","version":"0.9.1","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.9.1","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"58a4eaa1c9cd74e53ddae6c367334e04e3e2e2c8","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.9.1.tgz","fileCount":48,"integrity":"sha512-J5gyCx26PhbRaXH873AOLHE00fbi3nE+PZ82Y2oAfS1Jsb06NajK/JisEXXJKshSdr8yR/p903AotOucWAVchA==","signatures":[{"sig":"MEUCIQCwNT3UHILm5XxFmSvEg5pQ0+Bu3IDkLnA5iT6zrgmOmAIgeEQ7s2MjNbbK025S1fmUiJrXTAWK+zgrQKLE+xZKOyY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":380407},"type":"module","engines":{"node":">=22"},"gitHead":"68dfbf1d99c151892f0dbc82f4c6fae2732ebbbf","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.110.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/react":"^19.2.0"},"optionalDependencies":{"ink":"7.1.0","react":"19.2.7","@anthropic-ai/claude-agent-sdk":"0.3.202"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.9.1_1783915275589_0.39888881371529394","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"geobuke-code","version":"0.9.2","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.9.2","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"ed0735c4c4b363e6c97c6868583c397de4e723fe","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.9.2.tgz","fileCount":50,"integrity":"sha512-nA/1ZO44qPD7+r+kTjOuJIro9jWmTqncuZTWPfR8aRTnyTOOCuMji1uwKUTOCfsUh8clDZ9nAAXtTThWzZR2ww==","signatures":[{"sig":"MEYCIQD3GJCIf8nb458KUXrbGH779vBqGppi5ebG74uWMKqkTAIhANFXp0LnYALy/5qOBbjr6/iYcCJrKuEw047YJRgtnBur","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":400141},"type":"module","engines":{"node":">=22"},"gitHead":"bcee09852d3af13da03f3ef5108ddb60d4fc45ae","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.110.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/react":"^19.2.0"},"optionalDependencies":{"ink":"7.1.0","react":"19.2.7","@anthropic-ai/claude-agent-sdk":"0.3.202"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.9.2_1783935370785_0.8454579990937285","host":"s3://npm-registry-packages-npm-production"}},"0.9.3":{"name":"geobuke-code","version":"0.9.3","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.9.3","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"86a730218e7c73d2e6853aa0ba248459b6ecdf63","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.9.3.tgz","fileCount":52,"integrity":"sha512-E1yPZCHQm3uscx6TSph8GPozCmezEqJW/iu0eTOXSt6O9qORzAwgn0QvmQdumTDejiLsVwoGibzF/pHWV1l4Xg==","signatures":[{"sig":"MEUCIQDA90kN+5vkmNt/i67c6vWWhtzVBOD2lBQibpaOD7j25wIgNVOBHQs0t1nSRLf6mcTj7YIszOSQloz++u7yfe6sOPo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":430810},"type":"module","engines":{"node":">=22"},"gitHead":"7600869f729f87cec79187ee2a9557520f56a470","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.110.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/react":"^19.2.0"},"optionalDependencies":{"ink":"7.1.0","react":"19.2.7","@anthropic-ai/claude-agent-sdk":"0.3.202"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.9.3_1784043009066_0.47098885385710765","host":"s3://npm-registry-packages-npm-production"}},"0.9.4":{"name":"geobuke-code","version":"0.9.4","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.9.4","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"df2465d32274cade37fe18a987cdc57c2207241d","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.9.4.tgz","fileCount":52,"integrity":"sha512-gquDTdxVjlG8fn4665T/3AOx7qy49DCkjBLHWujB2GhqXgrEJ4rXSuryPOm/XgdEPGBW/Mr/ztEGu0oDHZPsfQ==","signatures":[{"sig":"MEQCIEh+d278f0aWsTSFeozxp4PXwmNA8uj4yrSK7hrV6FsJAiB+K1y8am5b3D8DUp2057D+h4y9YrEH8zVahlzIUavXzA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":448721},"type":"module","engines":{"node":">=22"},"gitHead":"9d61f52cd555a101aba13b8f2d648e1ce72e6ffa","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.110.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/react":"^19.2.0"},"optionalDependencies":{"ink":"7.1.0","react":"19.2.7","@anthropic-ai/claude-agent-sdk":"0.3.202"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.9.4_1784120934745_0.8812473651618016","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"geobuke-code","version":"0.10.0","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.10.0","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"a0fc6a5f4169ac83658baf6514328b461ab63e54","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.10.0.tgz","fileCount":55,"integrity":"sha512-iPqakzSAZAl86I360mubisYzK5cx6G1f32KRwDpAPJxq9YTx7Il9S7QmGn0jw4maLnOdUiPd1E+Wrxh4kOhSBw==","signatures":[{"sig":"MEYCIQCC0ICHVRZjCAD0Yf9zXxHdxui3kx7tZZ9uh1Gi98qhogIhAJrdRN2lLhiMWueW0/aaIlddhPGAcP4lSrkkJlWGIRrH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":501551},"type":"module","engines":{"node":">=22"},"gitHead":"3468a2012ff66fd6a128f775719ed8668d7515fb","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.110.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/react":"^19.2.0"},"optionalDependencies":{"ink":"7.1.0","react":"19.2.7","@anthropic-ai/claude-agent-sdk":"0.3.202"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.10.0_1784272425333_0.9219948503484006","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"geobuke-code","version":"0.10.1","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.10.1","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"469b060d7637a3e268524f6c40aef491f241af2d","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.10.1.tgz","fileCount":58,"integrity":"sha512-2Y4r570pkCiP5IGqnVK1CVgSYJNhXto9pvrXU51tN8Zd2PkBSJyH8VMnz9W6VMcx1QXEWKHk26Wp9ZhjH5hjrQ==","signatures":[{"sig":"MEUCIQDx6u7EA9VRMXps0J3Bf88f4sh4qSF42Z0UzQdiBm8bYAIgFfU/CFW3c2vmhyDuzQhZoD/q+m9yryAzHOpX24/BL+M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":529354},"type":"module","engines":{"node":">=22"},"gitHead":"473700f6331dea123affc5e5f92a54f898c385e6","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.110.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/react":"^19.2.0","string-width":"^8.2.2"},"optionalDependencies":{"ink":"7.1.0","react":"19.2.7","@anthropic-ai/claude-agent-sdk":"0.3.202"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.10.1_1784613515150_0.3310579589113545","host":"s3://npm-registry-packages-npm-production"}},"0.10.2":{"name":"geobuke-code","version":"0.10.2","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.10.2","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"0e1a491869441dde4c87d1e64a3a8d1d275b5327","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.10.2.tgz","fileCount":58,"integrity":"sha512-D6gmcPXE7T/bfyuDwuiktlpYCl1qAbQxp0lK7tv3MGG+Ahmu7f569jIPSANYXXKtJlAeTn+UKEe/sd1tKS/X3A==","signatures":[{"sig":"MEUCIQDBsFylq+WzPlXNcals8ma072Nm+uy+JDoNYGbXV1xnRwIgCM5z/pJdcK/uJq4D2je+MieEpM+XiMIVLkY9D9687mc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":532717},"type":"module","engines":{"node":">=22"},"gitHead":"ea07fef7fbbb067a87f7abd6d65a7e1607a93e11","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.110.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/react":"^19.2.0","string-width":"^8.2.2"},"optionalDependencies":{"ink":"7.1.0","react":"19.2.7","@anthropic-ai/claude-agent-sdk":"0.3.202"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.10.2_1784693103565_0.16357923873231162","host":"s3://npm-registry-packages-npm-production"}},"0.10.3":{"name":"geobuke-code","version":"0.10.3","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.10.3","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"fadd28d6b6a9ef67eb74c17c8e14f094fa1cc677","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.10.3.tgz","fileCount":58,"integrity":"sha512-3W0j+Ro7lOuM6slqgqWoFojmegqwS2SacRaM6QyNnzG8GKEMyFeNPPrpg7cLKWOMnUGXfpgnpeh5QOa+Iwh/1A==","signatures":[{"sig":"MEYCIQDRk7lUNDfyYAz5wfsbBzUrD1e61TOMyB1W4KvA8PZnvwIhAIkYWc6y2U7yrNnD1zyisS7UZyxlIgZ7cVj5ZH+Hg8sN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":547367},"type":"module","engines":{"node":">=22"},"gitHead":"482a16dcbf9a66218ec77c528392ebef9c6ccf01","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.110.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/react":"^19.2.0","string-width":"^8.2.2"},"optionalDependencies":{"ink":"7.1.0","react":"19.2.7","@anthropic-ai/claude-agent-sdk":"0.3.202"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.10.3_1784701673543_0.9686120702499499","host":"s3://npm-registry-packages-npm-production"}},"0.10.4":{"name":"geobuke-code","version":"0.10.4","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.10.4","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"afcb4da04c32912e5f714e8ca3c31b3ae8f35fb9","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.10.4.tgz","fileCount":62,"integrity":"sha512-Sr+ZVlK7U0vk9DoUOtR+fsUFYWEI8oZA+SdkAloOjG5vf4XPtfRwlkenexjcPOy5fMUR0plq+msziIYuLBd5yA==","signatures":[{"sig":"MEUCIQCJoWaUJnR3MdCJwnvssowPG7UfgG+h5Mvd/aRpe3uVgAIgR1PJnDrB5FHF15yTtWQe+3othiM1X4fojp8Y6OuTHso=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":564508},"type":"module","engines":{"node":">=22"},"gitHead":"b105d8541dfed7c746ded5719444244529d0793f","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.110.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/react":"^19.2.0","string-width":"^8.2.2"},"optionalDependencies":{"ink":"7.1.0","react":"19.2.7","@anthropic-ai/claude-agent-sdk":"0.3.202"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.10.4_1784772964687_0.05579908346031104","host":"s3://npm-registry-packages-npm-production"}},"0.10.5":{"name":"geobuke-code","version":"0.10.5","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.10.5","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"2f542752a841c3061717f62e6372f409a7ddf0a3","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.10.5.tgz","fileCount":63,"integrity":"sha512-pFNUh9LGnJNPrBs//PhHDX88jkKDPzeFPMFUGSbIjdXnwz5/pjRRlgmQzleTmAHNv0WonaL88BqlB4ytydRR9w==","signatures":[{"sig":"MEUCIQDNdoApJAFZCgOltF11ypI72Z+n1IC6bBO6EOLj0Oi21AIgCNdA7MKFFqfqMm1QF93Fgz/LqmY585fhYPj1AgbLMW0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":573296},"type":"module","engines":{"node":">=22"},"gitHead":"ac4e0f4f037d3307427ddb8247df3e79b7b8f918","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.110.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/react":"^19.2.0","string-width":"^8.2.2"},"optionalDependencies":{"ink":"7.1.0","react":"19.2.7","@anthropic-ai/claude-agent-sdk":"0.3.202"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.10.5_1784858807523_0.38348072256056165","host":"s3://npm-registry-packages-npm-production"}},"0.10.6":{"name":"geobuke-code","version":"0.10.6","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.10.6","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"c2c00867358c287f179a13be2bfdee07e931db74","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.10.6.tgz","fileCount":65,"integrity":"sha512-AA1GC66F6MG6W2XUDF1cD3MB4aKfdPiQoc5DUDQk6K8LROSzhJGObqgfd0MlCkz28b//j1NJ4R5a0lENmKlHdQ==","signatures":[{"sig":"MEUCIQDnjXzW4NB2Os7YOmxQZdangxwbBUeypNxG9YxTfJadIgIge7DxwtH9DzYV9HFrUyYYxBe4MyZ92NQ0W4IY21qt2BI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":585136},"type":"module","engines":{"node":">=22"},"gitHead":"8d7abea92e7478c5b5bc94d39fc60bc2de47fdfd","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.110.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/react":"^19.2.0","string-width":"^8.2.2"},"optionalDependencies":{"ink":"7.1.0","react":"19.2.7","@anthropic-ai/claude-agent-sdk":"0.3.202"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.10.6_1784869604075_0.967545114311182","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"geobuke-code","version":"0.11.0","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.11.0","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"7a2302dd331b4378bd7f50f2d6ba6b8ff7054dbf","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.11.0.tgz","fileCount":69,"integrity":"sha512-0yLyoMn5ZIg7kJ04STXpBut6wbRhJn5iDisjxRGBW4NLAVzVNUCiuWeVoGxyZjv5h6Ty1SZfCkgKnoDzAX+qvA==","signatures":[{"sig":"MEQCIHrtfI2q6/bTMFcFluYgDoKc4k2/vKaiZE54w9O+Y1rbAiAY99pOFruJ+HJZy7cL5KJxH1YY/qrDQ/ddkdkevl/rgw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":635746},"type":"module","engines":{"node":">=22"},"gitHead":"e88689e3768c361e0b60267ce6b4dae66bff0afa","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.110.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/react":"^19.2.0","string-width":"^8.2.2"},"optionalDependencies":{"ink":"7.1.0","react":"19.2.7","@anthropic-ai/claude-agent-sdk":"0.3.202"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.11.0_1785118850891_0.2203920952272993","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"geobuke-code","version":"0.11.1","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.11.1","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"7e3b396220cbdd07520d58810e4c15efe35d25fc","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.11.1.tgz","fileCount":69,"integrity":"sha512-BVVzZf+HEy9l9p9GBvMGXwg9XNp0jOBIkbisnjS3RT9VaWAhdKc0hSwpzrqCT1YARn1d7bUJQjBAqtp8T+QbNQ==","signatures":[{"sig":"MEUCIQDnuRy0kaZ0SrivUqlc/dABr5m+54fyaqmSWgaz3ckGIQIgBaOJNl7hzv8OOhlR5TWG2M6q/9fho9V5oSrKQ4mqHGA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":649204},"type":"module","engines":{"node":">=22"},"gitHead":"1352c4cc255b9d3cd5b300311f120a76594ab69c","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.110.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/react":"^19.2.0","string-width":"^8.2.2"},"optionalDependencies":{"ink":"7.1.0","react":"19.2.7","@anthropic-ai/claude-agent-sdk":"0.3.202"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.11.1_1785395509208_0.46773702841713827","host":"s3://npm-registry-packages-npm-production"}},"0.11.2":{"name":"geobuke-code","version":"0.11.2","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.11.2","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"ea6dd393806cf413e5fdc6d4dfc71e150240d654","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.11.2.tgz","fileCount":69,"integrity":"sha512-ZBfJnM80QVR2UMBHgFNO0rkZYaJSiOGq09TrpudGe4Eowujr6hYwgmo1mlMUBWe5PpcX3MrMIkvZSqeGB2ttcw==","signatures":[{"sig":"MEUCIQDRCDFoRqBe3LPvTsfPHu48xlZ1M1G9J4OPBmwF9+CAWwIgLln2uoNemUjR1BAH4/IPB1Km7inLj2hu+M0qXQ74Onc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":658935},"type":"module","engines":{"node":">=22"},"gitHead":"66537fbbb28eec45c6950bd77ea5c9830964fea1","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.110.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/react":"^19.2.0","string-width":"^8.2.2"},"optionalDependencies":{"ink":"7.1.0","react":"19.2.7","@anthropic-ai/claude-agent-sdk":"0.3.202"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.11.2_1785462443678_0.2860410129013107","host":"s3://npm-registry-packages-npm-production"}},"0.11.3":{"name":"geobuke-code","version":"0.11.3","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.11.3","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"fc65895d236b44fe28eb3f8c693bf4882a31b6ca","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.11.3.tgz","fileCount":69,"integrity":"sha512-SIOI43skAEiyPN7zIiTfCrfybsYXygqjqPBR923Jo9hrSYL7G/cNqeMuyQPsQcMPfEiZRO2ae+cPqpMoYopiQA==","signatures":[{"sig":"MEYCIQCI4px1zn177BLaCoLxPLnVeZp6bWK8xyDdzOxeqfeejAIhAOxl13EsboGZtpVf/1cgV7H1fl/LNzm7rP+waJqYB1Rg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":660219},"type":"module","engines":{"node":">=22"},"gitHead":"6b87288addb06d30e684bfb912283b181062eb8a","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.110.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/react":"^19.2.0","string-width":"^8.2.2"},"optionalDependencies":{"ink":"7.1.0","react":"19.2.7","@anthropic-ai/claude-agent-sdk":"0.3.202"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.11.3_1785716892051_0.6211694461357355","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"geobuke-code","version":"0.12.0","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.12.0","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"b9f8dd0725d9d594bb4e098ed8c4b671a8376d84","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.12.0.tgz","fileCount":70,"integrity":"sha512-DCvZ6gLSblbfPGj/PdcIzdeETq93TYRp1uy0MgFnok07hx0m13rEWByQcrLixEIoKKShd6AIi5vjje1qOzNxNQ==","signatures":[{"sig":"MEQCH0gIptWNQ3AhWZ9jXlhlseVZdP3mL9qmWVHvQwToVFoCIQCJjbWfcsLL/3sg3sFETx0gwdVrPrerG3zoq3+cmGuObw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":720153},"type":"module","engines":{"node":">=22"},"gitHead":"fd27072a0dbaa27773a70d73b98290d5a4211590","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test && npm run eval"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.110.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/react":"^19.2.0","string-width":"^8.2.2"},"optionalDependencies":{"ink":"7.1.0","react":"19.2.7","@anthropic-ai/claude-agent-sdk":"0.3.202"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.12.0_1786270754993_0.658863021048655","host":"s3://npm-registry-packages-npm-production"}},"0.12.1":{"name":"geobuke-code","version":"0.12.1","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.12.1","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"d7ad076f140175d1da155d3c7fea9204da4fe3ba","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.12.1.tgz","fileCount":71,"integrity":"sha512-cSfNVrwLjuenfe/4+xShouzz7+NMGKCFiGQuwVVqIK5KobutGcGliVW76l1rksrRgrZRPpcwOxGP3Lg1rgK3Iw==","signatures":[{"sig":"MEYCIQDWxUf3pXV75HWeie3hVEZrVMBByhRvY2R1LC5PAMrzaAIhAM+9gfTllnr+xX1pnm6JFSpSese2NzUgYtC/uYfoHgeu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":730201},"type":"module","engines":{"node":">=22"},"gitHead":"afe7fd35e8cd9563e808d55e3af05b1e313d3310","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test && npm run eval"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.110.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/react":"^19.2.0","string-width":"^8.2.2"},"optionalDependencies":{"ink":"7.1.0","react":"19.2.7","@anthropic-ai/claude-agent-sdk":"0.3.202"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.12.1_1786337191856_0.37559178361143153","host":"s3://npm-registry-packages-npm-production"}},"0.12.2":{"name":"geobuke-code","version":"0.12.2","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.12.2","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"c35e68ae27c0efaf43750b59165a04344bd1a80e","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.12.2.tgz","fileCount":72,"integrity":"sha512-y2LXvbokvXdqw/OQ5ByWRLKDwlhn9/Cqu4+ROdYuOtVJNXyaECA55lVMiYzOmcBtrshXBZznJiSgy+9Ji3L1Hw==","signatures":[{"sig":"MEQCIDQHf2kUaqbE7DChRyZHRGur8+UTTOjIZpeBFaQfR5VQAiB8MEVdl1yir3FVmsuEv9I24hbbTdf6GBt+iPk5NiBXHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":744650},"type":"module","engines":{"node":">=22"},"gitHead":"a18f3c4b8c9aa377e5591240c70b1908ec793f6d","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test && npm run eval"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.110.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/react":"^19.2.0","string-width":"^8.2.2"},"optionalDependencies":{"ink":"7.1.0","react":"19.2.7","@anthropic-ai/claude-agent-sdk":"0.3.202"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.12.2_1786581843645_0.5722437365884905","host":"s3://npm-registry-packages-npm-production"}},"0.12.3":{"name":"geobuke-code","version":"0.12.3","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.12.3","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"669c266398b462317d752715f775424507391461","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.12.3.tgz","fileCount":75,"integrity":"sha512-7542HW8rRBXqjqX5efvfvmYPymBViEl88vuwoHu41hU/cM+h2ZJUD5rozZXc3JK8qnn83LgfMZPCrFakN4lUVQ==","signatures":[{"sig":"MEYCIQCvmGQRp7j3+07z5bmr7Ijn/VuScWvjC/DGIHXCdt5cEgIhANV3oCFGZDn7mj6YsW687ppI0VP11gORxSjJFWdZzRtR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":787067},"type":"module","engines":{"node":">=22"},"gitHead":"0650331484f17af0d3ace8581a6a066e781c9872","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test && npm run eval"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.110.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/react":"^19.2.0","string-width":"^8.2.2"},"optionalDependencies":{"ink":"7.1.0","react":"19.2.7","@anthropic-ai/claude-agent-sdk":"0.3.202"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.12.3_1786673605792_0.4556501174197578","host":"s3://npm-registry-packages-npm-production"}},"0.12.4":{"name":"geobuke-code","version":"0.12.4","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.12.4","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"8a4ffd6f3cfaece05ad86281517c6747baee26e0","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.12.4.tgz","fileCount":76,"integrity":"sha512-ZPcd5XU7wGpR5lti9Q7NiqW9uPzgK5sLVSyMdEWpljt8CCXD2m3Z2y+cIru7h6rYTD+yOhf4CkCYxmODAHVFQA==","signatures":[{"sig":"MEUCIQDuFsV/fzW4mtcDW8hm2HRng/b8ltepjy8Z0lifKK9URgIgGAfh9+tJy9OChGQkATTzrUQ0AO6KyGz+aX/URgpI4Vs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":800724},"type":"module","engines":{"node":">=22"},"gitHead":"e350d01c404438ab11211a36ccf23c58abfa59c8","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test && npm run eval"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.110.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/react":"^19.2.0","string-width":"^8.2.2"},"optionalDependencies":{"ink":"7.1.0","react":"19.2.7","@anthropic-ai/claude-agent-sdk":"0.3.202"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.12.4_1787119419073_0.9122570279573505","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"geobuke-code","version":"0.13.0","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.13.0","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"fe0921365989cddfb6d93f0ce8eb6bbb0b656119","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.13.0.tgz","fileCount":76,"integrity":"sha512-IuzZZOM3Kf5Jjr6to/qRwV8hLUR1Ua5G19pcOMIdIuAa+m+hPpq+w+9+T1WwETwZDjrRfWZCnu81dgZXrzZk5w==","signatures":[{"sig":"MEUCIEyP146N6P0ns18cWcUZNuaneyJipB3PzFcolQz6NrQ9AiEArCinInCAxGw5WczxmfaQp+yKctcwj7HqIGwQeOebuA0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":812731},"type":"module","engines":{"node":">=22"},"gitHead":"09ee88a9abaead63ff5dfe0c1c5b3132dccf94f2","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test && npm run eval"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.110.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/react":"^19.2.0","string-width":"^8.2.2"},"optionalDependencies":{"ink":"7.1.0","react":"19.2.7","@anthropic-ai/claude-agent-sdk":"0.3.202"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.13.0_1787362305872_0.5099839408524263","host":"s3://npm-registry-packages-npm-production"}},"0.13.1":{"name":"geobuke-code","version":"0.13.1","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"author":{"name":"cubha"},"license":"MIT","_id":"geobuke-code@0.13.1","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"homepage":"https://github.com/cubha/geobuke-code#readme","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"bin":{"gbc":"dist/cli.js"},"dist":{"shasum":"2d583a4a32d9e311dfaa343101c2642a039ab3f6","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.13.1.tgz","fileCount":77,"integrity":"sha512-d3/wa9OdBGckeARtxO7OEhRjjDegGbzZIhxWM7esLIqQpAE+7cqGA+j+5Adr2QC3aSO1op7lKXEK7Cl+SfcH0g==","signatures":[{"sig":"MEQCICHLrt78EODXakWUiMakB1DdNsE40HztFmzSNZ3XKPSqAiBvbBPW0qIcKIFA+Lkd2ze6Z8miFykgjxUWX6CbGXHglw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":819231},"type":"module","engines":{"node":">=22"},"gitHead":"5ed655d01bbed695e7d6716c386ea57369df36c8","scripts":{"dev":"tsc --watch","eval":"node dist/eval/regression.js","test":"node --test 'test/**/*.test.mjs'","build":"tsc","prepare":"tsc","release":"sh scripts/publish.sh","prepublishOnly":"npm run build && npm test && npm run eval"},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"repository":{"url":"git+https://github.com/cubha/geobuke-code.git","type":"git"},"_npmVersion":"10.9.4","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@anthropic-ai/sdk":"^0.110.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/react":"^19.2.0","string-width":"^8.2.2"},"optionalDependencies":{"ink":"7.1.0","react":"19.2.7","@anthropic-ai/claude-agent-sdk":"0.3.202"},"_npmOperationalInternal":{"tmp":"tmp/geobuke-code_0.13.1_1787790723898_0.0912689988100186","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"geobuke-code","version":"0.14.0","description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","type":"module","bin":{"gbc":"dist/cli.js"},"engines":{"node":">=22"},"scripts":{"build":"tsc","dev":"tsc --watch","test":"node --test 'test/**/*.test.mjs'","eval":"node dist/eval/regression.js","prepare":"tsc","prepublishOnly":"npm run build && npm test && npm run eval","release":"sh scripts/publish.sh"},"keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"license":"MIT","author":{"name":"cubha"},"repository":{"type":"git","url":"git+https://github.com/cubha/geobuke-code.git"},"dependencies":{"@anthropic-ai/sdk":"^0.110.0"},"devDependencies":{"@types/node":"^22.0.0","@types/react":"^19.2.0","string-width":"^8.2.2","typescript":"^5.6.0"},"optionalDependencies":{"@anthropic-ai/claude-agent-sdk":"0.3.202","ink":"7.1.0","react":"19.2.7"},"_id":"geobuke-code@0.14.0","gitHead":"f893d2c31b37fca665b997e31efe461c4b0e1d36","bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"homepage":"https://github.com/cubha/geobuke-code#readme","_nodeVersion":"22.22.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-64rb4WfK2EsA+xa338Gg/xYuQ9r6IpArvwkQEcC6CAKruzckk9MkhlyHVwAKNj/1tqSrHvu8WidBFS0TNtP6nA==","shasum":"a52a94d844632bba3036abb532ae7f43edfcf10a","tarball":"https://registry.npmjs.org/geobuke-code/-/geobuke-code-0.14.0.tgz","fileCount":77,"unpackedSize":830561,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD3LQ5MqeueEONzmrme5i7WYpCtsgzCHPsUc9ZVyvEtCwIhAO6neCeBFeHgyB6sO6Dtu8XPmEg+0X/3XS8TUNKwNNSb"}]},"_npmUser":{"name":"cubha","email":"okesh5979@gmail.com"},"directories":{},"maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/geobuke-code_0.14.0_1788140770952_0.010053706898452752"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-21T07:10:08.018Z","modified":"2026-08-31T01:46:11.269Z","0.1.0":"2026-06-21T07:10:08.228Z","0.2.0":"2026-06-21T14:22:51.673Z","0.2.1":"2026-06-22T00:12:48.384Z","0.2.2":"2026-06-22T04:32:37.371Z","0.2.3":"2026-06-22T06:24:49.591Z","0.2.4":"2026-06-22T12:16:54.633Z","0.2.5":"2026-06-22T14:24:09.543Z","0.2.6":"2026-06-23T05:53:50.484Z","0.2.7":"2026-06-23T08:01:10.936Z","0.2.8":"2026-06-23T14:29:42.976Z","0.2.9":"2026-06-24T02:26:20.416Z","0.3.0":"2026-06-24T08:21:28.717Z","0.4.0":"2026-06-25T11:06:33.520Z","0.4.1":"2026-06-25T14:46:45.281Z","0.4.2":"2026-06-26T07:56:33.244Z","0.5.0":"2026-06-26T13:21:06.128Z","0.5.1":"2026-06-29T01:24:54.916Z","0.5.2":"2026-07-02T04:07:47.296Z","0.5.3":"2026-07-02T08:49:15.816Z","0.5.4":"2026-07-03T01:17:18.022Z","0.5.5":"2026-07-03T05:45:22.606Z","0.6.0":"2026-07-05T08:11:55.798Z","0.6.1":"2026-07-06T04:20:14.319Z","0.7.0":"2026-07-08T08:28:34.569Z","0.8.0":"2026-07-09T07:37:25.725Z","0.9.0":"2026-07-10T15:55:50.094Z","0.9.1":"2026-07-13T04:01:15.744Z","0.9.2":"2026-07-13T09:36:10.936Z","0.9.3":"2026-07-14T15:30:09.285Z","0.9.4":"2026-07-15T13:08:54.937Z","0.10.0":"2026-07-17T07:13:45.519Z","0.10.1":"2026-07-21T05:58:35.318Z","0.10.2":"2026-07-22T04:05:03.733Z","0.10.3":"2026-07-22T06:27:53.703Z","0.10.4":"2026-07-23T02:16:04.858Z","0.10.5":"2026-07-24T02:06:47.677Z","0.10.6":"2026-07-24T05:06:44.282Z","0.11.0":"2026-07-27T02:20:51.045Z","0.11.1":"2026-07-30T07:11:49.389Z","0.11.2":"2026-07-31T01:47:23.823Z","0.11.3":"2026-08-03T00:28:12.203Z","0.12.0":"2026-08-09T10:19:15.157Z","0.12.1":"2026-08-10T04:46:32.030Z","0.12.2":"2026-08-13T00:44:03.790Z","0.12.3":"2026-08-14T02:13:25.919Z","0.12.4":"2026-08-19T06:03:39.229Z","0.13.0":"2026-08-22T01:31:46.021Z","0.13.1":"2026-08-27T00:32:04.108Z","0.14.0":"2026-08-31T01:46:11.125Z"},"bugs":{"url":"https://github.com/cubha/geobuke-code/issues"},"author":{"name":"cubha"},"license":"MIT","homepage":"https://github.com/cubha/geobuke-code#readme","keywords":["claude-code","hook","gate","pre-implementation","post-implementation","verify","junit","code-review","scope","blast-radius","yagni"],"repository":{"type":"git","url":"git+https://github.com/cubha/geobuke-code.git"},"description":"거북이코드 — 계획↔구현↔검증 게이트. Claude Code PreToolUse hook으로 구현 전 계획 케이스 누락·시나리오 미지정을 차단하고, 응답 종료(Stop) 시 scope 사후판정(축A 파급반경·축B 최소구현 사다리)으로 품질을 권고하며, gbc verify로 구현 후 케이스를 증거(JUnit·코드 독해)와 대조한다(verified>reviewed>unverifiable).","maintainers":[{"name":"cubha","email":"okesh5979@gmail.com"}],"readme":"# 거북이코드 (geobuke-code)\n\n> **계획 ↔ 구현 ↔ 검증을 잇는 게이트.** 코드를 쓰기 *전에* 계획 케이스의 침묵 누락·시나리오 미지정을 PreToolUse hook으로 차단하고, 응답이 끝나는 *직후* scope 사후 판정으로 파급반경·과잉구현을 권고하며, 구현 *후* `gbc verify`로 케이스가 실제 충족됐는지 증거(테스트 결과·코드 독해)와 대조한다.\n\n`gbc`는 기존 코딩 에이전트(Claude Code) 위에 얹는 **얇은 게이트·검증 층**이다. 모델 계층을 소유하지 않는다 — 판단용 작은 호출(haiku)만 직접 하고, 코드 생성은 그대로 Claude Code가 한다. **테스트를 실행하지도 않는다** — 표준 결과(JUnit)를 *읽을* 뿐이다.\n\n## 무엇을 푸는가\n\n구현 전후로 강제되지 않는 것들이 반복 통증을 만든다:\n\n1. **선행 케이스를 \"추후작업\"으로 미루다 누락** → 설계 공백 → 큰 결함\n2. **시나리오 미지정으로 임의 구현** → 의도와 다른 동작\n3. **고친 자리만 보고 끝** → 같은 원인이 인접 경로에 잔존(파급 재발) · 요청 밖 과잉구현 방치\n4. **\"됐다\"는데 케이스가 실제 충족됐는지 대조 안 됨** → 통과 후 누락 발견\n\n**① 구현 전 게이트** — 코드 변경(Edit/Write/MultiEdit) 직전에 끼어들어:\n\n- 계획 명세에 있는 케이스가 **침묵 누락**(언급도 등록도 없이 빠짐)되면 차단\n- 의도·동작 **시나리오가 미지정**인 채 구현되면 차단\n- **미루기는 명시 등록(`gbc defer add`)만 허용** — 침묵 누락 차단의 forcing function\n\n게이트는 *완전 구현*을 요구하지 않는다. 케이스가 다뤄지기 시작했거나 명시 defer되면 통과한다.\n\n**② 구현 직후 scope 사후 판정** — 응답 종료(Stop) 시점에 그 턴의 편집들을 모아 코드 품질 두 축을 판정한다. **차단이 아니라 권고**:\n\n- **축A 파급반경** — 같은 원인의 문제가 직접 인접 경계(호출부·계약·공유 상태) 너머에서 재발하는지, gbc가 **직접 grep으로 탐색해** 찾은 지점만 제시\n- **축B 최소구현 사다리** — 새 코드가 YAGNI(rung1) → 기존 재사용(rung2) → 표준 라이브러리(rung3)에 걸리는지, 먼저 걸리는 하나만 ([scope 사후 판정](#scope-사후-판정--축a-파급반경--축b-최소구현-사다리))\n\n**③ 구현 후 결과검증(`gbc verify`)** — 구현이 끝난 뒤 케이스가 실제 충족됐는지 **증거와 대조**하는 판정 사다리:\n\n- **verified** — 테스트 실행 결과(JUnit XML)가 케이스를 통과/실패로 증명(`::test` 바인딩)\n- **reviewed** — 러너가 없으면 LLM이 최종 코드를 *독해*해 경량 판정(`::file` 바인딩, 동작 증명 아님)\n- **unverifiable** — 증거가 없으면 정직하게 미검증(거짓 통과·거짓 경보 안 함)\n\ngbc는 spec-유래 명령을 *실행하지 않고* 표준 결과를 *읽는다* — 러너가 어떤 것이든(jest·vitest·pytest·go…) JUnit만 내면 이식된다. 실행이 필요하면 사용자가 직접 고정한 명령의 `--run`만(0.6.0) ([`gbc verify`](#사후-결과검증-gbc-verify)).\n\n그 위에 운영을 돕는 얇은 층이 붙는다:\n\n- **누락 케이스 일괄 분류** — 차단이 도출한 형제 케이스를 번호 체크리스트로 받아 한 번에 승인(spec)/미룸(defer) ([`gbc gate review`](#누락-케이스-일괄-분류-gbc-gate-review))\n- **크로스-repo 가시성** — 등록한 다른 repo의 미해결 defer 요약 + 게이트 hook 건강성 롤업(\"회사 repo에서 게이트가 조용히 안 먹는다\"를 한 명령으로 진단) ([크로스-repo](#크로스-repo-가시성))\n- **판정 드리프트 회귀락** — 실제 판정을 캡처해두고 모델/프롬프트/SDK 변화 후 재판정해 pass↔block 뒤집힘을 잡는 로컬 pre-flight ([`gbc gate snapshot`](#판정-드리프트-회귀락-gbc-gate-snapshot))\n- **관측 계측(M1~M3)** — 게이트 적중·재호출·통과 후 churn. 여러 repo는 `gbc metrics --all`로 병합 ([계측](#계측-m1m3))\n- **운영 현황 관측(`/gbc-monitor` 스킬)** — 위 게이트 상태·계측·repo 건강성·드리프트락을 묶어 조회·해석하는 읽기전용 표면(상태 변경은 `/gate`) ([`/gbc-monitor`](#운영-현황-관측-gbc-monitor))\n\n## 설치\n\n> **요구사항**: Node.js **>=22**(0.9.0부터, Breaking — `gbc tui`가 요구하는 ink 7/React 19 최소 버전).\n\n```bash\n# 1) 전역 설치\nnpm install -g geobuke-code\n\n# 2) 대상 프로젝트에 게이트 설치\ncd <your-project>\ngbc init                          # .claude/settings.json에 hook(PreToolUse+Stop+SessionStart) + /gate · /gbc-mute · /gbc-monitor skill 머지 (동의·백업)\n```\n\n기본 게이트(B-모드)는 `@anthropic-ai/claude-agent-sdk`·`ink`·`react`를 **쓰지 않는다** — 셋 다 `optionalDependencies`라 `gbc run`(A-모드)·`gbc tui`([풀스크린 TUI](#풀스크린-tui-gbc-tui--090-a3a))를 안 쓸 거면 가볍게 건너뛸 수 있다:\n\n```bash\nnpm install -g geobuke-code --omit=optional\n```\n\n나중에 `gbc tui`/`gbc run`이 필요해지면 그때 `npm i -g ink@7.1.0 react@19.2.7 @anthropic-ai/claude-agent-sdk@0.3.202`로 추가하면 된다(미설치 상태로 실행하면 gbc가 정확한 버전까지 포함해 설치 명령을 안내한다). **버전을 반드시 명시하라** — 캐럿(`^`)이나 미지정으로 설치하면 사내 프록시 레지스트리 캐시 상태에 따라 다른 버전이 깔려 충돌할 수 있다(아래 [사내 프록시 레지스트리 환경](#사내-프록시레지스트리-nexusartifactory-환경) 참조).\n\n<details>\n<summary>로컬 개발 설치 (소스에서 빌드)</summary>\n\n```bash\n# 1) 클론 + 빌드 (dist/ 생성)\ngit clone https://github.com/cubha/geobuke-code.git\ncd geobuke-code\nnpm install && npm run build\n\n# 2) gbc 명령 연결 — 택1\nnpm link                          # 권한 OK면 전역 gbc 생성\n# ↑ EACCES(전역 node_modules가 root 소유)면 sudo 없이 PATH의 ~/.local/bin에 wrapper:\nprintf '#!/bin/sh\\nexec node \"%s/dist/cli.js\" \"$@\"\\n' \"$PWD\" > ~/.local/bin/gbc && chmod +x ~/.local/bin/gbc\n\n# 3) 대상 프로젝트에 게이트 설치\ncd <your-project>\ngbc init\n```\n\n소스를 수정하면 `npm run build`만 다시 하면 된다 — wrapper/link는 같은 `dist/cli.js`를 가리키므로 재연결 불필요.\n\n</details>\n\n`gbc init`은 **프로젝트 로컬 `.claude/settings.json`만** 머지한다(append·멱등·백업). 전역 `~/.claude`는 건드리지 않는다. hook 명령은 **셸 무관 순수 형태**(`node \"<path>\" hook pre-tool-use`)라 Windows(cmd.exe)/bash/zsh/Mac에서 동일하게 동작한다.\n\n## 빠른 게이트 활성화 (API 키 — 선택)\n\n키가 없으면 `claude -p` 폴백(~13–20s)으로 무설정 동작한다. **haiku 직접 API(~1–3s)**를 쓰려면 **키 파일만 만들면 된다** — gbc가 실행 시 직접 읽으므로 settings.json 수정이나 셸 주입은 불필요하다.\n\n> ⚠️ **native Windows에선 API 키를 권장한다.** 키 없는 `claude -p` 폴백도 지원하지만(win32에선 `claude.cmd` 실행을 위해 셸 경유, 프롬프트는 인젝션 회피로 stdin 전달, 무응답 방지 kill-timeout), 폴백은 느리므로(~13–20s) 위 키 파일로 API 경로(~1–3s)를 쓰는 편이 빠르고 확실하다.\n\n> 🔒 **회사·보안통제(EDR/그룹정책) 환경에선 API 키가 사실상 필수다.** native Windows에서 `claude.exe`가 EDR·정책에 막히면(증상: `claude exited 1: 액세스가 거부되었습니다`), 키 없는 `claude -p` 폴백 호출이 매번 실패해 게이트가 **조용히 fail-open**된다 — 게이트가 느려지는 게 아니라 **꺼진다**(`.gbc/failopen.log`에 누적). 이때 `ANTHROPIC_API_KEY`(또는 키 파일)를 설정하면 CLI spawn을 건너뛰고 직접 API로 판정하므로 **막힌 환경에서도 게이트가 살아 있다**. 즉 이 경우 키는 속도가 아니라 **게이트 작동 자체**의 문제다. (깨끗한 native Windows에선 keyless 폴백도 정상 동작함이 검증됨 — 실패는 환경의 CLI 차단에서 비롯된다.)\n\n키 해석 순서: `ANTHROPIC_API_KEY` 환경변수 > `~/.gbc/api-key` 파일.\n\n```bash\n# bash / zsh / WSL / Mac\nmkdir -p ~/.gbc && printf '%s' 'sk-ant-...' > ~/.gbc/api-key && chmod 600 ~/.gbc/api-key\n```\n\n```powershell\n# native Windows (PowerShell) — -NoNewline 필수(끝에 개행 붙으면 키 오염)\nNew-Item -ItemType Directory -Force -Path \"$HOME\\.gbc\" | Out-Null\nSet-Content -Path \"$HOME\\.gbc\\api-key\" -Value \"sk-ant-...\" -NoNewline\n```\n\n> ⚠️ **`export ANTHROPIC_API_KEY=…` 전역 설정(또는 settings.json top-level `env`) 금지.** Claude Code 본체가 그 키로 **과금 전환**된다(구독 대신 키 과금). 키 파일 방식은 gbc 판정 호출에만 키가 쓰이므로 이 함정을 구조적으로 피한다.\n\n`gbc status`는 키 파일/환경변수를 반영해 `트랜스포트: api`로 표시한다.\n\n## 동작 원리\n\n```\nphase-protocol/계획 → /plan(SubTask) → 【게이트: 구현 직전 케이스확정】 → 구현(Claude Code) → 【scope: 응답 종료 시 파급반경·최소구현 권고】 → 【gbc verify: 구현 후 케이스↔증거 대조】\n```\n\n게이트는 계획 명세를 `.gbc/spec.md`(단일 정본)에서 읽는다. 다른 파일을 명세로 쓰려면 `$GBC_SPEC_FILE` 환경변수로 그 경로를 명시 지정한다(우선순위 `$GBC_SPEC_FILE` > `.gbc/spec.md`). gbc가 소유하지 않은 파일을 자동 폴백하지 않으므로, 진행추적 파일 등이 명세로 오인되지 않는다.\n\n코드 변경 직전 PreToolUse hook이 명세 ↔ 변경 ↔ 미룬 항목을 대조해 통과/차단을 판정한다.\n\n### 동작 시점\n\n`gbc init`이 프로젝트 `.claude/settings.json`에 아래 hook을 멱등 등록한다. gbc는 `.gbc/`만 읽으므로(다른 하네스의 메모리·진행추적 파일 미접근) 어떤 환경에서든 동일하게 동작한다.\n\n| 시점 | hook (matcher) | 동작 |\n|---|---|---|\n| **세션 시작·재개** | SessionStart (`startup\\|resume`) | `.gbc/defers.json`의 미해결 항목을 \"진행중 N · 미착수 M\"로 구분 표면화(이전 작업 잔여 환기). 잔여 없으면 무출력. `compact`엔 발화 안 함(노이즈 방지) |\n| **코드 변경 직전** | PreToolUse (`Edit\\|Write\\|MultiEdit`) | 명세 ↔ 변경 ↔ defer 대조 → 통과(침묵)/차단(시나리오 도출 지시)/fail-open |\n| **작업단위당 1회** | (PreToolUse 캐시) | 같은 명세 해시 내에선 첫 편집만 판정, 이후 통과 → 매 편집 지연 회피 |\n| **편집 적용 직후**(0.12.3) | PostToolUse (`Edit\\|Write\\|MultiEdit`) | 사용자가 승인해 **실제로 적용된** 편집을 작업단위 원장(`.gbc/applied.json`)에 기록 → 이후 판정이 \"이미 적용된 편집\"을 참고해 같은 형제 케이스를 재차단하지 않는다(아래 [작업단위 구현이력](#작업단위-구현이력-posttooluse-0123)) |\n| **응답 종료** | Stop | 계측 flush(`events.jsonl`) + **scope 사후 판정**(축A 파급반경·축B 최소구현 사다리 — 아래) + 미해결 defer가 있으면 리마인드(매 대화 종료마다). 거슬리면 `gbc defer mute`(또는 `/gbc-mute` 스킬)로 끈다 — SessionStart 진입 알림은 유지 |\n| **업데이트 필요 시** | (PreToolUse·SessionStart) | hook 구버전(②) 또는 신버전 출시(①)면 갱신 안내. PreToolUse는 세션당 1회(`systemMessage` 비차단) — **통과된 작업단위(cached-skip) 편집에도 표시**(0.3.0: 평상 작업 대부분이 cached-skip이라, 여기서 빠지면 배너가 거의 안 떴음). SessionStart는 진입 시 표시(모델 컨텍스트). `gbc status`는 캐시만 갱신하고 안내는 **표시하지 않는다**(명시 진단 명령). 게이트 통과/차단 동작은 불변 |\n\n> 세션 진입 알림만 끄려면 `GBC_NO_SESSION_HINT=1`. 매 대화 종료(Stop) defer 리마인드만 끄려면 `gbc defer mute`(영속, 해제 `unmute` · 스킬 `/gbc-mute`) — 진입 알림은 남는다. 업데이트 안내만 끄려면 `GBC_NO_UPDATE_NOTICE=1`. scope 사후 판정을 끄려면 `GBC_NO_SCOPE=1`.\n> 프로젝트 hook이 구식이거나(SessionStart 누락·옛 명령) 새 버전이 나오면 gbc가 감지해 **`gbc update`**(전역 최신 + 재init 한방, `--all`이면 등록된 repo 전체) 또는 수동 `npm i -g geobuke-code@latest → gbc init --yes`를 안내한다. 단 안내는 **이미 hook이 등록된 프로젝트**(=한 번이라도 `gbc init`을 한 코호트)에만 도달한다 — 전혀 init하지 않은 프로젝트엔 실행할 hook이 없어 구조적으로 알릴 수 없다(gbc는 전역 hook을 깔지 않는다).\n> **업데이트 안내(①)는 네트워크를 게이트 핫패스에 들이지 않는다**: `~/.gbc/version-check.json` 캐시만 비교하고, 갱신 fetch는 안전한 비-핫패스에서만 짧은 타임아웃(1.5s)으로. ⓐSessionStart는 캐시가 stale이면 **표시 전에 갱신**해 신버전이 그 세션에 바로 뜬다(1세션 지연 없음). ⓑ**PreToolUse는 judge를 도는 편집(cache-miss)에서 캐시가 stale이면 refresh를 judge와 *병렬*로 건다**(0.3.0) — judge가 ≥1.5s라 지연 0이고, 사용자가 `gbc status`를 직접 치지 않아도 캐시가 최신이 된다. **cached-skip 핫패스에는 네트워크를 절대 넣지 않는다.** 조회 실패는 조용히 무시(fail-silent)되어 게이트 결정에 영향이 없다. 캐시 TTL 12h.\n\n### 작업단위 구현이력 (PostToolUse, 0.12.3 + 원장 재검증 0.12.4)\n\n같은 작업단위(계획 명세) 안에서 형제 케이스를 **순차로** 구현하면(예: 케이스 A를 먼저 끝내고 다음 편집에서 케이스 B를 다룸), 이전엔 매 편집이 명세를 백지 상태로 재평가해 \"케이스 A가 아직도 안 보인다\"며 반복 차단되는 경우가 있었다 — 실사용 리포트: 같은 침묵-누락 케이스가 15분 동안 **4회 재차단**됐는데, 그 사이 사용자는 그 케이스를 실제로 구현하고 있었다. 원인은 gbc에 `PostToolUse` hook이 없어 \"방금 그 편집이 실제로 승인·적용됐다\"는 사실 자체를 알 방법이 없었던 것이다.\n\n`PostToolUse` hook이 승인된 편집(Edit/Write/MultiEdit)마다 `.gbc/applied.json`에 새 내용만(요약·시크릿 마스킹 후) 기록한다. 이후 판정은 `[이 작업단위에서 이미 적용된 편집]` 섹션으로 이 원장을 참고해, 형제 케이스가 다른 위치(다른 파일 포함)에서 이미 구현됐으면 다시 누락으로 잡지 않는다 — 단 **심볼 존재만으로는 안 뒤집힌다**(P2b `[관련 코드 근거(grep)]`와 동일 원칙, 근거 텍스트를 실제 판단 자료로 쓰지 심볼 유무만 보지 않는다). 원장은 작업단위(명세 해시)가 바뀌면 자동 무효화되고, `gbc done`(작업단위 명시 종료)에서도 함께 비워진다. Write(전체 덮어쓰기)는 자기 파일의 과거 엔트리를 참고하지 않는다(덮어쓰기로 사라지는 회귀는 여전히 누락으로 취급 — GATE_SYSTEM ★★ 규칙).\n\n**원장 생존 재검증(0.12.4)** — 원장은 기록 시점 스냅샷이라, 그 코드가 이후(같은 파일이든 다른 파일이든) 삭제돼도 예전엔 \"완료\"로 계속 남았다. 이제 판정에 실리기 전 각 엔트리를 현재 디스크 상태와 대조해 **생존(alive)·소실(stale)·판정불가(unverifiable)** 3상태로 재검증하고, stale 엔트리는 제외한다(불확정은 버리지 않는다 — 읽기 실패·매칭 불가는 그대로 유지). stale 엔트리가 걷어지면 침묵 누락이 자동으로 다시 드러나 근거주입(grep) 재판정도 다시 열린다. `gbc gate reset --hard`로 원장까지 포함해 재현 실험을 완전히 초기화할 수 있다.\n\n⚠️ **`PostToolUse` hook 신설은 breaking 계약 변경이다** — 0.12.2 이하에서 이미 `gbc init`한 프로젝트는 **`gbc init --yes` 재실행이 필요**하다(머지·멱등·자동 백업, 게이트 판정 자체는 재init 없이도 계속 정상 동작하지만 이 기능만 무동작 상태로 남는다). 미등록 상태는 `gbc status`·`gbc repos --health`가 `PostToolUse hook 미등록`으로 안내한다.\n\n### 시나리오 도출 루프 (수기 입력 불필요)\n\n명세가 비어 **시나리오 미지정**으로 차단되면, 사용자가 파일을 직접 쓰지 않는다. 차단 메시지가 코딩 에이전트에게 다음을 지시한다:\n\n```\n요청에서 시나리오 도출 → 사용자에게 제시·검증 → gbc spec add로 등록 → 재시도\n```\n\n- **도출**은 코딩 에이전트 본체(Opus, 대화 맥락 보유)가, **게이트 판정**은 haiku가 한다 — 두 작업/두 모델 분리. gbc는 모델 계층을 소유하지 않는다(판단용 작은 호출만).\n- **사용자 검증은 양보 불가**다 — 같은 에이전트가 도출+구현까지 자동으로 하면 자기 시나리오만 통과시키는 고무도장이 된다. 승인 없는 자동 등록을 금지한다.\n\n### 누락 케이스 일괄 분류 (`gbc gate review`)\n\n명세가 있는데 **형제 케이스를 침묵 누락**해 차단되면, 판정이 도출한 누락 케이스들이 `.gbc/pending-review.json`에 기록된다. 케이스가 여러 개일 때 하나씩 `gbc spec add`/`gbc defer add`를 반복하지 않고 **체크리스트로 한 번에 분류**한다:\n\n```\ngbc gate review                              # 누락 케이스를 번호 목록으로 (사용자에게 제시·검증)\ngbc gate review --spec 1 3 --defer 2         # 1,3은 승인→spec / 2는 미룸→defer (한 번에)\n```\n\n- 승인(`--spec`)은 `.gbc/spec.md`에, 미룸(`--defer`)은 defer 레지스트리에 등록하고 펜딩을 비운다. 한 케이스가 양쪽에 걸리면 **spec 우선**(이중 등록 방지). ref는 `번호|텍스트|all`(defer 명령과 동일).\n- 분류 후 같은 편집을 재시도하면 등록된 케이스 기준으로 재판정된다. 여기서도 **사용자 검증이 분류 전제** — 도출된 케이스를 사용자에게 보여주고 승인받은 뒤 등록한다.\n- 펜딩은 \"가장 최근 차단의 도출\"이라 다음 차단이 덮어쓴다. 단건이면 종전대로 지금 변경에서 직접 다루거나 `gbc defer add`로 미뤄도 된다.\n\n### 같은 누락의 반복 차단 억제 (block-repeat, 0.9.3 + 근사매칭 0.13.0)\n\n같은 작업단위(명세 해시) 안에서 같은 침묵-누락 케이스가 편집마다 재차단되면(형제 케이스를 아직 안 다뤘을 뿐인데 매번 같은 사유로 물어봄) 노이즈가 된다. 직전 차단에서 안내된 누락 셋과 (정규화 후) 동일하면 두 번째부터는 사람 승인 없이 조용한 안내로 강등한다(`🐢 같은 누락 케이스가 이미 안내됐습니다`) — `gbc gate review`로 여전히 분류 가능하다.\n\n**0.13.0부터 완전일치 외에 근사매칭도 본다.** LLM이 매 judge 호출마다 같은 잔여 작업을 문구만 다르게(병합·분리·축약) 재서술하면 완전일치 판별이 실패해 재차단이 재발했다(실사용 로그로 확인된 결함). 이제 같은 작업단위 안에서 **안내된 누락 문구를 누적**해두고, 새 누락이 그 누적분을 바이그램 단위로 충분히 재진술하고 있으면(신규 절이 섞이지 않은 재서술) 강등한다. 완전히 새로운 위반(예: 공지된 적 없는 형제 케이스)은 토큰이 일부 겹치더라도 강등되지 않는다. 이전 동작(완전일치만)으로 되돌리려면 `GBC_REPEAT_MATCH=exact`.\n\n## scope 사후 판정 — 축A 파급반경 · 축B 최소구현 사다리\n\n게이트(PreToolUse)가 \"이 편집이 계획 케이스를 침묵 누락했나\"를 본다면, scope는 응답 종료(Stop) 시점에 그 턴의 편집들을 모아 **코드 품질 두 축**을 사후 판정한다. **차단이 아니라 권고**다 — 사용자에게 \"다른 데도 확인해봐\"라고 떠넘기지 않고, gbc가 **직접 grep으로 코드베이스를 탐색해 판정한 결과**만 제시한다.\n\n- **축A — 파급반경**: 이 편집과 같은 원인의 문제가 직접 인접 경계(①직접 호출부 ②API/데이터 계약 ③공유 상태) 너머에서 재발하는가. (예: `formatUserName`에 null 폴백을 넣었는데, 그 함수를 안 쓰고 `user.name`을 직접 렌더하는 다른 파일이 남아 있음.)\n- **축B — 최소구현 사다리(Ponytail)**: 새 코드가 rung1(YAGNI: 요청 안 한 기능 선구현) → rung2(기존 코드 재사용 가능) → rung3(표준 라이브러리로 대체 가능) 중 걸리는 게 있는가. 먼저 걸리는 하나만. **가드레일(사다리 대상 아님)**: trust-boundary 검증·보안·접근성·데이터손실 처리, TDD RED 실패 테스트.\n\n### 동작 흐름 — 큐잉(PreToolUse)과 판정(Stop)의 시점 분리\n\n```\n 대화 턴 진행 중 (핫패스 ~1.7s 예산)          응답 종료 (Stop — 핫패스 아님)\n┌─────────────────────────────────┐    ┌─────────────────────────────────────┐\n│ Edit/Write 직전 PreToolUse hook │    │ 1. 큐 읽기 → 편집된 심볼 추출         │\n│  ├─ 게이트 판정 (기존과 동일)     │    │ 2. 실제 grep 탐색 (직접 호출부·      │\n│  └─ scope 큐잉만 (API 호출 0회)  │───▶│    유사 유틸 · 자기 파일 제외 · 10s)  │\n│      └▶ .gbc/scope-queue.json  │    │ 3. haiku 1회 배치 판정 (축A + rung)  │\n│ (편집 2, 편집 3 … 계속 큐잉)      │    │ 4. actionable만 표면화 → 큐 비움     │\n└─────────────────────────────────┘    └─────────────────────────────────────┘\n```\n\n### 시나리오로 보기\n\n**축A — \"null 폴백을 넣었는데, 정말 다 고쳐졌나?\"**\n\n```\n 이번 턴 수정: format.ts의 formatUserName()에 null 폴백 추가\n   ├─ profile.tsx   formatUserName(user) 호출   → 폴백 적용 ✅\n   └─ header.tsx    {user.name} 직접 렌더        → 폴백 우회, 같은 원인 재발 ⚠️\n                     └▶ [scope] 축A broken: header.tsx의 직접 렌더 경로 미적용\n```\n\n\"다른 데도 확인해보라\"는 떠넘김이 아니라, grep으로 **실제 찾은 지점만** 제시한다.\n\n**축B — \"요청은 '날짜 표시'였는데 코드가 커졌다?\"** (아래 단부터, 먼저 걸리는 하나만)\n\n```\n rung1  YAGNI      요청 안 한 타임존 변환·캐싱을 선구현        → 🔔 여기서 정지\n rung2  재사용      같은 유틸이 기존 코드에 이미 있음 (grep 필요)\n rung3  표준 lib    Intl.DateTimeFormat으로 대체 가능\n 🛡️ 가드레일(사다리 제외): 보안·trust-boundary 검증·접근성·데이터손실 처리·TDD RED 테스트\n```\n\n**왜 Stop 시점인가 / 왜 별도 호출인가** (설계 근거):\n- 게이트 프롬프트에 축을 섞으면 검증된 침묵-누락 판정이 실측으로 **골든 8/8→6/8 퇴행**했다. 그래서 축A/B는 게이트와 **완전히 별도 호출**로 분리(게이트는 무변경).\n- 축A·축B-rung2는 **코드베이스 탐색이 있어야** 정확 판정된다. PreToolUse 핫패스(~1.7s 예산)에 grep+판정을 넣으면 지연이 깨지므로, PreToolUse는 큐잉만 하고(API 0회) **Stop에서 실제 grep→배치 판정**한다(Stop은 핫패스가 아님 — CC가 완료까지 대기).\n- **하드가드(코드)**: grep이 인접 호출부·유사 유틸을 못 찾으면 모델에게 묻지 않고 `unknown`(미평가)으로 정직 처리하고, 표면화 시 \"탐색 컨텍스트 부족으로 파급반경 판정 생략\"을 명시한다(근거 없는 확신 차단).\n\n**모델**: 기본 haiku. `GBC_SCOPE_MODEL=claude-sonnet-4-6`로 opt-in(게이트 `GBC_MODEL`과 물리 분리 — 공유 시 비용 배증). 끄려면 `GBC_NO_SCOPE=1`.\n\n판정 결과는 `gbc metrics`의 `[scope]` 롤업으로 관측한다(파급반경 broken·사다리 걸림·탐색불가 미평가 건수). `events.jsonl`엔 열거형 태그만 기록하고 코드 본문·사유는 저장하지 않는다(프라이버시 불변식).\n\n## 사후 결과검증 (`gbc verify`)\n\n게이트(PreToolUse)가 구현 *전* \"케이스를 다루는가\"를 본다면, `gbc verify`는 구현 *후* \"결과물이 케이스를 실제 충족했는가\"를 **증거와 대조**한다. gbc는 **spec-유래 명령을 절대 실행하지 않는다** — 표준 결과(JUnit XML)를 *읽거나*, 러너가 없으면 LLM이 최종 코드를 *독해*한다. 실행은 환경(사용자 러너·CI) 몫이고 gbc는 결과 포맷만 소비한다(provider 패턴 — spec의 명령을 돌리면 공급망 RCE·환경마다 깨짐; 읽으면 러너 불문 이식). 유일한 예외는 **사용자가 직접 고정한** 명령의 `--run`(0.6.0, 아래)이며 그 명령 문자열에 spec 유래 데이터는 절대 섞이지 않는다.\n\n**판정 사다리** (강→약):\n\n| 강도 | 판정 | 증거 | 바인딩 |\n|---|---|---|---|\n| 강 | **verified** | 테스트 실행 통과/실패(JUnit XML) | `::test <테스트명>` |\n| 중 | **reviewed** | LLM이 최종 코드 독해(주소화 판정·*동작 증명 아님*) | `::file <경로>` |\n| 약 | **unverifiable** | 증거 없음(결과파일·파일·바인딩 부재) — 정직 바닥 | (없음) |\n\n**케이스↔증거 바인딩** — spec 케이스 줄 끝에 접미사로 붙인다(줄 끝 단일 토큰, 공백 포함 이름은 따옴표):\n\n```bash\ngbc spec add \"빈 자격증명 거부 ::test login_empty_creds\"     # 러너 결과로 verified\ngbc spec add \"로그인 검증 로직 ::file src/auth.ts\"           # 코드 독해로 reviewed\ngbc spec add '경계조건 처리 ::test \"should handle empty\"'     # 공백 포함 테스트명은 따옴표\ngbc verify                                                   # 사다리 리포트\n```\n\n- **verified 쓰려면** 러너가 JUnit XML을 `.gbc/verify-results.xml`로 떨구게 한다 — `vitest run --reporter=junit --outputFile=.gbc/verify-results.xml`, `pytest --junit-xml=.gbc/verify-results.xml`, `node --test --test-reporter=junit --test-reporter-destination=.gbc/verify-results.xml` 등. 판독 경로는 이 파일을 **읽기만** 한다.\n- **배선이 막막하면 `gbc verify --init`** (0.6.0) — 러너를 감지해(vitest/jest/mocha/node:test) 위 배선 명령을 안내하고, 러너가 없으면 **node:test 제로설치 리포터 템플릿**(`.gbc/junit-reporter.mjs`, 의존성 0)을 생성한다. 사용자 파일(package.json 등)은 절대 수정하지 않고, 어떤 명령도 실행하지 않는다.\n- **실행까지 한 번에: `gbc verify --run`** (0.6.0) — **신뢰 소스가 고정한 러너 명령**을 실행한 직후 판독한다. 명령 소스는 정확히 2개: CLI 인자(`gbc verify --run \"npm test\"`, 1회성) 또는 홈 pin(`--save`로 `~/.gbc/verify-run.json`에 저장, repo **밖**이라 PR이 심을 수 없다). **spec.md 유래 명령은 구조적으로 배제**(spec은 PR 기여 파일 → spec-derived 실행=공급망 RCE). 러너가 결과파일을 갱신하지 않으면 옛 결과를 verified로 치지 않고 강등한다(run-start 검사).\n  - ⚠️ **allowlist 주의(confused deputy)**: Claude Code 등에서 `Bash(gbc *)`처럼 gbc를 와일드카드 allowlist하면 `--run \"<임의명령>\"` 인자형이 **에이전트의 무프롬프트 임의 실행권**이 된다 — spec.md 인젝션이 LLM을 경유해 \"신뢰 명령\"으로 세탁될 수 있다. `--save`로 저장된 pin도 이후 인자 없는 `--run`이 **그대로 재실행**하므로 동일 주의가 지속된다. gbc를 allowlist하려면 `--run` 인자형을 제외하라.\n- **reviewed**는 러너 없이도 동작 — `::file` 케이스의 코드를 LLM이 독해해 충족 여부를 refute-first로 판정한다. 단 **독해는 동작 증명이 아니다**(미묘한 버그·런타임 오류는 못 잡는다). 모델은 기본 haiku(A/B 실측서 sonnet과 정확도 동률·지연 절반), `GBC_VERIFY_MODEL`로 opt-in 상향(게이트 `GBC_MODEL`·scope `GBC_SCOPE_MODEL`과 물리 분리).\n- **fail-open은 `unverifiable`로** 떨어진다 — 검토 호출이 실패해도 절대 `pass`로 뭉개지 않는다(거짓 확신 차단, 게이트 fail-open 철학의 미러).\n- **failed·unverifiable 케이스**는 `gbc verify`가 `gbc defer add \"...\"` 형태로 **후보 제안만** 한다 — 자동 등록하지 않는다(사람이 분류, defer 원칙과 동일).\n- **보안**: `::file` ref가 프로젝트(cwd) 밖을 가리키거나 심링크면 읽지 않고 거부한다 — spec.md는 커밋/PR 기여 파일이라, 임의 경로 파일을 LLM에 전송하는 유출을 막는다.\n- **신선도(provenance, 0.6.0)**: 결과파일이 마지막 관측 편집(hook 이벤트 기준)보다 오래됐으면 verified를 **unverifiable로 강등**한다 — 옛 결과의 거짓 verified(pass)·거짓 경보(fail)를 대칭 차단. 편집 신호가 없으면(hook 미설치 등) 강등하지 않고 \"신선도 미평가\"로 정직 고지한다. 관측 기준이라 절대 보증은 아니다(ask-모드로 승인된 block 편집은 미포함).\n\n## 지연(latency)과 트랜스포트\n\n판정은 작은 LLM 호출이다. 두 트랜스포트:\n\n| 조건 | 트랜스포트 | 지연 |\n|---|---|---|\n| 키 있음 (`ANTHROPIC_API_KEY` env 또는 `~/.gbc/api-key` 파일) | Anthropic API 직접 (haiku, 최소 시스템프롬프트) | ~1–3s (목표) |\n| 키 없음 | `claude -p` 폴백 (CC 인증 재사용, 무설정 · native Windows 포함) | ~13–20s |\n\n**작업단위 1회**: 게이트는 작업단위(계획 명세 해시)당 한 번만 발동한다. 명세가 바뀌거나 명세 밖 파일을 편집할 때만 재발동 → 매 편집 지연을 피한다.\n\n> 빠른 게이트를 원하면 `~/.gbc/api-key` 키 파일을 만들어라(설정법·과금 주의: 위 [「빠른 게이트 활성화」](#빠른-게이트-활성화-api-키--선택)). 없으면 `claude -p` 폴백으로 무설정 동작하되 작업단위당 한 번 느리다.\n\n## 명령\n\n| 명령 | 설명 |\n|---|---|\n| `gbc init` | hook + `/gate` · `/gbc-mute` · `/gbc-monitor` 스킬 설치 + 크로스-repo 레지스트리 자동등록(opt-out: `--no-register`) |\n| `gbc update` | 전역 최신 설치(`npm i -g …@latest`) + 재init 한방. **`--all`이면 `gbc repos` 등록 repo 전체로 재init 전파**(전역 설치는 1회). `--dry-run`으로 실행 명령만 미리보기 |\n| `gbc status` | 게이트 상태 + 로드된 명세 + Stop 리마인드 음소거 여부 |\n| `gbc defer add \"<케이스>\"` | 케이스를 명시적으로 미루기 (→ open) |\n| `gbc defer list` | 미룬 항목 목록 (상태: 미해결/진행중/해결/철회) |\n| `gbc defer start <번호\\|텍스트\\|all>` | 착수 표시 (open → 진행중) |\n| `gbc defer resolve <번호\\|텍스트\\|all>` | 종결 표시 (→ 해결) |\n| `gbc defer withdraw <번호\\|텍스트\\|all>` | 철회 — 오등록·기각 등 완료 아닌 정리 (→ 철회, 완료로 기록되지 않음) |\n| `gbc defer reopen <번호\\|텍스트\\|all>` | 백로그로 되돌리기 (→ open, 잘못된 해결/철회 취소 포함) |\n| `gbc defer mute` / `unmute` | 대화 종료(Stop)마다 뜨는 defer 리마인드 끄기/켜기 (영속) · 스킬: `/gbc-mute` |\n| `gbc spec add \"<케이스>\"` | 승인된 시나리오를 `.gbc/spec.md`에 등록 |\n| `gbc spec show` | 등록된 케이스 목록 |\n| `gbc spec clear` | 명세 비우기(아카이브 없이) |\n| `gbc done` | 작업단위 명시 종료(명세 아카이브→비움 + 게이트 리셋). 아카이브는 최신 20개만 보존(`GBC_ARCHIVE_KEEP` 조정) |\n| `gbc verify` | 사후 결과검증 — 케이스↔증거 대조(verified>reviewed>unverifiable). 바인딩: `<케이스> ::test <테스트명>` / `::file <경로>` |\n| `gbc verify --init` | 러너 감지→JUnit 배선 스캐폴딩(러너 없으면 node:test 제로설치 템플릿, 비파괴·무실행) |\n| `gbc verify --run [\"<명령>\"] [--save]` | 신뢰 소스(인자·홈 pin) 고정 명령 실행 후 즉시 판독 — spec 유래 명령 금지(RCE). ⚠️allowlist 주의 |\n| `gbc run \"<프롬프트>\" [--yes] [--model <m>] [--max-turns <N>]` | **(실험적 A-모드)** agent-sdk를 in-process로 구동해 게이트를 SDK 콜백으로 발화 + `canUseTool` 사람-pause(`--yes`=자동허용). agent-sdk 별도 설치 필요 ([A-모드 미리보기](#a-모드-미리보기-gbc-run--실험적)) |\n| `gbc tui [--model <m>]` | 풀스크린 TUI(단일-repo, 0.9.0 A3a) — 승인 프롬프트·게이트 줄·계측/repo 토글 패널. ink/react/agent-sdk 별도 설치 필요 ([풀스크린 TUI](#풀스크린-tui-gbc-tui--090-a3a)) |\n| `gbc gate reset` | 작업단위 게이트 리셋 |\n| `gbc gate reset --hard` | state·pendingReview·적용이력 원장까지 전부 초기화(재현 실험용, 0.12.4) |\n| `gbc gate review` | 차단이 도출한 누락 케이스 체크리스트 보기 |\n| `gbc gate review --spec <ref> --defer <ref>` | 누락 케이스 일괄 분류(승인→spec / 미룸→defer) |\n| `gbc gate snapshot <on\\|off\\|status\\|list\\|clear>` | 골든셋 캡처 토글·조회(판정 드리프트 회귀락) |\n| `gbc gate snapshot replay [--samples N]` | 골든 케이스 재판정(temp 0)·드리프트 시 exit 1. 근거주입이 걸렸던 케이스는 2단계(`<id>#p2b`)까지 재현 |\n| `gbc metrics [--all] [--json] [--since <시각>]` | 계측 리포트(M1~M3 + **진짜 M1** 사후대조 + **[P2b] 근거주입** 롤업). `--all`=등록 repo들의 events.jsonl 병합 집계(진짜 M1은 단일 repo 전용). `--since`=시간창 제한(`2026-08-09T00:00:00Z` 또는 `7d`/`24h`/`30m`) |\n| `gbc score [--json]` | **(A-모드)** extraction⨝events 사후대조 채점 — 세션 편집이 통과 당시 명세를 커버했는지 모델 판정(후보당 1호출). 결과는 `.gbc/scores.json` → `gbc metrics` 위반율에 반영 |\n| `gbc repos add [경로]` | 크로스-repo 레지스트리에 추가(생략 시 현재 폴더) |\n| `gbc repos list` | 등록된 repo + 각 repo의 미해결 defer 수 + **게이트 건강성**(hook 부재/구식 코호트) |\n| `gbc repos remove [경로]` | 레지스트리에서 제거 |\n| `gbc doctor [--fix]` | 하위 디렉토리에 남은 stray(화석) `.gbc` 마커 탐지·격리(0.12.2, [프로젝트 루트 해석](#프로젝트-루트-해석--stray-gbc-마커) 참조). `--fix` 없으면 보고만, 있으면 삭제 아닌 격리 |\n| `/gbc-monitor` 스킬 | 위 관측 명령(status·metrics --all·repos list·snapshot status)을 묶어 조회·해석하는 **읽기전용** 표면. 상태 변경은 `/gate` |\n\n우회: `GBC_NO_GATE=1` (계측됨 — 우회 자체가 게이트 가치 측정 데이터). scope 사후 판정 우회: `GBC_NO_SCOPE=1`. scope 모델 상향: `GBC_SCOPE_MODEL=claude-sonnet-4-6`(기본 haiku).\n\n## A-모드 미리보기 (`gbc run`) — 실험적\n\n> **실험적이다(0.7.0 스파이크 → 0.8.0 사후대조 착지).** 기본 제품은 위의 B-모드(Claude Code에 얹는 hook 게이트)이며, A-모드는 그 게이트 루프가 **in-process로 구동되는 에이전트** 위에서도 성립하는지 검증하는 실행 가능한 절개다. 0.8.0부터 A-모드 세션은 `gbc score`로 **통과 후 시나리오 위반율(진짜 M1)**을 사후 채점할 수 있다. 인터페이스·범위는 후속 버전에서 바뀔 수 있다.\n\nB-모드는 게이트를 **외부 stdin hook**(Claude Code가 도구 실행 전 `gbc hook pre-tool-use`를 부름)으로 건다. A-모드는 같은 판정 코어(`evaluateGate`)를 `@anthropic-ai/claude-agent-sdk`의 **in-process PreToolUse 콜백**으로 걸어, gbc가 에이전트를 직접 구동한다.\n\n```bash\n# agent-sdk는 optionalDependency — A-모드 쓸 때만 설치. 버전 명시 필수\n# (사내 프록시 레지스트리 환경 — [트러블슈팅](#사내-프록시레지스트리-nexusartifactory-환경))\nnpm i @anthropic-ai/claude-agent-sdk@0.3.202\n\ngbc run \"add.js에 두 수를 더하는 add(a,b)를 만들어줘\" --yes\n```\n\n- **게이트 = SDK 콜백** — 도구 실행 직전 `evaluateGate`가 발화한다(B-모드 stdin hook과 동일 판정·동일 `.gbc/` 계측). 빈 명세면 차단→사유가 에이전트에 전달돼 시나리오 도출·`gbc spec add`→재시도→통과 사이클이 그대로 돈다.\n- **사람-pause(`canUseTool`)** — 도구 실행 전 사람에게 허용을 묻는 최소 blocking(고무도장 방지). 미응답·빈 입력은 deny(안전측). ⚠️ **게이트(`evaluateGate`)는 코드 편집(Edit/Write/MultiEdit)만 판정**하고, Bash 등 그 외 도구의 실행 승인은 오로지 이 pause에 달렸다. `--yes`는 비대화형(CI·자동)용 자동 허용이며 **모든 도구를 무관문 자동승인**(Bash 임의 명령 포함)하므로 신뢰할 수 있는 프롬프트에만 쓴다.\n- **관측 sink → 사후대조 채점** — SDK 스트림(도구 사용·판정·결과)을 `.gbc/extraction.jsonl`로 기록한다(session_id 조인키, 시크릿 redaction). 이 1차 자산을 `gbc score`가 `events.jsonl`과 조인해 **통과 후 시나리오 위반율(진짜 M1)**을 채점한다(0.8.0) — [계측](#계측-m1m3) 참조.\n- **격리 규율** — agent-sdk에 **API 키를 주입하지 않고**(SDK 자체 인증 우선순위 사용), `settingSources: []`로 프로젝트 설정을 로드하지 않는다(gbc 자신의 stdin hook이 겹쳐 이중발화·재귀하는 것을 차단). B-모드 hook 핫패스는 agent-sdk를 **절대 로드하지 않는다**(런타임 격리).\n  - **끊는 것**: settings.json·CLAUDE.md·skills·hooks(`settingSources:[]`) + **auto-memory**(`~/.claude/projects/<repo>/memory/` — `settingSources:[]`와 별개 레이어라 명시적으로 `settings:{autoMemoryEnabled:false}`를 추가 배선한다, 0.10.0). auto-memory를 안 끄면 spawn된 세션이 그 repo의 과거 작업 메모를 읽고(+**쓰기 역류**로 사용자의 Claude Code 프로젝트 메모리를 조용히 갱신할 수도 있고), keyless 환경의 게이트 판정(`claude -p` 폴백)도 \"이미 완료됐다\"는 메모리 서사에 편향돼 미완 작업을 통과시킬 위험이 있다(실측 확인 — [CHANGELOG 0.10.0](CHANGELOG.md) 참조).\n  - **공유하는 것**: 계정에 연결된 번들 스킬·MCP 커넥터 등 claude CLI 자체의 세션 부속 기능 — gbc가 별도로 끊지 않는다(끄려면 사용자가 자기 claude 설정에서 직접 조정).\n\n## 풀스크린 TUI (`gbc tui`) — 0.9.0 A3a / 0.10.0 A3b(다중탭)\n\n> 0.10.0부터 좌측 상시 사이드바에서 `gbc repos`에 등록된 repo를 opt-in 탭(`Alt+1..9`)으로 전환·병행할 수 있다. 0.10.1부터 대화는 사이드바 옆 **박스형 대화창**에 상주하며(시각행 기준 윈도잉+PgUp/PgDn 스크롤), 0.10.4부터 대화 스크롤백이 **repo별로 격리 보존**된다 — 탭을 오가도 각 repo의 대화가 사라지지 않고, 백그라운드 탭에 도착한 메시지도 그 탭에 쌓여 복귀 시 확인할 수 있다.\n\n`gbc run`(A-모드 CLI 실행)과 같은 in-process 엔진 위에, 승인 프롬프트·실시간 게이트 줄·계측 패널을 갖춘 풀스크린 화면을 얹는다.\n\n```bash\nnpm i ink@7.1.0 react@19.2.7 @anthropic-ai/claude-agent-sdk@0.3.202   # optionalDependency — TUI 쓸 때만 설치, 버전 명시 필수(아래 참조)\ngbc tui [--model <모델>]\n```\n\n- **승인 프롬프트(y/n/e/d)** — 게이트가 BLOCK하면 에이전트가 스스로 `gbc spec add \"...\"`를 도출해 재시도하는 사이클([시나리오 도출 루프](#시나리오-도출-루프-수기-입력-불필요))을, 화면에서 y(승인)/n(거부)/e(수정 후 승인)/d(defer로 보류) 4지선다로 사람이 pause한다. e/d는 그 호출이 실제로 `gbc spec add`를 도출한 경우(spec-add)에만 유효 — 그 외 일반 도구 승인(generic)에선 e/d 모두 n과 동일하게 거부로 처리된다(고무도장 방지 기본값, 화면 라벨에도 반영).\n- **Alt+M / Alt+R / Alt+S 토글 패널** — 대화 흐름을 가리지 않고 진짜 M1(위반율)·M2/M3 계측(`Alt+M`), 등록 repo 게이트 상태(`Alt+R`), 설치 스킬 목록(`Alt+S`)을 겹쳐 확인한다. repos 패널은 ↑/↓·Enter로 해당 repo 탭 전환/opt-in까지 된다(0.10.4). Esc로 닫는다.\n- **`/` 스킬 드롭다운 · `?` 도움말** — 입력창에서 `/`를 치면 설치 스킬 드롭다운(전방일치 필터·↑/↓·Enter/Tab 완성)이 뜨고, 선택한 스킬은 SKILL.md 본문 주입 방식으로 발동한다(격리 규율상 SDK 자체 스킬 로드는 차단 유지). 입력창이 비어있을 때 `?`는 전체 단축키 도움말 패널을 토글한다(0.10.4).\n- **statusline 2줄** — 디렉터리·브랜치·dirty 여부·모델·비용·컨텍스트 토큰 사용량(`12.3k/200k`, 0.11.0부터)을 turn마다 갱신한다.\n- **프롬프트 히스토리(↑/↓) 로컬 영속(0.11.0)** — 입력창에서 이전에 보낸 프롬프트를 repo별로 다시 탐색할 수 있다. `~/.gbc/prompt-history.json`에 repo당 최근 100건까지 저장되며(파일 권한 0600, 저장 전 알려진 시크릿 패턴을 best-effort로 마스킹하지만 완전한 시크릿 스캐닝은 아니다 — 민감정보를 직접 타이핑하지 않도록 주의), `GBC_NO_PROMPT_HISTORY=1`로 끄면 저장·조회 둘 다 완전히 비활성화된다(이미 저장된 파일은 직접 삭제해야 한다).\n- **격리 규율은 A-모드와 동일** — `gbc tui`를 실행하지 않는 한 ink/react/agent-sdk는 로드되지 않는다(다른 모든 gbc 커맨드·B-모드 hook 핫패스 무영향, 회귀락: `test/tui-isolation.test.mjs`).\n- **`!<command>` 셸 직접 실행(0.12.3)** — 입력창에서 `!`로 시작하면 셸 명령을 직접 실행한다(Claude Code CLI `!` 프리픽스와 동일 계열). **사람이 직접 타이핑하는 입력이라 모델 도구 경로가 아니고 게이트 판정을 전혀 경유하지 않는다** — 애초 게이트 범위 밖이라 무충돌. `argv` 배열로 실행하므로(셸 문자열 통짜 실행 아님) 파이프·리다이렉트·`$()` 명령치환·변수확장은 지원하지 않는다 — 따옴표(`'…'`/`\"…\"`)는 공백 포함 인자를 묶는 용도일 뿐 안에서도 확장되지 않는다. 대화형 명령(`!vim` 등)은 stdin이 없어 즉시 종료되거나 실패한다. 30초 타임아웃·64KB 출력 상한을 넘으면 강제 종료. 스트리밍 응답 중에는 실행할 수 없다(끝난 뒤 다시 시도). 끄려면 `GBC_NO_BANG=1`.\n\n### 사내 프록시(레지스트리 Nexus/Artifactory) 환경\n\n회사 npm 레지스트리가 `registry.npmjs.org`가 아니라 사내 프록시(`npm config get registry`로 확인 가능)면, `gbc tui`/`gbc run` 설치가 아래 순서로 조용히 꼬일 수 있다(실사용 재현 사례):\n\n1. **캐럿(`^`)이나 버전 미지정 설치는 하지 않는다.** `npm i -g ink`처럼 버전을 안 박으면, 사내 프록시가 캐싱한 \"latest\" 메타데이터가 실제 npmjs.org보다 오래됐을 수 있어(미러 동기화 지연) 의도한 버전과 다른 게 깔린다. **패키지 세 개(`ink`·`react`·`@anthropic-ai/claude-agent-sdk`)는 항상 정확한 버전으로, 한 번의 명령에 같이 설치**한다(위 코드 블록 그대로 복붙 — 개별로 나눠 설치하면 npm이 peer dependency를 따로 해석해 React가 중복 설치될 수 있다):\n   ```bash\n   npm uninstall -g ink react @anthropic-ai/claude-agent-sdk\n   npm install -g ink@7.1.0 react@19.2.7 @anthropic-ai/claude-agent-sdk@0.3.202\n   ```\n2. **`optionalDependencies`는 실패해도 npm이 조용히 넘어간다(exit 0).** `npm install -g geobuke-code`가 \"성공\"으로 끝나도 사내 레지스트리가 이 세 패키지(특히 스코프 `@anthropic-ai/*`)를 미러링 안 하거나 차단하면 실제론 하나도 안 깔려있을 수 있다. `gbc tui` 실행 시 뜨는 안내 메시지가 \"설치 안 됨\"/\"버전불일치\"/\"React 인스턴스 중복\" 중 무엇인지에 따라 원인이 다르다(0.9.1부터 진단 메시지가 구체적으로 알려준다 — 안 뜨고 원시 스택트레이스가 그대로 보이면 이슈로 알려달라).\n3. **직접 진단**:\n   ```bash\n   npm ls -g ink react @anthropic-ai/claude-agent-sdk\n   ```\n   `invalid`나 버전 불일치가 보이면 위 1번 명령으로 다시 잡는다. 그래도 설치 자체가 안 되면(`npm install -g ink@7.1.0 ...`이 에러) 사내 레지스트리가 해당 패키지를 프록시하지 않는 것 — 레지스트리 관리자에게 `@anthropic-ai/*` 스코프·`ink`·`react` 미러링을 요청한다.\n\n### 실행 환경의 보안정책이 claude 실행파일을 차단하는 경우 (`spawn EPERM`/`EACCES`)\n\n`gbc run`/`gbc tui`는 `@anthropic-ai/claude-agent-sdk`가 내려받은 **번들 claude.exe를 자식 프로세스로 spawn**해 구동한다. 실행 환경의 보안정책이 이 실행파일 경로를 차단하면 프롬프트 제출 시 `spawn EPERM`(또는 `EACCES`)이 나며, gbc가 자동으로 원인·우회 안내를 낸다.\n\n```bash\n# bash / zsh / WSL / Mac\nclaude --version   # 성공하면 그 claude가 이미 허용된 설치본\nGBC_CLAUDE_PATH=/path/to/allowed/cli.js gbc tui   # JS 설치본의 cli.js 경로를 SDK에 지정해 우회\n```\n\n```powershell\n# native Windows (PowerShell)\nclaude --version\n$env:GBC_CLAUDE_PATH=\"C:\\path\\to\\node_modules\\@anthropic-ai\\claude-code\\cli.js\"; gbc tui\n```\n\n- `claude --version`이 실패하면(예: `Access denied`) claude 실행파일 자체가 이 환경에서 어디서도 허용되지 않는 것 — 환경 관리자(보안 담당)에게 예외를 요청해야 한다(GBC_CLAUDE_PATH로 우회 불가).\n- 실측 확인된 우회는 번들 `claude.exe`가 아니라 **npm(JS) 설치본의 `cli.js`**를 가리키는 것이다(예: `node_modules/@anthropic-ai/claude-code/cli.js`) — `GBC_CLAUDE_PATH` 환경변수로 지정하면 `gbc run`·`gbc tui` 둘 다 읽는다(SDK `Options.pathToClaudeCodeExecutable`에 그대로 전달).\n- 지정한 claude 버전이 SDK가 기대하는 프로토콜과 안 맞으면 같은 허용 경로에 해당 버전을 추가 설치해야 할 수 있다. SDK가 어느 claude와 짝인지는 **번들 바이너리에 직접 물어보면 된다**(추측하지 말 것) — `@anthropic-ai/claude-agent-sdk-<플랫폼>/claude --version`. 이 저장소가 고정한 SDK `0.3.202`는 실측 `2.1.202 (Claude Code)`였다.\n\n## 크로스-repo 가시성\n\n여러 repo를 오가며 작업할 때, **다른 repo에 걸린 미완 작업**을 그 repo를 열지 않고도 인지하기 위한 기능이다. 세션 진입(SessionStart) 시 현재 repo의 미해결 defer 상세에 더해, **등록된 다른 repo들의 미해결 defer 요약**을 한 줄로 환기한다.\n\n`gbc init`을 하면 그 repo는 **레지스트리에 자동 등록**된다(opt-out: `gbc init --no-register`). 따라서 보통은 아래를 따로 칠 필요 없이, init한 repo들이 서로의 미완 작업을 자동으로 환기한다. 수동 관리가 필요할 때만:\n\n```bash\n# 감시할 repo를 글로벌 레지스트리(~/.gbc/repos.json)에 등록 (각 repo에서 1회, 또는 경로 지정)\ngbc repos add                 # 현재 폴더\ngbc repos add /path/to/other-repo\ngbc repos list                # 등록 현황 + 각 repo 미해결 defer 수\n```\n\n이후 등록된 repo에서 세션을 열면 진입 시 이렇게 뜬다:\n\n```\n🐢 거북이 게이트 — 미해결 defer 1건 (진행중 0 · 미착수 1, 이전 작업 잔여):\n1. [미착수] dist 재빌드 자동화                     ← 현재 repo: 번호 매긴 상세\n필요하면 사용자에게 이어서 처리할지 확인하세요. 규약 — …\n\n🌐 타 repo 미해결: dev-note 진행중1·미착수1 · fa-support 미착수1   ← 등록된 타 repo: 카운트만\n```\n\n- **카운트만** 표시한다 — 번호 매긴 상세 리스트는 **현재 repo에만**. 번호는 `gbc defer <N>` 인덱스 ref와 현재 cwd 기준으로 묶이므로, 타 repo에 번호를 주면 \"어느 repo의 N\"인지 ref가 깨진다. 타 repo 항목을 다루려면 그 repo로 들어가서 번호로 조작한다.\n- **SessionStart에서만** 환기한다(매 대화 종료 Stop 리마인드엔 미첨부 — 노이즈 방지). 현재 repo와 미해결 0건 repo는 요약에서 제외(전부 깨끗하면 `🌐` 줄 자체가 없다).\n- gbc가 설치되지 않은(`.gbc/` 없는) repo는 등록돼 있어도 조용히 건너뛴다(fail-silent) — 레지스트리는 넉넉히 등록해도 안전하다.\n- 끄려면 `GBC_NO_CROSS_REPO=1`(이 줄만) 또는 `GBC_NO_SESSION_HINT=1`(세션 진입 힌트 전체).\n\n> CLI에서 repo별 alias(`alias cc-x='cd <dir> && claude'`)를 쓴다면, alias에 `gbc repos add . 2>/dev/null;`를 끼워 **여는 repo를 자동 등록**할 수 있다(등록은 멱등).\n\n### 게이트 건강성 롤업 (`gbc repos list`)\n\n\"회사 repo에서 게이트가 조용히 안 먹는다\"를 한 명령으로 진단한다. `gbc repos list`는 각 등록 repo의 `.claude/settings.json`을 읽어 hook 등록 상태를 표시한다:\n\n```\n📁 등록된 repo 3개:\n  [○깨끗] /path/to/healthy\n  [○깨끗] /path/to/old        ⚠️SessionStart누락        ← 0.2.1 이하 init 코호트\n  [●미해결2] /path/to/broken  ⚠️게이트hook부재          ← PreToolUse 게이트가 아예 없음(조용히 죽음)\n\n⚠️ 게이트 hook 부재/SessionStart 누락 repo는 해당 repo에서 'gbc init --yes' 재실행으로 복구하세요.\n   (크로스-repo는 hook *등록 여부*만 검사 — 명령 freshness[설치경로 의존]는 각 repo에서 'gbc status'로 확인)\n```\n\n- **검사 대상**: 게이트 hook(`PreToolUse`)·SessionStart hook의 **등록 여부**. 둘 다 cliPath 없이 결정론적으로 판정된다.\n- **검사 안 하는 것**: hook 명령의 *freshness*(구버전 prefix 등). gbc는 단일 전역 설치지만 각 repo의 hook 명령엔 설치 시점의 절대경로가 구워져 있어, 현재 런타임 경로로 타 repo를 stale 판정하면 false-positive가 난다. 명령이 구식인지는 그 repo에서 `gbc status`로 확인한다(진짜 사후대조 freshness는 A-mode 과제).\n\n### 프로젝트 루트 해석 — stray `.gbc` 마커\n\nhook(`PreToolUse`/`Stop`/`SessionStart`)이나 CLI가 받는 cwd가 프로젝트 루트의 하위 디렉토리일 수 있다(에이전트 세션이 서브패키지 안에서 작업 중이거나, 서브에이전트가 cwd를 옮긴 경우 등). gbc는 git이 `.git`을 찾듯 조상 디렉토리로 올라가며 `.gbc`를 찾는다(`resolveProjectRoot`).\n\n이때 **`.gbc`가 하나가 아니라 여러 겹**일 수 있다 — 과거 버전(0.12.2 이전)에서 하위 디렉토리를 한 번이라도 읽으면 그 자리에 빈 `.gbc`가 생기던 결함(`gbcDir()`의 mkdir-on-read)이 있었다. 이 화석이 하위에 남아 있으면, 조상 walk-up이 **진짜 루트보다 먼저 화석을 만나 거기서 멈춰버려** 진짜 루트의 `spec.md`·`.claude/settings.json`을 영원히 못 보게 된다(모든 판정이 \"명세 소스: (없음)\"으로 조용히 오판됨).\n\n0.12.2부터 gbc는 `.gbc`를 찾을 때마다 **형제 `.claude/skills/gate/`(gbc init만 만드는 설치 마커) 존재 여부**로 진짜/화석을 구분한다 — 형제가 없으면 화석으로 보고 계속 조상으로 올라간다. 이 판별은 내용(spec.md 비어있음 등)이 아니라 구조만 보므로, 방금 `gbc init`한 빈 프로젝트나 `gbc done` 직후(spec.md가 의도적으로 비워짐)에도 오탐하지 않는다.\n\n과거에 이미 생긴 화석은 근본수정만으로는 사라지지 않는다(더는 판정을 가로채지 않을 뿐, 디스크엔 남아 있다). `gbc doctor`로 찾아 정리한다:\n\n```bash\ngbc doctor          # 등록 repo(gbc repos)를 순회해 화석 .gbc 보고만(read-only)\ngbc doctor --fix    # 삭제가 아니라 <repo>/.gbc-quarantine-<시각>/ 로 격리(포렌식 보존)\n```\n\n## 계측 (M1~M3)\n\n게이트는 모든 결정을 `.gbc/events.jsonl`(append-only, 메타데이터만 — 코드 본문 미기록)에 기록한다. `gbc metrics`로 집계를 본다. 끄려면 `GBC_NO_METRICS=1`.\n\n여러 repo의 게이트 ROI를 한 번에 보려면 `gbc metrics --all` — 등록된 repo들의 `events.jsonl`을 병합 집계한다. 병합 시 각 이벤트의 `specHash`를 repo 경로로 태깅해 **repo간 boilerplate 명세 해시 충돌**을 막는다(태깅 없이 합치면 한 repo의 통과 뒤 다른 repo의 변이가 M1 churn으로 오집계된다; M2/M3는 세션 UUID 키라 원래 안전). symlink로 등록된 경로는 거부한다(등록 경로 밖 임의 디렉터리 읽기 차단).\n\n### 근거주입(P2b) 롤업\n\n차단 판정은 곧바로 확정되지 않는다 — 누락으로 지목된 케이스의 심볼을 저장소에서 `grep`해 실측 근거를 찾고, 매치가 있으면 그 근거를 함께 실어 **한 번 더 판정**한다(절단선 밖·다른 파일에 이미 구현된 형제 케이스를 판정 모델이 못 보던 것이 오탐의 실측 주지분이었다). `gbc metrics`의 `[P2b]` 블록이 그 발화·전환율·제약을 보여준다.\n\n**무엇이 외부로 나가는가** — 근거는 `judge`(Anthropic haiku) 프롬프트에 실린다. 즉 차단 판정마다 **여러 파일의 코드 조각**이 전송된다(기존에도 편집 본문과 편집 대상 파일 상태는 전송됐다). 조립 단계에서 시크릿 패턴을 마스킹하고 `--include` allowlist·`--exclude-dir`가 `.env`·`node_modules` 등을 애초에 스캔 대상에서 뺀다. 게이트 자체를 끄려면 `GBC_NO_GATE=1`. ⚠️ 근거는 저장소 파일에서 오므로, 저장소에 쓸 수 있는 주체는 그 텍스트로 판정에 영향을 줄 수 있다(모델 지시 `심볼 존재 ≠ 구현 증거`가 완화 장치이지 구조적 통제는 아니다).\n\n**적용 범위(과대주장 금지)** — grep 대상 확장자(`.ts`/`.js`/`.tsx`/`.jsx`)에서만 동작하고, `Write`(전체 덮어쓰기)와 케이스 구현을 **삭제하는** `Edit`에서는 억제된다(그 코드는 곧 사라지므로 구현 증거가 아니다). 근거가 \"헬퍼 함수가 존재한다\" 수준이면 판정은 뒤집히지 않는다 — 호출·배선이 근거에 없으면 여전히 누락으로 본다. 수집은 grep 8회·8초 예산 안에서만 돌고, 초과분은 \"못 봤음\"으로 정직 표기된다(매치 없음과 구분).\n\n**[현재 파일 상태] 절단(0.12.1 P3)** — 편집 대상 파일이 8000자를 넘으면 head 고정분(4000자)에 더해 **이번 편집 위치 주변(±1500자)**을 윈도우로 함께 보여준다(이전엔 head-only라 절단면 뒤쪽 정당 기구현 형제가 항상 안 보였다). 전송 총량은 그대로다(8000자 예산 불변, 지연·비용 부담 없음) — 다만 위 \"무엇이 외부로 나가는가\"의 노출 조건이 \"head 안\"에서 \"head 또는 편집 위치 근처\"로 넓어졌다는 뜻이다(security-auditor 지적, 2026-08-10). 공격자가 편집 위치를 직접 통제하긴 어려워 실익은 제한적이지만, 저장소에 쓸 수 있는 주체가 판정에 영향을 줄 수 있다는 구조적 한계 자체는 P2b와 동일하다.\n\n| 지표 | 관측 | B-모드 신뢰도 |\n|---|---|---|\n| **M2** 게이트 적중 vs 도중발견 | 차단이 잡은 누락 케이스 수 vs `defer add`로 도중 등록된 수 | **강** (defer-registry와 1:1) |\n| **M3** 재호출/iteration | 작업단위당 편집 반복 횟수 | proxy |\n| **M1** post-gate 재작업 | 통과 후 churn(spec 변경·gate reset·defer) | **약** (churn proxy) — A-모드 세션은 아래 **진짜 M1**로 승격 |\n\n### 진짜 M1 — 사후대조 채점 (0.8.0, A-모드 세션)\n\n**진짜 M1**(통과 후 시나리오 위반율)은 게이트가 \"모델이 실제로 무엇을 했나\"를 채점하는 **사후 대조**가 필요하다 — B-커널(hook)은 엔진 출력을 못 봐 churn 약신호까지다. A-모드(`gbc run`)는 `.gbc/extraction.jsonl`에 엔진 출력을 남기므로, 이걸 `events.jsonl`과 **session_id로 조인**해 두 지표를 산출한다:\n\n```bash\ngbc run \"…\" --yes      # A-모드 세션 → extraction.jsonl 축적\ngbc score              # 사후대조 채점(후보당 모델 1호출) → .gbc/scores.json\ngbc metrics            # [진짜 M1] 섹션에 위반율·오탐율 반영\n```\n\n- **위반율(LLM 사후대조)** — 통과 당시 명세(`specHash`로 현행 spec.md 또는 `spec.archive`에서 resolve)와 세션의 실제 편집 묶음을 대조해 violated/compliant/unscored 판정. **분모는 채점 완료분만**(unscored를 넣으면 위반율이 과소평가된다), 명세를 resolve 못 하면 다른 명세로 채점하지 않고 unscored(오염 금지). 채점은 비용이 드는 **명시 명령**(`gbc score`)이다 — 게이트 핫패스·metrics 순수 집계에 절대 실리지 않는다.\n- **오탐율(행동신호)** — 차단의 정당성을 LLM 재판정이 아니라 **차단 이후 실제로 일어난 일**로 분류한다(게이트 자체가 LLM이라 재판정은 일치도지 truth가 아니다): `block→spec 보강→통과`=정상작동 / `block→편집 수정만으로 통과`=자가수정(모호) / `block→gate-reset·bypass`=무시, `block→포기`=오탐 후보 / `block→fail-open 통과`=판정불능(분자·분모 모두 제외). events만으로 산출돼 B-모드 차단에도 적용된다.\n- **정직 규율** — 표본 0이면 rate를 0%가 아니라 `—(표본 0)`으로 표시하고, extraction 없는 B-모드 세션은 `채점가능` 분모에서 정직하게 제외된다. 통계적 유의미성은 코퍼스 축적(도그푸딩)에 달렸다 — 지금 숫자는 기전 실증이지 대표 통계가 아니다.\n\n## 판정 드리프트 회귀락 (`gbc gate snapshot`)\n\n게이트 판정은 LLM(haiku)이라 **모델 업그레이드·프롬프트 수정·SDK 변경**이 같은 편집에 대한 통과/차단을 조용히 바꿀 수 있다. 골든셋은 실제 판정을 캡처해두고 나중에 재판정해 그 드리프트를 잡는다.\n\n```bash\ngbc gate snapshot on          # 캡처 모드 ON (opt-in)\n# … 평소처럼 작업 — judge가 평가하는 편집이 .gbc/golden.json에 기록된다 …\ngbc gate snapshot list        # 캡처된 케이스 확인 (판정·도구·편집 머리말)\ngbc gate snapshot off         # 캡처 종료\n\n# 나중에(모델/gbc 업그레이드 후 등) 드리프트 점검:\ngbc gate snapshot replay              # 각 케이스를 temp 0으로 재판정, 캡처 시점과 비교\ngbc gate snapshot replay --samples 5  # 케이스당 5회 모달 판정(잔여 비결정 흡수)\n```\n\n- **하드 신호 = 판정 뒤집힘(pass↔block)만.** 하나라도 뒤집히면 `replay`는 **exit 1**(로컬 pre-flight 게이트로 사용 가능). `missing[]` 변화는 LLM 자유서술이라 정보용으로만 표시하고 절대 실패시키지 않는다.\n- **결정성**: replay는 judge를 `temperature 0`으로 재실행한다(핫패스 게이트는 불변). `claude -p` 폴백 트랜스포트는 temperature 핀을 지원하지 않아 best-effort다 — 직접 API 키가 있을 때 가장 안정적. temp 0도 bit-stable은 아니므로 `--samples N`으로 다수결 모달을 쓸 수 있다.\n- **캡처 시점**: judge가 *실제로 평가한* cache-miss 편집만 기록된다(cached-skip·fail-open 제외). 특정 편집을 캡처하려면 `gbc gate reset` 후 그 편집을 수행한다.\n- **⚠️ 로컬 전용(privacy)**: `golden.json`은 정규화된 **편집 본문**을 담는다 — `events.jsonl`이 불변식으로 절대 저장하지 않는 내용이다. `.gbc/`는 gitignore이므로 이 골든셋은 **로컬 드리프트 점검**이지 커밋되는 CI 스위트가 아니다. 공유 CI로 쓰려면 편집 본문을 커밋하는 privacy 트레이드오프를 명시적으로 감수해야 한다.\n\n## 운영 현황 관측 (`/gbc-monitor`)\n\n위 운영층 명령들(`gbc status`·`gbc metrics --all`·`gbc repos list`·`gbc gate snapshot status`)은 강력하지만, 세션 안에서 **발견가능성**이 없었다 — 명령·플래그를 외워 직접 치거나 매번 요청해야 했다. `/gbc-monitor` 스킬은 이들을 **묶어 조회하고 해석**하는 읽기전용 표면이다.\n\n```\n/gbc-monitor                  # 게이트 현황 종합(4개 묶음 + 해석)\n게이트 현황 보여줘 / 계측 어때 / repo 건강성  # 자연어로도 트리거(특정 항목만도 가능)\n```\n\n핵심은 **단순 별칭이 아니라 해석**이다 — 숫자가 정상/주의/행동필요 중 무엇인지 판정해준다:\n\n- `repos ✗부재` → 게이트가 조용히 죽은 상태 → 그 repo `gbc init` 재실행 안내(단 `/tmp/*` 잔재는 `gbc repos remove` 청소 후보)\n- `M1 churn` → **약신호 proxy** — \"통과 후 결함 수\"로 과대해석 금지. 진짜 M1은 A-모드 세션 한정으로 측정된다(`gbc score` 사후대조, 0.8.0) — B-모드 churn은 여전히 proxy다\n- `명세 비어있음 → 차단` → 버그가 아니라 게이트가 의도대로 켜진 정상 동작\n- `M2 도중발견 비율 낮음` → 누락이 늦게 새기보다 게이트가 사전 차단을 잘 한다는 긍정 신호\n\n### 경계 — 관측하고, 액션은 가리킨다\n\n`/gbc-monitor`와 `/gate`를 가르는 단 하나의 선: **\"그 명령이 상태를 바꾸거나(mutate) API를 쓰는가?\"** 그렇다면 `/gate`의 영역이다(미루기·리셋·`snapshot on/off/clear`·`replay`). `/gbc-monitor`는 **읽기전용 조회만** 하고, 변경이 필요하면 직접 실행하지 않고 `/gate`로 *가리킨다*. 이 분리 덕에 모니터링은 부작용 걱정 없이 언제든 안전하게 부를 수 있다. `gbc init`이 이 스킬을 `/gate`·`/gbc-mute`와 함께 설치한다.\n\n## 정직한 한계\n\n- **자동 in-loop 게이트는 구현 전까지다** — \"도중 탈선\"은 못 잡는다(후속 C 영역). 응답 종료 시 scope 사후 판정은 자동이지만 **차단이 아니라 권고**라 강제력이 없고, 구현 *후* `gbc verify`는 자동 루프 게이트가 아니라 **명시 호출**이고 바인딩·증거에 의존한다.\n- **`gbc verify`의 강도는 사다리다**: verified(테스트 실행 증명) > reviewed(LLM 코드 독해, 동작 보증 아님) > unverifiable(증거 없음). reviewed/unverifiable를 \"통과\"로 뭉치지 않는다 — 거짓 확신(reviewed→pass)·거짓 경보(unverifiable→fail) 둘 다 harm이다. 강한 검증을 원하면 `::test` 바인딩 + 러너 JUnit 출력을 배선한다.\n- 판정은 LLM이라 100% 아니다. **사람이 변이 전 케이스를 리뷰/편집하는 pause**가 진짜 가치다.\n- 제품 범위 = **B-커널**(CC-native hook + defer-registry + /gate) + 그 위 운영층(누락 케이스 일괄 분류·scope 사후 판정·크로스-repo 가시성/건강성·판정 드리프트 회귀락·관측 계측 M1~M3) + **사후 결과검증(`gbc verify`)**. **standalone TUI**는 후속 A(public) 영역이다. **A-모드 엔진 래핑은 0.7.0 스파이크(`gbc run`)로 절개됐고, 0.8.0이 그 위에 진짜 M1 사후대조(`gbc score`)를 착지시켰다** — 단, 이것은 **루프 자동 채점이 아니라 명시 호출**이고(세션이 끝난 뒤 사람이 부른다), A-모드 세션(extraction 존재)만 채점할 수 있으며, 지금 숫자는 기전 실증 단계라 통계적 대표성이 없다. `gbc verify`는 그 사전 단계로, 명시 호출 시 케이스↔증거를 사다리로 대조한다.\n- **검증 상태**: 게이트 판정 품질은 **양 트랜스포트 모두 회귀 8/8(FP0 FN0)**. 직접 API(haiku) 경로 실측 **평균 1.7s**(1.1–2.5s), claude -p 폴백 ~18s. 직접 API용 게이트 프롬프트는 최소화하면서 정확도를 유지하도록 \"동작 편집 vs 비-동작 편집\" 2단계 분류로 튜닝했다(`ANTHROPIC_API_KEY=… node dist/eval/regression.js`로 재현).\n- **fail-open**: 판정 호출이 실패하면(키 오류·네트워크 등) 게이트는 안전하게 통과시킨다(개발 차단 방지). 단 fail-open 통과는 작업단위 캐시에서 제외되고(다음 편집 재판정), `systemMessage` 경고 + `.gbc/failopen.log` 계측으로 드러난다(조용한 무력화 방지).\n\n## 라이선스\n\nMIT\n","readmeFilename":"README.md"}