{"_id":"oh-my-harness","_rev":"37-39ba79ad466b5c29228e02caf6fb07b8","name":"oh-my-harness","dist-tags":{"latest":"0.25.0"},"versions":{"0.1.0":{"name":"oh-my-harness","version":"0.1.0","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.1.0","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"87d8618b61d688c010af828bcaa5868b321451a1","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.1.0.tgz","fileCount":55,"integrity":"sha512-w9HkDFkjwIKQyW8ujv0c4KJr4nZ6hWWP3BfVTs3vo7YMdwVVTlwakylTUywymekCHxa5RfI7yXB3+tt89wOV3Q==","signatures":[{"sig":"MEYCIQD6J7gRQ3YSfEinErDTnp/Ycx2NFl6+QAejtqMBiRA90wIhAPZ5kMJGVurDhSoS0AtvA40AwBEsCDi00mTkoxzSCIuy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":119387},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"7e448f698d5c379efe613dd8692d4064f544d03c","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.1","dependencies":{"zod":"^3.24.0","chalk":"^5.6.2","js-yaml":"^4.1.0","commander":"^13.1.0","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.1.0_1773643257569_0.19565069840113547","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"oh-my-harness","version":"0.1.1","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.1.1","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"553414bd822f5c40752a4aa8ce4a03a67ed9c390","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.1.1.tgz","fileCount":55,"integrity":"sha512-jsoeFlAxwWRaEcqZq9XKW7+uDby5gXftKHzexr0CNTn9qBarfg/m10sM61qvyfK7P61E1vG2ZcEsufTw9Kto+A==","signatures":[{"sig":"MEYCIQDE1aPwFYGq6FvQBfZvvYPcAstkh3iSIxYbezRmZo/BkgIhANBNRdPHBAEUKNlH1dI+3sRDkpGh4Go0z2MELiIfodn7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":119564},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"db9a5e7b98519310d59769ab58bd670102399761","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.1","dependencies":{"zod":"^3.24.0","chalk":"^5.6.2","js-yaml":"^4.1.0","commander":"^13.1.0","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.1.1_1773654214663_0.7805517615943853","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"oh-my-harness","version":"0.2.0","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.2.0","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"84fccf8cf149dda316798335795bf8108782352b","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.2.0.tgz","fileCount":93,"integrity":"sha512-m3pRLsn2zYtQBzW6ABn1zSaoCAMRNr9nEiuvVHj59wR7luqodLKB6qfCI3fCqYVMIsdqP/O2dI44VAZtfqHk2Q==","signatures":[{"sig":"MEYCIQDBEcHL8aqR3pa4KdggU8Jmw+jZ0rPAK1S6VN5nl0EF8wIhAMU1sFx9Gh+CoxF0cFDz5abP2mQPY1L7dSy2b4JbIMAq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":163764},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"7a7d0500043b44e790a31aa02151e3ef7af84c4b","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.24.0","chalk":"^5.6.2","js-yaml":"^4.1.0","commander":"^13.1.0","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.2.0_1773665914786_0.6964552429900595","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"oh-my-harness","version":"0.2.1","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.2.1","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"0aaab2c1d36ef9f7f3a57a20ab57f9e00c713bf9","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.2.1.tgz","fileCount":93,"integrity":"sha512-h4gGE/zRXYT1syQDvOKpuIb+nvFHEgi0VrylYWIUmFg76hkb7ageWKSx2CEH+GTzpI+MUuZ8yrapGNLexFf2Ew==","signatures":[{"sig":"MEUCIGYFz2DIDBrVMoek3JA75zOmRm2rGShgNZT2l3SDFJGKAiEAkf3L0RMoGU71IJgWfjPVTl47+YkK7WQjZor1peksFCg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":163876},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"8920ae1e6187790d340f17b2dc70d7736cccd2cf","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.24.0","chalk":"^5.6.2","js-yaml":"^4.1.0","commander":"^13.1.0","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.2.1_1773666784532_0.5793189235964342","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"oh-my-harness","version":"0.3.0","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.3.0","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"61a2b2d1ef67e548345464eecfdc24b5400b62b0","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.3.0.tgz","fileCount":127,"integrity":"sha512-xcTUB8qRzx9jiPZMha5YYHjkFlNwAohN8CJOP0Pv+KsxMaXW7rTEqefSHGKeHv8u5Hct/PpgfFOnPE0n15kqEg==","signatures":[{"sig":"MEQCICdVGneGvMjVkgvfxhOO9SEDq2kvH8p8MzM1dT2vbDUTAiBd74ktGmYtS7oBEZ34s41OnVlpWgfihKZIa7LzHXr1hA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":201551},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"a533b92021911e16a59c2d65f2606d241805993c","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.1","dependencies":{"zod":"^3.24.0","chalk":"^5.6.2","js-yaml":"^4.1.0","commander":"^13.1.0","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.3.0_1773707167108_0.07843039939085816","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"oh-my-harness","version":"0.3.1","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.3.1","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"9937ccd702c481a2fbcc7f5d5b7c4c860deb5f74","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.3.1.tgz","fileCount":127,"integrity":"sha512-luPOYNO3NSZjETrH/gBYloOan5iYhy9RNtHMMyANFYIRNBpvQ5keZY3hdfZw0XaT1n0GGKaKiRBX5E+km3Hc4w==","signatures":[{"sig":"MEUCIHfVFHVlN8GoMsvTl2mc6CszaX3r1BUZmx8Nd4gMeVS9AiEA5E4Q3jOFgR4FvwzlgxHmC9YcjATFaBQ9gOdaRUA/3e4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":201551},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"be39e04ed835f267fa29cc4c216033b5b9824b6f","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.1","dependencies":{"zod":"^3.24.0","chalk":"^5.6.2","js-yaml":"^4.1.0","commander":"^13.1.0","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.3.1_1773716063564_0.38803425164467464","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"oh-my-harness","version":"0.3.2","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.3.2","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"d6db816165756d85339353c4ff8825b378cdfcd1","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.3.2.tgz","fileCount":127,"integrity":"sha512-1dDoDUvz4Lio8mLSAYl+EvZTpkKIk2cQ+RokTC7QvE2cGAEzEaY7jmAOin+rMkCQ79ug8cz7JcOlNDP+f4kc1A==","signatures":[{"sig":"MEQCIEHCXOIj3mqObb2X0eiw3h3bLQWhwWa+sf0Mjt3nf9XBAiABX8gXCqVEPKE1dMzQqF0Fj6xkF2kmIVWvDn20IrcTIg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":201691},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"ea862b49085db33dcd00be4a6c0be8cbd48cee57","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.1","dependencies":{"zod":"^3.24.0","chalk":"^5.6.2","js-yaml":"^4.1.0","commander":"^13.1.0","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.3.2_1773722517258_0.8644831733426217","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"oh-my-harness","version":"0.4.0","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.4.0","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"b24c17147b4af3a099aebf1725ff709f00b6cb27","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.4.0.tgz","fileCount":131,"integrity":"sha512-/ltgbUhZ4Sr8Ea1HeH20cjPaAeL/PE3z781ijNyRpCaKpp3DgAet22VkHP2n6s1tB7z57IC7D3XxgVVl7tgy8g==","signatures":[{"sig":"MEYCIQCTON0mIWUgHSQJ3bcyc44WJt/MINTCoofI3Jc46Ko0+gIhAO/CUp+iYPWXvW1nZEV6p59bxiAUtHZehYtNpAgwwg8L","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":208591},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"97b448c1bb8205caacdd5bba9098d0335796d9f1","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.1","dependencies":{"zod":"^3.24.0","chalk":"^5.6.2","js-yaml":"^4.1.0","commander":"^13.1.0","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.4.0_1773748926215_0.4576094013795782","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"oh-my-harness","version":"0.4.1","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.4.1","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"a91669e1200020a84626bf7ce1d37fab5f8897c1","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.4.1.tgz","fileCount":131,"integrity":"sha512-km9j8iECDCKBfmFnvGg7eKP0MHfIfijD1czOeXd0YwwHRpSLvZRaPCzXWOKygko9+fqvlP+AQdZECeiXgcYGRg==","signatures":[{"sig":"MEYCIQCyD7tLwfBVKmAEoYyo1HLyW/cxsRp18CBFw5Ard5oizAIhALFjWS/v7ZQM87VTVzDMP6IwUhW6pOjWYRK80ULSfJ52","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":211210},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"6f976a7354cfec1b9cb478c44afac2e4174ab6c0","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.1","dependencies":{"zod":"^3.24.0","chalk":"^5.6.2","js-yaml":"^4.1.0","commander":"^13.1.0","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.4.1_1773753891763_0.34474158261453924","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"oh-my-harness","version":"0.4.2","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.4.2","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"d293278104e3271c4fba30ef65cfa411e17e4384","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.4.2.tgz","fileCount":131,"integrity":"sha512-rW+tOyoN+klJoGndnR0g+yUZJp2Owr0tzzS/k0sYQYv13ecm3tlbyg3sFg/2kAnMjNdtCRd9AHVxBItSMevCvQ==","signatures":[{"sig":"MEUCIBCXrIN2pirvgNcZftsROrxLmKIAiwRSbvFAKglCFKNcAiEAncKlfbKICJa9zBBk1oWKS5nY1CCM7ivmzQtu7MgpBD4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":211922},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"6fa29ad583df84704b76365887da02ea1e7b1297","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.1","dependencies":{"zod":"^3.24.0","chalk":"^5.6.2","js-yaml":"^4.1.0","commander":"^13.1.0","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.4.2_1773788314462_0.8664200063969836","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"oh-my-harness","version":"0.5.0","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.5.0","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"d9c79b949bc206a65f345a801cd4e73623228f95","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.5.0.tgz","fileCount":153,"integrity":"sha512-QA+b9gZLP5T7Yro5+XFdujMTJteYfIJFMt73haqnGpM4K6eYD5SBaP+cVdReEqMjuL9iiGnTr3o/M/LCJkO+bw==","signatures":[{"sig":"MEUCIFhaXwcbHraNcyYTlWuskujCnjB7RDLX+ttPGishV6dFAiEA/maTIm0tH9H/IP0fK1OXqPLgVXJvOnoJ/o6j7UZOE/8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":261043},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"3629dac7b24cf1019398a07c6731e803fc36e788","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ink":"^6.8.0","zod":"^3.24.0","chalk":"^5.6.2","react":"^19.2.4","js-yaml":"^4.1.0","commander":"^13.1.0","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","ink-testing-library":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.5.0_1773811432331_0.0006569693111668773","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"oh-my-harness","version":"0.6.0","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.6.0","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"62861e3d5b8b1d6aaf043e4ef5d1a64720807224","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.6.0.tgz","fileCount":153,"integrity":"sha512-0r9bFJ6TqZqtQlu1lbLXdpign9QzMJ927ew1ntjOEEQ5KzL/mGDz2MzjvnDVZoiMjzjzR9Y6qmgwCorLQS2urw==","signatures":[{"sig":"MEUCIFFNFeDvSmfZhLH7c0zN/j+madeVqG4SJMjhMTzKAq8RAiEAvOyMRPUIbzAxCoXE5/DYLRKXNlYW6Ck3MfReFjVzmJw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":256654},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"001ce339e4dc066370d53fd698f0237916b4fa00","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ink":"^6.8.0","zod":"^3.24.0","chalk":"^5.6.2","react":"^19.2.4","js-yaml":"^4.1.0","commander":"^13.1.0","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","ink-testing-library":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.6.0_1773840053795_0.2919630553397481","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"oh-my-harness","version":"0.6.1","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.6.1","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"b25266b50e7ca9e7052eff7753814d412d5142c7","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.6.1.tgz","fileCount":153,"integrity":"sha512-B40H9c98k85a/V1x/KB7O04HaQ2/0/QsZNB8J1YJ+YXNYSWEtzphBzOhn+RyKif9e2QcZEsxuehHMK49EM0X2g==","signatures":[{"sig":"MEUCIQDzs5Nh5DHuPhiEkVIeBmjXZXLraDL2nnkinRz3RiMF0gIge07GoIAYlmM4bM0o/g75yDPV+GPxJgCRWgzZ3LAUOd0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":261448},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"46055d1b0fc04c8ec34184868543a9b7632650ed","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ink":"^6.8.0","zod":"^3.24.0","chalk":"^5.6.2","react":"^19.2.4","js-yaml":"^4.1.0","commander":"^13.1.0","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","ink-testing-library":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.6.1_1773903616909_0.42665159434872724","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"oh-my-harness","version":"0.7.0","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.7.0","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"6a5247515bbd102454597040fefed2081c5565dc","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.7.0.tgz","fileCount":189,"integrity":"sha512-0dDG+jLBuWA3252xIiV4+jQEjck8xLQ3nBb0amha1UeBWwqFT5M8OE71j74/JQILIKychH0TVqh67C727++psA==","signatures":[{"sig":"MEUCIHkB+gQSFlnFv0z+W7fIjpPFDe+6BpCge5TiiV48kstoAiEAgWcaX0mzN8mNQAGf5CMl34FLyXE1Fv7RQchZEBJjVxk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":321816},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"1f0573f9c48c8409c9b726ff0bda0b3e58d3d729","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ink":"^6.8.0","zod":"^3.24.0","chalk":"^5.6.2","react":"^19.2.4","js-yaml":"^4.1.0","commander":"^13.1.0","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","ink-testing-library":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.7.0_1774057855629_0.8597864019890809","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"oh-my-harness","version":"0.8.0","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.8.0","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"b9d83edbb5823552301c23003c5bebdb777d0313","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.8.0.tgz","fileCount":204,"integrity":"sha512-vokRiIMKEbVotycCFVTpA0on/NzgfEftpOzBDvmHrxmTX4IE/1DatPtgB4Q77STWqC85G2Fd5Pa6Whlxe+O9xA==","signatures":[{"sig":"MEUCIGWjFIXAxtyTG6606R+8bnraJKwZBx1OAGSd3tzqOAb9AiEA1BmVUgWb8M2IC+hxgilOBMNcRbqm9zNfeGpHGAFjQbk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":352901},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"9270d74c9a447d56c52752cb40268225cc555120","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ink":"^6.8.0","zod":"^3.24.0","chalk":"^5.6.2","react":"^19.2.4","js-yaml":"^4.1.0","commander":"^13.1.0","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","ink-testing-library":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.8.0_1774684070548_0.7865260270760612","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"oh-my-harness","version":"0.9.0","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.9.0","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"19f8ed77aa07237fe2c8d80c7158b7907cb751d5","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.9.0.tgz","fileCount":218,"integrity":"sha512-d/0p10foJWdjsSSFjEQkfW/vfwoWJiQ8jrl2egWHqN7N6LRHzH8aMoBM+Sc2cOOTaN9MTZrvlcn1JLcnkQrxdw==","signatures":[{"sig":"MEYCIQDqoEzewc/gz3+mjjVOHS+GSiGS4thHwTQ3foTA1/PWYwIhAJ78UE3rZ7hINPfw1kP2l88lTtKL1tmcnxHR+8/Q4CBe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":369723},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"7af81617f7025235ec701f2c2f617a613195e4e6","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ink":"^6.8.0","zod":"^3.24.0","chalk":"^5.6.2","react":"^19.2.4","js-yaml":"^4.1.0","commander":"^13.1.0","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","ink-testing-library":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.9.0_1775470900283_0.11412613443274688","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"oh-my-harness","version":"0.10.0","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.10.0","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"a6cb49591f6f318aca7e7e157c81d9ae59cc0df1","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.10.0.tgz","fileCount":220,"integrity":"sha512-NSOpEGa576CKbS4aHSo2F9kDnE8WAGdmNWleDTvdAF9akFZvytEjuE2nH3mrQYQgRznuTuEUZWgZFqLpQWAx2w==","signatures":[{"sig":"MEUCIBQmsDN3aJWf8jT/A+hiW3g6aFwonMcu6FhQ7qejWCGMAiEAsYtDEuIerDHDou/oBv6tgtt+XfwunVJTg5oplcVluiA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":384619},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"0a27029981008f6f5ef2eccf00fdd272ebe41cbf","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ink":"^6.8.0","zod":"^3.24.0","chalk":"^5.6.2","react":"^19.2.4","js-yaml":"^4.1.0","commander":"^13.1.0","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","ink-testing-library":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.10.0_1775904047999_0.8902362646891955","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"oh-my-harness","version":"0.10.1","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.10.1","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"b85872e7f41a6d4fc2915c36c265b0d505ad0af1","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.10.1.tgz","fileCount":220,"integrity":"sha512-zV3Yen9/kkeNdiqoriJ9wqeONjEWkep7FiH79V6jUy+h8MvZ4lnx0YiBS22jYzHhhhmgXkijRsLqw1ohpx+pOQ==","signatures":[{"sig":"MEQCIC+UBuDLCnJpNRBRDpuHr96oG86xXNOyAl9WfMc8VUd1AiAJT/keCt+E9JEaP87LJ4298B+4ryjRUJ6SMfPZHAzpTg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.10.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":384846},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"9adb28d7c8634a1f66034668aa2c27544b64ded1","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ink":"^6.8.0","zod":"^3.24.0","chalk":"^5.6.2","react":"^19.2.4","js-yaml":"^4.1.0","commander":"^13.1.0","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","ink-testing-library":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.10.1_1776159305529_0.5018405263675194","host":"s3://npm-registry-packages-npm-production"}},"0.10.2":{"name":"oh-my-harness","version":"0.10.2","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.10.2","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"f0562727581bf2fde0debed03279145b2a9c207a","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.10.2.tgz","fileCount":220,"integrity":"sha512-nJg1YGI8lDK0v6yaAm2kED4czEsjxCX0JC5rR63JXK27aA4PHZGxIWskYeWHnLjzRTLCumSMITyzzxc5avM2GQ==","signatures":[{"sig":"MEYCIQD1/2MdSg5aSRpInUJDBL8LN8jUeQp30APu+kKxrCNtbQIhAJAWRw6AXJ5NNv6gHiflHIxIlhYVyEauHxK2pZ8Ve+ZM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.10.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":385121},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"2fbd581d48ad35a5236bea185608c188a3ad7e9b","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ink":"^6.8.0","zod":"^3.24.0","chalk":"^5.6.2","react":"^19.2.4","js-yaml":"^4.1.0","commander":"^13.1.0","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","ink-testing-library":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.10.2_1776221957496_0.18045837409502785","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"oh-my-harness","version":"0.11.0","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.11.0","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"e0cabe4d842e8e1f03bcb94667b92c6da10649b6","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.11.0.tgz","fileCount":241,"integrity":"sha512-/qQQPv3dZStlaDYKUpyvRrc5LdGSChyH4bI6Nj38i1RHyloCd20l8WjidLrk1x238KH7QdhuyLdhDQyLgrdQKA==","signatures":[{"sig":"MEYCIQD5ZQoREZltiTtk1cpYjqoHYKnQRtczxGswxxw7hv1LJwIhAIySFyaG8QlnVP290Cirs8mO85JZGlUPzpx7TufLQCab","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":419280},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"bd6405c498ffb703b7a1b44dc5131949164279d0","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ink":"^6.8.0","zod":"^3.24.0","chalk":"^5.6.2","react":"^19.2.4","js-yaml":"^4.1.0","commander":"^13.1.0","smol-toml":"^1.6.1","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","update-notifier":"^7.3.1","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","ink-testing-library":"^4.0.0","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.11.0_1777538447292_0.10994137462215714","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"oh-my-harness","version":"0.12.0","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.12.0","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"d42d40782938f3b2be2445560af0f0929391935b","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.12.0.tgz","fileCount":189,"integrity":"sha512-Io7oKWjjvl8WkHC/ob+DMFwLmHBl3hSgH+Yex2yJnbFGC97mhc3JMD/PoSpkCEY1sqnnACaTk1wg1tCRH6n2Qg==","signatures":[{"sig":"MEUCIQCAme0qSibnVjQoagWEZMHNq2bvMumh2O0JIPKJ1B25cAIgFmBgOsqhKRygARILsAhWLMTsykojxw50NKdXb6rTg8I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":300272},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"db551a93493e33612a982e7ccceed41f14991d28","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ink":"^6.8.0","zod":"^3.24.0","chalk":"^5.6.2","react":"^19.2.4","js-yaml":"^4.1.0","commander":"^13.1.0","smol-toml":"^1.6.1","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","update-notifier":"^7.3.1","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","ink-testing-library":"^4.0.0","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.12.0_1780133691790_0.7592374890593747","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"oh-my-harness","version":"0.13.0","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.13.0","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"80234ed5aed148d790ac4fdf421cc5856a728fc3","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.13.0.tgz","fileCount":189,"integrity":"sha512-k5OFKpNgIJBNfFsPfaCp0CVqfo3Pl+9M9t8CoaOV+gP52EOmjUnhoVFqE1Wh9Q22Le3kdKtUM0UH5qPOXHpHDg==","signatures":[{"sig":"MEQCICObxCLynDhHHXfqE0PMffr7X4xGeRaCZWjFOhVSkAQsAiAiZVv+7Jx7CIyXqiNFTT1SuJ35reKYYqjZ0rJzejhGdw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":303916},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"0c1808baa69914fac30c53b6413abbe23906f9de","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ink":"^6.8.0","zod":"^3.24.0","chalk":"^5.6.2","react":"^19.2.4","js-yaml":"^4.1.0","commander":"^13.1.0","smol-toml":"^1.6.1","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","update-notifier":"^7.3.1","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","ink-testing-library":"^4.0.0","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.13.0_1780217737642_0.2986394337540359","host":"s3://npm-registry-packages-npm-production"}},"0.13.1":{"name":"oh-my-harness","version":"0.13.1","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.13.1","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"2549c1a8e2f3246503f3cb27b54ee34ca3aca200","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.13.1.tgz","fileCount":189,"integrity":"sha512-/ukpOqjPdNNSJ2tSFCEMpVYbtw5aM7kVwIc/YU4FPB/scM/rkQzQDSMy3O4J0uYqlRI2EB1bZu93JsQ/Q6354g==","signatures":[{"sig":"MEUCIQCKtwFsamgsyZPE4W5cEXf9vwQqOI/79D3Hlsubwt8GNQIgGzjUa4OcUhB+XtRPlIz3cHr+LgoxzOu7UnGPQAbFWCU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.13.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":303876},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"3c8ac4c481bb7fe3a82580fd2083c7bc30f6f4f3","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ink":"^6.8.0","zod":"^3.24.0","chalk":"^5.6.2","react":"^19.2.4","js-yaml":"^4.1.0","commander":"^13.1.0","smol-toml":"^1.6.1","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","update-notifier":"^7.3.1","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","ink-testing-library":"^4.0.0","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.13.1_1780218235358_0.4818884880664902","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"oh-my-harness","version":"0.14.0","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.14.0","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"495b8a8508a9846eb958910e4dd820f9d8376ccb","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.14.0.tgz","fileCount":191,"integrity":"sha512-1LaJJ+SQCTHhuC2F1/CZE3SQM7Srw1kcCjY6B9+KIEIx4FBurvVe+1/CCN0B86/xb3/cNngL8Uf1TYLc3y+dLA==","signatures":[{"sig":"MEUCIF7fbuWDOcXoR3i6jGvTTN6iOeGPHQsFxxxsCOZJ5IApAiEAjaV8wmn9xr2CDTJmuxlUqnQHD55Ddmpl8EchgrAzcns=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":313912},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"c87df2ed034fd5cb60faf2246125948dba9d63d0","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ink":"^6.8.0","zod":"^3.24.0","chalk":"^5.6.2","react":"^19.2.4","js-yaml":"^4.1.0","commander":"^13.1.0","smol-toml":"^1.6.1","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","update-notifier":"^7.3.1","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","ink-testing-library":"^4.0.0","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.14.0_1780276345298_0.9508038685717435","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"oh-my-harness","version":"0.15.0","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.15.0","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"60ea8f8776f81c09b0f1ff62e6a79209288124e8","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.15.0.tgz","fileCount":199,"integrity":"sha512-MmOaoc1EHPQ1nHtRaHUe12faeVDC9zkjIEOWXBj/wWBDYlq2o3jkY9mQvB5g8Qd30QcTlN2kNF+sX3Ljq2zrgQ==","signatures":[{"sig":"MEUCIQCJPLJJdjSKV5ryxNKE818izIBVbNTxsNtC2sViZghBmQIgEsnz5BXDGg56Fkk/oDPjdlBiv2NZ/jCEb9PNyyBrkg0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":335852},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"9f7c3501b6773554462c78624a0b8906aa3c9541","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ink":"^6.8.0","zod":"^3.24.0","chalk":"^5.6.2","react":"^19.2.4","js-yaml":"^4.1.0","commander":"^13.1.0","smol-toml":"^1.6.1","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","update-notifier":"^7.3.1","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","ink-testing-library":"^4.0.0","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.15.0_1780461860039_0.5355165234746457","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"oh-my-harness","version":"0.16.0","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.16.0","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"729edfe6117ee167a5d0fe526e340eda4d148f1d","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.16.0.tgz","fileCount":205,"integrity":"sha512-AzABtanifBuB0TI7oBEPaTEmutmRmD6DshdUwncLgMhXdFBnojgk8/6R98wdE1ftP4hqTrTndSGX2nzo/Yv7JA==","signatures":[{"sig":"MEUCIE+5G99J6wQoqCwsyUiCo7QQM2ErSakMpRzhY8YqSXldAiEAo30EOyR5hAOKSPBaOl0I4nSQ8CDawL/P3VcCFOXEeCc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":363179},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"a303ec07805b56de64bfd3a785fcb59a72725675","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ink":"^6.8.0","zod":"^3.24.0","chalk":"^5.6.2","react":"^19.2.4","js-yaml":"^4.1.0","commander":"^13.1.0","smol-toml":"^1.6.1","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","update-notifier":"^7.3.1","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","ink-testing-library":"^4.0.0","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.16.0_1780562352720_0.9467796910288422","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"oh-my-harness","version":"0.17.0","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.17.0","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"49cdb1f0f594e6aa05cce97d4255a238b4f8cb0a","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.17.0.tgz","fileCount":207,"integrity":"sha512-jl3ihNiEbtAuuetDGEFJaLtyJo5sGpTaz7U1MwDJte9heWbrGn3keUXlKiMQh/VNPotHinz/hnxskcDGszieUg==","signatures":[{"sig":"MEUCIQDdHtjGqE0tJx74JZrfxnyg2QKNqJt874sOGVFZHRee4QIgZ+3mdFRYBdw/ffas7HiNO4gewElVC2YyIi0WMl+m58A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":370543},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"92ff553b80fdd1e836ec2cf5fbe8ddd2bb7fd44e","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ink":"^6.8.0","zod":"^3.24.0","chalk":"^5.6.2","react":"^19.2.4","js-yaml":"^4.1.0","commander":"^13.1.0","smol-toml":"^1.6.1","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","update-notifier":"^7.3.1","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","ink-testing-library":"^4.0.0","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.17.0_1780640171414_0.9050137474460591","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"oh-my-harness","version":"0.18.0","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.18.0","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"dbe5daed61fbabebe09c294077fd0b0b63c0d764","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.18.0.tgz","fileCount":211,"integrity":"sha512-MYQRz8uYxgMX8KKv5g7dd4u4yH4skjibk7yWfjF/dkiw4LoziBRIVNclQxHFvJ26am93wFbb8s3N2lc7j9tqOA==","signatures":[{"sig":"MEUCIB3s42tNQNQ8QwxCTLRl0AnKRlJ7U1vZcJ9MuIR0VNPEAiEA6IWmq0UetUcKOAZO6vPRVcGjOL8H6MZx1CuHKqdQxzA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":398231},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"f85b35061f62381ce3ff4cfbfadace4ae88ad623","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ink":"^6.8.0","zod":"^3.24.0","chalk":"^5.6.2","react":"^19.2.4","js-yaml":"^4.1.0","commander":"^13.1.0","smol-toml":"^1.6.1","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","update-notifier":"^7.3.1","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","ink-testing-library":"^4.0.0","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.18.0_1780882744102_0.47295386901911796","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"oh-my-harness","version":"0.19.0","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.19.0","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"738735e196e3df47c916bb9fa85d01ea35198b9b","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.19.0.tgz","fileCount":233,"integrity":"sha512-2u1eHFmtxBhnwaJxFN6dvLOSu/+Cargc5vg+iggkZWKTPZVrKiuILi0v3zNNUk99zvNFije+scyVsx7GPPSKhA==","signatures":[{"sig":"MEUCIG+Scc2f4umfwIKz67Y+aoBtC070dt/SGFRZKRmo0lBuAiEAr8ubziXZzgTCGKOkC4oIFL6OJgpNnB4iPP2q775ZF9c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":492074},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"f3115058b31f98c28760a5903be8398397c6e36e","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"pb1123love","email":"pb1123love@gmail.com"},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"10.8.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ink":"^6.8.0","zod":"^3.24.0","chalk":"^5.6.2","react":"^19.2.4","js-yaml":"^4.1.0","commander":"^13.1.0","smol-toml":"^1.6.1","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","update-notifier":"^7.3.1","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","ink-testing-library":"^4.0.0","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.19.0_1787821566653_0.5929525095141477","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"oh-my-harness","version":"0.20.0","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.20.0","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"2b41df70fe9f053f79f0fe5cf1ef2a3e2fc97780","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.20.0.tgz","fileCount":239,"integrity":"sha512-C0ogmQJj2+YZ6xgOjzaAS3dIK/Mto5emeJ+mFQPaJwI35oiznoJZOFTAHWVEZXdsKiba7DbvjHsbGwwprD4lFA==","signatures":[{"sig":"MEYCIQCjmcEaHKi82rdq/SbU7hYDKhNMCCCVozM13RNRCS8ndgIhALsUPQW2XDKR3qptEYHcSL5CL8RXHDDZBAcycH3f0tJi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":489996},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"fc8f639c0be9e4f72947a5c688008d0bb7fc18d9","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36f42609-267a-44fa-b959-ad58f4510d4e"}},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"12.0.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ink":"^6.8.0","zod":"^3.24.0","chalk":"^5.6.2","react":"^19.2.4","js-yaml":"^4.1.0","commander":"^13.1.0","smol-toml":"^1.6.1","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","update-notifier":"^7.3.1","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","ink-testing-library":"^4.0.0","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.20.0_1788532366442_0.4709477161812401","host":"s3://npm-registry-packages-npm-production"}},"0.20.1":{"name":"oh-my-harness","version":"0.20.1","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli","codex","openai-codex","agents-md","cursorrules","ai-coding-agent","guardrails","tdd-guard","pretooluse","coding-agent","claude-md","cli-tool"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.20.1","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"a344317744e320ca5298487cd9bd1a62df98b02f","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.20.1.tgz","fileCount":239,"integrity":"sha512-Ul9yrI6Y0DV3wQb12t9xTMNQEhwZLDH7GlqfzSnB3uoO/UYmdGrwp66JD7fnSqtKx0F7zzfnmLFL5ZK2W8PkTQ==","signatures":[{"sig":"MEYCIQCUE7PLlmGPM7lem0Zc+CSgxOBQIFPH+ZAUdkGrNAPfMQIhAPf2AdLoKiqtfcsLiC/iYOh2twLNWsfAFKJpFfQxoDZ2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.20.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":490947},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"28a5153f90730ca7684619657560742f402f4adb","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36f42609-267a-44fa-b959-ad58f4510d4e"}},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"12.0.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ink":"^6.8.0","zod":"^3.24.0","chalk":"^5.6.2","react":"^19.2.4","js-yaml":"^4.1.0","commander":"^13.1.0","smol-toml":"^1.6.1","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","update-notifier":"^7.3.1","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","ink-testing-library":"^4.0.0","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.20.1_1788535075053_0.18473748096145948","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"oh-my-harness","version":"0.21.0","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli","codex","openai-codex","agents-md","cursorrules","ai-coding-agent","guardrails","tdd-guard","pretooluse","coding-agent","claude-md","cli-tool"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.21.0","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"c94a17c84e2b1caf31e2c37e281f582f9266114b","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.21.0.tgz","fileCount":245,"integrity":"sha512-Vpb+0saUTwBEhKBgtw+s69m4bXd3QmZIOO2gNaepNGg+UbanKcZjmPOU38LFaARd7kwNuvSVr2P1FfRdRPPhng==","signatures":[{"sig":"MEQCIBJUThELjaITmRZSkc00y2il9zSPy/WNksOOEX/DXE/bAiA2cW/aQvDCRVLRSrMMTcQLOX0WqGVPsTxNPjmHt98paA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCiquGVD5M7btbQWCN0xix3YpJ2Q8kxzqK7hU52Yj7fRwIgAoGQP2zGMLcSRmD52/qhh13x01i85abwuFMBRM6QP7k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.21.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":517301},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"85780701fc75303a4b0ea8ddd957f90d799c4567","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36f42609-267a-44fa-b959-ad58f4510d4e"}},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"12.0.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ink":"^6.8.0","zod":"^3.24.0","chalk":"^5.6.2","react":"^19.2.4","js-yaml":"^4.1.0","commander":"^13.1.0","smol-toml":"^1.6.1","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","update-notifier":"^7.3.1","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","ink-testing-library":"^4.0.0","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.21.0_1789614904975_0.483904335247509","host":"s3://npm-registry-packages-npm-production"}},"0.21.1":{"name":"oh-my-harness","version":"0.21.1","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli","codex","openai-codex","agents-md","cursorrules","ai-coding-agent","guardrails","tdd-guard","pretooluse","coding-agent","claude-md","cli-tool"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.21.1","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"97fdb3d9a92bf0decefb2fb55e075cb3ce8990c7","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.21.1.tgz","fileCount":245,"integrity":"sha512-xpr5XRUiQ6WJwKaLflZp/UmUgwmYICb8M9MkDGrSbGwS4ENG7OPqluUxF8RaSJ0Mf8sI2vxe1EgVr+w/12cmtQ==","signatures":[{"sig":"MEQCH2LnFPxxkHoA8pX98NUGHmH3nPJuJJsSX5wtBm3rDYECIQDqMQohE3ismP8QfDYgjiXx4Ai6RevaagFnUc+h/tlqCA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIF48G/u1Cesz1thLlxFkG+TuCGdnAhkgJdibM/fMSNMhAiAi0fUKWmgjTVwqV3ZZuaEWeiDiJkzaK06DEG0t1a2eKw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.21.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":519014},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"3f948665aa04a0ab3c40f20d6d11def162e2db06","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36f42609-267a-44fa-b959-ad58f4510d4e"}},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"12.0.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ink":"^6.8.0","zod":"^3.24.0","chalk":"^5.6.2","react":"^19.2.4","js-yaml":"^4.1.0","commander":"^13.1.0","smol-toml":"^1.6.1","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","update-notifier":"^7.3.1","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","ink-testing-library":"^4.0.0","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.21.1_1789615529542_0.4598314480327934","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"name":"oh-my-harness","version":"0.22.0","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli","codex","openai-codex","agents-md","cursorrules","ai-coding-agent","guardrails","tdd-guard","pretooluse","coding-agent","claude-md","cli-tool"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.22.0","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"e707baffa8ac4afecf9caa52c63676b53dde8722","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.22.0.tgz","fileCount":249,"integrity":"sha512-MB9elQhYxBstOGZ8JO4lo/fiPookalA1yW0vdckiA4sYOwH3hBkNM/Xv3RKlH7gNCER/WM2J958VSM0I+Cp9BA==","signatures":[{"sig":"MEYCIQC0AoBOHgGsTFtnDh2/azxuo/WW+t1GxM2KbFxVNDgGRQIhAImX74RNjIyrNUFyit9Hi8IaMq3MrAOLJw75cmCLmMGG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCEaLOqF4IMOwc5nouYaw90zye1VWYa7cs+rgJHHcMzAQIhAO76CB+l6vVKtwOOG8ofn4rslMaM4D0DrtzDhb82EyBJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.22.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":546368},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"a56fa435032de4419454ebeadcd19e956a2c5d15","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36f42609-267a-44fa-b959-ad58f4510d4e"}},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"12.0.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ink":"^6.8.0","zod":"^3.24.0","chalk":"^5.6.2","react":"^19.2.4","js-yaml":"^4.1.0","commander":"^13.1.0","smol-toml":"^1.6.1","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","update-notifier":"^7.3.1","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","ink-testing-library":"^4.0.0","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.22.0_1789709933252_0.37212556025119103","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"oh-my-harness","version":"0.23.0","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli","codex","openai-codex","agents-md","cursorrules","ai-coding-agent","guardrails","tdd-guard","pretooluse","coding-agent","claude-md","cli-tool"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.23.0","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"da61f21fec60c119b8518488869482e7b0c79728","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.23.0.tgz","fileCount":251,"integrity":"sha512-pwA1rx46JCSUntH+oXPFt/OJCs+BiDFtTEyd+32Nr7UZlY5IDfvKR+z3J1dnedlLRTNRCbkFO02d4orBcnh8Jw==","signatures":[{"sig":"MEUCIQDqdn8L5Y2FTB63k/xgA1huHlicpTrmah8JGBqf8ebGpwIgS4FBXHGrGz7p9Tbf6QKSkW7kXy6L1/6QRSznEgpwu8E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFAetw0zulxuFIHlY6R6DrOfq99FkGNassjtBtgQZlvlAiEAusZAM3HJjD7WgJOhb3pmsGH/QZGWIllKixLY67IFL/M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.23.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":564236},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"81d344a4401c2cd809a8b22a30fe4e56fda3d59a","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36f42609-267a-44fa-b959-ad58f4510d4e"}},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"12.0.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ink":"^6.8.0","zod":"^3.24.0","chalk":"^5.6.2","react":"^19.2.4","js-yaml":"^4.1.0","commander":"^13.1.0","smol-toml":"^1.6.1","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","update-notifier":"^7.3.1","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","ink-testing-library":"^4.0.0","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.23.0_1789720454743_0.6140856513187327","host":"s3://npm-registry-packages-npm-production"}},"0.24.0":{"name":"oh-my-harness","version":"0.24.0","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli","codex","openai-codex","agents-md","cursorrules","ai-coding-agent","guardrails","tdd-guard","pretooluse","coding-agent","claude-md","cli-tool"],"author":{"name":"kyu1204"},"license":"MIT","_id":"oh-my-harness@0.24.0","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"homepage":"https://github.com/kyu1204/oh-my-harness#readme","bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"dist":{"shasum":"1cf01b029e7f8e727df0f95750b5c6ddf90e27a8","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.24.0.tgz","fileCount":259,"integrity":"sha512-s7TZdoIs7pRr3zVC44QyJmDoAZadxRRYAsFLoPUGGanKQjm5HU9rs/lh6c5Mg2fWZxELga408c4okhr1K/dTfQ==","signatures":[{"sig":"MEUCIHnTE+wnBBeTrsBmBCbRAgpxd9uieXITEkfs/rBR1cgfAiEA9ARuOTfrLFA3s/K7xOft5BydXJ8/IurW8Hb+neyskE8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIG9U6l0Pq3C+jinX3/VKSj01wqlBEz1bWc0fmKw4JqO7AiEAuUY7ZxKvmGUhAKMsdaAR16KRaLnWCNe0ejn5XVTmgTE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.24.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":583582},"main":"dist/cli/index.js","type":"module","types":"dist/cli/index.d.ts","engines":{"node":">=20"},"gitHead":"1f8cdeb63a78e1526b58c9348d296b0e54812e84","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36f42609-267a-44fa-b959-ad58f4510d4e"}},"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"12.0.2","description":"Tame your AI coding agents with natural language","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ink":"^6.8.0","zod":"^3.24.0","chalk":"^5.6.2","react":"^19.2.4","js-yaml":"^4.1.0","commander":"^13.1.0","smol-toml":"^1.6.1","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","update-notifier":"^7.3.1","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","ink-testing-library":"^4.0.0","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/oh-my-harness_0.24.0_1789723096359_0.7908938193475443","host":"s3://npm-registry-packages-npm-production"}},"0.25.0":{"_id":"oh-my-harness@0.25.0","bin":{"omh":"dist/bin/oh-my-harness.js","oh-my-harness":"dist/bin/oh-my-harness.js"},"bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"dist":{"shasum":"5047851dd7ee6cc8289a86377e6c049768f46955","tarball":"https://registry.npmjs.org/oh-my-harness/-/oh-my-harness-0.25.0.tgz","fileCount":263,"integrity":"sha512-ipN8k2WGN2PWIyRqJu847imCtFA04labYNydnocjtG00AYy3+cfpi7QRMPaDzgFfvdxYDYEsp32eJjTXoFIf2g==","signatures":[{"sig":"MEUCIQCTQd6HwhlVYWqVYFDKNlLdA6YxgqEaQ8sFetb/qN1c5gIgCpbosMqv6IVuRqLjSYWSA9HoysFdVBF/KyhL4Arhm7E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHk8UaICDb83eMPdjESpgHX14ky6uXGMq1DbcgqqSYbXAiAm0XhKgKIFQzFhi9PCrrCqQjSPSj3x30woLjjuBhM0qQ=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/oh-my-harness@0.25.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":599790},"main":"dist/cli/index.js","name":"oh-my-harness","type":"module","types":"dist/cli/index.d.ts","author":{"name":"kyu1204"},"engines":{"node":">=20"},"gitHead":"ccbd489ce46c2dd993431054dd4e2eff432ac760","license":"MIT","scripts":{"dev":"tsx bin/oh-my-harness.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","postbuild":"chmod +x dist/bin/oh-my-harness.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"version":"0.25.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"36f42609-267a-44fa-b959-ad58f4510d4e"}},"homepage":"https://github.com/kyu1204/oh-my-harness#readme","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli","codex","openai-codex","agents-md","cursorrules","ai-coding-agent","guardrails","tdd-guard","pretooluse","coding-agent","claude-md","cli-tool"],"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"_npmVersion":"12.1.0","description":"Tame your AI coding agents with natural language","directories":{},"maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"_nodeVersion":"22.23.3","dependencies":{"ink":"^6.8.0","zod":"^3.24.0","chalk":"^5.6.2","react":"^19.2.4","js-yaml":"^4.1.0","commander":"^13.1.0","smol-toml":"^1.6.1","handlebars":"^4.7.8","@clack/prompts":"^1.1.0","update-notifier":"^7.3.1","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","ink-testing-library":"^4.0.0","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/oh-my-harness_0.25.0_1790755421911_0.8016615238977818"}}},"time":{"created":"2026-03-16T06:40:57.476Z","modified":"2026-09-30T08:03:42.374Z","0.1.0":"2026-03-16T06:40:57.721Z","0.1.1":"2026-03-16T09:43:34.811Z","0.2.0":"2026-03-16T12:58:34.935Z","0.2.1":"2026-03-16T13:13:04.665Z","0.3.0":"2026-03-17T00:26:07.258Z","0.3.1":"2026-03-17T02:54:23.735Z","0.3.2":"2026-03-17T04:41:57.426Z","0.4.0":"2026-03-17T12:02:06.364Z","0.4.1":"2026-03-17T13:24:51.905Z","0.4.2":"2026-03-17T22:58:34.610Z","0.5.0":"2026-03-18T05:23:52.485Z","0.6.0":"2026-03-18T13:20:53.961Z","0.6.1":"2026-03-19T07:00:17.086Z","0.7.0":"2026-03-21T01:50:55.859Z","0.8.0":"2026-03-28T07:47:50.702Z","0.9.0":"2026-04-06T10:21:40.428Z","0.10.0":"2026-04-11T10:40:48.146Z","0.10.1":"2026-04-14T09:35:05.694Z","0.10.2":"2026-04-15T02:59:17.634Z","0.11.0":"2026-04-30T08:40:47.467Z","0.12.0":"2026-05-30T09:34:51.988Z","0.13.0":"2026-05-31T08:55:37.766Z","0.13.1":"2026-05-31T09:03:55.508Z","0.14.0":"2026-06-01T01:12:25.495Z","0.15.0":"2026-06-03T04:44:20.172Z","0.16.0":"2026-06-04T08:39:12.849Z","0.17.0":"2026-06-05T06:16:11.569Z","0.18.0":"2026-06-08T01:39:04.285Z","0.19.0":"2026-08-27T09:06:06.796Z","0.20.0":"2026-09-04T14:32:46.597Z","0.20.1":"2026-09-04T15:17:55.201Z","0.21.0":"2026-09-17T03:15:05.076Z","0.21.1":"2026-09-17T03:25:29.673Z","0.22.0":"2026-09-18T05:38:53.339Z","0.23.0":"2026-09-18T08:34:14.862Z","0.24.0":"2026-09-18T09:18:16.458Z","0.25.0":"2026-09-30T08:03:42.023Z"},"bugs":{"url":"https://github.com/kyu1204/oh-my-harness/issues"},"author":{"name":"kyu1204"},"license":"MIT","homepage":"https://github.com/kyu1204/oh-my-harness#readme","keywords":["claude","ai","harness","claude-code","tdd","hooks","cli","codex","openai-codex","agents-md","cursorrules","ai-coding-agent","guardrails","tdd-guard","pretooluse","coding-agent","claude-md","cli-tool"],"repository":{"url":"git+https://github.com/kyu1204/oh-my-harness.git","type":"git"},"description":"Tame your AI coding agents with natural language","maintainers":[{"name":"pb1123love","email":"pb1123love@gmail.com"}],"readme":"<div align=\"center\">\n\n# 🐴 oh-my-harness\n\n**CLAUDE.md is a request. oh-my-harness is enforcement.**\n\nOne command turns \"TDD enforced, block dangerous commands\" into hooks that actually **block** your AI coding agent — for Claude Code, Codex and Pi at once.\n\n[![npm version](https://img.shields.io/npm/v/oh-my-harness.svg)](https://www.npmjs.com/package/oh-my-harness)\n[![npm downloads](https://img.shields.io/npm/dm/oh-my-harness.svg)](https://www.npmjs.com/package/oh-my-harness)\n[![CI](https://github.com/kyu1204/oh-my-harness/actions/workflows/ci.yml/badge.svg)](https://github.com/kyu1204/oh-my-harness/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/github/license/kyu1204/oh-my-harness.svg)](LICENSE)\n\n<img src=\"docs/demo.gif\" alt=\"omh init generates hooks; an AI agent's commit, rm -rf and untested edit are blocked\" width=\"900\">\n\n</div>\n\n```bash\nnpx oh-my-harness init \"React + FastAPI, TDD enforced, lint on save\"\n```\n\nThat is the whole setup. Your agent now hits a wall when it tries to:\n\n| Agent tries to... | Result |\n|---|---|\n| `git commit` while tests fail | ⛔ **Blocked** |\n| edit `src/foo.ts` before touching `foo.test.ts` | ⛔ **Blocked** (TDD guard) |\n| run `rm -rf /`, `chmod -R 777`, or any pattern you list | ⛔ **Blocked** |\n| write into `node_modules/`, `.next/`, `dist/` | ⛔ **Blocked** |\n| commit on a branch already merged to main | ⛔ **Blocked** |\n| `git commit --no-verify`, `git push --force origin main` | ⛔ **Blocked** |\n| edit its own hooks or `.claude/settings.json` to switch the guardrails off | ⛔ **Blocked** |\n| save a file | ✅ auto-lint |\n| push a branch | ✅ auto-PR |\n\nEvery decision is logged to `.omh/state/events.jsonl` — `omh stats` shows what your agent tried and what got stopped, and `omh explain` tells you in plain language why the last few calls were blocked and how to allow once or change the rule.\n\n## Why not just write CLAUDE.md?\n\nBecause agents read instructions and then forget them halfway through a long session. A rule in a markdown file is a suggestion; a `PreToolUse` hook that returns `{\"decision\":\"block\"}` is a fact. oh-my-harness writes the markdown **and** the hooks, from one `harness.yaml`, and keeps them in sync (`omh sync --check` fails CI when they drift). Side-by-side with rule-sync tools and git hooks: [docs/comparison.md](docs/comparison.md).\n\n---\n\n## 🚀 Quick Start\n\n```bash\n# Zero-install: run directly with npx\nnpx oh-my-harness init \"TypeScript Next.js frontend with Python FastAPI backend\"\n\n# No AI provider? Deterministic presets need nothing but the repo:\nnpx oh-my-harness init --preset strict     # minimal | safe | strict\n\n# With a TypeSafe key, Jev tunes the preset to your description in one ~500 ms, sub-cent call:\nTYPESAFE_API_KEY=... npx oh-my-harness init \"TypeScript API, TDD enforced, no auto PRs\"\n\n# Or install globally\nnpm install -g oh-my-harness\noh-my-harness init \"React app with TDD\"\n\n# Short alias works too\nomh init \"Android Kotlin app with Hilt, JUnit, Gradle\"\nomh catalog list\nomh test          # Dry-run verify your harness\nomh stats         # TUI analytics dashboard\nomh diff          # Preview what `omh sync` would change\nomh sync --check  # Fail (exit 1) if generated files are out of date — CI gate\n```\n\n📖 Deeper: [what gets generated & CI drift check](docs/generated-files.md) · [how it works, project detector, presets & Jev, AI providers](docs/how-it-works.md)\n\n---\n\n## 🎛️ Presets and the Jev chooser\n\nYou do not need a chat model to set up a harness.\n\n**Presets** are deterministic and offline. The project detector fills in test, lint and typecheck commands and build directories; rule text is templated; a block whose required parameter cannot be detected is left out rather than half-configured.\n\n| Preset | What it enables |\n|--------|-----------------|\n| `minimal` | dangerous-command guard, main-branch guard, build-output guard |\n| `safe` | minimal + tests and typecheck must pass before a commit, lockfile and secret-file guards, lint on save |\n| `strict` | safe + test-first (TDD) on every source edit |\n\n```bash\nomh init --preset safe        # confirm prompt; add -y to skip it\n```\n\n**Jev** picks the blocks for you from a description. [Jev](https://docs.typesafe.ai/introduction) is TypeSafe's System One model: it does not generate text, it answers typed questions with calibrated probabilities. `omh init \"description\"` sends the description plus the detector facts and asks, in one call, \"should block X be enabled?\" for every selectable block and \"how strict?\" once. Probabilities at or above 0.65 enable a block, at or below 0.35 disable it, anything in between keeps the preset default. Rule text and free-form params never come from the model.\n\n```bash\nexport TYPESAFE_API_KEY=...   # or put it in the project's .env\nomh init \"Next.js + FastAPI, TDD enforced, no auto PRs\"\n# Jev (jev-latest) chose: strictness=strict, 1716 input tokens\n#   enabled:   ... tdd-guard, sql-guard ...\n#   disabled:  auto-pr\n```\n\n- Get a key from the [TypeSafe console](https://typesafe.ai) (early access at the time of writing). One init costs a fraction of a cent (input $0.042 per million tokens, output free) and takes about half a second.\n- `--preset` always wins and never calls Jev. No key and no LLM provider? `omh init \"description\"` falls back to `safe` and says so.\n- `omh doctor` and `omh config --show` tell you whether the chooser is active. Remove the key to go back to the LLM providers or presets.\n- `omh modify \"...\"` later edits the same way: Jev answers enable / disable / ask / keep per block, you confirm the change set, `omh sync` runs. Mark an entry `locked: true` in harness.yaml and modify will refuse to remove or weaken it.\n- Interactive `omh init` offers both: \"Describe your project (Jev picks the blocks)\" and \"Use a preset (no AI)\".\n- Descriptions in English work best; other languages are handled but with lower confidence, so include the specifics.\n\nThe always-on guards (harness self-protection, `--no-verify`, force-push) are added to every preset and every Jev result.\n\n### Rules that enforce themselves\n\nTwo fields on a rule in `harness.yaml` turn prose into a check:\n\n```yaml\nrules:\n  - id: no-deps\n    title: No new dependencies\n    content: Do not add npm dependencies without asking.\n    enforce: true          # every Bash/Edit/Write call is judged against this rule by Jev\n  - id: no-secrets\n    title: No secrets in code\n    content: Never commit tokens or passwords.\n    lint: hardcodes a secret, token or password   # the staged diff is linted with jgrep before commit\n```\n\n`enforce: true` adds `semantic-rule-guard`: one Jev question per enforced rule per tool call, block at p ≥ 0.9, ask between 0.6 and 0.9, allow below; without a key, or on an API error, it allows and logs `skipped`. `lint:` adds `semantic-diff-gate`, which runs `jgrep --diff --staged \"<description>\"` and blocks the commit on a hit with `file:line`. When the same command also stages (`git add … && git commit`, `git commit -a`), the gate previews the index that command would build, so nothing slips through because it was not staged yet. jgrep is optional: `npm i -g jevgrep && jgrep init`; the `strict` preset adds three generic lints when `omh init` finds it. Both layers are additive and never relax a deterministic guard.\n\n---\n\n## 🧱 Building Block Catalog\n\nAll enforcement is powered by **catalog blocks** — reusable, parameterized hook templates:\n\n| Block | Category | Description |\n|-------|----------|-------------|\n| 🛡️ `branch-guard` | git | Blocks commits on main/merged branches |\n| 🧪 `commit-test-gate` | quality | Runs tests before git commit |\n| 🔍 `commit-typecheck-gate` | quality | Runs typecheck before git commit |\n| 🔒 `command-guard` | security | Blocks dangerous shell commands |\n| 🪝 `harness-guard` | security | Blocks shell writes to the harness's own hooks and config (always on) |\n| 🚫 `no-verify-guard` | git | Blocks `--no-verify` / `-n` / hooksPath overrides on commit and push (always on) |\n| 💥 `force-push-guard` | git | Blocks force pushes to protected branches (always on) |\n| 🛑 `stop-test-gate` | quality | When the agent tries to end its turn with failing tests, sends it back (retry-capped) |\n| 📝 `stop-uncommitted-warn` | git | Lists uncommitted changes as a system message when the turn ends |\n| 🧠 `semantic-rule-guard` | security | Rules marked `enforce: true` are judged by Jev on every Bash/Edit/Write call |\n| 🔎 `semantic-diff-gate` | quality | Lints the staged diff with [jgrep](https://github.com/kyu1204/jgrep) against `lint:` rule descriptions before commit (optional) |\n| 📁 `path-guard` | file-protection | Blocks writes to protected paths |\n| 🔐 `lockfile-guard` | file-protection | Prevents manual lockfile edits |\n| 🤫 `secret-file-guard` | security | Blocks edits to .env, credentials |\n| ✏️ `lint-on-save` | auto-fix | Auto-lint on file save |\n| 🎨 `format-on-save` | auto-fix | Auto-format on file save |\n| 🧪 `test-on-save` | auto-fix | Auto-run tests on file save |\n| 🔀 `auto-pr` | automation | Auto-create PR after push |\n| 🧪 `tdd-guard` | quality | Blocks source edits unless test modified first (JS/TS/Python/Kotlin/Java) |\n| 🔒 `sql-guard` | security | Blocks dangerous SQL operations |\n| 🌳 `worktree-setup` | monorepo | Supports monorepo worktree patterns |\n| 🗜️ `compact-context` | maintenance | Re-injects context on session start |\n| 📋 `config-audit` | audit | Audit trail for config changes |\n| 🔔 `desktop-notify` | ux | Cross-platform desktop notifications |\n| 🔁 `loop-guard` | quality | Blocks a loop session from writing its own work orders or touching architect-only paths |\n\n### Usage in `harness.yaml`\n\n```yaml\nhooks:\n  - block: branch-guard\n  - block: tdd-guard\n    mode: ask          # ask for approval instead of hard-blocking (Claude)\n  - block: commit-test-gate\n    params:\n      testCommand: \"npx vitest run\"\n  - block: path-guard\n    params:\n      blockedPaths:\n        - \"node_modules/\"\n        - \"dist/\"\n  - block: command-guard\n    params:\n      patterns:\n        - \"rm -rf /\"\n        - \"sudo rm\"\n  - block: lint-on-save\n    params:\n      filePattern: \"*.ts\"\n      command: \"npx eslint --fix\"\n  - block: auto-pr\n    params:\n      baseBranch: main\n```\n\n#### `mode`: block vs. ask\n\nAny blocking hook accepts an optional `mode` (default `block`):\n\n- **`block`** — hard-blocks the tool call. The agent cannot proceed.\n- **`ask`** — escalates to the user for approval instead of blocking outright.\n  - **Claude Code**: shows a native permission prompt (`permissionDecision: \"ask\"`).\n  - **Codex**: `ask` is **not** supported, so the hook falls back to a hard\n    block — your guardrail is never silently downgraded to \"allow\". The same\n    generated script detects the calling runtime and responds accordingly.\n\n`mode: ask` only applies to blocks that can block (`canBlock: true`); setting it\non a non-blocking block (e.g. `lint-on-save`) is reported and ignored.\n\n---\n\n## 🔁 Autonomous Loop Engine\n\nHand omh a `WORKPLAN.md` and it runs one work order per fresh agent session, in an isolated git worktree, with hard-blocked protocol rules. `omh loop start` / `omh loop status` / `omh loop stop`. Full guide: [docs/loop-engine.md](docs/loop-engine.md).\n\n---\n\n## 🖥️ Commands\n\n```bash\n# 🚀 Initialize\nomh init \"your project description\"      # Jev with TYPESAFE_API_KEY, else an LLM provider, else the \"safe\" preset\nomh init --preset strict                  # No provider: minimal | safe | strict\nomh explain                               # Why were the last tool calls blocked, and what to do about it\nomh modify \"no auto PRs, TDD guard asks\"  # Edit harness.yaml from a sentence (Jev decides per block; locked: true entries stay)\nomh init                                  # Interactive TUI (import existing harness.yaml)\n\n# 📋 Catalog\nomh catalog list                          # Browse all building blocks\nomh catalog info branch-guard             # Block details + params\n\n# 🔧 Hook management\nomh hook add branch-guard                 # Add a hook\nomh hook remove auto-pr                   # Remove a hook\n\n# 🔄 Sync & manage\nomh sync                                 # Regenerate all files from harness.yaml\nomh uninstall --dry-run                  # Preview generated-file cleanup\nomh uninstall -y                         # Remove generated files, keep user content\nomh uninstall -y --purge                 # Also remove harness.yaml\n\n# 🩺 Verify & monitor\nomh doctor                               # Health check\nomh test                                  # Dry-run verify all hooks\nomh stats                                 # TUI analytics dashboard\n```\n\nDetails for `uninstall`, `doctor`, `test`, `stats` and hook event logging: [docs/commands.md](docs/commands.md). Internals: [docs/architecture.md](docs/architecture.md) · [roadmap](docs/roadmap.md).\n\n---\n\n## 📦 Requirements\n\n- **Node.js** >= 20\n- **An AI provider** (optional, only for natural-language `omh init`) — any one of: the `claude` CLI, an API key for Claude/OpenAI/Gemini/OpenRouter, a ChatGPT subscription via Codex, or a local OpenAI-compatible server (Ollama etc.). See [AI Provider Setup](docs/how-it-works.md#-ai-provider-setup).\n\n---\n\n## 🤝 Contributing\n\nContributions are welcome! Please read the [Contributing Guide](CONTRIBUTING.md) before submitting a PR.\n\n---\n\n## 💪 Support This Project\n\noh-my-harness is free and open source. Here's how you can help:\n\n- ⭐ **Star** — [Give a star](https://github.com/kyu1204/oh-my-harness) to help others discover the project\n- 🐛 **Report Bugs** — [Open an issue](https://github.com/kyu1204/oh-my-harness/issues/new) when something doesn't work\n- 💡 **Request Features** — [Suggest ideas](https://github.com/kyu1204/oh-my-harness/issues/new) for new blocks, emitters, or features\n- 🔧 **Contribute** — Fix a bug, add a block, or improve docs — PRs are always welcome\n- 📢 **Spread the Word** — Share oh-my-harness with your team or community\n\n---\n\n## 📄 License\n\nMIT\n\n---\n\n<div align=\"center\">\n\n**Your agents are only as good as their guardrails.** 🐴\n\nBuilt with frustration from hand-writing CLAUDE.md files.\n\n</div>\n","readmeFilename":"README.md"}