{"_id":"@dlhck/strip-clanker-attribution","_rev":"2-10f7e08c5f1a5fb92ccd2da369f3d920","name":"@dlhck/strip-clanker-attribution","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@dlhck/strip-clanker-attribution","version":"1.0.0","keywords":["husky","commit-msg","git-hooks","co-authored-by","attribution","cursor","claude","codex"],"license":"MIT","_id":"@dlhck/strip-clanker-attribution@1.0.0","maintainers":[{"name":"dlhck","email":"d.hoeck@elevantiq.com"}],"homepage":"https://github.com/dlhck/strip-clanker-attribution#readme","bugs":{"url":"https://github.com/dlhck/strip-clanker-attribution/issues"},"bin":{"strip-clanker-attribution":"strip-clanker-attribution.mjs","strip-clanker-attribution-init":"init.mjs"},"dist":{"shasum":"825efc229c0307354c9c14c45dda6f362cbe1e17","tarball":"https://registry.npmjs.org/@dlhck/strip-clanker-attribution/-/strip-clanker-attribution-1.0.0.tgz","fileCount":5,"integrity":"sha512-5UhS0kmXJMWSWcejNkLQxmPnhED/9GnA6IWkRoCY/YTjWFaQoKJBiMBApeYG0oaLLZve8pkH2e1yUEWL0Wh4BA==","signatures":[{"sig":"MEUCIQD10bVccbMXqKcpJ6dyLGVkcnmBSgnaMvoHXkF1OaNAfQIgFXzV6o8DGbryAVpZ1MZcitEEnuOmEwxes35rbRlpTNk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10010},"type":"module","engines":{"node":">=18"},"exports":"./strip-clanker-attribution.mjs","gitHead":"bb01b6d2d1aa33ac21207f9f5b46904321dc5081","scripts":{"test":"node --test strip-clanker-attribution.spec.mjs","prepare":"husky","preversion":"npm test","release:major":"npm version major && git push --follow-tags","release:minor":"npm version minor && git push --follow-tags","release:patch":"npm version patch && git push --follow-tags","prepublishOnly":"npm test"},"_npmUser":{"name":"dlhck","email":"d.hoeck@elevantiq.com"},"repository":{"url":"git+https://github.com/dlhck/strip-clanker-attribution.git","type":"git"},"_npmVersion":"11.13.0","description":"Strip Cursor, Claude, and Codex attribution from commit messages. Built for husky commit-msg hooks.","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7"},"_npmOperationalInternal":{"tmp":"tmp/strip-clanker-attribution_1.0.0_1787313829234_0.5933310438664279","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@dlhck/strip-clanker-attribution","version":"1.0.1","description":"Strip Cursor, Claude, and Codex attribution from commit messages. Built for husky commit-msg hooks.","type":"module","exports":"./strip-clanker-attribution.mjs","bin":{"strip-clanker-attribution":"strip-clanker-attribution.mjs","strip-clanker-attribution-init":"init.mjs"},"scripts":{"test":"node --test strip-clanker-attribution.spec.mjs","preversion":"npm test","prepublishOnly":"npm test","release:patch":"npm version patch && git push --follow-tags","release:minor":"npm version minor && git push --follow-tags","release:major":"npm version major && git push --follow-tags","prepare":"husky"},"repository":{"type":"git","url":"git+https://github.com/dlhck/strip-clanker-attribution.git"},"bugs":{"url":"https://github.com/dlhck/strip-clanker-attribution/issues"},"homepage":"https://github.com/dlhck/strip-clanker-attribution#readme","keywords":["husky","commit-msg","git-hooks","co-authored-by","attribution","cursor","claude","codex"],"engines":{"node":">=18"},"license":"MIT","devDependencies":{"husky":"^9.1.7"},"gitHead":"978a97765c95e1282b7fa405e5c9511c9df83d35","_id":"@dlhck/strip-clanker-attribution@1.0.1","_nodeVersion":"22.23.2","_npmVersion":"12.0.2","dist":{"integrity":"sha512-cyMVpHTmuXtGu4fooz2bdz+LIKod6dfbXYjqWPBVQkM3isA6MXpmU+oPqk5Pmfma3W91ZkYFLlUjo6JDVFx0RA==","shasum":"cd020e0cdecdd94e2239aedad174d0605784dfb5","tarball":"https://registry.npmjs.org/@dlhck/strip-clanker-attribution/-/strip-clanker-attribution-1.0.1.tgz","fileCount":5,"unpackedSize":10010,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dlhck%2fstrip-clanker-attribution@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDcXm5Gr/9rxJDPDtnjLi/eCZoYuNeUKhJt0Xd+BL+L/wIhAK0E+GECOUhcPRjBQASawAUaVnTM1OaG14YKuImhbrXo"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:54cd4223-a6a9-4067-b9b3-0b9574252d7a"}},"directories":{},"maintainers":[{"name":"dlhck","email":"d.hoeck@elevantiq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/strip-clanker-attribution_1.0.1_1787314084761_0.9462355287436501"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-21T12:03:48.831Z","modified":"2026-08-21T12:08:05.303Z","1.0.0":"2026-08-21T12:03:49.372Z","1.0.1":"2026-08-21T12:08:04.919Z"},"bugs":{"url":"https://github.com/dlhck/strip-clanker-attribution/issues"},"license":"MIT","homepage":"https://github.com/dlhck/strip-clanker-attribution#readme","keywords":["husky","commit-msg","git-hooks","co-authored-by","attribution","cursor","claude","codex"],"repository":{"type":"git","url":"git+https://github.com/dlhck/strip-clanker-attribution.git"},"description":"Strip Cursor, Claude, and Codex attribution from commit messages. Built for husky commit-msg hooks.","maintainers":[{"name":"dlhck","email":"d.hoeck@elevantiq.com"}],"readme":"# strip-clanker-attribution\n\nStrip Cursor, Claude, and Codex attribution from commit messages. Built for husky `commit-msg` hooks.\n\nCoding agents like to sign their work. This tool removes that signature before the commit lands, so your history stays clean and commitlint never chokes on a trailer it doesn't expect.\n\nIt removes:\n\n- Agent co-author trailers, for example `Co-authored-by: Cursor <cursoragent@cursor.com>` or `Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>`. Human co-authors stay.\n- Attribution trailers such as `Made-with: Cursor`, `Generated-by: Claude Code`, and `Codex-Session-Id: ses_123`.\n- Signature lines like `🤖 Generated with [Claude Code](https://claude.com/claude-code)`.\n\nIt keeps everything else, including body text that merely mentions these tools.\n\n## Install\n\n```sh\nnpm install --save-dev @dlhck/strip-clanker-attribution\n```\n\n## Usage with husky\n\nThe package only ships the stripping script. Your repo's husky setup stays in charge of the hooks. If husky is already set up, wire it in from the repo root:\n\n```sh\nnpx strip-clanker-attribution-init\n```\n\nThis puts `npx strip-clanker-attribution \"$1\"` at the top of `.husky/commit-msg`, before commitlint or anything else that reads the message. Running it twice changes nothing. Without a `.husky` directory it stops and tells you to run `npx husky init` first.\n\nOr add the line by hand:\n\n```sh\nnpx strip-clanker-attribution \"$1\"\nbunx commitlint --edit \"$1\"\n```\n\nThe hook rewrites the commit message file in place, so anything after it sees the cleaned message. This works for `git commit`, `git merge`, `git revert`, and any other command that fires the `commit-msg` hook.\n\n## CLI\n\n```sh\nstrip-clanker-attribution <commit-msg-file>\n```\n\nRewrites the file in place. Exits non-zero if no file is given.\n\n## Programmatic use\n\n```js\nimport { stripAiCommitAttribution } from '@dlhck/strip-clanker-attribution';\n\nconst clean = stripAiCommitAttribution(rawCommitMessage);\n```\n\nThe function takes the full commit message as a string and returns it without the attribution lines. It preserves the original line endings and collapses the blank lines the removals leave behind.\n\n## Requirements\n\nNode.js 18 or later. No dependencies.\n\n## Releasing\n\nReleases are tag-driven and published with npm [trusted publishing](https://docs.npmjs.com/trusted-publishers) (OIDC). No npm token is stored anywhere. One-time setup: on npmjs.com, open the package settings and add GitHub Actions as a trusted publisher for this repository with the `release.yml` workflow.\n\nThen, from a clean `main`:\n\n```sh\nnpm run release:patch   # or release:minor / release:major\n```\n\nThis runs the tests, bumps the version, commits, tags `vX.Y.Z`, and pushes. The `release` workflow verifies the tag matches `package.json`, publishes to npm with provenance, and creates the GitHub release.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}