{"_id":"@antoneeo/distill-skill","_rev":"10-7a134aeb977eedc1a77a98640a507d9a","name":"@antoneeo/distill-skill","dist-tags":{"latest":"0.8.0"},"versions":{"0.1.0":{"name":"@antoneeo/distill-skill","version":"0.1.0","keywords":["claude-code","claude-skill","gemini-cli","skill","writing","documentation","technical-writing","ai-agent"],"author":{"url":"https://github.com/Antoneeo","name":"Antonio Pinto"},"license":"MIT","_id":"@antoneeo/distill-skill@0.1.0","maintainers":[{"name":"antoneeo","email":"a_pinto_79@hotmail.com"}],"bin":{"distill-install-skill":"scripts/postinstall.js","distill-uninstall-skill":"scripts/uninstall.js"},"dist":{"shasum":"e197b82e7132ee0079e1c8fbff2fbe61275f6f00","tarball":"https://registry.npmjs.org/@antoneeo/distill-skill/-/distill-skill-0.1.0.tgz","fileCount":9,"integrity":"sha512-p6o16VpIe9ltJBV9q9N1/jg9WtNfsee5bB3KkI+0eAwH+ppgifUYIaJPQ2eI3hFFg9N51KUpgFjN9J5at/sp6A==","signatures":[{"sig":"MEQCIF7I4nNHWH6ww97GRJtC/XxkMae0RnPwZgE1psu3CWnCAiAEvBaF2QByyKipytlMnQuIleRHxcxxqHPp4Nje/ii+nA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31165},"engines":{"node":">=14"},"gitHead":"5c4abe2fb2c31505e97b1ca76f0f4bd0304d928b","scripts":{"test":"node scripts/test_clients.js","postinstall":"node scripts/postinstall.js","preuninstall":"node scripts/preuninstall.js"},"_npmUser":{"name":"antoneeo","email":"a_pinto_79@hotmail.com"},"_npmVersion":"11.9.0","description":"Contract-first writing discipline for Claude Code, Gemini CLI, Google Antigravity and Codex: compile the text contract before the prose, close with the loss/noise gate.","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/distill-skill_0.1.0_1784571287709_0.09508531958531474","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@antoneeo/distill-skill","version":"0.2.0","keywords":["claude-code","claude-skill","gemini-cli","skill","writing","documentation","technical-writing","ai-agent"],"author":{"url":"https://github.com/Antoneeo","name":"Antonio Pinto"},"license":"MIT","_id":"@antoneeo/distill-skill@0.2.0","maintainers":[{"name":"antoneeo","email":"a_pinto_79@hotmail.com"}],"bin":{"distill-install-skill":"scripts/postinstall.js","distill-uninstall-skill":"scripts/uninstall.js","distill-enable-persistence":"scripts/enable-persistence.js","distill-disable-persistence":"scripts/disable-persistence.js"},"dist":{"shasum":"7560cde5d8424af401ce0654f6854d79a506f634","tarball":"https://registry.npmjs.org/@antoneeo/distill-skill/-/distill-skill-0.2.0.tgz","fileCount":14,"integrity":"sha512-L7xZaeUPOiNsxktU0zpfgT/sQBnCehXwR0RpBytBZ/OWsSh/YGOa18ujjQDQINdJElq1kLLx1MBHEDsu5c4BRA==","signatures":[{"sig":"MEQCIAHgzuVEq0diKoQEmcxKFZYdZMBznVOr1lDfttewWKtdAiBBJxeuvnXsBtHxUm2RtBwk3xIdzz82rl1yJWcG7UjURA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53665},"engines":{"node":">=14"},"gitHead":"3b045ca17ff530e53d0d5c1b25746f21f058d655","scripts":{"test":"node scripts/test_clients.js","postinstall":"node scripts/postinstall.js","preuninstall":"node scripts/preuninstall.js"},"_npmUser":{"name":"antoneeo","email":"a_pinto_79@hotmail.com"},"_npmVersion":"11.9.0","description":"Contract-first writing discipline for Claude Code, Gemini CLI, Google Antigravity and Codex: compile the text contract before the prose, close with the loss/noise gate.","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/distill-skill_0.2.0_1784574267412_0.5153512303905545","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@antoneeo/distill-skill","version":"0.3.0","keywords":["claude-code","claude-skill","gemini-cli","skill","writing","documentation","technical-writing","ai-agent"],"author":{"url":"https://github.com/Antoneeo","name":"Antonio Pinto"},"license":"MIT","_id":"@antoneeo/distill-skill@0.3.0","maintainers":[{"name":"antoneeo","email":"a_pinto_79@hotmail.com"}],"bin":{"distill-install-skill":"scripts/postinstall.js","distill-uninstall-skill":"scripts/uninstall.js","distill-disable-persistence":"scripts/disable-persistence.js"},"dist":{"shasum":"a237b639e5f613fdbdbc8ddc441d4584cb92e020","tarball":"https://registry.npmjs.org/@antoneeo/distill-skill/-/distill-skill-0.3.0.tgz","fileCount":15,"integrity":"sha512-8RD4Bs34L82dMHwwARYgmc/YCJ5ygPAN5hyJ8lJWoNTOj9mBEtjdUcTwbW8k6MZXyz3vekgc68YYneNVQDATUg==","signatures":[{"sig":"MEQCIDyNNjrn7TgKRJjSzUHRaNQrWSOkUMuZB0+Wh43jxT+VAiBni/xm1vAQNEKm9TnHgaomTyyHZNVBFxC6xmnsnrnmUg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":55292},"engines":{"node":">=14"},"gitHead":"f165451d95823ff7ba3593fb0ac3a2ab9898469f","scripts":{"test":"node scripts/test_clients.js","postinstall":"node scripts/postinstall.js","preuninstall":"node scripts/preuninstall.js"},"_npmUser":{"name":"antoneeo","email":"a_pinto_79@hotmail.com"},"_npmVersion":"11.9.0","description":"Contract-first writing discipline for Claude Code, Gemini CLI, Google Antigravity and Codex: compile the text contract before the prose, close with the loss/noise gate.","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/distill-skill_0.3.0_1784575537085_0.8555209757513487","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@antoneeo/distill-skill","version":"0.4.0","keywords":["claude-code","claude-skill","gemini-cli","skill","writing","documentation","technical-writing","ai-agent"],"author":{"url":"https://github.com/Antoneeo","name":"Antonio Pinto"},"license":"MIT","_id":"@antoneeo/distill-skill@0.4.0","maintainers":[{"name":"antoneeo","email":"a_pinto_79@hotmail.com"}],"bin":{"distill-install-skill":"scripts/postinstall.js","distill-uninstall-skill":"scripts/uninstall.js","distill-disable-persistence":"scripts/disable-persistence.js"},"dist":{"shasum":"859def19d5d1b895b61bc1f22e9e8229f48dfda2","tarball":"https://registry.npmjs.org/@antoneeo/distill-skill/-/distill-skill-0.4.0.tgz","fileCount":17,"integrity":"sha512-dnazrkmHsBs+QoUy2o8iMUlWnglhC14dkeq7EKcmiZLMRIezoJvzPisP+zmOP/ah8nT6YEE0ptjD/9OUQdwWDA==","signatures":[{"sig":"MEYCIQD0mbTPu65y0kv3lw04dWUTu+Tm7m53prnrJ3d8rrwTTgIhALdHn7O97bYKpYTF0DNvSlRKp1u8x8cHyKxorrgAbqQn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68930},"engines":{"node":">=14"},"gitHead":"fb550fc4fbcfc7a8ddeb6b8508bac9cbdef45dab","scripts":{"test":"node scripts/test_clients.js","postinstall":"node scripts/postinstall.js","preuninstall":"node scripts/preuninstall.js"},"_npmUser":{"name":"antoneeo","email":"a_pinto_79@hotmail.com"},"_npmVersion":"11.9.0","description":"Contract-first writing discipline for Claude Code, Gemini CLI, Google Antigravity and Codex: compile the text contract before the prose, close with the loss/noise gate.","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/distill-skill_0.4.0_1784612097485_0.14195061638540962","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@antoneeo/distill-skill","version":"0.4.1","keywords":["claude-code","claude-skill","gemini-cli","skill","writing","documentation","technical-writing","ai-agent"],"author":{"url":"https://github.com/Antoneeo","name":"Antonio Pinto"},"license":"MIT","_id":"@antoneeo/distill-skill@0.4.1","maintainers":[{"name":"antoneeo","email":"a_pinto_79@hotmail.com"}],"bin":{"distill-install-skill":"scripts/postinstall.js","distill-uninstall-skill":"scripts/uninstall.js","distill-disable-persistence":"scripts/disable-persistence.js"},"dist":{"shasum":"50530c5cff3ed2ab8444b89837952e99384ab945","tarball":"https://registry.npmjs.org/@antoneeo/distill-skill/-/distill-skill-0.4.1.tgz","fileCount":18,"integrity":"sha512-RND/VgqH7TdVvlQ6Y1ukJVCobM7HWknQSP1ahS9kN61gny24fn66QO1J+/T21jkFLUMyFWEVO2NGxADeQ02c1A==","signatures":[{"sig":"MEQCICuWUrasrfDfjB6pzfgtor5mK3JdwSB47JqtSzmn6/eSAiAd/rADdGVCDccxsc8NLEsVGYKFr3S91T6lKwUHxnesoQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72437},"engines":{"node":">=14"},"gitHead":"5c4e45e45121b9e0e37d571e8ce24e2d71071ea2","scripts":{"test":"node scripts/test_clients.js","postinstall":"node scripts/postinstall.js","preuninstall":"node scripts/preuninstall.js"},"_npmUser":{"name":"antoneeo","email":"a_pinto_79@hotmail.com"},"_npmVersion":"11.9.0","description":"Contract-first writing discipline for Claude Code, Gemini CLI, Google Antigravity and Codex: compile the text contract before the prose, close with the loss/noise gate.","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/distill-skill_0.4.1_1784622668348_0.5361551422210575","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@antoneeo/distill-skill","version":"0.4.2","keywords":["claude-code","claude-skill","gemini-cli","skill","writing","documentation","technical-writing","ai-agent"],"author":{"url":"https://github.com/Antoneeo","name":"Antonio Pinto"},"license":"MIT","_id":"@antoneeo/distill-skill@0.4.2","maintainers":[{"name":"antoneeo","email":"a_pinto_79@hotmail.com"}],"bin":{"distill-install-skill":"scripts/postinstall.js","distill-uninstall-skill":"scripts/uninstall.js","distill-disable-persistence":"scripts/disable-persistence.js"},"dist":{"shasum":"8ecd9fa555857c5d7cc6fcd3aaaa55e061fc7b54","tarball":"https://registry.npmjs.org/@antoneeo/distill-skill/-/distill-skill-0.4.2.tgz","fileCount":18,"integrity":"sha512-YC5lU/AdhwsPaOLpsla+yr7rxP12LxdceBXy3+t7kDdnqdfyRdtLJnVZRkilqFnEF4VouiMCgs0qMAZA4CyqMQ==","signatures":[{"sig":"MEYCIQDwnuo7gYzDNb2zze8Y7MMIyaDYSAtdA7K2b2w+5GMuKQIhAJL99tfLx54EBkSTM22TjYRHJidwFz8he2ckes3yEQHU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73431},"engines":{"node":">=14"},"gitHead":"08f8f61609f8bec3b65d05a4d02936242ef25307","scripts":{"test":"node scripts/test_clients.js","postinstall":"node scripts/postinstall.js","preuninstall":"node scripts/preuninstall.js"},"_npmUser":{"name":"antoneeo","email":"a_pinto_79@hotmail.com"},"_npmVersion":"11.9.0","description":"Contract-first writing discipline for Claude Code, Gemini CLI, Google Antigravity and Codex: compile the text contract before the prose, close with the loss/noise gate.","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/distill-skill_0.4.2_1785851565053_0.908308796057125","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@antoneeo/distill-skill","version":"0.5.0","keywords":["claude-code","claude-skill","gemini-cli","skill","writing","documentation","technical-writing","ai-agent"],"author":{"url":"https://github.com/Antoneeo","name":"Antonio Pinto"},"license":"MIT","_id":"@antoneeo/distill-skill@0.5.0","maintainers":[{"name":"antoneeo","email":"a_pinto_79@hotmail.com"}],"bin":{"distill-install-skill":"scripts/postinstall.js","distill-uninstall-skill":"scripts/uninstall.js","distill-disable-persistence":"scripts/disable-persistence.js"},"dist":{"shasum":"9747e3e472cc5906046bcec02678cab200c23e10","tarball":"https://registry.npmjs.org/@antoneeo/distill-skill/-/distill-skill-0.5.0.tgz","fileCount":18,"integrity":"sha512-ZOiuZmGV0mich2Q87cHRp6CAEN1n8NYf3M8Gwubvt2xxT55vsC5i/GC2ggJOazM+xS/jW5Uaw1hb0i3WAefCWg==","signatures":[{"sig":"MEYCIQCVbE7H+3DIMX6A+7DK1YmymFW1Rltkv+wzXTe4o6i+sQIhAOkp8jBCTGw5d6LHRXQUZa+UnVQgOL7OUqZhKDesiAKH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75605},"engines":{"node":">=14"},"gitHead":"6543366385158ec9b4b47dead73b46a409169a62","scripts":{"test":"node scripts/test_clients.js","postinstall":"node scripts/postinstall.js","preuninstall":"node scripts/preuninstall.js"},"_npmUser":{"name":"antoneeo","email":"a_pinto_79@hotmail.com"},"_npmVersion":"11.9.0","description":"Contract-first writing discipline for Claude Code, Gemini CLI, Google Antigravity and Codex: compile the text contract before the prose, close with the loss/noise gate.","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/distill-skill_0.5.0_1787806490999_0.09172511141568163","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@antoneeo/distill-skill","version":"0.6.0","keywords":["claude-code","claude-skill","gemini-cli","skill","writing","documentation","technical-writing","ai-agent"],"author":{"url":"https://github.com/Antoneeo","name":"Antonio Pinto"},"license":"MIT","_id":"@antoneeo/distill-skill@0.6.0","maintainers":[{"name":"antoneeo","email":"a_pinto_79@hotmail.com"}],"bin":{"distill-install-skill":"scripts/postinstall.js","distill-uninstall-skill":"scripts/uninstall.js"},"dist":{"shasum":"74d303091f9f6bc8256afff4165f93323db67445","tarball":"https://registry.npmjs.org/@antoneeo/distill-skill/-/distill-skill-0.6.0.tgz","fileCount":18,"integrity":"sha512-aLksKZK6TgZP2LRN8obOkt0G37yp0rnPw3HI5yw4tibems2C62irLVSAns+zk62kceqQljyleL3cGTJtX2Nyfw==","signatures":[{"sig":"MEUCIHGCBHj9/zahmdOIjEYZifylJsNA15PkiX8ahZC0QTuRAiEAs7FavXgHq3CWLc+rKS1MhmRYCYSUJvL4Tldoof8OQqM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86261},"engines":{"node":">=14"},"gitHead":"8e1eb419bebb35bc57537dc37769dceac10b628c","scripts":{"test":"node scripts/test_clients.js","postinstall":"node scripts/postinstall.js","preuninstall":"node scripts/preuninstall.js"},"_npmUser":{"name":"antoneeo","email":"a_pinto_79@hotmail.com"},"_npmVersion":"11.9.0","description":"Contract-first writing discipline for Claude Code, Gemini CLI, Google Antigravity and Codex: compile the text contract before the prose, close with the loss/noise gate.","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/distill-skill_0.6.0_1787807242683_0.03723468911479033","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@antoneeo/distill-skill","version":"0.7.0","keywords":["claude-code","claude-skill","gemini-cli","skill","writing","documentation","technical-writing","ai-agent"],"author":{"url":"https://github.com/Antoneeo","name":"Antonio Pinto"},"license":"MIT","_id":"@antoneeo/distill-skill@0.7.0","maintainers":[{"name":"antoneeo","email":"a_pinto_79@hotmail.com"}],"bin":{"distill-install-skill":"scripts/postinstall.js","distill-uninstall-skill":"scripts/uninstall.js"},"dist":{"shasum":"40b527f9d332d883f9fd89d9ea9c1215b336f909","tarball":"https://registry.npmjs.org/@antoneeo/distill-skill/-/distill-skill-0.7.0.tgz","fileCount":18,"integrity":"sha512-/QkB0HBinfxripcNlBZcaeB1KHP0y7AeVKEj2DejUW9TY5kDleO23Pa44aAa7Hi7sn5zVnEjQh0H9IKJpdSM6w==","signatures":[{"sig":"MEUCIQCgk4jxhEwUPwEiR04opVVRHyCgX7EteJKKgPoZUVgWeAIgO3Z7zUP8jgzN8OQVXp1HUXqRP5IUkKMqtM9xY+3V9ug=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89781},"engines":{"node":">=14"},"gitHead":"97f46ba927843f77518b1fd6710487abdfc3548a","scripts":{"test":"node scripts/test_clients.js","postinstall":"node scripts/postinstall.js","preuninstall":"node scripts/preuninstall.js"},"_npmUser":{"name":"antoneeo","email":"a_pinto_79@hotmail.com"},"_npmVersion":"11.9.0","description":"Contract-first writing discipline for Claude Code, Gemini CLI, Google Antigravity and Codex: compile the text contract before the prose, close with the loss/noise gate.","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/distill-skill_0.7.0_1787856759789_0.8294494685112186","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@antoneeo/distill-skill","version":"0.8.0","description":"Contract-first writing discipline for Claude Code, Gemini CLI, Google Antigravity and Codex: compile the text contract before the prose, close with the loss/noise gate.","keywords":["claude-code","claude-skill","gemini-cli","skill","writing","documentation","technical-writing","ai-agent"],"author":{"name":"Antonio Pinto","url":"https://github.com/Antoneeo"},"license":"MIT","publishConfig":{"access":"public"},"bin":{"distill-install-skill":"scripts/postinstall.js","distill-uninstall-skill":"scripts/uninstall.js"},"engines":{"node":">=14"},"scripts":{"postinstall":"node scripts/postinstall.js","preuninstall":"node scripts/preuninstall.js","test":"node scripts/test_clients.js"},"gitHead":"847488c1b7f83a561b650bd23d3d490ab0738806","_id":"@antoneeo/distill-skill@0.8.0","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-fT0ct6IGLyJds619AAqgHUm1WArbQhTDfOlQpQ/cXcM3eiaVaGy0zDoqelP0mCDOTm368J+0AIVIXLZrEQUzxw==","shasum":"a22f52d8a668f81babc38b740f2d84a03b930c1f","tarball":"https://registry.npmjs.org/@antoneeo/distill-skill/-/distill-skill-0.8.0.tgz","fileCount":18,"unpackedSize":93030,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCC6PW1UCWCrNRAw2m5FT8W33J0XoKdQytjHHv3kzliBAIhAIPDcMbi+xzGlGwVo4vHniFu3eg+Nslng6BJFSkAt6dJ"}]},"_npmUser":{"name":"antoneeo","email":"a_pinto_79@hotmail.com"},"directories":{},"maintainers":[{"name":"antoneeo","email":"a_pinto_79@hotmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/distill-skill_0.8.0_1787857413640_0.5753566074965586"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-20T18:14:47.538Z","modified":"2026-08-27T19:03:33.946Z","0.1.0":"2026-07-20T18:14:47.874Z","0.2.0":"2026-07-20T19:04:27.541Z","0.3.0":"2026-07-20T19:25:37.231Z","0.4.0":"2026-07-21T05:34:57.616Z","0.4.1":"2026-07-21T08:31:08.546Z","0.4.2":"2026-08-04T13:52:45.204Z","0.5.0":"2026-08-27T04:54:51.179Z","0.6.0":"2026-08-27T05:07:22.837Z","0.7.0":"2026-08-27T18:52:39.971Z","0.8.0":"2026-08-27T19:03:33.777Z"},"author":{"name":"Antonio Pinto","url":"https://github.com/Antoneeo"},"license":"MIT","keywords":["claude-code","claude-skill","gemini-cli","skill","writing","documentation","technical-writing","ai-agent"],"description":"Contract-first writing discipline for Claude Code, Gemini CLI, Google Antigravity and Codex: compile the text contract before the prose, close with the loss/noise gate.","maintainers":[{"name":"antoneeo","email":"a_pinto_79@hotmail.com"}],"readme":"# distill — contract-first writing for AI agents\r\n\r\n`distill` is a writing discipline for agents that produce text: **compile the text\r\ncontract before the prose, then close with a loss/noise gate.** It supports Claude Code,\r\nCodex, Gemini CLI and Google Antigravity 2.0.\r\n\r\nIn an agentic system text is not description, it is work — it gets executed by agents and\r\ndecided on by humans. Two failure modes follow, and the skill targets both:\r\n\r\n- **Loss** — a blocking fact is missing, so the human comes back to ask and the agent\r\n  invents the gap.\r\n- **Noise** — the blocking fact is there but drowned, so the agent degrades and the human\r\n  stops reading, turning approval into a rubber stamp.\r\n\r\n## Installation\r\n\r\n### Claude Code — plugin (recommended)\r\n\r\n```bash\r\nclaude plugin marketplace add Antoneeo/distill\r\nclaude plugin install distill@distill\r\n```\r\n\r\nThis is the only channel that carries the **persistence hook**, which re-asserts the\r\ndiscipline once per turn so it does not drift over a long session. The hook is declared in\r\nthe plugin manifest and loads with the plugin — nothing is written to your `settings.json`.\r\n\r\n**If you installed 0.2.0 and ran `distill-enable-persistence`**, remove that wiring\r\n*before* installing the plugin (see *Migrating from 0.2.0* below). Otherwise the reminder\r\nis injected twice per turn, once from your settings file and once from the plugin.\r\n\r\n### Gemini CLI, Codex, Antigravity — npm\r\n\r\n```bash\r\nnpm install -g @antoneeo/distill-skill@latest\r\ndistill-install-skill\r\n```\r\n\r\n**If you previously copied the skill in by hand**, remove that directory first (e.g.\r\n`~/.claude/skills/distill/`). The installer deliberately refuses to overwrite a directory\r\nit did not create, so it will report `⏭️ Skipped` and leave your copy alone.\r\n\r\nThe installer copies `skills/distill/` into every detected client:\r\n\r\n- Claude Code: `~/.claude/skills/distill/`\r\n- Codex: `~/.codex/skills/distill/`\r\n- Gemini CLI: `~/.gemini/skills/distill/`\r\n- Google Antigravity: `~/.gemini/config/skills/distill/` (detected distinctly from Gemini\r\n  CLI; override the home with `ANTIGRAVITY_HOME`)\r\n\r\nRestart the relevant agent, or reload skills where the CLI supports it.\r\n\r\nOn Claude Code, if the distill **plugin** is installed, the installer skips the npm copy —\r\nand removes a leftover one it owns from an earlier install: the plugin already carries the\r\nskill and the hook there, and two copies of one doctrine under one name drift apart at the\r\nfirst single-channel update. Hand-placed copies are never touched.\r\n\r\n### Updating\r\n\r\nNeither channel updates on its own. Plugin:\r\n\r\n```bash\r\nclaude plugin marketplace update distill && claude plugin update distill@distill\r\n```\r\n\r\nthen restart Claude Code. (The hook notifies you in-conversation when a new version\r\nexists — see *Update notification* below — and updating stays your act.) npm:\r\n\r\n```bash\r\nnpm install -g @antoneeo/distill-skill@latest && distill-install-skill\r\n```\r\n\r\nThe installer refreshes every skill copy it owns; hand-edited copies are left alone.\r\n\r\n## Persistence hook (Claude Code plugin only)\r\n\r\nA skill can drift: it is loaded once, applied to the first text, then quietly skipped as the\r\nsession goes on. The doctrine says it must not lapse, but a clause telling an agent not to\r\ndrift cannot itself prevent drift — the instruction is what fades. This hook re-asserts it\r\nonce per turn.\r\n\r\nIt arrives with the plugin — `.claude-plugin/plugin.json` declares it as a `UserPromptSubmit`\r\nhook and Claude Code loads it natively. There is nothing to enable, and nothing is written to\r\nyour `settings.json`.\r\n\r\nTo turn it off, disable or uninstall the plugin. The hook is one line of context (~110 tokens —\r\nthe discipline in miniature: since 0.7.0 both halves, reading and writing) per prompt and fails\r\nopen: any internal error exits silently rather than blocking your prompt.\r\n\r\nInstalling the skill via npm does **not** give you the hook. Only the plugin does, and only on\r\nClaude Code — Gemini CLI, Codex and Antigravity get the doctrine with no mechanism behind it.\r\n\r\n### Update notification and auto-update (plugin only)\r\n\r\nNeither the plugin marketplace nor npm updates anything on its own, so the hook carries an\r\nupdate lane: a detached worker checks the npm registry **at most once a day** and, when a\r\nnewer version exists, the per-turn reminder gains one extra line — shown **once per new\r\nversion**, then silenced. Updating stays your act (`/plugin`, or\r\n`claude plugin update distill@distill`).\r\n\r\nWhat leaves your machine: one anonymous GET of the package metadata to `registry.npmjs.org` —\r\nthe same request `npm install` makes; nothing about you or your session is sent. Opt out\r\nentirely with `DISTILL_NO_UPDATE_CHECK=1` (no network, no cache, no extra line).\r\n\r\n**Auto-update is opt-in and off by default**: `DISTILL_AUTO_UPDATE=1` makes the worker run the\r\ntwo update commands itself when a newer version appears (applied at the next client restart,\r\nannounced by the same one-time line). It is not the default because it means executing newly\r\npublished code without a per-version consent — if the repository were ever compromised, an\r\nauto-updating install would follow it silently. Set it only if you accept that trade.\r\n\r\n### Migrating from 0.2.0\r\n\r\n0.2.0 wired this hook by editing `~/.claude/settings.json`. The dedicated cleanup command\r\n(`distill-disable-persistence`) was removed in 0.6.0; the same cleanup still runs inside\r\n`distill-uninstall-skill`, which unwires the settings.json entry and deletes the copied hook\r\nfile. If you only want the 0.2.0 wiring gone (to avoid a double injection next to the\r\nplugin), remove the `UserPromptSubmit` entry whose command ends in `distill-persist.js` from\r\n`~/.claude/settings.json` by hand.\r\n\r\n## Uninstalling\r\n\r\n```bash\r\ndistill-uninstall-skill          # removes the installed skills AND unwires the hook\r\nnpm uninstall -g @antoneeo/distill-skill\r\n```\r\n\r\nRun the command **before** `npm uninstall`, and in that order. npm has not executed the\r\n`preuninstall` lifecycle script since v7, so `npm uninstall -g` on its own removes the\r\npackage and silently leaves every installed skill directory behind. Verified on npm 11.9.0.\r\n\r\n### Install safety\r\n\r\nThe installer only ever touches directories it created, marked with an `.installed-by.json`\r\nownership file:\r\n\r\n- A skill directory it does **not** own is never overwritten — it reports the skip and\r\n  leaves your edits intact. Override with `DISTILL_FORCE_INSTALL=1`, which also *marks the\r\n  directory as ours*, so a later `distill-uninstall-skill` will remove it along with\r\n  anything else you put there.\r\n- `distill-uninstall-skill` removes only marked directories. A hand-placed copy survives it\r\n  and is reported, not deleted.\r\n- An interrupted install leaves the directory marked but incomplete; the next install heals\r\n  it silently rather than refusing to touch it.\r\n\r\n## What the skill does\r\n\r\nFive contract fields compiled **before** writing, because generation order beats\r\nfiltering — a gate filters a distribution that has already formed, a contract changes it:\r\n\r\n| Field | Question |\r\n|---|---|\r\n| Reader | who reads, what do they already know, in what situation? |\r\n| Action | what must they be able to do right after? |\r\n| Payload | which complete assertions am I transmitting, blocking or decisional? |\r\n| Level | at what altitude of abstraction, bounded by the questions above and below? |\r\n| Form | register and a measurable budget |\r\n\r\nThen a six-step gate: level test, deletion test (blocking / decisional / convenience /\r\nsuperfluous), bidirectional coverage, action test, reader bans, form budget.\r\n\r\nIt also runs in **review mode**: reconstruct the contract an existing text should have had,\r\nlabel every block, report losses and noise, rewrite, and declare the measure.\r\n\r\n**Non-goals**, stated in the skill itself: not brevity, not elegance, not maximum\r\ncompression. The target is the distillate — a text can be too short. Telegraphic fragments\r\nand arrow chains are noise disguised as brevity.\r\n\r\n## When it fires\r\n\r\nOn writing or rewriting any non-trivial document: handoffs, reports, ADRs, analyses,\r\nREADMEs, agent-facing docs — and whenever you ask to shorten, tighten, condense, distill,\r\nrewrite or audit an existing text. Chat replies are governed by the per-turn persistence\r\nhook instead: an on-demand skill never fires mid-conversation, so since 0.5.0 the skill\r\nstops promising it would.\r\n\r\nIt stays out of the way for translation, grammar-only fixes, creative writing and format\r\nconversion.\r\n\r\n## Status\r\n\r\nVersion 0.8.0. The skill text has been through four evaluation iterations; its trigger\r\naccuracy has **not** yet been measured against a labeled query set. Treat the trigger\r\nbehavior as unvalidated.\r\n\r\nIf you remove the package with a bare `npm uninstall -g` while the persistence hook is\r\nenabled, the hook keeps injecting on every prompt: it lives in `~/.claude/hooks/` and\r\nsurvives the package. Run `distill-uninstall-skill` first, or remove the hook entry from\r\n`~/.claude/settings.json` and delete `~/.claude/hooks/distill-persist.js` by hand.\r\n\r\n## License\r\n\r\nMIT — Antonio Pinto\r\n","readmeFilename":"README.md"}