{"_id":"plumbbob","_rev":"43-7a91459660ff3b138f5455f3c33f1783","name":"plumbbob","dist-tags":{"latest":"0.12.1"},"versions":{"0.1.3":{"name":"plumbbob","version":"0.1.3","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":"Rob McLarty <hello@robmclarty.com>","license":"Apache-2.0","_id":"plumbbob@0.1.3","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://github.com/robmclarty/plumbbob#readme","bugs":"https://github.com/robmclarty/plumbbob/issues","bin":{"pb":"src/cli.ts","plumbbob":"src/cli.ts"},"dist":{"shasum":"ffe9f9908810775526fc802afbcd9ecc041c6210","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.1.3.tgz","fileCount":32,"integrity":"sha512-sjK/g1pXbjzp1PQkcNkA6VzMZfbWZvD80XfMyPguHHjEsX9z0sz20g5ZGtCRzBOhUyFrMjbvUx8NRg1f7ubOnw==","signatures":[{"sig":"MEUCIQCnqwTGe1jANL9mzSEvlGDd3tyaYfygloANoAxTuU3XtQIgBZN+FVPGrJnXviaRIbasiTv4+EQgYVoKegdLG3xLT2E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91895},"type":"module","engines":{"node":">=22.18.0"},"scripts":{"check":"pnpm run check:tsc && pnpm run check:oxlint && pnpm run check:astgrep && pnpm run check:test && pnpm run check:knip && pnpm run check:md","check:md":"markdownlint --config .markdownlint.jsonc \"**/*.md\" --ignore node_modules","check:tsc":"tsc --noEmit","check:knip":"knip","check:test":"vitest run","check:oxlint":"oxlint","check:astgrep":"ast-grep scan"},"_npmUser":{"name":"robmclarty","email":"r@robmclarty.com"},"devEngines":{"packageManager":{"name":"pnpm","onFail":"download","version":"11.1.2"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"description":"Attention-first build process: a CLI + hooks that enforce the deciding/executing boundary.","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"knip":"^6.16.1","oxlint":"^1.69.0","vitest":"^4.1.8","typescript":"^6.0.3","@types/node":"^24.0.0","@ast-grep/cli":"^0.43.0","markdownlint-cli":"^0.48.0"},"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.1.3_1781287094460_0.9577452589216207","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"plumbbob","version":"0.2.1","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":"Rob McLarty <hello@robmclarty.com>","license":"Apache-2.0","_id":"plumbbob@0.2.1","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://github.com/robmclarty/plumbbob#readme","bugs":"https://github.com/robmclarty/plumbbob/issues","bin":{"pb":"dist/cli.js","plumbbob":"dist/cli.js"},"dist":{"shasum":"c39345abdf227ff8461f661f18dd4143fcfcdcb1","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.2.1.tgz","fileCount":40,"integrity":"sha512-7J0MKTqa7ypVutflWTIXhlGTlSGfw/EZk6m7GDoqNeB2/xrtLimRw0DmiobrRTSqNaKDsWh/0bft8VZ0gIs7fA==","signatures":[{"sig":"MEUCIQCOQ4bRZ09WXn7sMmhgtVeZZBpb1F4EtwQBVhJ0RdRonAIgV+NlLpvIWGZzHltoWcpYmLakA2Dv/Yw63YXIkfDh5Lo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108513},"type":"module","engines":{"node":">=22.18.0"},"scripts":{"build":"tsc -p tsconfig.build.json","check":"pnpm run check:tsc && pnpm run check:oxlint && pnpm run check:astgrep && pnpm run check:test && pnpm run check:knip && pnpm run check:md","clean":"rm -rf dist","check:md":"markdownlint --config .markdownlint.jsonc \"**/*.md\" --ignore node_modules","check:tsc":"tsc --noEmit","check:knip":"knip","check:test":"vitest run","check:oxlint":"oxlint","check:astgrep":"ast-grep scan"},"_npmUser":{"name":"robmclarty","email":"r@robmclarty.com"},"devEngines":{"packageManager":{"name":"pnpm","onFail":"download","version":"11.1.2"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"description":"Attention-first build process: a CLI + hooks that enforce the deciding/executing boundary.","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"knip":"^6.16.1","oxlint":"^1.69.0","vitest":"^4.1.8","typescript":"^6.0.3","@types/node":"^24.0.0","@ast-grep/cli":"^0.43.0","markdownlint-cli":"^0.48.0"},"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.2.1_1782153092148_0.0032127946321161005","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"plumbbob","version":"0.2.3","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":"Rob McLarty <hello@robmclarty.com>","license":"Apache-2.0","_id":"plumbbob@0.2.3","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://github.com/robmclarty/plumbbob#readme","bugs":"https://github.com/robmclarty/plumbbob/issues","bin":{"pb":"dist/cli.js","plumbbob":"dist/cli.js"},"dist":{"shasum":"e3ca89f7d0601eef32c858ec5811951046fc59c6","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.2.3.tgz","fileCount":40,"integrity":"sha512-TFyE2g2cONbUBdoAchH6COU+QbZu/LgfR+xEjYZ0DheHxmgrcuAhIJaJH/ZQBZxmgpNofQuLGCD2Jo4up8KBDw==","signatures":[{"sig":"MEYCIQDP4hMkrZedS613QNLMsTPZLwsC/sjPRUiBfKC1RiZXyQIhAOdnjrAhjEn4m7M9sJWZW7UJu80tNClWxFZ0nUWCttew","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111487},"type":"module","engines":{"node":">=22.18.0"},"scripts":{"build":"tsc -p tsconfig.build.json","check":"pnpm run check:tsc && pnpm run check:oxlint && pnpm run check:astgrep && pnpm run check:test && pnpm run check:knip && pnpm run check:md","clean":"rm -rf dist","check:md":"markdownlint --config .markdownlint.jsonc \"**/*.md\" --ignore node_modules","check:tsc":"tsc --noEmit","check:knip":"knip","check:test":"vitest run","check:oxlint":"oxlint","check:astgrep":"ast-grep scan"},"_npmUser":{"name":"robmclarty","email":"r@robmclarty.com"},"devEngines":{"packageManager":{"name":"pnpm","onFail":"download","version":"11.1.2"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"description":"Attention-first build process: a CLI + hooks that enforce the deciding/executing boundary.","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"knip":"^6.16.1","oxlint":"^1.69.0","vitest":"^4.1.8","typescript":"^6.0.3","@types/node":"^24.0.0","@ast-grep/cli":"^0.43.0","markdownlint-cli":"^0.48.0"},"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.2.3_1782159004212_0.4034553562197267","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"plumbbob","version":"0.3.0","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":"Rob McLarty <hello@robmclarty.com>","license":"Apache-2.0","_id":"plumbbob@0.3.0","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://github.com/robmclarty/plumbbob#readme","bugs":"https://github.com/robmclarty/plumbbob/issues","bin":{"pb":"dist/cli.js","plumbbob":"dist/cli.js"},"dist":{"shasum":"909e4c289c4df85dbc4ca314d39bbcd6d497d1ab","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.3.0.tgz","fileCount":35,"integrity":"sha512-jsW0vVvUQuz1WDFisbQ/kltYVc75pE45AatY15pOIlwD4WiA4DR4I1n2MM+8tvQfjr9npOwhCnmvROFcM7wWmg==","signatures":[{"sig":"MEUCICrjHjE9edYdfCGhu0WBGaEruwsSiVNWZkkB88Mf29tTAiEAuHAgD1tWqx/BST+YXiwt4JYbBane88hIzhGaWMmFNc4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":106847},"type":"module","engines":{"node":">=22.18.0"},"scripts":{"build":"tsc -p tsconfig.build.json","check":"pnpm run check:tsc && pnpm run check:oxlint && pnpm run check:astgrep && pnpm run check:test && pnpm run check:knip && pnpm run check:md","clean":"rm -rf dist","check:md":"markdownlint --config .markdownlint.jsonc \"**/*.md\" --ignore node_modules","check:tsc":"tsc --noEmit","check:knip":"knip","check:test":"vitest run","check:oxlint":"oxlint","check:astgrep":"ast-grep scan"},"_npmUser":{"name":"robmclarty","email":"r@robmclarty.com"},"devEngines":{"packageManager":{"name":"pnpm","onFail":"download","version":"11.1.2"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"description":"Attention-first build process: eight skills + a CLI that keep you the decider — guidance, not enforcement.","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"knip":"^6.16.1","oxlint":"^1.69.0","vitest":"^4.1.8","typescript":"^6.0.3","@types/node":"^24.0.0","@ast-grep/cli":"^0.43.0","markdownlint-cli":"^0.48.0"},"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.3.0_1782229261099_0.03157988154827196","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"plumbbob","version":"0.3.1","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":"Rob McLarty <hello@robmclarty.com>","license":"Apache-2.0","_id":"plumbbob@0.3.1","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://github.com/robmclarty/plumbbob#readme","bugs":"https://github.com/robmclarty/plumbbob/issues","bin":{"pb":"dist/cli.js","plumbbob":"dist/cli.js"},"dist":{"shasum":"28133a5aeeeb8ecde6630870e0346f0d20323e29","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.3.1.tgz","fileCount":36,"integrity":"sha512-zoSvNpC/YN55QuFva214Du5v5r47Uu/mNbs6pc0Jj57n7AKS+xEHbMfcCoNugrK/eJT2QlayT9bOBEGG6ZynwQ==","signatures":[{"sig":"MEYCIQC0DKCGx3zf1KmvTD+d/ed57FD4ESN01LcVLF8OSYIVIAIhAP9GjyOJSFZTrOFKJhulBf3Bim+icNkf4GQ/FzYZe+cY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":119202},"type":"module","engines":{"node":">=22.18.0"},"scripts":{"build":"tsc -p tsconfig.build.json","check":"pnpm run check:tsc && pnpm run check:oxlint && pnpm run check:astgrep && pnpm run check:test && pnpm run check:knip && pnpm run check:md","clean":"rm -rf dist","check:md":"markdownlint --config .markdownlint.jsonc \"**/*.md\" --ignore node_modules","check:tsc":"tsc --noEmit","check:knip":"knip","check:test":"vitest run","check:oxlint":"oxlint","check:astgrep":"ast-grep scan"},"_npmUser":{"name":"robmclarty","email":"r@robmclarty.com"},"devEngines":{"packageManager":{"name":"pnpm","onFail":"download","version":"11.1.2"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"description":"Attention-first build process: eight skills + a CLI that keep you the decider — guidance, not enforcement.","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"knip":"^6.16.1","oxlint":"^1.69.0","vitest":"^4.1.8","typescript":"^6.0.3","@types/node":"^24.0.0","@ast-grep/cli":"^0.43.0","markdownlint-cli":"^0.48.0"},"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.3.1_1782360717051_0.020251489197748773","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"plumbbob","version":"0.4.2","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":"Rob McLarty <hello@robmclarty.com>","license":"Apache-2.0","_id":"plumbbob@0.4.2","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://github.com/robmclarty/plumbbob#readme","bugs":"https://github.com/robmclarty/plumbbob/issues","bin":{"pb":"dist/cli.js","plumbbob":"dist/cli.js"},"dist":{"shasum":"b3af06ae6d540745b97545302d6d9d953915cbac","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.4.2.tgz","fileCount":38,"integrity":"sha512-cGyTfpu8yg+vH4vjU4QSYczdCdkkVlQJ4om4fY44s3wikbzLJD4tLWDyNY+mRI4gAJbeb7utAajxXDiSbUDl2g==","signatures":[{"sig":"MEYCIQClM0Rz9Ku9OGyQkaqvIaASUz+x13pE0YHdsDJFj8+8rwIhAJttuqcFtqAddWklaOIihMiN8B2XuAlQbs7RbCMwoGYt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118404},"type":"module","engines":{"node":">=22.18.0"},"scripts":{"build":"tsc -p tsconfig.build.json","check":"pnpm run check:tsc && pnpm run check:oxlint && pnpm run check:astgrep && pnpm run check:test && pnpm run check:knip && pnpm run check:md","clean":"rm -rf dist","check:md":"markdownlint --config .markdownlint.jsonc \"**/*.md\" --ignore node_modules --ignore research","check:tsc":"tsc --noEmit","check:knip":"knip","check:test":"vitest run","check:oxlint":"oxlint","check:astgrep":"ast-grep scan"},"_npmUser":{"name":"robmclarty","email":"r@robmclarty.com"},"devEngines":{"packageManager":{"name":"pnpm","onFail":"download","version":"11.1.2"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"description":"Attention-first build process: 11 skills + a CLI that keep you the decider — guidance, not enforcement.","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"knip":"^6.16.1","oxlint":"^1.69.0","vitest":"^4.1.8","typescript":"^6.0.3","@types/node":"^24.0.0","@ast-grep/cli":"^0.43.0","markdownlint-cli":"^0.48.0"},"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.4.2_1782593999352_0.08341758050628978","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"plumbbob","version":"0.4.4","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":"Rob McLarty <hello@robmclarty.com>","license":"Apache-2.0","_id":"plumbbob@0.4.4","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://github.com/robmclarty/plumbbob#readme","bugs":"https://github.com/robmclarty/plumbbob/issues","bin":{"pb":"dist/cli.js","plumbbob":"dist/cli.js"},"dist":{"shasum":"890384cb7d7a4da0ce7c0e551443a6724c3b3c85","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.4.4.tgz","fileCount":38,"integrity":"sha512-7LKw4PDE7iDu6P7eLaz+urrGGTuB2+NNG9pD1rTiVAtNpUC3sypzqBRZbfaWZQqqpMesgrWVfVfnWD9xYO41Gg==","signatures":[{"sig":"MEQCIFNMDH2fqOyKvp1QdGic+6LFmL7IH0wBgPbDTV1jNpa6AiAVLAZoZnu7AjQThy76DS89pEKHyHOsRqD2vCldnbpkmg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118563},"type":"module","engines":{"node":">=22.18.0"},"scripts":{"build":"tsc -p tsconfig.build.json","check":"pnpm run check:tsc && pnpm run check:oxlint && pnpm run check:astgrep && pnpm run check:test && pnpm run check:knip && pnpm run check:md","clean":"rm -rf dist","check:md":"markdownlint --config .markdownlint.jsonc \"**/*.md\" --ignore node_modules --ignore research","check:tsc":"tsc --noEmit","check:knip":"knip","check:test":"vitest run","check:oxlint":"oxlint","check:astgrep":"ast-grep scan"},"_npmUser":{"name":"robmclarty","email":"r@robmclarty.com"},"devEngines":{"packageManager":{"name":"pnpm","onFail":"download","version":"11.1.2"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"description":"Attention-first build process: 11 skills + a CLI that keep you the decider — guidance, not enforcement.","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"knip":"^6.16.1","oxlint":"^1.69.0","vitest":"^4.1.8","typescript":"^6.0.3","@types/node":"^24.0.0","@ast-grep/cli":"^0.43.0","markdownlint-cli":"^0.48.0"},"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.4.4_1782782572815_0.03608008183828715","host":"s3://npm-registry-packages-npm-production"}},"0.4.8":{"name":"plumbbob","version":"0.4.8","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":"Rob McLarty <hello@robmclarty.com>","license":"Apache-2.0","_id":"plumbbob@0.4.8","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://github.com/robmclarty/plumbbob#readme","bugs":"https://github.com/robmclarty/plumbbob/issues","bin":{"pb":"dist/cli.js","plumbbob":"dist/cli.js"},"dist":{"shasum":"5f1cbfc35fa4b6c5bf455ba21a41f65adf1a9a65","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.4.8.tgz","fileCount":41,"integrity":"sha512-rG4YmfId/8+OsyWjJm4Qe+OLbYciZlr3usinC2xQB3vOj1tF0Q8SSQD0atBW6H/e83zgsUKhd66nRRHvHw6wbw==","signatures":[{"sig":"MEYCIQDri0lKkUUPV7JyGnbvNSEtvyqxr7erm1J+oGYuC4egEwIhAMYVPSEYyNyCZly8eTTXug92EHe4oUXh0ElamfPVKQHj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125231},"type":"module","engines":{"node":">=22.18.0"},"scripts":{"build":"tsc -p tsconfig.build.json","check":"pnpm run check:tsc && pnpm run check:oxlint && pnpm run check:astgrep && pnpm run check:test && pnpm run check:knip && pnpm run check:md","clean":"rm -rf dist","check:md":"markdownlint --config .markdownlint.jsonc \"**/*.md\" --ignore node_modules --ignore research","check:tsc":"tsc --noEmit","check:knip":"knip","check:test":"vitest run","check:oxlint":"oxlint","check:astgrep":"ast-grep scan"},"_npmUser":{"name":"robmclarty","email":"r@robmclarty.com"},"devEngines":{"packageManager":{"name":"pnpm","onFail":"download","version":"11.1.2"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"description":"Attention-first build process: 11 skills + a CLI that keep you the decider — guidance, not enforcement.","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"knip":"^6.16.1","oxlint":"^1.69.0","vitest":"^4.1.8","typescript":"^6.0.3","@types/node":"^24.0.0","@ast-grep/cli":"^0.43.0","markdownlint-cli":"^0.48.0"},"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.4.8_1782834585625_0.42423305679127443","host":"s3://npm-registry-packages-npm-production"}},"0.4.11":{"name":"plumbbob","version":"0.4.11","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":"Rob McLarty <hello@robmclarty.com>","license":"Apache-2.0","_id":"plumbbob@0.4.11","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://github.com/robmclarty/plumbbob#readme","bugs":"https://github.com/robmclarty/plumbbob/issues","bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"c4f56fff765beb60cc55a277fc4dd0a3cbbb6840","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.4.11.tgz","fileCount":43,"integrity":"sha512-ke24ytZa/XGn4iO5I/M6ISq6eJb9aFla2LdLq1Rzob90mFb2CbFpMPLBAWX3YBpNXo/oR384UntSwcxdsVzNNA==","signatures":[{"sig":"MEYCIQDnZPdKfKuLXvXHeIYHNq0d2Cikdj2QkiY73rjQcV1iIQIhAMHEvEaurYyaQcNwCmmW0sOkAbQguauJ2SPcxmVhop6s","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132955},"type":"module","engines":{"node":">=22.18.0"},"scripts":{"build":"tsc -p tsconfig.build.json","check":"pnpm run check:tsc && pnpm run check:oxlint && pnpm run check:astgrep && pnpm run check:test && pnpm run check:knip && pnpm run check:md","clean":"rm -rf dist","check:md":"markdownlint --config .markdownlint.jsonc \"**/*.md\" --ignore node_modules --ignore research","check:tsc":"tsc --noEmit","check:knip":"knip","check:test":"vitest run","check:oxlint":"oxlint","check:astgrep":"ast-grep scan"},"_npmUser":{"name":"robmclarty","email":"r@robmclarty.com"},"devEngines":{"packageManager":{"name":"pnpm","onFail":"download","version":"11.1.2"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"description":"Attention-first build process: 11 skills + a CLI that keep you the decider — guidance, not enforcement.","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"knip":"^6.16.1","oxlint":"^1.69.0","vitest":"^4.1.8","typescript":"^6.0.3","@types/node":"^24.0.0","@ast-grep/cli":"^0.43.0","markdownlint-cli":"^0.48.0"},"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.4.11_1782844914110_0.37764039239808267","host":"s3://npm-registry-packages-npm-production"}},"0.4.12":{"name":"plumbbob","version":"0.4.12","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":"Rob McLarty <hello@robmclarty.com>","license":"Apache-2.0","_id":"plumbbob@0.4.12","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://github.com/robmclarty/plumbbob#readme","bugs":"https://github.com/robmclarty/plumbbob/issues","bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"96f43c82597f89f43b7e70898ac88f5f7d71e827","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.4.12.tgz","fileCount":43,"integrity":"sha512-WWaTRBbf9HWA56huQ3ZbcvsEg2L4UcVYQ89+com8S+jLoRFhywo5LYFcCAuK9T+eLgEWm97eeY6RHq3QqArP+w==","signatures":[{"sig":"MEUCIEnn93MajOhpxkinwHucYAmJpv0ZTU4D3wWgU5Tnrn+5AiEA0djeLXv2L/jqbhUYyL+RviSbqvRkv/IviLANB2Va51M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":133176},"type":"module","engines":{"node":">=22.18.0"},"scripts":{"build":"tsc -p tsconfig.build.json","check":"pnpm run check:tsc && pnpm run check:oxlint && pnpm run check:astgrep && pnpm run check:test && pnpm run check:knip && pnpm run check:md","clean":"rm -rf dist","check:md":"markdownlint --config .markdownlint.jsonc \"**/*.md\" --ignore node_modules --ignore research","check:tsc":"tsc --noEmit","check:knip":"knip","check:test":"vitest run","check:oxlint":"oxlint","check:astgrep":"ast-grep scan"},"_npmUser":{"name":"robmclarty","email":"r@robmclarty.com"},"devEngines":{"packageManager":{"name":"pnpm","onFail":"download","version":"11.1.2"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"description":"Attention-first build process: 11 skills + a CLI that keep you the decider — guidance, not enforcement.","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"knip":"^6.16.1","oxlint":"^1.69.0","vitest":"^4.1.8","typescript":"^6.0.3","@types/node":"^24.0.0","@ast-grep/cli":"^0.43.0","markdownlint-cli":"^0.48.0"},"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.4.12_1782848179798_0.3832287559529619","host":"s3://npm-registry-packages-npm-production"}},"0.4.13":{"name":"plumbbob","version":"0.4.13","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":"Rob McLarty <hello@robmclarty.com>","license":"Apache-2.0","_id":"plumbbob@0.4.13","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://github.com/robmclarty/plumbbob#readme","bugs":"https://github.com/robmclarty/plumbbob/issues","bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"ab2e6e003ee39a2df784b58785bb32760c4005d8","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.4.13.tgz","fileCount":43,"integrity":"sha512-qLltpGXU8D/gHzpBb2hDJXt55HG6DkVte5L8wRRgUp2Tla0CRTCyzjiYPQ3I1tYqijJ1xEsB5UKNSQj0zOzl9Q==","signatures":[{"sig":"MEUCIQCuE59k8a/Fn0/zXFeVoc1W82DoRR/WcL+VvZUkrSKwsgIgf0i0WZRHw6DnlNbn4OTclhVhLuKFPu+bD/3qLzHiV4Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125015},"type":"module","engines":{"node":">=22.18.0"},"scripts":{"build":"tsc -p tsconfig.build.json","check":"pnpm run check:tsc && pnpm run check:oxlint && pnpm run check:astgrep && pnpm run check:test && pnpm run check:knip && pnpm run check:md","clean":"rm -rf dist","check:md":"markdownlint --config .markdownlint.jsonc \"**/*.md\" --ignore node_modules --ignore research","check:tsc":"tsc --noEmit","check:knip":"knip","check:test":"vitest run","check:oxlint":"oxlint","check:astgrep":"ast-grep scan"},"_npmUser":{"name":"robmclarty","email":"r@robmclarty.com"},"devEngines":{"packageManager":{"name":"pnpm","onFail":"download","version":"11.1.2"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"description":"Attention-first build process: 11 skills + a CLI that keep you the decider — guidance, not enforcement.","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"knip":"^6.16.1","oxlint":"^1.69.0","vitest":"^4.1.8","typescript":"^6.0.3","@types/node":"^24.0.0","@ast-grep/cli":"^0.43.0","markdownlint-cli":"^0.48.0"},"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.4.13_1782854908629_0.8756778419039817","host":"s3://npm-registry-packages-npm-production"}},"0.4.14":{"name":"plumbbob","version":"0.4.14","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":"Rob McLarty <hello@robmclarty.com>","license":"Apache-2.0","_id":"plumbbob@0.4.14","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://github.com/robmclarty/plumbbob#readme","bugs":"https://github.com/robmclarty/plumbbob/issues","bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"b1682d9a2e7a4960de5503940a08577478ec9667","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.4.14.tgz","fileCount":43,"integrity":"sha512-4Fzlw636JWJOxq5Ypnfk7aXDMajl96RMpBJVjcvSEjPa1EPfjvcmGi5pL5H4OLc+oxaeWp7IQ3/6ZrcHK/t4QQ==","signatures":[{"sig":"MEUCIQCP+flS7eW+rLO8qc+bfU5JX4MSpRjGx+Y8MWcJYZfe1wIgacSrVluxoYkHnEaZC3IcfU934o3aOUS46MoOgChaZO0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125141},"type":"module","engines":{"node":">=22.18.0"},"scripts":{"build":"tsc -p tsconfig.build.json","check":"pnpm run check:tsc && pnpm run check:oxlint && pnpm run check:astgrep && pnpm run check:test && pnpm run check:knip && pnpm run check:md","clean":"rm -rf dist","check:md":"markdownlint --config .markdownlint.jsonc \"**/*.md\" --ignore node_modules --ignore research","check:tsc":"tsc --noEmit","check:knip":"knip","check:test":"vitest run","check:oxlint":"oxlint","check:astgrep":"ast-grep scan"},"_npmUser":{"name":"robmclarty","email":"r@robmclarty.com"},"devEngines":{"packageManager":{"name":"pnpm","onFail":"download","version":"11.1.2"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"description":"Attention-first build process: 11 skills + a CLI that keep you the decider — guidance, not enforcement.","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"knip":"^6.16.1","oxlint":"^1.69.0","vitest":"^4.1.8","typescript":"^6.0.3","@types/node":"^24.0.0","@ast-grep/cli":"^0.43.0","markdownlint-cli":"^0.48.0"},"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.4.14_1782856776580_0.32988345225048255","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"plumbbob","version":"0.5.3","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":"Rob McLarty <hello@robmclarty.com>","license":"Apache-2.0","_id":"plumbbob@0.5.3","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://github.com/robmclarty/plumbbob#readme","bugs":"https://github.com/robmclarty/plumbbob/issues","bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"64e86acb038a52de53e05c490a96737e481629d0","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.5.3.tgz","fileCount":44,"integrity":"sha512-vrilBWF/1ort7+ZLoJecXMkGBfeck+oqNxx9scItqH3kRkdsSkHMUJ6M0/qjlVP45wQCT1BPK7a63jC7U547vg==","signatures":[{"sig":"MEUCIQDuAehWETxkXXe/eGCx1YQsY3q3PkWlJ2l6lqvz0U3+PQIgW/pC+LyeND1pT7SslswuTDo9tgBSkL4J2N97ktaMbBs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":173870},"type":"module","engines":{"node":">=22.18.0"},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist"},"_npmUser":{"name":"robmclarty","email":"r@robmclarty.com"},"devEngines":{"packageManager":{"name":"pnpm","onFail":"download","version":"11.1.2"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"description":"Attention-first build process: 12 skills + a CLI that keep you the decider — guidance, not enforcement.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"checkride":"0.1.6"},"_hasShrinkwrap":false,"devDependencies":{"fallow":"^2.103.0","oxlint":"^1.69.0","vitest":"^4.1.8","typescript":"^6.0.3","@types/node":"^24.0.0","@ast-grep/cli":"^0.43.0","markdownlint-cli2":"^0.22.1","@vitest/coverage-v8":"^4.1.9","@stryker-mutator/core":"^9.6.1","@stryker-mutator/vitest-runner":"^9.6.1"},"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.5.3_1783098313208_0.9383079652423731","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"plumbbob","version":"0.5.4","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":"Rob McLarty <hello@robmclarty.com>","license":"Apache-2.0","_id":"plumbbob@0.5.4","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://github.com/robmclarty/plumbbob#readme","bugs":"https://github.com/robmclarty/plumbbob/issues","bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"acf579fff3e78eed9aef1e6b2c32c3a283188779","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.5.4.tgz","fileCount":44,"integrity":"sha512-Cvy/CE7u3MomPGiYZEM0ZMN3XxBVpNI9D+Bd7AAbb5DOjP8xw0QsE1rkCrK8i9B+mnZdi5aXQJ5rlKxy+khhgQ==","signatures":[{"sig":"MEUCIGYNCYNjeJyeGp2Z9vryAyUeweaVIdPv3VJ0MN69D2e3AiEAhNP1pYkXDVUIt8VTi61+1ej0d/oEOrg1y4GznOEm+OQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":174682},"type":"module","engines":{"node":">=22.18.0"},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist"},"_npmUser":{"name":"robmclarty","email":"r@robmclarty.com"},"devEngines":{"packageManager":{"name":"pnpm","onFail":"download","version":"11.1.2"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"description":"Attention-first build process: 12 skills + a CLI that keep you the decider — guidance, not enforcement.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"checkride":"0.1.6"},"_hasShrinkwrap":false,"devDependencies":{"fallow":"^2.103.0","oxlint":"^1.69.0","vitest":"^4.1.8","typescript":"^6.0.3","@types/node":"^24.0.0","@ast-grep/cli":"^0.43.0","markdownlint-cli2":"^0.22.1","@vitest/coverage-v8":"^4.1.9","@stryker-mutator/core":"^9.6.1","@stryker-mutator/vitest-runner":"^9.6.1"},"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.5.4_1783111671439_0.08727459271397486","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"plumbbob","version":"0.6.1","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":"Rob McLarty <hello@robmclarty.com>","license":"Apache-2.0","_id":"plumbbob@0.6.1","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://github.com/robmclarty/plumbbob#readme","bugs":"https://github.com/robmclarty/plumbbob/issues","bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"3beca3c5fefdd57fb454c85c675aec120ee21938","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.6.1.tgz","fileCount":103,"integrity":"sha512-GcAJfcjOE6Ku1b6koQ5MI230HSfQNSusmiKUUo89EN5ejYrgfVXmJDDiZsJYTsH4kEJqB6I58kv0eszvhDG7dQ==","signatures":[{"sig":"MEQCIHIsrOdr+BYAr/iAk2TVBXFJry2jiNZyMva7xO2bC2DxAiA22x1tUjlqtdaaxt5lAq5lVsJ1n4F+Bt5wizl5kcpuuw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":420878},"type":"module","engines":{"node":">=22.18.0"},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist"},"_npmUser":{"name":"robmclarty","email":"r@robmclarty.com"},"devEngines":{"packageManager":{"name":"pnpm","onFail":"download","version":"11.1.2"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"description":"Attention-first build process: 12 skills + a CLI that keep you the decider — guidance, not enforcement.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"checkride":"0.1.6"},"_hasShrinkwrap":false,"devDependencies":{"fallow":"^2.103.0","oxlint":"^1.69.0","vitest":"^4.1.8","typescript":"^6.0.3","@types/node":"^24.0.0","@ast-grep/cli":"^0.43.0","markdownlint-cli2":"^0.22.1","@vitest/coverage-v8":"^4.1.9","@stryker-mutator/core":"^9.6.1","@stryker-mutator/vitest-runner":"^9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.6.1_1783129260136_0.31931562411824976","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"plumbbob","version":"0.6.3","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":"Rob McLarty <hello@robmclarty.com>","license":"Apache-2.0","_id":"plumbbob@0.6.3","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://github.com/robmclarty/plumbbob#readme","bugs":"https://github.com/robmclarty/plumbbob/issues","bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"6700d6a3667733fb1c8bbe3363c2386fd8f3fc3c","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.6.3.tgz","fileCount":103,"integrity":"sha512-oHoZ2bK+TwS5vO1c8NxRBV58n9+YgB8jRjuSt0LyhrUB6RUOIwukXGILfO5iVVMpAmJQfUmEt6uNc8TU8d4mIQ==","signatures":[{"sig":"MEQCIB1aomZTw0BF8z8TtmuokRaiEbR5pyQUOrOrJL0R/jtaAiAWdGC9+LE5ubAFx3oYQxcEG4sLCZBFz97H8eJ8hAHJtg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":421961},"type":"module","engines":{"node":">=22.18.0"},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist"},"_npmUser":{"name":"robmclarty","email":"r@robmclarty.com"},"devEngines":{"packageManager":{"name":"pnpm","onFail":"download","version":"11.1.2"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"description":"Attention-first build process: 12 skills + a CLI that keep you the decider — guidance, not enforcement.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"checkride":"0.1.6"},"_hasShrinkwrap":false,"devDependencies":{"fallow":"^2.103.0","oxlint":"^1.69.0","vitest":"^4.1.8","typescript":"^6.0.3","@types/node":"^24.0.0","@ast-grep/cli":"^0.43.0","markdownlint-cli2":"^0.22.1","@vitest/coverage-v8":"^4.1.9","@stryker-mutator/core":"^9.6.1","@stryker-mutator/vitest-runner":"^9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.6.3_1783437853576_0.000322674047185334","host":"s3://npm-registry-packages-npm-production"}},"0.6.4":{"name":"plumbbob","version":"0.6.4","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":"Rob McLarty <hello@robmclarty.com>","license":"Apache-2.0","_id":"plumbbob@0.6.4","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://github.com/robmclarty/plumbbob#readme","bugs":"https://github.com/robmclarty/plumbbob/issues","bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"8a215add70754dd2d6d0981a3ac9fbf43f7538cb","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.6.4.tgz","fileCount":103,"integrity":"sha512-Qp9Isv0ahgyn/mE13s98MsE4JWNq959cBJKuV3N3FAZYb9ljeG+42aEhpaLIB9NN9uZCxCCUkitgXnJnvNQi5Q==","signatures":[{"sig":"MEQCIBJGKbQZM6zPQ8ZlzV6krIF0Ntswq0SAzGD3OfhiWf5JAiBJeuaNX7UfpmXDnH2k0xyoajMoOxm+HFqBG0tNKb71XA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":424349},"type":"module","engines":{"node":">=22.18.0"},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist"},"_npmUser":{"name":"robmclarty","email":"r@robmclarty.com"},"devEngines":{"packageManager":{"name":"pnpm","onFail":"download","version":"11.1.2"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"description":"Attention-first build process: 12 skills + a CLI that keep you the decider — guidance, not enforcement.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"checkride":"0.1.6"},"_hasShrinkwrap":false,"devDependencies":{"fallow":"^2.103.0","oxlint":"^1.69.0","vitest":"^4.1.8","typescript":"^6.0.3","@types/node":"^24.0.0","@ast-grep/cli":"^0.43.0","markdownlint-cli2":"^0.22.1","@vitest/coverage-v8":"^4.1.9","@stryker-mutator/core":"^9.6.1","@stryker-mutator/vitest-runner":"^9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.6.4_1783474217145_0.9463318480601839","host":"s3://npm-registry-packages-npm-production"}},"0.6.5":{"name":"plumbbob","version":"0.6.5","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":"Rob McLarty <hello@robmclarty.com>","license":"Apache-2.0","_id":"plumbbob@0.6.5","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://github.com/robmclarty/plumbbob#readme","bugs":"https://github.com/robmclarty/plumbbob/issues","bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"252161aea695d58cb344a27e35c800cfbd85e877","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.6.5.tgz","fileCount":103,"integrity":"sha512-Eqr4oRkdefGAv3zvkfk5JsUHVu2567Vh6igcOH/DdoYau+etB9p/k5QqNpML3hF+RGnJsNT86RKpDSftNjh3tQ==","signatures":[{"sig":"MEQCIAVR5KgEKZYG1XcDe5m14GV17tv3FBemBO1F1I++BcENAiBFE93oOUYqM03jLld0hW9eAyUKOZNUfxUm0UrPe4HVkQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":424160},"type":"module","engines":{"node":">=22.18.0"},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist"},"_npmUser":{"name":"robmclarty","email":"r@robmclarty.com"},"devEngines":{"packageManager":{"name":"pnpm","onFail":"download","version":"11.1.2"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"description":"Attention-first build process: 12 skills + a CLI that keep you the decider — guidance, not enforcement.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"checkride":"0.1.6"},"_hasShrinkwrap":false,"devDependencies":{"fallow":"^2.103.0","oxlint":"^1.69.0","vitest":"^4.1.8","typescript":"^6.0.3","@types/node":"^24.0.0","@ast-grep/cli":"^0.43.0","markdownlint-cli2":"^0.22.1","@vitest/coverage-v8":"^4.1.9","@stryker-mutator/core":"^9.6.1","@stryker-mutator/vitest-runner":"^9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.6.5_1783478588072_0.6327677198839354","host":"s3://npm-registry-packages-npm-production"}},"0.6.6":{"name":"plumbbob","version":"0.6.6","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":"Rob McLarty <hello@robmclarty.com>","license":"Apache-2.0","_id":"plumbbob@0.6.6","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://github.com/robmclarty/plumbbob#readme","bugs":"https://github.com/robmclarty/plumbbob/issues","bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"44be9b22664c181d414915b865a52e89dfc30c84","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.6.6.tgz","fileCount":103,"integrity":"sha512-5MyBi+9ehJqndTy8OcWmCdpd5GdWvndyRRV+BSOlQz7DpGBbMjM982mTeB/DBDmB8d0pRKmTM454Ymh67DR8mA==","signatures":[{"sig":"MEYCIQCHze2aYky9iWig3qaSDmNeCPkquHKMgiEkOCCqmO6YtAIhAIBtBzz3nkJg3Kl3hSf/iOJrwiDucWGqoSB+xipRBBCZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":427080},"type":"module","engines":{"node":">=22.18.0"},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist"},"_npmUser":{"name":"robmclarty","email":"r@robmclarty.com"},"devEngines":{"packageManager":{"name":"pnpm","onFail":"download","version":"11.1.2"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"description":"Attention-first build process: 12 skills + a CLI that keep you the decider — guidance, not enforcement.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"checkride":"0.1.6"},"_hasShrinkwrap":false,"devDependencies":{"fallow":"^2.103.0","oxlint":"^1.69.0","vitest":"^4.1.8","typescript":"^6.0.3","@types/node":"^24.0.0","@ast-grep/cli":"^0.43.0","markdownlint-cli2":"^0.22.1","@vitest/coverage-v8":"^4.1.9","@stryker-mutator/core":"^9.6.1","@stryker-mutator/vitest-runner":"^9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.6.6_1783648552617_0.7297379853355792","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"plumbbob","version":"0.8.0","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":"Rob McLarty <hello@robmclarty.com>","license":"Apache-2.0","_id":"plumbbob@0.8.0","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://github.com/robmclarty/plumbbob#readme","bugs":"https://github.com/robmclarty/plumbbob/issues","bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"4b6ea380e3528a98cf58ed9a800ba3112bc300a1","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.8.0.tgz","fileCount":157,"integrity":"sha512-wcMzq3kRQwhtubljKfCvQTa6OwHBVTiv6tIUxozmilpnM8V8aT7jUsZXzSItgtyt0nh26A5dvCY4HMLQretbEQ==","signatures":[{"sig":"MEQCIFalw99S8j+TXMPgaQcZwoxehMT9oPka/jI62OHv3zMXAiB2YmYypEgy95Q4GriakD9bz3Xt5oJ4c/gVmD9j67B7PQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":608072},"type":"module","engines":{"node":">=22.18.0"},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist","eval:report":"node test/evals/run.ts --report","eval:latched":"pnpm build && node test/evals/run.ts --sweep latched","eval:baseline":"pnpm build && node test/evals/run.ts --sweep baseline"},"_npmUser":{"name":"robmclarty","email":"r@robmclarty.com"},"devEngines":{"packageManager":{"name":"pnpm","onFail":"download","version":"11.1.2"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"description":"Attention-first build process: 12 skills + a CLI that keep you the decider — guidance on the work, a latch on the record.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"checkride":"0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"fallow":"^2.103.0","oxlint":"^1.69.0","vitest":"^4.1.8","fascicle":"0.8.16","typescript":"^6.0.3","@types/node":"^24.0.0","@ast-grep/cli":"^0.43.0","markdownlint-cli2":"^0.22.1","@vitest/coverage-v8":"^4.1.9","@stryker-mutator/core":"^9.6.1","@stryker-mutator/vitest-runner":"^9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.8.0_1783781900028_0.6197815927368542","host":"s3://npm-registry-packages-npm-production"}},"0.8.3":{"name":"plumbbob","version":"0.8.3","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":"Rob McLarty <hello@robmclarty.com>","license":"Apache-2.0","_id":"plumbbob@0.8.3","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://github.com/robmclarty/plumbbob#readme","bugs":"https://github.com/robmclarty/plumbbob/issues","bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"f19fd16980ff46eedf3f8f51e90da2ec61245857","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.8.3.tgz","fileCount":157,"integrity":"sha512-t846egz3CJXeoiJj1PHcUzMIQGBmzkxonAFVtE+Jg85gJiBmIyqtDOIVVylWi5w3iMRXaCrjjALDL6dNzaKLng==","signatures":[{"sig":"MEQCIBbwmkkK1+0DIwp8zY1ZWL9bLdrSbKGXm4FWjnrd4Iy/AiA0oN9i+XiPA0tJbHHyYcccr6bzGdCX/LMooPBm+v2Zdw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":612877},"type":"module","engines":{"node":">=22.18.0"},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist","eval:report":"node test/evals/run.ts --report","eval:latched":"pnpm build && node test/evals/run.ts --sweep latched","eval:baseline":"pnpm build && node test/evals/run.ts --sweep baseline"},"_npmUser":{"name":"robmclarty","email":"r@robmclarty.com"},"devEngines":{"packageManager":{"name":"pnpm","onFail":"download","version":"11.1.2"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"description":"Attention-first build process: 12 skills + a CLI that keep you the decider — guidance on the work, a latch on the record.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"checkride":"0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"fallow":"^2.103.0","oxlint":"^1.69.0","vitest":"^4.1.8","fascicle":"0.8.16","typescript":"^6.0.3","@types/node":"^24.0.0","@ast-grep/cli":"^0.43.0","markdownlint-cli2":"^0.22.1","@vitest/coverage-v8":"^4.1.9","@stryker-mutator/core":"^9.6.1","@stryker-mutator/vitest-runner":"^9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.8.3_1783821483170_0.6057908890587382","host":"s3://npm-registry-packages-npm-production"}},"0.8.5":{"name":"plumbbob","version":"0.8.5","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":"Rob McLarty <hello@robmclarty.com>","license":"Apache-2.0","_id":"plumbbob@0.8.5","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://github.com/robmclarty/plumbbob#readme","bugs":"https://github.com/robmclarty/plumbbob/issues","bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"16c5e3c0974318964bb1e7db453c8965e6660737","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.8.5.tgz","fileCount":158,"integrity":"sha512-r49T/N6llXhacZn7z5ogztlZLQEa7Bueghdp/vTNNIgy05gahTfap+lgNs3VtARYT8jEiamE8mDhKBugcapDxw==","signatures":[{"sig":"MEYCIQCbJXtd5khx0hfXN8MB7Fv0m+b9/T1MJiQ/szXkhIWrBgIhAKBmnMiQ/ga+5cUB72ofj6yzveSbA0phiU1Qtf9GOqWQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":622465},"type":"module","engines":{"node":">=22.18.0"},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist","eval:report":"node test/evals/run.ts --report","eval:latched":"pnpm build && node test/evals/run.ts --sweep latched","eval:baseline":"pnpm build && node test/evals/run.ts --sweep baseline"},"_npmUser":{"name":"robmclarty","email":"r@robmclarty.com"},"devEngines":{"packageManager":{"name":"pnpm","onFail":"download","version":"11.1.2"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"description":"Attention-first build process: 12 skills + a CLI that keep you the decider — guidance on the work, a latch on the record.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"checkride":"0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"fallow":"2.103.0","oxlint":"1.69.0","vitest":"4.1.9","fascicle":"0.8.16","typescript":"6.0.3","@types/node":"24.13.1","@ast-grep/cli":"0.43.0","markdownlint-cli2":"0.22.1","@vitest/coverage-v8":"4.1.9","@stryker-mutator/core":"9.6.1","@stryker-mutator/vitest-runner":"9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.8.5_1783958647067_0.4988627996794006","host":"s3://npm-registry-packages-npm-production"}},"0.8.10":{"name":"plumbbob","version":"0.8.10","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":{"name":"Rob McLarty","email":"hello@robmclarty.com"},"license":"Apache-2.0","_id":"plumbbob@0.8.10","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://github.com/robmclarty/plumbbob#readme","bugs":{"url":"https://github.com/robmclarty/plumbbob/issues"},"bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"f128c1d1e71c6fbcdb635550ae900eefa0d20b9c","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.8.10.tgz","fileCount":158,"integrity":"sha512-eYup4GikKUmKtmKZI9xcoEqnMmGXKapDK539UGOHPs5XDLb4aQhktO+2ZKWHDBRt1mDj+VtPiFA2TjsztNmYCA==","signatures":[{"sig":"MEYCIQC+yehp1kFBps3PHSLuuD642SqQR45MWYIGuFPz/B7rogIhAPbmTY/b1Vlk5NoEOd9gLMXddE4IzytPvydx6A3gIR0O","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/plumbbob@0.8.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":628053},"type":"module","engines":{"node":">=22.18.0"},"gitHead":"f4809c1c626cb9ce2b6645e1d617d6f1b625cfd7","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist","prepack":"pnpm run clean && pnpm run build","eval:report":"node test/evals/run.ts --report","eval:latched":"pnpm build && node test/evals/run.ts --sweep latched","eval:baseline":"pnpm build && node test/evals/run.ts --sweep baseline"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9dde7f48-ad31-4a7e-bb36-f68a0a2a39f7"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"_npmVersion":"11.18.0","description":"Attention-first build process: 12 skills + a CLI that keep you the decider — guidance on the work, a latch on the record.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"checkride":"0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"fallow":"2.103.0","oxlint":"1.69.0","vitest":"4.1.9","fascicle":"0.8.16","typescript":"6.0.3","@types/node":"24.13.1","@ast-grep/cli":"0.43.0","markdownlint-cli2":"0.22.1","@vitest/coverage-v8":"4.1.9","@stryker-mutator/core":"9.6.1","@stryker-mutator/vitest-runner":"9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.8.10_1784431588099_0.323753774156206","host":"s3://npm-registry-packages-npm-production"}},"0.8.11":{"name":"plumbbob","version":"0.8.11","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":{"name":"Rob McLarty","email":"hello@robmclarty.com"},"license":"Apache-2.0","_id":"plumbbob@0.8.11","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://github.com/robmclarty/plumbbob#readme","bugs":{"url":"https://github.com/robmclarty/plumbbob/issues"},"bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"2f14f66e1ad43a99699e125c7d756fdd3bb8bf67","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.8.11.tgz","fileCount":158,"integrity":"sha512-JiSY8Q9RcfpqHkbcomERvabJSmIs7puXK/9W3B8cHM+35WUi711CMAjvw26dcTx2t+eTViujGwqhJghBdlMO2Q==","signatures":[{"sig":"MEUCIQCSEzPVTxcdZV5KpVgZR8DZHeO6rUvr54W582NLYD+HwwIgJlNbZwzXYDgqDVVxFe130vrTuktjCDO/uKtLJmMeN2s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/plumbbob@0.8.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":629797},"type":"module","engines":{"node":">=22.18.0"},"gitHead":"c9c38c3c55805705787fe0e6a086c5cc1068cb0a","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist","prepack":"pnpm run clean && pnpm run build","eval:report":"node test/evals/run.ts --report","eval:latched":"pnpm build && node test/evals/run.ts --sweep latched","eval:baseline":"pnpm build && node test/evals/run.ts --sweep baseline"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9dde7f48-ad31-4a7e-bb36-f68a0a2a39f7"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"_npmVersion":"11.18.0","description":"Attention-first build process: 12 skills + a CLI that keep you the decider — guidance on the work, a latch on the record.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"checkride":"0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"fallow":"2.103.0","oxlint":"1.69.0","vitest":"4.1.9","fascicle":"0.8.16","typescript":"6.0.3","@types/node":"24.13.1","@ast-grep/cli":"0.43.0","markdownlint-cli2":"0.22.1","@vitest/coverage-v8":"4.1.9","@stryker-mutator/core":"9.6.1","@stryker-mutator/vitest-runner":"9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.8.11_1784440850813_0.79285918178908","host":"s3://npm-registry-packages-npm-production"}},"0.8.12":{"name":"plumbbob","version":"0.8.12","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":{"name":"Rob McLarty","email":"hello@robmclarty.com"},"license":"Apache-2.0","_id":"plumbbob@0.8.12","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://github.com/robmclarty/plumbbob#readme","bugs":{"url":"https://github.com/robmclarty/plumbbob/issues"},"bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"13a689ade5eec22f9d182dc3d8cb4893acdbb700","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.8.12.tgz","fileCount":159,"integrity":"sha512-KIi27q9eyE2/vhGhPK/37xV6Torc/Yc4RDqoSkfq59m5hKpl0GXTFrxZZnt31XSBxGgK7yg8I/YDXyOXOQ1YoA==","signatures":[{"sig":"MEUCIEx0g9pCWvlPofs6lDQzhuCwlWE2Hp1m4TbUJI0P5O7oAiEA2fn6YtO1GshHReDCd6RZBHCSwHSrV5jlvA+cqCUhxz8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/plumbbob@0.8.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636406},"type":"module","engines":{"node":">=22.18.0"},"gitHead":"fa0aec286525cad8fff734523ccca347dafcb098","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist","prepack":"pnpm run clean && pnpm run build","eval:report":"node test/evals/run.ts --report","eval:latched":"pnpm build && node test/evals/run.ts --sweep latched","eval:baseline":"pnpm build && node test/evals/run.ts --sweep baseline"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9dde7f48-ad31-4a7e-bb36-f68a0a2a39f7"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"_npmVersion":"11.18.0","description":"Attention-first build process: 12 skills + a CLI that keep you the decider — guidance on the work, a latch on the record.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"checkride":"0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"fallow":"2.103.0","oxlint":"1.69.0","vitest":"4.1.9","fascicle":"0.8.16","typescript":"6.0.3","@types/node":"24.13.1","@ast-grep/cli":"0.43.0","markdownlint-cli2":"0.22.1","@vitest/coverage-v8":"4.1.9","@stryker-mutator/core":"9.6.1","@stryker-mutator/vitest-runner":"9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.8.12_1784442908286_0.6856942751887849","host":"s3://npm-registry-packages-npm-production"}},"0.8.13":{"name":"plumbbob","version":"0.8.13","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":{"name":"Rob McLarty","email":"hello@robmclarty.com"},"license":"Apache-2.0","_id":"plumbbob@0.8.13","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://github.com/robmclarty/plumbbob#readme","bugs":{"url":"https://github.com/robmclarty/plumbbob/issues"},"bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"2d8cc8636296a35a26058c91e6914df1df3f7219","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.8.13.tgz","fileCount":162,"integrity":"sha512-MTMv6Ke/NaszGaaBtVlZMaD18dqTlmK9Be8ei3Nsa5V/PG82SUbppZxOdVvsZBfEOPwLrSAvWT4pLuwRxtARBQ==","signatures":[{"sig":"MEYCIQD2y/b/ny+y93UrOUbh6/EKgdTsYKUIpIBZPoeKRgOgLQIhAMSCXyIwS5aiV02e4cnxhnnTDovasNoHpaKKv1yNonTY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/plumbbob@0.8.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":652096},"type":"module","engines":{"node":">=22.18.0"},"gitHead":"cbcede312dbc304947b07ccdf190d8b86c075197","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist","prepack":"pnpm run clean && pnpm run build","eval:report":"node test/evals/run.ts --report","eval:latched":"pnpm build && node test/evals/run.ts --sweep latched","eval:baseline":"pnpm build && node test/evals/run.ts --sweep baseline"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9dde7f48-ad31-4a7e-bb36-f68a0a2a39f7"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"_npmVersion":"11.18.0","description":"Attention-first build process: 12 skills + a CLI that keep you the decider — guidance on the work, a latch on the record.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"checkride":"0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"fallow":"2.103.0","oxlint":"1.69.0","vitest":"4.1.9","fascicle":"0.8.16","typescript":"6.0.3","@types/node":"24.13.1","@ast-grep/cli":"0.43.0","markdownlint-cli2":"0.22.1","@vitest/coverage-v8":"4.1.9","@stryker-mutator/core":"9.6.1","@stryker-mutator/vitest-runner":"9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.8.13_1784480930318_0.902614311630114","host":"s3://npm-registry-packages-npm-production"}},"0.8.14":{"name":"plumbbob","version":"0.8.14","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":{"name":"Rob McLarty","email":"hello@robmclarty.com"},"license":"Apache-2.0","_id":"plumbbob@0.8.14","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://github.com/robmclarty/plumbbob#readme","bugs":{"url":"https://github.com/robmclarty/plumbbob/issues"},"bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"85cbd7e9ff6271fdf693a0a6e3216d995d410956","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.8.14.tgz","fileCount":162,"integrity":"sha512-2CFVQcQhpZ8uQJqhi2Dj0U9CUr8wU/0dYf23RwVupiHCoxUSKUWDPIvEzFgST1HAJMuAdlXx/ixXtKoQJdT41A==","signatures":[{"sig":"MEUCIQDkSq2wNXdpdtDwBXcfC7PowgSkcngU2F2QRPRiL59axAIgIySS/Otk7vcfn123LpRw4adVXWZX4b+mUzWBhK7lJ7I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/plumbbob@0.8.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":662047},"type":"module","engines":{"node":">=22.18.0"},"gitHead":"ac87395cf5f3839247cc66e166511ecb4a98d53c","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist","prepack":"pnpm run clean && pnpm run build","eval:report":"node test/evals/run.ts --report","eval:latched":"pnpm build && node test/evals/run.ts --sweep latched","eval:baseline":"pnpm build && node test/evals/run.ts --sweep baseline"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9dde7f48-ad31-4a7e-bb36-f68a0a2a39f7"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"_npmVersion":"11.18.0","description":"Attention-first build process: 12 skills + a CLI that keep you the decider — guidance on the work, a latch on the record.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"checkride":"0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"fallow":"2.103.0","oxlint":"1.69.0","vitest":"4.1.9","fascicle":"0.8.16","typescript":"6.0.3","@types/node":"24.13.1","@ast-grep/cli":"0.43.0","markdownlint-cli2":"0.22.1","@vitest/coverage-v8":"4.1.9","@stryker-mutator/core":"9.6.1","@stryker-mutator/vitest-runner":"9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.8.14_1784495874547_0.6998550597631041","host":"s3://npm-registry-packages-npm-production"}},"0.8.17":{"name":"plumbbob","version":"0.8.17","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":{"name":"Rob McLarty","email":"hello@robmclarty.com"},"license":"Apache-2.0","_id":"plumbbob@0.8.17","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://github.com/robmclarty/plumbbob#readme","bugs":{"url":"https://github.com/robmclarty/plumbbob/issues"},"bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"347635bd4d69682cd4c8d6f9bf395738d3d1bf62","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.8.17.tgz","fileCount":178,"integrity":"sha512-ssb/MP0PPgFKoEZ1iUT3z19oxEYwrsHAmxK/HL2NBrydM4GZw/jM9Ak59gaJoFBcpp3sHeWj1I14qunXk3++JA==","signatures":[{"sig":"MEUCIDnjJwx/gGy7wOAJwrPhyY7W5rEvgYySNj89XrB8w0lfAiEAxrbvzluj9TMWsPgLO2cHKhM4xcQuOyCdnsj6qmwoGMY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/plumbbob@0.8.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":886966},"type":"module","engines":{"node":">=22.18.0"},"gitHead":"7cab792f9925419d2edb306edc55f77181768ed9","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist","prepack":"pnpm run clean && pnpm run build","eval:report":"node test/evals/run.ts --report","eval:latched":"pnpm build && node test/evals/run.ts --sweep latched","eval:baseline":"pnpm build && node test/evals/run.ts --sweep baseline"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9dde7f48-ad31-4a7e-bb36-f68a0a2a39f7"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"_npmVersion":"11.18.0","description":"Attention-first build process: 12 skills + a CLI that keep you the decider — guidance on the work, a latch on the record.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"checkride":"0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"fallow":"2.103.0","oxlint":"1.69.0","vitest":"4.1.9","fascicle":"0.8.16","typescript":"6.0.3","@types/node":"24.13.1","@ast-grep/cli":"0.43.0","markdownlint-cli2":"0.22.1","@vitest/coverage-v8":"4.1.9","@stryker-mutator/api":"9.6.1","@stryker-mutator/core":"9.6.1","@stryker-mutator/vitest-runner":"9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.8.17_1784514631795_0.6697675101558618","host":"s3://npm-registry-packages-npm-production"}},"0.8.18":{"name":"plumbbob","version":"0.8.18","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":{"name":"Rob McLarty","email":"hello@robmclarty.com"},"license":"Apache-2.0","_id":"plumbbob@0.8.18","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://robmclarty.github.io/plumbbob/","bugs":{"url":"https://github.com/robmclarty/plumbbob/issues"},"bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"d8d23d8eb1f40e6c77b4486eac3917b1369d0205","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.8.18.tgz","fileCount":178,"integrity":"sha512-eI2ortJvnJKQeG4AI6ChwG9dvmZo+LtyVzQJEr62F5fS8uo2bCKhHJhP0Y5Wt8hQrQcF5BSxfTEJnV0s4J9mBw==","signatures":[{"sig":"MEYCIQCSWC1cnHOBIn59lNHCEmOtkZ1BylTY7TwGg+PoGx5fugIhAPf2YBl8tYLTlS1D529gBENIBs9KV/4c7XmVv8L2evtn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/plumbbob@0.8.18","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":887956},"type":"module","engines":{"node":">=22.18.0"},"gitHead":"981fa9ddb6039521b3fd94c143ef89b639bdd7d6","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist","prepack":"pnpm run clean && pnpm run build","eval:report":"node test/evals/run.ts --report","eval:latched":"pnpm build && node test/evals/run.ts --sweep latched","eval:baseline":"pnpm build && node test/evals/run.ts --sweep baseline"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9dde7f48-ad31-4a7e-bb36-f68a0a2a39f7"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"_npmVersion":"11.18.0","description":"Attention-first build process: 12 skills + a CLI that keep you the decider — guidance on the work, a latch on the record.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"checkride":"0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"fallow":"2.103.0","oxlint":"1.69.0","vitest":"4.1.9","fascicle":"0.8.16","typescript":"6.0.3","@types/node":"24.13.1","@ast-grep/cli":"0.43.0","markdownlint-cli2":"0.22.1","@vitest/coverage-v8":"4.1.9","@stryker-mutator/api":"9.6.1","@stryker-mutator/core":"9.6.1","@stryker-mutator/vitest-runner":"9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.8.18_1784519554316_0.1716035677712422","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"plumbbob","version":"0.9.1","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":{"name":"Rob McLarty","email":"hello@robmclarty.com"},"license":"Apache-2.0","_id":"plumbbob@0.9.1","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://robmclarty.github.io/plumbbob/","bugs":{"url":"https://github.com/robmclarty/plumbbob/issues"},"bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"97b6816fe210551998df51d8f3d6c5190be59b7d","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.9.1.tgz","fileCount":178,"integrity":"sha512-dMKmDfGYeVs7m0BlPFMus83mM1MjkhdrlBBiOZ0AnICVMWptY089x4ZY40Hij/XqA+oR409a5BcUJk1moe+LDA==","signatures":[{"sig":"MEYCIQC2pviMGlZ4lDK2PZnzrFrvQgzr8TvkUROvXS8/17T8iwIhAIXFElpJRNw3o2aI2knTqePaN5+lIIS5PVHbFaMYGKUb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/plumbbob@0.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":917187},"type":"module","engines":{"node":">=22.18.0"},"gitHead":"7e028a3a746bcec31ac8950e5b91f32718682f41","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist","prepack":"pnpm run clean && pnpm run build","eval:report":"node test/evals/run.ts --report","eval:latched":"pnpm build && node test/evals/run.ts --sweep latched","eval:baseline":"pnpm build && node test/evals/run.ts --sweep baseline"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9dde7f48-ad31-4a7e-bb36-f68a0a2a39f7"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"_npmVersion":"11.18.0","description":"Attention-first build process: 12 skills + a CLI that keep you the decider — guidance on the work, a latch on the record.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"checkride":"0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"fallow":"2.103.0","oxlint":"1.69.0","vitest":"4.1.9","fascicle":"0.8.16","typescript":"6.0.3","@types/node":"24.13.1","@ast-grep/cli":"0.43.0","markdownlint-cli2":"0.22.1","@vitest/coverage-v8":"4.1.9","@stryker-mutator/api":"9.6.1","@stryker-mutator/core":"9.6.1","@stryker-mutator/vitest-runner":"9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.9.1_1785178562696_0.8233864534407156","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"plumbbob","version":"0.9.2","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":{"name":"Rob McLarty","email":"hello@robmclarty.com"},"license":"Apache-2.0","_id":"plumbbob@0.9.2","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://robmclarty.github.io/plumbbob/","bugs":{"url":"https://github.com/robmclarty/plumbbob/issues"},"bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"5e4a602b1993de27b01fba4ebdb99e04f4281aa2","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.9.2.tgz","fileCount":178,"integrity":"sha512-2LtUTPafb6uP9wlT6JJUwBGT7VyDcrs19rSHWsGbzDdd3AWEs03l+0EL0M58fWQYZ0Wp7Cpm6/e5BoFL+haUNA==","signatures":[{"sig":"MEQCIESluCHMixf+R/YRXKuYeGCHgcOs9f/FgnUWZClbptjrAiBGrafdDKZli/OVRN0LXi1WEwjtW7Ob+ecMVtSs7arjzQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/plumbbob@0.9.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":919070},"type":"module","engines":{"node":">=22.18.0"},"gitHead":"fd1731c1a7c61d0218b2c82f2f1e18b117f121f5","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist","prepack":"pnpm run clean && pnpm run build","eval:report":"node test/evals/run.ts --report","eval:latched":"pnpm build && node test/evals/run.ts --sweep latched","eval:baseline":"pnpm build && node test/evals/run.ts --sweep baseline"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9dde7f48-ad31-4a7e-bb36-f68a0a2a39f7"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"_npmVersion":"11.18.0","description":"Attention-first build process: 12 skills + a CLI that keep you the decider — guidance on the work, a latch on the record.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"checkride":"0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"fallow":"2.103.0","oxlint":"1.69.0","vitest":"4.1.9","fascicle":"0.8.16","typescript":"6.0.3","@types/node":"24.13.1","@ast-grep/cli":"0.43.0","markdownlint-cli2":"0.22.1","@vitest/coverage-v8":"4.1.9","@stryker-mutator/api":"9.6.1","@stryker-mutator/core":"9.6.1","@stryker-mutator/vitest-runner":"9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.9.2_1785254886328_0.13484354609310922","host":"s3://npm-registry-packages-npm-production"}},"0.9.3":{"name":"plumbbob","version":"0.9.3","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":{"name":"Rob McLarty","email":"hello@robmclarty.com"},"license":"Apache-2.0","_id":"plumbbob@0.9.3","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://robmclarty.github.io/plumbbob/","bugs":{"url":"https://github.com/robmclarty/plumbbob/issues"},"bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"da1f720e79b584f556cff144b7831d67d654b82d","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.9.3.tgz","fileCount":178,"integrity":"sha512-ekpl/8BV8yMDUG2vV8Dl4yxN5zC63QFFR8/ni7vm3zW4XF5sPlQfEU0R0RJzaftRFWlVD6IzwaQuUmGIhawafA==","signatures":[{"sig":"MEUCIQCNavFrZWb/Uud4gr7Q/fk2y5Wql9QO1M6eY57JwgnyfAIgE6Grj0HZghILHfoBOvIdIMCPQasxPogn6Enx4qBOKCE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/plumbbob@0.9.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":929992},"type":"module","engines":{"node":">=22.18.0"},"gitHead":"ef789b493d6b4f58b4b4a5079b6b4cda3dc1b1b2","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist","prepack":"pnpm run clean && pnpm run build","eval:report":"node test/evals/run.ts --report","eval:latched":"pnpm build && node test/evals/run.ts --sweep latched","eval:baseline":"pnpm build && node test/evals/run.ts --sweep baseline"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9dde7f48-ad31-4a7e-bb36-f68a0a2a39f7"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"_npmVersion":"11.19.0","description":"Attention-first build process: 12 skills + a CLI that keep you the decider — guidance on the work, a latch on the record.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"checkride":"0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"fallow":"2.103.0","oxlint":"1.69.0","vitest":"4.1.9","fascicle":"0.8.16","typescript":"6.0.3","@types/node":"24.13.1","@ast-grep/cli":"0.43.0","markdownlint-cli2":"0.22.1","@vitest/coverage-v8":"4.1.9","@stryker-mutator/api":"9.6.1","@stryker-mutator/core":"9.6.1","@stryker-mutator/vitest-runner":"9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.9.3_1785467830095_0.4928705298146525","host":"s3://npm-registry-packages-npm-production"}},"0.9.5":{"name":"plumbbob","version":"0.9.5","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":{"name":"Rob McLarty","email":"hello@robmclarty.com"},"license":"Apache-2.0","_id":"plumbbob@0.9.5","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://robmclarty.github.io/plumbbob/","bugs":{"url":"https://github.com/robmclarty/plumbbob/issues"},"bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"e3aebf12f062afb3c18b1a9629d1d860e694b0a0","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.9.5.tgz","fileCount":340,"integrity":"sha512-wVF6wvs4fo2zuMl1oQBE/GfsfkWEmBxNtRx9sEtYMPvz2RVJUL+aOsO1/LyGCEPEfdahWKfzLy6V6zjMQvLKkg==","signatures":[{"sig":"MEUCIF4J5ixslzEmjFHBLhfTGx3cveFgFmyGQrS9KKa2ycZGAiEAgl2MIbZwbH3lptEeK/cInB7Q6FcGatC7sPLSbeV3l5c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/plumbbob@0.9.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1635585},"type":"module","engines":{"node":">=22.18.0"},"gitHead":"b17e60da3cdd821d2deb23302baeea6b7c755a31","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist","prepack":"pnpm run clean && pnpm run build","eval:report":"node test/evals/run.ts --report","eval:latched":"pnpm build && node test/evals/run.ts --sweep latched","eval:baseline":"pnpm build && node test/evals/run.ts --sweep baseline"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9dde7f48-ad31-4a7e-bb36-f68a0a2a39f7"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"_npmVersion":"11.19.0","description":"Attention-first build process: 12 skills + a CLI that keep you the decider — guidance on the work, a latch on the record.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"checkride":"0.10.2"},"_hasShrinkwrap":false,"devDependencies":{"fallow":"2.103.0","oxlint":"1.69.0","vitest":"4.1.9","fascicle":"0.8.16","typescript":"6.0.3","@types/node":"24.13.1","@ast-grep/cli":"0.43.0","markdownlint-cli2":"0.22.1","@vitest/coverage-v8":"4.1.9","@stryker-mutator/api":"9.6.1","@stryker-mutator/core":"9.6.1","@stryker-mutator/vitest-runner":"9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.9.5_1786083522715_0.5513501916238883","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"plumbbob","version":"0.10.0","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":{"name":"Rob McLarty","email":"hello@robmclarty.com"},"license":"Apache-2.0","_id":"plumbbob@0.10.0","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://robmclarty.github.io/plumbbob/","bugs":{"url":"https://github.com/robmclarty/plumbbob/issues"},"bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"faa087ca7b6832f99f6941590598d514bb0b4049","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.10.0.tgz","fileCount":356,"integrity":"sha512-LQDABykAOmiZsX15WDozeFHLoX8j0hH487icWl0nB51PbBqJW3Yfj8NdREA1doZCbo7vufokaeO+/Os5YtHoRA==","signatures":[{"sig":"MEQCIGP8bZ0PyQ3zI3v+8hKfa40FQUSSYfin4X1H5JPAJrKnAiBXN8H10J0HaZdCtbMsdbLjOaab7K9xhpn1W/qRjLu1DQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/plumbbob@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1807443},"type":"module","engines":{"node":">=22.18.0"},"gitHead":"b9723872c32db43c32c95a9c3e3f958e7458bb8c","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist","prepack":"pnpm run clean && pnpm run build","eval:report":"node test/evals/run.ts --report","eval:latched":"pnpm build && node test/evals/run.ts --sweep latched","eval:baseline":"pnpm build && node test/evals/run.ts --sweep baseline"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9dde7f48-ad31-4a7e-bb36-f68a0a2a39f7"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"_npmVersion":"11.19.0","description":"Attention-first build process: 12 skills + a CLI that keep you the decider — guidance on the work, a latch on the record.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"checkride":"0.12.2"},"_hasShrinkwrap":false,"devDependencies":{"fallow":"3.14.0","oxlint":"1.78.0","vitest":"4.1.10","fascicle":"0.8.16","typescript":"6.0.3","@types/node":"26.2.0","@vvago/vale":"3.17.1","@ast-grep/cli":"0.45.1","markdownlint-cli2":"0.23.2","@vitest/coverage-v8":"4.1.10","@stryker-mutator/api":"9.6.1","@stryker-mutator/core":"9.6.1","@stryker-mutator/vitest-runner":"9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.10.0_1786664021909_0.02979884017947887","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"plumbbob","version":"0.10.1","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":{"name":"Rob McLarty","email":"hello@robmclarty.com"},"license":"Apache-2.0","_id":"plumbbob@0.10.1","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://robmclarty.github.io/plumbbob/","bugs":{"url":"https://github.com/robmclarty/plumbbob/issues"},"bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"32908fb812245e5c21daa2a064a32539e2e5769b","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.10.1.tgz","fileCount":358,"integrity":"sha512-eueqUHcAMt7v6DHUOUENv9UkcondO94kMa9XaSh9LD3AlNrO3TAT1EBJtXeHTFxAr00xmR5NXTyvS9BqFj7CQA==","signatures":[{"sig":"MEUCIQDiX5xw5fJPY0/4be33dK6tu01Zq6sG7ODIkcFbZqZ4bgIgB313learvRtLVNWT9LqqmG6DddzmVNEYMuCFR6iSq/0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/plumbbob@0.10.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1817379},"type":"module","engines":{"node":">=22.18.0"},"gitHead":"3ba2d5be2718ec290f34e0e3ef9c68641b68fc18","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist","prepack":"pnpm run clean && pnpm run build","size:prose":"node scripts/count-prose.ts","eval:report":"node test/evals/run.ts --report","eval:latched":"pnpm build && node test/evals/run.ts --sweep latched","eval:baseline":"pnpm build && node test/evals/run.ts --sweep baseline"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9dde7f48-ad31-4a7e-bb36-f68a0a2a39f7"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"_npmVersion":"11.19.0","description":"Attention-first build process: 14 skills + a CLI that keep you the decider — guidance on the work, a latch on the record.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"checkride":"0.12.2"},"_hasShrinkwrap":false,"devDependencies":{"fallow":"3.14.0","oxlint":"1.78.0","vitest":"4.1.10","fascicle":"0.8.16","typescript":"6.0.3","@types/node":"26.2.0","@vvago/vale":"3.17.1","@ast-grep/cli":"0.45.1","markdownlint-cli2":"0.23.2","@vitest/coverage-v8":"4.1.10","@stryker-mutator/api":"9.6.1","@stryker-mutator/core":"9.6.1","@stryker-mutator/vitest-runner":"9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.10.1_1786688839193_0.9847122099370822","host":"s3://npm-registry-packages-npm-production"}},"0.10.2":{"name":"plumbbob","version":"0.10.2","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":{"name":"Rob McLarty","email":"hello@robmclarty.com"},"license":"Apache-2.0","_id":"plumbbob@0.10.2","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://robmclarty.github.io/plumbbob/","bugs":{"url":"https://github.com/robmclarty/plumbbob/issues"},"bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"af9303cd45d5dfd591e7bb2ee6b97d818befc8b5","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.10.2.tgz","fileCount":358,"integrity":"sha512-LjogZySB7ej1M+pL78/q8/DnpPf5KA+OWBsgrmxMQQzDyoye54LVdHzO3TTAH7ZqLmwbTx85HyPbJuh7p7NX4A==","signatures":[{"sig":"MEYCIQDmD75SglRh7qSB2tKnEmogamIx8L5iK81h7isyiyz/7AIhAPzEAwB4Dsk6dnhJOzlda71mzQbqN6nFy5SuG4TPgWPZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/plumbbob@0.10.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1822936},"type":"module","engines":{"node":">=22.18.0"},"gitHead":"8fdf4cfbdf547b734c9b25e2483de16464af7965","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist","prepack":"pnpm run clean && pnpm run build","size:prose":"node scripts/count-prose.ts","eval:report":"node test/evals/run.ts --report","eval:latched":"pnpm build && node test/evals/run.ts --sweep latched","eval:baseline":"pnpm build && node test/evals/run.ts --sweep baseline"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9dde7f48-ad31-4a7e-bb36-f68a0a2a39f7"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"_npmVersion":"11.19.0","description":"Attention-first build process: 14 skills + a CLI that keep you the decider — guidance on the work, a latch on the record.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"checkride":"0.12.2"},"_hasShrinkwrap":false,"devDependencies":{"fallow":"3.14.0","oxlint":"1.78.0","vitest":"4.1.10","fascicle":"0.8.16","typescript":"6.0.3","@types/node":"26.2.0","@vvago/vale":"3.17.1","@ast-grep/cli":"0.45.1","markdownlint-cli2":"0.23.2","@vitest/coverage-v8":"4.1.10","@stryker-mutator/api":"9.6.1","@stryker-mutator/core":"9.6.1","@stryker-mutator/vitest-runner":"9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.10.2_1787713427355_0.7429389621188649","host":"s3://npm-registry-packages-npm-production"}},"0.10.3":{"name":"plumbbob","version":"0.10.3","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":{"name":"Rob McLarty","email":"hello@robmclarty.com"},"license":"Apache-2.0","_id":"plumbbob@0.10.3","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://robmclarty.github.io/plumbbob/","bugs":{"url":"https://github.com/robmclarty/plumbbob/issues"},"bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"39151508c50aa25fc41bf0adb6a238844a3d6d5d","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.10.3.tgz","fileCount":358,"integrity":"sha512-OxOpht7y5VxPYUHgOavyVNS3QcDMSn2YH04CCuI2Ccdy0lQrBqdGhUuyLHuwigjneclcw+MbmJ9urB5F1rngVQ==","signatures":[{"sig":"MEUCIFUZZtB4mhCVEjS0OT/ffLjN6SQVP64VSBNR04TvoLWRAiEAmTUjc+U99GO05HZfBe3hzauKcq9hYmKEgvqEGTPOPJg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/plumbbob@0.10.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1823806},"type":"module","engines":{"node":">=22.18.0"},"gitHead":"c8158cecaaccea641283ff02783e54d20930f2b7","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist","prepack":"pnpm run clean && pnpm run build","size:prose":"node scripts/count-prose.ts","eval:report":"node test/evals/run.ts --report","eval:latched":"pnpm build && node test/evals/run.ts --sweep latched","eval:baseline":"pnpm build && node test/evals/run.ts --sweep baseline"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9dde7f48-ad31-4a7e-bb36-f68a0a2a39f7"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"_npmVersion":"11.19.1","description":"Attention-first build process: 14 skills + a CLI that keep you the decider — guidance on the work, a latch on the record.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"checkride":"0.12.2"},"_hasShrinkwrap":false,"devDependencies":{"cspell":"10.0.1","fallow":"3.14.0","oxlint":"1.78.0","vitest":"4.1.10","fascicle":"0.8.16","typescript":"6.0.3","@types/node":"26.2.0","@vvago/vale":"3.17.1","@ast-grep/cli":"0.45.1","markdownlint-cli2":"0.23.2","@vitest/coverage-v8":"4.1.10","@stryker-mutator/api":"9.6.1","@stryker-mutator/core":"9.6.1","@stryker-mutator/vitest-runner":"9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.10.3_1787810498511_0.13086781233276712","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"plumbbob","version":"0.11.0","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":{"name":"Rob McLarty","email":"hello@robmclarty.com"},"license":"Apache-2.0","_id":"plumbbob@0.11.0","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://robmclarty.github.io/plumbbob/","bugs":{"url":"https://github.com/robmclarty/plumbbob/issues"},"bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"b8e2eaa6455f8101f3945bfa784019bdf294eb6e","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.11.0.tgz","fileCount":359,"integrity":"sha512-BVKzewyg2QgK5QYTzcmYrztXehDEoLWKQfYzxJ6JyyFbNae95aQ4iNHCAOxihFX2lDnVuZeEWmWvzGfgwRgAJw==","signatures":[{"sig":"MEUCIQCGjWFPVGScYKNvQv8/NFoCGwy7cLtwPj9MNtwC1GfnugIgJDJCw88yH/l5fpDkWHvYRSlw5oOL/QtR82f9oR3B0ns=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/plumbbob@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1896731},"type":"module","engines":{"node":">=22.18.0"},"gitHead":"e586cc3338baa6648656f9ac5d93b8b329103255","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist","prepack":"pnpm run clean && pnpm run build","size:prose":"node scripts/count-prose.ts","eval:report":"node test/evals/run.ts --report","eval:latched":"pnpm build && node test/evals/run.ts --sweep latched","eval:baseline":"pnpm build && node test/evals/run.ts --sweep baseline"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9dde7f48-ad31-4a7e-bb36-f68a0a2a39f7"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"_npmVersion":"11.19.1","description":"Attention-first build process: 14 skills + a CLI that keep you the decider — guidance on the work, a latch on the record.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"checkride":"0.12.2"},"_hasShrinkwrap":false,"devDependencies":{"cspell":"10.0.1","fallow":"3.14.0","oxlint":"1.78.0","vitest":"4.1.10","fascicle":"0.8.16","typescript":"6.0.3","@types/node":"26.2.0","@vvago/vale":"3.17.1","@ast-grep/cli":"0.45.1","markdownlint-cli2":"0.23.2","@vitest/coverage-v8":"4.1.10","@stryker-mutator/api":"9.6.1","@stryker-mutator/core":"9.6.1","@stryker-mutator/vitest-runner":"9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.11.0_1788401574398_0.12555335355693487","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"plumbbob","version":"0.11.1","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":{"name":"Rob McLarty","email":"hello@robmclarty.com"},"license":"Apache-2.0","_id":"plumbbob@0.11.1","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://robmclarty.github.io/plumbbob/","bugs":{"url":"https://github.com/robmclarty/plumbbob/issues"},"bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"ec4df4c35b22db656418e6a8bda4c1da91c533c3","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.11.1.tgz","fileCount":359,"integrity":"sha512-klD2glkMOULyN4PhHjJ9OSqMgugsDhL6diB8z4qt5240rZOB1b6YQV5AR5IX9Uhkpg2IfYOAoJBpq6iz4Jg69w==","signatures":[{"sig":"MEUCIHrP9HF6W6x2TM9J94hCd/uaS2rue8kuCdCI9Hynk20TAiEAuiiskI/PwG8fwC4ay2iITKtNbia8ioIfQsuQnp7YNPk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/plumbbob@0.11.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1911871},"type":"module","engines":{"node":">=22.18.0"},"gitHead":"7e26f53f233c32b2d2a5afa7cb671f8aa48f36a7","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist","prepack":"pnpm run clean && pnpm run build","size:prose":"node scripts/count-prose.ts","eval:report":"node test/evals/run.ts --report","eval:latched":"pnpm build && node test/evals/run.ts --sweep latched","eval:baseline":"pnpm build && node test/evals/run.ts --sweep baseline"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9dde7f48-ad31-4a7e-bb36-f68a0a2a39f7"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"_npmVersion":"11.19.1","description":"Attention-first build process: 14 skills + a CLI that keep you the decider — guidance on the work, a latch on the record.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"checkride":"0.12.2"},"_hasShrinkwrap":false,"devDependencies":{"cspell":"10.0.1","fallow":"3.14.0","oxlint":"1.78.0","vitest":"4.1.10","fascicle":"0.8.16","typescript":"6.0.3","@types/node":"26.2.0","@vvago/vale":"3.17.1","@ast-grep/cli":"0.45.1","markdownlint-cli2":"0.23.2","@vitest/coverage-v8":"4.1.10","@stryker-mutator/api":"9.6.1","@stryker-mutator/core":"9.6.1","@stryker-mutator/vitest-runner":"9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.11.1_1788418065307_0.6294671999194739","host":"s3://npm-registry-packages-npm-production"}},"0.11.2":{"name":"plumbbob","version":"0.11.2","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":{"name":"Rob McLarty","email":"hello@robmclarty.com"},"license":"Apache-2.0","_id":"plumbbob@0.11.2","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://robmclarty.github.io/plumbbob/","bugs":{"url":"https://github.com/robmclarty/plumbbob/issues"},"bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"8010908ca0f3ca0f5295c63d8988bf9ba917ab9c","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.11.2.tgz","fileCount":359,"integrity":"sha512-fiH3J5eMqOuCC8Szd/D2QU14WqAsviN+JT2hGurRoMzds4pnDaDno8TS6k/5l90Fxoous6HvrDcCi/10cZpA1Q==","signatures":[{"sig":"MEUCIQC2qmaISZv8slP8k173q8wrAkn4ESsPTjv15/w7j29btQIgau3WAggoPyVL8kWO6F3mPZK+Ore+Xgq7Br6u22eXYa8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/plumbbob@0.11.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1912821},"type":"module","engines":{"node":">=22.18.0"},"gitHead":"0fc5c830d5685e130fe927073a35e50fdc051d64","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist","prepack":"pnpm run clean && pnpm run build","size:prose":"node scripts/count-prose.ts","eval:report":"node test/evals/run.ts --report","eval:latched":"pnpm build && node test/evals/run.ts --sweep latched","eval:baseline":"pnpm build && node test/evals/run.ts --sweep baseline"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9dde7f48-ad31-4a7e-bb36-f68a0a2a39f7"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"_npmVersion":"11.19.1","description":"Attention-first build process: 14 skills + a CLI that keep you the decider — guidance on the work, a latch on the record.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"checkride":"0.12.2"},"_hasShrinkwrap":false,"devDependencies":{"cspell":"10.0.1","fallow":"3.14.0","oxlint":"1.78.0","vitest":"4.1.10","fascicle":"0.8.16","typescript":"6.0.3","@types/node":"26.2.0","@vvago/vale":"3.17.1","@ast-grep/cli":"0.45.1","markdownlint-cli2":"0.23.2","@vitest/coverage-v8":"4.1.10","@stryker-mutator/api":"9.6.1","@stryker-mutator/core":"9.6.1","@stryker-mutator/vitest-runner":"9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.11.2_1788486483743_0.870191252149183","host":"s3://npm-registry-packages-npm-production"}},"0.11.3":{"name":"plumbbob","version":"0.11.3","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":{"name":"Rob McLarty","email":"hello@robmclarty.com"},"license":"Apache-2.0","_id":"plumbbob@0.11.3","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://robmclarty.github.io/plumbbob/","bugs":{"url":"https://github.com/robmclarty/plumbbob/issues"},"bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"dfb3cc2ab89d993ec1227a130611c8cf85f2c266","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.11.3.tgz","fileCount":359,"integrity":"sha512-90LcqxyLkOhEmLWBU58Hsc4yFfm2ie+RKsvkM2YLgWeRzrS7/RZut0XyqSLgY1ecqlDewImKbmdrLAUPiAealA==","signatures":[{"sig":"MEQCIGHcc88JtVEgiMxQiN5JQYFvU0ugYyjyj50EITqQplwMAiBkyCQKC3rh5q5LZrDlO0qJFunpRKDHgUjE3M8LiLLAeg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/plumbbob@0.11.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1917020},"type":"module","engines":{"node":">=22.18.0"},"gitHead":"4c8060a189c44d25ff6c0db0ffd44e438370f74b","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist","prepack":"pnpm run clean && pnpm run build","size:prose":"node scripts/count-prose.ts","eval:report":"node test/evals/run.ts --report","eval:latched":"pnpm build && node test/evals/run.ts --sweep latched","eval:baseline":"pnpm build && node test/evals/run.ts --sweep baseline"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9dde7f48-ad31-4a7e-bb36-f68a0a2a39f7"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"_npmVersion":"11.19.1","description":"Attention-first build process: 14 skills + a CLI that keep you the decider — guidance on the work, a latch on the record.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"checkride":"0.12.2"},"_hasShrinkwrap":false,"devDependencies":{"cspell":"10.0.1","fallow":"3.14.0","oxlint":"1.78.0","vitest":"4.1.10","fascicle":"0.8.16","typescript":"6.0.3","@types/node":"26.2.0","@vvago/vale":"3.17.1","@ast-grep/cli":"0.45.1","markdownlint-cli2":"0.23.2","@vitest/coverage-v8":"4.1.10","@stryker-mutator/api":"9.6.1","@stryker-mutator/core":"9.6.1","@stryker-mutator/vitest-runner":"9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.11.3_1788538982100_0.8861951822409007","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"plumbbob","version":"0.12.0","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"author":{"name":"Rob McLarty","email":"hello@robmclarty.com"},"license":"Apache-2.0","_id":"plumbbob@0.12.0","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"homepage":"https://robmclarty.github.io/plumbbob/","bugs":{"url":"https://github.com/robmclarty/plumbbob/issues"},"bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"dist":{"shasum":"283df7d54e280ac758ebb175d4632f1c8d65bedd","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.12.0.tgz","fileCount":359,"integrity":"sha512-3VEwo8fZyp7pAZ6nAZ7FGfL8cFBAH/2SowgPzIbKLGQWD6OMjPxyVf/dWi4RsCSCAB2Wtucu9iyf/51TgWKw5Q==","signatures":[{"sig":"MEYCIQDlsDiNvu2EcQk3egOcCOZI84NL5U2RvP2PXDp72gZnpQIhALIVZbyaA/l0NBetMKOTVDL7wGvi5qhXB7k+jODIW8N1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCkjG8zngv+y6VVhJV7bg/jk2hzNHLhxKpQovRqUFa87gIgOL53A8HiH8EzWWwHzmVHoH0+KQCjCM+q0S7wnojzdd8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/plumbbob@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1920483},"type":"module","engines":{"node":">=22.18.0"},"gitHead":"a5364efe88fa4b6d9c082ebbb7ec96be6647a641","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist","prepack":"pnpm run clean && pnpm run build","size:prose":"node scripts/count-prose.ts","eval:report":"node test/evals/run.ts --report","eval:latched":"pnpm build && node test/evals/run.ts --sweep latched","eval:baseline":"pnpm build && node test/evals/run.ts --sweep baseline"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9dde7f48-ad31-4a7e-bb36-f68a0a2a39f7"}},"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"_npmVersion":"11.19.1","description":"Attention-first build process: 14 skills + a CLI that keep you the decider — guidance on the work, a latch on the record.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"checkride":"0.12.2"},"_hasShrinkwrap":false,"devDependencies":{"cspell":"10.0.1","fallow":"3.14.0","oxlint":"1.78.0","vitest":"4.1.10","fascicle":"0.8.16","typescript":"6.0.3","@types/node":"26.2.0","@vvago/vale":"3.17.1","@ast-grep/cli":"0.45.1","markdownlint-cli2":"0.23.2","@vitest/coverage-v8":"4.1.10","@stryker-mutator/api":"9.6.1","@stryker-mutator/core":"9.6.1","@stryker-mutator/vitest-runner":"9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"tmp":"tmp/plumbbob_0.12.0_1789623126606_0.18472315678600393","host":"s3://npm-registry-packages-npm-production"}},"0.12.1":{"_id":"plumbbob@0.12.1","bin":{"pb":"bin/pb","plumbbob":"bin/plumbbob"},"bugs":{"url":"https://github.com/robmclarty/plumbbob/issues"},"dist":{"shasum":"bc59c7feb9a5173f40ee29e84c613d9d0530b2a5","tarball":"https://registry.npmjs.org/plumbbob/-/plumbbob-0.12.1.tgz","fileCount":361,"integrity":"sha512-szgSGIBIbt1//GeirE3xaIH32AtVu5W8PevSI/NvjFdREa2JCAGOFMop3+Ev9eYhZX3JKtKakdNa/+tT+GBpvA==","signatures":[{"sig":"MEUCIQDAPXhY9SDwetTSC+w/S8MCNbgMd5olZbaCXPpTH7mmrgIgKSoRKSnitwVSMEBPwuOCV4wnWwXZFHF+/5EMpYihwQc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDFwXhxulCMv8/UA73+ikN/PJlW/oP/VAQ9EndQwFVlfwIgHNvsoY5DYp6xTimzdOocLNl0tN8ZNXhlpokzqwSzpkg="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/plumbbob@0.12.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1961503},"name":"plumbbob","type":"module","author":{"name":"Rob McLarty","email":"hello@robmclarty.com"},"engines":{"node":">=22.18.0"},"gitHead":"391216398202b772f82d3236f41984a86c524e7f","license":"Apache-2.0","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"checkride","clean":"rm -rf dist","prepack":"pnpm run clean && pnpm run build","size:prose":"node scripts/count-prose.ts","eval:report":"node test/evals/run.ts --report","eval:latched":"pnpm build && node test/evals/run.ts --sweep latched","eval:baseline":"pnpm build && node test/evals/run.ts --sweep baseline"},"version":"0.12.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9dde7f48-ad31-4a7e-bb36-f68a0a2a39f7"}},"homepage":"https://robmclarty.github.io/plumbbob/","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"_npmVersion":"11.19.1","description":"Attention-first build process: 15 skills + a CLI that keep you the decider — guidance on the work, a latch on the record.","directories":{},"maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"_nodeVersion":"24.21.0","dependencies":{"checkride":"0.12.5"},"_hasShrinkwrap":false,"devDependencies":{"cspell":"10.0.1","fallow":"3.14.0","oxlint":"1.78.0","vitest":"4.1.10","fascicle":"0.8.16","typescript":"6.0.3","@types/node":"26.2.0","@vvago/vale":"3.17.1","@ast-grep/cli":"0.45.1","markdownlint-cli2":"0.23.2","@vitest/coverage-v8":"4.1.10","@stryker-mutator/api":"9.6.1","@stryker-mutator/core":"9.6.1","@stryker-mutator/vitest-runner":"9.6.1"},"bundleDependencies":["checkride"],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/plumbbob_0.12.1_1790095899755_0.05703750523340201"}}},"time":{"created":"2026-06-12T17:58:14.293Z","modified":"2026-09-22T16:51:40.288Z","0.1.3":"2026-06-12T17:58:14.587Z","0.2.1":"2026-06-22T18:31:32.370Z","0.2.3":"2026-06-22T20:10:04.351Z","0.3.0":"2026-06-23T15:41:01.267Z","0.3.1":"2026-06-25T04:11:57.199Z","0.4.2":"2026-06-27T20:59:59.493Z","0.4.4":"2026-06-30T01:22:52.956Z","0.4.8":"2026-06-30T15:49:45.784Z","0.4.11":"2026-06-30T18:41:54.265Z","0.4.12":"2026-06-30T19:36:19.956Z","0.4.13":"2026-06-30T21:28:28.831Z","0.4.14":"2026-06-30T21:59:36.743Z","0.5.3":"2026-07-03T17:05:13.340Z","0.5.4":"2026-07-03T20:47:51.587Z","0.6.1":"2026-07-04T01:41:00.274Z","0.6.3":"2026-07-07T15:24:13.783Z","0.6.4":"2026-07-08T01:30:17.293Z","0.6.5":"2026-07-08T02:43:08.225Z","0.6.6":"2026-07-10T01:55:52.754Z","0.8.0":"2026-07-11T14:58:20.199Z","0.8.3":"2026-07-12T01:58:03.343Z","0.8.5":"2026-07-13T16:04:07.219Z","0.8.10":"2026-07-19T03:26:28.333Z","0.8.11":"2026-07-19T06:00:50.949Z","0.8.12":"2026-07-19T06:35:08.485Z","0.8.13":"2026-07-19T17:08:50.459Z","0.8.14":"2026-07-19T21:17:54.719Z","0.8.17":"2026-07-20T02:30:31.958Z","0.8.18":"2026-07-20T03:52:34.509Z","0.9.1":"2026-07-27T18:56:02.883Z","0.9.2":"2026-07-28T16:08:06.520Z","0.9.3":"2026-07-31T03:17:10.261Z","0.9.5":"2026-08-07T06:18:42.864Z","0.10.0":"2026-08-13T23:33:42.169Z","0.10.1":"2026-08-14T06:27:19.395Z","0.10.2":"2026-08-26T03:03:47.527Z","0.10.3":"2026-08-27T06:01:38.679Z","0.11.0":"2026-09-03T02:12:54.620Z","0.11.1":"2026-09-03T06:47:45.486Z","0.11.2":"2026-09-04T01:48:03.915Z","0.11.3":"2026-09-04T16:23:02.258Z","0.12.0":"2026-09-17T05:32:06.755Z","0.12.1":"2026-09-22T16:51:39.939Z"},"bugs":{"url":"https://github.com/robmclarty/plumbbob/issues"},"author":{"name":"Rob McLarty","email":"hello@robmclarty.com"},"license":"Apache-2.0","homepage":"https://robmclarty.github.io/plumbbob/","keywords":["claude-code","claude","hooks","cli","agent","attention-first"],"repository":{"url":"git+https://github.com/robmclarty/plumbbob.git","type":"git"},"description":"Attention-first build process: 15 skills + a CLI that keep you the decider — guidance on the work, a latch on the record.","maintainers":[{"name":"robmclarty","email":"r@robmclarty.com"}],"readme":"# PlumbBob\n\n<p align=\"center\">\n  <img src=\"hero.svg\" alt=\"A row of plumb bobs of varying shapes hanging from strings\" width=\"600\">\n</p>\n\n<p align=\"center\">\n  <a href=\"https://robmclarty.github.io/plumbbob/\">Website</a> ·\n  <a href=\"https://robmclarty.github.io/plumbbob/docs.html\">Docs</a> ·\n  <a href=\"https://robmclarty.github.io/plumbbob/api.html\">API reference</a>\n</p>\n\nPlumbBob is a Claude Code plugin (fifteen skills and a small CLI) that runs\nLLM-assisted coding as a loop you control. You and the model settle the plan in a file\n*before* any code; then the model builds one small step at a time and **stops after\neach one**, waiting for you to read the diff and approve it before anything is\ncommitted. It's built for the small-to-medium work that fills most days (a feature, a\nbug, a refactor) where a fully autonomous build is overkill but freestyle prompting\nleaves you dragged behind the model, reacting instead of deciding.\n\n> Establish *plumb* before you build. The LLM is a hand, not a head.\n\nIts one law is **vibe to execute, never vibe to decide**: the human owns every\ndecision, the LLM owns the labor, and the boundary between them is a **pause you\nadvance**, not a wall that refuses you. The *why* behind that (attention as the scarce\nresource) is in [`docs/attention-first-development.md`](docs/attention-first-development.md).\nPlumbBob is the layer below [Ridgeline](https://github.com/robmclarty/ridgeline): where\nRidgeline runs large, settled work autonomously without you, PlumbBob keeps you in the\ndriver's seat for the work your judgment has to steer. This repository was built using\nPlumbBob itself, running its own loop.\n\n## Who it's for\n\n- **You already build with a coding agent and end the day reviewing a wall of diff.**\n  PlumbBob turns that wall into steps you approve one at a time, each small enough to\n  read as an editor.\n- **You are skeptical of AI-written code.** Nothing lands without a green check, a\n  self-review against the plan, and your say-so, and the CLI refuses to record a step\n  the model approved for itself.\n- **You would rather not learn a tool.** Everything it writes is markdown and ordinary\n  git commits in your own repo; the skills are slash commands, and `/plumbbob:status`\n  always names the next one. A [glossary](docs/glossary.md) covers the words it mints.\n- **Not for a typo, and not for a rewrite.** A one-line fix needs no session, and a\n  large, settled build wants an autonomous harness such as Ridgeline. The loop earns\n  its keep in between: a feature, a bug, a refactor.\n\n## The loop in one picture\n\n<p align=\"center\">\n  <img src=\"docs/media/loop-one-step.svg\" alt=\"One step of the loop: /plumbbob:build implements step 1 and stops at the pause, the human says looks good, the step is checkpointed\" width=\"760\">\n</p>\n\nEverything the model must stay true to lives in one file, the build's `intent.md`\n(under `.plumbbob/builds/<slug>/`), written before any code: the **Frame** (the problem, what done looks like, what you're\nexplicitly *not* doing), the **Decisions** and **Constraints** (the settled calls, each\nwith its *because*), and the **Steps**: a numbered list where every step carries a\n**done-when** (a checkable finish line, ideally a test) and a **seam** (the files it's\nexpected to touch).\n\n```text\n/plumbbob:plan       decide everything on paper — frame, decisions, all steps    (once)\n  per step:\n    /plumbbob:build      implement the next step → run checks → self-review → PAUSE\n    (looks good)         → the step is committed as a checkpoint; fire /plumbbob:build again\n/plumbbob:finish     report what shipped and why, final commit, clear            (once)\n```\n\nNothing is locked and nothing refuses you: the loop does a step's labor, pulls up to\nthe line, and waits for you to advance it. **You are the clock.**\n\n## What a prompt can't replicate\n\nA system prompt can *ask* a model to plan first and stop for review. What it can't do is\n**hold the line when the model doesn't**, and that mechanical half is what PlumbBob adds\nunder the skills. Five deterministic edges, enforced by the CLI and git rather than by the\nmodel's goodwill:\n\n- **A gate that refuses red.** `checkpoint` won't record a step while the check gate is\n  red, and `start` refuses a dirty tree: the [checkride](https://www.npmjs.com/package/checkride)\n  run (types, lint, tests, dead code, docs) has to pass before a step lands.\n- **One SHA per verified step.** Every approved step is its own git commit against a\n  recorded baseline: a ledger of checkpoints, not one undifferentiated diff at the end.\n- **A preservation-aware revert.** `/plumbbob:revert` resets exactly to a recorded checkpoint\n  SHA while keeping your plan and notes intact, and restores *only* SHAs the loop wrote.\n- **A build record that rides the PR.** The tracked `builds/<slug>/` folder (intent, log,\n  checkpoints, report) merges into `main` with the branch instead of dying with the\n  worktree; the archive never destroys.\n- **The approval latch.** `checkpoint` refuses to land a step until the harness records a\n  human turn since that step began ([D64 (approval-latch)](docs/decisions.md#d64)–[D66\n  (oob-commits-surfaced)](docs/decisions.md#d66), the ledger-plane enforcement), so the\n  model can't self-commit past you: the refusal *is* the pause.\n\nThe planning surface is the on-ramp; these five are the floor under it. And the latch's\npayoff is [measured, not asserted](#why-not-just), not just claimed. **Guidance on the\nwork, a latch on the record.**\n\n<p align=\"center\">\n  <img src=\"docs/media/build-record-in-pr.svg\" alt=\"A pull request's file list with the build folder beside the source\" width=\"760\">\n</p>\n\n## Install\n\nPlumbBob installs **once, globally** (like `gh` or your dotfiles). Two ways work;\npick one (both register a Claude Code plugin named `plumbbob`, so running both\ncollides).\n\n**Marketplace plugin**: Claude Code installs the published `plumbbob` package for you\n(skills, hook, and the CLI on PATH), so you run no `npm i -g` and no `init`:\n\n```text\n/plugin marketplace add robmclarty/agent-tools\n/plugin install plumbbob@robmclarty\n```\n\n**npm global + `init`**: installs the CLI, then links the skills and hook into Claude\nCode in place:\n\n```sh\nnpm i -g plumbbob      # the CLI (also a `pb` shorthand)\nplumbbob init          # link it into Claude Code; --uninstall to undo\n```\n\nRestart Claude Code (or `/reload-plugins`) to activate, then run `plumbbob doctor`\n(or `/plumbbob:doctor` in-session) to confirm the wiring. The full guide (namespacing,\nper-project sessions, the agent-neutral roadmap) is in\n[`docs/install.md`](docs/install.md).\n\n## Your first session\n\nIn Claude Code, inside any git repo with a clean tree:\n\n1. **Plan.** Fire `/plumbbob:plan` and give it whatever you have: nothing (it interviews\n   you), a rough line (`/plumbbob:plan rate-limit POST /login, 5/min/IP, return 429`), or a\n   path to a spec file. Together you fill the build's `intent.md`. No code is written\n   yet.\n2. **Build.** Fire `/plumbbob:build`. It implements the next undone step, runs the\n   heavy check gate, reviews its own diff against the plan, and stops. What it stops on\n   is one block with a fixed shape (the [turn anatomy](docs/presentation.md)): the CLI\n   measures the check, the seam, and the diff, the model supplies only the judgment, and\n   nothing is written around it.\n\n   ````markdown\n   **Summary**: A per-IP token bucket now refuses the 6th attempt inside a minute. (details: `.plumbbob/detail.md`)\n\n   1. The bucket lives in memory, keyed by IP, refilling five tokens a minute.\n   2. The clock is injected, so the test advances time instead of sleeping on it.\n\n   **Readout**: Step 1 - feat(limiter): add a token-bucket limiter\n\n   ```text\n   check        green: 7 of 7 checks\n   done-when    met\n   decisions    2 of 2 honored\n   constraints  1 of 1 honored\n   seam         held: 2 of 2 declared, no strays\n   diff         +61 -3 across 2 files\n   spent        22 min · 2 turns · 41s gate · green first run\n   ```\n\n   **Verdict**: ● Plumb\n\n   **Next Up**: Step 2 of 3 - feat(login): wire the limiter into POST /login (model: **Sonnet**, details: `.plumbbob/builds/2026-07-03-rate-limit-the-login-endpoint/intent.md:20`)\n\n   **Your Call**:\n\n   - `looks good` → I checkpoint Step 1; back to the boundary\n   - `expand`, or any question → I show more of what is there; nothing changes\n   - anything that reads as direction → I take it as what to change; nothing lands until you approve\n   - `revert` → I wind the work back to the last checkpoint\n\n   **Recommendation**: Approve it. The gate is green, the seam held, and every call the step made is one the plan already decided.\n   ````\n\n   ![The build pause as Claude Code renders it](docs/media/pause.svg)\n\n   (The check gate is [checkride](https://www.npmjs.com/package/checkride), one\n   run across the tools your repo already configures: types, lint, tests, dead\n   code, docs. To gate through your own command instead, set the `\"check\"` key in\n   `.plumbbob/settings.json`, for example `\"check\": \"npm test\"`; in a repo where\n   checkride finds no tools at all, `start` says so up front and names that key.)\n3. **Reply.** Say `looks good` and it commits the step as a checkpoint, marks it done,\n   and returns to the boundary with the same three lines every landed step gets:\n\n   ```text\n   **Checkpoint**: Step 1 complete (a1b2c3d4e, details: `.plumbbob/builds/2026-07-03-rate-limit-the-login-endpoint/build-log.md:44`)\n\n   **Verdict**: ● Plumb\n\n   **Next Up**: Step 2 of 3 - feat(login): wire the limiter into POST /login (model: **Sonnet**, details: `.plumbbob/builds/2026-07-03-rate-limit-the-login-endpoint/intent.md:20`)\n   ```\n\n   ![The boundary after looks good](docs/media/checkpoint-boundary.svg)\n\n   Ask instead (`expand 2`, or any question) and it shows more of what is there and\n   changes nothing; direct it and it takes that as the fix, and nothing lands until you\n   say `looks good`. Then fire `/plumbbob:build` again for the next step: re-firing it\n   *is* the clock tick. Whenever you lose the thread, `/plumbbob:status` shows where you\n   are and names the next move.\n4. **Finish.** When the last step is done, `/plumbbob:finish` writes a report of what shipped\n   and why into the build's tracked folder, makes the final commit, and clears the slate\n   for the next goal. The folder rides the branch into the PR: the build's record merges\n   into `main` instead of dying with the worktree.\n\nA mid-build \"ooh, what if…\" never derails the step: `/plumbbob:park` captures it to a list\nin one line, and `/plumbbob:harvest` triages the list between steps. One goal walked end to\nend, with the real output at every stage, is in\n[`docs/happy-path.md`](docs/happy-path.md).\n\n## The skills\n\nYou drive the whole loop from your IDE with `/plumbbob:*` skills: no step numbers to\nremember, no raw CLI to type. Every skill is `disable-model-invocation`, so *you* fire\nevery move, and `/plumbbob:status` always names your next one. (Claude Code namespaces\nthem under the plugin, so the command is `/plumbbob:plan`. The bare `/plan` reaches it\ntoo, but only where nothing else owns that name, and four of the fourteen share one with\na Claude Code built-in, so these docs write the full form.)\n\n**The happy path**: the three moves every session makes; many sessions need\nnothing else:\n\n| Skill <img alt=\"\" width=\"110\" height=\"1\"> | Does |\n| ------------------------------------ | ------ |\n| `/plumbbob:plan` | plan the whole goal: open the session and author intent's Frame, Decisions, Constraints, **and all Steps** |\n| `/plumbbob:build` | implement the next planned step, then verify it to the pause: `--auto` self-approves and chains to done; a range like `1-3` self-approves through step 3, then stops |\n| `/plumbbob:finish` | finish up: write the report, make the final commit, clear for a fresh goal |\n\n**Plan-shaping moves**: optional, for when the plan needs work mid-flight:\n\n| Skill <img alt=\"\" width=\"110\" height=\"1\"> | Does |\n| ------------------------------------ | ------ |\n| `/plumbbob:step` | revise/sharpen the next step (empty input auto-syncs it to reality) |\n| `/plumbbob:refine` | attack the frame for holes, or repair a drifted plan |\n| `/plumbbob:spike` | throwaway worktree experiment for a fork the plan can't settle |\n\n**Helpers**: orient, verify, recover, diagnose:\n\n| Skill <img alt=\"\" width=\"110\" height=\"1\"> | Does |\n| ------------------------------------ | ------ |\n| `/plumbbob:status` | orient: where you are, the next step's done-when and seam, and the next move |\n| `/plumbbob:verify` | the tick, standalone: check → self-review → validate → **PAUSE** → checkpoint, for a diff `/plumbbob:build` didn't write |\n| `/plumbbob:revert` | rewind: `git reset --hard` to a recorded checkpoint |\n| `/plumbbob:abandon` | drop the in-flight step, keep its work in the tree; the step stays planned |\n| `/plumbbob:recover` | reconcile the session's own state when the dashboard looks wrong |\n| `/plumbbob:doctor` | check the install from inside a session |\n\n**Capture**: the park/harvest loop for mid-build ideas:\n\n| Skill <img alt=\"\" width=\"110\" height=\"1\"> | Does |\n| ------------------------------------ | ------ |\n| `/plumbbob:park` | capture a mid-build idea without chasing it |\n| `/plumbbob:harvest` | triage parked ideas between steps (blocker / tangent / pivot) |\n\nAll fourteen, with inputs and effects, are in\n[`docs/skills-reference.md`](docs/skills-reference.md).\n\nUnder the skills ships a lean `plumbbob` CLI (the mechanical verbs the\nskills shell out to), three hooks (a non-blocking post-edit lint, a `git commit`\nask-hook while a step is in flight, and the per-prompt turn ledger the approval latch\nreads), and a `.plumbbob/` sidecar you can open and edit by hand at any time: a tracked\n`builds/<slug>/` folder per build (`intent.md`, `build-log.md`, `checkpoints`, `report.md`)\nthat rides the branch into the PR, plus an untracked control plane (`settings.local.json`,\nthe session sentinel, the in-flight markers).\n\n**`/plumbbob:build` is the default engine, not the only one.** It's one executor: the\nloop doesn't care who writes the code. Implement a step by hand (or vibe it in\nanother session, or in another harness entirely) and run `/plumbbob:verify` instead:\nsame checks, same pause, same checkpoint. It reads the *diff, not the author*.\n\n**Bring your own agents.** Because the executor is author-blind, you can plug your\nown in. A **user-authored agent** is any executable that speaks one small JSON\nenvelope; drop it under `.plumbbob/agents/`, bind it to a step's `before`, `build`,\nor `after` slot in the build's `harness.json`, and PlumbBob runs it through the same\npause, with **no way for it to advance the loop** (checkride still gates, you're\nstill the clock). The full contract for authors, with a copy-paste example, is in\n[`docs/agents.md`](docs/agents.md).\n\n## Why \"PlumbBob\"\n\nThe name is the method. A plumb bob is a weight on a string; gravity pulls it into a\nperfectly straight vertical line, the builder's oldest reference for *true*: the fixed\nmark you hold the work against so it never drifts out of square. PlumbBob hangs your\n**intent** as that line and keeps every step aligned to it, so the build stays plumb\nwith what you decided instead of wandering off behind the model.\n\n## Why not just…?\n\nThe questions a skeptic should ask, answered straight.\n\n**…use plan mode?** Plan mode is the same instinct (decide before executing),\nscoped to one session. The plan lives in the chat, so it fades with the context\nwindow, and the approval gates the *start* of the work, not each increment of it.\nPlumbBob puts the plan in a file in your repo that survives compaction, restarts,\nand next week; moves the approval to **every step** (each checked, reviewed\nagainst the plan, and committed as its own checkpoint), so a wrong turn costs one\nstep, not the afternoon; and records the *whys* alongside the decisions, so the\narchive can still answer \"what did we decide, and why\" long after the session is\ngone. The two compose fine: plan mode (or anything else) can produce a step's\ndiff, and `/plumbbob:verify` reads it like any other.\n\n**…use git and a TODO file?** That's the honest skeleton, and if your discipline\nholds by willpower alone, it may be all you need. What the CLI adds is the\n[mechanical half of the discipline](#what-a-prompt-cant-replicate) (the five edges up\ntop), so willpower is spent only at the pause. The one not on that list: a status\ndashboard re-injected into every skill, so the model re-orients on each move without you\nre-explaining the state.\n\n**…wait for a vendor to ship this natively?** They're converging on it (plan\nmodes, spec kits, native checkpoints), and that convergence is evidence *for* the\npremise. PlumbBob is deliberately thin against that future: the artifacts are\nplain markdown and ordinary git commits in your own repo, the CLI is lean\n(node builtins plus one deliberate dependency), and nothing locks you in. The\ninvestment is small (fourteen\nskills over a plain-markdown sidecar, learnable in an afternoon), and what you're\nactually learning is the method: decisions before code, one verified step at a\ntime, capture instead of chase. That transfers to whatever tool wins. If\nsomething better ships, you walk away with your archives and your habits intact.\n\n**…admit the pause is unenforceable?** On the **work** plane, yes, on purpose\n([D10 (pause-not-lock)](docs/decisions.md#d10)/[D13 (no-edit-guards)](docs/decisions.md#d13) in\n[`docs/decisions.md`](docs/decisions.md)): a hard lock on every edit buys ritual, not\ncontrol, because a determined model routes around it and a denial mid-thought leaves no\nlegal move. But the **record** is a different plane, and there the tick *is* latched\n([D64 (approval-latch)](docs/decisions.md#d64)–[D66 (oob-commits-surfaced)](docs/decisions.md#d66)): `checkpoint` refuses to land a step until the harness\nrecords a human turn since that step began, so the agent cannot self-commit past you:\nthe refusal simply *is* the pause. It extends the [deterministic edges above](#what-a-prompt-cant-replicate)\nto the one boundary the product is named after, while leaving human what must be human:\nyou, reading the diff. And when a raw commit does slip the ledger, `status` says so and the\ncheckpoint record makes recovery one command; cheap recovery, not a cage, is the control\nthat matters.\n\n> The latch's payoff is measured, not asserted. A headless skill-eval harness\n> ([`test/evals/`](test/evals/)) sweeps the loop with a prose-only baseline against the\n> shipped latch, every assertion a mechanical read of git state, and commits each receipt\n> under [`docs/evals/`](docs/evals/): the route the latch owns (*no checkpoint over a red\n> check under pressure*) went from **2/5 prose-only to 5/5 latched** on the first sweep\n> ([2026-07-11](docs/evals/2026-07-11.md)), every sweep since has held it and closed the\n> two gaps that one surfaced, and the latest ([2026-09-17](docs/evals/2026-09-17.md))\n> scores the shape of the turn itself.\n\n## Documentation\n\nEach doc answers one question (in rough reading order for a new user):\n\n- *What does a session actually look like?* → [`docs/happy-path.md`](docs/happy-path.md): one goal walked end to end; read this first.\n- *What do the words mean?* → [`docs/glossary.md`](docs/glossary.md): every term the loop mints, one line each, with where to read more.\n- *Show me the artifacts it leaves behind.* → [`examples/`](examples/): that same session's finished build folder, file by file.\n- *Should I / can I / what about…?* → [`docs/faq.md`](docs/faq.md): the adoption questions, answered straight.\n- *What is each method for?* → [`docs/techniques.md`](docs/techniques.md): steps, seams, the pause, park/harvest, spikes.\n- *What does each skill do?* → [`docs/skills-reference.md`](docs/skills-reference.md): all fifteen skills: inputs, effects, when to reach for each.\n- *What does a turn look like, and who renders which part?* → [`docs/presentation.md`](docs/presentation.md): the anatomy of the pause, the boundary, and the driver turns.\n- *How do I plug in my own agent?* → [`docs/agents.md`](docs/agents.md): the subprocess envelope, the manifest, `harness.json`, and working examples (including a local-model reviewer via Ollama).\n- *How do I get a local model reviewing my steps?* → [`docs/local-model-review.md`](docs/local-model-review.md): the ollama-reviewer example walked end to end, install to every-pause review.\n- *How do I install it, exactly?* → [`docs/install.md`](docs/install.md): the full guide and the agent-neutral roadmap.\n- *What does the CLI underneath do?* → [`docs/cli-reference.md`](docs/cli-reference.md): every verb, flag, exit code, and the `.plumbbob/` sidecar.\n- *What are these untracked files, and why is it touching my `.git`?* → [`docs/state-and-git.md`](docs/state-and-git.md): the state files, the `info/exclude` mechanism, and the objections answered.\n- *Something's broken.* → [`docs/troubleshooting.md`](docs/troubleshooting.md): fixes for the common snags.\n- *Why is it built this way?* → [`docs/decisions.md`](docs/decisions.md): the `D#` / `C#` design-decision key the source cites.\n- *How does it hang together inside?* → [`docs/architecture.md`](docs/architecture.md): the layers and planes, for contributors (in progress).\n- *Why does this exist at all?* → [`docs/attention-first-development.md`](docs/attention-first-development.md): the philosophy: attention as the scarce resource.\n- *Why does AI-written prose get worse over time?* → [`docs/generation-loss.md`](docs/generation-loss.md): the copy-of-a-copy problem, and why anchor texts are written by hand.\n- *What does it run on my machine?* → [`SECURITY.md`](SECURITY.md): execution surface and how to report a vulnerability.\n- *How do I contribute?* → [`CONTRIBUTING.md`](CONTRIBUTING.md): setup, conventions, and how to submit changes.\n\n## License\n\nLicensed under the [Apache License 2.0](LICENSE).\n","readmeFilename":"README.md"}