{"_id":"@aotoki/ccharness","_rev":"15-47c9ef39ea343a5ffba2c39fe5c7cd60","name":"@aotoki/ccharness","dist-tags":{"latest":"0.11.1"},"versions":{"0.1.0":{"name":"@aotoki/ccharness","version":"0.1.0","keywords":["Claude Code"],"author":{"name":"Aotokitsuruya"},"license":"MIT","_id":"@aotoki/ccharness@0.1.0","maintainers":[{"name":"elct9620","email":"elct9620@frost.tw"}],"bin":{"ccharness":"dist/index.js"},"dist":{"shasum":"47c818efde9f2fbdfd3b78c0a38a503926e54b87","tarball":"https://registry.npmjs.org/@aotoki/ccharness/-/ccharness-0.1.0.tgz","fileCount":24,"integrity":"sha512-9vcK8Nna4g/oEsK1Kk5WrVSq2npBERfcXAp9hWktCKHb1Hzn/uhR7YILhMp6T3KerbXuUW0pXM9xbZGdrvGEAQ==","signatures":[{"sig":"MEQCIB0UR6AF+6THvhW0a+iMeuAShSSNnsMHzThKTzPjMlBDAiBl1MJlKpCYw3JwT9azRelxKPYZwRWN7keCt0tz3UOsPw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":200485},"type":"module","_from":"file:aotoki-ccharness-0.1.0.tgz","scripts":{"test":"vitest --run","build":"rolldown -c rolldown.config.ts"},"_npmUser":{"name":"elct9620","email":"elct9620@frost.tw"},"_resolved":"/private/var/folders/vl/4zdff9yd5132j4719fxx7fl80000gn/T/bfd25c1448e71d8a7d800f9f089dd934/aotoki-ccharness-0.1.0.tgz","_integrity":"sha512-9vcK8Nna4g/oEsK1Kk5WrVSq2npBERfcXAp9hWktCKHb1Hzn/uhR7YILhMp6T3KerbXuUW0pXM9xbZGdrvGEAQ==","_npmVersion":"10.9.2","description":"A lightweight harness for Claude Code","directories":{},"_nodeVersion":"22.16.0","dependencies":{"tsyringe":"^4.10.0","commander":"^14.0.0","@abraham/reflection":"^0.13.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","prettier":"3.6.2","rolldown":"1.0.0-beta.34","typescript":"^5.9.2","@types/node":"^24.3.0"},"_npmOperationalInternal":{"tmp":"tmp/ccharness_0.1.0_1756556079709_0.07188442088461389","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@aotoki/ccharness","version":"0.1.1","keywords":["Claude Code"],"author":{"name":"Aotokitsuruya"},"license":"MIT","_id":"@aotoki/ccharness@0.1.1","maintainers":[{"name":"elct9620","email":"elct9620@frost.tw"}],"bin":{"ccharness":"dist/index.js"},"dist":{"shasum":"e1bd2010bf1a2180ac31b75c5429051f813c2aca","tarball":"https://registry.npmjs.org/@aotoki/ccharness/-/ccharness-0.1.1.tgz","fileCount":3,"integrity":"sha512-tp8PsU4piNszkCEUD9LTul9sZPK6vHmw9awWxSv2Bm9xQrVXXXk32HTcs4sVsIXbUDAb24vctEhv14rh5XZBCg==","signatures":[{"sig":"MEQCIHWJKPrLsAN/9/xhxMV3azPEoIjYdvepSZZowyoWo4oMAiBEshcjLoHwQq0POYyqhJGrvkooj2SV0nh/5sWlu7MGbw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":175825},"type":"module","_from":"file:aotoki-ccharness-0.1.1.tgz","scripts":{"test":"vitest --run","build":"rolldown -c rolldown.config.ts"},"_npmUser":{"name":"elct9620","email":"elct9620@frost.tw"},"_resolved":"/private/var/folders/vl/4zdff9yd5132j4719fxx7fl80000gn/T/61723d7bf32ad346d02bb4e0a6e476f8/aotoki-ccharness-0.1.1.tgz","_integrity":"sha512-tp8PsU4piNszkCEUD9LTul9sZPK6vHmw9awWxSv2Bm9xQrVXXXk32HTcs4sVsIXbUDAb24vctEhv14rh5XZBCg==","_npmVersion":"10.9.2","description":"A lightweight harness for Claude Code","directories":{},"_nodeVersion":"22.16.0","dependencies":{"tsyringe":"^4.10.0","commander":"^14.0.0","@abraham/reflection":"^0.13.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","prettier":"3.6.2","rolldown":"1.0.0-beta.34","typescript":"^5.9.2","@types/node":"^24.3.0"},"_npmOperationalInternal":{"tmp":"tmp/ccharness_0.1.1_1756557157434_0.32554954670469316","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@aotoki/ccharness","version":"0.1.3","keywords":["Claude Code"],"author":{"name":"Aotokitsuruya"},"license":"MIT","_id":"@aotoki/ccharness@0.1.3","maintainers":[{"name":"elct9620","email":"elct9620@frost.tw"}],"bin":{"ccharness":"dist/index.js"},"dist":{"shasum":"a3e4ca8b65f70358abdbfa08b9ddb8c8a86548b5","tarball":"https://registry.npmjs.org/@aotoki/ccharness/-/ccharness-0.1.3.tgz","fileCount":2,"integrity":"sha512-m9ejhJfOhAOhMRsW9171dnr3J0s25Wclcsey5jCEIktU8r8Xwe/MbWfV7OnrUVlvGbRRaHrNnH9NJTa3SY+0Hg==","signatures":[{"sig":"MEYCIQD1rFm2nWov4m9cjAhhM54pwccFQThDU5d5UFrncWpJWQIhAOuyn6iXlbWsIDZTQGzyHPTrIEfoowjbpThcVlMF13pk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1724},"type":"module","_from":"file:aotoki-ccharness-0.1.3.tgz","scripts":{"test":"vitest --run","build":"rolldown -c rolldown.config.ts"},"_npmUser":{"name":"elct9620","email":"elct9620@frost.tw"},"_resolved":"/tmp/946785da4d2ad89b508bfa05921eeec2/aotoki-ccharness-0.1.3.tgz","_integrity":"sha512-m9ejhJfOhAOhMRsW9171dnr3J0s25Wclcsey5jCEIktU8r8Xwe/MbWfV7OnrUVlvGbRRaHrNnH9NJTa3SY+0Hg==","_npmVersion":"10.9.3","description":"A lightweight harness for Claude Code","directories":{},"_nodeVersion":"22.18.0","dependencies":{"tsyringe":"^4.10.0","commander":"^14.0.0","@abraham/reflection":"^0.13.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","prettier":"3.6.2","rolldown":"1.0.0-beta.34","typescript":"^5.9.2","@types/node":"^24.3.0"},"_npmOperationalInternal":{"tmp":"tmp/ccharness_0.1.3_1756558486153_0.45234891568968805","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@aotoki/ccharness","version":"0.1.4","keywords":["Claude Code"],"author":{"name":"Aotokitsuruya"},"license":"MIT","_id":"@aotoki/ccharness@0.1.4","maintainers":[{"name":"elct9620","email":"elct9620@frost.tw"}],"bin":{"ccharness":"dist/index.js"},"dist":{"shasum":"747452c7da19ce1b660877ca8e53cde57a0dfec2","tarball":"https://registry.npmjs.org/@aotoki/ccharness/-/ccharness-0.1.4.tgz","fileCount":3,"integrity":"sha512-IR9UE0jNORq5ow7HvHiP0vvjaZsEdbr0VVERlCJEpB65iaQ1tjsCmJjw3XL8GDPkxduRW4AP33Tysw1uDB2g7w==","signatures":[{"sig":"MEUCIQDrLfE+Ak6zqhKLwqxBzewh/WLE2AZyxQY07CM0xVEPgQIgY489NHgH3CnC58Xrh3BgM5LeTqHTbcfNR6B2ENA+tRk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3028},"type":"module","_from":"file:aotoki-ccharness-0.1.4.tgz","scripts":{"test":"vitest --run","build":"rolldown -c rolldown.config.ts"},"_npmUser":{"name":"elct9620","email":"elct9620@frost.tw"},"_resolved":"/tmp/286450d0c56ddddcc27d73401d72bb45/aotoki-ccharness-0.1.4.tgz","_integrity":"sha512-IR9UE0jNORq5ow7HvHiP0vvjaZsEdbr0VVERlCJEpB65iaQ1tjsCmJjw3XL8GDPkxduRW4AP33Tysw1uDB2g7w==","_npmVersion":"10.9.3","description":"A lightweight harness for Claude Code","directories":{},"_nodeVersion":"22.18.0","dependencies":{"tsyringe":"^4.10.0","commander":"^14.0.0","@abraham/reflection":"^0.13.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","prettier":"3.6.2","rolldown":"1.0.0-beta.34","typescript":"^5.9.2","@types/node":"^24.3.0"},"_npmOperationalInternal":{"tmp":"tmp/ccharness_0.1.4_1756560696489_0.2699271766848399","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@aotoki/ccharness","version":"0.2.0","keywords":["Claude Code"],"author":{"name":"Aotokitsuruya"},"license":"MIT","_id":"@aotoki/ccharness@0.2.0","maintainers":[{"name":"elct9620","email":"elct9620@frost.tw"}],"bin":{"ccharness":"dist/index.js"},"dist":{"shasum":"204f2436a7d9f725ebb0706e0806fd67c2009bf7","tarball":"https://registry.npmjs.org/@aotoki/ccharness/-/ccharness-0.2.0.tgz","fileCount":3,"integrity":"sha512-zRCb/odY3m0W+dMZiIl96NU4NDHtyzskyAT7PyU6jXOdEsDK/eKH2Vp5sNaHan9WusTrSvpOs6kQprZmOtTOqQ==","signatures":[{"sig":"MEUCIQDYu6ohCm99PUiA5y/x1KYkwHbEWZbfM1WHpm5PgYHf+QIgPg06ZFWiSVAfFnCXZiKMrKLaCHy4MU0AdrbVzz4qTVU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3536},"type":"module","_from":"file:aotoki-ccharness-0.2.0.tgz","scripts":{"test":"vitest --run","build":"rolldown -c rolldown.config.ts"},"_npmUser":{"name":"elct9620","email":"elct9620@frost.tw"},"_resolved":"/tmp/12e736e501b0a6249c795aed8d1118f4/aotoki-ccharness-0.2.0.tgz","_integrity":"sha512-zRCb/odY3m0W+dMZiIl96NU4NDHtyzskyAT7PyU6jXOdEsDK/eKH2Vp5sNaHan9WusTrSvpOs6kQprZmOtTOqQ==","_npmVersion":"10.9.3","description":"A lightweight harness for Claude Code","directories":{},"_nodeVersion":"22.18.0","dependencies":{"tsyringe":"^4.10.0","commander":"^14.0.0","@abraham/reflection":"^0.13.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","prettier":"3.6.2","rolldown":"1.0.0-beta.34","typescript":"^5.9.2","@types/node":"^24.3.0","prettier-plugin-organize-imports":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ccharness_0.2.0_1756633739077_0.3324145535901688","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@aotoki/ccharness","version":"0.3.0","keywords":["Claude Code"],"author":{"name":"Aotokitsuruya"},"license":"MIT","_id":"@aotoki/ccharness@0.3.0","maintainers":[{"name":"elct9620","email":"elct9620@frost.tw"}],"bin":{"ccharness":"dist/index.js"},"dist":{"shasum":"0426662ec45252c417d2701e5869f76d8a8aa2f0","tarball":"https://registry.npmjs.org/@aotoki/ccharness/-/ccharness-0.3.0.tgz","fileCount":3,"integrity":"sha512-S7plsbjuc2CiaTvZti6C+erdt7aJGpki3JpmO2L3/RddSGClNaCCqebCC6ZXX9bQZ6x3ys/VeOy8Lwl9mE22fA==","signatures":[{"sig":"MEQCIHRe0USKEL5U2RrEozj6ozOar8lu44Vo47xoYTNWXfM5AiAlOSNbsTW5d7uvHsBcSh+5XDNlT4NNH3ukq9KM+nVBvw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3536},"type":"module","_from":"file:aotoki-ccharness-0.3.0.tgz","scripts":{"test":"vitest --run","build":"rolldown -c rolldown.config.ts"},"_npmUser":{"name":"elct9620","email":"elct9620@frost.tw"},"_resolved":"/tmp/7feb4717bd82ff8be8b472947d147324/aotoki-ccharness-0.3.0.tgz","_integrity":"sha512-S7plsbjuc2CiaTvZti6C+erdt7aJGpki3JpmO2L3/RddSGClNaCCqebCC6ZXX9bQZ6x3ys/VeOy8Lwl9mE22fA==","_npmVersion":"10.9.3","description":"A lightweight harness for Claude Code","directories":{},"_nodeVersion":"22.19.0","dependencies":{"tsyringe":"^4.10.0","commander":"^14.0.0","@abraham/reflection":"^0.13.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","prettier":"3.6.2","rolldown":"1.0.0-beta.34","typescript":"^5.9.2","@types/node":"^24.3.0","prettier-plugin-organize-imports":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ccharness_0.3.0_1756912416908_0.7245526353304865","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@aotoki/ccharness","version":"0.4.0","keywords":["Claude Code"],"author":{"name":"Aotokitsuruya"},"license":"MIT","_id":"@aotoki/ccharness@0.4.0","maintainers":[{"name":"elct9620","email":"elct9620@frost.tw"}],"bin":{"ccharness":"dist/index.js"},"dist":{"shasum":"d45aeebaf83b57fed67b2cde0aa1f2009e7527e1","tarball":"https://registry.npmjs.org/@aotoki/ccharness/-/ccharness-0.4.0.tgz","fileCount":4,"integrity":"sha512-ahwoZwC4SHDqd8ObtICmv3ElHhfWmGa4ZvaJKQi2ylP57OkJmHyfUlFxssL62vLdSC50b66F9tkPEYH71ptgXQ==","signatures":[{"sig":"MEYCIQCIzsv9aww3Qkqd1J8mFaQutxjSG5ikqy2a8A+2yzTaawIhAMdS/afGNg+FcjIpidcNl00o+UskpgMpWkb+aI2dMPNL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":568384},"type":"module","_from":"file:aotoki-ccharness-0.4.0.tgz","scripts":{"test":"vitest --run","build":"rolldown -c rolldown.config.ts"},"_npmUser":{"name":"elct9620","email":"elct9620@frost.tw"},"_resolved":"/tmp/f2c769792175022fa315a56ddefb9b4e/aotoki-ccharness-0.4.0.tgz","_integrity":"sha512-ahwoZwC4SHDqd8ObtICmv3ElHhfWmGa4ZvaJKQi2ylP57OkJmHyfUlFxssL62vLdSC50b66F9tkPEYH71ptgXQ==","_npmVersion":"10.9.3","description":"A lightweight harness for Claude Code","directories":{},"_nodeVersion":"22.19.0","dependencies":{"tsyringe":"^4.10.0","commander":"^14.0.0","@abraham/reflection":"^0.13.0","@anthropic-ai/claude-code":"1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","prettier":"3.6.2","rolldown":"1.0.0-beta.34","typescript":"^5.9.2","@types/node":"^24.3.0","prettier-plugin-organize-imports":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ccharness_0.4.0_1757143345800_0.7988347985925575","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@aotoki/ccharness","version":"0.5.0","keywords":["Claude Code"],"author":{"name":"Aotokitsuruya"},"license":"MIT","_id":"@aotoki/ccharness@0.5.0","maintainers":[{"name":"elct9620","email":"elct9620@frost.tw"}],"bin":{"ccharness":"dist/index.js"},"dist":{"shasum":"beea82ca856b4ce06d05239a9a6bc170d3d126f3","tarball":"https://registry.npmjs.org/@aotoki/ccharness/-/ccharness-0.5.0.tgz","fileCount":4,"integrity":"sha512-3ZtPsqV/gDJdlmA1uPoE7rR74rcopMa4k8zzR+7sTuWFbrljVkqLd32dc0VWVqV1cOBUWaCvw6bprqVZzjqDZw==","signatures":[{"sig":"MEYCIQCaZOqpW+obR8JdzEZcOrv/Vn7N6EaZ6B0vV9/xGFbnPQIhAKkurMf96t3mHbAV5ILuTXV2ZQYaRq1VcHqp83x3/uSa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":607679},"type":"module","_from":"file:aotoki-ccharness-0.5.0.tgz","scripts":{"test":"vitest --run","build":"rolldown -c rolldown.config.ts"},"_npmUser":{"name":"elct9620","email":"elct9620@frost.tw"},"_resolved":"/tmp/7400a5b92976f25a11332e63cf6db435/aotoki-ccharness-0.5.0.tgz","_integrity":"sha512-3ZtPsqV/gDJdlmA1uPoE7rR74rcopMa4k8zzR+7sTuWFbrljVkqLd32dc0VWVqV1cOBUWaCvw6bprqVZzjqDZw==","_npmVersion":"10.9.3","description":"A lightweight harness for Claude Code","directories":{},"_nodeVersion":"22.19.0","dependencies":{"tsyringe":"^4.10.0","commander":"^14.0.0","@abraham/reflection":"^0.13.0","console-table-printer":"^2.14.6","@anthropic-ai/claude-code":"^1.0.108"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","prettier":"3.6.2","rolldown":"1.0.0-beta.34","typescript":"^5.9.2","@types/node":"^24.3.0","prettier-plugin-organize-imports":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ccharness_0.5.0_1757148220206_0.1478520788614499","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@aotoki/ccharness","version":"0.6.0","keywords":["Claude Code"],"author":{"name":"Aotokitsuruya"},"license":"MIT","_id":"@aotoki/ccharness@0.6.0","maintainers":[{"name":"elct9620","email":"elct9620@frost.tw"}],"bin":{"ccharness":"dist/index.js"},"dist":{"shasum":"e4edaf1e10ad174ee7f5eebd819745a366e08d3b","tarball":"https://registry.npmjs.org/@aotoki/ccharness/-/ccharness-0.6.0.tgz","fileCount":4,"integrity":"sha512-osqdiHgI8rv9JaB7w71wjcEJtmMlIIllD++z934y7lAYMhCeJPjiJFxhEpeuAI8ZduXTqawv6D62Jp+XX273RA==","signatures":[{"sig":"MEYCIQCf2O2qazgg07PIsqkmDgtwVj7MxyTntIUABx1ju15xHQIhAIJJdZtYhIqO3gdVNF8b6H8Iq1+nF5z0op/7+0JNpHW3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":609031},"type":"module","_from":"file:aotoki-ccharness-0.6.0.tgz","scripts":{"test":"vitest --run","build":"rolldown -c rolldown.config.ts"},"_npmUser":{"name":"elct9620","email":"elct9620@frost.tw"},"_resolved":"/tmp/df95eba983c476718a0d156084a7ee29/aotoki-ccharness-0.6.0.tgz","_integrity":"sha512-osqdiHgI8rv9JaB7w71wjcEJtmMlIIllD++z934y7lAYMhCeJPjiJFxhEpeuAI8ZduXTqawv6D62Jp+XX273RA==","_npmVersion":"10.9.3","description":"A lightweight harness for Claude Code","directories":{},"_nodeVersion":"22.19.0","dependencies":{"tsyringe":"^4.10.0","commander":"^14.0.0","@abraham/reflection":"^0.13.0","console-table-printer":"^2.14.6","@anthropic-ai/claude-code":"^1.0.108"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","prettier":"3.6.2","rolldown":"1.0.0-beta.34","typescript":"^5.9.2","@types/node":"^24.3.0","prettier-plugin-organize-imports":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ccharness_0.6.0_1757149320407_0.35839935398013933","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@aotoki/ccharness","version":"0.7.0","keywords":["Claude Code"],"author":{"name":"Aotokitsuruya"},"license":"MIT","_id":"@aotoki/ccharness@0.7.0","maintainers":[{"name":"elct9620","email":"elct9620@frost.tw"}],"bin":{"ccharness":"dist/index.js"},"dist":{"shasum":"e5d41bd11e1492bd319e7a69cb990e39130809c3","tarball":"https://registry.npmjs.org/@aotoki/ccharness/-/ccharness-0.7.0.tgz","fileCount":4,"integrity":"sha512-DMFj1nPbK44vxxYHmK+TnP1mBfqkUkXCiQvPyEKbT5BdZlHEaxLxMMkOTQiqdPw5M2oKueHzYWpqNpjQEo9Ifg==","signatures":[{"sig":"MEUCIQD65IEmyMUJyceksy31524sX2kWoQKYeZuw7B6vYkSGOgIgElV02HayHbtmQwmiQMYgWc31m/euvyAmainY9H/VH5g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":610230},"type":"module","_from":"file:aotoki-ccharness-0.7.0.tgz","scripts":{"test":"vitest --run","build":"rolldown -c rolldown.config.ts"},"_npmUser":{"name":"elct9620","email":"elct9620@frost.tw"},"_resolved":"/tmp/f525d26a2c9566ebe24fc10eb567beaf/aotoki-ccharness-0.7.0.tgz","_integrity":"sha512-DMFj1nPbK44vxxYHmK+TnP1mBfqkUkXCiQvPyEKbT5BdZlHEaxLxMMkOTQiqdPw5M2oKueHzYWpqNpjQEo9Ifg==","_npmVersion":"10.9.3","description":"A lightweight harness for Claude Code","directories":{},"_nodeVersion":"22.19.0","dependencies":{"tsyringe":"^4.10.0","commander":"^14.0.0","@abraham/reflection":"^0.13.0","console-table-printer":"^2.14.6","@anthropic-ai/claude-code":"^1.0.108"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","prettier":"3.6.2","rolldown":"1.0.0-beta.34","typescript":"^5.9.2","@types/node":"^24.3.0","prettier-plugin-organize-imports":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ccharness_0.7.0_1757159243938_0.665229407875497","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@aotoki/ccharness","version":"0.8.0","keywords":["Claude Code"],"author":{"name":"Aotokitsuruya"},"license":"MIT","_id":"@aotoki/ccharness@0.8.0","maintainers":[{"name":"elct9620","email":"elct9620@frost.tw"}],"bin":{"ccharness":"dist/index.js"},"dist":{"shasum":"713b7f7a4cfc9399a4b1e99c4102a42d0d690648","tarball":"https://registry.npmjs.org/@aotoki/ccharness/-/ccharness-0.8.0.tgz","fileCount":4,"integrity":"sha512-ngXkmBukae67uQkGZhC3zKoL+oSP2hJ5YYvgI8KAaWg4xsUsQs7+IpGBImCbOpogJbEe4LWobWyFC7AvI1Xxvg==","signatures":[{"sig":"MEYCIQCO8KAlpzHb5MMXJ+VFeeUvhUuvpY8XRWhjkYztFueHdAIhANMcZ+HSxkYICvUnWado4jxgsj+1388AcyyyaLGNN6XN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":610544},"type":"module","_from":"file:aotoki-ccharness-0.8.0.tgz","scripts":{"test":"vitest --run","build":"rolldown -c rolldown.config.ts"},"_npmUser":{"name":"elct9620","email":"elct9620@frost.tw"},"_resolved":"/tmp/34b193154b709a7a567ff77c4b21ed8a/aotoki-ccharness-0.8.0.tgz","_integrity":"sha512-ngXkmBukae67uQkGZhC3zKoL+oSP2hJ5YYvgI8KAaWg4xsUsQs7+IpGBImCbOpogJbEe4LWobWyFC7AvI1Xxvg==","_npmVersion":"10.9.3","description":"A lightweight harness for Claude Code","directories":{},"_nodeVersion":"22.19.0","dependencies":{"tsyringe":"^4.10.0","commander":"^14.0.0","@abraham/reflection":"^0.13.0","console-table-printer":"^2.14.6","@anthropic-ai/claude-code":"^1.0.108"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","prettier":"3.6.2","rolldown":"1.0.0-beta.34","typescript":"^5.9.2","@types/node":"^24.3.0","prettier-plugin-organize-imports":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ccharness_0.8.0_1757178646565_0.8211850208164202","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@aotoki/ccharness","version":"0.10.0","keywords":["Claude Code"],"author":{"name":"Aotokitsuruya"},"license":"MIT","_id":"@aotoki/ccharness@0.10.0","maintainers":[{"name":"elct9620","email":"elct9620@frost.tw"}],"bin":{"ccharness":"dist/index.js"},"dist":{"shasum":"34ec68d1fa829cda5fc11d809e6f7ffd8f9f14d5","tarball":"https://registry.npmjs.org/@aotoki/ccharness/-/ccharness-0.10.0.tgz","fileCount":4,"integrity":"sha512-0IOVahYtD+42GyjTeAkr6kBQtMXkzKnS6XxSxM6BQPRRfczyUOgo6K1BozVwygn1qc6yF2lEMkud609bKOI6+A==","signatures":[{"sig":"MEUCIAEe0d/1SlvnWUX7o2nKaDf+GGmt6M17rjqLHcUpr8LpAiEAzfW9CKrSZncQOW6XyDV35nssaBSMG4NWB1AeKJvSebs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":616243},"type":"module","_from":"file:aotoki-ccharness-0.10.0.tgz","scripts":{"test":"vitest --run","build":"rolldown -c rolldown.config.ts"},"_npmUser":{"name":"elct9620","email":"elct9620@frost.tw"},"_resolved":"/tmp/4c11b9706ef6ab27c2c7e95cca7b25c1/aotoki-ccharness-0.10.0.tgz","_integrity":"sha512-0IOVahYtD+42GyjTeAkr6kBQtMXkzKnS6XxSxM6BQPRRfczyUOgo6K1BozVwygn1qc6yF2lEMkud609bKOI6+A==","_npmVersion":"10.9.3","description":"A lightweight harness for Claude Code","directories":{},"_nodeVersion":"22.19.0","dependencies":{"tsyringe":"^4.10.0","commander":"^14.0.0","@abraham/reflection":"^0.13.0","console-table-printer":"^2.14.6","@anthropic-ai/claude-code":"^1.0.108"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","prettier":"3.6.2","rolldown":"1.0.0-beta.36","typescript":"^5.9.2","@types/node":"^24.3.0","prettier-plugin-organize-imports":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ccharness_0.10.0_1757940440842_0.058881998359815","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"@aotoki/ccharness","version":"0.10.1","keywords":["Claude Code"],"author":{"name":"Aotokitsuruya"},"license":"MIT","_id":"@aotoki/ccharness@0.10.1","maintainers":[{"name":"elct9620","email":"elct9620@frost.tw"}],"bin":{"ccharness":"dist/index.js"},"dist":{"shasum":"44aad1b9e9a3599acc4afadc546ea488f9f51b17","tarball":"https://registry.npmjs.org/@aotoki/ccharness/-/ccharness-0.10.1.tgz","fileCount":4,"integrity":"sha512-ojaPlf98re50yzSdW4+0njfvePQUooqcdpTtYW+xO5vunaG26bfZqquZ1qhTgd9MDnPSt+lmFc4LO8Nq4UTFow==","signatures":[{"sig":"MEYCIQDzrLKdbBpHNGu/GpWzYNIHslXRjOLE2ZFMih99ODHGQwIhAJ2GYa0dtuFcVGt9RE6UbcjiLsTWOT0jYCND0i+03A1e","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":610339},"type":"module","_from":"file:aotoki-ccharness-0.10.1.tgz","scripts":{"test":"vitest --run","build":"rolldown -c rolldown.config.ts"},"_npmUser":{"name":"elct9620","email":"elct9620@frost.tw"},"_resolved":"/tmp/f1444e2ca4d76321769964555046f571/aotoki-ccharness-0.10.1.tgz","_integrity":"sha512-ojaPlf98re50yzSdW4+0njfvePQUooqcdpTtYW+xO5vunaG26bfZqquZ1qhTgd9MDnPSt+lmFc4LO8Nq4UTFow==","_npmVersion":"10.9.3","description":"A lightweight harness for Claude Code","directories":{},"_nodeVersion":"22.19.0","dependencies":{"tsyringe":"^4.10.0","commander":"^14.0.0","@abraham/reflection":"^0.13.0","@vitest/coverage-v8":"^3.2.4","console-table-printer":"^2.14.6","@anthropic-ai/claude-code":"^1.0.108"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","prettier":"3.6.2","rolldown":"1.0.0-beta.38","typescript":"^5.9.2","@types/node":"^24.3.0","@codecov/rollup-plugin":"^1.9.1","prettier-plugin-organize-imports":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ccharness_0.10.1_1758281705146_0.4827137926234175","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@aotoki/ccharness","version":"0.11.0","keywords":["Claude Code"],"author":{"name":"Aotokitsuruya"},"license":"MIT","_id":"@aotoki/ccharness@0.11.0","maintainers":[{"name":"elct9620","email":"elct9620@frost.tw"}],"bin":{"ccharness":"dist/index.js"},"dist":{"shasum":"118b9559b56b7e5c2da1b4a6dcfaf48bd5be55fc","tarball":"https://registry.npmjs.org/@aotoki/ccharness/-/ccharness-0.11.0.tgz","fileCount":4,"integrity":"sha512-TCbzFImGpzjGB0wB/DmPujzgj6BdXqqvMQqbDQGpfDAAK6eBB+fjHECGc7c5111ZMXzhpp2vd395GdhyrVHxEQ==","signatures":[{"sig":"MEQCIBno3BH2wJenLoBEC2/ZNvdMHiXpMVGboBPGylX2njjzAiA+ZrNuxPEtxnCpNYNZ0u5R8Kjbcz8B4hzTXxGtxcFK0w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":611859},"type":"module","_from":"file:aotoki-ccharness-0.11.0.tgz","scripts":{"test":"vitest --run","build":"rolldown -c rolldown.config.ts"},"_npmUser":{"name":"elct9620","email":"elct9620@frost.tw"},"_resolved":"/tmp/27cfe162f64304d62df968b2bfcba576/aotoki-ccharness-0.11.0.tgz","_integrity":"sha512-TCbzFImGpzjGB0wB/DmPujzgj6BdXqqvMQqbDQGpfDAAK6eBB+fjHECGc7c5111ZMXzhpp2vd395GdhyrVHxEQ==","_npmVersion":"10.9.3","description":"A lightweight harness for Claude Code","directories":{},"_nodeVersion":"22.19.0","dependencies":{"tsyringe":"^4.10.0","commander":"^14.0.0","@abraham/reflection":"^0.13.0","@vitest/coverage-v8":"^3.2.4","console-table-printer":"^2.14.6","@anthropic-ai/claude-code":"^1.0.108"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","prettier":"3.6.2","rolldown":"1.0.0-beta.38","typescript":"^5.9.2","@types/node":"^24.3.0","@codecov/rollup-plugin":"^1.9.1","prettier-plugin-organize-imports":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ccharness_0.11.0_1758461161056_0.17898905213693106","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"@aotoki/ccharness","version":"0.11.1","description":"A lightweight harness for Claude Code","type":"module","bin":{"ccharness":"dist/index.js"},"keywords":["Claude Code"],"author":{"name":"Aotokitsuruya"},"license":"MIT","devDependencies":{"@codecov/rollup-plugin":"^1.9.1","@types/node":"^24.3.0","prettier":"3.6.2","prettier-plugin-organize-imports":"^4.2.0","rolldown":"1.0.0-beta.40","typescript":"^5.9.2","vitest":"^3.2.4"},"dependencies":{"@abraham/reflection":"^0.13.0","@anthropic-ai/claude-agent-sdk":"^0.1.2","@vitest/coverage-v8":"^3.2.4","commander":"^14.0.0","console-table-printer":"^2.14.6","tsyringe":"^4.10.0"},"scripts":{"build":"rolldown -c rolldown.config.ts","test":"vitest --run"},"_id":"@aotoki/ccharness@0.11.1","_integrity":"sha512-JBwJTJYzxBa24Wse3/ex+THa5055rCAVrJfuyx1N36Lw2Bc+/t7UqVGuC8ci7O9GXZssFbIBG3eRgZVfrJDkOA==","_resolved":"/tmp/d56428275fb49b34d4380caf942542f9/aotoki-ccharness-0.11.1.tgz","_from":"file:aotoki-ccharness-0.11.1.tgz","_nodeVersion":"22.19.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-JBwJTJYzxBa24Wse3/ex+THa5055rCAVrJfuyx1N36Lw2Bc+/t7UqVGuC8ci7O9GXZssFbIBG3eRgZVfrJDkOA==","shasum":"e3c16892bf3934da70345aa18b04639e8001716e","tarball":"https://registry.npmjs.org/@aotoki/ccharness/-/ccharness-0.11.1.tgz","fileCount":4,"unpackedSize":615220,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCZSJQCMX+pMPEaz72OZfImLlh0TN4H/8U36R0ISibVUAIgHoPN9rRVkFOReGs7Aik708xIHp+anBoP4y+WHXGsAt0="}]},"_npmUser":{"name":"elct9620","email":"elct9620@frost.tw"},"directories":{},"maintainers":[{"name":"elct9620","email":"elct9620@frost.tw"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ccharness_0.11.1_1759410685361_0.06249736074058587"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-30T12:14:39.602Z","modified":"2025-10-02T13:11:25.776Z","0.1.0":"2025-08-30T12:14:39.906Z","0.1.1":"2025-08-30T12:32:37.624Z","0.1.3":"2025-08-30T12:54:46.370Z","0.1.4":"2025-08-30T13:31:36.674Z","0.2.0":"2025-08-31T09:48:59.301Z","0.3.0":"2025-09-03T15:13:37.077Z","0.4.0":"2025-09-06T07:22:25.982Z","0.5.0":"2025-09-06T08:43:40.404Z","0.6.0":"2025-09-06T09:02:00.570Z","0.7.0":"2025-09-06T11:47:24.141Z","0.8.0":"2025-09-06T17:10:46.750Z","0.10.0":"2025-09-15T12:47:21.008Z","0.10.1":"2025-09-19T11:35:05.382Z","0.11.0":"2025-09-21T13:26:01.234Z","0.11.1":"2025-10-02T13:11:25.570Z"},"author":{"name":"Aotokitsuruya"},"license":"MIT","keywords":["Claude Code"],"description":"A lightweight harness for Claude Code","maintainers":[{"name":"elct9620","email":"elct9620@frost.tw"}],"readme":"# Claude Code Harness\n\n[![codecov](https://codecov.io/gh/elct9620/ccharness/graph/badge.svg?token=C0FMNBUTA9)](https://codecov.io/gh/elct9620/ccharness)\n\nA set of lightweight tools for Claude Code users to improve their experience.\n\n> [!WARNING]\n> The hook is dangerous. Please review the code before using it, or fork and modify it to suit your needs.\n\n## Usage\n\nUse `npx -y @aotoki/ccharness <command>` to run commands without installing globally.\n\n### Hooks\n\nCreate a new hook in Claude Code with specified hook.\n\n```json\n{\n  \"hooks\": {\n    \"Stop\": [\n      {\n        \"matcher\": \"\",\n        \"hooks\": [\n          {\n            \"type\": \"command\",\n            \"command\": \"npx -y @aotoki/ccharness hook guard-commit\"\n          }\n        ]\n      }\n    ]\n  }\n}\n```\n\n## Commands\n\nFollowing commands are available to help your Claude Code workflow.\n\n## Hooks\n\n### Guard Commit\n\nA `Stop` hook to ensure Claude Code make a commit when throttled.\n\n```bash\nnpx -y @aotoki/ccharness hook guard-commit\n```\n\nOptions:\n\n- `-f`, `--max-files <number>`: When exceeding the number of changed files, ask Claude Code to commit. Default is `-1` (disabled).\n- `-l`, `--max-lines <number>`: When exceeding the number of changed lines, ask Claude Code to commit. Default is `-1` (disabled).\n\n### Review Reminder\n\nA `PostToolUse` hook for `Write`, `Edit`, `MultiEdit` tool to remind Claude Code to review with rubric(s).\n\n```bash\nnpx -y @aotoki/ccharness hook review-reminder\n```\n\nOptions:\n\n- `-b`, `--block`: Block execution instead of providing additional context. When enabled, the hook will block Claude Code from proceeding until the review is addressed. Default is `false`.\n\n> Currently, we only add context to remind agent we have rubric document, and use it to review the changes.\n\n### Commit Reminder\n\nA `PostToolUse` hook for `Write`, `Edit`, `MultiEdit` tools to remind Claude Code to commit when too many changes are made.\n\n```bash\nnpx -y @aotoki/ccharness hook commit-reminder\n```\n\nOptions:\n\n- `-f`, `--max-files <number>`: The maximum number of files to trigger a commit reminder, use -1 to disable. Default is `-1` (disabled).\n- `-l`, `--max-lines <number>`: The maximum number of lines changed to trigger a commit reminder, use -1 to disable. Default is `-1` (disabled).\n\n**Hook Configuration:**\n\nAdd this hook to your Claude Code settings:\n\n```json\n{\n  \"hooks\": {\n    \"PostToolUse\": [\n      {\n        \"matcher\": \"Write|Edit|MultiEdit\",\n        \"hooks\": [\n          {\n            \"type\": \"command\",\n            \"command\": \"npx -y @aotoki/ccharness hook commit-reminder\"\n          }\n        ]\n      }\n    ]\n  }\n}\n```\n\nThis hook monitors file changes after write operations and provides reminders to commit when the number of changed files or lines exceeds configured thresholds, helping maintain good commit hygiene.\n\n### Audit Read\n\nA `PreToolUse` hook for the `Read` tool to restrict Claude Code's access to sensitive files.\n\n```bash\nnpx -y @aotoki/ccharness hook audit-read\n```\n\nThis hook prevents Claude Code from reading files that match configured sensitive patterns. When a restricted file is accessed, the hook denies permission and explains the reason.\n\n**Hook Configuration:**\n\nAdd this hook to your Claude Code settings:\n\n```json\n{\n  \"hooks\": {\n    \"PreToolUse\": [\n      {\n        \"matcher\": \"Read\",\n        \"hooks\": [\n          {\n            \"type\": \"command\",\n            \"command\": \"npx -y @aotoki/ccharness hook audit-read\"\n          }\n        ]\n      }\n    ]\n  }\n}\n```\n\n## Review (Experimental)\n\nReview a file against configured rubrics to get evaluation scores and feedback.\n\n```bash\nnpx -y @aotoki/ccharness review <path> [options]\n```\n\nArguments:\n\n- `<path>`: Path to the file to review against configured rubrics\n\nOptions:\n\n- `--max-retry <number>`: Maximum number of retry attempts if the review encounters errors. Default is `3`.\n\nExample:\n\n```bash\n# Review with custom retry limit\nnpx -y @aotoki/ccharness review src/main.ts --max-retry 5\n```\n\nThis command matches the file against rubric patterns defined in `ccharness.json` and provides evaluation results with scores and comments. If the review fails due to temporary errors, it will automatically retry up to the specified number of times.\n\n> [!NOTE]\n> Currently, the prompt for Claude Code cannot ensure output format. It may not work as expected after multiple retries.\n\n## Configuration\n\nCCharness supports configuration through JSON files in your project root:\n\n### Configuration Files\n\n- **`ccharness.json`**: Project-wide configuration that should be committed to version control\n- **`ccharness.local.json`**: Local overrides for personal preferences (ignored by git)\n\nWhen both files exist, `ccharness.local.json` settings will override `ccharness.json` settings.\n\n### Configuration Schema\n\n```json\n{\n  \"commit\": {\n    \"maxFiles\": 10,\n    \"maxLines\": 500,\n    \"reminder\": {\n      \"maxFiles\": 5,\n      \"maxLines\": 50,\n      \"message\": \"You have changed {changedFiles} files and {changedLines} lines without committing. Consider making a commit to save your progress.\"\n    }\n  },\n  \"review\": {\n    \"blockMode\": false\n  },\n  \"audit\": {\n    \"read\": [\n      \"path/to/sensitive/file.txt\",\n      \"logs/*.log\"\n    ]\n  },\n  \"rubrics\": [\n    {\n      \"name\": \"vitest\",\n      \"pattern\": \"test/.*\\\\.test\\\\.ts$\",\n      \"path\": \"docs/rubrics/vitest.md\"\n    }\n  ]\n}\n```\n\n### Configuration Precedence\n\nSettings are resolved in the following order (highest to lowest priority):\n\n1. Command-line options (e.g., `--max-files`, `--max-lines`)\n2. `ccharness.local.json` (local overrides)\n3. `ccharness.json` (project defaults)\n4. Built-in defaults\n","readmeFilename":"README.md"}