{"id":15819415,"url":"https://github.com/xunnamius/commit-spell","last_synced_at":"2026-02-07T08:31:21.263Z","repository":{"id":38425468,"uuid":"334787908","full_name":"Xunnamius/commit-spell","owner":"Xunnamius","description":"📚 Unites Atom's spellchecker, VSCode's Code Spell Checker dictionaries, custom local and user dictionaries, and words from your repository's commit history to spellcheck your commit messages as you craft them","archived":false,"fork":false,"pushed_at":"2023-12-29T10:47:27.000Z","size":2491,"stargazers_count":1,"open_issues_count":18,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-03T11:58:00.825Z","etag":null,"topics":["check","checker","code","commit","commit-lint","cspell","hunspell","lint","message","spell","spellcheck","spellchecker","spelling","vscode"],"latest_commit_sha":null,"homepage":"https://npm.im/commit-spell","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Xunnamius.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":".github/SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-02-01T00:28:27.000Z","updated_at":"2024-08-23T01:26:32.000Z","dependencies_parsed_at":"2024-10-05T06:41:02.924Z","dependency_job_id":null,"html_url":"https://github.com/Xunnamius/commit-spell","commit_stats":{"total_commits":34,"total_committers":2,"mean_commits":17.0,"dds":0.02941176470588236,"last_synced_commit":"ceae53f160d474b8b93316a602e69d14bec08fd1"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xunnamius%2Fcommit-spell","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xunnamius%2Fcommit-spell/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xunnamius%2Fcommit-spell/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xunnamius%2Fcommit-spell/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Xunnamius","download_url":"https://codeload.github.com/Xunnamius/commit-spell/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247601447,"owners_count":20964866,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["check","checker","code","commit","commit-lint","cspell","hunspell","lint","message","spell","spellcheck","spellchecker","spelling","vscode"],"created_at":"2024-10-05T06:40:54.487Z","updated_at":"2026-02-07T08:31:21.221Z","avatar_url":"https://github.com/Xunnamius.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- prettier-ignore-start --\u003e\n\n\u003c!-- badges-start --\u003e\n\n[![Black Lives Matter!][badge-blm]][link-blm]\n[![Maintenance status][badge-maintenance]][link-repo]\n[![Last commit timestamp][badge-last-commit]][link-repo]\n[![Open issues][badge-issues]][link-issues]\n[![Pull requests][badge-pulls]][link-pulls]\n[![Codecov][badge-codecov]][link-codecov]\n[![Source license][badge-license]][link-license]\n[![Tree shaking support][badge-tree-shaking]][link-bundlephobia]\n[![Compressed package size][badge-size]][link-bundlephobia]\n[![NPM version][badge-npm]][link-npm]\n[![Uses Semantic Release!][badge-semantic-release]][link-semantic-release]\n\n\u003c!-- badges-end --\u003e\n\n\u003c!-- prettier-ignore-end --\u003e\n\n# commit-spell\n\n`commit-spell` unites Atom's [multi-platform spellchecker][2] (bindings for\nHunspell, Windows Spell Check API, and NSSpellChecker), VSCode's [Code Spell\nChecker][3] dictionaries, custom local and user dictionaries, and words from\nyour repository's commit history to spellcheck your commit messages as you craft\nthem.\n\n## Install\n\n```bash\nnpm install --save-dev commit-spell\n```\n\n\u003cdetails\u003e\u003csummary\u003e[additional details]\u003c/summary\u003e\n\n\u003e Note: **you probably don't need to read through this!** This information is\n\u003e primarily useful for those attempting to bundle this package or for people who\n\u003e have an opinion on ESM versus CJS.\n\nThis is a [dual CJS2/ES module][dual-module] package. That means this package\nexposes both CJS2 and ESM entry points.\n\nLoading this package via `require(...)` will cause Node and Webpack to use the\n[CJS2 bundle][cjs2] entry point, disable [tree shaking][tree-shaking] in Webpack\n4, and lead to larger bundles in Webpack 5. Alternatively, loading this package\nvia `import { ... } from ...` or `import(...)` will cause Node to use the ESM\nentry point in [versions that support it][node-esm-support], as will Webpack.\nUsing the `import` syntax is the modern, preferred choice.\n\nFor backwards compatibility with Webpack 4 (_compat with Webpack 4 is not\nguaranteed!_) and Node versions \u003c 14, [`package.json`][package-json] retains the\n[`module`][module-key] key, which points to the ESM entry point, and the\n[`main`][exports-main-key] key, which points to the CJS2 entry point explicitly\n(using the .js file extension). For Webpack 5 and Node versions \u003e= 14,\n[`package.json`][package-json] includes the [`exports`][exports-main-key] key,\nwhich points to both entry points explicitly.\n\nThough [`package.json`][package-json] includes\n[`{ \"type\": \"commonjs\"}`][local-pkg], note that the ESM entry points are ES\nmodule (`.mjs`) files. [`package.json`][package-json] also includes the\n[`sideEffects`][side-effects-key] key, which is `false` for [optimal tree\nshaking][tree-shaking], and the `types` key, which points to a TypeScript\ndeclarations file.\n\nAdditionally, this package does not maintain shared state and so does not\nexhibit the [dual package hazard][hazard].\n\n\u003c/details\u003e\n\n## Usage\n\n\u003e [`git`][4] is required to run `commit-spell`.\n\n`commit-spell` can be run by hand—where the current working directory is the\nroot of your repository—or as part of a [commit-msg git hook][5]:\n\n```bash\nnpx commit-spell\n```\n\nWhen run, it looks for a `\u003ccurrent working directory\u003e/.git/COMMIT_EDITMSG` file\nand checks its (utf-8) contents for spelling errors. In addition to the\nplatform-specific spellchecker and words in the [text-extensions][6] dictionary,\na word can be whitelisted by adding it to one of the following:\n\n- `\u003ccurrent working directory\u003e/.spellcheckignore` or\n  `\u003cuser home directory\u003e/.config/_spellcheckignore` on a new line\n- `\u003ccurrent working directory\u003e/package.json` as a key under _dependencies_,\n  _devDependencies_, _peerDependencies_, or _scripts_\n- `\u003ccurrent working directory\u003e/.vscode/settings.json` or\n  `\u003cuser home directory\u003e/.config/Code/User/settings.json` as an element of\n  _cSpell.words_, _cSpell.userWords_, or _cSpell.ignoreWords_\n- Any word appearing in the output of `git log --format=\"%B\" HEAD~1`\n\nAdditionally, you can use `--help` to get help text output, `--version` to get\nthe current version, `--silent` to prevent all output, and `--show-all` to show\nall potential typos.\n\n### Example\n\nThis repository [uses itself to spellcheck its own commits][7] via [husky][8].\n\n### Importing as a Module\n\nThis package can be imported and run directly in source without spawning a child\nprocess or calling a CLI. This is useful for, for instance, composing multiple\n[yargs][1]-based CLI tools together.\n\n```typescript\nimport { configureProgram } from 'commit-spell';\n\nconst { program, parse } = configureProgram();\n// `program` is a yargs instance\n// `parse` is an async function that will (eventually) call program.parse(...)\nawait parse([]);\n```\n\n## Documentation\n\nFurther documentation can be found under [`docs/`][docs].\n\n### License\n\n[![FOSSA analysis][badge-fossa]][link-fossa]\n\n## Contributing and Support\n\n**[New issues][choose-new-issue] and [pull requests][pr-compare] are always\nwelcome and greatly appreciated! 🤩** Just as well, you can [star 🌟 this\nproject][link-repo] to let me know you found it useful! ✊🏿 Thank you!\n\nSee [CONTRIBUTING.md][contributing] and [SUPPORT.md][support] for more\ninformation.\n\n[badge-blm]: https://xunn.at/badge-blm 'Join the movement!'\n[link-blm]: https://xunn.at/donate-blm\n[badge-maintenance]:\n  https://img.shields.io/maintenance/active/2023\n  'Is this package maintained?'\n[link-repo]: https://github.com/xunnamius/commit-spell\n[badge-last-commit]:\n  https://img.shields.io/github/last-commit/xunnamius/commit-spell\n  'When was the last commit to the official repo?'\n[badge-issues]:\n  https://img.shields.io/github/issues/Xunnamius/commit-spell\n  'Open issues'\n[link-issues]: https://github.com/Xunnamius/commit-spell/issues?q=\n[badge-pulls]:\n  https://img.shields.io/github/issues-pr/xunnamius/commit-spell\n  'Number of open pull requests'\n[link-pulls]: https://github.com/xunnamius/commit-spell/pulls\n[badge-codecov]:\n  https://codecov.io/gh/Xunnamius/commit-spell/branch/main/graph/badge.svg?token=HWRIOBAAPW\n  'Is this package well-tested?'\n[link-codecov]: https://codecov.io/gh/Xunnamius/commit-spell\n[badge-size]: https://badgen.net/bundlephobia/minzip/commit-spell\n[badge-tree-shaking]:\n  https://badgen.net/bundlephobia/tree-shaking/commit-spell\n  'Is this package optimized for Webpack?'\n[link-bundlephobia]:\n  https://bundlephobia.com/result?p=commit-spell\n  'Package size (minified and gzipped)'\n[package-json]: package.json\n[badge-license]:\n  https://img.shields.io/npm/l/commit-spell\n  \"This package's source license\"\n[link-license]: https://github.com/Xunnamius/commit-spell/blob/main/LICENSE\n[badge-fossa]:\n  https://app.fossa.com/api/projects/git%2Bgithub.com%2FXunnamius%2Fcommit-spell.svg?type=large\n  \"Analysis of this package's license obligations\"\n[link-fossa]:\n  https://app.fossa.com/projects/git%2Bgithub.com%2FXunnamius%2Fcommit-spell\n[badge-npm]:\n  https://api.ergodark.com/badges/npm-pkg-version/commit-spell\n  'Install this package using npm or yarn!'\n[link-npm]: https://www.npmjs.com/package/commit-spell\n[badge-semantic-release]:\n  https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n  'This repo practices continuous integration and deployment!'\n[link-semantic-release]: https://github.com/semantic-release/semantic-release\n[docs]: docs\n[choose-new-issue]: https://github.com/Xunnamius/commit-spell/issues/new/choose\n[pr-compare]: https://github.com/Xunnamius/commit-spell/compare\n[contributing]: CONTRIBUTING.md\n[support]: .github/SUPPORT.md\n[cjs2]: https://webpack.js.org/configuration/output/#module-definition-systems\n[dual-module]:\n  https://github.com/nodejs/node/blob/8d8e06a345043bec787e904edc9a2f5c5e9c275f/doc/api/packages.md#dual-commonjses-module-packages\n[exports-main-key]:\n  https://github.com/nodejs/node/blob/8d8e06a345043bec787e904edc9a2f5c5e9c275f/doc/api/packages.md#package-entry-points\n[hazard]:\n  https://github.com/nodejs/node/blob/8d8e06a345043bec787e904edc9a2f5c5e9c275f/doc/api/packages.md#dual-package-hazard\n[local-pkg]:\n  https://github.com/nodejs/node/blob/8d8e06a345043bec787e904edc9a2f5c5e9c275f/doc/api/packages.md#type\n[module-key]: https://webpack.js.org/guides/author-libraries/#final-steps\n[node-esm-support]:\n  https://medium.com/%40nodejs/node-js-version-14-available-now-8170d384567e#2368\n[side-effects-key]:\n  https://webpack.js.org/guides/tree-shaking/#mark-the-file-as-side-effect-free\n[tree-shaking]: https://webpack.js.org/guides/tree-shaking\n[1]: https://github.com/yargs/yargs\n[2]: https://www.npmjs.com/package/spellchecker\n[3]:\n  https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker\n[4]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git\n[5]:\n  https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks#_committing_workflow_hooks\n[6]: https://www.npmjs.com/package/text-extensions\n[7]: ./.husky/commit-msg\n[8]: https://www.npmjs.com/package/husky\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxunnamius%2Fcommit-spell","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxunnamius%2Fcommit-spell","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxunnamius%2Fcommit-spell/lists"}