{"_id":"@alessiods/noclank","_rev":"4-30bb2f6422ff4d4bfd4411f2d5c82ade","name":"@alessiods/noclank","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.0":{"name":"@alessiods/noclank","version":"1.0.0","keywords":["opencode-plugin","opencode","noclank","pi-package","pi","skills","clankerspeech","anti-ai-slop"],"author":{"url":"https://github.com/no-ai-tell/no-clank","name":"no-ai-tell"},"license":"MIT","_id":"@alessiods/noclank@1.0.0","maintainers":[{"name":"alessiods","email":"hello@alessiodellasanta.com"}],"homepage":"https://github.com/no-ai-tell/no-clank","bugs":{"url":"https://github.com/no-ai-tell/no-clank/issues"},"pi":{"skills":["./skills"],"extensions":["./pi-extension/index.js"]},"dist":{"shasum":"b685900fa3f34be03c1f0b751831ee63365e53ac","tarball":"https://registry.npmjs.org/@alessiods/noclank/-/noclank-1.0.0.tgz","fileCount":18,"integrity":"sha512-WrOeAV+799P0vcy2BBXw1p1PHMZoPt0+Mgh6C8elI+gaPp0AHFWI8Oqj5ZazGc9le1mFZh7PkSL98SwAj45bAQ==","signatures":[{"sig":"MEYCIQCeMxvbeng0Fbqqisxh8pN4PFyYrFi7FZp3+02hNdhN2wIhAIfC1hibUQyfU0mB+1zXasysWNfMuL0lY4qELIUrVqdb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39220},"main":"./.opencode/plugins/noclank.mjs","exports":{".":"./.opencode/plugins/noclank.mjs","./plugin":"./.opencode/plugins/noclank.mjs"},"scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"alessiods","email":"hello@alessiodellasanta.com"},"repository":{"url":"git+https://github.com/no-ai-tell/no-clank.git","type":"git"},"_npmVersion":"10.9.7","description":"Kills AI-generated clankerspeech slop. Forces plain, direct, human-sounding prose.","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/noclank_1.0.0_1782990637818_0.29568629832231386","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@alessiods/noclank","version":"1.0.1","keywords":["opencode-plugin","opencode","noclank","pi-package","pi","skills","clankerspeech","anti-ai-slop"],"author":{"url":"https://github.com/alessio-ds/no-clank","name":"no-clank"},"license":"MIT","_id":"@alessiods/noclank@1.0.1","maintainers":[{"name":"alessiods","email":"hello@alessiodellasanta.com"}],"homepage":"https://github.com/alessio-ds/no-clank","bugs":{"url":"https://github.com/alessio-ds/no-clank/issues"},"pi":{"skills":["./skills"],"extensions":["./pi-extension/index.js"]},"dist":{"shasum":"a0a45e64968719badad99d26861394d958d1dd87","tarball":"https://registry.npmjs.org/@alessiods/noclank/-/noclank-1.0.1.tgz","fileCount":19,"integrity":"sha512-/A9Us4ShTHkk+9RUSHwR/748pPD8GboxscPo0dF3tScqQbZTxYvjaQXKp4jIAtfMmieu5Cp08TT1XqlSHxLDAg==","signatures":[{"sig":"MEYCIQCXrrnd7uFu3Edf0YzS4Hj+cBSAOge6TKoi9DJnWIhM7QIhAJTdHIYzk1j539MXh6eBquqXTt0eQP1A3aB3vz6QQK2/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37960},"main":"./.opencode/plugins/noclank.mjs","exports":{".":"./.opencode/plugins/noclank.mjs","./plugin":"./.opencode/plugins/noclank.mjs"},"gitHead":"901c5c4412083849906a72a7e7f95acea9070fcf","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"alessiods","email":"hello@alessiodellasanta.com"},"repository":{"url":"git+https://github.com/alessio-ds/no-clank.git","type":"git"},"_npmVersion":"10.9.7","description":"Kills AI-generated clankerspeech slop. Forces plain, direct, human-sounding prose.","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/noclank_1.0.1_1782992851771_0.8396131660005746","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@alessiods/noclank","version":"1.0.2","keywords":["opencode-plugin","opencode","noclank","pi-package","pi","skills","clankerspeech","anti-ai-slop"],"author":{"url":"https://github.com/alessio-ds/no-clank","name":"no-clank"},"license":"MIT","_id":"@alessiods/noclank@1.0.2","maintainers":[{"name":"alessiods","email":"hello@alessiodellasanta.com"}],"homepage":"https://github.com/alessio-ds/no-clank","bugs":{"url":"https://github.com/alessio-ds/no-clank/issues"},"pi":{"skills":["./skills"],"extensions":["./pi-extension/index.js"]},"dist":{"shasum":"533eafbf74c7cf037b8276304a608fe08243938f","tarball":"https://registry.npmjs.org/@alessiods/noclank/-/noclank-1.0.2.tgz","fileCount":19,"integrity":"sha512-iQKiPWF6/ITfFG/agWgUnspy3J/NVBpS9NyqMJvtkh8lAL2gagyZCBxYClhpQVFgp/mPCYx9BHQYGxlh8IuBfQ==","signatures":[{"sig":"MEQCIFDj+uhlEqNWVh/s3/0Imo3XBkp7tNJVpXgoQ2yXu4vCAiAZMv5FJHk0hgfiMx/zjH/euP6ftP58CSa5m237TDWZ2A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33924},"main":"./.opencode/plugins/noclank.mjs","exports":{".":"./.opencode/plugins/noclank.mjs","./plugin":"./.opencode/plugins/noclank.mjs"},"gitHead":"ae7eaf5d2ce9dcca6f3a782d5cb4922ca16b7edb","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"alessiods","email":"hello@alessiodellasanta.com"},"repository":{"url":"git+https://github.com/alessio-ds/no-clank.git","type":"git"},"_npmVersion":"10.9.7","description":"Kills AI-generated clankerspeech slop. Forces plain, direct, human-sounding prose.","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/noclank_1.0.2_1782993462003_0.7450856986609182","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@alessiods/noclank","version":"1.0.3","description":"Kills AI-generated clankerspeech slop. Forces plain, direct, human-sounding prose.","keywords":["opencode-plugin","opencode","noclank","pi-package","pi","skills","clankerspeech","anti-ai-slop"],"license":"MIT","author":{"name":"no-clank","url":"https://github.com/alessio-ds/no-clank"},"homepage":"https://github.com/alessio-ds/no-clank","repository":{"type":"git","url":"git+https://github.com/alessio-ds/no-clank.git"},"bugs":{"url":"https://github.com/alessio-ds/no-clank/issues"},"main":"./.opencode/plugins/noclank.mjs","exports":{".":"./.opencode/plugins/noclank.mjs","./plugin":"./.opencode/plugins/noclank.mjs"},"scripts":{"test":"node --test tests/*.test.js"},"pi":{"extensions":["./pi-extension/index.js"],"skills":["./skills"]},"publishConfig":{"access":"public"},"_id":"@alessiods/noclank@1.0.3","gitHead":"2575eef1d434373a47a927cee7e50e3e6d1dea4f","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-SpxMB5oU6niZhoXFB10YtHklVbkpUCJGEMMUySGBWexmkEbbnwvpIYfQ4IxGArbfm5vZ5u9RLRyyv4vOIwXntQ==","shasum":"1d459b052652c79051c866dc741c9ef98f20468e","tarball":"https://registry.npmjs.org/@alessiods/noclank/-/noclank-1.0.3.tgz","fileCount":19,"unpackedSize":34770,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHW/4SsgjkZQFdlNpeQLK08AsaiU0DveoyaWF7z1djL+AiEAzh6dcqDBiKUggik5lyFxpHdC82qK1hw/3i2at/8hwR4="}]},"_npmUser":{"name":"alessiods","email":"hello@alessiodellasanta.com"},"directories":{},"maintainers":[{"name":"alessiods","email":"hello@alessiodellasanta.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/noclank_1.0.3_1782993682859_0.670657266804005"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-02T11:10:37.626Z","modified":"2026-07-02T12:01:23.191Z","1.0.0":"2026-07-02T11:10:37.959Z","1.0.1":"2026-07-02T11:47:31.906Z","1.0.2":"2026-07-02T11:57:42.139Z","1.0.3":"2026-07-02T12:01:23.062Z"},"bugs":{"url":"https://github.com/alessio-ds/no-clank/issues"},"author":{"name":"no-clank","url":"https://github.com/alessio-ds/no-clank"},"license":"MIT","homepage":"https://github.com/alessio-ds/no-clank","keywords":["opencode-plugin","opencode","noclank","pi-package","pi","skills","clankerspeech","anti-ai-slop"],"repository":{"type":"git","url":"git+https://github.com/alessio-ds/no-clank.git"},"description":"Kills AI-generated clankerspeech slop. Forces plain, direct, human-sounding prose.","maintainers":[{"name":"alessiods","email":"hello@alessiodellasanta.com"}],"readme":"# No-Clank\n\n![No-Clank](assets/logo.svg)\n\n*Are you tired of AI-generated clankerspeech slop? Me too.*\n\n---\n\n**No-Clank kills the AI-typical writing patterns that make every LLM output sound like it was written by the same model.**\n\nContrastive parallelism. Gratuitous em dashes. \"Delve.\" \"Navigate the landscape.\" \"It's not just a tool — it's a philosophy.\" \"Certainly! Let's dive in.\"\n\nYou know the sound. This stops it.\n\n## Before / After\n\n**You ask: \"How does this algorithm work?\"**\n\nWithout No-Clank:\n\n> When exploring the intricate landscape of algorithmic paradigms, it's crucial to understand that this isn't merely about sorting data — it's a testament to the elegant tapestry of computational thinking. By leveraging a divide-and-conquer methodology, we unlock the ability to navigate the ever-evolving realm of efficient data processing. Fast, scalable, and robust. But what does this actually mean for you? It means you're not just sorting — you're orchestrating a symphony of data.\n\nWith No-Clank:\n\n> It splits the input in half, sorts each half recursively, then merges them. The merge step is where the comparison happens.\n\n---\n\n**You ask: \"What's the right tool for this job?\"**\n\nWithout No-Clank:\n\n> In today's fast-paced, ever-changing development landscape, selecting the appropriate tool is a journey that requires careful consideration of multifaceted requirements. Whether you're a startup or an enterprise, navigating this terrain demands a nuanced understanding of your ecosystem. From local development to production-scale deployments, the right tool doesn't just meet your needs — it elevates your entire workflow.\n\nWith No-Clank:\n\n>  `sqlite3`. Single file, no server, zero setup. Add `pg` when you have multiple writers.\n\n---\n\n**You ask for a commit message.**\n\nWithout No-Clank:\n\n> This commit introduces a robust authentication enhancement that seamlessly integrates with our existing user management ecosystem. By leveraging JWT tokens and harnessing the power of middleware, we unlock a new paradigm of secure access control. Not just a security improvement — it's a foundational shift in how we approach user verification. Closes #42.\n\nWith No-Clank:\n\n> Add JWT auth middleware. Closes #42.\n\n## Numbers\n\nMeasured on Claude Code sessions writing responses to 10 common developer questions, with and without No-Clank (n=5, Haiku 4.5):\n\n| Metric | vs baseline |\n|--------|-------------|\n| Output length | ~60% shorter |\n| Banned words used | 0 vs 4-7 per response |\n| Em dashes | 0 vs 2-5 per response |\n| \"Certainly!\" / \"Let's dive in\" | 0 vs 1-3 per response |\n| Information density | 2.5x higher |\n\n## How it works\n\nBefore writing any text, the agent checks every sentence against the No-Clank ruleset:\n\n1. **Sentence patterns** — no contrastive parallelism, rule of three, false emphasis, \"not just X but Y\", \"from X to Y\", rhetorical questions, gerund openers\n2. **Punctuation** — no gratuitous em dashes, no excessive bolding, no colon-then-list in casual prose, no emoji bullets, no Title-Case headers without cause\n3. **Vocabulary** — a banned list of ~50 words statistically over-represented in LLM output\n4. **Hedges/intensifiers** — no throat-clearing, no canned enthusiasm, no filler intensifiers\n5. **Grandiose framing** — no TED Talk intros, no false elevation of stakes\n6. **Structural tics** — no rhythm-for-rhythm's-sake phrasing, no unnecessary summaries, no hedged-then-confident close\n\n## Install\n\n### npm (install anywhere)\n\n```\nnpm install @alessiods/noclank\n```\n\n### Claude Code\n\n```\n/plugin marketplace add @alessiods/noclank\n```\n```\n/plugin install noclank@noclank\n```\n\n### Codex\n\n```\ncodex plugin marketplace add @alessiods/noclank\n```\n\nOpen `/plugins`, install No-Clank, then open `/hooks` and trust its two lifecycle hooks. Restart for desktop app.\n\n### GitHub Copilot CLI\n\n```\ncopilot plugin marketplace add @alessiods/noclank\ncopilot plugin install noclank@noclank\n```\n\nIn interactive mode:\n```\n/plugin marketplace add @alessiods/noclank\n/plugin install noclank@noclank\n```\n\n### OpenCode\n\nAdd to `opencode.json`:\n\n```json\n{ \"plugin\": [\"@alessiods/noclank\"] }\n```\n\nRun from a checkout instead (the plugin reuses `hooks/` and `skills/`):\n\n```json\n{ \"plugin\": [\"./.opencode/plugins/noclank.mjs\"] }\n```\n\nInjects the ruleset every turn at the active level; adds the `/noclank` commands (see [Commands](#commands)). OpenCode also auto-loads this repo's `AGENTS.md`, so the rules hold even without the plugin. The plugin adds the `lite/full/ultra/off` levels.\n\nThe `./` path resolves against your project's `opencode.json`; to share one checkout across projects, point it at the absolute path of the `.mjs` instead (it finds its `hooks/` and `skills/` relative to its own file).\n\n### Pi agent harness\n\n```\npi install git:github.com/alessio-ds/no-clank\n```\n\n### Gemini CLI / Antigravity CLI\n\n```\ngemini extensions install https://github.com/alessio-ds/no-clank\n```\n\nor after the rename:\n\n```\nagy plugin install https://github.com/alessio-ds/no-clank\n```\n\n### Other agents\n\n| Agent | How |\n|-------|-----|\n| **Cursor** | Copy `.cursor/rules/noclank.mdc` to your project's `.cursor/rules/` |\n| **Windsurf** | Copy `.windsurf/rules/noclank.md` to your project's `.windsurf/rules/` |\n| **Cline** | Copy `.clinerules/noclank.md` to your project's `.clinerules/` |\n| **Kiro** | Copy `.kiro/steering/noclank.md` to `~/.kiro/steering/` or your project's `.kiro/steering/` |\n| **GitHub Copilot** | Copy `.github/copilot-instructions.md` to your project's `.github/` |\n| **Aider / CodeWhale / Swival** | Copy `AGENTS.md` to your project root |\n| **OpenClaw** | `clawhub install noclank` or copy `.openclaw/skills/noclank/` to `~/.openclaw/skills/` |\n\n### Uninstall\n\n| Host | Command |\n|------|---------|\n| Claude Code | `/plugin remove noclank` |\n| Codex | `codex plugin remove noclank` |\n| Copilot CLI | `copilot plugin remove noclank` |\n| Pi | `pi uninstall noclank` |\n| Cursor / Windsurf / Cline | Delete the copied rule file |\n\n## Commands\n\n| Command | What it does |\n|---------|-------------|\n| `/noclank [lite\\|full\\|ultra\\|off]` | Set intensity level |\n| `/noclank-audit` | Scan the last response for clankerspeech violations |\n| `/noclank-help` | Quick reference |\n\n**Intensity levels:**\n\n| Level | What changes |\n|-------|-------------|\n| **lite** | Run all rules, flag banned vocab with notes, allow rhetorical overrides |\n| **full** | Rules enforced strictly. Default. |\n| **ultra** | Every sentence must pass \"would I text this to a coworker?\" |\n\nPersist the default with `NOCLANK_DEFAULT_MODE` env var or `~/.config/noclank/config.json`:\n\n```json\n{ \"defaultMode\": \"ultra\" }\n```\n\n## FAQ\n\n**Does it apply to code?** Variable names, comments, commit messages, and docs follow the rules. Code logic itself doesn't — write clean code however you want.\n\n**What if I need marketing copy?** No-Clank governs technical prose. If you explicitly ask for a different style (\"write this in marketing voice\", \"make it sound exciting\"), follow the request.\n\n**Does it work in every agent?** The `AGENTS.md` file works in any agent that reads it (most of them). The plugin+lifecycle-hook version works in Claude Code, Codex, Copilot CLI, OpenCode, Pi, Gemini CLI, and Antigravity. The rest use the instruction-only fallback.\n\n**What about creative writing?** Poetry, fiction, lyrics, and deliberately stylized prose are exempt. No-Clank is for technical and professional communication.\n\n**Why \"noclank\"?** Because every LLM output sounds like it was written by a clanking machine trying to sound human.\n\n## License\n\nMIT. Do what you want with it.\n","readmeFilename":"README.md"}