{"id":13493730,"url":"https://github.com/DavidAnson/markdownlint-cli2","last_synced_at":"2025-03-28T12:32:14.097Z","repository":{"id":38247938,"uuid":"276810550","full_name":"DavidAnson/markdownlint-cli2","owner":"DavidAnson","description":"A fast, flexible, configuration-based command-line interface for linting Markdown/CommonMark files with the markdownlint library","archived":false,"fork":false,"pushed_at":"2025-03-19T05:17:41.000Z","size":2901,"stargazers_count":438,"open_issues_count":5,"forks_count":54,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-03-22T02:02:44.531Z","etag":null,"topics":["commonmark","lint","markdown","nodejs"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/DavidAnson.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"DavidAnson"}},"created_at":"2020-07-03T04:54:15.000Z","updated_at":"2025-03-21T07:13:54.000Z","dependencies_parsed_at":"2024-01-04T18:27:31.252Z","dependency_job_id":"8bc0d84b-a6c0-4a1c-bc88-8309c8ac9646","html_url":"https://github.com/DavidAnson/markdownlint-cli2","commit_stats":{"total_commits":801,"total_committers":16,"mean_commits":50.0625,"dds":0.3757802746566792,"last_synced_commit":"5e920a94ae1997fdd4efb48dfb4b36b950b24903"},"previous_names":[],"tags_count":41,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DavidAnson%2Fmarkdownlint-cli2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DavidAnson%2Fmarkdownlint-cli2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DavidAnson%2Fmarkdownlint-cli2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DavidAnson%2Fmarkdownlint-cli2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DavidAnson","download_url":"https://codeload.github.com/DavidAnson/markdownlint-cli2/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245104460,"owners_count":20561377,"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":["commonmark","lint","markdown","nodejs"],"created_at":"2024-07-31T19:01:18.253Z","updated_at":"2025-03-28T12:32:14.090Z","avatar_url":"https://github.com/DavidAnson.png","language":"JavaScript","funding_links":["https://github.com/sponsors/DavidAnson"],"categories":["Catalog","JavaScript","Coding","Documentation"],"sub_categories":["docs","Linters"],"readme":"# markdownlint-cli2\n\n\u003e A fast, flexible, configuration-based command-line interface for linting\n\u003e Markdown/CommonMark files with the `markdownlint` library\n\n[![npm version][npm-image]][npm-url]\n[![License][license-image]][license-url]\n\n## Install\n\nAs a global CLI:\n\n```bash\nnpm install markdownlint-cli2 --global\n```\n\nAs a development dependency of the current [Node.js][nodejs] package:\n\n```bash\nnpm install markdownlint-cli2 --save-dev\n```\n\nAs a [Docker][docker] container image:\n\n```bash\ndocker pull davidanson/markdownlint-cli2\n```\n\nAs a global CLI with [Homebrew][homebrew]:\n\n```bash\nbrew install markdownlint-cli2\n```\n\nAs a [GitHub Action][github-action] via\n[`markdownlint-cli2-action`][markdownlint-cli2-action]:\n\n```yaml\n- name: markdownlint-cli2-action\n  uses: DavidAnson/markdownlint-cli2-action@v9\n```\n\n## Overview\n\n- [`markdownlint`][markdownlint] is a library for linting [Markdown][markdown]/\n  [CommonMark][commonmark] files on [Node.js][nodejs] using the\n  [markdown-it][markdown-it] parser.\n- [`markdownlint-cli`][markdownlint-cli] is a traditional command-line interface\n  for `markdownlint`.\n- [`markdownlint-cli2`][markdownlint-cli2] is a slightly unconventional\n  command-line interface for `markdownlint`.\n- `markdownlint-cli2` is configuration-based and prioritizes speed and\n  simplicity.\n- `markdownlint-cli2` supports all the features of `markdownlint-cli` (sometimes\n  a little differently).\n- [`vscode-markdownlint`][vscode-markdownlint] is a `markdownlint` extension for\n  the [Visual Studio Code editor][vscode].\n- `markdownlint-cli2` is designed to work well in conjunction with\n  `vscode-markdownlint`.\n- More about the [motivation for `markdownlint-cli2`][markdownlint-cli2-blog].\n\n## Use\n\n### Command Line\n\n```text\nmarkdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)\nhttps://github.com/DavidAnson/markdownlint-cli2\n\nSyntax: markdownlint-cli2 glob0 [glob1] [...] [globN] [--config file] [--fix] [--help]\n\nGlob expressions (from the globby library):\n- * matches any number of characters, but not /\n- ? matches a single character, but not /\n- ** matches any number of characters, including /\n- {} allows for a comma-separated list of \"or\" expressions\n- ! or # at the beginning of a pattern negate the match\n- : at the beginning identifies a literal file path\n- - as a glob represents standard input (stdin)\n\nDot-only glob:\n- The command \"markdownlint-cli2 .\" would lint every file in the current directory tree which is probably not intended\n- Instead, it is mapped to \"markdownlint-cli2 *.{md,markdown}\" which lints all Markdown files in the current directory\n- To lint every file in the current directory tree, the command \"markdownlint-cli2 **\" can be used instead\n\nOptional parameters:\n- --config    specifies the path to a configuration file to define the base configuration\n- --fix       updates files to resolve fixable issues (can be overridden in configuration)\n- --help      writes this message to the console and exits without doing anything else\n- --no-globs  ignores the \"globs\" property if present in the top-level options object\n\nConfiguration via:\n- .markdownlint-cli2.jsonc\n- .markdownlint-cli2.yaml\n- .markdownlint-cli2.cjs or .markdownlint-cli2.mjs\n- .markdownlint.jsonc or .markdownlint.json\n- .markdownlint.yaml or .markdownlint.yml\n- .markdownlint.cjs or .markdownlint.mjs\n- package.json\n\nCross-platform compatibility:\n- UNIX and Windows shells expand globs according to different rules; quoting arguments is recommended\n- Some Windows shells don't handle single-quoted (') arguments well; double-quote (\") is recommended\n- Shells that expand globs do not support negated patterns (!node_modules); quoting is required here\n- Some UNIX shells parse exclamation (!) in double-quotes; hashtag (#) is recommended in these cases\n- The path separator is forward slash (/) on all platforms; backslash (\\) is automatically converted\n- On any platform, passing the parameter \"--\" causes all remaining parameters to be treated literally\n\nThe most compatible syntax for cross-platform support:\n$ markdownlint-cli2 \"**/*.md\" \"#node_modules\"\n```\n\nFor scenarios where it is preferable to specify glob expressions in a\nconfiguration file, the `globs` property of `.markdownlint-cli2.jsonc`, `.yaml`,\n`.cjs`, or `.mjs` may be used instead of (or in addition to) passing\n`glob0 ... globN` on the command-line.\n\nAs shown above, a typical command-line for `markdownlint-cli2` looks something\nlike:\n\n```bash\nmarkdownlint-cli2 \"**/*.md\" \"#node_modules\"\n```\n\nBecause sharing the same configuration between \"normal\" and \"fix\" modes is\ncommon, the `--fix` argument can be used to default the `fix` property (see\nbelow) to `true` (though it can still be overridden by a configuration file):\n\n```bash\nmarkdownlint-cli2 --fix \"**/*.md\" \"#node_modules\"\n```\n\nIn cases where it is not convenient to store a configuration file in the root\nof a project, the `--config` argument can be used to provide a path to any\nsupported configuration file (except `package.json`):\n\n```bash\nmarkdownlint-cli2 --config \"config/.markdownlint-cli2.jsonc\" \"**/*.md\" \"#node_modules\"\n```\n\nThe configuration file name must be (or end with) one of the supported names\nabove. For example, `.markdownlint.json` or `example.markdownlint-cli2.jsonc`.\nThe specified configuration file will be loaded, parsed, and applied as a base\nconfiguration for the current directory - which will then be handled normally.\n\n### Container Image\n\nA container image [`davidanson/markdownlint-cli2`][docker-hub-markdownlint-cli2]\ncan also be used (e.g., as part of a CI pipeline):\n\n```bash\ndocker run -v $PWD:/workdir davidanson/markdownlint-cli2:v0.17.2 \"**/*.md\" \"#node_modules\"\n```\n\nNotes:\n\n- As when using the [command line][command-line], glob patterns are passed as\n  arguments.\n- This image is built on the official [Node.js Docker image][nodejs-docker].\n  Per security best practices, the [default user `node`][nodejs-docker-non-root]\n  runs with restricted permissions. If it is necessary to run as `root`, pass\n  the `-u root` option when invoking `docker`.\n- By default, `markdownlint-cli2` will execute within the `/workdir` directory\n  *inside the container*. So, as shown above, [bind mount][docker-bind-mounts]\n  the project's directory there.\n  - A custom working directory can be specified with Docker's `-w` flag:\n\n    ```bash\n    docker run -w /myfolder -v $PWD:/myfolder davidanson/markdownlint-cli2:v0.17.2 \"**/*.md\" \"#node_modules\"\n    ```\n\nFor convenience, the container image\n[`davidanson/markdownlint-cli2-rules`][docker-hub-markdownlint-cli2-rules]\nincludes the latest versions of custom rules published to npm with the tag\n[`markdownlint-rule`][markdownlint-rule]. These rules are installed globally\nonto the base image `davidanson/markdownlint-cli2`.\n\n**Note**: This container image exists for convenience and is not an endorsement\nof the rules within.\n\n### Exit Codes\n\n- `0`: Linting was successful and there were no errors\n- `1`: Linting was successful and there were errors\n- `2`: Linting was not completed due to a runtime issue\n\n## Rule List\n\n- See the [Rules / Aliases][markdownlint-rules-aliases] and\n  [Tags][markdownlint-rules-tags] sections of the `markdownlint` documentation.\n\n## Glob expressions\n\n- Globbing is performed by the [globby][globby] library; refer to that\n  documentation for more information and examples.\n\n## Configuration\n\n- See the [Configuration][markdownlint-configuration] section of the\n  `markdownlint` documentation for information about the inline comment syntax\n  for enabling and disabling rules with HTML comments.\n- In general, glob expressions should match files under the current directory;\n  the configuration for that directory will apply to the entire tree.\n  - When glob expressions match files *not* under the current directory,\n    configuration for the current directory is applied to the closest common\n    parent directory.\n- Paths beginning with `~` are resolved relative to the user's home directory\n  (typically `$HOME` on UNIX and `%USERPROFILE%` on Windows)\n- There are two kinds of configuration file (both detailed below):\n  - Configuration files like `.markdownlint-cli2.*` allow complete control of\n    `markdownlint-cli2` behavior and are also used by `vscode-markdownlint`.\n    - If multiple of these files are present in the same directory, only one is\n      used according to the following precedence:\n      1. `.markdownlint-cli2.jsonc`\n      2. `.markdownlint-cli2.yaml`\n      3. `.markdownlint-cli2.cjs`\n      4. `.markdownlint-cli2.mjs`\n      5. `package.json` (only supported in the current directory)\n  - Configuration files like `.markdownlint.*` allow control over only the\n    `markdownlint` `config` object and tend to be supported more broadly (such\n    as by `markdownlint-cli`).\n    - If multiple of these files are present in the same directory, only one is\n      used according to the following precedence:\n      1. `.markdownlint.jsonc`\n      2. `.markdownlint.json`\n      3. `.markdownlint.yaml`\n      4. `.markdownlint.yml`\n      5. `.markdownlint.cjs`\n      6. `.markdownlint.mjs`\n- The VS Code extension includes a [JSON Schema][json-schema] definition for the\n  `JSON(C)` configuration files described below. This adds auto-complete and can\n  make it easier to define proper structure.\n- See [markdownlint-cli2-config-schema.json][markdownlint-cli2-config-schema]\n  for that schema and [ValidatingConfiguration.md][validating-configuration] for\n  ways to use it to validate configuration files.\n\n### `.markdownlint-cli2.jsonc`\n\n- The format of this file is a [JSONC][jsonc] object similar to the\n  [`markdownlint` `options` object][markdownlint-options].\n- Valid properties are:\n  - `config`: [`markdownlint` `config` object][markdownlint-config] to configure\n    rules for this part of the directory tree\n    - If a `.markdownlint.{jsonc,json,yaml,yml,js}` file (see below) is present\n      in the same directory, it overrides the value of this property\n    - If the `config` object contains an `extends` property, it will be resolved\n      the same as `.markdownlint.{jsonc,json,yaml,yml,js}` (see below)\n  - `customRules`: `Array` of `String`s (or `Array`s of `String`s) of module\n    names/paths of [custom rules][markdownlint-custom-rules] to load and use\n    when linting\n    - Relative paths are resolved based on the location of the `JSONC` file\n    - Search [`markdownlint-rule` on npm][markdownlint-rule]\n  - `fix`: `Boolean` value to enable fixing of linting errors reported by rules\n    that emit fix information\n    - Fixes are made directly to the relevant file(s); no backup is created\n  - `frontMatter`: `String` defining the [`RegExp`][regexp] used to match and\n    ignore any [front matter][front-matter] at the beginning of a document\n    - The `String` is passed as the `pattern` parameter to the\n      [`RegExp` constructor][regexp-constructor]\n    - For example: `(^---\\s*$[^]*?^---\\s*$)(\\r\\n|\\r|\\n|$)`\n  - `gitignore`: `Boolean` or `String` value to automatically ignore files\n    referenced by `.gitignore` (or similar) when linting\n    - When the value `true` is specified, all `.gitignore` files in the tree are\n      imported (default `git` behavior)\n    - When a `String` value is specified, that glob pattern is used to identify\n      the set of ignore files to import\n      - The value `**/.gitignore` corresponds to the `Boolean` value `true`\n      - The value `.gitignore` imports only the file in the root of the tree;\n        this is usually equivalent and can be much faster for large trees\n    - This top-level setting is valid **only** in the directory from which\n      `markdownlint-cli2` is run\n  - `globs`: `Array` of `String`s defining glob expressions to append to the\n    command-line arguments\n    - This setting can be used instead of (or in addition to) passing globs on\n      the command-line and offers identical performance\n    - This setting is ignored when the `--no-globs` parameter is passed on the\n      command-line\n    - This top-level setting is valid **only** in the directory from which\n      `markdownlint-cli2` is run\n  - `ignores`: `Array` of `String`s defining glob expressions to ignore when\n    linting\n    - This setting has the best performance when applied to the directory from\n      which `markdownlint-cli2` is run\n      - In this case, glob expressions are negated (by adding a leading `!`) and\n        appended to the command-line arguments before file enumeration\n      - The setting is not inherited by nested configuration files in this case\n    - When this setting is applied in subdirectories, ignoring of files is done\n      after file enumeration, so large directories can negatively impact\n      performance\n      - Nested configuration files inherit and reapply the setting to the\n        contents of nested directories in this case\n  - `markdownItPlugins`: `Array` of `Array`s, each of which has a `String`\n    naming a [markdown-it plugin][markdown-it-syntax-extensions] followed by\n    parameters\n    - Plugins can be used to add support for additional Markdown syntax\n    - Relative paths are resolved based on the location of the `JSONC` file\n    - For example: `[ [ \"plugin-name\", param_0, param_1, ... ], ... ]`\n    - Search [`markdown-it-plugins` on npm][markdown-it-plugins]\n  - `modulePaths`: `Array` of `String`s providing additional paths to use when\n    resolving module references (e.g., alternate locations for `node_modules`)\n  - `noBanner`: `Boolean` value to disable the display of the banner message and\n    version numbers on `stdout`\n    - This top-level setting is valid **only** in the directory from which\n      `markdownlint-cli2` is run\n  - `noInlineConfig`: `Boolean` value to disable the support of\n    [HTML comments][html-comment] within Markdown content\n    - For example: `\u003c!-- markdownlint-disable some-rule --\u003e`\n  - `noProgress`: `Boolean` value to disable the display of progress on `stdout`\n    - This top-level setting is valid **only** in the directory from which\n      `markdownlint-cli2` is run\n  - `outputFormatters`: `Array` of `Array`s, each of which has a `String`\n    naming an [output formatter][output-formatters] followed by parameters\n    - Formatters can be used to customize the tool's output for different\n      scenarios\n    - Relative paths are resolved based on the location of the `JSONC` file\n    - For example: `[ [ \"formatter-name\", param_0, param_1, ... ], ... ]`\n    - This top-level setting is valid **only** in the directory from which\n      `markdownlint-cli2` is run\n    - Search [`markdownlint-cli2-formatter` on npm][markdownlint-cli2-formatter]\n  - `showFound`: `Boolean` value to display the list of found files on `stdout`\n    - This top-level setting is valid **only** in the directory from which\n      `markdownlint-cli2` is run and **only** when `noProgress` has not been set\n- When referencing a module via the `customRules`, `markdownItPlugins`, or\n  `outputFormatters` properties, each `String` identifier is passed to Node's\n  [`require` function][nodejs-require] then (if that failed) its\n  [`import` expression][nodejs-import-expression]\n  - Importing a locally-installed module using a bare specifier (ex:\n    `package-name`) or using a directory name (ex: `./package-dir`) will not\n    work until [`import.meta.resolve`][nodejs-import-meta-resolve] is available\n- Settings in this file apply to the directory it is in and all subdirectories.\n- Settings **merge with** those applied by any versions of this file in a parent\n  directory (up to the current directory).\n- For example: [`.markdownlint-cli2.jsonc`][markdownlint-cli2-jsonc] with all\n  properties set\n\n### `.markdownlint-cli2.yaml`\n\n- The format of this file is a [YAML][yaml] object with the structure described\n  above for `.markdownlint-cli2.jsonc`.\n- Other details are the same as for `.markdownlint-cli2.jsonc` described above.\n- For example: [`.markdownlint-cli2.yaml`][markdownlint-cli2-yaml] with all\n  properties set\n\n### `.markdownlint-cli2.cjs` or `.markdownlint-cli2.mjs`\n\n- The format of this file is a [CommonJS module][commonjs-module] (`.cjs`) or\n  [ECMAScript module][ecmascript-module] (`.mjs`) that exports the object\n  described above for `.markdownlint-cli2.jsonc` (directly or from a `Promise`).\n- Instead of passing a `String` to identify the module name/path to load for\n  `customRules`, `markdownItPlugins`, and `outputFormatters`, the corresponding\n  `Object` or `Function` can be provided directly.\n- Other details are the same as for `.markdownlint-cli2.jsonc` described above.\n- For example: [`.markdownlint-cli2.cjs`][markdownlint-cli2-cjs] or\n  [`.markdownlint-cli2.mjs`][markdownlint-cli2-mjs]\n\n### `package.json`\n\n- The format of this file is a standard [npm `package.json`][package-json] file\n  including a `markdownlint-cli2` property at the root and a value corresponding\n  to the object described above for `.markdownlint-cli2.jsonc`.\n- `package.json` is only supported in the current directory.\n- `package.json` is not supported by the `--config` argument.\n- For example: [`package-json-sample`][package-json-sample]\n\n### `.markdownlint.jsonc` or `.markdownlint.json`\n\n- The format of this file is a [JSONC][jsonc] or [JSON][json] object matching\n  the [`markdownlint` `config` object][markdownlint-config].\n- Settings in this file apply to the directory it is in and all subdirectories\n- Settings **override** those applied by any versions of this file in a parent\n  directory (up to the current directory).\n- To merge the settings of these files or share configuration, use the `extends`\n  property (documented in the link above).\n- Both file types support comments in JSON.\n- For example: [`.markdownlint.jsonc`][markdownlint-jsonc]\n\n### `.markdownlint.yaml` or `.markdownlint.yml`\n\n- The format of this file is a [YAML][yaml] object representing the\n  [`markdownlint` `config` object][markdownlint-config].\n- Other details are the same as for `jsonc`/`json` files described above.\n- For example: [`.markdownlint.yaml`][markdownlint-yaml]\n\n### `.markdownlint.cjs` or `.markdownlint.mjs`\n\n- The format of this file is a [CommonJS module][commonjs-module] (`.cjs`) or\n  [ECMAScript module][ecmascript-module] (`.mjs`) that exports the\n  [`markdownlint` `config` object][markdownlint-config] (directly or from a\n  `Promise`).\n- Other details are the same as for `jsonc`/`json` files described above.\n- For example: [`.markdownlint.cjs`][markdownlint-cjs] or\n  [`.markdownlint.mjs`][markdownlint-mjs]\n\n## Compatibility\n\n### `markdownlint-cli`\n\n- The glob implementation and handling of pattern matching is slightly\n  different.\n- Configuration files are supported in every directory (vs. only one at the\n  root).\n- The `INI` config format, `.markdownlintrc`, and `.markdownlintignore` are not\n  supported.\n\n### `vscode-markdownlint`\n\n- `.markdownlintignore` is not supported.\n\n## pre-commit\n\nTo run `markdownlint-cli2` as part of a [pre-commit][pre-commit] workflow, add a\nreference to the `repos` list in that project's `.pre-commit-config.yaml` like:\n\n```yaml\n- repo: https://github.com/DavidAnson/markdownlint-cli2\n  rev: v0.17.2\n  hooks:\n  - id: markdownlint-cli2\n```\n\n\u003e Depending on the environment that workflow runs in, it may be necessary to\n\u003e [override the version of Node.js used by pre-commit][pre-commit-version].\n\n## History\n\nSee [CHANGELOG.md][changelog].\n\n[changelog]: CHANGELOG.md\n[command-line]: #command-line\n[commonmark]: https://commonmark.org/\n[commonjs-module]: https://nodejs.org/api/modules.html#modules_modules_commonjs_modules\n[ecmascript-module]: https://nodejs.org/api/esm.html#modules-ecmascript-modules\n[docker]: https://www.docker.com\n[docker-bind-mounts]: https://docs.docker.com/storage/bind-mounts/\n[docker-hub-markdownlint-cli2]: https://hub.docker.com/r/davidanson/markdownlint-cli2\n[docker-hub-markdownlint-cli2-rules]: https://hub.docker.com/r/davidanson/markdownlint-cli2-rules\n[front-matter]: https://jekyllrb.com/docs/frontmatter/\n[github-action]: https://docs.github.com/actions\n[globby]: https://www.npmjs.com/package/globby\n[homebrew]: https://brew.sh\n[html-comment]: https://developer.mozilla.org/en-US/docs/Learn/HTML/Introduction_to_HTML/Getting_started\n[json]: https://wikipedia.org/wiki/JSON\n[json-schema]: https://json-schema.org\n[jsonc]: https://code.visualstudio.com/Docs/languages/json#_json-with-comments\n[license-image]: https://img.shields.io/npm/l/markdownlint-cli2.svg\n[license-url]: https://opensource.org/licenses/MIT\n[markdown]: https://wikipedia.org/wiki/Markdown\n[markdown-it]: https://www.npmjs.com/package/markdown-it\n[markdown-it-plugins]: https://www.npmjs.com/search?q=keywords:markdown-it-plugin\n[markdown-it-syntax-extensions]: https://github.com/markdown-it/markdown-it#syntax-extensions\n[markdownlint]: https://github.com/DavidAnson/markdownlint\n[markdownlint-config]: https://github.com/DavidAnson/markdownlint/blob/v0.32.1/README.md#optionsconfig\n[markdownlint-configuration]: https://github.com/DavidAnson/markdownlint/blob/v0.32.1/README.md#configuration\n[markdownlint-custom-rules]: https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/CustomRules.md\n[markdownlint-options]: https://github.com/DavidAnson/markdownlint/blob/v0.32.1/README.md#options\n[markdownlint-rules-aliases]: https://github.com/DavidAnson/markdownlint/blob/v0.32.1/README.md#rules--aliases\n[markdownlint-rules-tags]: https://github.com/DavidAnson/markdownlint/blob/v0.32.1/README.md#tags\n[markdownlint-cli]: https://github.com/igorshubovych/markdownlint-cli\n[markdownlint-cli2]: https://github.com/DavidAnson/markdownlint-cli2\n[markdownlint-cli2-action]: https://github.com/marketplace/actions/markdownlint-cli2-action\n[markdownlint-cli2-blog]: https://dlaa.me/blog/post/markdownlintcli2\n[markdownlint-cli2-cjs]: test/markdownlint-cli2-cjs/.markdownlint-cli2.cjs\n[markdownlint-cli2-config-schema]: schema/markdownlint-cli2-config-schema.json\n[markdownlint-cli2-formatter]: https://www.npmjs.com/search?q=keywords:markdownlint-cli2-formatter\n[markdownlint-cli2-jsonc]: test/markdownlint-cli2-jsonc-example/.markdownlint-cli2.jsonc\n[markdownlint-cli2-mjs]: test/markdownlint-cli2-mjs/.markdownlint-cli2.mjs\n[markdownlint-cli2-yaml]: test/markdownlint-cli2-yaml-example/.markdownlint-cli2.yaml\n[markdownlint-cjs]: test/markdownlint-cjs/.markdownlint.cjs\n[markdownlint-jsonc]: https://github.com/DavidAnson/markdownlint/blob/v0.32.1/schema/.markdownlint.jsonc\n[markdownlint-mjs]: test/markdownlint-mjs/.markdownlint.mjs\n[markdownlint-rule]: https://www.npmjs.com/search?q=keywords:markdownlint-rule\n[markdownlint-yaml]: https://github.com/DavidAnson/markdownlint/blob/v0.32.1/schema/.markdownlint.yaml\n[nodejs]: https://nodejs.org/\n[nodejs-docker]: https://github.com/nodejs/docker-node\n[nodejs-docker-non-root]: https://github.com/nodejs/docker-node/blob/main/docs/BestPractices.md#non-root-user\n[nodejs-import-expression]: https://nodejs.org/api/esm.html#import-expressions\n[nodejs-import-meta-resolve]: https://nodejs.org/api/esm.html#importmetaresolvespecifier-parent\n[nodejs-require]: https://nodejs.org/api/modules.html#modules_require_id\n[npm-image]: https://img.shields.io/npm/v/markdownlint-cli2.svg\n[npm-url]: https://www.npmjs.com/package/markdownlint-cli2\n[output-formatters]: doc/OutputFormatters.md\n[package-json]: https://docs.npmjs.com/cli/v9/configuring-npm/package-json\n[package-json-sample]: test/package-json/package.json\n[pre-commit]: https://pre-commit.com/\n[pre-commit-version]: https://pre-commit.com/#overriding-language-version\n[regexp]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp\n[regexp-constructor]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/RegExp\n[validating-configuration]: schema/ValidatingConfiguration.md\n[vscode]: https://code.visualstudio.com/\n[vscode-markdownlint]: https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint\n[yaml]: https://wikipedia.org/wiki/YAML\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDavidAnson%2Fmarkdownlint-cli2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDavidAnson%2Fmarkdownlint-cli2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDavidAnson%2Fmarkdownlint-cli2/lists"}