{"_id":"@dennisrongo/skills","_rev":"21-d95dce6a808fd838e49f104de0bd000c","name":"@dennisrongo/skills","dist-tags":{"latest":"0.17.0"},"versions":{"0.1.0":{"name":"@dennisrongo/skills","version":"0.1.0","keywords":["claude","claude-code","skills","anthropic","ai","cli"],"author":{"name":"Dennis Rongo"},"license":"MIT","_id":"@dennisrongo/skills@0.1.0","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/claude-skills#readme","bugs":{"url":"https://github.com/dennisrongo/claude-skills/issues"},"bin":{"claude-skills":"bin/claude-skills.js"},"dist":{"shasum":"a2caca35c0d35001b91bb0471bbd10b19ca0d936","tarball":"https://registry.npmjs.org/@dennisrongo/skills/-/skills-0.1.0.tgz","fileCount":54,"integrity":"sha512-t3pwmqmuCUBF8TX1N8g6uIY1YD4RkENabQfFPJ+dqb16b08elSGORfyaeo2BCDaKrof+ba3WUd/Vbx4DDKlAjw==","signatures":[{"sig":"MEYCIQCEy34gb4WzvKiwf+ODKHP21JPXkQQ2U1bvdXZge0seugIhAKkuVHmmCROwc9QazyXyn0/LsR9zaRwP9KeWpYoLMVz4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fskills@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":316497},"engines":{"node":">=20"},"gitHead":"1934f31539538b8b7fabb235efcea2f83bd7805e","scripts":{"test":"node --test test/cli.test.js test/skills.test.js","prepublishOnly":"npm test"},"_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/claude-skills.git","type":"git"},"_npmVersion":"10.8.2","description":"A curated, fine-tunable library of Claude Code skills. Install globally or per-project via npx.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","@inquirer/prompts":"^7.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/skills_0.1.0_1778872410375_0.6005448926709644","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@dennisrongo/skills","version":"0.1.1","keywords":["claude","claude-code","skills","anthropic","ai","cli"],"author":{"name":"Dennis Rongo"},"license":"MIT","_id":"@dennisrongo/skills@0.1.1","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/claude-skills#readme","bugs":{"url":"https://github.com/dennisrongo/claude-skills/issues"},"bin":{"skills":"bin/claude-skills.js","claude-skills":"bin/claude-skills.js"},"dist":{"shasum":"822431f2961c9e887d185feef20e0d453f5ab284","tarball":"https://registry.npmjs.org/@dennisrongo/skills/-/skills-0.1.1.tgz","fileCount":54,"integrity":"sha512-rwyOlgnf3oJBohNAtZGgYWqF4pR1KHLHzx92RUsQbedXikF5MSY6gD+znGpcP3wcvyipY/ZnH8WtXXh4xkJzGA==","signatures":[{"sig":"MEUCIQDwGUGjjsNxzdvimYGYMr+eCMvKAJlsqTHDHdl9vsKrmwIgdWcT5hfAOImWKJ36yLkXfiQpgXiKhYIWvrEuIKEL5JU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fskills@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":316602},"engines":{"node":">=20"},"gitHead":"787f4cb36deae97b3a09d43c277ad4036a2a3966","scripts":{"test":"node --test test/cli.test.js test/skills.test.js","prepublishOnly":"npm test"},"_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/claude-skills.git","type":"git"},"_npmVersion":"10.8.2","description":"A curated, fine-tunable library of Claude Code skills. Install globally or per-project via npx.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","@inquirer/prompts":"^7.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/skills_0.1.1_1778872963181_0.07147506994537989","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@dennisrongo/skills","version":"0.1.2","keywords":["claude","claude-code","skills","anthropic","ai","cli"],"author":{"name":"Dennis Rongo"},"license":"MIT","_id":"@dennisrongo/skills@0.1.2","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/claude-skills#readme","bugs":{"url":"https://github.com/dennisrongo/claude-skills/issues"},"bin":{"skills":"bin/claude-skills.js"},"dist":{"shasum":"a00e768c142f74fb9e65d6b69e962d8c00f747b8","tarball":"https://registry.npmjs.org/@dennisrongo/skills/-/skills-0.1.2.tgz","fileCount":54,"integrity":"sha512-rUJU1XPZDKNHx1NzUk8dJyVbVMSf4u8Tk0M25Fv+Uttnte6wIBBClouR8bC5huPKrpQb1yb8oOOM8cCsc0FW9Q==","signatures":[{"sig":"MEUCIQCdLh3wpOfo0H/o0uOrCQyB3mzlAvu6AJpC7LfmLZ5M9AIgLWCxxZeppWL8VBVCzld6WkHUxpI1PbtQYbKYPAxwAA8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fskills@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":316599},"engines":{"node":">=20"},"gitHead":"b653c2d8a527ef19038a104295ac6e08a2808159","scripts":{"test":"node --test test/cli.test.js test/skills.test.js","prepublishOnly":"npm test"},"_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/claude-skills.git","type":"git"},"_npmVersion":"10.8.2","description":"A curated, fine-tunable library of Claude Code skills. Install globally or per-project via npx.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","@inquirer/prompts":"^7.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/skills_0.1.2_1778873457033_0.06122592388334258","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@dennisrongo/skills","version":"0.1.3","keywords":["claude","claude-code","skills","anthropic","ai","cli"],"author":{"name":"Dennis Rongo"},"license":"MIT","_id":"@dennisrongo/skills@0.1.3","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/claude-skills#readme","bugs":{"url":"https://github.com/dennisrongo/claude-skills/issues"},"bin":{"skills":"bin/claude-skills.js"},"dist":{"shasum":"cbc675e5a4ca233b336f4a20df84867bf90d15eb","tarball":"https://registry.npmjs.org/@dennisrongo/skills/-/skills-0.1.3.tgz","fileCount":72,"integrity":"sha512-XSTbMqN6L+Vl9WsmuODWW1oufiTNTfO8DHZD0v/4ETodVXAoLYRdYNIomqJXQFOw6p1JmQ02TbQHoeBKlxJt1w==","signatures":[{"sig":"MEYCIQD1iXvDOHO3XTFTQecTET37hMMnFPM5DYU08XZ5BowFagIhAJbrWvr6kqU5u+sVSsoaciEMG1sMsM5V92j/k1GLHB6k","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fskills@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":466509},"engines":{"node":">=20"},"gitHead":"738178086bca4dcbf1ebbc1ea2e6c817ee1c5cbc","scripts":{"test":"node --test test/cli.test.js test/skills.test.js","prepublishOnly":"npm test"},"_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/claude-skills.git","type":"git"},"_npmVersion":"10.8.2","description":"A curated, fine-tunable library of Claude Code skills. Install globally or per-project via npx.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","@inquirer/prompts":"^7.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/skills_0.1.3_1778880721157_0.6319428809717051","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@dennisrongo/skills","version":"0.2.0","keywords":["claude","claude-code","skills","anthropic","ai","cli"],"author":{"name":"Dennis Rongo"},"license":"MIT","_id":"@dennisrongo/skills@0.2.0","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/claude-skills#readme","bugs":{"url":"https://github.com/dennisrongo/claude-skills/issues"},"bin":{"skills":"bin/claude-skills.js"},"dist":{"shasum":"512525e7d19fe2cc755a69b43fc04a9efa84617f","tarball":"https://registry.npmjs.org/@dennisrongo/skills/-/skills-0.2.0.tgz","fileCount":76,"integrity":"sha512-10HryE9gDmU0Oz0ICtzC6q3FpuLba8egfGP1pPMoe1ugfMV35NM4L4hFVtVWChqMJLQe0CQfqACf4fF+RJ2Dmg==","signatures":[{"sig":"MEYCIQDbPkwnT6Y7VqFsRCSzr8yU9+jKtZYd7Bpgm/DlYaDTJAIhAIihs/0Hp3z+rCFlD7oGC8/06uCoccO8zN6i1eFs4/nL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fskills@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":517354},"engines":{"node":">=20"},"gitHead":"97b4485bdd24591a2e84fb72c78736e26255f1f2","scripts":{"test":"node --test test/cli.test.js test/skills.test.js","prepublishOnly":"npm test"},"_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/claude-skills.git","type":"git"},"_npmVersion":"10.8.2","description":"A curated, fine-tunable library of Claude Code skills. Install globally or per-project via npx.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","@inquirer/prompts":"^7.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/skills_0.2.0_1778885669063_0.07038335327435385","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@dennisrongo/skills","version":"0.3.0","keywords":["claude","claude-code","skills","anthropic","ai","cli"],"author":{"name":"Dennis Rongo"},"license":"MIT","_id":"@dennisrongo/skills@0.3.0","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/claude-skills#readme","bugs":{"url":"https://github.com/dennisrongo/claude-skills/issues"},"bin":{"skills":"bin/claude-skills.js"},"dist":{"shasum":"8214f951460ae250876aa188613699418377eded","tarball":"https://registry.npmjs.org/@dennisrongo/skills/-/skills-0.3.0.tgz","fileCount":78,"integrity":"sha512-wLHVDxa8cNlu7UPaxnU8uuD4J5sFPZzaZY2AXdcmPdCUICbO2FlgSzMB0qdIkYaRNYlwHEbyFYV+JM6+/wReMA==","signatures":[{"sig":"MEUCIQDQuSLLsRA1Krh2Ta55+ek78lTEiOxRgZM44/uEsZlzigIgQ+kdcmJm5DxP+B5bj9qJmdx4W4Rn049Nt6aPRkuU9lI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fskills@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":564458},"engines":{"node":">=20"},"gitHead":"574280412a10333bf42156a9ff5e7cef4f9dae9a","scripts":{"test":"node --test test/cli.test.js test/skills.test.js","prepublishOnly":"npm test"},"_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/claude-skills.git","type":"git"},"_npmVersion":"10.8.2","description":"A curated, fine-tunable library of Claude Code skills. Install globally or per-project via npx.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","@inquirer/prompts":"^7.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/skills_0.3.0_1778887660098_0.008761923943449768","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@dennisrongo/skills","version":"0.4.0","keywords":["claude","claude-code","skills","anthropic","ai","cli"],"author":{"name":"Dennis Rongo"},"license":"MIT","_id":"@dennisrongo/skills@0.4.0","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/claude-skills#readme","bugs":{"url":"https://github.com/dennisrongo/claude-skills/issues"},"bin":{"skills":"bin/claude-skills.js"},"dist":{"shasum":"d8fd6fc739d0e1488da3c23ce4ccb4fa8f742311","tarball":"https://registry.npmjs.org/@dennisrongo/skills/-/skills-0.4.0.tgz","fileCount":79,"integrity":"sha512-6hcKqly5QFD7qsZ/JAZavwdQi6q/bzPgjUUb1vczBh8wN0BOO7zGiuJhcN06+wjCRYQt9Mnicplj7vdvx/EPGg==","signatures":[{"sig":"MEUCIAqrvsyj66szxOKXIntPNiZJEt/dJwD1fHn3MhQaFG+KAiEAhAHoytNniaBzey0OMkYBj0ctrgwhL9oIOHhuiS7my+0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fskills@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":578083},"engines":{"node":">=20"},"gitHead":"7191b1761a6c387f777bae66a023f568bb2a35e1","scripts":{"test":"node --test test/cli.test.js test/skills.test.js","prepublishOnly":"npm test"},"_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/claude-skills.git","type":"git"},"_npmVersion":"10.8.2","description":"A curated, fine-tunable library of Claude Code skills. Install globally or per-project via npx.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","@inquirer/prompts":"^7.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/skills_0.4.0_1778888932720_0.6059911394422537","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@dennisrongo/skills","version":"0.5.0","keywords":["claude","claude-code","skills","anthropic","ai","cli"],"author":{"name":"Dennis Rongo"},"license":"MIT","_id":"@dennisrongo/skills@0.5.0","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/claude-skills#readme","bugs":{"url":"https://github.com/dennisrongo/claude-skills/issues"},"bin":{"skills":"bin/claude-skills.js"},"dist":{"shasum":"265bce240f17b572c2b11f989fe0c4a3245c39b1","tarball":"https://registry.npmjs.org/@dennisrongo/skills/-/skills-0.5.0.tgz","fileCount":80,"integrity":"sha512-m0wOjtOt/YBbwYMdkHZioX9hXehML/ipe3ybZy95QyS9aaAOEP63aoan/O0n5nWQfqJyIzZw2RD7j7pcNtTnJA==","signatures":[{"sig":"MEYCIQD1Q2ofLqMmjFJw+N9ledib6zyXj1rKd/zWokuMmHO+IwIhAPId03BLbCaXdvpQhFlNMqBsSvC0n7xEq0Rbh7uxfBfa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fskills@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":596833},"engines":{"node":">=20"},"gitHead":"5e6ef3437aa772f11be26fa0d3d9a926dec1f8a1","scripts":{"test":"node --test test/cli.test.js test/skills.test.js","prepublishOnly":"npm test"},"_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/claude-skills.git","type":"git"},"_npmVersion":"10.8.2","description":"A curated, fine-tunable library of Claude Code skills. Install globally or per-project via npx.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","@inquirer/prompts":"^7.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/skills_0.5.0_1778889932077_0.74601855082489","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@dennisrongo/skills","version":"0.6.0","keywords":["claude","claude-code","skills","anthropic","ai","cli"],"author":{"name":"Dennis Rongo"},"license":"MIT","_id":"@dennisrongo/skills@0.6.0","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/claude-skills#readme","bugs":{"url":"https://github.com/dennisrongo/claude-skills/issues"},"bin":{"skills":"bin/claude-skills.js"},"dist":{"shasum":"0f3fb029fbe43602f62f30e6185d229102d044bf","tarball":"https://registry.npmjs.org/@dennisrongo/skills/-/skills-0.6.0.tgz","fileCount":81,"integrity":"sha512-nyC84kHIDABnrlNAoEc+Es35F6yDdGq+uW/k+370mRdfuE3WIambVPFOwtnP7tJsdIxOIRkx2C6j7D9l5mUWyA==","signatures":[{"sig":"MEQCIEa5jDj45PlhSIPJJlaPAwRVK/OdqOgzi9T/WFGlDwWrAiBmAl3llAJI7oRIwfObWeMpgTsX8lLvu0gZx8IPYv1Qxw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fskills@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":617178},"engines":{"node":">=20"},"gitHead":"df8d0e10c637ef34bf9de41a1ad4004af0e4b235","scripts":{"test":"node --test test/cli.test.js test/skills.test.js","prepublishOnly":"npm test"},"_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/claude-skills.git","type":"git"},"_npmVersion":"10.8.2","description":"A curated, fine-tunable library of Claude Code skills. Install globally or per-project via npx.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","@inquirer/prompts":"^7.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/skills_0.6.0_1779217492507_0.034494654586116225","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@dennisrongo/skills","version":"0.7.0","keywords":["claude","claude-code","skills","anthropic","ai","cli"],"author":{"name":"Dennis Rongo"},"license":"MIT","_id":"@dennisrongo/skills@0.7.0","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/claude-skills#readme","bugs":{"url":"https://github.com/dennisrongo/claude-skills/issues"},"bin":{"skills":"bin/claude-skills.js"},"dist":{"shasum":"2be0a6a095bd3876a6f9025a731ff1ff5fd93ae6","tarball":"https://registry.npmjs.org/@dennisrongo/skills/-/skills-0.7.0.tgz","fileCount":82,"integrity":"sha512-3rO7lPEooW4u/pgQZFETyERT2+10FyQsBGjXq7+HYpNwWnHf3l0Y2zDCT7HzmO5nAHVUYXM+aYJv/MMd3GsJdw==","signatures":[{"sig":"MEUCIQCjR1QL0uccqN4yzssu3472evUQo5YUm502bUb1Fo9+YwIgKgm0k4D1EbOaNy5Lu28RfGDtqw11iT476tNSTE/h52c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fskills@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":676388},"engines":{"node":">=20"},"gitHead":"23e722679510c6efa2c84a71189b77c77c305bf9","scripts":{"test":"node --test test/cli.test.js test/skills.test.js","prepublishOnly":"npm test"},"_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/claude-skills.git","type":"git"},"_npmVersion":"10.8.2","description":"A curated, fine-tunable library of Claude Code skills. Install globally or per-project via npx.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","@inquirer/prompts":"^7.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/skills_0.7.0_1783386989586_0.5797382551869561","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@dennisrongo/skills","version":"0.8.0","keywords":["claude","claude-code","skills","anthropic","ai","cli"],"author":{"name":"Dennis Rongo"},"license":"MIT","_id":"@dennisrongo/skills@0.8.0","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/claude-skills#readme","bugs":{"url":"https://github.com/dennisrongo/claude-skills/issues"},"bin":{"skills":"bin/claude-skills.js"},"dist":{"shasum":"58902188319805ff7dc5ed9836a622ab225e4389","tarball":"https://registry.npmjs.org/@dennisrongo/skills/-/skills-0.8.0.tgz","fileCount":89,"integrity":"sha512-LveY4BMVm/GzusLjz/j3QViTksM2bEVqH/2r/mdzL3YE0+2uOSMkHzfiQh1JRWhIa8+9/guuk/QB1uyIdLyogw==","signatures":[{"sig":"MEYCIQDt05QnGd9OE0tD+t7cOeFn6FtX0t/D4JPQbmgVsRSdPgIhALocLh5g4cFe/KiMpwo4i+zYdG0wJrHX6atSjg4Ec1hK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fskills@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":752079},"engines":{"node":">=20"},"gitHead":"3cc3802417bb0233f2cdf885883ee8e445df0340","scripts":{"test":"node --test test/cli.test.js test/skills.test.js","prepublishOnly":"npm test"},"_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/claude-skills.git","type":"git"},"_npmVersion":"10.8.2","description":"A curated, fine-tunable library of Claude Code skills. Install globally or per-project via npx.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","@inquirer/prompts":"^7.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/skills_0.8.0_1783405841410_0.28440907836716733","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@dennisrongo/skills","version":"0.9.0","keywords":["claude","claude-code","skills","anthropic","ai","cli"],"author":{"name":"Dennis Rongo"},"license":"MIT","_id":"@dennisrongo/skills@0.9.0","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/claude-skills#readme","bugs":{"url":"https://github.com/dennisrongo/claude-skills/issues"},"bin":{"skills":"bin/claude-skills.js"},"dist":{"shasum":"dfab4d9ff868ce61bae177d91496acd1835eef49","tarball":"https://registry.npmjs.org/@dennisrongo/skills/-/skills-0.9.0.tgz","fileCount":93,"integrity":"sha512-aHayOcb5TgjQPY+ePN+7JKK2PjvOSbpLSCegpZ2jj76YQ30+1GdXX/3YIPkAusFz5aBeMUtZhidc45RM707Sgg==","signatures":[{"sig":"MEUCIQDOgmdPYT0Si1HYf2Xaz46dVjYbpNEwJ7y7qqZeoJPEMAIgJ/5Lmz9t02lKJxTRsH3+KEyMKZGhr2sB5SUnJGeh2M0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fskills@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":791492},"engines":{"node":">=20"},"gitHead":"86374cea4ce930b59b76984413992d23d01237af","scripts":{"test":"node --test test/cli.test.js test/skills.test.js","prepublishOnly":"npm test"},"_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/claude-skills.git","type":"git"},"_npmVersion":"10.8.2","description":"A curated, fine-tunable library of Claude Code skills. Install globally or per-project via npx.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","@inquirer/prompts":"^7.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/skills_0.9.0_1784603823642_0.38855271219764087","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@dennisrongo/skills","version":"0.10.0","keywords":["claude","claude-code","skills","anthropic","ai","cli"],"author":{"name":"Dennis Rongo"},"license":"MIT","_id":"@dennisrongo/skills@0.10.0","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/claude-skills#readme","bugs":{"url":"https://github.com/dennisrongo/claude-skills/issues"},"bin":{"skills":"bin/claude-skills.js"},"dist":{"shasum":"d1702e4abbbdc555572e20418fc619cc5e2d2acc","tarball":"https://registry.npmjs.org/@dennisrongo/skills/-/skills-0.10.0.tgz","fileCount":101,"integrity":"sha512-uz9BlRH003r6znrXw6c8YHJTkGY8Qx9fSfRbg3qisKctHcWHdOzUYE3PtQzJ2z4a3fgbb4dPdFwXBK1aBJptKw==","signatures":[{"sig":"MEYCIQCE2Usjiiv96W8/oSwa8mo2pXhzXxS4l8Y5SOHnPzm7vQIhALMw+5PjM16vfq2d6MYNzN6BiXoyE8gbjQFslHdngPrX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fskills@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":852021},"engines":{"node":">=20"},"gitHead":"513c03ada5ebbee74d6e1bec2bfd1b54e015bc00","scripts":{"test":"node --test test/cli.test.js test/skills.test.js","prepublishOnly":"npm test"},"_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/claude-skills.git","type":"git"},"_npmVersion":"10.8.2","description":"A curated, fine-tunable library of Claude Code skills. Install globally or per-project via npx.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","@inquirer/prompts":"^7.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/skills_0.10.0_1784613356226_0.6255446809186316","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@dennisrongo/skills","version":"0.11.0","keywords":["claude","claude-code","skills","anthropic","ai","cli"],"author":{"name":"Dennis Rongo"},"license":"MIT","_id":"@dennisrongo/skills@0.11.0","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/claude-skills#readme","bugs":{"url":"https://github.com/dennisrongo/claude-skills/issues"},"bin":{"skills":"bin/claude-skills.js"},"dist":{"shasum":"3dd1299f859e1f953ab7c8a35528840ecfa9ba01","tarball":"https://registry.npmjs.org/@dennisrongo/skills/-/skills-0.11.0.tgz","fileCount":103,"integrity":"sha512-BnIF2KXZ4KW1Y+fNskErDJ0rk2i0WD0rTcfRcyDb8/31bOvezOEhrsVGbRmnz+MTeo04Vonhr/+fAwupGsUCKg==","signatures":[{"sig":"MEUCIQCUgWntEQ+jPflpQHSTmfQMBqprsPy0i+UfIsMthHqqlQIgdWkmkk40evYjL4NjW6vjuTzpHamvd3US0rYmPiPkqvs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fskills@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":871611},"engines":{"node":">=20"},"gitHead":"fe3254474451a3cc9b41263b0a220d71eed5de1d","scripts":{"test":"node --test test/cli.test.js test/skills.test.js","prepublishOnly":"npm test"},"_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/claude-skills.git","type":"git"},"_npmVersion":"10.8.2","description":"A curated, fine-tunable library of Claude Code skills. Install globally or per-project via npx.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","@inquirer/prompts":"^7.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/skills_0.11.0_1784657805527_0.2957973128760052","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@dennisrongo/skills","version":"0.12.0","keywords":["claude","claude-code","skills","anthropic","ai","cli"],"author":{"name":"Dennis Rongo"},"license":"MIT","_id":"@dennisrongo/skills@0.12.0","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/claude-skills#readme","bugs":{"url":"https://github.com/dennisrongo/claude-skills/issues"},"bin":{"skills":"bin/claude-skills.js"},"dist":{"shasum":"2cbdcd502d396b38bc3eee8259f6d7eff04f40a2","tarball":"https://registry.npmjs.org/@dennisrongo/skills/-/skills-0.12.0.tgz","fileCount":101,"integrity":"sha512-eNxePqbvIgqrFPIgpmi04FvQkheKsjkeQe5BU33+D8Zj+QvS3VQjHXKRiJBftzqtgKrMNX8gt2IpYam2bronZg==","signatures":[{"sig":"MEQCIHNjW6N2D/Wfet0XqiC+fuf9jWY8rZz9JdibrRoO8VqkAiBwhRi4RwEBsRJG5xrMkQ9M6wVgNm19AjWMcyZLeFdZag==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fskills@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":822033},"engines":{"node":">=20"},"gitHead":"18232fd5b7826061578e0f3c3687321a6649e79c","scripts":{"test":"node --test test/cli.test.js test/skills.test.js","prepublishOnly":"npm test"},"_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/claude-skills.git","type":"git"},"_npmVersion":"10.8.2","description":"A curated, fine-tunable library of Claude Code skills. Install globally or per-project via npx.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","@inquirer/prompts":"^7.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/skills_0.12.0_1784748549043_0.4774900051139972","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@dennisrongo/skills","version":"0.13.0","keywords":["claude","claude-code","skills","anthropic","ai","cli"],"author":{"name":"Dennis Rongo"},"license":"MIT","_id":"@dennisrongo/skills@0.13.0","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/claude-skills#readme","bugs":{"url":"https://github.com/dennisrongo/claude-skills/issues"},"bin":{"skills":"bin/claude-skills.js"},"dist":{"shasum":"c43908250f0851fa8dfc4ea2a0e91af43090f4c1","tarball":"https://registry.npmjs.org/@dennisrongo/skills/-/skills-0.13.0.tgz","fileCount":102,"integrity":"sha512-Izmeel04bnu/GblM1ahw4BF8mwDxtLCzXzWos/MxyXxRlDqn4Zhs0qoJxTnFVUezIgo+t5c5cMXm5geEPZy0PQ==","signatures":[{"sig":"MEUCIBktlgQ/EKxT00nC5na+hzCqW35j8C/pPeCWNBAlxzmQAiEA4G/V+nZ++pluk5bxhPDZFp9J3nazLUgqS69X0LZMVGQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fskills@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":832163},"engines":{"node":">=20"},"gitHead":"86a8f679c07fb9dce8a6b2e3ee99a6c37323368e","scripts":{"test":"node --test test/cli.test.js test/skills.test.js","prepublishOnly":"npm test"},"_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/claude-skills.git","type":"git"},"_npmVersion":"10.8.2","description":"A curated, fine-tunable library of Claude Code skills. Install globally or per-project via npx.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","@inquirer/prompts":"^7.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/skills_0.13.0_1785881029435_0.468495064640005","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@dennisrongo/skills","version":"0.14.0","keywords":["claude","claude-code","skills","anthropic","ai","cli"],"author":{"name":"Dennis Rongo"},"license":"MIT","_id":"@dennisrongo/skills@0.14.0","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/claude-skills#readme","bugs":{"url":"https://github.com/dennisrongo/claude-skills/issues"},"bin":{"skills":"bin/claude-skills.js"},"dist":{"shasum":"942c6277aef95a82c330c160ac08f3fa1dc0428e","tarball":"https://registry.npmjs.org/@dennisrongo/skills/-/skills-0.14.0.tgz","fileCount":105,"integrity":"sha512-rMBMFuoH9jWcY3OEcTIan0d+/wtWwIAz/T0dvvbDQvHCkY0mSMtr5E38/EkHusFKgggf7QLfrCdQDPCtOKEkAw==","signatures":[{"sig":"MEQCIDSV6N/pkdfENBj95lhmqm+8jRN4uupRg5WXVem1RF2wAiA2/5qNKyZHyLkc58kNINyr+2c5akVZJ6CkwGZdjiZTkg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fskills@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":858707},"engines":{"node":">=20"},"gitHead":"7653f4bdff8717d11be63f4b12020a7c23541505","scripts":{"test":"node --test test/cli.test.js test/skills.test.js","prepublishOnly":"npm test"},"_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/claude-skills.git","type":"git"},"_npmVersion":"10.8.2","description":"A curated, fine-tunable library of Claude Code skills. Install globally or per-project via npx.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","@inquirer/prompts":"^7.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/skills_0.14.0_1785886242339_0.426641640670945","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@dennisrongo/skills","version":"0.15.0","keywords":["claude","claude-code","skills","anthropic","ai","cli"],"author":{"name":"Dennis Rongo"},"license":"MIT","_id":"@dennisrongo/skills@0.15.0","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/claude-skills#readme","bugs":{"url":"https://github.com/dennisrongo/claude-skills/issues"},"bin":{"skills":"bin/claude-skills.js"},"dist":{"shasum":"72e0df9864a0c5f40ad1563d9774e9763568ed7b","tarball":"https://registry.npmjs.org/@dennisrongo/skills/-/skills-0.15.0.tgz","fileCount":105,"integrity":"sha512-8Hz86qjUFKfGr+MhraAWGe3rFzlYoeUwRY5DFISS7kdH+MMdGF388tE/OEtF2bxws+B8maJ6RwQ9ftSKWN/5Rw==","signatures":[{"sig":"MEYCIQDx92WNL4z0qfNf6RapHVgiq1HuR4hSFqJVi3/A5hmeFAIhAO6pMqHoa1gFjxqK09Q26QykbTyr08r4fhihCJQ3BLGy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fskills@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":853538},"engines":{"node":">=20"},"gitHead":"74f3921ffb336c7db886dd5ff59d9e73c4b9b210","scripts":{"test":"node --test test/cli.test.js test/skills.test.js","prepublishOnly":"npm test"},"_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/claude-skills.git","type":"git"},"_npmVersion":"10.8.2","description":"A curated, fine-tunable library of Claude Code skills. Install globally or per-project via npx.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","@inquirer/prompts":"^7.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/skills_0.15.0_1785957967899_0.03950192382109696","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"@dennisrongo/skills","version":"0.16.0","keywords":["claude","claude-code","skills","anthropic","ai","cli"],"author":{"name":"Dennis Rongo"},"license":"MIT","_id":"@dennisrongo/skills@0.16.0","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/claude-skills#readme","bugs":{"url":"https://github.com/dennisrongo/claude-skills/issues"},"bin":{"skills":"bin/claude-skills.js"},"dist":{"shasum":"8863d21e1d659f6d9ce9403bd6abca6a9bf576bf","tarball":"https://registry.npmjs.org/@dennisrongo/skills/-/skills-0.16.0.tgz","fileCount":109,"integrity":"sha512-MeZhh4hmqN3vJlasW+txoQKh7GrjnXnMYWjMcUWG6+ZyTbmV+uluUGd7TN+VUK10D8O2lH+hjs5Sq9Ove+Ti0A==","signatures":[{"sig":"MEUCIFcJb7UPNDOPVw7Obe8XtsQcRBKD9mfhdsa/bt8rFsdKAiEAyhZtx6of2gj+2vSqQ4x3fhVn6RSIFmRnVJLEALxjxEA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fskills@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":890667},"engines":{"node":">=20"},"gitHead":"35a243babd87f41357f5007226c8b6e025fe9116","scripts":{"test":"node --test test/cli.test.js test/skills.test.js","prepublishOnly":"npm test"},"_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/claude-skills.git","type":"git"},"_npmVersion":"10.8.2","description":"A curated, fine-tunable library of Claude Code skills. Install globally or per-project via npx.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","@inquirer/prompts":"^7.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/skills_0.16.0_1786910807623_0.5437569251347669","host":"s3://npm-registry-packages-npm-production"}},"0.16.1":{"name":"@dennisrongo/skills","version":"0.16.1","keywords":["claude","claude-code","skills","anthropic","ai","cli"],"author":{"name":"Dennis Rongo"},"license":"MIT","_id":"@dennisrongo/skills@0.16.1","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/claude-skills#readme","bugs":{"url":"https://github.com/dennisrongo/claude-skills/issues"},"bin":{"skills":"bin/claude-skills.js"},"dist":{"shasum":"f8596c40bc39c9250916a3060ddd6045640c3f4c","tarball":"https://registry.npmjs.org/@dennisrongo/skills/-/skills-0.16.1.tgz","fileCount":108,"integrity":"sha512-e1su7FbLTW2X3xsg3e28LvGPtJQ+7ruTF1Wi1aZ5oZHucGNDHn93ey6/ewjBRhjGCNkkfqB/LRz4g5NG3R/ZmQ==","signatures":[{"sig":"MEYCIQD09ypm/lcQQXT1hjWS8rWgZTEQIXQcOf3C55bsO+orggIhAIYhmpZAbvJTJytlgh6DKtS/1OSJ1EGyIoU5qVfJK+LL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fskills@0.16.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":891110},"engines":{"node":">=20"},"gitHead":"9b1bb05055d132a856dc4c5696cb996b011dc749","scripts":{"test":"node --test test/cli.test.js test/skills.test.js","prepublishOnly":"npm test"},"_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/claude-skills.git","type":"git"},"_npmVersion":"10.8.2","description":"A curated, fine-tunable library of Claude Code skills. Install globally or per-project via npx.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","@inquirer/prompts":"^7.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/skills_0.16.1_1787934234174_0.027739708491116177","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"@dennisrongo/skills","version":"0.17.0","description":"A curated, fine-tunable library of Claude Code skills. Install globally or per-project via npx.","bin":{"skills":"bin/claude-skills.js"},"scripts":{"test":"node --test test/cli.test.js test/skills.test.js","prepublishOnly":"npm test"},"keywords":["claude","claude-code","skills","anthropic","ai","cli"],"author":{"name":"Dennis Rongo"},"license":"MIT","engines":{"node":">=20"},"dependencies":{"@inquirer/prompts":"^7.0.0","kleur":"^4.1.5"},"repository":{"type":"git","url":"git+https://github.com/dennisrongo/claude-skills.git"},"homepage":"https://github.com/dennisrongo/claude-skills#readme","bugs":{"url":"https://github.com/dennisrongo/claude-skills/issues"},"publishConfig":{"access":"public","provenance":true},"_id":"@dennisrongo/skills@0.17.0","gitHead":"267b5269ec4d3f5b8bba04fcd0f818e5e6a76715","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-pbAr2f8cI6YdCldV8W0XsJUi/cMhn/hn17hcjGujYLWReMsvi1hM3KoyhmUMhBBnc6BNDatdLjxtGKRM5bb4RQ==","shasum":"e52d6f7e5e69eb57273952ac11c2cc808e012fea","tarball":"https://registry.npmjs.org/@dennisrongo/skills/-/skills-0.17.0.tgz","fileCount":111,"unpackedSize":973306,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fskills@0.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDQ7VEUeCi8zB45uEBMmNsEzzzymifU95r/QYZeq02sDAIgN9V09ENQ4eifm720rjlc4+sBix5qd0dDx9gxOBwui5Y="}]},"_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"directories":{},"maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/skills_0.17.0_1789001021208_0.4471662226421558"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-15T19:13:29.982Z","modified":"2026-09-10T00:43:41.720Z","0.1.0":"2026-05-15T19:13:30.529Z","0.1.1":"2026-05-15T19:22:43.476Z","0.1.2":"2026-05-15T19:30:57.219Z","0.1.3":"2026-05-15T21:32:01.354Z","0.2.0":"2026-05-15T22:54:29.311Z","0.3.0":"2026-05-15T23:27:40.276Z","0.4.0":"2026-05-15T23:48:52.919Z","0.5.0":"2026-05-16T00:05:32.261Z","0.6.0":"2026-05-19T19:04:52.677Z","0.7.0":"2026-07-07T01:16:29.738Z","0.8.0":"2026-07-07T06:30:41.680Z","0.9.0":"2026-07-21T03:17:03.796Z","0.10.0":"2026-07-21T05:55:56.442Z","0.11.0":"2026-07-21T18:16:45.858Z","0.12.0":"2026-07-22T19:29:09.276Z","0.13.0":"2026-08-04T22:03:49.598Z","0.14.0":"2026-08-04T23:30:42.516Z","0.15.0":"2026-08-05T19:26:08.128Z","0.16.0":"2026-08-16T20:06:47.781Z","0.16.1":"2026-08-28T16:23:54.330Z","0.17.0":"2026-09-10T00:43:41.384Z"},"bugs":{"url":"https://github.com/dennisrongo/claude-skills/issues"},"author":{"name":"Dennis Rongo"},"license":"MIT","homepage":"https://github.com/dennisrongo/claude-skills#readme","keywords":["claude","claude-code","skills","anthropic","ai","cli"],"repository":{"type":"git","url":"git+https://github.com/dennisrongo/claude-skills.git"},"description":"A curated, fine-tunable library of Claude Code skills. Install globally or per-project via npx.","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"readme":"# claude-skills\n\nThe [Claude Code](https://docs.claude.com/en/docs/claude-code/overview) skills I ([Dennis Rongo](https://github.com/dennisrongo)) use every day — not shelfware, not theory. Each one earns its place by surviving real work: shipping features, reviewing PRs, debugging production, designing architecture, and keeping commits clean.\n\nThey're small, composable, and meant to be tuned. Install the ones you want, edit them in-place, send a PR if yours sharpens mine. The library is self-contained: no skill depends on anything outside this repo's `skills/` directory. See [How the skills fit together](#how-the-skills-fit-together) for the idea-to-PR flow.\n\n> Skills are reusable bundles of instructions that Claude consults when relevant. This repo is my personal daily-driver library — grow it over time, tune the ones that misfire, install the set you want on any machine.\n\n## Quick start\n\n### From npm (recommended)\n\nThe package is published as [`@dennisrongo/skills`](https://www.npmjs.com/package/@dennisrongo/skills). The installed binary is `skills`.\n\n```bash\n# See what's in the library\nnpx @dennisrongo/skills list\n\n# Interactive picker, global (~/.claude/skills)\nnpx @dennisrongo/skills install\n\n# Interactive picker, project-scoped (./.claude/skills)\nnpx @dennisrongo/skills install -p\n\n# Install specific skills globally (~/.claude/skills)\nnpx @dennisrongo/skills install conventional-commits code-review\n\n# Install specific skills into the current project\nnpx @dennisrongo/skills install conventional-commits code-review -p\n\n# Install everything into the current project (./.claude/skills)\nnpx @dennisrongo/skills install --all --project\n```\n\nOr install once and call it directly:\n\n```bash\nnpm install -g @dennisrongo/skills\nskills list\n```\n\n### From GitHub (for the latest `main`)\n\nUseful if you want changes that haven't been released to npm yet.\n\n```bash\nnpx github:dennisrongo/claude-skills list\nnpx github:dennisrongo/claude-skills install\n```\n\n> The interactive picker, `--all`, and named-skill installs all accept `-p` / `--project` to target `./.claude/skills` instead of the global `~/.claude/skills`. Run it from the project root.\n\n### Shorter alias (recommended)\n\n`npx github:dennisrongo/claude-skills` is a mouthful. Add a shell alias:\n\n```bash\n# bash / zsh — add to ~/.bashrc or ~/.zshrc\nalias skills=\"npx --yes github:dennisrongo/claude-skills\"\n\n# fish — add to ~/.config/fish/config.fish\nalias skills \"npx --yes github:dennisrongo/claude-skills\"\n```\n\nThen:\n\n```bash\nskills list\nskills install --all\n```\n\n### From ClawHub (any MCP-capable agent — OpenClaw, Hermes, etc.)\n\nEvery skill is published to [ClawHub](https://clawhub.ai/dennisrongo) under `@dennisrongo/<skill-name>` with commit provenance linked back to this repo. ClawHub is the cross-agent registry — if your agent installs skills from it, you don't need this repo or npm at all.\n\n```bash\n# OpenClaw\nopenclaw skills install @dennisrongo/code-review\nopenclaw skills install @dennisrongo/diagnose\n\n# Hermes Agent\nhermes skills install clawhub/dennisrongo/code-review\n\n# The whole catalog\nopenclaw skills search dennisrongo\n```\n\n```bash\n# Same skills, straight from this repo (Claude Code's native skill dirs):\nnpx @dennisrongo/skills install code-review diagnose\n# or pin a copy:\ngit clone https://github.com/dennisrongo/claude-skills.git\ncp -r claude-skills/skills/diagnose ~/.claude/skills/\n```\n\n> Skills are plain `SKILL.md` folders — agent-agnostic by design. The npm package targets Claude Code's skill directories (`~/.claude/skills`, `./.claude/skills`) specifically; ClawHub puts the same content within reach of every registry-aware agent.\n\n### Pinning a version\n\n`npx github:...` resolves to the latest commit on `main`. To pin to a specific commit, branch, or tag:\n\n```bash\nnpx github:dennisrongo/claude-skills#v0.1.0 install      # tag\nnpx github:dennisrongo/claude-skills#abc1234 install     # commit SHA\nnpx github:dennisrongo/claude-skills#some-branch install # branch\n```\n\n### Local clone (for contributors)\n\n```bash\ngit clone https://github.com/dennisrongo/claude-skills.git\ncd claude-skills\nnpm install\nnode bin/claude-skills.js list\n```\n\n## Available skills\n\n| Skill | What it does |\n|---|---|\n| [`api-contract-review`](./skills/api-contract-review/SKILL.md) | Review an API's contract as a **promise to consumers you can't see** — HTTP endpoints, webhooks, published events, SDK-facing types. Two evidence rules do the work: a **breaking** verdict requires a before/after diff of a consumer-visible element (`git show` the old DTO/spec vs. the working tree — removed/renamed fields, type changes, requiredness tightened on requests, status-code or enum semantics changed under the same name), and an **inconsistency** finding requires citing the in-repo precedent being violated (error envelope, naming, pagination style, auth placement — grep the siblings first or don't flag it). Also checks the day-one invariants that can't be retrofitted: collections paginate from the start, retryable writes are idempotent, errors carry a machine-usable `code`, no ORM entities serialized wholesale, timestamps/money carry explicit units. Reports **Breaking / Design / Questions**, ranked — zero findings is a valid outcome. Distinct from [`code-review`](./skills/code-review/SKILL.md) (implementation quality): this reviews the *surface*. Triggers on \"review this API\", \"is this a breaking change\", \"check backward compatibility\", \"review the contract\", or `/api-contract-review`. |\n| [`autopilot`](./skills/autopilot/SKILL.md) | Fully autonomous end-to-end run of **one** defined task with **no human gates** — a work item (pulled via [`azure-devops`](./skills/azure-devops/SKILL.md) or [`github`](./skills/github/SKILL.md), chosen by the git remote, **including embedded screenshots**) or an inline description becomes a verified working tree plus an evidence-backed report, and every question it would have asked becomes an ASSUMPTIONS row (question → choice → why with `file:line` → blast radius). Consumes an `APPROVED` [`design-brief`](./skills/design-brief/SKILL.md) as the spec when one matches; an *architectural* task is a hard stop with the brief named as the route back. **Puts every applicable skill in the library to work on observable predicates**, via a routing table with a probe and a fallback per row: [`task-executor`](./skills/task-executor/SKILL.md)'s inspection discipline and [`think-like-fable`](./skills/think-like-fable/SKILL.md)'s self-grill replace the plan gate; stack skills ([`dotnet-onion-api`](./skills/dotnet-onion-api/SKILL.md), [`nextjs-app-router`](./skills/nextjs-app-router/SKILL.md), [`tauri-2-app`](./skills/tauri-2-app/SKILL.md)) supply conventions when their files are present; each behavior increment opens red under [`write-tests`](./skills/write-tests/SKILL.md); a failure the error text can't explain goes to [`diagnose`](./skills/diagnose/SKILL.md); [`code-review`](./skills/code-review/SKILL.md) always runs with blocker-fix authority, joined by [`regression-hunt`](./skills/regression-hunt/SKILL.md), [`security-review`](./skills/security-review/SKILL.md), [`sql-review`](./skills/sql-review/SKILL.md), [`migration-safety`](./skills/migration-safety/SKILL.md), [`api-contract-review`](./skills/api-contract-review/SKILL.md), [`ship-it`](./skills/ship-it/SKILL.md), [`e2e-verify`](./skills/e2e-verify/SKILL.md), and [`maestro-mobile-test`](./skills/maestro-mobile-test/SKILL.md) when the diff trips their predicate. A present skill is mandatory — \"the diff felt small\" never skips one — and the report's **Skills used** table proves which ran. Baselines the suite before the first edit, never implements on the default branch, one named fix and one retry per failure, **three failed fixes on one behavior is a hard stop** with the tree reverted to the last observed green. **Stops dead before any commit/push/PR.** The report is a fixed template: Outcome, a **Requirements table** (each criterion quoted with its observed evidence, met / gap / deviation), what changed, tagged evidence (`verified` / `inferred` / `assumed`), review outcome, skills used, assumptions, found-along-the-way, and a paste-ready [`conventional-commits`](./skills/conventional-commits/SKILL.md) block naming [`create-pr`](./skills/create-pr/SKILL.md) as your next step — gated by a delivery checklist before it is handed back. Sub-agents route by role from [`model-inventory`](./skills/model-inventory/SKILL.md) chains. Launch headless: `claude -p \"autopilot task 123\" --permission-mode acceptEdits`. Triggers on \"autopilot task <id>\", \"run this autonomously\", \"work this end to end without asking\", or `/autopilot`. |\n| [`azure-devops`](./skills/azure-devops/SKILL.md) | Work with any Azure DevOps org via the az CLI, fully **config-driven** — org, project, target branch, and required-reviewer GUIDs live in `.claude/azure-devops.json` (the skill offers to create it on first use; nothing org-specific is hardcoded). Queries assigned/sprint work items with WIQL, reads a work item's description **and downloads + views its embedded screenshots** (acceptance criteria hide in images), publishes branches only with approval, and creates PRs with house defaults — one PR per repo, required reviewers with a GUID PUT fallback when email resolution fails, auto-complete, work item linked — then **verifies every setting after creation**. Ships the battle-tested az.cmd sharp edges: JMESPath quoting through the batch wrapper, plain-float `--api-version`, stderr-polluted JSON parsing, PAT scope-gap diagnosis. Triggers on \"pull my tasks\", \"read task 12345\", \"az boards\", \"az repos\" — PR creation routes through [`create-pr`](./skills/create-pr/SKILL.md), which uses this skill as its Azure DevOps backend. |\n| [`backlog-planner`](./skills/backlog-planner/SKILL.md) | The **intake side** of [`goal-runner`](./skills/goal-runner/SKILL.md) — turn a feature idea, conversation, rough notes, or an `APPROVED` brief from [`design-brief`](./skills/design-brief/SKILL.md) into researched, dependency-ordered checkbox tasks appended to the project's roadmap file, in exactly the format `goal-runner` and `/goal` consume unattended. **Scope check first**: material spanning independent subsystems is split into one section per subsystem, each shippable alone, and the first is planned fully before the rest. **Research is most of the work**: every file/module/endpoint a task names is a claim that gets grepped or opened (or rewritten as a locate-first spike), scouting scales from inline reads to parallel `Explore` sub-agents, the riskiest unknown is front-loaded, and [`think-like-fable`](./skills/think-like-fable/SKILL.md) rigor applies when installed. Each task passes the **fresh-session test** — one `- [ ]` line carrying what + done-when, plain sub-bullets for verified entry points, acceptance criteria, the verification command, and labeled `Assumes:` lines (never nested checkboxes — those become phantom queue items). **Interfaces between tasks are written down**: `Produces:` on the task that creates a function/type/endpoint, `Consumes:` verbatim on the task that uses it; project-wide rules go once in a **global-constraints block** the coordinator copies into every coder brief. Before appending, three scans: **coverage** (every requirement → a task, every task → a requirement), **placeholders** (no \"TBD\", \"handle edge cases\", \"similar to task N\"), and **name consistency** across tasks. Appends without reordering or ticking anything; when no roadmap exists, asks once and defaults to `ROADMAP.md`. Two detailed tasks is a valid outcome. Triggers on \"add this to the backlog\", \"add it to the roadmap\", \"plan these tasks\", \"break this down into tasks\", or `/backlog-planner`. |\n| [`code-review`](./skills/code-review/SKILL.md) | Production-readiness review at either scope — **uncommitted working-tree changes** (the default) or a **committed branch grouped per `#NNN` task** from commit messages (per-task lens council, `unscoped` bucket for unreferenced commits — see `references/branch-review.md`). **Read-only on git state** while reviewing: `status`/`diff`/`show`/`log` only, a throwaway worktree for another revision, never `checkout`/`stash`/`reset` on the user's checkout. Hunts DRY violations, dead code, leaky and premature abstractions, magic values, missing error handling, debug residue, missing migrations / flags / logs — prioritized correctness → DRY/design → tests → security → performance → production-readiness → readability — and treats **intent alignment as a finding class**: the diff is checked line by line against the ticket, brief, or plan, deviations are named so the author can confirm them, and a requirement that lives in *unchanged* code is reported as `question: cannot verify from diff`, never silently passed. On non-trivial diffs, convenes a **lens council**: parallel `Explore` sub-agents (correctness / design / security / tests / production-readiness), briefed **without pre-judgment** (no \"don't flag X\"), followed by an **adversarial critique round** that challenges every blocker against the surrounding code. Auto-detects and runs the project's tests and build and gates the verdict on them. **Never edits code unprompted** — categorized report (`blocking` / `suggestion` / `question` / `nit` / `praise`) with `file:line` citations, zero findings a valid outcome, then asks per-finding before fixing. **Acting on findings** — yours, a sub-agent's, a CI bot's, or a human reviewer's — is its own protocol: read all before touching any, verify each against the codebase, push back with reasoning when one is wrong, implement blocking → simple → complex one at a time with a validation each, no performative agreement. Composes with [`regression-hunt`](./skills/regression-hunt/SKILL.md) for what the change breaks elsewhere. Triggers on \"code review\", \"review the diff\", \"review my PR\", \"review my branch\", \"is this production ready\", \"DRY check\", or `/code-review`. |\n| [`codebase-explainer`](./skills/codebase-explainer/SKILL.md) | Produce a durable onboarding artifact for a repo — writes `ONBOARDING.md` (or `docs/ONBOARDING.md` if `docs/` exists) with a tight **read this first** minimum, system overview, dependency map (top-level prod deps + how each is actually used in *this* codebase, with key call site), startup flow (entry point → bootstrap → config), auth flow (or an explicit \"no auth detected\" when there isn't one), and the 5–15 important files — every claim backed by a `file:line` citation. Walks the repo with **parallel Explore sub-agents** to stay context-safe on big projects, refreshes an existing `ONBOARDING.md` in place instead of rewriting from scratch, and is opinionated about what *not* to include (no dev/test/types deps, no 40-file \"important files\" lists, no fabricated auth flows, no dates that rot). Built for revisiting a project after months away — and for new teammates landing in an unfamiliar repo. Composes with [`improve-codebase-architecture`](./skills/improve-codebase-architecture/SKILL.md) when shallow-module clusters surface and [`handoff`](./skills/handoff/SKILL.md) for session-level state. Triggers on \"explain this codebase\", \"onboard me\", \"give me a tour\", \"where do I start\", \"I haven't looked at this in months\", or `/codebase-explainer`. |\n| [`conventional-commits`](./skills/conventional-commits/SKILL.md) | Write git commit messages that follow the [Conventional Commits](https://www.conventionalcommits.org/) spec (`feat`, `fix`, `chore`, `docs`, …), auto-prefixed with the ticket number from the current branch (e.g. `feature/12345-...` → `#12345`) and a project tag (`API` / `CLIENT` / `CONSOLE` / `DB`) when detectable from the diff. Both prefixes are omitted when they don't apply; `CONSOLE` means .NET console/worker apps, and a tie between project buckets is asked, not guessed. The type comes from the diff actually read, not the user's phrasing; unrelated staged changes are flagged with a suggestion to split rather than folded into `chore: various updates`; breaking changes get `!` plus a `BREAKING CHANGE:` footer; descriptions stay lowercase, under 72 characters, no trailing period. Triggers on \"write a commit message\", \"help me commit\", `git commit`, or changelog-entry requests. |\n| [`create-pr`](./skills/create-pr/SKILL.md) | End-to-end pull-request flow with the review gate **before** publishing: runs [`code-review`](./skills/code-review/SKILL.md) in branch scope (plus [`sql-review`](./skills/sql-review/SKILL.md) when SQL changed, plus [`regression-hunt`](./skills/regression-hunt/SKILL.md) when the branch renames a symbol, changes a default or signature, or touches shared state — a confirmed regression is blocking); blocking findings are fixed or explicitly waived with the waiver recorded in the PR body. **Green on the exact tree you publish** — anything that changes after the gate (blocker fix, squash, rebase) means re-run and quote the summary line before pushing. **Confirms the base branch** against what the branch actually forked from (`git merge-base`, upstream, or the work item) and asks on mismatch rather than opening a PR that reviews someone else's commits. Pushes only with approval, **never force-pushes on its own initiative** (a rejected push means fetch and investigate), creates **one PR per repo per work item** with configured house defaults, cross-references sibling PRs with deploy-order coupling stated (DB → API → client), and **re-reads each PR after creation** to confirm reviewers/links/auto-complete actually stuck. Detects the provider from the git remote: Azure DevOps → [`azure-devops`](./skills/azure-devops/SKILL.md), GitHub → [`github`](./skills/github/SKILL.md). Triggers on \"create a PR\", \"publish the branch and create a PR\", \"ship this branch\", or `/create-pr`. |\n| [`design-brief`](./skills/design-brief/SKILL.md) | Turn a vague feature idea into an **approved design brief** — `.claude/design-briefs/<slug>.md` recording the intent, every decision with its *why* and cost-if-wrong, scope in/out, exact interfaces (`Produces:`/`Consumes:` lines ready for [`backlog-planner`](./skills/backlog-planner/SKILL.md)), constraints, and the precedent slice it follows. Reads the code before asking, then interviews with **forking questions only** (a question earns its slot only if different answers lead to different designs), and when a genuine design fork survives the precedent check runs **Design It Twice** — two parallel sub-agents each defending one side, a 3/3 debate, one recommendation, the loser recorded as the considered alternative. Produces decisions, never code; [`task-executor`](./skills/task-executor/SKILL.md) and [`autopilot`](./skills/autopilot/SKILL.md) consume the approved brief as their spec, and a brief-less \"this is just a bounded task\" verdict is a valid outcome. |\n| [`diagnose`](./skills/diagnose/SKILL.md) | Disciplined diagnosis loop for hard bugs and performance regressions — reproduce → minimise → hypothesise → instrument → fix → regression-test — with a fast, deterministic feedback loop before any guessing. The user's own diagnosis is hypothesis #1, not the conclusion. Before theorising, **compares against a working sibling** (the nearest thing that works, read completely, every difference listed — each one a ready-made hypothesis), and on multi-layer paths **bisects by boundary first** (log what enters and exits each layer in one run, find the first divergence, exonerate the rest by evidence). On non-trivial cases, Phase 3 convenes a **hypothesis council**: parallel `Explore` sub-agents, one per candidate, each defending its case with falsifiable predictions and `file:line` evidence, then a cross-examination round drops the unsupported and ranks the survivors; trivial bugs use 1–2 inline hypotheses. Library-API hypotheses check current docs (`context7`) before instrumenting; perf regressions measure before they fix. Tagged `[DEBUG-...]` instrumentation cleans up with one grep. The accepted hypothesis must explain **every** symptom; the fix is **one change scoped to the cause**, no bundled refactoring, regression test written first where a correct seam exists. **Three failed fixes is a wrong architecture, not a fourth attempt** — stop and hand off to [`improve-codebase-architecture`](./skills/improve-codebase-architecture/SKILL.md). Several independent failures at once → one sub-agent per domain, in parallel. Ends with a post-mortem naming what would have prevented the bug — defense in depth at the boundary the bad value entered, condition-based waiting in place of sleeps. Triggers on \"diagnose this\" / \"debug this\" / bug reports / flaky tests / perf regressions. |\n| [`dotnet-onion-api`](./skills/dotnet-onion-api/SKILL.md) | Scaffold a new .NET solution (Web API + Worker microservices) using ONION architecture and EF Core, codifying battle-tested layered patterns and explicitly removing common legacy pitfalls (sproc-centric repos with reflection, EF6 on netstandard2.1, polling console workers, mutable base-service state, missing `CancellationToken`). Three modes — full solution scaffold, add-a-feature slice, add-a-worker microservice. Resolves TFM and NuGet versions at scaffold time (not hard-coded). |\n| [`e2e-verify`](./skills/e2e-verify/SKILL.md) | Verify a change end-to-end in a real browser, routed by one question: **who needs this check to run again?** Nobody → **ephemeral**: run [Expect](https://github.com/millionco/expect) (explicit non-prod `--url`, `--no-cookies` by default) or [browser-use](https://github.com/browser-use/browser-use) (an AI agent driving headless Chromium — bundled setup scripts + engine guide in `references/browser-use.md`) if installed, or have Claude drive the browser directly — walking the flows the *diff* touches, verifying via DOM/accessibility state, and checking the console + network log after each flow (a page that looks right while logging exceptions is a finding). CI-forever (money/auth/signup/checkout/deletion) → **durable**: Playwright tests committed to the repo under [`write-tests`](./skills/write-tests/SKILL.md) discipline — extend the repo's existing e2e setup, `getByRole`/`getByTestId` selectors never CSS chains, no sleeps, API-seeded independent tests, every test **proven red-capable** with both runs quoted. The evidence rule that holds across every engine: an AI-walked flow yields *\"no issues found in the paths walked\"* with paths enumerated and observations quoted — never \"e2e passes\"; unobserved behavior is \"not verified\", never \"works\". Hard gate: no production targets, no real user cookies. Triggers on \"verify this in the browser\", \"test it end to end\", \"e2e test this\", \"write playwright tests\", \"run expect\", \"smoke test the UI\", or `/e2e-verify`. |\n| [`github`](./skills/github/SKILL.md) | The gh-CLI twin of [`azure-devops`](./skills/azure-devops/SKILL.md) — fully config-driven (`.claude/github.json`: reviewers, target branch, title pattern, link keyword, auto-merge strategy; offered on first use). Queries assigned issues (`gh issue list`, cross-repo `gh search`, milestones as the sprint equivalent, Projects v2 boards), reads an issue's body **and comments** — acceptance criteria hide there — **and downloads embedded screenshots with the auth token** (private-repo attachments serve a login page to anonymous curl), publishes branches with approval, and creates PRs with reviewers, auto-merge (`gh pr merge --auto`), and the issue linked via a configurable closing keyword (`Closes` vs `Refs`, so merges don't silently close issues that should stay open). Knows the sharp edges: sibling PRs cross-referenced as `owner/repo#N` (bare `#N` resolves to the wrong item across repos), `--json` everywhere instead of parsing human output, and the honest answer on \"required reviewers\" (that's branch-protection/CODEOWNERS territory, not a PR flag). Triggers on \"pull my issues\", \"read issue 123\", \"enable auto-merge\" — PR creation routes through [`create-pr`](./skills/create-pr/SKILL.md), which uses this skill as its GitHub backend. |\n| [`goal-runner`](./skills/goal-runner/SKILL.md) | Autonomous roadmap loop — pairs with the built-in `/goal` Stop hook to work a task file (ROADMAP.md or any checkbox list) **one task at a time until it's done**. The main agent **orchestrates only**, driving each task with a distilled coordinator doctrine: risk-scaled fan-out (0–3 parallel scouts, exactly **one** coder as sole writer to the tree, review lenses in parallel), riskiest-unknown-first scouting, sub-agent reports treated as **testimony, not truth**, and its own context guarded by handing artifacts over as **files, not pasted text** (briefs, coder reports, and `BASE..HEAD` diffs under `.claude/goal-runner/<run>/`, kept out of commits). A **run ledger** (`progress.md`: task started with its BASE sha, fix rounds, complete with evidence, BLOCKED with reason, and every `Ruling:` with its cost-if-wrong) makes the loop survive compaction and `handoff` — a resumed session trusts the ledger and `git log` over memory, so finished tasks are never re-dispatched. Phase 0 baselines the suite, confirms git posture, resolves sub-agent models per role from [`model-inventory`](./skills/model-inventory/SKILL.md) chains, and **pre-flights the queue for conflicts** (same file or interface touched twice, `Produces:` vs `Consumes:` mismatches, contradictions with the global-constraints block) — ruling on each before task 1. Every sub-agent prompt is composed from bundled briefs (`references/agent-briefs.md`): coders return a fixed status line (`DONE` / `DONE_WITH_CONCERNS` / `NEEDS_CONTEXT` / `BLOCKED`), never spawn their own reviewer, and test first where a seam exists; reviewers get the exact `BASE..HEAD` diff, plan alignment as a lens item, `⚠️ cannot verify from diff` for cross-task requirements, and **never a pre-judged brief** (\"don't flag X\") — the coordinator adjudicates every finding and ledgers the ruling. Review via [`code-review`](./skills/code-review/SKILL.md) (blockers → fixer, max two cycles), [`regression-hunt`](./skills/regression-hunt/SKILL.md) when a task touches shared code, regression gate = no new failures vs. the baseline. A task closes only on observed evidence; **no commits or pushes unless the goal text grants them** (then one commit per task, never red); blocked tasks are annotated `BLOCKED: <reason>` and skipped, never faked. The final report lists every ruling made on the human's behalf. Triggers on \"work on the roadmap tasks til completion\", \"work the roadmap\", \"use sub agents to work tasks until completion\", or `/goal-runner`. |\n| [`handoff`](./skills/handoff/SKILL.md) | Capture a session hand-off before context runs out — writes a dated `.claude/handoffs/*.md` (objective, progress, decisions, files, open issues, ready-to-paste next-session prompt) plus a lightweight memory pointer so a fresh Claude session can resume cleanly. |\n| [`humanizer`](./skills/humanizer/SKILL.md) | Rewrite prose so it does not read like an LLM wrote it. Strips known AI-writing tells (significance inflation, \"delve\"/\"tapestry\" vocabulary, rule-of-three lists, em-dash sales rhythm, sycophancy, hedge filler) **without inventing facts** and **without putting a narrator into engineering prose**. Opens with a **genre gate** (engineering vs. essay) before touching a word, treats tells as clusters rather than isolated words (zero findings is valid), and calibrates voice only from a sample given in the same turn. Four modes — review-only (lists hits and stops), embedded text, a file rewritten in place, and long-form pasted prose — with a repo-wide sweep run as File mode one file at a time. Opt-in only — does not rewrite your own reviews or commit messages unless asked. Derivative of [blader/humanizer](https://github.com/blader/humanizer) (MIT, Siqi Chen) plus Wikipedia's Signs of AI writing; third-party notices live in the skill's [`LICENSE`](./skills/humanizer/LICENSE). Triggers on \"humanize\", \"de-AI\", \"de-slop\", \"un-ChatGPT\", \"review this for AI tells\", or `/humanizer`. |\n| [`improve-codebase-architecture`](./skills/improve-codebase-architecture/SKILL.md) | Surface architectural friction and propose **deepening opportunities** — refactors that collapse clusters of shallow modules into one deep module with a real seam. Walks the codebase with an Explore sub-agent, applies the **deletion test** to suspected pass-throughs, presents numbered candidates (files / problem / solution / benefits) using `CONTEXT.md` for the domain and a strict architecture glossary (module / interface / seam / depth / leverage / locality) for the structure, then drops into a grilling loop with optional parallel sub-agent interface design (\"Design It Twice\"). Updates `CONTEXT.md` inline as new concepts get named and offers an ADR only when a rejection is load-bearing. Writes no production code. Triggers on \"improve architecture\", \"architecture review\", \"find refactoring / deepening opportunities\", \"find shallow modules\", \"make this more testable\", or `/improve-codebase-architecture`. |\n| [`maestro-mobile-test`](./skills/maestro-mobile-test/SKILL.md) | Write and run E2E tests for React Native / Expo apps using [Maestro](https://github.com/mobile-dev-inc/maestro) CLI — the open-source tool that drives the **real native app** on an emulator/simulator, not a web build. Covers what browser-based e2e ([`e2e-verify`](./skills/e2e-verify/SKILL.md)) cannot reach: native components, biometrics (`expo-local-authentication`), secure storage (`expo-secure-store`), push notifications, platform-specific modules. Write YAML flows, run headed for authoring or headless for CI. Ships with `scripts/setup.sh` (runs on macOS/Linux/Windows hosts — auto-installs Java 17 via Homebrew/apt/winget, detects the Android SDK, installs Maestro CLI; **automates the Android path end-to-end, while iOS simulator setup via Xcode + `xcrun simctl` is documented, not scripted**), `scripts/run_flow.sh` (boots emulator, sets up `adb reverse` for backend access, runs a flow), and `scripts/flow_template.yaml` (copy-and-edit). Hard-won pitfalls baked in: dev builds break under cold launch (Metro connection drops), the `back` button exits the app, `hideKeyboard` backgrounds it, icon-only buttons need `accessibilityLabel`, `timeout` is not a property of `assertVisible`, and the emulator can't reach your `localhost` without `adb reverse`. Flows live under `.maestro/` in two levels — a ~30s smoke suite and a 3–5 min regression suite — and inherit the durable-flow discipline from `e2e-verify`: ration by journey risk, accessibility selectors over coordinates, no blind sleeps, and **every flow proven red-capable** with the run summary quoted. Triggers on \"test my react native app\", \"e2e the mobile app\", \"write maestro tests\", \"test the expo app\", \"automate emulator testing\", or `/maestro-mobile-test`. |\n| [`migration-safety`](./skills/migration-safety/SKILL.md) | Review a schema migration for **production safety under live traffic** — the three failure axes are locks, deploy ordering, and irreversibility. Destructive ops (drops, renames — a rename IS a drop+add to running old code — type narrowing, `NOT NULL` tightening) are blockers unless an **expand → migrate readers → contract-in-a-later-release** plan is stated. Lock findings must name the engine, the specific lock, and its duration driver (no \"might be slow\" — and no flagging what's actually free — on modern PG/SQL Server adding a column, even `NOT NULL` with a constant default, is metadata-only). Checks the deploy-order contract **both ways** (old code on new schema during rollout, new-code data on old schema during rollback), separates backfills from DDL, and demands an honest rollback verdict per migration (an auto-generated down that drops a column does *not* restore its data). Checks the migration runner's transaction wrapper before asserting behavior and recommends `lock_timeout`/`statement_timeout` on hot-table DDL. Report is blocker / should-fix / note with `file:line` and a one-sentence failure scenario each, then asks per finding before drafting a fix; an empty or greenfield database gets one line of N/A instead of the checklist. **Never executes** migrations or any SQL. Distinct from [`sql-review`](./skills/sql-review/SKILL.md) (T-SQL antipatterns in procs): this judges schema changes against the deploy timeline. Triggers on \"review this migration\", \"is this migration safe\", \"will this lock the table\", \"zero-downtime migration\", or `/migration-safety`. |\n| [`model-inventory`](./skills/model-inventory/SKILL.md) | Scan the machine for installed AI coding CLIs (claude, codex, gemini, copilot, opencode, ollama) and answer the question consumers actually need answered: **which models can this account use right now?** Three evidence tiers keep it honest — `installed` (binary found), `likely-authenticated` (zero-token credential heuristics via cross-platform `scripts/scan.sh`: file/env *names*, never values), and `verified` (one live one-line probe per model — the only ground truth for \"account active and model on the plan\"; an expired subscription looks identical to an active one until tier 3). A login error during probing flips the CLI to `unauthenticated` with the error quoted — the \"CLI present, account inactive\" case — and a probe timeout is `unknown`, never `unavailable`. Caches everything to `~/.claude/model-inventory.json` with role→model **fallback chains** (`planner: fable→opus→sonnet`, `scout: haiku→sonnet`, …) that [`goal-runner`](./skills/goal-runner/SKILL.md) and [`autopilot`](./skills/autopilot/SKILL.md) consume to spawn each sub-agent on the best available model — strongest as *escalation*, cheapest that suffices as default. Consumers treat a missing or >7-day-old inventory as absent and spawn with no override; a stale file never blocks work. Triggers on \"scan available models\", \"which models can I use\", \"is fable available\", \"refresh the model inventory\", or `/model-inventory`. |\n| [`nextjs-app-router`](./skills/nextjs-app-router/SKILL.md) | Scaffold a new Next.js (App Router) **fullstack** app — TypeScript, **NextAuth (Auth.js v5)**, **Prisma + PostgreSQL**, Route Handlers as the backend, Redux Toolkit + RTK Query, Tailwind + shadcn/ui (Radix), React Hook Form + Zod. **API-driven by deliberate choice**: pages are `'use client'`, all data flows UI → RTK Query → `/api/**` Route Handlers → Prisma. No `fetch()` in server components, no Server Actions, no async `page.tsx`. Confirms the database (Postgres + Prisma) and NextAuth providers with the user before writing files. Forbids the usual pitfalls (custom JWT cookies alongside NextAuth, multiple `createApi`/`PrismaClient` instances, `serializableCheck: false`, `@ts-ignore`, mixed `moment`/`date-fns`, `styled-components` alongside Tailwind, case-sensitive folder dupes, `dangerouslySetInnerHTML` without sanitization, Route Handlers that skip `requireSession()` or trust client-sent user IDs, `prisma db push` in CI). Three modes — full project scaffold, add-a-feature slice (page + form + Route Handler + Zod schema + RTK Query endpoints + Prisma model), add-an-API-slice. Resolves package versions at scaffold time (not hard-coded), and the resolved version decides the API shape — an **API-drift guard** treats NextAuth v4 patterns as poison and covers Next 15 async `params`, Tailwind v3-vs-v4, and Zod v4. **A scaffold that hasn't built is not delivered**: real build/test output pasted, a mandatory pre-report grep block plus checklist (\"grep, don't recall\"), and a CLI failure protocol that stops after the same step fails twice. Pushes back before complying with a request for SSR data fetching or Server Actions. Triggers on \"create a new Next.js project\", \"scaffold a Next.js app\", \"new Next app with auth\", \"Next.js + Prisma project\", \"my Next.js conventions\", or `/nextjs-app-router`. |\n| [`regression-hunt`](./skills/regression-hunt/SKILL.md) | Find what a change breaks in the code that **did not change**. Inventories the changed *surfaces* that regress silently (renames, flipped defaults, signature and format changes, shared state, sync→async), traces each outward through callers and consumers — grep + LSP plus the dynamic uses grep misses (string keys, SQL text, templates, env and queue names) — with every caller cited `file:line` and every none-found recorded with the search that ran, turns reached callers into ranked scenarios (`what changed → who depended on the old behavior → observable wrong outcome`), then audits the safety net: which existing test covers each path, runs it, and writes the missing one via [`write-tests`](./skills/write-tests/SKILL.md) for uncovered high-risk paths. Verdict is `confirmed` only on a quoted failing run, `suspected` with the missing evidence named, or `cleared` with the reason; **zero regressions is a valid outcome** earned by the searches and runs listed. The outward complement to [`code-review`](./skills/code-review/SKILL.md); called by [`create-pr`](./skills/create-pr/SKILL.md)'s gate and [`goal-runner`](./skills/goal-runner/SKILL.md)'s regression step. |\n| [`safe-refactor`](./skills/safe-refactor/SKILL.md) | Execute a behavior-preserving refactor as a **sequence of proofs, not a rewrite**. Writes the behavior contract first (public surface, side effects, error types — the falsifiable definition of \"preserved\"), audits the safety net (every contract item mapped to a covering test, characterization tests written via [`write-tests`](./skills/write-tests/SKILL.md) for the gaps — **no net, no refactor**, and \"the change is simple\" is not an exemption), locks a quoted-green baseline, then moves in single mechanical transformations with the suite green between steps. Renames are **grep-verified repo-wide** (strings, routes, reflection, and serialized names don't compile-check). The **assertion-change tripwire**: if fixing a red step means changing a test's expected value, stop — that's a behavior change wearing a refactor's clothes; surface it, never silently absorb it. Ends with an adversarial diff read hunting the smuggled change (reordered side effects, dropped `await`, widened catch). Completes the chain: [`improve-codebase-architecture`](./skills/improve-codebase-architecture/SKILL.md) names the target, this makes the move. Triggers on \"refactor this\", \"clean this up without changing behavior\", \"extract/inline/split\", \"rename across the codebase\", or `/safe-refactor`. |\n| [`security-review`](./skills/security-review/SKILL.md) | Attacker's-eye security audit of a diff, branch, or module — forces scope first with one question, maps trust boundaries, learns how *this* repo does auth and escaping so deviations from the local idiom stand out, then walks a fixed catalog: missing authn **and object-level authz** (IDOR is the most common real miss), client-sent identity trusted in queries, injection (SQL / command / path traversal / XSS), secrets in code or logs (a committed secret means *rotate*, not delete-the-line), SSRF, open redirects, insecure deserialization, mass assignment, crypto misuse, dependency CVEs (only via an actual audit-tool run with output quoted — otherwise `dependencies: not checked`). The gate that keeps it honest: every finding must state a one-sentence **attack path** (*who* does X → gains Y) or be demoted to hardening advice, and the attack path sets the severity (critical / high / medium / hardening); every finding is re-derived by tracing input to sink (untraced pattern-matches are labeled `unconfirmed`); the report never claims \"secure\" — only \"nothing found in the classes checked\", plus the explicit unchecked list. Zero findings is a valid outcome. Never edits code unprompted. Distinct from the security *lens* in [`code-review`](./skills/code-review/SKILL.md): this is the dedicated deep pass for trust-boundary changes. Triggers on \"security review\", \"is this secure\", \"check for vulnerabilities\", \"audit the auth\", \"threat model this\", or `/security-review`. |\n| [`ship-it`](./skills/ship-it/SKILL.md) | Pre-launch **operational-readiness** gate for a feature, release, or branch — the complement to [`code-review`](./skills/code-review/SKILL.md). Walks a fixed 10-category checklist (logging, error handling, telemetry, feature flags, migrations, rollback strategy, secrets, local-first storage, auth, update strategy) against the named scope and produces a structured report with PASS / GAP / N/A per item — every PASS backed by a `file:line` citation **and the probe that established it** (a PASS with no named grep/read/command is a GAP labelled `not checked`), every GAP labelled `no evidence found at <path>`, every N/A justified in one line with its probe. Categories needing more than three queries go to an `Explore` sub-agent whose results count only if they name their probes; the ten categories are a fixed list, never extended ad hoc. The final verdict groups findings as **Blocking** (secrets in code, missing authz on a new endpoint, destructive migration without rollback, no way to disable the change in prod) / **Should-fix** / **N/A with reason** / **Passing**, then asks per-blocker whether to draft a fix. **Never edits code unprompted** and **forces scope before auditing** — a PR, a flag, a release tag, or a module — so the output stays actionable. Distinct from `code-review` (diff quality, either scope): `ship-it` is the operational gate that catches what diff-level reviews don't surface. Triggers on \"is this ready to ship?\", \"ship-it check\", \"production checklist\", \"pre-launch checklist\", \"release readiness\", or `/ship-it`. |\n| [`sql-review`](./skills/sql-review/SKILL.md) | Pre-commit SQL code review for uncommitted `.sql` changes (staged + unstaged), or an explicit range such as `main..HEAD`. Detects 17 antipattern classes that map to **real production incident causes** — `sp_send_dbmail` in CATCH blocks (masks the real exception as a misleading permission denial), broken retry patterns (`@retry` declared without a surrounding `WHILE` loop), swallowing CATCH blocks (no `THROW`/`RAISERROR`/log), **new tables created without a primary key or any index** (the silent perf-then-deadlock killer), parameter-vs-column type mismatches (8152 truncation risk), `EXEC()` string concatenation without `sp_executesql` parameters (SQL injection), `NOLOCK` inside transactional write paths, `UPDATE`/`DELETE` without `WHERE`, cursors without `READ_ONLY FORWARD_ONLY LOCAL`, hardcoded environment values (emails, server names, paths, linked servers), cross-DB references like `msdb.dbo.*`, missing `SET NOCOUNT ON`, missing `GRANT EXECUTE` on `CREATE PROC`, `BEGIN TRANSACTION` outside `TRY`/`CATCH` with `XACT_STATE` handling, `DROP`/`TRUNCATE` without `IF EXISTS` in idempotent deploy scripts, and vestigial control-flow comments hinting at refactor leftovers (e.g. `-- end while loop` with no `WHILE`). **A pattern hit is not a finding**: each ripgrep hit is a candidate until the full proc is read, the offending SQL is quoted verbatim, and a one-sentence production-incident scenario is written — otherwise it is demoted a level (a `NOLOCK` in a read-only reporting proc, an `@retry` consumed by a `GOTO` loop, a seeded lookup table are the named demotions). The catalog is fixed; extending it is a `write-a-skill` change. **Scope-aware** — full-file scan for new files, diff-only scan for modified files so legacy antipatterns in untouched parts of a large SP don't flood the report. Categorizes findings as `BLOCKER` / `WARN` / `INFO` with `file:line` citations and per-finding fix recommendations. **Never edits SQL unprompted** — produces the report, then asks per fix. Distinct from [`code-review`](./skills/code-review/SKILL.md), which carries the general best-practice catalog without SQL-specific patterns. Triggers on `/sql-review`, \"review my SQL\", \"review the SQL diff\", \"lint the SQL\", \"check my SQL changes\", \"SQL pre-commit check\", or \"audit my stored proc\". |\n| [`task-executor`](./skills/task-executor/SKILL.md) | The daily driver for a single, already-defined task — Understand → Inspect → Plan → Execute incrementally → Validate after every change, with a strict seven-section per-turn block (**Goal** / **Current understanding** / **Files to inspect** / **Plan** / **Progress** / **Risks** / **Assumptions**) that doubles as the resume artifact (a fresh session re-observes the last tick before trusting it). Reads the project's own instruction files first, **baselines the suite and captures any must-not-change output before the first edit**, classifies the task (spike / bounded / architectural — architectural routes to [`design-brief`](./skills/design-brief/SKILL.md)), convenes a parallel `Explore` inspection council when the files span layers, and gates on plan approval before writing code — every plan step names its validation as the verbatim command, and a plan whose tests cluster at the end is reordered before it is shown. Execution is one step at a time, red-then-green where a seam exists, with a `Deviation:` line the moment anything departs from the task text; a step that cannot go green is reverted, and three failed fixes on one behavior is a hard stop. Sub-agents route by role (`scout` for inspection, `coder` for delegated steps when the user asks for a model split or a step is wide or risky) from your words or `~/.claude/model-inventory.json`, while planning, gating, and every validation stay on the session model. Finishes with a diff review ([`code-review`](./skills/code-review/SKILL.md) / [`regression-hunt`](./skills/regression-hunt/SKILL.md) when thresholds trip) and a **Requirements table** — each requirement quoted from the task, its observed evidence, met / gap / deviation. Evaluated head-to-head against unskilled runs on real tasks; see `CLAUDE.md` for the method. |\n| [`tauri-2-app`](./skills/tauri-2-app/SKILL.md) | Scaffold a new Tauri 2 desktop app (Rust backend + TypeScript/React frontend) using a thin-frontend / rich-Rust-backend architecture with modular `commands/`, `state/`, `storage/`, `platform/` traits, `error/` macros, single-instance + updater plugins wired correctly, capability JSON per window, encrypted secrets at rest, `spawn_blocking` for sync work, and typed frontend command hooks — while forbidding common pitfalls (committed `.backup`/`.orig`/`.temp` files, plaintext API keys in `settings.json`, tokens in `localStorage`, `cfg!(target_os)` in command bodies instead of trait-based platform code, hand-rolled date math instead of `chrono`, raw `std::fs` bypassing capability checks, blocking I/O inside async commands, missing `windows_subsystem = \"windows\"` in `main.rs`, `devtools: true` in release, hardcoded bundle identifiers / updater pubkeys / CDN URLs). Three modes — full project scaffold, add-a-command end-to-end, add-a-Rust-module slice. Resolves Cargo + npm versions at scaffold time (not hard-coded) and treats **Tauri 1.x idioms as poison** — config is verified against `config.schema.json` / `gen/schemas/`, permissions never carry a `tauri-plugin-` prefix. **A scaffold that hasn't compiled is not delivered**: `cargo check` at the mid-scaffold checkpoint, `Finished` / `test result: ok` / Vite lines pasted at the end, a mechanical grep verification block plus a ~20-item pre-done checklist, and a CLI failure protocol (fix the first cargo error, one retry, then stop and surface it verbatim). Generated code carries minimal comments. Triggers on \"create a new Tauri app\", \"scaffold a Tauri 2 project\", \"add a Tauri command end-to-end\", \"my Tauri conventions\", or `/tauri-2-app`. |\n| [`think-like-fable`](./skills/think-like-fable/SKILL.md) | An operating manual for rigorous reasoning, written as a senior operator handing their craft to a sharp junior — applied to whatever task is at hand rather than replacing it. Seven disciplines, each with the procedure, a worked example, and the failure it prevents: read the need behind the literal ask, decompose into **independently checkable** pieces, spend effort where the risk lives (not where the work is easy or interesting), verify load-bearing claims by **re-deriving** them instead of recognizing them (\"a claim about code you haven't opened is a hypothesis\"), tag every claim **verified / inferred / assumed** in the text, attack your own conclusion before handing it over, and communicate answer → reasoning → risk in that order. Names the seven mistakes that look like competence and aren't (thoroughness theater, fluent overclaiming, premature agreement, complexity as signal, silent scope repair, momentum completion, deference to your own prior output) and ends with a five-question self-test to run on every answer before sending. Composes *under* task skills rather than replacing them, is inhabited silently (never narrated as \"per section 4…\"), and scales depth with stakes — a one-line question gets no risk section. Triggers on \"think like fable\", \"/think-like-fable\", \"be rigorous\", \"are you sure?\", \"don't guess\", or any high-stakes analysis where a confident wrong answer is worse than a slow right one. |\n| [`upgrade-deps`](./skills/upgrade-deps/SKILL.md) | Upgrade dependencies as a **verification exercise, not a version edit**. Inventory comes from the tool (`npm outdated` / `dotnet list package --outdated` / `pip list --outdated` / `cargo outdated` — never from training-data memory of \"latest\"), baseline suite quoted green before anything moves, patch/minor bumps batched, **majors strictly one at a time**: read the actual changelog across every crossed version (a breaking-change claim without a citation is a hypothesis), grep the repo for each breaking API (cite the call sites, or state the negative: \"no usage — grep for `X` returned nothing\"), list behavioral changes that don't grep (changed defaults, stricter parsing) as named **runtime risks** with the test that would catch each — or the admission that none would. Red bump → one informed retry → revert, mark **blocked** with the quoted error, move on. Never silences peer conflicts with `--force`/`--legacy-peer-deps` without surfacing the override. Reports a per-package table (from → to, breaking changes affecting *this* repo, evidence, result) plus the honest residue. Triggers on \"upgrade dependencies\", \"update packages\", \"bump X\", \"is it safe to upgrade\", \"fix the npm audit\", \"handle the dependabot PRs\", or `/upgrade-deps`. |\n| [`write-a-skill`](./skills/write-a-skill/SKILL.md) | Author a new Claude Code skill — interview-driven scaffolding that produces a properly-structured `SKILL.md` (trigger-rich YAML description, \"When to use\", workflow, examples, anti-patterns), drops it in the right location (library `skills/`, project `./.claude/skills/`, or global `~/.claude/skills/`), and updates the README skills table when extending this library. First checks a skill is the right tool at all (not a one-off, not a `CLAUDE.md` convention, not something a linter or hook should enforce). For discipline skills it **baselines the failure first** — runs the tempting scenario in a fresh sub-agent *without* the skill and captures the rationalization verbatim — then **matches the form to the failure** (prohibition + rationalization table for rules skipped under pressure; a recipe stating what the output IS for wrong-shaped output; a required template slot for omitted elements; a conditional on an observable predicate instead of exemption clauses), and **proves it works** by re-running the scenario with the skill loaded. Descriptions say **what, never how** — a workflow summary in the description becomes a shortcut the model follows instead of reading the body — carry 3+ trigger phrases plus symptoms, and stay under 1024 characters. Bodies are written for the weakest executing model: ❌/✅ pairs on every load-bearing rule, evidence gates on every assertion, \"zero findings is valid\" and \"unobserved is `not run`\" where they apply. Triggers on \"create/write/add a skill\", `/write-a-skill`, or a pasted SKILL.md URL with \"one like this\". |\n| [`write-tests`](./skills/write-tests/SKILL.md) | Author tests whose only job is to **fail when the behavior breaks** — everything else (coverage %, test count, green checkmarks) is a gameable proxy. Ranks WHAT to test by risk (error paths, money, auth, deletion, retry/idempotency, date math outrank happy paths), checks for existing coverage first (**zero new tests is a valid outcome** — cite the existing test), and shapes each test around one question: **what production change would make this fail, and is that a bug or a decision?** Constants, exact copy, and private structure are change detectors, not tests — test the behavior that depends on them. Expected values are **derived by hand** (literal `want` values, table-driven where it fits), never computed by the code under test (mirror assertions are always green); your contract is tested, not the framework's. **Proves every new test can fail**: TDD-red first — it must *fail*, not error, for the right reason, then the minimal code that turns it green with the rest of the suite still green — or mutate the behavior → confirm red → revert → confirm green, both runs quoted and `git diff` on production sources checked clean of leftover mutations. A **mutation check** before finishing each file: wrong constant, wrong branch, missing side effect, empty return, missing validation — each must turn something red or be reported as a gap. Mocks only boundaries you don't own, at the level *below* the behavior under test, mirroring the real response shape completely; test-only teardown lives in test utilities, not production classes. For untested legacy code: **characterization tests** that pin actual behavior, bugs included and labeled ([`safe-refactor`](./skills/safe-refactor/SKILL.md) depends on this). Triggers on \"write tests\", \"add tests / coverage\", \"test this\", \"add a regression test\", \"TDD this\", \"characterization tests\", or `/write-tests`. |\n\nRun `skills list` to see this list with install status, or browse [`skills/`](./skills) directly.\n\n## How the skills fit together\n\nEvery stage hands the next one a **file or a diff, never a call** — an approved brief, a roadmap, a working tree, a review report — so any stage works alone and any skill can be skipped when the work doesn't need it. Runners never commit unless told; reviewers never edit until asked; `create-pr` never pushes without approval.\n\n![Skills flow: idea → design-brief → scope check → task-executor / autopilot / backlog-planner+goal-runner → working tree → code-review + regression-hunt + specialist lenses → reviewed tree → ship-it → conventional-commits → create-pr](./docs/skills-flow.svg)\n\n<details>\n<summary>Same flow as Mermaid (renders on GitHub; edit this when the flow changes, then regenerate the SVG)</summary>\n\n```mermaid\nflowchart TD\n    idea([Vague idea]) --> db[design-brief<br/><i>interview → decisions → approved brief</i>]\n    db -->|.claude/design-briefs/&lt;slug&gt;.md| split{One PR-sized change<br/>or many tasks?}\n    ticket([Defined task / ticket]) --> split\n    split -->|many| bp[backlog-planner<br/><i>researched checkbox tasks</i>]\n    bp -->|ROADMAP.md| gr[goal-runner<br/><i>orchestrates: 1 coder, reviewers, regression gate per task</i>]\n    split -->|one, you're present| te[task-executor<br/><i>baseline → plan gate → test-first steps → Requirements table</i>]\n    split -->|one, hands-off| ap[autopilot<br/><i>assumptions logged, stops before commit</i>]\n\n    te & ap & gr --> tree[(Working tree / branch)]\n\n    tree --> cr[code-review<br/><i>the change itself</i>]\n    tree --> rh[regression-hunt<br/><i>what the change breaks elsewhere</i>]\n    tree -.->|when the diff calls for it| spec[sql-review · migration-safety<br/>security-review · api-contract-review]\n    tree -.->|needs a real run| e2e[e2e-verify · maestro-mobile-test]\n\n    cr & rh & spec & e2e --> fixed[(Reviewed tree, blockers fixed)]\n    fixed --> ship[ship-it<br/><i>operational readiness</i>]\n    ship --> cc[conventional-commits] --> pr[create-pr<br/><i>re-runs the review gate on the exact tree, pushes with approval</i>]\n    pr --> gh[github · azure-devops]\n\n    subgraph support [Support skills — called from inside any stage]\n        direction LR\n        tlf[think-like-fable] ~~~ dg[diagnose] ~~~ wt[write-tests] ~~~ sr[safe-refactor] ~~~ ho[handoff] ~~~ ica[improve-codebase-architecture]\n    end\n```\n\n</details>\n\n| Stage | Skill | Hands off |\n|---|---|---|\n| Design | [`design-brief`](./skills/design-brief/SKILL.md) | an `APPROVED` brief in `.claude/design-briefs/` — decisions, interfaces, constraints |\n| Plan | [`backlog-planner`](./skills/backlog-planner/SKILL.md) | dependency-ordered checkbox tasks in `ROADMAP.md` |\n| Execute | [`task-executor`](./skills/task-executor/SKILL.md) · [`autopilot`](./skills/autopilot/SKILL.md) · [`goal-runner`](./skills/goal-runner/SKILL.md) | a verified working tree (or one commit per task when the goal text allows) |\n| Review inward | [`code-review`](./skills/code-review/SKILL.md) + the specialist lenses | a findings report; fixes only on request |\n| Review outward | [`regression-hunt`](./skills/regression-hunt/SKILL.md) | confirmed / suspected / cleared regressions in code that did *not* change |\n| Verify live | [`e2e-verify`](./skills/e2e-verify/SKILL.md) · [`maestro-mobile-test`](./skills/maestro-mobile-test/SKILL.md) | observed behaviour in a real browser or device |\n| Ship | [`ship-it`](./skills/ship-it/SKILL.md) → [`conventional-commits`](./skills/conventional-commits/SKILL.md) → [`create-pr`](./skills/create-pr/SKILL.md) | a PR with the review gate re-run on the exact tree published |\n| Anywhere | [`think-like-fable`](./skills/think-like-fable/SKILL.md) · [`diagnose`](./skills/diagnose/SKILL.md) · [`write-tests`](./skills/write-tests/SKILL.md) · [`safe-refactor`](./skills/safe-refactor/SKILL.md) · [`handoff`](./skills/handoff/SKILL.md) | rigor, root cause, tests, behaviour-preserving refactors, session resume |\n\n**Shortest common path** for an ordinary ticket: `task-executor` → `code-review` → `conventional-commits` → `create-pr`. A new feature adds `design-brief` and `backlog-planner` in front and `goal-runner` in the middle. Something breaks mid-run → `diagnose`; three failed fixes there → [`improve-codebase-architecture`](./skills/improve-codebase-architecture/SKILL.md).\n\n## Which skill? (X vs. X)\n\n### Executing work: `task-executor` vs. `autopilot` vs. `goal-runner`\n\nOne question routes them: **when the run hits a decision, do you want to be asked, or do you want it assumed-and-logged?**\n\n| Scenario | Use |\n|---|---|\n| One task, you're present and want to approve the plan before any code is written | [`task-executor`](./skills/task-executor/SKILL.md) |\n| One task, kick off and walk away (hands-off, headless, overnight) | [`autopilot`](./skills/autopilot/SKILL.md) |\n| Solid spec, well-trodden change — a plan gate would be a rubber stamp | [`autopilot`](./skills/autopilot/SKILL.md), even if you're present |\n| Slightly underspecified spec, but you're available for a clarifying question | [`task-executor`](./skills/task-executor/SKILL.md) |\n| Long multi-turn task you may need to resume tomorrow | [`task-executor`](./skills/task-executor/SKILL.md) (the seven-section format is the resume artifact) |\n| A queue of tasks worked to completion | [`goal-runner`](./skills/goal-runner/SKILL.md) |\n| A rough idea that needs to *become* tasks first | [`backlog-planner`](./skills/backlog-planner/SKILL.md), then [`goal-runner`](./skills/goal-runner/SKILL.md) |\n| An idea that isn't *decided* yet — the design itself is the open question | [`design-brief`](./skills/design-brief/SKILL.md) first; it ends at an approved brief, never code |\n\nThe failure modes to avoid: `autopilot` on a genuinely ambiguous spec completes the *wrong* task with impeccable assumption logging; `task-executor` when you won't engage stalls at the plan gate waiting for an approval that isn't coming. All three end at the same place — verified working tree, **no commits**, your final gate — and all three route sub-agent models from [`model-inventory`](./skills/model-inventory/SKILL.md) when it's installed.\n\n### Reviewing work: which review skill?\n\n| You want to review | Use |\n|---|---|\n| Code changes, general quality — uncommitted working tree or a committed branch (grouped per `#NNN` task) | [`code-review`](./skills/code-review/SKILL.md) |\n| The API surface consumers depend on / \"is this breaking?\" | [`api-contract-review`](./skills/api-contract-review/SKILL.md) |\n| A schema migration under live traffic | [`migration-safety`](./skills/migration-safety/SKILL.md) |\n| `.sql` changes / stored procedures | [`sql-review`](./skills/sql-review/SKILL.md) |\n| What a change breaks in code that did **not** change — renames, flipped defaults, shared state | [`regression-hunt`](./skills/regression-hunt/SKILL.md) |\n| Trust boundaries, attacker's-eye pass | [`security-review`](./skills/security-review/SKILL.md) |\n| Operational launch readiness (flags, rollback, telemetry) | [`ship-it`](./skills/ship-it/SKILL.md) |\n| Publishing the branch — review gate included | [`create-pr`](./skills/create-pr/SKILL.md) |\n\n## How Claude Code finds these skills\n\nClaude Code looks for `SKILL.md` files in:\n\n- `~/.claude/skills/<skill>/SKILL.md` — available in every session (global)\n- `<project>/.claude/skills/<skill>/SKILL.md` — available only inside that project\n\nThis CLI just copies skill folders to one of those locations. Nothing magic.\n\n## Commands\n\n| Command | What it does |\n|---|---|\n| `skills list` | List skills available in the library, marking which are installed |\n| `skills installed` | List skills currently installed |\n| `skills install` | Interactive multi-select picker |\n| `skills install <name>...` | Install one or more skills by name |\n| `skills install --all` | Install every skill in the library |\n| `skills remove <name>...` | Remove installed skill(s) |\n| `skills remove --all` | Remove every installed skill |\n\n## Flags\n\n- `-g, --global` — target `~/.claude/skills` (default)\n- `-p, --project` — target `./.claude/skills`\n- `-f, --force` — overwrite if already installed (interactive install always overwrites selected items)\n- `-h, --help` / `-v, --version`\n\n## Adding your own skills\n\nRepo conventions for anyone (human or agent) editing skills here live in [`CLAUDE.md`](./CLAUDE.md): skills reference only other skills in this library, descriptions say *what* not *how* and stay under 1024 characters, bodies are written for the weakest executing model, and a discipline-skill change is verified by a baseline-versus-skill run on a real task.\n\nThis library ships with a [`write-a-skill`](./skills/write-a-skill/SKILL.md) skill that scaffolds new ones for you — that's the intended path. Don't hand-edit `SKILL.md` from scratch; the skill knows the structure, writes a trigger-rich description (the part Claude actually reads), and updates the README table for you.\n\nInstall it once, globally, from npm — no clone needed to use it:\n\n```bash\nnpx @dennisrongo/skills install write-a-skill\n```\n\nFrom there:\n\n- **For a project skill or a global skill on your machine** — `cd` to the project (or anywhere), open Claude Code, and say `/write-a-skill`. It interviews you, picks the right location (`./.claude/skills/` for a project skill, `~/.claude/skills/` for a global one), and drops the new `SKILL.md`. Done.\n- **To contribute a skill back to this library** — you do need a working tree to commit. Clone the repo, `cd` in, open Claude Code, and say `/write-a-skill`. It detects the library repo, writes to `skills/<name>/SKILL.md`, and adds the row to the table above. Commit and push to `main`; on any machine `npx --yes github:dennisrongo/claude-skills install <your-skill-name>` picks it up.\n\n### The directory shape\n\nThe library lives in [`skills/`](./skills). Each skill is a directory containing a `SKILL.md` with YAML frontmatter.\n\n```\n_template/\n└── SKILL.template.md       # starting point — outside skills/ so it is never published or installed\nskills/\n├── conventional-commits/\n│   └── SKILL.md\n└── my-new-skill/\n    ├── SKILL.md\n    ├── references/         # optional supporting files\n    └── scripts/            # optional executable helpers\n```\n\n### If you'd rather do it by hand\n\nCopy `_template/SKILL.template.md` to `skills/<your-skill-name>/SKILL.md`, edit it, and add a row to the skills table above. Minimum viable file:\n\n```markdown\n---\nname: my-skill-name\ndescription: One sentence describing what it does AND when to trigger it. Be specific about phrases the user might use.\n---\n\n# My Skill Name\n\nInstructions for Claude...\n```\n\nThe `description` is the single highest-leverage field — it's the only thing Claude reads when deciding whether to consult the skill. Be explicit about trigger conditions; under-triggering is the more common failure mode. (This is the part [`write-a-skill`](./skills/write-a-skill/SKILL.md) is opinionated about — using it will save you from the rookie mistake of writing \"Helps with X.\")\n\n> Tip: `npx` caches the package per version spec. If you push an update to `main` and the next `npx github:dennisrongo/claude-skills ...` call doesn't seem to pick it up, run `npx --yes ...` to force a refresh, or clear the cache with `npx clear-npx-cache`.\n\n## Fine-tuning skills you've installed\n\nTwo patterns:\n\n**Tune in-place, then upstream:**\nEdit the file at `~/.claude/skills/<name>/SKILL.md` directly while you're iterating with Claude. Once it feels right, copy the edits back into this repo's `skills/<name>/SKILL.md` and commit.\n\n**Tune in the repo, reinstall:**\nEdit `skills/<name>/SKILL.md` in your clone, then run `npx github:dennisrongo/claude-s","readmeFilename":"README.md"}