{"owner":"DavidAnson","repo":"markdownlint","hasSkills":true,"totalSkillsCount":4,"totalTokensCount":12564,"categories":["anthropic-skill","root-instruction"],"hasMcp":false,"mcpConfig":null,"found":["test/rules/npm/package.json","test/rules/node_modules/markdownlint-rule-sample-commonjs/package.json","test/rules/node_modules/markdownlint-rule-sample-module/package.json","doc/Rules.md"],"skills":{"test/rules/npm/package.json":"{\n  \"name\": \"markdownlint-rule-sample\",\n  \"version\": \"0.0.1\",\n  \"description\": \"Package for markdownlint custom rule sample\",\n  \"type\": \"commonjs\",\n  \"main\": \"./sample-rule.js\",\n  \"author\": \"David Anson (https://dlaa.me/)\",\n  \"homepage\": \"https://github.com/DavidAnson/markdownlint\",\n  \"license\": \"MIT\",\n  \"keywords\": [\n    \"markdownlint-rule\"\n  ],\n  \"private\": true\n}\n","test/rules/node_modules/markdownlint-rule-sample-commonjs/package.json":"{\n  \"name\": \"markdownlint-rule-sample-commonjs\",\n  \"version\": \"0.0.1\",\n  \"description\": \"Package for markdownlint custom rule sample (commonjs)\",\n  \"main\": \"sample-rule.cjs\",\n  \"type\": \"commonjs\",\n  \"author\": \"David Anson (https://dlaa.me/)\",\n  \"homepage\": \"https://github.com/DavidAnson/markdownlint\",\n  \"license\": \"MIT\",\n  \"keywords\": [\n    \"markdownlint-rule\"\n  ],\n  \"private\": true\n}\n","test/rules/node_modules/markdownlint-rule-sample-module/package.json":"{\n  \"name\": \"markdownlint-rule-sample-module\",\n  \"version\": \"0.0.1\",\n  \"description\": \"Package for markdownlint custom rule sample (module)\",\n  \"main\": \"sample-rule.mjs\",\n  \"type\": \"module\",\n  \"author\": \"David Anson (https://dlaa.me/)\",\n  \"homepage\": \"https://github.com/DavidAnson/markdownlint\",\n  \"license\": \"MIT\",\n  \"keywords\": [\n    \"markdownlint-rule\"\n  ],\n  \"private\": true\n}\n","doc/Rules.md":"# Rules\n\nThis document contains a description of all rules, what they are checking for,\nas well as examples of documents that break the rule and corrected\nversions of the examples.\n\n<a name=\"md001\"></a>\n\n## `MD001` - Heading levels should only increment by one level at a time\n\nTags: `headings`\n\nAliases: `heading-increment`\n\nParameters:\n\n- `front_matter_title`: RegExp for matching title in front matter (`string`,\n  default `^\\s*title\\s*[:=]`)\n\nThis rule is triggered when you skip heading levels in a Markdown document, for\nexample:\n\n```markdown\n# Heading 1\n\n### Heading 3\n\nWe skipped out a 2nd level heading in this document\n```\n\nWhen using multiple heading levels, nested headings should increase by only one\nlevel at a time:\n\n```markdown\n# Heading 1\n\n## Heading 2\n\n### Heading 3\n\n#### Heading 4\n\n## Another Heading 2\n\n### Another Heading 3\n```\n\nIf [YAML](https://wikipedia.org/wiki/YAML) front matter is present and\ncontains a `title` property (commonly used with blog posts), this rule treats\nthat as a top level heading and will report a violation if the actual first\nheading is not a level 2 heading. To use a different property name in the\nfront matter, specify the text of a regular expression via the\n`front_matter_title` parameter. To disable the use of front matter by this\nrule, specify `\"\"` for `front_matter_title`. When front matter is not present,\nthe first heading can be any level.\n\nRationale: Headings represent the structure of a document and can be confusing\nwhen skipped - especially for accessibility scenarios. More information:\n<https://www.w3.org/WAI/tutorials/page-structure/headings/>.\n\n<a name=\"md003\"></a>\n\n## `MD003` - Heading style\n\nTags: `headings`\n\nAliases: `heading-style`\n\nParameters:\n\n- `style`: Heading style (`string`, default `consistent`, values `atx` /\n  `atx_closed` / `consistent` / `setext` / `setext_with_atx` /\n  `setext_with_atx_closed`)\n\nThis rule is triggered when different heading styles are used in the same\ndocument:\n\n```markdown\n# ATX style H1\n\n## Closed ATX style H2 ##\n\nSetext style H1\n===============\n```\n\nTo fix the issue, use consistent heading styles throughout the document:\n\n```markdown\n# ATX style H1\n\n## ATX style H2\n```\n\nThe `setext_with_atx` and `setext_with_atx_closed` settings allow ATX-style\nheadings of level 3 or more in documents with setext-style headings (which only\nsupport level 1 and 2 headings):\n\n```markdown\nSetext style H1\n===============\n\nSetext style H2\n---------------\n\n### ATX style H3\n```\n\nNote: The configured heading style can be a specific style to require (`atx`,\n`atx_closed`, `setext`, `setext_with_atx`, `setext_with_atx_closed`), or can\nrequire that all heading styles match the first heading style via `consistent`.\n\nNote: The placement of a horizontal rule directly below a line of text can\ntrigger this rule by turning that text into a level 2 setext-style heading:\n\n```markdown\nA line of text followed by a horizontal rule becomes a heading\n---\n```\n\nRationale: Consistent formatting makes it easier to understand a document.\n\n<a name=\"md004\"></a>\n\n## `MD004` - Unordered list style\n\nTags: `bullet`, `ul`\n\nAliases: `ul-style`\n\nParameters:\n\n- `style`: List style (`string`, default `consistent`, values `asterisk` /\n  `consistent` / `dash` / `plus` / `sublist`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when the symbols used in the document for unordered\nlist items do not match the configured unordered list style:\n\n```markdown\n* Item 1\n+ Item 2\n- Item 3\n```\n\nTo fix this issue, use the configured style for list items throughout the\ndocument:\n\n```markdown\n* Item 1\n* Item 2\n* Item 3\n```\n\nThe configured list style can ensure all list styling is a specific symbol\n(`asterisk`, `plus`, `dash`), ensure each sublist has a consistent symbol that\ndiffers from its parent list (`sublist`), or ensure all list styles match the\nfirst list style (`consistent`).\n\nFor example, the following is valid for the `sublist` style because the\nouter-most indent uses asterisk, the middle indent uses plus, and the inner-most\nindent uses dash:\n\n```markdown\n* Item 1\n  + Item 2\n    - Item 3\n  + Item 4\n* Item 4\n  + Item 5\n```\n\nRationale: Consistent formatting makes it easier to understand a document.\n\n<a name=\"md005\"></a>\n\n## `MD005` - Inconsistent indentation for list items at the same level\n\nTags: `bullet`, `indentation`, `ul`\n\nAliases: `list-indent`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when list items are parsed as being at the same level,\nbut don't have the same indentation:\n\n```markdown\n* Item 1\n  * Nested Item 1\n  * Nested Item 2\n   * A misaligned item\n```\n\nUsually, this rule will be triggered because of a typo. Correct the indentation\nfor the list to fix it:\n\n```markdown\n* Item 1\n  * Nested Item 1\n  * Nested Item 2\n  * Nested Item 3\n```\n\nSequentially-ordered list markers are usually left-aligned such that all items\nhave the same starting column:\n\n```markdown\n...\n8. Item\n9. Item\n10. Item\n11. Item\n...\n```\n\nThis rule also supports right-alignment of list markers such that all items have\nthe same ending column:\n\n```markdown\n...\n 8. Item\n 9. Item\n10. Item\n11. Item\n...\n```\n\nRationale: Violations of this rule can lead to improperly rendered content.\n\n<a name=\"md007\"></a>\n\n## `MD007` - Unordered list indentation\n\nTags: `bullet`, `indentation`, `ul`\n\nAliases: `ul-indent`\n\nParameters:\n\n- `indent`: Spaces for indent (`integer`, default `2`)\n- `start_indent`: Spaces for first level indent (when start_indented is set)\n  (`integer`, default `2`)\n- `start_indented`: Whether to indent the first level of the list (`boolean`,\n  default `false`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when list items are not indented by the configured\nnumber of spaces (default: 2).\n\nExample:\n\n```markdown\n* List item\n   * Nested list item indented by 3 spaces\n```\n\nCorrected Example:\n\n```markdown\n* List item\n  * Nested list item indented by 2 spaces\n```\n\nNote: This rule applies to a sublist only if its parent lists are all also\nunordered (otherwise, extra indentation of ordered lists interferes with the\nrule).\n\nThe `start_indented` parameter allows the first level of lists to be indented by\nthe configured number of spaces rather than starting at zero. The `start_indent`\nparameter allows the first level of lists to be indented by a different number\nof spaces than the rest (ignored when `start_indented` is not set).\n\nRationale: Indenting by 2 spaces allows the content of a nested list to be in\nline with the start of the content of the parent list when a single space is\nused after the list marker. Indenting by 4 spaces is consistent with code blocks\nand simpler for editors to implement. Additionally, this can be a compatibility\nissue for other Markdown parsers, which require 4-space indents. More\ninformation: [Markdown Style Guide][markdown-style-guide].\n\nNote: See [Prettier.md](Prettier.md) for compatibility information.\n\n[markdown-style-guide]: https://cirosantilli.com/markdown-style-guide#indentation-of-content-inside-lists\n\n<a name=\"md009\"></a>\n\n## `MD009` - Trailing spaces\n\nTags: `whitespace`\n\nAliases: `no-trailing-spaces`\n\nParameters:\n\n- `br_spaces`: Spaces for line break (`integer`, default `2`)\n- `code_blocks`: Include code blocks (`boolean`, default `false`)\n- `list_item_empty_lines`: Allow spaces for empty lines in list items\n  (`boolean`, default `false`)\n- `strict`: Include unnecessary breaks (`boolean`, default `false`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered on any lines that end with unexpected whitespace. To fix\nthis, remove the trailing space from the end of the line.\n\nThe `br_spaces` parameter allows an exception to this rule for a specific number\nof trailing spaces, typically used to insert an explicit line break. The default\nvalue allows 2 spaces to indicate a hard break (\\<br> element). (You must set\n`br_spaces` to a value >= 2 for this parameter to take effect. Setting\n`br_spaces` to 1 behaves the same as 0, disallowing any trailing spaces.)\n\nBy default, trailing space is allowed in indented and fenced code blocks because\nsome programming languages require that. To report such instances, set the\n`code_blocks` parameter to `true`.\n\nBy default, this rule will not trigger when the allowed number of spaces is\nused, even when it doesn't create a hard break (for example, at the end of a\nparagraph). To report such instances, set the `strict` parameter to `true`.\n\n```markdown\nText text text\ntext[2 spaces]\n```\n\nUsing spaces to indent blank lines inside a list item is usually not necessary,\nbut some parsers require it. Set the `list_item_empty_lines` parameter to `true`\nto allow this (even when `strict` is `true`):\n\n```markdown\n- list item text\n  [2 spaces]\n  list item text\n```\n\nRationale: Except when being used to create a line break, trailing whitespace\nhas no purpose and does not affect the rendering of content.\n\n<a name=\"md010\"></a>\n\n## `MD010` - Hard tabs\n\nTags: `hard_tab`, `whitespace`\n\nAliases: `no-hard-tabs`\n\nParameters:\n\n- `code_blocks`: Include code blocks (`boolean`, default `true`)\n- `ignore_code_languages`: Fenced code languages to ignore (`string[]`, default\n  `[]`)\n- `spaces_per_tab`: Number of spaces for each hard tab (`integer`, default `1`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered by any lines that contain hard tab characters instead\nof using spaces for indentation. To fix this, replace any hard tab characters\nwith spaces instead.\n\nExample:\n\n<!-- markdownlint-disable no-hard-tabs -->\n\n```markdown\nSome text\n\n\t* hard tab character used to indent the list item\n```\n\n<!-- markdownlint-restore -->\n\nCorrected example:\n\n```markdown\nSome text\n\n    * Spaces used to indent the list item instead\n```\n\nYou have the option to exclude this rule for code blocks and spans. To do so,\nset the `code_blocks` parameter to `false`. Code blocks and spans are included\nby default since handling of tabs by Markdown tools can be inconsistent (e.g.,\nusing 4 vs. 8 spaces).\n\nWhen code blocks are scanned (e.g., by default or if `code_blocks` is `true`),\nthe `ignore_code_languages` parameter can be set to a list of languages that\nshould be ignored (i.e., hard tabs will be allowed, though not required). This\nmakes it easier for documents to include code for languages that require hard\ntabs.\n\nBy default, violations of this rule are fixed by replacing the tab with 1 space\ncharacter. To use a different number of spaces, set the `spaces_per_tab`\nparameter to the desired value.\n\nRationale: Hard tabs are often rendered inconsistently by different editors and\ncan be harder to work with than spaces.\n\nMore information:\n\n- <https://agiletribe.wordpress.com/2011/10/27/18-dont-use-tab-characters/>\n- <https://www.jwz.org/doc/tabs-vs-spaces.html>\n\n<a name=\"md011\"></a>\n\n## `MD011` - Reversed link syntax\n\nTags: `links`\n\nAliases: `no-reversed-links`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when text that appears to be a link is encountered, but\nwhere the syntax appears to have been reversed (the `[]` and `()` are\nreversed):\n\n```markdown\n(Incorrect link syntax)[https://www.example.com/]\n```\n\nTo fix this, swap the `[]` and `()` around:\n\n```markdown\n[Correct link syntax](https://www.example.com/)\n```\n\nNote: [Markdown Extra](https://wikipedia.org/wiki/Markdown_Extra)-style\nfootnotes do not trigger this rule:\n\n```markdown\nFor (example)[^1]\n```\n\nRationale: Reversed links are not rendered as usable links.\n\n<a name=\"md012\"></a>\n\n## `MD012` - Multiple consecutive blank lines\n\nTags: `blank_lines`, `whitespace`\n\nAliases: `no-multiple-blanks`\n\nParameters:\n\n- `maximum`: Consecutive blank lines (`integer`, default `1`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when there are multiple consecutive blank lines in the\ndocument:\n\n```markdown\nSome text here\n\n\nSome more text here\n```\n\nTo fix this, delete the offending lines:\n\n```markdown\nSome text here\n\nSome more text here\n```\n\nNote: this rule will not be triggered if there are multiple consecutive blank\nlines inside code blocks.\n\nNote: The `maximum` parameter can be used to configure the maximum number of\nconsecutive blank lines.\n\nRationale: Except in a code block, blank lines serve no purpose and do not\naffect the rendering of content.\n\n<a name=\"md013\"></a>\n\n## `MD013` - Line length\n\nTags: `line_length`\n\nAliases: `line-length`\n\nParameters:\n\n- `code_block_line_length`: Number of characters for code blocks (`integer`,\n  default `80`)\n- `code_blocks`: Include code blocks (`boolean`, default `true`)\n- `heading_line_length`: Number of characters for headings (`integer`, default\n  `80`)\n- `headings`: Include headings (`boolean`, default `true`)\n- `line_length`: Number of characters (`integer`, default `80`)\n- `stern`: Stern length checking (`boolean`, default `false`)\n- `strict`: Strict length checking (`boolean`, default `false`)\n- `tables`: Include tables (`boolean`, default `true`)\n\nThis rule is triggered when there are lines that are longer than the\nconfigured `line_length` (default: 80 characters). To fix this, split the line\nup into multiple lines. To set a different maximum length for headings, use\n`heading_line_length`. To set a different maximum length for code blocks, use\n`code_block_line_length`\n\nThis rule has an exception when there is no whitespace beyond the configured\nline length. This allows you to include items such as long URLs without being\nforced to break them in the middle. To disable this exception, set the `strict`\nparameter to `true` and an issue will be reported when any line is too long. To\nwarn for lines that are too long and could be fixed but allow long lines\nwithout spaces, set the `stern` parameter to `true`.\n\nFor example (assuming normal behavior):\n\n```markdown\nIF THIS LINE IS THE MAXIMUM LENGTH\nThis line is okay because there are-no-spaces-beyond-that-length\nThis line is a violation because there are spaces beyond that length\nThis-line-is-okay-because-there-are-no-spaces-anywhere-within\n```\n\nIn `strict` mode, the last three lines above are all violations. In `stern`\nmode, the middle two lines above are both violations, but the last is okay.\n\nYou have the option to exclude this rule for code blocks, tables, or headings.\nTo do so, set the `code_blocks`, `tables`, or `headings` parameter(s) to false.\n\nCode blocks are included in this rule by default since it is often a\nrequirement for document readability, and tentatively compatible with code\nrules. Still, some languages do not lend themselves to short lines.\n\nLines with link/image reference definitions and standalone lines (i.e., not part\nof a paragraph) with only a link/image (possibly using (strong) emphasis) are\nalways exempted from this rule (even in `strict` mode) because there is often no\nway to split such lines without breaking the URL.\n\nRationale: Extremely long lines can be difficult to work with in some editors.\nMore information: <https://cirosantilli.com/markdown-style-guide#line-wrapping>.\n\n<a name=\"md014\"></a>\n\n## `MD014` - Dollar signs used before commands without showing output\n\nTags: `code`\n\nAliases: `commands-show-output`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when there are code blocks showing shell commands to be\ntyped, and *all* of the shell commands are preceded by dollar signs ($):\n\n<!-- markdownlint-disable commands-show-output -->\n\n```markdown\n$ ls\n$ cat foo\n$ less bar\n```\n\n<!-- markdownlint-restore -->\n\nThe dollar signs are unnecessary in this situation, and should not be\nincluded:\n\n```markdown\nls\ncat foo\nless bar\n```\n\nShowing output for commands preceded by dollar signs does not trigger this rule:\n\n```markdown\n$ ls\nfoo bar\n$ cat foo\nHello world\n$ cat bar\nbaz\n```\n\nBecause some commands do not produce output, it is not a violation if *some*\ncommands do not have output:\n\n```markdown\n$ mkdir test\nmkdir: created directory 'test'\n$ ls test\n```\n\nRationale: It is easier to copy/paste and less noisy if the dollar signs\nare omitted when they are not needed. See\n<https://cirosantilli.com/markdown-style-guide#dollar-signs-in-shell-code>\nfor more information.\n\n<a name=\"md018\"></a>\n\n## `MD018` - No space after hash on atx style heading\n\nTags: `atx`, `headings`, `spaces`\n\nAliases: `no-missing-space-atx`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when spaces are missing after the hash characters\nin an atx style heading:\n\n```markdown\n#Heading 1\n\n##Heading 2\n```\n\nTo fix this, separate the heading text from the hash character by a single\nspace:\n\n```markdown\n# Heading 1\n\n## Heading 2\n```\n\nRationale: Violations of this rule can lead to improperly rendered content.\n\n<a name=\"md019\"></a>\n\n## `MD019` - Multiple spaces after hash on atx style heading\n\nTags: `atx`, `headings`, `spaces`\n\nAliases: `no-multiple-space-atx`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when more than one space is used to separate the\nheading text from the hash characters in an atx style heading:\n\n```markdown\n#  Heading 1\n\n##  Heading 2\n```\n\nTo fix this, separate the heading text from the hash character by a single\nspace:\n\n```markdown\n# Heading 1\n\n## Heading 2\n```\n\nRationale: Extra space has no purpose and does not affect the rendering of\ncontent.\n\n<a name=\"md020\"></a>\n\n## `MD020` - No space inside hashes on closed atx style heading\n\nTags: `atx_closed`, `headings`, `spaces`\n\nAliases: `no-missing-space-closed-atx`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when spaces are missing inside the hash characters\nin a closed atx style heading:\n\n```markdown\n#Heading 1#\n\n##Heading 2##\n```\n\nTo fix this, separate the heading text from the hash character by a single\nspace:\n\n```markdown\n# Heading 1 #\n\n## Heading 2 ##\n```\n\nNote: this rule will fire if either side of the heading is missing spaces.\n\nRationale: Violations of this rule can lead to improperly rendered content.\n\n<a name=\"md021\"></a>\n\n## `MD021` - Multiple spaces inside hashes on closed atx style heading\n\nTags: `atx_closed`, `headings`, `spaces`\n\nAliases: `no-multiple-space-closed-atx`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when more than one space is used to separate the\nheading text from the hash characters in a closed atx style heading:\n\n```markdown\n#  Heading 1  #\n\n##  Heading 2  ##\n```\n\nTo fix this, separate the heading text from the hash character by a single\nspace:\n\n```markdown\n# Heading 1 #\n\n## Heading 2 ##\n```\n\nNote: this rule will fire if either side of the heading contains multiple\nspaces.\n\nRationale: Extra space has no purpose and does not affect the rendering of\ncontent.\n\n<a name=\"md022\"></a>\n\n## `MD022` - Headings should be surrounded by blank lines\n\nTags: `blank_lines`, `headings`\n\nAliases: `blanks-around-headings`\n\nParameters:\n\n- `include_front_matter`: Include front matter content (`boolean`, default\n  `false`)\n- `lines_above`: Blank lines above heading (`integer|integer[]`, default `1`)\n- `lines_below`: Blank lines below heading (`integer|integer[]`, default `1`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when headings (any style) are either not preceded or not\nfollowed by at least one blank line:\n\n```markdown\n# Heading 1\nSome text\n\nSome more text\n## Heading 2\n```\n\nTo fix this, ensure that all headings have a blank line both before and after\n(except where the heading is at the beginning or end of the document):\n\n```markdown\n# Heading 1\n\nSome text\n\nSome more text\n\n## Heading 2\n```\n\nThe `lines_above` and `lines_below` parameters can be used to specify a\ndifferent number of blank lines (including `0`) above or below each heading.\nIf the value `-1` is used for either parameter, any number of blank lines is\nallowed. To customize the number of lines above or below each heading level\nindividually, specify a `number[]` where values correspond to heading levels\n1-6 (in order).\n\nNotes: If `lines_above` or `lines_below` are configured to require more than one\nblank line, [MD012/no-multiple-blanks](md012.md) should also be customized. This\nrule checks for *at least* as many blank lines as specified; any extra blank\nlines are ignored.\n\nBy default, [YAML](https://wikipedia.org/wiki/YAML) front matter is ignored, so\nthe following document reports no violations:\n\n```markdown\n---\ntitle: Title\n---\n## Heading\n```\n\nTo require the configured number of blank lines between front matter content and\na document's first heading, set the `include_front_matter` parameter to `true`.\n\nRationale: Aside from aesthetic reasons, some parsers, including `kramdown`,\nwill not parse headings that don't have a blank line before, and will parse them\nas regular text.\n\n<a name=\"md023\"></a>\n\n## `MD023` - Headings must start at the beginning of the line\n\nTags: `headings`, `spaces`\n\nAliases: `heading-start-left`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when a heading is indented by one or more spaces:\n\n```markdown\nSome text\n\n  # Indented heading\n```\n\nTo fix this, ensure that all headings start at the beginning of the line:\n\n```markdown\nSome text\n\n# Heading\n```\n\nNote that scenarios like block quotes \"indent\" the start of the line, so the\nfollowing is also correct:\n\n```markdown\n> # Heading in Block Quote\n```\n\nRationale: Headings that don't start at the beginning of the line will not be\nparsed as headings, and will instead appear as regular text.\n\n<a name=\"md024\"></a>\n\n## `MD024` - Multiple headings with the same content\n\nTags: `headings`\n\nAliases: `no-duplicate-heading`\n\nParameters:\n\n- `siblings_only`: Only check sibling headings (`boolean`, default `false`)\n\nThis rule is triggered if there are multiple headings in the document that have\nthe same text:\n\n```markdown\n# Some text\n\n## Some text\n```\n\nTo fix this, ensure that the content of each heading is different:\n\n```markdown\n# Some text\n\n## Some more text\n```\n\nIf the parameter `siblings_only` is set to `true`, duplication is allowed for\nheadings with different parents (as is common in changelogs):\n\n```markdown\n# Changelog\n\n## 1.0.0\n\n### Features\n\n## 2.0.0\n\n### Features\n```\n\nRationale: Some Markdown parsers generate anchors for headings based on the\nheading name; headings with the same content can cause problems with that.\n\n<a name=\"md025\"></a>\n\n## `MD025` - Multiple top-level headings in the same document\n\nTags: `headings`\n\nAliases: `single-h1`, `single-title`\n\nParameters:\n\n- `front_matter_title`: RegExp for matching title in front matter (`string`,\n  default `^\\s*title\\s*[:=]`)\n- `level`: Heading level (`integer`, default `1`)\n\nThis rule is triggered when a top-level heading is in use (the first line of\nthe file is an h1 heading), and more than one h1 heading is in use in the\ndocument:\n\n```markdown\n# Top level heading\n\n# Another top-level heading\n```\n\nTo fix, structure your document so there is a single h1 heading that is\nthe title for the document. Subsequent headings must be\nlower-level headings (h2, h3, etc.):\n\n```markdown\n# Title\n\n## Heading\n\n## Another heading\n```\n\nNote: The `level` parameter can be used to change the top-level (ex: to h2) in\ncases where an h1 is added externally.\n\nIf [YAML](https://wikipedia.org/wiki/YAML) front matter is present and\ncontains a `title` property (commonly used with blog posts), this rule treats\nthat as a top level heading and will report a violation for any subsequent\ntop-level headings. To use a different property name in the front matter,\nspecify the text of a regular expression via the `front_matter_title` parameter.\nTo disable the use of front matter by this rule, specify `\"\"` for\n`front_matter_title`.\n\nRationale: A top-level heading is an h1 on the first line of the file, and\nserves as the title for the document. If this convention is in use, then there\ncan not be more than one title for the document, and the entire document should\nbe contained within this heading.\n\n<a name=\"md026\"></a>\n\n## `MD026` - Trailing punctuation in heading\n\nTags: `headings`\n\nAliases: `no-trailing-punctuation`\n\nParameters:\n\n- `punctuation`: Punctuation characters (`string`, default `.,;:!。，；：！`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered on any heading that has one of the specified normal or\nfull-width punctuation characters as the last character in the line:\n\n```markdown\n# This is a heading.\n```\n\nTo fix this, remove the trailing punctuation:\n\n```markdown\n# This is a heading\n```\n\nNote: The `punctuation` parameter can be used to specify what characters count\nas punctuation at the end of a heading. For example, you can change it to\n`\".,;:\"` to allow headings that end with an exclamation point. `?` is\nallowed by default because of how common it is in headings of FAQ-style\ndocuments. Setting the `punctuation` parameter to `\"\"` allows all characters -\nand is equivalent to disabling the rule.\n\nNote: The trailing semicolon of [HTML entity references][html-entity-references]\nlike `&copy;`, `&#169;`, and `&#x000A9;` is ignored by this rule.\n\nRationale: Headings are not meant to be full sentences. More information:\n[Punctuation at the end of headers][end-punctuation].\n\n[end-punctuation]: https://cirosantilli.com/markdown-style-guide#punctuation-at-the-end-of-headers\n[html-entity-references]: https://wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references\n\n<a name=\"md027\"></a>\n\n## `MD027` - Multiple spaces after blockquote symbol\n\nTags: `blockquote`, `indentation`, `whitespace`\n\nAliases: `no-multiple-space-blockquote`\n\nParameters:\n\n- `list_items`: Include list items (`boolean`, default `true`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when blockquotes have more than one space after the\nblockquote (`>`) symbol:\n\n```markdown\n>  This is a blockquote with bad indentation\n>  there should only be one.\n```\n\nTo fix, remove any extraneous space:\n\n```markdown\n> This is a blockquote with correct\n> indentation.\n```\n\nInferring intended list indentation within a blockquote can be challenging;\nsetting the `list_items` parameter to `false` disables this rule for ordered\nand unordered list items.\n\nRationale: Consistent formatting makes it easier to understand a document.\n\n<a name=\"md028\"></a>\n\n## `MD028` - Blank line inside blockquote\n\nTags: `blockquote`, `whitespace`\n\nAliases: `no-blanks-blockquote`\n\nThis rule is triggered when two blockquote blocks are separated by nothing\nbut a blank line:\n\n```markdown\n> This is a blockquote\n> which is immediately followed by\n\n> this blockquote. In some cases,\n> these may be merged into one blockquote.\n```\n\nTo fix this, ensure that consecutive blockquotes have text (or an HTML comment)\nin between:\n\n```markdown\n> This is a blockquote.\n\nThis is paragraph text.\n\n> This is a second blockquote.\n\n<!-- This is an HTML comment -->\n\n> This is a third blockquote.\n```\n\nIf they are meant to be a single quote, add the blockquote symbol at the\nbeginning of the blank line:\n\n```markdown\n> This is a blockquote.\n>\n> This is the same blockquote.\n```\n\nRationale: Some Markdown parsers will treat two blockquotes separated by one\nor more blank lines as the same blockquote, while others will treat them as\nseparate blockquotes.\n\n<a name=\"md029\"></a>\n\n## `MD029` - Ordered list item prefix\n\nTags: `ol`\n\nAliases: `ol-prefix`\n\nParameters:\n\n- `style`: List style (`string`, default `one_or_ordered`, values `one` /\n  `one_or_ordered` / `ordered` / `zero`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered for ordered lists that do not either start with '1.' or\ndo not have a prefix that increases in numerical order (depending on the\nconfigured style). The less-common pattern of using '0.' as a first prefix or\nfor all prefixes is also supported.\n\nExample valid list if the style is configured as 'one':\n\n```markdown\n1. Do this.\n1. Do that.\n1. Done.\n```\n\nExamples of valid lists if the style is configured as 'ordered':\n\n```markdown\n1. Do this.\n2. Do that.\n3. Done.\n```\n\n```markdown\n0. Do this.\n1. Do that.\n2. Done.\n```\n\nAll three examples are valid when the style is configured as 'one_or_ordered'.\n\nExample valid list if the style is configured as 'zero':\n\n```markdown\n0. Do this.\n0. Do that.\n0. Done.\n```\n\nExample invalid list for all styles:\n\n```markdown\n1. Do this.\n3. Done.\n```\n\nThis rule supports 0-prefixing list items for uniform indentation and will\npreserve that when fixing:\n\n```markdown\n...\n08. Item\n09. Item\n10. Item\n11. Item\n```\n\nWhen list items appear to be right-aligned, fixes will maintain that alignment:\n\n```markdown\n...\n 8. Item\n 9. Item\n10. Item\n11. Item\n```\n\nNote: This rule will report violations for cases like the following where an\nimproperly-indented code block (or similar) appears between two list items and\n\"breaks\" the list in two:\n\n<!-- markdownlint-disable code-fence-style -->\n\n~~~markdown\n1. First list\n\n```text\nCode block\n```\n\n1. Second list\n~~~\n\nThe fix is to indent the code block so it becomes part of the preceding list\nitem as intended:\n\n~~~markdown\n1. First list\n\n   ```text\n   Code block\n   ```\n\n2. Still first list\n~~~\n\n<!-- markdownlint-restore -->\n\nRationale: Consistent formatting makes it easier to understand a document.\n\n<a name=\"md030\"></a>\n\n## `MD030` - Spaces after list markers\n\nTags: `ol`, `ul`, `whitespace`\n\nAliases: `list-marker-space`\n\nParameters:\n\n- `ol_multi`: Spaces for multi-line ordered list items (`integer`, default `1`)\n- `ol_single`: Spaces for single-line ordered list items (`integer`, default\n  `1`)\n- `ul_multi`: Spaces for multi-line unordered list items (`integer`, default\n  `1`)\n- `ul_single`: Spaces for single-line unordered list items (`integer`, default\n  `1`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule checks for the number of spaces between a list marker (e.g. '`-`',\n'`*`', '`+`' or '`1.`') and the text of the list item.\n\nThe number of spaces checked for depends on the document style in use, but the\ndefault is 1 space after any list marker:\n\n```markdown\n* Foo\n* Bar\n* Baz\n\n1. Foo\n1. Bar\n1. Baz\n\n1. Foo\n   * Bar\n1. Baz\n```\n\nA document style may change the number of spaces after unordered list items\nand ordered list items independently, as well as based on whether the content\nof every item in the list consists of a single paragraph or multiple\nparagraphs (including sub-lists and code blocks).\n\nFor example, the style guide at\n<https://cirosantilli.com/markdown-style-guide#spaces-after-list-marker>\nspecifies that 1 space after the list marker should be used if every item in\nthe list fits within a single paragraph, but to use 2 or 3 spaces (for ordered\nand unordered lists respectively) if there are multiple paragraphs of content\ninside the list:\n\n```markdown\n* Foo\n* Bar\n* Baz\n```\n\nvs.\n\n```markdown\n*   Foo\n\n    Second paragraph\n\n*   Bar\n```\n\nor\n\n```markdown\n1.  Foo\n\n    Second paragraph\n\n1.  Bar\n```\n\nTo fix this, ensure the correct number of spaces are used after the list marker\nfor your selected document style.\n\nRationale: Violations of this rule can lead to improperly rendered content.\n\nNote: See [Prettier.md](Prettier.md) for compatibility information.\n\n<a name=\"md031\"></a>\n\n## `MD031` - Fenced code blocks should be surrounded by blank lines\n\nTags: `blank_lines`, `code`\n\nAliases: `blanks-around-fences`\n\nParameters:\n\n- `list_items`: Include list items (`boolean`, default `true`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when fenced code blocks are either not preceded or not\nfollowed by a blank line:\n\n````markdown\nSome text\n```\nCode block\n```\n\n```\nAnother code block\n```\nSome more text\n````\n\nTo fix this, ensure that all fenced code blocks have a blank line both before\nand after (except where the block is at the beginning or end of the document):\n\n````markdown\nSome text\n\n```\nCode block\n```\n\n```\nAnother code block\n```\n\nSome more text\n````\n\nSet the `list_items` parameter to `false` to disable this rule for list items.\nDisabling this behavior for lists can be useful if it is necessary to create a\n[tight](https://spec.commonmark.org/0.29/#tight) list containing a code fence.\n\nRationale: Aside from aesthetic reasons, some parsers, including kramdown, will\nnot parse fenced code blocks that don't have blank lines before and after them.\n\n<a name=\"md032\"></a>\n\n## `MD032` - Lists should be surrounded by blank lines\n\nTags: `blank_lines`, `bullet`, `ol`, `ul`\n\nAliases: `blanks-around-lists`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when lists (of any kind) are either not preceded or not\nfollowed by a blank line:\n\n```markdown\nSome text\n* List item\n* List item\n\n1. List item\n2. List item\n***\n```\n\nIn the first case above, text immediately precedes the unordered list. In the\nsecond case above, a thematic break immediately follows the ordered list. To fix\nviolations of this rule, ensure that all lists have a blank line both before and\nafter (except when the list is at the very beginning or end of the document):\n\n```markdown\nSome text\n\n* List item\n* List item\n\n1. List item\n2. List item\n\n***\n```\n\nNote that the following case is **not** a violation of this rule:\n\n```markdown\n1. List item\n   More item 1\n2. List item\nMore item 2\n```\n\nAlthough it is not indented, the text \"More item 2\" is referred to as a\n[lazy continuation line][lazy-continuation] and considered part of the second\nlist item.\n\nRationale: In addition to aesthetic reasons, some parsers, including kramdown,\nwill not parse lists that don't have blank lines before and after them.\n\n[lazy-continuation]: https://spec.commonmark.org/0.30/#lazy-continuation-line\n\n<a name=\"md033\"></a>\n\n## `MD033` - Inline HTML\n\nTags: `html`\n\nAliases: `no-inline-html`\n\nParameters:\n\n- `allowed_elements`: Allowed elements (`string[]`, default `[]`)\n- `table_allowed_elements`: Allowed elements in tables (`string[]`, default\n  `[]`)\n\nThis rule is triggered whenever raw HTML is used in a Markdown document:\n\n```markdown\n<h1>Inline HTML heading</h1>\n```\n\nTo fix this, use 'pure' Markdown instead of including raw HTML:\n\n```markdown\n# Markdown heading\n```\n\nTo allow specific HTML elements anywhere in Markdown content, set the\n`allowed_elements` parameter to a list of HTML element names. To allow a\nspecific set of HTML elements within Markdown tables, set the\n`table_allowed_elements` parameter to a list of HTML element names. This can be\nused to permit the use of `<br>`-style line breaks only within Markdown tables.\n\nRationale: Raw HTML is allowed in Markdown, but this rule is included for\nthose who want their documents to only include \"pure\" Markdown, or for those\nwho are rendering Markdown documents into something other than HTML.\n\n<a name=\"md034\"></a>\n\n## `MD034` - Bare URL used\n\nTags: `links`, `url`\n\nAliases: `no-bare-urls`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered whenever a URL or email address appears without\nsurrounding angle brackets:\n\n```markdown\nFor more info, visit https://www.example.com/ or email user@example.com.\n```\n\nTo fix this, add angle brackets around the URL or email address:\n\n```markdown\nFor more info, visit <https://www.example.com/> or email <user@example.com>.\n```\n\nIf a URL or email address contains non-ASCII characters, it may be not be\nhandled as intended even when angle brackets are present. In such cases,\n[percent-encoding](https://wikipedia.org/wiki/Percent-encoding) can be used\nto comply with the required syntax for URL and email.\n\nNote: To include a bare URL or email without it being converted into a link,\nwrap it in a code span:\n\n```markdown\nNot a clickable link: `https://www.example.com`\n```\n\nNote: The following scenario does not trigger this rule because it could be a\nshortcut link:\n\n```markdown\n[https://www.example.com]\n```\n\nNote: The following syntax triggers this rule because the nested link could be\na shortcut link (which takes precedence):\n\n```markdown\n[text [shortcut] text](https://example.com)\n```\n\nTo avoid this, escape both inner brackets:\n\n```markdown\n[link \\[text\\] link](https://example.com)\n```\n\nRationale: Without angle brackets, a bare URL or email isn't converted into a\nlink by some Markdown parsers.\n\n<a name=\"md035\"></a>\n\n## `MD035` - Horizontal rule style\n\nTags: `hr`\n\nAliases: `hr-style`\n\nParameters:\n\n- `style`: Horizontal rule style (`string`, default `consistent`)\n\nThis rule is triggered when inconsistent styles of horizontal rules (also known\nas \"thematic breaks\") are used in a document:\n\n```markdown\n---\n\n- - -\n\n***\n\n* * *\n\n****\n```\n\nTo fix this, use the same horizontal rule syntax everywhere:\n\n```markdown\n---\n\n---\n\n---\n```\n\nThe `style` parameter's default value `consistent` ensures all horizontal rules\nin a document match the first horizontal rule in that document. To enforce a\nspecific pattern of characters, set the `style` parameter to that string (e.g.,\n`\"* * *\"`).\n\nNote: In order to be recognized as a horizontal rule, a line must contain three\nor more matching `-`, `_`, or `*` characters with optional space between.\n\nRationale: Consistent formatting makes it easier to understand a document.\n\n<a name=\"md036\"></a>\n\n## `MD036` - Emphasis used instead of a heading\n\nTags: `emphasis`, `headings`\n\nAliases: `no-emphasis-as-heading`\n\nParameters:\n\n- `punctuation`: Punctuation characters (`string`, default `.,;:!?。，；：！？`)\n\nThis check looks for instances where emphasized (i.e. bold or italic) text is\nused to separate sections, where a heading should be used instead:\n\n```markdown\n**My document**\n\nLorem ipsum dolor sit amet...\n\n_Another section_\n\nConsectetur adipiscing elit, sed do eiusmod.\n```\n\nTo fix this, use Markdown headings instead of emphasized text to denote\nsections:\n\n```markdown\n# My document\n\nLorem ipsum dolor sit amet...\n\n## Another section\n\nConsectetur adipiscing elit, sed do eiusmod.\n```\n\nNote: This rule looks for single-line paragraphs that consist entirely\nof emphasized text. It won't fire on emphasis used within regular text,\nmulti-line emphasized paragraphs, or paragraphs ending in punctuation\n(normal or full-width). Similarly to rule MD026, you can configure what\ncharacters are recognized as punctuation.\n\nRationale: Using emphasis instead of a heading prevents tools from inferring\nthe structure of a document. More information:\n<https://cirosantilli.com/markdown-style-guide#emphasis-vs-headers>.\n\n<a name=\"md037\"></a>\n\n## `MD037` - Spaces inside emphasis markers\n\nTags: `emphasis`, `whitespace`\n\nAliases: `no-space-in-emphasis`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when emphasis markers (bold, italic) are used, but they\nhave spaces between the markers and the text:\n\n```markdown\nHere is some ** bold ** text.\n\nHere is some * italic * text.\n\nHere is some more __ bold __ text.\n\nHere is some more _ italic _ text.\n```\n\nTo fix this, remove the spaces around the emphasis markers:\n\n```markdown\nHere is some **bold** text.\n\nHere is some *italic* text.\n\nHere is some more __bold__ text.\n\nHere is some more _italic_ text.\n```\n\nRationale: Emphasis is only parsed as such when the asterisks/underscores\naren't surrounded by spaces. This rule attempts to detect where\nthey were surrounded by spaces, but it appears that emphasized text was\nintended by the author.\n\n<a name=\"md038\"></a>\n\n## `MD038` - Spaces inside code span elements\n\nTags: `code`, `whitespace`\n\nAliases: `no-space-in-code`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered for code spans containing content with unnecessary space\nnext to the beginning or ending backticks:\n\n```markdown\n`some text `\n\n` some text`\n\n`   some text   `\n```\n\nTo fix this, remove the extra space characters from the beginning and ending:\n\n```markdown\n`some text`\n```\n\nNote: A single leading *and* trailing space is allowed by the specification and\ntrimmed by the parser to support code spans that begin or end with a backtick:\n\n```markdown\n`` `backticks` ``\n\n`` backtick` ``\n```\n\nNote: When single-space padding is present in the input, it will be preserved\n(even if unnecessary):\n\n```markdown\n` code `\n```\n\nNote: Code spans containing only spaces are allowed by the specification and are\nalso preserved:\n\n```markdown\n` `\n\n`   `\n```\n\nRationale: Violations of this rule are usually unintentional and can lead to\nimproperly-rendered content.\n\n<a name=\"md039\"></a>\n\n## `MD039` - Spaces inside link text\n\nTags: `links`, `whitespace`\n\nAliases: `no-space-in-links`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered on links that have spaces surrounding the link text:\n\n```markdown\n[ a link ](https://www.example.com/)\n```\n\nTo fix this, remove the spaces surrounding the link text:\n\n```markdown\n[a link](https://www.example.com/)\n```\n\nRationale: Consistent formatting makes it easier to understand a document.\n\n<a name=\"md040\"></a>\n\n## `MD040` - Fenced code blocks should have a language specified\n\nTags: `code`, `language`\n\nAliases: `fenced-code-language`\n\nParameters:\n\n- `allowed_languages`: List of languages (`string[]`, default `[]`)\n- `language_only`: Require language only (`boolean`, default `false`)\n\nThis rule is triggered when fenced code blocks are used, but a language isn't\nspecified:\n\n````markdown\n```\n#!/bin/bash\necho Hello world\n```\n````\n\nTo fix this, add a language specifier to the code block:\n\n````markdown\n```bash\n#!/bin/bash\necho Hello world\n```\n````\n\nTo display a code block without syntax highlighting, use:\n\n````markdown\n```text\nPlain text in a code block\n```\n````\n\nYou can configure the `allowed_languages` parameter to specify a list of\nlanguages code blocks could use. Languages are case sensitive. The default value\nis `[]` which means any language specifier is valid.\n\nYou can prevent extra data from being present in the info string of fenced code\nblocks. To do so, set the `language_only` parameter to `true`.\n\n<!-- markdownlint-disable-next-line no-space-in-code -->\nInfo strings with leading/trailing whitespace (ex: `js `) or other content (ex:\n`ruby startline=3`) will trigger this rule.\n\nRationale: Specifying a language improves content rendering by using the\ncorrect syntax highlighting for code. More information:\n<https://cirosantilli.com/markdown-style-guide#option-code-fenced>.\n\n<a name=\"md041\"></a>\n\n## `MD041` - First line in a file should be a top-level heading\n\nTags: `headings`\n\nAliases: `first-line-h1`, `first-line-heading`\n\nParameters:\n\n- `allow_preamble`: Allow content before first heading (`boolean`, default\n  `false`)\n- `front_matter_title`: RegExp for matching title in front matter (`string`,\n  default `^\\s*title\\s*[:=]`)\n- `level`: Heading level (`integer`, default `1`)\n\nThis rule is intended to ensure documents have a title and is triggered when\nthe first line in a document is not a top-level ([HTML][HTML] `h1`) heading:\n\n```markdown\nThis is a document without a heading\n```\n\nTo fix this, add a top-level heading to the beginning of the document:\n\n```markdown\n# Document Heading\n\nThis is a document with a top-level heading\n```\n\nBecause it is common for projects on GitHub to use an image for the heading of\n`README.md` and that pattern is not well-supported by Markdown, HTML headings\nare also permitted by this rule. For example:\n\n```markdown\n<h1 align=\"center\"><img src=\"https://placekitten.com/300/150\"/></h1>\n\nThis is a document with a top-level HTML heading\n```\n\nIn some cases, a document's title heading may be preceded by text like a table\nof contents. This is not ideal for accessibility, but can be allowed by setting\nthe `allow_preamble` parameter to `true`.\n\n```markdown\nThis is a document with preamble text\n\n# Document Heading\n```\n\nIf [YAML][YAML] front matter is present and contains a `title` property\n(commonly used with blog posts), this rule will not report a violation. To use a\ndifferent property name in the front matter, specify the text of a [regular\nexpression][RegExp] via the `front_matter_title` parameter. To disable the use\nof front matter by this rule, specify `\"\"` for `front_matter_title`.\n\nThe `level` parameter can be used to change the top-level heading (ex: to `h2`)\nin cases where an `h1` is added externally.\n\nRationale: The top-level heading often acts as the title of a document. More\ninformation: <https://cirosantilli.com/markdown-style-guide#top-level-header>.\n\n[HTML]: https://wikipedia.org/wiki/HTML\n[RegExp]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions\n[YAML]: https://wikipedia.org/wiki/YAML\n\n<a name=\"md042\"></a>\n\n## `MD042` - No empty links\n\nTags: `links`\n\nAliases: `no-empty-links`\n\nThis rule is triggered when an empty link is encountered:\n\n```markdown\n[an empty link]()\n```\n\nTo fix the violation, provide a destination for the link:\n\n```markdown\n[a valid link](https://example.com/)\n```\n\nEmpty fragments will trigger this rule:\n\n```markdown\n[an empty fragment](#)\n\n[an empty link definition][empty]\n\n[empty]: #\n```\n\nBut non-empty fragments will not:\n\n```markdown\n[a valid fragment](#fragment)\n```\n\nEmpty link definitions\n\nRationale: Empty links do not lead anywhere and therefore don't function as\nlinks.\n\n<a name=\"md043\"></a>\n\n## `MD043` - Required heading structure\n\nTags: `headings`\n\nAliases: `required-headings`\n\nParameters:\n\n- `headings`: List of headings (`string[]|null`, default `null`)\n- `match_case`: Match case of headings (`boolean`, default `false`)\n\nThis rule is triggered when the headings in a file do not match the array of\nheadings passed to the rule. It can be used to enforce a standard heading\nstructure for a set of files.\n\nTo require exactly the following structure:\n\n```markdown\n# Heading\n## Item\n### Detail\n```\n\nSet the `headings` parameter to:\n\n```json\n[\n    \"# Heading\",\n    \"## Item\",\n    \"### Detail\"\n]\n```\n\nTo allow optional headings as with the following structure:\n\n```markdown\n# Heading\n## Item\n### Detail (optional)\n### Example (optional)\n## Foot\n### Notes (optional)\n```\n\nUse the special value `*` meaning \"zero or more unspecified headings\", the\nspecial value `+` meaning \"one or more unspecified headings\", or the special\nvalue `?` meaning \"exactly one unspecified heading\" and set the `headings`\nparameter to something like:\n\n```json\n[\n    \"# Heading\",\n    \"## Item\",\n    \"*\",\n    \"## Foot\",\n    \"+\"\n]\n```\n\nTo require a heading with a specific level and text matching a specific pattern\n(for example, a one-word project name):\n\n```markdown\n# Project\n## Description\n## Examples\n```\n\nReplace the `#` prefix character(s) with `%` and specify a regular expression;\nthe following example requires a level 1 heading with a single word made up of\nat least 4 letters:\n\n```json\n[\n    \"% [a-zA-Z]{4,}\",\n    \"## Description\",\n    \"## Examples\"\n]\n```\n\nTo handle repeating heading sections (common in `CHANGELOG` files) such as the\nfollowing:\n\n```markdown\n# Changelog\n## 1.0.0\n### Fixes\n### Features\n## 2.0.0\n### Fixes\n### Features\n```\n\nUse the special value `^` meaning \"if the next heading does not match, loop\nback to the previous matching marker\":\n\n```json\n[\n    \"# Changelog\",\n    \"^\",\n    \"%% ^\\\\d+\\\\.\\\\d+\\\\.\\\\d+$\",\n    \"### Fixes\",\n    \"### Features\",\n    \"^\"\n]\n```\n\nThe simple form shown above is enough for most scenarios; if multiple loops are\nneeded, matching pairs of `^^`, `^^^`, etc. can be used in conjunction. The\nprefix `%` and the special value `?` are supported with loops, but `*` and `+`\nare not and will result in undefined behavior. To avoid infinite looping, a\nviolation is reported if the rule loops more than 1,000 times.\n\nWhen an error is detected, this rule outputs the line number of the first\nproblematic heading (otherwise, it outputs the last line number of the file).\n\nNote that while the `headings` parameter uses the \"## Text\" ATX heading style\nfor simplicity, a file may use any supported heading style.\n\nBy default, the case of headings in the document is not required to match that\nof `headings`. To require that case match exactly, set the `match_case`\nparameter to `true`.\n\nRationale: Projects may wish to enforce a consistent document structure across\na set of similar content.\n\n<a name=\"md044\"></a>\n\n## `MD044` - Proper names should have the correct capitalization\n\nTags: `spelling`\n\nAliases: `proper-names`\n\nParameters:\n\n- `code_blocks`: Include code blocks (`boolean`, default `true`)\n- `html_elements`: Include HTML elements (`boolean`, default `true`)\n- `names`: List of proper names (`string[]`, default `[]`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when any of the strings in the `names` array do not have\nthe specified capitalization. It can be used to enforce a standard letter case\nfor the names of projects and products.\n\nFor example, the language \"JavaScript\" is usually written with both the 'J' and\n'S' capitalized - though sometimes the 's' or 'j' appear in lower-case. To\nenforce the proper capitalization, specify the desired letter case in the\n`names` array:\n\n```json\n[\n    \"JavaScript\"\n]\n```\n\nSometimes a proper name is capitalized differently in certain contexts. In such\ncases, add both forms to the `names` array:\n\n```json\n[\n    \"GitHub\",\n    \"github.com\"\n]\n```\n\nSet the `code_blocks` parameter to `false` to disable this rule for code blocks\nand spans. Set the `html_elements` parameter to `false` to disable this rule\nfor HTML elements and attributes (such as when using a proper name as part of\na path for `a`/`href` or `img`/`src`).\n\nRationale: Incorrect capitalization of proper names is usually a mistake.\n\n<a name=\"md045\"></a>\n\n## `MD045` - Images should have alternate text (alt text)\n\nTags: `accessibility`, `images`\n\nAliases: `no-alt-text`\n\nThis rule reports a violation when an image is missing alternate text (alt text)\ninformation.\n\nAlternate text is commonly specified inline as:\n\n```markdown\n![Alternate text](image.jpg)\n```\n\nOr with reference syntax as:\n\n```markdown\n![Alternate text][ref]\n\n...\n\n[ref]: image.jpg \"Optional title\"\n```\n\nOr with HTML as:\n\n```html\n<img src=\"image.jpg\" alt=\"Alternate text\" />\n```\n\nNote: If the [HTML `aria-hidden` attribute][aria-hidden] is used to hide the\nimage from assistive technology, this rule does not report a violation:\n\n```html\n<img src=\"image.jpg\" aria-hidden=\"true\" />\n```\n\nGuidance for writing alternate text is available from the [W3C][w3c],\n[Wikipedia][wikipedia], and [other locations][phase2technology].\n\nRationale: Alternate text is important for ac"},"files":{"test/rules/npm/package.json":"{\n  \"name\": \"markdownlint-rule-sample\",\n  \"version\": \"0.0.1\",\n  \"description\": \"Package for markdownlint custom rule sample\",\n  \"type\": \"commonjs\",\n  \"main\": \"./sample-rule.js\",\n  \"author\": \"David Anson (https://dlaa.me/)\",\n  \"homepage\": \"https://github.com/DavidAnson/markdownlint\",\n  \"license\": \"MIT\",\n  \"keywords\": [\n    \"markdownlint-rule\"\n  ],\n  \"private\": true\n}\n","test/rules/node_modules/markdownlint-rule-sample-commonjs/package.json":"{\n  \"name\": \"markdownlint-rule-sample-commonjs\",\n  \"version\": \"0.0.1\",\n  \"description\": \"Package for markdownlint custom rule sample (commonjs)\",\n  \"main\": \"sample-rule.cjs\",\n  \"type\": \"commonjs\",\n  \"author\": \"David Anson (https://dlaa.me/)\",\n  \"homepage\": \"https://github.com/DavidAnson/markdownlint\",\n  \"license\": \"MIT\",\n  \"keywords\": [\n    \"markdownlint-rule\"\n  ],\n  \"private\": true\n}\n","test/rules/node_modules/markdownlint-rule-sample-module/package.json":"{\n  \"name\": \"markdownlint-rule-sample-module\",\n  \"version\": \"0.0.1\",\n  \"description\": \"Package for markdownlint custom rule sample (module)\",\n  \"main\": \"sample-rule.mjs\",\n  \"type\": \"module\",\n  \"author\": \"David Anson (https://dlaa.me/)\",\n  \"homepage\": \"https://github.com/DavidAnson/markdownlint\",\n  \"license\": \"MIT\",\n  \"keywords\": [\n    \"markdownlint-rule\"\n  ],\n  \"private\": true\n}\n","doc/Rules.md":"# Rules\n\nThis document contains a description of all rules, what they are checking for,\nas well as examples of documents that break the rule and corrected\nversions of the examples.\n\n<a name=\"md001\"></a>\n\n## `MD001` - Heading levels should only increment by one level at a time\n\nTags: `headings`\n\nAliases: `heading-increment`\n\nParameters:\n\n- `front_matter_title`: RegExp for matching title in front matter (`string`,\n  default `^\\s*title\\s*[:=]`)\n\nThis rule is triggered when you skip heading levels in a Markdown document, for\nexample:\n\n```markdown\n# Heading 1\n\n### Heading 3\n\nWe skipped out a 2nd level heading in this document\n```\n\nWhen using multiple heading levels, nested headings should increase by only one\nlevel at a time:\n\n```markdown\n# Heading 1\n\n## Heading 2\n\n### Heading 3\n\n#### Heading 4\n\n## Another Heading 2\n\n### Another Heading 3\n```\n\nIf [YAML](https://wikipedia.org/wiki/YAML) front matter is present and\ncontains a `title` property (commonly used with blog posts), this rule treats\nthat as a top level heading and will report a violation if the actual first\nheading is not a level 2 heading. To use a different property name in the\nfront matter, specify the text of a regular expression via the\n`front_matter_title` parameter. To disable the use of front matter by this\nrule, specify `\"\"` for `front_matter_title`. When front matter is not present,\nthe first heading can be any level.\n\nRationale: Headings represent the structure of a document and can be confusing\nwhen skipped - especially for accessibility scenarios. More information:\n<https://www.w3.org/WAI/tutorials/page-structure/headings/>.\n\n<a name=\"md003\"></a>\n\n## `MD003` - Heading style\n\nTags: `headings`\n\nAliases: `heading-style`\n\nParameters:\n\n- `style`: Heading style (`string`, default `consistent`, values `atx` /\n  `atx_closed` / `consistent` / `setext` / `setext_with_atx` /\n  `setext_with_atx_closed`)\n\nThis rule is triggered when different heading styles are used in the same\ndocument:\n\n```markdown\n# ATX style H1\n\n## Closed ATX style H2 ##\n\nSetext style H1\n===============\n```\n\nTo fix the issue, use consistent heading styles throughout the document:\n\n```markdown\n# ATX style H1\n\n## ATX style H2\n```\n\nThe `setext_with_atx` and `setext_with_atx_closed` settings allow ATX-style\nheadings of level 3 or more in documents with setext-style headings (which only\nsupport level 1 and 2 headings):\n\n```markdown\nSetext style H1\n===============\n\nSetext style H2\n---------------\n\n### ATX style H3\n```\n\nNote: The configured heading style can be a specific style to require (`atx`,\n`atx_closed`, `setext`, `setext_with_atx`, `setext_with_atx_closed`), or can\nrequire that all heading styles match the first heading style via `consistent`.\n\nNote: The placement of a horizontal rule directly below a line of text can\ntrigger this rule by turning that text into a level 2 setext-style heading:\n\n```markdown\nA line of text followed by a horizontal rule becomes a heading\n---\n```\n\nRationale: Consistent formatting makes it easier to understand a document.\n\n<a name=\"md004\"></a>\n\n## `MD004` - Unordered list style\n\nTags: `bullet`, `ul`\n\nAliases: `ul-style`\n\nParameters:\n\n- `style`: List style (`string`, default `consistent`, values `asterisk` /\n  `consistent` / `dash` / `plus` / `sublist`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when the symbols used in the document for unordered\nlist items do not match the configured unordered list style:\n\n```markdown\n* Item 1\n+ Item 2\n- Item 3\n```\n\nTo fix this issue, use the configured style for list items throughout the\ndocument:\n\n```markdown\n* Item 1\n* Item 2\n* Item 3\n```\n\nThe configured list style can ensure all list styling is a specific symbol\n(`asterisk`, `plus`, `dash`), ensure each sublist has a consistent symbol that\ndiffers from its parent list (`sublist`), or ensure all list styles match the\nfirst list style (`consistent`).\n\nFor example, the following is valid for the `sublist` style because the\nouter-most indent uses asterisk, the middle indent uses plus, and the inner-most\nindent uses dash:\n\n```markdown\n* Item 1\n  + Item 2\n    - Item 3\n  + Item 4\n* Item 4\n  + Item 5\n```\n\nRationale: Consistent formatting makes it easier to understand a document.\n\n<a name=\"md005\"></a>\n\n## `MD005` - Inconsistent indentation for list items at the same level\n\nTags: `bullet`, `indentation`, `ul`\n\nAliases: `list-indent`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when list items are parsed as being at the same level,\nbut don't have the same indentation:\n\n```markdown\n* Item 1\n  * Nested Item 1\n  * Nested Item 2\n   * A misaligned item\n```\n\nUsually, this rule will be triggered because of a typo. Correct the indentation\nfor the list to fix it:\n\n```markdown\n* Item 1\n  * Nested Item 1\n  * Nested Item 2\n  * Nested Item 3\n```\n\nSequentially-ordered list markers are usually left-aligned such that all items\nhave the same starting column:\n\n```markdown\n...\n8. Item\n9. Item\n10. Item\n11. Item\n...\n```\n\nThis rule also supports right-alignment of list markers such that all items have\nthe same ending column:\n\n```markdown\n...\n 8. Item\n 9. Item\n10. Item\n11. Item\n...\n```\n\nRationale: Violations of this rule can lead to improperly rendered content.\n\n<a name=\"md007\"></a>\n\n## `MD007` - Unordered list indentation\n\nTags: `bullet`, `indentation`, `ul`\n\nAliases: `ul-indent`\n\nParameters:\n\n- `indent`: Spaces for indent (`integer`, default `2`)\n- `start_indent`: Spaces for first level indent (when start_indented is set)\n  (`integer`, default `2`)\n- `start_indented`: Whether to indent the first level of the list (`boolean`,\n  default `false`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when list items are not indented by the configured\nnumber of spaces (default: 2).\n\nExample:\n\n```markdown\n* List item\n   * Nested list item indented by 3 spaces\n```\n\nCorrected Example:\n\n```markdown\n* List item\n  * Nested list item indented by 2 spaces\n```\n\nNote: This rule applies to a sublist only if its parent lists are all also\nunordered (otherwise, extra indentation of ordered lists interferes with the\nrule).\n\nThe `start_indented` parameter allows the first level of lists to be indented by\nthe configured number of spaces rather than starting at zero. The `start_indent`\nparameter allows the first level of lists to be indented by a different number\nof spaces than the rest (ignored when `start_indented` is not set).\n\nRationale: Indenting by 2 spaces allows the content of a nested list to be in\nline with the start of the content of the parent list when a single space is\nused after the list marker. Indenting by 4 spaces is consistent with code blocks\nand simpler for editors to implement. Additionally, this can be a compatibility\nissue for other Markdown parsers, which require 4-space indents. More\ninformation: [Markdown Style Guide][markdown-style-guide].\n\nNote: See [Prettier.md](Prettier.md) for compatibility information.\n\n[markdown-style-guide]: https://cirosantilli.com/markdown-style-guide#indentation-of-content-inside-lists\n\n<a name=\"md009\"></a>\n\n## `MD009` - Trailing spaces\n\nTags: `whitespace`\n\nAliases: `no-trailing-spaces`\n\nParameters:\n\n- `br_spaces`: Spaces for line break (`integer`, default `2`)\n- `code_blocks`: Include code blocks (`boolean`, default `false`)\n- `list_item_empty_lines`: Allow spaces for empty lines in list items\n  (`boolean`, default `false`)\n- `strict`: Include unnecessary breaks (`boolean`, default `false`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered on any lines that end with unexpected whitespace. To fix\nthis, remove the trailing space from the end of the line.\n\nThe `br_spaces` parameter allows an exception to this rule for a specific number\nof trailing spaces, typically used to insert an explicit line break. The default\nvalue allows 2 spaces to indicate a hard break (\\<br> element). (You must set\n`br_spaces` to a value >= 2 for this parameter to take effect. Setting\n`br_spaces` to 1 behaves the same as 0, disallowing any trailing spaces.)\n\nBy default, trailing space is allowed in indented and fenced code blocks because\nsome programming languages require that. To report such instances, set the\n`code_blocks` parameter to `true`.\n\nBy default, this rule will not trigger when the allowed number of spaces is\nused, even when it doesn't create a hard break (for example, at the end of a\nparagraph). To report such instances, set the `strict` parameter to `true`.\n\n```markdown\nText text text\ntext[2 spaces]\n```\n\nUsing spaces to indent blank lines inside a list item is usually not necessary,\nbut some parsers require it. Set the `list_item_empty_lines` parameter to `true`\nto allow this (even when `strict` is `true`):\n\n```markdown\n- list item text\n  [2 spaces]\n  list item text\n```\n\nRationale: Except when being used to create a line break, trailing whitespace\nhas no purpose and does not affect the rendering of content.\n\n<a name=\"md010\"></a>\n\n## `MD010` - Hard tabs\n\nTags: `hard_tab`, `whitespace`\n\nAliases: `no-hard-tabs`\n\nParameters:\n\n- `code_blocks`: Include code blocks (`boolean`, default `true`)\n- `ignore_code_languages`: Fenced code languages to ignore (`string[]`, default\n  `[]`)\n- `spaces_per_tab`: Number of spaces for each hard tab (`integer`, default `1`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered by any lines that contain hard tab characters instead\nof using spaces for indentation. To fix this, replace any hard tab characters\nwith spaces instead.\n\nExample:\n\n<!-- markdownlint-disable no-hard-tabs -->\n\n```markdown\nSome text\n\n\t* hard tab character used to indent the list item\n```\n\n<!-- markdownlint-restore -->\n\nCorrected example:\n\n```markdown\nSome text\n\n    * Spaces used to indent the list item instead\n```\n\nYou have the option to exclude this rule for code blocks and spans. To do so,\nset the `code_blocks` parameter to `false`. Code blocks and spans are included\nby default since handling of tabs by Markdown tools can be inconsistent (e.g.,\nusing 4 vs. 8 spaces).\n\nWhen code blocks are scanned (e.g., by default or if `code_blocks` is `true`),\nthe `ignore_code_languages` parameter can be set to a list of languages that\nshould be ignored (i.e., hard tabs will be allowed, though not required). This\nmakes it easier for documents to include code for languages that require hard\ntabs.\n\nBy default, violations of this rule are fixed by replacing the tab with 1 space\ncharacter. To use a different number of spaces, set the `spaces_per_tab`\nparameter to the desired value.\n\nRationale: Hard tabs are often rendered inconsistently by different editors and\ncan be harder to work with than spaces.\n\nMore information:\n\n- <https://agiletribe.wordpress.com/2011/10/27/18-dont-use-tab-characters/>\n- <https://www.jwz.org/doc/tabs-vs-spaces.html>\n\n<a name=\"md011\"></a>\n\n## `MD011` - Reversed link syntax\n\nTags: `links`\n\nAliases: `no-reversed-links`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when text that appears to be a link is encountered, but\nwhere the syntax appears to have been reversed (the `[]` and `()` are\nreversed):\n\n```markdown\n(Incorrect link syntax)[https://www.example.com/]\n```\n\nTo fix this, swap the `[]` and `()` around:\n\n```markdown\n[Correct link syntax](https://www.example.com/)\n```\n\nNote: [Markdown Extra](https://wikipedia.org/wiki/Markdown_Extra)-style\nfootnotes do not trigger this rule:\n\n```markdown\nFor (example)[^1]\n```\n\nRationale: Reversed links are not rendered as usable links.\n\n<a name=\"md012\"></a>\n\n## `MD012` - Multiple consecutive blank lines\n\nTags: `blank_lines`, `whitespace`\n\nAliases: `no-multiple-blanks`\n\nParameters:\n\n- `maximum`: Consecutive blank lines (`integer`, default `1`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when there are multiple consecutive blank lines in the\ndocument:\n\n```markdown\nSome text here\n\n\nSome more text here\n```\n\nTo fix this, delete the offending lines:\n\n```markdown\nSome text here\n\nSome more text here\n```\n\nNote: this rule will not be triggered if there are multiple consecutive blank\nlines inside code blocks.\n\nNote: The `maximum` parameter can be used to configure the maximum number of\nconsecutive blank lines.\n\nRationale: Except in a code block, blank lines serve no purpose and do not\naffect the rendering of content.\n\n<a name=\"md013\"></a>\n\n## `MD013` - Line length\n\nTags: `line_length`\n\nAliases: `line-length`\n\nParameters:\n\n- `code_block_line_length`: Number of characters for code blocks (`integer`,\n  default `80`)\n- `code_blocks`: Include code blocks (`boolean`, default `true`)\n- `heading_line_length`: Number of characters for headings (`integer`, default\n  `80`)\n- `headings`: Include headings (`boolean`, default `true`)\n- `line_length`: Number of characters (`integer`, default `80`)\n- `stern`: Stern length checking (`boolean`, default `false`)\n- `strict`: Strict length checking (`boolean`, default `false`)\n- `tables`: Include tables (`boolean`, default `true`)\n\nThis rule is triggered when there are lines that are longer than the\nconfigured `line_length` (default: 80 characters). To fix this, split the line\nup into multiple lines. To set a different maximum length for headings, use\n`heading_line_length`. To set a different maximum length for code blocks, use\n`code_block_line_length`\n\nThis rule has an exception when there is no whitespace beyond the configured\nline length. This allows you to include items such as long URLs without being\nforced to break them in the middle. To disable this exception, set the `strict`\nparameter to `true` and an issue will be reported when any line is too long. To\nwarn for lines that are too long and could be fixed but allow long lines\nwithout spaces, set the `stern` parameter to `true`.\n\nFor example (assuming normal behavior):\n\n```markdown\nIF THIS LINE IS THE MAXIMUM LENGTH\nThis line is okay because there are-no-spaces-beyond-that-length\nThis line is a violation because there are spaces beyond that length\nThis-line-is-okay-because-there-are-no-spaces-anywhere-within\n```\n\nIn `strict` mode, the last three lines above are all violations. In `stern`\nmode, the middle two lines above are both violations, but the last is okay.\n\nYou have the option to exclude this rule for code blocks, tables, or headings.\nTo do so, set the `code_blocks`, `tables`, or `headings` parameter(s) to false.\n\nCode blocks are included in this rule by default since it is often a\nrequirement for document readability, and tentatively compatible with code\nrules. Still, some languages do not lend themselves to short lines.\n\nLines with link/image reference definitions and standalone lines (i.e., not part\nof a paragraph) with only a link/image (possibly using (strong) emphasis) are\nalways exempted from this rule (even in `strict` mode) because there is often no\nway to split such lines without breaking the URL.\n\nRationale: Extremely long lines can be difficult to work with in some editors.\nMore information: <https://cirosantilli.com/markdown-style-guide#line-wrapping>.\n\n<a name=\"md014\"></a>\n\n## `MD014` - Dollar signs used before commands without showing output\n\nTags: `code`\n\nAliases: `commands-show-output`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when there are code blocks showing shell commands to be\ntyped, and *all* of the shell commands are preceded by dollar signs ($):\n\n<!-- markdownlint-disable commands-show-output -->\n\n```markdown\n$ ls\n$ cat foo\n$ less bar\n```\n\n<!-- markdownlint-restore -->\n\nThe dollar signs are unnecessary in this situation, and should not be\nincluded:\n\n```markdown\nls\ncat foo\nless bar\n```\n\nShowing output for commands preceded by dollar signs does not trigger this rule:\n\n```markdown\n$ ls\nfoo bar\n$ cat foo\nHello world\n$ cat bar\nbaz\n```\n\nBecause some commands do not produce output, it is not a violation if *some*\ncommands do not have output:\n\n```markdown\n$ mkdir test\nmkdir: created directory 'test'\n$ ls test\n```\n\nRationale: It is easier to copy/paste and less noisy if the dollar signs\nare omitted when they are not needed. See\n<https://cirosantilli.com/markdown-style-guide#dollar-signs-in-shell-code>\nfor more information.\n\n<a name=\"md018\"></a>\n\n## `MD018` - No space after hash on atx style heading\n\nTags: `atx`, `headings`, `spaces`\n\nAliases: `no-missing-space-atx`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when spaces are missing after the hash characters\nin an atx style heading:\n\n```markdown\n#Heading 1\n\n##Heading 2\n```\n\nTo fix this, separate the heading text from the hash character by a single\nspace:\n\n```markdown\n# Heading 1\n\n## Heading 2\n```\n\nRationale: Violations of this rule can lead to improperly rendered content.\n\n<a name=\"md019\"></a>\n\n## `MD019` - Multiple spaces after hash on atx style heading\n\nTags: `atx`, `headings`, `spaces`\n\nAliases: `no-multiple-space-atx`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when more than one space is used to separate the\nheading text from the hash characters in an atx style heading:\n\n```markdown\n#  Heading 1\n\n##  Heading 2\n```\n\nTo fix this, separate the heading text from the hash character by a single\nspace:\n\n```markdown\n# Heading 1\n\n## Heading 2\n```\n\nRationale: Extra space has no purpose and does not affect the rendering of\ncontent.\n\n<a name=\"md020\"></a>\n\n## `MD020` - No space inside hashes on closed atx style heading\n\nTags: `atx_closed`, `headings`, `spaces`\n\nAliases: `no-missing-space-closed-atx`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when spaces are missing inside the hash characters\nin a closed atx style heading:\n\n```markdown\n#Heading 1#\n\n##Heading 2##\n```\n\nTo fix this, separate the heading text from the hash character by a single\nspace:\n\n```markdown\n# Heading 1 #\n\n## Heading 2 ##\n```\n\nNote: this rule will fire if either side of the heading is missing spaces.\n\nRationale: Violations of this rule can lead to improperly rendered content.\n\n<a name=\"md021\"></a>\n\n## `MD021` - Multiple spaces inside hashes on closed atx style heading\n\nTags: `atx_closed`, `headings`, `spaces`\n\nAliases: `no-multiple-space-closed-atx`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when more than one space is used to separate the\nheading text from the hash characters in a closed atx style heading:\n\n```markdown\n#  Heading 1  #\n\n##  Heading 2  ##\n```\n\nTo fix this, separate the heading text from the hash character by a single\nspace:\n\n```markdown\n# Heading 1 #\n\n## Heading 2 ##\n```\n\nNote: this rule will fire if either side of the heading contains multiple\nspaces.\n\nRationale: Extra space has no purpose and does not affect the rendering of\ncontent.\n\n<a name=\"md022\"></a>\n\n## `MD022` - Headings should be surrounded by blank lines\n\nTags: `blank_lines`, `headings`\n\nAliases: `blanks-around-headings`\n\nParameters:\n\n- `include_front_matter`: Include front matter content (`boolean`, default\n  `false`)\n- `lines_above`: Blank lines above heading (`integer|integer[]`, default `1`)\n- `lines_below`: Blank lines below heading (`integer|integer[]`, default `1`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when headings (any style) are either not preceded or not\nfollowed by at least one blank line:\n\n```markdown\n# Heading 1\nSome text\n\nSome more text\n## Heading 2\n```\n\nTo fix this, ensure that all headings have a blank line both before and after\n(except where the heading is at the beginning or end of the document):\n\n```markdown\n# Heading 1\n\nSome text\n\nSome more text\n\n## Heading 2\n```\n\nThe `lines_above` and `lines_below` parameters can be used to specify a\ndifferent number of blank lines (including `0`) above or below each heading.\nIf the value `-1` is used for either parameter, any number of blank lines is\nallowed. To customize the number of lines above or below each heading level\nindividually, specify a `number[]` where values correspond to heading levels\n1-6 (in order).\n\nNotes: If `lines_above` or `lines_below` are configured to require more than one\nblank line, [MD012/no-multiple-blanks](md012.md) should also be customized. This\nrule checks for *at least* as many blank lines as specified; any extra blank\nlines are ignored.\n\nBy default, [YAML](https://wikipedia.org/wiki/YAML) front matter is ignored, so\nthe following document reports no violations:\n\n```markdown\n---\ntitle: Title\n---\n## Heading\n```\n\nTo require the configured number of blank lines between front matter content and\na document's first heading, set the `include_front_matter` parameter to `true`.\n\nRationale: Aside from aesthetic reasons, some parsers, including `kramdown`,\nwill not parse headings that don't have a blank line before, and will parse them\nas regular text.\n\n<a name=\"md023\"></a>\n\n## `MD023` - Headings must start at the beginning of the line\n\nTags: `headings`, `spaces`\n\nAliases: `heading-start-left`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when a heading is indented by one or more spaces:\n\n```markdown\nSome text\n\n  # Indented heading\n```\n\nTo fix this, ensure that all headings start at the beginning of the line:\n\n```markdown\nSome text\n\n# Heading\n```\n\nNote that scenarios like block quotes \"indent\" the start of the line, so the\nfollowing is also correct:\n\n```markdown\n> # Heading in Block Quote\n```\n\nRationale: Headings that don't start at the beginning of the line will not be\nparsed as headings, and will instead appear as regular text.\n\n<a name=\"md024\"></a>\n\n## `MD024` - Multiple headings with the same content\n\nTags: `headings`\n\nAliases: `no-duplicate-heading`\n\nParameters:\n\n- `siblings_only`: Only check sibling headings (`boolean`, default `false`)\n\nThis rule is triggered if there are multiple headings in the document that have\nthe same text:\n\n```markdown\n# Some text\n\n## Some text\n```\n\nTo fix this, ensure that the content of each heading is different:\n\n```markdown\n# Some text\n\n## Some more text\n```\n\nIf the parameter `siblings_only` is set to `true`, duplication is allowed for\nheadings with different parents (as is common in changelogs):\n\n```markdown\n# Changelog\n\n## 1.0.0\n\n### Features\n\n## 2.0.0\n\n### Features\n```\n\nRationale: Some Markdown parsers generate anchors for headings based on the\nheading name; headings with the same content can cause problems with that.\n\n<a name=\"md025\"></a>\n\n## `MD025` - Multiple top-level headings in the same document\n\nTags: `headings`\n\nAliases: `single-h1`, `single-title`\n\nParameters:\n\n- `front_matter_title`: RegExp for matching title in front matter (`string`,\n  default `^\\s*title\\s*[:=]`)\n- `level`: Heading level (`integer`, default `1`)\n\nThis rule is triggered when a top-level heading is in use (the first line of\nthe file is an h1 heading), and more than one h1 heading is in use in the\ndocument:\n\n```markdown\n# Top level heading\n\n# Another top-level heading\n```\n\nTo fix, structure your document so there is a single h1 heading that is\nthe title for the document. Subsequent headings must be\nlower-level headings (h2, h3, etc.):\n\n```markdown\n# Title\n\n## Heading\n\n## Another heading\n```\n\nNote: The `level` parameter can be used to change the top-level (ex: to h2) in\ncases where an h1 is added externally.\n\nIf [YAML](https://wikipedia.org/wiki/YAML) front matter is present and\ncontains a `title` property (commonly used with blog posts), this rule treats\nthat as a top level heading and will report a violation for any subsequent\ntop-level headings. To use a different property name in the front matter,\nspecify the text of a regular expression via the `front_matter_title` parameter.\nTo disable the use of front matter by this rule, specify `\"\"` for\n`front_matter_title`.\n\nRationale: A top-level heading is an h1 on the first line of the file, and\nserves as the title for the document. If this convention is in use, then there\ncan not be more than one title for the document, and the entire document should\nbe contained within this heading.\n\n<a name=\"md026\"></a>\n\n## `MD026` - Trailing punctuation in heading\n\nTags: `headings`\n\nAliases: `no-trailing-punctuation`\n\nParameters:\n\n- `punctuation`: Punctuation characters (`string`, default `.,;:!。，；：！`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered on any heading that has one of the specified normal or\nfull-width punctuation characters as the last character in the line:\n\n```markdown\n# This is a heading.\n```\n\nTo fix this, remove the trailing punctuation:\n\n```markdown\n# This is a heading\n```\n\nNote: The `punctuation` parameter can be used to specify what characters count\nas punctuation at the end of a heading. For example, you can change it to\n`\".,;:\"` to allow headings that end with an exclamation point. `?` is\nallowed by default because of how common it is in headings of FAQ-style\ndocuments. Setting the `punctuation` parameter to `\"\"` allows all characters -\nand is equivalent to disabling the rule.\n\nNote: The trailing semicolon of [HTML entity references][html-entity-references]\nlike `&copy;`, `&#169;`, and `&#x000A9;` is ignored by this rule.\n\nRationale: Headings are not meant to be full sentences. More information:\n[Punctuation at the end of headers][end-punctuation].\n\n[end-punctuation]: https://cirosantilli.com/markdown-style-guide#punctuation-at-the-end-of-headers\n[html-entity-references]: https://wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references\n\n<a name=\"md027\"></a>\n\n## `MD027` - Multiple spaces after blockquote symbol\n\nTags: `blockquote`, `indentation`, `whitespace`\n\nAliases: `no-multiple-space-blockquote`\n\nParameters:\n\n- `list_items`: Include list items (`boolean`, default `true`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when blockquotes have more than one space after the\nblockquote (`>`) symbol:\n\n```markdown\n>  This is a blockquote with bad indentation\n>  there should only be one.\n```\n\nTo fix, remove any extraneous space:\n\n```markdown\n> This is a blockquote with correct\n> indentation.\n```\n\nInferring intended list indentation within a blockquote can be challenging;\nsetting the `list_items` parameter to `false` disables this rule for ordered\nand unordered list items.\n\nRationale: Consistent formatting makes it easier to understand a document.\n\n<a name=\"md028\"></a>\n\n## `MD028` - Blank line inside blockquote\n\nTags: `blockquote`, `whitespace`\n\nAliases: `no-blanks-blockquote`\n\nThis rule is triggered when two blockquote blocks are separated by nothing\nbut a blank line:\n\n```markdown\n> This is a blockquote\n> which is immediately followed by\n\n> this blockquote. In some cases,\n> these may be merged into one blockquote.\n```\n\nTo fix this, ensure that consecutive blockquotes have text (or an HTML comment)\nin between:\n\n```markdown\n> This is a blockquote.\n\nThis is paragraph text.\n\n> This is a second blockquote.\n\n<!-- This is an HTML comment -->\n\n> This is a third blockquote.\n```\n\nIf they are meant to be a single quote, add the blockquote symbol at the\nbeginning of the blank line:\n\n```markdown\n> This is a blockquote.\n>\n> This is the same blockquote.\n```\n\nRationale: Some Markdown parsers will treat two blockquotes separated by one\nor more blank lines as the same blockquote, while others will treat them as\nseparate blockquotes.\n\n<a name=\"md029\"></a>\n\n## `MD029` - Ordered list item prefix\n\nTags: `ol`\n\nAliases: `ol-prefix`\n\nParameters:\n\n- `style`: List style (`string`, default `one_or_ordered`, values `one` /\n  `one_or_ordered` / `ordered` / `zero`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered for ordered lists that do not either start with '1.' or\ndo not have a prefix that increases in numerical order (depending on the\nconfigured style). The less-common pattern of using '0.' as a first prefix or\nfor all prefixes is also supported.\n\nExample valid list if the style is configured as 'one':\n\n```markdown\n1. Do this.\n1. Do that.\n1. Done.\n```\n\nExamples of valid lists if the style is configured as 'ordered':\n\n```markdown\n1. Do this.\n2. Do that.\n3. Done.\n```\n\n```markdown\n0. Do this.\n1. Do that.\n2. Done.\n```\n\nAll three examples are valid when the style is configured as 'one_or_ordered'.\n\nExample valid list if the style is configured as 'zero':\n\n```markdown\n0. Do this.\n0. Do that.\n0. Done.\n```\n\nExample invalid list for all styles:\n\n```markdown\n1. Do this.\n3. Done.\n```\n\nThis rule supports 0-prefixing list items for uniform indentation and will\npreserve that when fixing:\n\n```markdown\n...\n08. Item\n09. Item\n10. Item\n11. Item\n```\n\nWhen list items appear to be right-aligned, fixes will maintain that alignment:\n\n```markdown\n...\n 8. Item\n 9. Item\n10. Item\n11. Item\n```\n\nNote: This rule will report violations for cases like the following where an\nimproperly-indented code block (or similar) appears between two list items and\n\"breaks\" the list in two:\n\n<!-- markdownlint-disable code-fence-style -->\n\n~~~markdown\n1. First list\n\n```text\nCode block\n```\n\n1. Second list\n~~~\n\nThe fix is to indent the code block so it becomes part of the preceding list\nitem as intended:\n\n~~~markdown\n1. First list\n\n   ```text\n   Code block\n   ```\n\n2. Still first list\n~~~\n\n<!-- markdownlint-restore -->\n\nRationale: Consistent formatting makes it easier to understand a document.\n\n<a name=\"md030\"></a>\n\n## `MD030` - Spaces after list markers\n\nTags: `ol`, `ul`, `whitespace`\n\nAliases: `list-marker-space`\n\nParameters:\n\n- `ol_multi`: Spaces for multi-line ordered list items (`integer`, default `1`)\n- `ol_single`: Spaces for single-line ordered list items (`integer`, default\n  `1`)\n- `ul_multi`: Spaces for multi-line unordered list items (`integer`, default\n  `1`)\n- `ul_single`: Spaces for single-line unordered list items (`integer`, default\n  `1`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule checks for the number of spaces between a list marker (e.g. '`-`',\n'`*`', '`+`' or '`1.`') and the text of the list item.\n\nThe number of spaces checked for depends on the document style in use, but the\ndefault is 1 space after any list marker:\n\n```markdown\n* Foo\n* Bar\n* Baz\n\n1. Foo\n1. Bar\n1. Baz\n\n1. Foo\n   * Bar\n1. Baz\n```\n\nA document style may change the number of spaces after unordered list items\nand ordered list items independently, as well as based on whether the content\nof every item in the list consists of a single paragraph or multiple\nparagraphs (including sub-lists and code blocks).\n\nFor example, the style guide at\n<https://cirosantilli.com/markdown-style-guide#spaces-after-list-marker>\nspecifies that 1 space after the list marker should be used if every item in\nthe list fits within a single paragraph, but to use 2 or 3 spaces (for ordered\nand unordered lists respectively) if there are multiple paragraphs of content\ninside the list:\n\n```markdown\n* Foo\n* Bar\n* Baz\n```\n\nvs.\n\n```markdown\n*   Foo\n\n    Second paragraph\n\n*   Bar\n```\n\nor\n\n```markdown\n1.  Foo\n\n    Second paragraph\n\n1.  Bar\n```\n\nTo fix this, ensure the correct number of spaces are used after the list marker\nfor your selected document style.\n\nRationale: Violations of this rule can lead to improperly rendered content.\n\nNote: See [Prettier.md](Prettier.md) for compatibility information.\n\n<a name=\"md031\"></a>\n\n## `MD031` - Fenced code blocks should be surrounded by blank lines\n\nTags: `blank_lines`, `code`\n\nAliases: `blanks-around-fences`\n\nParameters:\n\n- `list_items`: Include list items (`boolean`, default `true`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when fenced code blocks are either not preceded or not\nfollowed by a blank line:\n\n````markdown\nSome text\n```\nCode block\n```\n\n```\nAnother code block\n```\nSome more text\n````\n\nTo fix this, ensure that all fenced code blocks have a blank line both before\nand after (except where the block is at the beginning or end of the document):\n\n````markdown\nSome text\n\n```\nCode block\n```\n\n```\nAnother code block\n```\n\nSome more text\n````\n\nSet the `list_items` parameter to `false` to disable this rule for list items.\nDisabling this behavior for lists can be useful if it is necessary to create a\n[tight](https://spec.commonmark.org/0.29/#tight) list containing a code fence.\n\nRationale: Aside from aesthetic reasons, some parsers, including kramdown, will\nnot parse fenced code blocks that don't have blank lines before and after them.\n\n<a name=\"md032\"></a>\n\n## `MD032` - Lists should be surrounded by blank lines\n\nTags: `blank_lines`, `bullet`, `ol`, `ul`\n\nAliases: `blanks-around-lists`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when lists (of any kind) are either not preceded or not\nfollowed by a blank line:\n\n```markdown\nSome text\n* List item\n* List item\n\n1. List item\n2. List item\n***\n```\n\nIn the first case above, text immediately precedes the unordered list. In the\nsecond case above, a thematic break immediately follows the ordered list. To fix\nviolations of this rule, ensure that all lists have a blank line both before and\nafter (except when the list is at the very beginning or end of the document):\n\n```markdown\nSome text\n\n* List item\n* List item\n\n1. List item\n2. List item\n\n***\n```\n\nNote that the following case is **not** a violation of this rule:\n\n```markdown\n1. List item\n   More item 1\n2. List item\nMore item 2\n```\n\nAlthough it is not indented, the text \"More item 2\" is referred to as a\n[lazy continuation line][lazy-continuation] and considered part of the second\nlist item.\n\nRationale: In addition to aesthetic reasons, some parsers, including kramdown,\nwill not parse lists that don't have blank lines before and after them.\n\n[lazy-continuation]: https://spec.commonmark.org/0.30/#lazy-continuation-line\n\n<a name=\"md033\"></a>\n\n## `MD033` - Inline HTML\n\nTags: `html`\n\nAliases: `no-inline-html`\n\nParameters:\n\n- `allowed_elements`: Allowed elements (`string[]`, default `[]`)\n- `table_allowed_elements`: Allowed elements in tables (`string[]`, default\n  `[]`)\n\nThis rule is triggered whenever raw HTML is used in a Markdown document:\n\n```markdown\n<h1>Inline HTML heading</h1>\n```\n\nTo fix this, use 'pure' Markdown instead of including raw HTML:\n\n```markdown\n# Markdown heading\n```\n\nTo allow specific HTML elements anywhere in Markdown content, set the\n`allowed_elements` parameter to a list of HTML element names. To allow a\nspecific set of HTML elements within Markdown tables, set the\n`table_allowed_elements` parameter to a list of HTML element names. This can be\nused to permit the use of `<br>`-style line breaks only within Markdown tables.\n\nRationale: Raw HTML is allowed in Markdown, but this rule is included for\nthose who want their documents to only include \"pure\" Markdown, or for those\nwho are rendering Markdown documents into something other than HTML.\n\n<a name=\"md034\"></a>\n\n## `MD034` - Bare URL used\n\nTags: `links`, `url`\n\nAliases: `no-bare-urls`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered whenever a URL or email address appears without\nsurrounding angle brackets:\n\n```markdown\nFor more info, visit https://www.example.com/ or email user@example.com.\n```\n\nTo fix this, add angle brackets around the URL or email address:\n\n```markdown\nFor more info, visit <https://www.example.com/> or email <user@example.com>.\n```\n\nIf a URL or email address contains non-ASCII characters, it may be not be\nhandled as intended even when angle brackets are present. In such cases,\n[percent-encoding](https://wikipedia.org/wiki/Percent-encoding) can be used\nto comply with the required syntax for URL and email.\n\nNote: To include a bare URL or email without it being converted into a link,\nwrap it in a code span:\n\n```markdown\nNot a clickable link: `https://www.example.com`\n```\n\nNote: The following scenario does not trigger this rule because it could be a\nshortcut link:\n\n```markdown\n[https://www.example.com]\n```\n\nNote: The following syntax triggers this rule because the nested link could be\na shortcut link (which takes precedence):\n\n```markdown\n[text [shortcut] text](https://example.com)\n```\n\nTo avoid this, escape both inner brackets:\n\n```markdown\n[link \\[text\\] link](https://example.com)\n```\n\nRationale: Without angle brackets, a bare URL or email isn't converted into a\nlink by some Markdown parsers.\n\n<a name=\"md035\"></a>\n\n## `MD035` - Horizontal rule style\n\nTags: `hr`\n\nAliases: `hr-style`\n\nParameters:\n\n- `style`: Horizontal rule style (`string`, default `consistent`)\n\nThis rule is triggered when inconsistent styles of horizontal rules (also known\nas \"thematic breaks\") are used in a document:\n\n```markdown\n---\n\n- - -\n\n***\n\n* * *\n\n****\n```\n\nTo fix this, use the same horizontal rule syntax everywhere:\n\n```markdown\n---\n\n---\n\n---\n```\n\nThe `style` parameter's default value `consistent` ensures all horizontal rules\nin a document match the first horizontal rule in that document. To enforce a\nspecific pattern of characters, set the `style` parameter to that string (e.g.,\n`\"* * *\"`).\n\nNote: In order to be recognized as a horizontal rule, a line must contain three\nor more matching `-`, `_`, or `*` characters with optional space between.\n\nRationale: Consistent formatting makes it easier to understand a document.\n\n<a name=\"md036\"></a>\n\n## `MD036` - Emphasis used instead of a heading\n\nTags: `emphasis`, `headings`\n\nAliases: `no-emphasis-as-heading`\n\nParameters:\n\n- `punctuation`: Punctuation characters (`string`, default `.,;:!?。，；：！？`)\n\nThis check looks for instances where emphasized (i.e. bold or italic) text is\nused to separate sections, where a heading should be used instead:\n\n```markdown\n**My document**\n\nLorem ipsum dolor sit amet...\n\n_Another section_\n\nConsectetur adipiscing elit, sed do eiusmod.\n```\n\nTo fix this, use Markdown headings instead of emphasized text to denote\nsections:\n\n```markdown\n# My document\n\nLorem ipsum dolor sit amet...\n\n## Another section\n\nConsectetur adipiscing elit, sed do eiusmod.\n```\n\nNote: This rule looks for single-line paragraphs that consist entirely\nof emphasized text. It won't fire on emphasis used within regular text,\nmulti-line emphasized paragraphs, or paragraphs ending in punctuation\n(normal or full-width). Similarly to rule MD026, you can configure what\ncharacters are recognized as punctuation.\n\nRationale: Using emphasis instead of a heading prevents tools from inferring\nthe structure of a document. More information:\n<https://cirosantilli.com/markdown-style-guide#emphasis-vs-headers>.\n\n<a name=\"md037\"></a>\n\n## `MD037` - Spaces inside emphasis markers\n\nTags: `emphasis`, `whitespace`\n\nAliases: `no-space-in-emphasis`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when emphasis markers (bold, italic) are used, but they\nhave spaces between the markers and the text:\n\n```markdown\nHere is some ** bold ** text.\n\nHere is some * italic * text.\n\nHere is some more __ bold __ text.\n\nHere is some more _ italic _ text.\n```\n\nTo fix this, remove the spaces around the emphasis markers:\n\n```markdown\nHere is some **bold** text.\n\nHere is some *italic* text.\n\nHere is some more __bold__ text.\n\nHere is some more _italic_ text.\n```\n\nRationale: Emphasis is only parsed as such when the asterisks/underscores\naren't surrounded by spaces. This rule attempts to detect where\nthey were surrounded by spaces, but it appears that emphasized text was\nintended by the author.\n\n<a name=\"md038\"></a>\n\n## `MD038` - Spaces inside code span elements\n\nTags: `code`, `whitespace`\n\nAliases: `no-space-in-code`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered for code spans containing content with unnecessary space\nnext to the beginning or ending backticks:\n\n```markdown\n`some text `\n\n` some text`\n\n`   some text   `\n```\n\nTo fix this, remove the extra space characters from the beginning and ending:\n\n```markdown\n`some text`\n```\n\nNote: A single leading *and* trailing space is allowed by the specification and\ntrimmed by the parser to support code spans that begin or end with a backtick:\n\n```markdown\n`` `backticks` ``\n\n`` backtick` ``\n```\n\nNote: When single-space padding is present in the input, it will be preserved\n(even if unnecessary):\n\n```markdown\n` code `\n```\n\nNote: Code spans containing only spaces are allowed by the specification and are\nalso preserved:\n\n```markdown\n` `\n\n`   `\n```\n\nRationale: Violations of this rule are usually unintentional and can lead to\nimproperly-rendered content.\n\n<a name=\"md039\"></a>\n\n## `MD039` - Spaces inside link text\n\nTags: `links`, `whitespace`\n\nAliases: `no-space-in-links`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered on links that have spaces surrounding the link text:\n\n```markdown\n[ a link ](https://www.example.com/)\n```\n\nTo fix this, remove the spaces surrounding the link text:\n\n```markdown\n[a link](https://www.example.com/)\n```\n\nRationale: Consistent formatting makes it easier to understand a document.\n\n<a name=\"md040\"></a>\n\n## `MD040` - Fenced code blocks should have a language specified\n\nTags: `code`, `language`\n\nAliases: `fenced-code-language`\n\nParameters:\n\n- `allowed_languages`: List of languages (`string[]`, default `[]`)\n- `language_only`: Require language only (`boolean`, default `false`)\n\nThis rule is triggered when fenced code blocks are used, but a language isn't\nspecified:\n\n````markdown\n```\n#!/bin/bash\necho Hello world\n```\n````\n\nTo fix this, add a language specifier to the code block:\n\n````markdown\n```bash\n#!/bin/bash\necho Hello world\n```\n````\n\nTo display a code block without syntax highlighting, use:\n\n````markdown\n```text\nPlain text in a code block\n```\n````\n\nYou can configure the `allowed_languages` parameter to specify a list of\nlanguages code blocks could use. Languages are case sensitive. The default value\nis `[]` which means any language specifier is valid.\n\nYou can prevent extra data from being present in the info string of fenced code\nblocks. To do so, set the `language_only` parameter to `true`.\n\n<!-- markdownlint-disable-next-line no-space-in-code -->\nInfo strings with leading/trailing whitespace (ex: `js `) or other content (ex:\n`ruby startline=3`) will trigger this rule.\n\nRationale: Specifying a language improves content rendering by using the\ncorrect syntax highlighting for code. More information:\n<https://cirosantilli.com/markdown-style-guide#option-code-fenced>.\n\n<a name=\"md041\"></a>\n\n## `MD041` - First line in a file should be a top-level heading\n\nTags: `headings`\n\nAliases: `first-line-h1`, `first-line-heading`\n\nParameters:\n\n- `allow_preamble`: Allow content before first heading (`boolean`, default\n  `false`)\n- `front_matter_title`: RegExp for matching title in front matter (`string`,\n  default `^\\s*title\\s*[:=]`)\n- `level`: Heading level (`integer`, default `1`)\n\nThis rule is intended to ensure documents have a title and is triggered when\nthe first line in a document is not a top-level ([HTML][HTML] `h1`) heading:\n\n```markdown\nThis is a document without a heading\n```\n\nTo fix this, add a top-level heading to the beginning of the document:\n\n```markdown\n# Document Heading\n\nThis is a document with a top-level heading\n```\n\nBecause it is common for projects on GitHub to use an image for the heading of\n`README.md` and that pattern is not well-supported by Markdown, HTML headings\nare also permitted by this rule. For example:\n\n```markdown\n<h1 align=\"center\"><img src=\"https://placekitten.com/300/150\"/></h1>\n\nThis is a document with a top-level HTML heading\n```\n\nIn some cases, a document's title heading may be preceded by text like a table\nof contents. This is not ideal for accessibility, but can be allowed by setting\nthe `allow_preamble` parameter to `true`.\n\n```markdown\nThis is a document with preamble text\n\n# Document Heading\n```\n\nIf [YAML][YAML] front matter is present and contains a `title` property\n(commonly used with blog posts), this rule will not report a violation. To use a\ndifferent property name in the front matter, specify the text of a [regular\nexpression][RegExp] via the `front_matter_title` parameter. To disable the use\nof front matter by this rule, specify `\"\"` for `front_matter_title`.\n\nThe `level` parameter can be used to change the top-level heading (ex: to `h2`)\nin cases where an `h1` is added externally.\n\nRationale: The top-level heading often acts as the title of a document. More\ninformation: <https://cirosantilli.com/markdown-style-guide#top-level-header>.\n\n[HTML]: https://wikipedia.org/wiki/HTML\n[RegExp]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions\n[YAML]: https://wikipedia.org/wiki/YAML\n\n<a name=\"md042\"></a>\n\n## `MD042` - No empty links\n\nTags: `links`\n\nAliases: `no-empty-links`\n\nThis rule is triggered when an empty link is encountered:\n\n```markdown\n[an empty link]()\n```\n\nTo fix the violation, provide a destination for the link:\n\n```markdown\n[a valid link](https://example.com/)\n```\n\nEmpty fragments will trigger this rule:\n\n```markdown\n[an empty fragment](#)\n\n[an empty link definition][empty]\n\n[empty]: #\n```\n\nBut non-empty fragments will not:\n\n```markdown\n[a valid fragment](#fragment)\n```\n\nEmpty link definitions\n\nRationale: Empty links do not lead anywhere and therefore don't function as\nlinks.\n\n<a name=\"md043\"></a>\n\n## `MD043` - Required heading structure\n\nTags: `headings`\n\nAliases: `required-headings`\n\nParameters:\n\n- `headings`: List of headings (`string[]|null`, default `null`)\n- `match_case`: Match case of headings (`boolean`, default `false`)\n\nThis rule is triggered when the headings in a file do not match the array of\nheadings passed to the rule. It can be used to enforce a standard heading\nstructure for a set of files.\n\nTo require exactly the following structure:\n\n```markdown\n# Heading\n## Item\n### Detail\n```\n\nSet the `headings` parameter to:\n\n```json\n[\n    \"# Heading\",\n    \"## Item\",\n    \"### Detail\"\n]\n```\n\nTo allow optional headings as with the following structure:\n\n```markdown\n# Heading\n## Item\n### Detail (optional)\n### Example (optional)\n## Foot\n### Notes (optional)\n```\n\nUse the special value `*` meaning \"zero or more unspecified headings\", the\nspecial value `+` meaning \"one or more unspecified headings\", or the special\nvalue `?` meaning \"exactly one unspecified heading\" and set the `headings`\nparameter to something like:\n\n```json\n[\n    \"# Heading\",\n    \"## Item\",\n    \"*\",\n    \"## Foot\",\n    \"+\"\n]\n```\n\nTo require a heading with a specific level and text matching a specific pattern\n(for example, a one-word project name):\n\n```markdown\n# Project\n## Description\n## Examples\n```\n\nReplace the `#` prefix character(s) with `%` and specify a regular expression;\nthe following example requires a level 1 heading with a single word made up of\nat least 4 letters:\n\n```json\n[\n    \"% [a-zA-Z]{4,}\",\n    \"## Description\",\n    \"## Examples\"\n]\n```\n\nTo handle repeating heading sections (common in `CHANGELOG` files) such as the\nfollowing:\n\n```markdown\n# Changelog\n## 1.0.0\n### Fixes\n### Features\n## 2.0.0\n### Fixes\n### Features\n```\n\nUse the special value `^` meaning \"if the next heading does not match, loop\nback to the previous matching marker\":\n\n```json\n[\n    \"# Changelog\",\n    \"^\",\n    \"%% ^\\\\d+\\\\.\\\\d+\\\\.\\\\d+$\",\n    \"### Fixes\",\n    \"### Features\",\n    \"^\"\n]\n```\n\nThe simple form shown above is enough for most scenarios; if multiple loops are\nneeded, matching pairs of `^^`, `^^^`, etc. can be used in conjunction. The\nprefix `%` and the special value `?` are supported with loops, but `*` and `+`\nare not and will result in undefined behavior. To avoid infinite looping, a\nviolation is reported if the rule loops more than 1,000 times.\n\nWhen an error is detected, this rule outputs the line number of the first\nproblematic heading (otherwise, it outputs the last line number of the file).\n\nNote that while the `headings` parameter uses the \"## Text\" ATX heading style\nfor simplicity, a file may use any supported heading style.\n\nBy default, the case of headings in the document is not required to match that\nof `headings`. To require that case match exactly, set the `match_case`\nparameter to `true`.\n\nRationale: Projects may wish to enforce a consistent document structure across\na set of similar content.\n\n<a name=\"md044\"></a>\n\n## `MD044` - Proper names should have the correct capitalization\n\nTags: `spelling`\n\nAliases: `proper-names`\n\nParameters:\n\n- `code_blocks`: Include code blocks (`boolean`, default `true`)\n- `html_elements`: Include HTML elements (`boolean`, default `true`)\n- `names`: List of proper names (`string[]`, default `[]`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when any of the strings in the `names` array do not have\nthe specified capitalization. It can be used to enforce a standard letter case\nfor the names of projects and products.\n\nFor example, the language \"JavaScript\" is usually written with both the 'J' and\n'S' capitalized - though sometimes the 's' or 'j' appear in lower-case. To\nenforce the proper capitalization, specify the desired letter case in the\n`names` array:\n\n```json\n[\n    \"JavaScript\"\n]\n```\n\nSometimes a proper name is capitalized differently in certain contexts. In such\ncases, add both forms to the `names` array:\n\n```json\n[\n    \"GitHub\",\n    \"github.com\"\n]\n```\n\nSet the `code_blocks` parameter to `false` to disable this rule for code blocks\nand spans. Set the `html_elements` parameter to `false` to disable this rule\nfor HTML elements and attributes (such as when using a proper name as part of\na path for `a`/`href` or `img`/`src`).\n\nRationale: Incorrect capitalization of proper names is usually a mistake.\n\n<a name=\"md045\"></a>\n\n## `MD045` - Images should have alternate text (alt text)\n\nTags: `accessibility`, `images`\n\nAliases: `no-alt-text`\n\nThis rule reports a violation when an image is missing alternate text (alt text)\ninformation.\n\nAlternate text is commonly specified inline as:\n\n```markdown\n![Alternate text](image.jpg)\n```\n\nOr with reference syntax as:\n\n```markdown\n![Alternate text][ref]\n\n...\n\n[ref]: image.jpg \"Optional title\"\n```\n\nOr with HTML as:\n\n```html\n<img src=\"image.jpg\" alt=\"Alternate text\" />\n```\n\nNote: If the [HTML `aria-hidden` attribute][aria-hidden] is used to hide the\nimage from assistive technology, this rule does not report a violation:\n\n```html\n<img src=\"image.jpg\" aria-hidden=\"true\" />\n```\n\nGuidance for writing alternate text is available from the [W3C][w3c],\n[Wikipedia][wikipedia], and [other locations][phase2technology].\n\nRationale: Alternate text is important for ac"},"items":[{"name":"Rules.md","path":"doc/Rules.md","rawUrl":"https://raw.githubusercontent.com/DavidAnson/markdownlint/HEAD/doc/Rules.md","title":"doc - Development & Architecture Rules","category":"root-instruction","format":"markdown","content":"# Rules\n\nThis document contains a description of all rules, what they are checking for,\nas well as examples of documents that break the rule and corrected\nversions of the examples.\n\n<a name=\"md001\"></a>\n\n## `MD001` - Heading levels should only increment by one level at a time\n\nTags: `headings`\n\nAliases: `heading-increment`\n\nParameters:\n\n- `front_matter_title`: RegExp for matching title in front matter (`string`,\n  default `^\\s*title\\s*[:=]`)\n\nThis rule is triggered when you skip heading levels in a Markdown document, for\nexample:\n\n```markdown\n# Heading 1\n\n### Heading 3\n\nWe skipped out a 2nd level heading in this document\n```\n\nWhen using multiple heading levels, nested headings should increase by only one\nlevel at a time:\n\n```markdown\n# Heading 1\n\n## Heading 2\n\n### Heading 3\n\n#### Heading 4\n\n## Another Heading 2\n\n### Another Heading 3\n```\n\nIf [YAML](https://wikipedia.org/wiki/YAML) front matter is present and\ncontains a `title` property (commonly used with blog posts), this rule treats\nthat as a top level heading and will report a violation if the actual first\nheading is not a level 2 heading. To use a different property name in the\nfront matter, specify the text of a regular expression via the\n`front_matter_title` parameter. To disable the use of front matter by this\nrule, specify `\"\"` for `front_matter_title`. When front matter is not present,\nthe first heading can be any level.\n\nRationale: Headings represent the structure of a document and can be confusing\nwhen skipped - especially for accessibility scenarios. More information:\n<https://www.w3.org/WAI/tutorials/page-structure/headings/>.\n\n<a name=\"md003\"></a>\n\n## `MD003` - Heading style\n\nTags: `headings`\n\nAliases: `heading-style`\n\nParameters:\n\n- `style`: Heading style (`string`, default `consistent`, values `atx` /\n  `atx_closed` / `consistent` / `setext` / `setext_with_atx` /\n  `setext_with_atx_closed`)\n\nThis rule is triggered when different heading styles are used in the same\ndocument:\n\n```markdown\n# ATX style H1\n\n## Closed ATX style H2 ##\n\nSetext style H1\n===============\n```\n\nTo fix the issue, use consistent heading styles throughout the document:\n\n```markdown\n# ATX style H1\n\n## ATX style H2\n```\n\nThe `setext_with_atx` and `setext_with_atx_closed` settings allow ATX-style\nheadings of level 3 or more in documents with setext-style headings (which only\nsupport level 1 and 2 headings):\n\n```markdown\nSetext style H1\n===============\n\nSetext style H2\n---------------\n\n### ATX style H3\n```\n\nNote: The configured heading style can be a specific style to require (`atx`,\n`atx_closed`, `setext`, `setext_with_atx`, `setext_with_atx_closed`), or can\nrequire that all heading styles match the first heading style via `consistent`.\n\nNote: The placement of a horizontal rule directly below a line of text can\ntrigger this rule by turning that text into a level 2 setext-style heading:\n\n```markdown\nA line of text followed by a horizontal rule becomes a heading\n---\n```\n\nRationale: Consistent formatting makes it easier to understand a document.\n\n<a name=\"md004\"></a>\n\n## `MD004` - Unordered list style\n\nTags: `bullet`, `ul`\n\nAliases: `ul-style`\n\nParameters:\n\n- `style`: List style (`string`, default `consistent`, values `asterisk` /\n  `consistent` / `dash` / `plus` / `sublist`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when the symbols used in the document for unordered\nlist items do not match the configured unordered list style:\n\n```markdown\n* Item 1\n+ Item 2\n- Item 3\n```\n\nTo fix this issue, use the configured style for list items throughout the\ndocument:\n\n```markdown\n* Item 1\n* Item 2\n* Item 3\n```\n\nThe configured list style can ensure all list styling is a specific symbol\n(`asterisk`, `plus`, `dash`), ensure each sublist has a consistent symbol that\ndiffers from its parent list (`sublist`), or ensure all list styles match the\nfirst list style (`consistent`).\n\nFor example, the following is valid for the `sublist` style because the\nouter-most indent uses asterisk, the middle indent uses plus, and the inner-most\nindent uses dash:\n\n```markdown\n* Item 1\n  + Item 2\n    - Item 3\n  + Item 4\n* Item 4\n  + Item 5\n```\n\nRationale: Consistent formatting makes it easier to understand a document.\n\n<a name=\"md005\"></a>\n\n## `MD005` - Inconsistent indentation for list items at the same level\n\nTags: `bullet`, `indentation`, `ul`\n\nAliases: `list-indent`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when list items are parsed as being at the same level,\nbut don't have the same indentation:\n\n```markdown\n* Item 1\n  * Nested Item 1\n  * Nested Item 2\n   * A misaligned item\n```\n\nUsually, this rule will be triggered because of a typo. Correct the indentation\nfor the list to fix it:\n\n```markdown\n* Item 1\n  * Nested Item 1\n  * Nested Item 2\n  * Nested Item 3\n```\n\nSequentially-ordered list markers are usually left-aligned such that all items\nhave the same starting column:\n\n```markdown\n...\n8. Item\n9. Item\n10. Item\n11. Item\n...\n```\n\nThis rule also supports right-alignment of list markers such that all items have\nthe same ending column:\n\n```markdown\n...\n 8. Item\n 9. Item\n10. Item\n11. Item\n...\n```\n\nRationale: Violations of this rule can lead to improperly rendered content.\n\n<a name=\"md007\"></a>\n\n## `MD007` - Unordered list indentation\n\nTags: `bullet`, `indentation`, `ul`\n\nAliases: `ul-indent`\n\nParameters:\n\n- `indent`: Spaces for indent (`integer`, default `2`)\n- `start_indent`: Spaces for first level indent (when start_indented is set)\n  (`integer`, default `2`)\n- `start_indented`: Whether to indent the first level of the list (`boolean`,\n  default `false`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when list items are not indented by the configured\nnumber of spaces (default: 2).\n\nExample:\n\n```markdown\n* List item\n   * Nested list item indented by 3 spaces\n```\n\nCorrected Example:\n\n```markdown\n* List item\n  * Nested list item indented by 2 spaces\n```\n\nNote: This rule applies to a sublist only if its parent lists are all also\nunordered (otherwise, extra indentation of ordered lists interferes with the\nrule).\n\nThe `start_indented` parameter allows the first level of lists to be indented by\nthe configured number of spaces rather than starting at zero. The `start_indent`\nparameter allows the first level of lists to be indented by a different number\nof spaces than the rest (ignored when `start_indented` is not set).\n\nRationale: Indenting by 2 spaces allows the content of a nested list to be in\nline with the start of the content of the parent list when a single space is\nused after the list marker. Indenting by 4 spaces is consistent with code blocks\nand simpler for editors to implement. Additionally, this can be a compatibility\nissue for other Markdown parsers, which require 4-space indents. More\ninformation: [Markdown Style Guide][markdown-style-guide].\n\nNote: See [Prettier.md](Prettier.md) for compatibility information.\n\n[markdown-style-guide]: https://cirosantilli.com/markdown-style-guide#indentation-of-content-inside-lists\n\n<a name=\"md009\"></a>\n\n## `MD009` - Trailing spaces\n\nTags: `whitespace`\n\nAliases: `no-trailing-spaces`\n\nParameters:\n\n- `br_spaces`: Spaces for line break (`integer`, default `2`)\n- `code_blocks`: Include code blocks (`boolean`, default `false`)\n- `list_item_empty_lines`: Allow spaces for empty lines in list items\n  (`boolean`, default `false`)\n- `strict`: Include unnecessary breaks (`boolean`, default `false`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered on any lines that end with unexpected whitespace. To fix\nthis, remove the trailing space from the end of the line.\n\nThe `br_spaces` parameter allows an exception to this rule for a specific number\nof trailing spaces, typically used to insert an explicit line break. The default\nvalue allows 2 spaces to indicate a hard break (\\<br> element). (You must set\n`br_spaces` to a value >= 2 for this parameter to take effect. Setting\n`br_spaces` to 1 behaves the same as 0, disallowing any trailing spaces.)\n\nBy default, trailing space is allowed in indented and fenced code blocks because\nsome programming languages require that. To report such instances, set the\n`code_blocks` parameter to `true`.\n\nBy default, this rule will not trigger when the allowed number of spaces is\nused, even when it doesn't create a hard break (for example, at the end of a\nparagraph). To report such instances, set the `strict` parameter to `true`.\n\n```markdown\nText text text\ntext[2 spaces]\n```\n\nUsing spaces to indent blank lines inside a list item is usually not necessary,\nbut some parsers require it. Set the `list_item_empty_lines` parameter to `true`\nto allow this (even when `strict` is `true`):\n\n```markdown\n- list item text\n  [2 spaces]\n  list item text\n```\n\nRationale: Except when being used to create a line break, trailing whitespace\nhas no purpose and does not affect the rendering of content.\n\n<a name=\"md010\"></a>\n\n## `MD010` - Hard tabs\n\nTags: `hard_tab`, `whitespace`\n\nAliases: `no-hard-tabs`\n\nParameters:\n\n- `code_blocks`: Include code blocks (`boolean`, default `true`)\n- `ignore_code_languages`: Fenced code languages to ignore (`string[]`, default\n  `[]`)\n- `spaces_per_tab`: Number of spaces for each hard tab (`integer`, default `1`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered by any lines that contain hard tab characters instead\nof using spaces for indentation. To fix this, replace any hard tab characters\nwith spaces instead.\n\nExample:\n\n<!-- markdownlint-disable no-hard-tabs -->\n\n```markdown\nSome text\n\n\t* hard tab character used to indent the list item\n```\n\n<!-- markdownlint-restore -->\n\nCorrected example:\n\n```markdown\nSome text\n\n    * Spaces used to indent the list item instead\n```\n\nYou have the option to exclude this rule for code blocks and spans. To do so,\nset the `code_blocks` parameter to `false`. Code blocks and spans are included\nby default since handling of tabs by Markdown tools can be inconsistent (e.g.,\nusing 4 vs. 8 spaces).\n\nWhen code blocks are scanned (e.g., by default or if `code_blocks` is `true`),\nthe `ignore_code_languages` parameter can be set to a list of languages that\nshould be ignored (i.e., hard tabs will be allowed, though not required). This\nmakes it easier for documents to include code for languages that require hard\ntabs.\n\nBy default, violations of this rule are fixed by replacing the tab with 1 space\ncharacter. To use a different number of spaces, set the `spaces_per_tab`\nparameter to the desired value.\n\nRationale: Hard tabs are often rendered inconsistently by different editors and\ncan be harder to work with than spaces.\n\nMore information:\n\n- <https://agiletribe.wordpress.com/2011/10/27/18-dont-use-tab-characters/>\n- <https://www.jwz.org/doc/tabs-vs-spaces.html>\n\n<a name=\"md011\"></a>\n\n## `MD011` - Reversed link syntax\n\nTags: `links`\n\nAliases: `no-reversed-links`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when text that appears to be a link is encountered, but\nwhere the syntax appears to have been reversed (the `[]` and `()` are\nreversed):\n\n```markdown\n(Incorrect link syntax)[https://www.example.com/]\n```\n\nTo fix this, swap the `[]` and `()` around:\n\n```markdown\n[Correct link syntax](https://www.example.com/)\n```\n\nNote: [Markdown Extra](https://wikipedia.org/wiki/Markdown_Extra)-style\nfootnotes do not trigger this rule:\n\n```markdown\nFor (example)[^1]\n```\n\nRationale: Reversed links are not rendered as usable links.\n\n<a name=\"md012\"></a>\n\n## `MD012` - Multiple consecutive blank lines\n\nTags: `blank_lines`, `whitespace`\n\nAliases: `no-multiple-blanks`\n\nParameters:\n\n- `maximum`: Consecutive blank lines (`integer`, default `1`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when there are multiple consecutive blank lines in the\ndocument:\n\n```markdown\nSome text here\n\n\nSome more text here\n```\n\nTo fix this, delete the offending lines:\n\n```markdown\nSome text here\n\nSome more text here\n```\n\nNote: this rule will not be triggered if there are multiple consecutive blank\nlines inside code blocks.\n\nNote: The `maximum` parameter can be used to configure the maximum number of\nconsecutive blank lines.\n\nRationale: Except in a code block, blank lines serve no purpose and do not\naffect the rendering of content.\n\n<a name=\"md013\"></a>\n\n## `MD013` - Line length\n\nTags: `line_length`\n\nAliases: `line-length`\n\nParameters:\n\n- `code_block_line_length`: Number of characters for code blocks (`integer`,\n  default `80`)\n- `code_blocks`: Include code blocks (`boolean`, default `true`)\n- `heading_line_length`: Number of characters for headings (`integer`, default\n  `80`)\n- `headings`: Include headings (`boolean`, default `true`)\n- `line_length`: Number of characters (`integer`, default `80`)\n- `stern`: Stern length checking (`boolean`, default `false`)\n- `strict`: Strict length checking (`boolean`, default `false`)\n- `tables`: Include tables (`boolean`, default `true`)\n\nThis rule is triggered when there are lines that are longer than the\nconfigured `line_length` (default: 80 characters). To fix this, split the line\nup into multiple lines. To set a different maximum length for headings, use\n`heading_line_length`. To set a different maximum length for code blocks, use\n`code_block_line_length`\n\nThis rule has an exception when there is no whitespace beyond the configured\nline length. This allows you to include items such as long URLs without being\nforced to break them in the middle. To disable this exception, set the `strict`\nparameter to `true` and an issue will be reported when any line is too long. To\nwarn for lines that are too long and could be fixed but allow long lines\nwithout spaces, set the `stern` parameter to `true`.\n\nFor example (assuming normal behavior):\n\n```markdown\nIF THIS LINE IS THE MAXIMUM LENGTH\nThis line is okay because there are-no-spaces-beyond-that-length\nThis line is a violation because there are spaces beyond that length\nThis-line-is-okay-because-there-are-no-spaces-anywhere-within\n```\n\nIn `strict` mode, the last three lines above are all violations. In `stern`\nmode, the middle two lines above are both violations, but the last is okay.\n\nYou have the option to exclude this rule for code blocks, tables, or headings.\nTo do so, set the `code_blocks`, `tables`, or `headings` parameter(s) to false.\n\nCode blocks are included in this rule by default since it is often a\nrequirement for document readability, and tentatively compatible with code\nrules. Still, some languages do not lend themselves to short lines.\n\nLines with link/image reference definitions and standalone lines (i.e., not part\nof a paragraph) with only a link/image (possibly using (strong) emphasis) are\nalways exempted from this rule (even in `strict` mode) because there is often no\nway to split such lines without breaking the URL.\n\nRationale: Extremely long lines can be difficult to work with in some editors.\nMore information: <https://cirosantilli.com/markdown-style-guide#line-wrapping>.\n\n<a name=\"md014\"></a>\n\n## `MD014` - Dollar signs used before commands without showing output\n\nTags: `code`\n\nAliases: `commands-show-output`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when there are code blocks showing shell commands to be\ntyped, and *all* of the shell commands are preceded by dollar signs ($):\n\n<!-- markdownlint-disable commands-show-output -->\n\n```markdown\n$ ls\n$ cat foo\n$ less bar\n```\n\n<!-- markdownlint-restore -->\n\nThe dollar signs are unnecessary in this situation, and should not be\nincluded:\n\n```markdown\nls\ncat foo\nless bar\n```\n\nShowing output for commands preceded by dollar signs does not trigger this rule:\n\n```markdown\n$ ls\nfoo bar\n$ cat foo\nHello world\n$ cat bar\nbaz\n```\n\nBecause some commands do not produce output, it is not a violation if *some*\ncommands do not have output:\n\n```markdown\n$ mkdir test\nmkdir: created directory 'test'\n$ ls test\n```\n\nRationale: It is easier to copy/paste and less noisy if the dollar signs\nare omitted when they are not needed. See\n<https://cirosantilli.com/markdown-style-guide#dollar-signs-in-shell-code>\nfor more information.\n\n<a name=\"md018\"></a>\n\n## `MD018` - No space after hash on atx style heading\n\nTags: `atx`, `headings`, `spaces`\n\nAliases: `no-missing-space-atx`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when spaces are missing after the hash characters\nin an atx style heading:\n\n```markdown\n#Heading 1\n\n##Heading 2\n```\n\nTo fix this, separate the heading text from the hash character by a single\nspace:\n\n```markdown\n# Heading 1\n\n## Heading 2\n```\n\nRationale: Violations of this rule can lead to improperly rendered content.\n\n<a name=\"md019\"></a>\n\n## `MD019` - Multiple spaces after hash on atx style heading\n\nTags: `atx`, `headings`, `spaces`\n\nAliases: `no-multiple-space-atx`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when more than one space is used to separate the\nheading text from the hash characters in an atx style heading:\n\n```markdown\n#  Heading 1\n\n##  Heading 2\n```\n\nTo fix this, separate the heading text from the hash character by a single\nspace:\n\n```markdown\n# Heading 1\n\n## Heading 2\n```\n\nRationale: Extra space has no purpose and does not affect the rendering of\ncontent.\n\n<a name=\"md020\"></a>\n\n## `MD020` - No space inside hashes on closed atx style heading\n\nTags: `atx_closed`, `headings`, `spaces`\n\nAliases: `no-missing-space-closed-atx`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when spaces are missing inside the hash characters\nin a closed atx style heading:\n\n```markdown\n#Heading 1#\n\n##Heading 2##\n```\n\nTo fix this, separate the heading text from the hash character by a single\nspace:\n\n```markdown\n# Heading 1 #\n\n## Heading 2 ##\n```\n\nNote: this rule will fire if either side of the heading is missing spaces.\n\nRationale: Violations of this rule can lead to improperly rendered content.\n\n<a name=\"md021\"></a>\n\n## `MD021` - Multiple spaces inside hashes on closed atx style heading\n\nTags: `atx_closed`, `headings`, `spaces`\n\nAliases: `no-multiple-space-closed-atx`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when more than one space is used to separate the\nheading text from the hash characters in a closed atx style heading:\n\n```markdown\n#  Heading 1  #\n\n##  Heading 2  ##\n```\n\nTo fix this, separate the heading text from the hash character by a single\nspace:\n\n```markdown\n# Heading 1 #\n\n## Heading 2 ##\n```\n\nNote: this rule will fire if either side of the heading contains multiple\nspaces.\n\nRationale: Extra space has no purpose and does not affect the rendering of\ncontent.\n\n<a name=\"md022\"></a>\n\n## `MD022` - Headings should be surrounded by blank lines\n\nTags: `blank_lines`, `headings`\n\nAliases: `blanks-around-headings`\n\nParameters:\n\n- `include_front_matter`: Include front matter content (`boolean`, default\n  `false`)\n- `lines_above`: Blank lines above heading (`integer|integer[]`, default `1`)\n- `lines_below`: Blank lines below heading (`integer|integer[]`, default `1`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when headings (any style) are either not preceded or not\nfollowed by at least one blank line:\n\n```markdown\n# Heading 1\nSome text\n\nSome more text\n## Heading 2\n```\n\nTo fix this, ensure that all headings have a blank line both before and after\n(except where the heading is at the beginning or end of the document):\n\n```markdown\n# Heading 1\n\nSome text\n\nSome more text\n\n## Heading 2\n```\n\nThe `lines_above` and `lines_below` parameters can be used to specify a\ndifferent number of blank lines (including `0`) above or below each heading.\nIf the value `-1` is used for either parameter, any number of blank lines is\nallowed. To customize the number of lines above or below each heading level\nindividually, specify a `number[]` where values correspond to heading levels\n1-6 (in order).\n\nNotes: If `lines_above` or `lines_below` are configured to require more than one\nblank line, [MD012/no-multiple-blanks](md012.md) should also be customized. This\nrule checks for *at least* as many blank lines as specified; any extra blank\nlines are ignored.\n\nBy default, [YAML](https://wikipedia.org/wiki/YAML) front matter is ignored, so\nthe following document reports no violations:\n\n```markdown\n---\ntitle: Title\n---\n## Heading\n```\n\nTo require the configured number of blank lines between front matter content and\na document's first heading, set the `include_front_matter` parameter to `true`.\n\nRationale: Aside from aesthetic reasons, some parsers, including `kramdown`,\nwill not parse headings that don't have a blank line before, and will parse them\nas regular text.\n\n<a name=\"md023\"></a>\n\n## `MD023` - Headings must start at the beginning of the line\n\nTags: `headings`, `spaces`\n\nAliases: `heading-start-left`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when a heading is indented by one or more spaces:\n\n```markdown\nSome text\n\n  # Indented heading\n```\n\nTo fix this, ensure that all headings start at the beginning of the line:\n\n```markdown\nSome text\n\n# Heading\n```\n\nNote that scenarios like block quotes \"indent\" the start of the line, so the\nfollowing is also correct:\n\n```markdown\n> # Heading in Block Quote\n```\n\nRationale: Headings that don't start at the beginning of the line will not be\nparsed as headings, and will instead appear as regular text.\n\n<a name=\"md024\"></a>\n\n## `MD024` - Multiple headings with the same content\n\nTags: `headings`\n\nAliases: `no-duplicate-heading`\n\nParameters:\n\n- `siblings_only`: Only check sibling headings (`boolean`, default `false`)\n\nThis rule is triggered if there are multiple headings in the document that have\nthe same text:\n\n```markdown\n# Some text\n\n## Some text\n```\n\nTo fix this, ensure that the content of each heading is different:\n\n```markdown\n# Some text\n\n## Some more text\n```\n\nIf the parameter `siblings_only` is set to `true`, duplication is allowed for\nheadings with different parents (as is common in changelogs):\n\n```markdown\n# Changelog\n\n## 1.0.0\n\n### Features\n\n## 2.0.0\n\n### Features\n```\n\nRationale: Some Markdown parsers generate anchors for headings based on the\nheading name; headings with the same content can cause problems with that.\n\n<a name=\"md025\"></a>\n\n## `MD025` - Multiple top-level headings in the same document\n\nTags: `headings`\n\nAliases: `single-h1`, `single-title`\n\nParameters:\n\n- `front_matter_title`: RegExp for matching title in front matter (`string`,\n  default `^\\s*title\\s*[:=]`)\n- `level`: Heading level (`integer`, default `1`)\n\nThis rule is triggered when a top-level heading is in use (the first line of\nthe file is an h1 heading), and more than one h1 heading is in use in the\ndocument:\n\n```markdown\n# Top level heading\n\n# Another top-level heading\n```\n\nTo fix, structure your document so there is a single h1 heading that is\nthe title for the document. Subsequent headings must be\nlower-level headings (h2, h3, etc.):\n\n```markdown\n# Title\n\n## Heading\n\n## Another heading\n```\n\nNote: The `level` parameter can be used to change the top-level (ex: to h2) in\ncases where an h1 is added externally.\n\nIf [YAML](https://wikipedia.org/wiki/YAML) front matter is present and\ncontains a `title` property (commonly used with blog posts), this rule treats\nthat as a top level heading and will report a violation for any subsequent\ntop-level headings. To use a different property name in the front matter,\nspecify the text of a regular expression via the `front_matter_title` parameter.\nTo disable the use of front matter by this rule, specify `\"\"` for\n`front_matter_title`.\n\nRationale: A top-level heading is an h1 on the first line of the file, and\nserves as the title for the document. If this convention is in use, then there\ncan not be more than one title for the document, and the entire document should\nbe contained within this heading.\n\n<a name=\"md026\"></a>\n\n## `MD026` - Trailing punctuation in heading\n\nTags: `headings`\n\nAliases: `no-trailing-punctuation`\n\nParameters:\n\n- `punctuation`: Punctuation characters (`string`, default `.,;:!。，；：！`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered on any heading that has one of the specified normal or\nfull-width punctuation characters as the last character in the line:\n\n```markdown\n# This is a heading.\n```\n\nTo fix this, remove the trailing punctuation:\n\n```markdown\n# This is a heading\n```\n\nNote: The `punctuation` parameter can be used to specify what characters count\nas punctuation at the end of a heading. For example, you can change it to\n`\".,;:\"` to allow headings that end with an exclamation point. `?` is\nallowed by default because of how common it is in headings of FAQ-style\ndocuments. Setting the `punctuation` parameter to `\"\"` allows all characters -\nand is equivalent to disabling the rule.\n\nNote: The trailing semicolon of [HTML entity references][html-entity-references]\nlike `&copy;`, `&#169;`, and `&#x000A9;` is ignored by this rule.\n\nRationale: Headings are not meant to be full sentences. More information:\n[Punctuation at the end of headers][end-punctuation].\n\n[end-punctuation]: https://cirosantilli.com/markdown-style-guide#punctuation-at-the-end-of-headers\n[html-entity-references]: https://wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references\n\n<a name=\"md027\"></a>\n\n## `MD027` - Multiple spaces after blockquote symbol\n\nTags: `blockquote`, `indentation`, `whitespace`\n\nAliases: `no-multiple-space-blockquote`\n\nParameters:\n\n- `list_items`: Include list items (`boolean`, default `true`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when blockquotes have more than one space after the\nblockquote (`>`) symbol:\n\n```markdown\n>  This is a blockquote with bad indentation\n>  there should only be one.\n```\n\nTo fix, remove any extraneous space:\n\n```markdown\n> This is a blockquote with correct\n> indentation.\n```\n\nInferring intended list indentation within a blockquote can be challenging;\nsetting the `list_items` parameter to `false` disables this rule for ordered\nand unordered list items.\n\nRationale: Consistent formatting makes it easier to understand a document.\n\n<a name=\"md028\"></a>\n\n## `MD028` - Blank line inside blockquote\n\nTags: `blockquote`, `whitespace`\n\nAliases: `no-blanks-blockquote`\n\nThis rule is triggered when two blockquote blocks are separated by nothing\nbut a blank line:\n\n```markdown\n> This is a blockquote\n> which is immediately followed by\n\n> this blockquote. In some cases,\n> these may be merged into one blockquote.\n```\n\nTo fix this, ensure that consecutive blockquotes have text (or an HTML comment)\nin between:\n\n```markdown\n> This is a blockquote.\n\nThis is paragraph text.\n\n> This is a second blockquote.\n\n<!-- This is an HTML comment -->\n\n> This is a third blockquote.\n```\n\nIf they are meant to be a single quote, add the blockquote symbol at the\nbeginning of the blank line:\n\n```markdown\n> This is a blockquote.\n>\n> This is the same blockquote.\n```\n\nRationale: Some Markdown parsers will treat two blockquotes separated by one\nor more blank lines as the same blockquote, while others will treat them as\nseparate blockquotes.\n\n<a name=\"md029\"></a>\n\n## `MD029` - Ordered list item prefix\n\nTags: `ol`\n\nAliases: `ol-prefix`\n\nParameters:\n\n- `style`: List style (`string`, default `one_or_ordered`, values `one` /\n  `one_or_ordered` / `ordered` / `zero`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered for ordered lists that do not either start with '1.' or\ndo not have a prefix that increases in numerical order (depending on the\nconfigured style). The less-common pattern of using '0.' as a first prefix or\nfor all prefixes is also supported.\n\nExample valid list if the style is configured as 'one':\n\n```markdown\n1. Do this.\n1. Do that.\n1. Done.\n```\n\nExamples of valid lists if the style is configured as 'ordered':\n\n```markdown\n1. Do this.\n2. Do that.\n3. Done.\n```\n\n```markdown\n0. Do this.\n1. Do that.\n2. Done.\n```\n\nAll three examples are valid when the style is configured as 'one_or_ordered'.\n\nExample valid list if the style is configured as 'zero':\n\n```markdown\n0. Do this.\n0. Do that.\n0. Done.\n```\n\nExample invalid list for all styles:\n\n```markdown\n1. Do this.\n3. Done.\n```\n\nThis rule supports 0-prefixing list items for uniform indentation and will\npreserve that when fixing:\n\n```markdown\n...\n08. Item\n09. Item\n10. Item\n11. Item\n```\n\nWhen list items appear to be right-aligned, fixes will maintain that alignment:\n\n```markdown\n...\n 8. Item\n 9. Item\n10. Item\n11. Item\n```\n\nNote: This rule will report violations for cases like the following where an\nimproperly-indented code block (or similar) appears between two list items and\n\"breaks\" the list in two:\n\n<!-- markdownlint-disable code-fence-style -->\n\n~~~markdown\n1. First list\n\n```text\nCode block\n```\n\n1. Second list\n~~~\n\nThe fix is to indent the code block so it becomes part of the preceding list\nitem as intended:\n\n~~~markdown\n1. First list\n\n   ```text\n   Code block\n   ```\n\n2. Still first list\n~~~\n\n<!-- markdownlint-restore -->\n\nRationale: Consistent formatting makes it easier to understand a document.\n\n<a name=\"md030\"></a>\n\n## `MD030` - Spaces after list markers\n\nTags: `ol`, `ul`, `whitespace`\n\nAliases: `list-marker-space`\n\nParameters:\n\n- `ol_multi`: Spaces for multi-line ordered list items (`integer`, default `1`)\n- `ol_single`: Spaces for single-line ordered list items (`integer`, default\n  `1`)\n- `ul_multi`: Spaces for multi-line unordered list items (`integer`, default\n  `1`)\n- `ul_single`: Spaces for single-line unordered list items (`integer`, default\n  `1`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule checks for the number of spaces between a list marker (e.g. '`-`',\n'`*`', '`+`' or '`1.`') and the text of the list item.\n\nThe number of spaces checked for depends on the document style in use, but the\ndefault is 1 space after any list marker:\n\n```markdown\n* Foo\n* Bar\n* Baz\n\n1. Foo\n1. Bar\n1. Baz\n\n1. Foo\n   * Bar\n1. Baz\n```\n\nA document style may change the number of spaces after unordered list items\nand ordered list items independently, as well as based on whether the content\nof every item in the list consists of a single paragraph or multiple\nparagraphs (including sub-lists and code blocks).\n\nFor example, the style guide at\n<https://cirosantilli.com/markdown-style-guide#spaces-after-list-marker>\nspecifies that 1 space after the list marker should be used if every item in\nthe list fits within a single paragraph, but to use 2 or 3 spaces (for ordered\nand unordered lists respectively) if there are multiple paragraphs of content\ninside the list:\n\n```markdown\n* Foo\n* Bar\n* Baz\n```\n\nvs.\n\n```markdown\n*   Foo\n\n    Second paragraph\n\n*   Bar\n```\n\nor\n\n```markdown\n1.  Foo\n\n    Second paragraph\n\n1.  Bar\n```\n\nTo fix this, ensure the correct number of spaces are used after the list marker\nfor your selected document style.\n\nRationale: Violations of this rule can lead to improperly rendered content.\n\nNote: See [Prettier.md](Prettier.md) for compatibility information.\n\n<a name=\"md031\"></a>\n\n## `MD031` - Fenced code blocks should be surrounded by blank lines\n\nTags: `blank_lines`, `code`\n\nAliases: `blanks-around-fences`\n\nParameters:\n\n- `list_items`: Include list items (`boolean`, default `true`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when fenced code blocks are either not preceded or not\nfollowed by a blank line:\n\n````markdown\nSome text\n```\nCode block\n```\n\n```\nAnother code block\n```\nSome more text\n````\n\nTo fix this, ensure that all fenced code blocks have a blank line both before\nand after (except where the block is at the beginning or end of the document):\n\n````markdown\nSome text\n\n```\nCode block\n```\n\n```\nAnother code block\n```\n\nSome more text\n````\n\nSet the `list_items` parameter to `false` to disable this rule for list items.\nDisabling this behavior for lists can be useful if it is necessary to create a\n[tight](https://spec.commonmark.org/0.29/#tight) list containing a code fence.\n\nRationale: Aside from aesthetic reasons, some parsers, including kramdown, will\nnot parse fenced code blocks that don't have blank lines before and after them.\n\n<a name=\"md032\"></a>\n\n## `MD032` - Lists should be surrounded by blank lines\n\nTags: `blank_lines`, `bullet`, `ol`, `ul`\n\nAliases: `blanks-around-lists`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when lists (of any kind) are either not preceded or not\nfollowed by a blank line:\n\n```markdown\nSome text\n* List item\n* List item\n\n1. List item\n2. List item\n***\n```\n\nIn the first case above, text immediately precedes the unordered list. In the\nsecond case above, a thematic break immediately follows the ordered list. To fix\nviolations of this rule, ensure that all lists have a blank line both before and\nafter (except when the list is at the very beginning or end of the document):\n\n```markdown\nSome text\n\n* List item\n* List item\n\n1. List item\n2. List item\n\n***\n```\n\nNote that the following case is **not** a violation of this rule:\n\n```markdown\n1. List item\n   More item 1\n2. List item\nMore item 2\n```\n\nAlthough it is not indented, the text \"More item 2\" is referred to as a\n[lazy continuation line][lazy-continuation] and considered part of the second\nlist item.\n\nRationale: In addition to aesthetic reasons, some parsers, including kramdown,\nwill not parse lists that don't have blank lines before and after them.\n\n[lazy-continuation]: https://spec.commonmark.org/0.30/#lazy-continuation-line\n\n<a name=\"md033\"></a>\n\n## `MD033` - Inline HTML\n\nTags: `html`\n\nAliases: `no-inline-html`\n\nParameters:\n\n- `allowed_elements`: Allowed elements (`string[]`, default `[]`)\n- `table_allowed_elements`: Allowed elements in tables (`string[]`, default\n  `[]`)\n\nThis rule is triggered whenever raw HTML is used in a Markdown document:\n\n```markdown\n<h1>Inline HTML heading</h1>\n```\n\nTo fix this, use 'pure' Markdown instead of including raw HTML:\n\n```markdown\n# Markdown heading\n```\n\nTo allow specific HTML elements anywhere in Markdown content, set the\n`allowed_elements` parameter to a list of HTML element names. To allow a\nspecific set of HTML elements within Markdown tables, set the\n`table_allowed_elements` parameter to a list of HTML element names. This can be\nused to permit the use of `<br>`-style line breaks only within Markdown tables.\n\nRationale: Raw HTML is allowed in Markdown, but this rule is included for\nthose who want their documents to only include \"pure\" Markdown, or for those\nwho are rendering Markdown documents into something other than HTML.\n\n<a name=\"md034\"></a>\n\n## `MD034` - Bare URL used\n\nTags: `links`, `url`\n\nAliases: `no-bare-urls`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered whenever a URL or email address appears without\nsurrounding angle brackets:\n\n```markdown\nFor more info, visit https://www.example.com/ or email user@example.com.\n```\n\nTo fix this, add angle brackets around the URL or email address:\n\n```markdown\nFor more info, visit <https://www.example.com/> or email <user@example.com>.\n```\n\nIf a URL or email address contains non-ASCII characters, it may be not be\nhandled as intended even when angle brackets are present. In such cases,\n[percent-encoding](https://wikipedia.org/wiki/Percent-encoding) can be used\nto comply with the required syntax for URL and email.\n\nNote: To include a bare URL or email without it being converted into a link,\nwrap it in a code span:\n\n```markdown\nNot a clickable link: `https://www.example.com`\n```\n\nNote: The following scenario does not trigger this rule because it could be a\nshortcut link:\n\n```markdown\n[https://www.example.com]\n```\n\nNote: The following syntax triggers this rule because the nested link could be\na shortcut link (which takes precedence):\n\n```markdown\n[text [shortcut] text](https://example.com)\n```\n\nTo avoid this, escape both inner brackets:\n\n```markdown\n[link \\[text\\] link](https://example.com)\n```\n\nRationale: Without angle brackets, a bare URL or email isn't converted into a\nlink by some Markdown parsers.\n\n<a name=\"md035\"></a>\n\n## `MD035` - Horizontal rule style\n\nTags: `hr`\n\nAliases: `hr-style`\n\nParameters:\n\n- `style`: Horizontal rule style (`string`, default `consistent`)\n\nThis rule is triggered when inconsistent styles of horizontal rules (also known\nas \"thematic breaks\") are used in a document:\n\n```markdown\n---\n\n- - -\n\n***\n\n* * *\n\n****\n```\n\nTo fix this, use the same horizontal rule syntax everywhere:\n\n```markdown\n---\n\n---\n\n---\n```\n\nThe `style` parameter's default value `consistent` ensures all horizontal rules\nin a document match the first horizontal rule in that document. To enforce a\nspecific pattern of characters, set the `style` parameter to that string (e.g.,\n`\"* * *\"`).\n\nNote: In order to be recognized as a horizontal rule, a line must contain three\nor more matching `-`, `_`, or `*` characters with optional space between.\n\nRationale: Consistent formatting makes it easier to understand a document.\n\n<a name=\"md036\"></a>\n\n## `MD036` - Emphasis used instead of a heading\n\nTags: `emphasis`, `headings`\n\nAliases: `no-emphasis-as-heading`\n\nParameters:\n\n- `punctuation`: Punctuation characters (`string`, default `.,;:!?。，；：！？`)\n\nThis check looks for instances where emphasized (i.e. bold or italic) text is\nused to separate sections, where a heading should be used instead:\n\n```markdown\n**My document**\n\nLorem ipsum dolor sit amet...\n\n_Another section_\n\nConsectetur adipiscing elit, sed do eiusmod.\n```\n\nTo fix this, use Markdown headings instead of emphasized text to denote\nsections:\n\n```markdown\n# My document\n\nLorem ipsum dolor sit amet...\n\n## Another section\n\nConsectetur adipiscing elit, sed do eiusmod.\n```\n\nNote: This rule looks for single-line paragraphs that consist entirely\nof emphasized text. It won't fire on emphasis used within regular text,\nmulti-line emphasized paragraphs, or paragraphs ending in punctuation\n(normal or full-width). Similarly to rule MD026, you can configure what\ncharacters are recognized as punctuation.\n\nRationale: Using emphasis instead of a heading prevents tools from inferring\nthe structure of a document. More information:\n<https://cirosantilli.com/markdown-style-guide#emphasis-vs-headers>.\n\n<a name=\"md037\"></a>\n\n## `MD037` - Spaces inside emphasis markers\n\nTags: `emphasis`, `whitespace`\n\nAliases: `no-space-in-emphasis`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when emphasis markers (bold, italic) are used, but they\nhave spaces between the markers and the text:\n\n```markdown\nHere is some ** bold ** text.\n\nHere is some * italic * text.\n\nHere is some more __ bold __ text.\n\nHere is some more _ italic _ text.\n```\n\nTo fix this, remove the spaces around the emphasis markers:\n\n```markdown\nHere is some **bold** text.\n\nHere is some *italic* text.\n\nHere is some more __bold__ text.\n\nHere is some more _italic_ text.\n```\n\nRationale: Emphasis is only parsed as such when the asterisks/underscores\naren't surrounded by spaces. This rule attempts to detect where\nthey were surrounded by spaces, but it appears that emphasized text was\nintended by the author.\n\n<a name=\"md038\"></a>\n\n## `MD038` - Spaces inside code span elements\n\nTags: `code`, `whitespace`\n\nAliases: `no-space-in-code`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered for code spans containing content with unnecessary space\nnext to the beginning or ending backticks:\n\n```markdown\n`some text `\n\n` some text`\n\n`   some text   `\n```\n\nTo fix this, remove the extra space characters from the beginning and ending:\n\n```markdown\n`some text`\n```\n\nNote: A single leading *and* trailing space is allowed by the specification and\ntrimmed by the parser to support code spans that begin or end with a backtick:\n\n```markdown\n`` `backticks` ``\n\n`` backtick` ``\n```\n\nNote: When single-space padding is present in the input, it will be preserved\n(even if unnecessary):\n\n```markdown\n` code `\n```\n\nNote: Code spans containing only spaces are allowed by the specification and are\nalso preserved:\n\n```markdown\n` `\n\n`   `\n```\n\nRationale: Violations of this rule are usually unintentional and can lead to\nimproperly-rendered content.\n\n<a name=\"md039\"></a>\n\n## `MD039` - Spaces inside link text\n\nTags: `links`, `whitespace`\n\nAliases: `no-space-in-links`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered on links that have spaces surrounding the link text:\n\n```markdown\n[ a link ](https://www.example.com/)\n```\n\nTo fix this, remove the spaces surrounding the link text:\n\n```markdown\n[a link](https://www.example.com/)\n```\n\nRationale: Consistent formatting makes it easier to understand a document.\n\n<a name=\"md040\"></a>\n\n## `MD040` - Fenced code blocks should have a language specified\n\nTags: `code`, `language`\n\nAliases: `fenced-code-language`\n\nParameters:\n\n- `allowed_languages`: List of languages (`string[]`, default `[]`)\n- `language_only`: Require language only (`boolean`, default `false`)\n\nThis rule is triggered when fenced code blocks are used, but a language isn't\nspecified:\n\n````markdown\n```\n#!/bin/bash\necho Hello world\n```\n````\n\nTo fix this, add a language specifier to the code block:\n\n````markdown\n```bash\n#!/bin/bash\necho Hello world\n```\n````\n\nTo display a code block without syntax highlighting, use:\n\n````markdown\n```text\nPlain text in a code block\n```\n````\n\nYou can configure the `allowed_languages` parameter to specify a list of\nlanguages code blocks could use. Languages are case sensitive. The default value\nis `[]` which means any language specifier is valid.\n\nYou can prevent extra data from being present in the info string of fenced code\nblocks. To do so, set the `language_only` parameter to `true`.\n\n<!-- markdownlint-disable-next-line no-space-in-code -->\nInfo strings with leading/trailing whitespace (ex: `js `) or other content (ex:\n`ruby startline=3`) will trigger this rule.\n\nRationale: Specifying a language improves content rendering by using the\ncorrect syntax highlighting for code. More information:\n<https://cirosantilli.com/markdown-style-guide#option-code-fenced>.\n\n<a name=\"md041\"></a>\n\n## `MD041` - First line in a file should be a top-level heading\n\nTags: `headings`\n\nAliases: `first-line-h1`, `first-line-heading`\n\nParameters:\n\n- `allow_preamble`: Allow content before first heading (`boolean`, default\n  `false`)\n- `front_matter_title`: RegExp for matching title in front matter (`string`,\n  default `^\\s*title\\s*[:=]`)\n- `level`: Heading level (`integer`, default `1`)\n\nThis rule is intended to ensure documents have a title and is triggered when\nthe first line in a document is not a top-level ([HTML][HTML] `h1`) heading:\n\n```markdown\nThis is a document without a heading\n```\n\nTo fix this, add a top-level heading to the beginning of the document:\n\n```markdown\n# Document Heading\n\nThis is a document with a top-level heading\n```\n\nBecause it is common for projects on GitHub to use an image for the heading of\n`README.md` and that pattern is not well-supported by Markdown, HTML headings\nare also permitted by this rule. For example:\n\n```markdown\n<h1 align=\"center\"><img src=\"https://placekitten.com/300/150\"/></h1>\n\nThis is a document with a top-level HTML heading\n```\n\nIn some cases, a document's title heading may be preceded by text like a table\nof contents. This is not ideal for accessibility, but can be allowed by setting\nthe `allow_preamble` parameter to `true`.\n\n```markdown\nThis is a document with preamble text\n\n# Document Heading\n```\n\nIf [YAML][YAML] front matter is present and contains a `title` property\n(commonly used with blog posts), this rule will not report a violation. To use a\ndifferent property name in the front matter, specify the text of a [regular\nexpression][RegExp] via the `front_matter_title` parameter. To disable the use\nof front matter by this rule, specify `\"\"` for `front_matter_title`.\n\nThe `level` parameter can be used to change the top-level heading (ex: to `h2`)\nin cases where an `h1` is added externally.\n\nRationale: The top-level heading often acts as the title of a document. More\ninformation: <https://cirosantilli.com/markdown-style-guide#top-level-header>.\n\n[HTML]: https://wikipedia.org/wiki/HTML\n[RegExp]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions\n[YAML]: https://wikipedia.org/wiki/YAML\n\n<a name=\"md042\"></a>\n\n## `MD042` - No empty links\n\nTags: `links`\n\nAliases: `no-empty-links`\n\nThis rule is triggered when an empty link is encountered:\n\n```markdown\n[an empty link]()\n```\n\nTo fix the violation, provide a destination for the link:\n\n```markdown\n[a valid link](https://example.com/)\n```\n\nEmpty fragments will trigger this rule:\n\n```markdown\n[an empty fragment](#)\n\n[an empty link definition][empty]\n\n[empty]: #\n```\n\nBut non-empty fragments will not:\n\n```markdown\n[a valid fragment](#fragment)\n```\n\nEmpty link definitions\n\nRationale: Empty links do not lead anywhere and therefore don't function as\nlinks.\n\n<a name=\"md043\"></a>\n\n## `MD043` - Required heading structure\n\nTags: `headings`\n\nAliases: `required-headings`\n\nParameters:\n\n- `headings`: List of headings (`string[]|null`, default `null`)\n- `match_case`: Match case of headings (`boolean`, default `false`)\n\nThis rule is triggered when the headings in a file do not match the array of\nheadings passed to the rule. It can be used to enforce a standard heading\nstructure for a set of files.\n\nTo require exactly the following structure:\n\n```markdown\n# Heading\n## Item\n### Detail\n```\n\nSet the `headings` parameter to:\n\n```json\n[\n    \"# Heading\",\n    \"## Item\",\n    \"### Detail\"\n]\n```\n\nTo allow optional headings as with the following structure:\n\n```markdown\n# Heading\n## Item\n### Detail (optional)\n### Example (optional)\n## Foot\n### Notes (optional)\n```\n\nUse the special value `*` meaning \"zero or more unspecified headings\", the\nspecial value `+` meaning \"one or more unspecified headings\", or the special\nvalue `?` meaning \"exactly one unspecified heading\" and set the `headings`\nparameter to something like:\n\n```json\n[\n    \"# Heading\",\n    \"## Item\",\n    \"*\",\n    \"## Foot\",\n    \"+\"\n]\n```\n\nTo require a heading with a specific level and text matching a specific pattern\n(for example, a one-word project name):\n\n```markdown\n# Project\n## Description\n## Examples\n```\n\nReplace the `#` prefix character(s) with `%` and specify a regular expression;\nthe following example requires a level 1 heading with a single word made up of\nat least 4 letters:\n\n```json\n[\n    \"% [a-zA-Z]{4,}\",\n    \"## Description\",\n    \"## Examples\"\n]\n```\n\nTo handle repeating heading sections (common in `CHANGELOG` files) such as the\nfollowing:\n\n```markdown\n# Changelog\n## 1.0.0\n### Fixes\n### Features\n## 2.0.0\n### Fixes\n### Features\n```\n\nUse the special value `^` meaning \"if the next heading does not match, loop\nback to the previous matching marker\":\n\n```json\n[\n    \"# Changelog\",\n    \"^\",\n    \"%% ^\\\\d+\\\\.\\\\d+\\\\.\\\\d+$\",\n    \"### Fixes\",\n    \"### Features\",\n    \"^\"\n]\n```\n\nThe simple form shown above is enough for most scenarios; if multiple loops are\nneeded, matching pairs of `^^`, `^^^`, etc. can be used in conjunction. The\nprefix `%` and the special value `?` are supported with loops, but `*` and `+`\nare not and will result in undefined behavior. To avoid infinite looping, a\nviolation is reported if the rule loops more than 1,000 times.\n\nWhen an error is detected, this rule outputs the line number of the first\nproblematic heading (otherwise, it outputs the last line number of the file).\n\nNote that while the `headings` parameter uses the \"## Text\" ATX heading style\nfor simplicity, a file may use any supported heading style.\n\nBy default, the case of headings in the document is not required to match that\nof `headings`. To require that case match exactly, set the `match_case`\nparameter to `true`.\n\nRationale: Projects may wish to enforce a consistent document structure across\na set of similar content.\n\n<a name=\"md044\"></a>\n\n## `MD044` - Proper names should have the correct capitalization\n\nTags: `spelling`\n\nAliases: `proper-names`\n\nParameters:\n\n- `code_blocks`: Include code blocks (`boolean`, default `true`)\n- `html_elements`: Include HTML elements (`boolean`, default `true`)\n- `names`: List of proper names (`string[]`, default `[]`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when any of the strings in the `names` array do not have\nthe specified capitalization. It can be used to enforce a standard letter case\nfor the names of projects and products.\n\nFor example, the language \"JavaScript\" is usually written with both the 'J' and\n'S' capitalized - though sometimes the 's' or 'j' appear in lower-case. To\nenforce the proper capitalization, specify the desired letter case in the\n`names` array:\n\n```json\n[\n    \"JavaScript\"\n]\n```\n\nSometimes a proper name is capitalized differently in certain contexts. In such\ncases, add both forms to the `names` array:\n\n```json\n[\n    \"GitHub\",\n    \"github.com\"\n]\n```\n\nSet the `code_blocks` parameter to `false` to disable this rule for code blocks\nand spans. Set the `html_elements` parameter to `false` to disable this rule\nfor HTML elements and attributes (such as when using a proper name as part of\na path for `a`/`href` or `img`/`src`).\n\nRationale: Incorrect capitalization of proper names is usually a mistake.\n\n<a name=\"md045\"></a>\n\n## `MD045` - Images should have alternate text (alt text)\n\nTags: `accessibility`, `images`\n\nAliases: `no-alt-text`\n\nThis rule reports a violation when an image is missing alternate text (alt text)\ninformation.\n\nAlternate text is commonly specified inline as:\n\n```markdown\n![Alternate text](image.jpg)\n```\n\nOr with reference syntax as:\n\n```markdown\n![Alternate text][ref]\n\n...\n\n[ref]: image.jpg \"Optional title\"\n```\n\nOr with HTML as:\n\n```html\n<img src=\"image.jpg\" alt=\"Alternate text\" />\n```\n\nNote: If the [HTML `aria-hidden` attribute][aria-hidden] is used to hide the\nimage from assistive technology, this rule does not report a violation:\n\n```html\n<img src=\"image.jpg\" aria-hidden=\"true\" />\n```\n\nGuidance for writing alternate text is available from the [W3C][w3c],\n[Wikipedia][wikipedia], and [other locations][phase2technology].\n\nRationale: Alternate text is important for ac","isInternal":false,"tokens":12216,"sizeBytes":50022},{"name":"package.json","path":"test/rules/node_modules/markdownlint-rule-sample-commonjs/package.json","rawUrl":"https://raw.githubusercontent.com/DavidAnson/markdownlint/HEAD/test/rules/node_modules/markdownlint-rule-sample-commonjs/package.json","title":"markdownlint-rule-sample-commonjs","category":"anthropic-skill","format":"json","content":"{\n  \"name\": \"markdownlint-rule-sample-commonjs\",\n  \"version\": \"0.0.1\",\n  \"description\": \"Package for markdownlint custom rule sample (commonjs)\",\n  \"main\": \"sample-rule.cjs\",\n  \"type\": \"commonjs\",\n  \"author\": \"David Anson (https://dlaa.me/)\",\n  \"homepage\": \"https://github.com/DavidAnson/markdownlint\",\n  \"license\": \"MIT\",\n  \"keywords\": [\n    \"markdownlint-rule\"\n  ],\n  \"private\": true\n}\n","frontmatter":{"name":"markdownlint-rule-sample-commonjs","version":"0.0.1","description":"Package for markdownlint custom rule sample (commonjs)","main":"sample-rule.cjs","type":"commonjs","author":"David Anson (https://dlaa.me/)","homepage":"https://github.com/DavidAnson/markdownlint","license":"MIT","keywords":["markdownlint-rule"],"private":true},"isInternal":false,"tokens":119,"sizeBytes":388},{"name":"package.json","path":"test/rules/node_modules/markdownlint-rule-sample-module/package.json","rawUrl":"https://raw.githubusercontent.com/DavidAnson/markdownlint/HEAD/test/rules/node_modules/markdownlint-rule-sample-module/package.json","title":"markdownlint-rule-sample-module","category":"anthropic-skill","format":"json","content":"{\n  \"name\": \"markdownlint-rule-sample-module\",\n  \"version\": \"0.0.1\",\n  \"description\": \"Package for markdownlint custom rule sample (module)\",\n  \"main\": \"sample-rule.mjs\",\n  \"type\": \"module\",\n  \"author\": \"David Anson (https://dlaa.me/)\",\n  \"homepage\": \"https://github.com/DavidAnson/markdownlint\",\n  \"license\": \"MIT\",\n  \"keywords\": [\n    \"markdownlint-rule\"\n  ],\n  \"private\": true\n}\n","frontmatter":{"name":"markdownlint-rule-sample-module","version":"0.0.1","description":"Package for markdownlint custom rule sample (module)","main":"sample-rule.mjs","type":"module","author":"David Anson (https://dlaa.me/)","homepage":"https://github.com/DavidAnson/markdownlint","license":"MIT","keywords":["markdownlint-rule"],"private":true},"isInternal":false,"tokens":116,"sizeBytes":382},{"name":"package.json","path":"test/rules/npm/package.json","rawUrl":"https://raw.githubusercontent.com/DavidAnson/markdownlint/HEAD/test/rules/npm/package.json","title":"markdownlint-rule-sample","category":"anthropic-skill","format":"json","content":"{\n  \"name\": \"markdownlint-rule-sample\",\n  \"version\": \"0.0.1\",\n  \"description\": \"Package for markdownlint custom rule sample\",\n  \"type\": \"commonjs\",\n  \"main\": \"./sample-rule.js\",\n  \"author\": \"David Anson (https://dlaa.me/)\",\n  \"homepage\": \"https://github.com/DavidAnson/markdownlint\",\n  \"license\": \"MIT\",\n  \"keywords\": [\n    \"markdownlint-rule\"\n  ],\n  \"private\": true\n}\n","frontmatter":{"name":"markdownlint-rule-sample","version":"0.0.1","description":"Package for markdownlint custom rule sample","type":"commonjs","main":"./sample-rule.js","author":"David Anson (https://dlaa.me/)","homepage":"https://github.com/DavidAnson/markdownlint","license":"MIT","keywords":["markdownlint-rule"],"private":true},"isInternal":false,"tokens":113,"sizeBytes":369}],"systemPromptSnippet":"<yakaai_skills repo=\"DavidAnson/markdownlint\">\n<!-- File: doc/Rules.md (Tokens: ~12216 | Category: root-instruction) -->\n# Rules\n\nThis document contains a description of all rules, what they are checking for,\nas well as examples of documents that break the rule and corrected\nversions of the examples.\n\n<a name=\"md001\"></a>\n\n## `MD001` - Heading levels should only increment by one level at a time\n\nTags: `headings`\n\nAliases: `heading-increment`\n\nParameters:\n\n- `front_matter_title`: RegExp for matching title in front matter (`string`,\n  default `^\\s*title\\s*[:=]`)\n\nThis rule is triggered when you skip heading levels in a Markdown document, for\nexample:\n\n```markdown\n# Heading 1\n\n### Heading 3\n\nWe skipped out a 2nd level heading in this document\n```\n\nWhen using multiple heading levels, nested headings should increase by only one\nlevel at a time:\n\n```markdown\n# Heading 1\n\n## Heading 2\n\n### Heading 3\n\n#### Heading 4\n\n## Another Heading 2\n\n### Another Heading 3\n```\n\nIf [YAML](https://wikipedia.org/wiki/YAML) front matter is present and\ncontains a `title` property (commonly used with blog posts), this rule treats\nthat as a top level heading and will report a violation if the actual first\nheading is not a level 2 heading. To use a different property name in the\nfront matter, specify the text of a regular expression via the\n`front_matter_title` parameter. To disable the use of front matter by this\nrule, specify `\"\"` for `front_matter_title`. When front matter is not present,\nthe first heading can be any level.\n\nRationale: Headings represent the structure of a document and can be confusing\nwhen skipped - especially for accessibility scenarios. More information:\n<https://www.w3.org/WAI/tutorials/page-structure/headings/>.\n\n<a name=\"md003\"></a>\n\n## `MD003` - Heading style\n\nTags: `headings`\n\nAliases: `heading-style`\n\nParameters:\n\n- `style`: Heading style (`string`, default `consistent`, values `atx` /\n  `atx_closed` / `consistent` / `setext` / `setext_with_atx` /\n  `setext_with_atx_closed`)\n\nThis rule is triggered when different heading styles are used in the same\ndocument:\n\n```markdown\n# ATX style H1\n\n## Closed ATX style H2 ##\n\nSetext style H1\n===============\n```\n\nTo fix the issue, use consistent heading styles throughout the document:\n\n```markdown\n# ATX style H1\n\n## ATX style H2\n```\n\nThe `setext_with_atx` and `setext_with_atx_closed` settings allow ATX-style\nheadings of level 3 or more in documents with setext-style headings (which only\nsupport level 1 and 2 headings):\n\n```markdown\nSetext style H1\n===============\n\nSetext style H2\n---------------\n\n### ATX style H3\n```\n\nNote: The configured heading style can be a specific style to require (`atx`,\n`atx_closed`, `setext`, `setext_with_atx`, `setext_with_atx_closed`), or can\nrequire that all heading styles match the first heading style via `consistent`.\n\nNote: The placement of a horizontal rule directly below a line of text can\ntrigger this rule by turning that text into a level 2 setext-style heading:\n\n```markdown\nA line of text followed by a horizontal rule becomes a heading\n---\n```\n\nRationale: Consistent formatting makes it easier to understand a document.\n\n<a name=\"md004\"></a>\n\n## `MD004` - Unordered list style\n\nTags: `bullet`, `ul`\n\nAliases: `ul-style`\n\nParameters:\n\n- `style`: List style (`string`, default `consistent`, values `asterisk` /\n  `consistent` / `dash` / `plus` / `sublist`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when the symbols used in the document for unordered\nlist items do not match the configured unordered list style:\n\n```markdown\n* Item 1\n+ Item 2\n- Item 3\n```\n\nTo fix this issue, use the configured style for list items throughout the\ndocument:\n\n```markdown\n* Item 1\n* Item 2\n* Item 3\n```\n\nThe configured list style can ensure all list styling is a specific symbol\n(`asterisk`, `plus`, `dash`), ensure each sublist has a consistent symbol that\ndiffers from its parent list (`sublist`), or ensure all list styles match the\nfirst list style (`consistent`).\n\nFor example, the following is valid for the `sublist` style because the\nouter-most indent uses asterisk, the middle indent uses plus, and the inner-most\nindent uses dash:\n\n```markdown\n* Item 1\n  + Item 2\n    - Item 3\n  + Item 4\n* Item 4\n  + Item 5\n```\n\nRationale: Consistent formatting makes it easier to understand a document.\n\n<a name=\"md005\"></a>\n\n## `MD005` - Inconsistent indentation for list items at the same level\n\nTags: `bullet`, `indentation`, `ul`\n\nAliases: `list-indent`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when list items are parsed as being at the same level,\nbut don't have the same indentation:\n\n```markdown\n* Item 1\n  * Nested Item 1\n  * Nested Item 2\n   * A misaligned item\n```\n\nUsually, this rule will be triggered because of a typo. Correct the indentation\nfor the list to fix it:\n\n```markdown\n* Item 1\n  * Nested Item 1\n  * Nested Item 2\n  * Nested Item 3\n```\n\nSequentially-ordered list markers are usually left-aligned such that all items\nhave the same starting column:\n\n```markdown\n...\n8. Item\n9. Item\n10. Item\n11. Item\n...\n```\n\nThis rule also supports right-alignment of list markers such that all items have\nthe same ending column:\n\n```markdown\n...\n 8. Item\n 9. Item\n10. Item\n11. Item\n...\n```\n\nRationale: Violations of this rule can lead to improperly rendered content.\n\n<a name=\"md007\"></a>\n\n## `MD007` - Unordered list indentation\n\nTags: `bullet`, `indentation`, `ul`\n\nAliases: `ul-indent`\n\nParameters:\n\n- `indent`: Spaces for indent (`integer`, default `2`)\n- `start_indent`: Spaces for first level indent (when start_indented is set)\n  (`integer`, default `2`)\n- `start_indented`: Whether to indent the first level of the list (`boolean`,\n  default `false`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when list items are not indented by the configured\nnumber of spaces (default: 2).\n\nExample:\n\n```markdown\n* List item\n   * Nested list item indented by 3 spaces\n```\n\nCorrected Example:\n\n```markdown\n* List item\n  * Nested list item indented by 2 spaces\n```\n\nNote: This rule applies to a sublist only if its parent lists are all also\nunordered (otherwise, extra indentation of ordered lists interferes with the\nrule).\n\nThe `start_indented` parameter allows the first level of lists to be indented by\nthe configured number of spaces rather than starting at zero. The `start_indent`\nparameter allows the first level of lists to be indented by a different number\nof spaces than the rest (ignored when `start_indented` is not set).\n\nRationale: Indenting by 2 spaces allows the content of a nested list to be in\nline with the start of the content of the parent list when a single space is\nused after the list marker. Indenting by 4 spaces is consistent with code blocks\nand simpler for editors to implement. Additionally, this can be a compatibility\nissue for other Markdown parsers, which require 4-space indents. More\ninformation: [Markdown Style Guide][markdown-style-guide].\n\nNote: See [Prettier.md](Prettier.md) for compatibility information.\n\n[markdown-style-guide]: https://cirosantilli.com/markdown-style-guide#indentation-of-content-inside-lists\n\n<a name=\"md009\"></a>\n\n## `MD009` - Trailing spaces\n\nTags: `whitespace`\n\nAliases: `no-trailing-spaces`\n\nParameters:\n\n- `br_spaces`: Spaces for line break (`integer`, default `2`)\n- `code_blocks`: Include code blocks (`boolean`, default `false`)\n- `list_item_empty_lines`: Allow spaces for empty lines in list items\n  (`boolean`, default `false`)\n- `strict`: Include unnecessary breaks (`boolean`, default `false`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered on any lines that end with unexpected whitespace. To fix\nthis, remove the trailing space from the end of the line.\n\nThe `br_spaces` parameter allows an exception to this rule for a specific number\nof trailing spaces, typically used to insert an explicit line break. The default\nvalue allows 2 spaces to indicate a hard break (\\<br> element). (You must set\n`br_spaces` to a value >= 2 for this parameter to take effect. Setting\n`br_spaces` to 1 behaves the same as 0, disallowing any trailing spaces.)\n\nBy default, trailing space is allowed in indented and fenced code blocks because\nsome programming languages require that. To report such instances, set the\n`code_blocks` parameter to `true`.\n\nBy default, this rule will not trigger when the allowed number of spaces is\nused, even when it doesn't create a hard break (for example, at the end of a\nparagraph). To report such instances, set the `strict` parameter to `true`.\n\n```markdown\nText text text\ntext[2 spaces]\n```\n\nUsing spaces to indent blank lines inside a list item is usually not necessary,\nbut some parsers require it. Set the `list_item_empty_lines` parameter to `true`\nto allow this (even when `strict` is `true`):\n\n```markdown\n- list item text\n  [2 spaces]\n  list item text\n```\n\nRationale: Except when being used to create a line break, trailing whitespace\nhas no purpose and does not affect the rendering of content.\n\n<a name=\"md010\"></a>\n\n## `MD010` - Hard tabs\n\nTags: `hard_tab`, `whitespace`\n\nAliases: `no-hard-tabs`\n\nParameters:\n\n- `code_blocks`: Include code blocks (`boolean`, default `true`)\n- `ignore_code_languages`: Fenced code languages to ignore (`string[]`, default\n  `[]`)\n- `spaces_per_tab`: Number of spaces for each hard tab (`integer`, default `1`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered by any lines that contain hard tab characters instead\nof using spaces for indentation. To fix this, replace any hard tab characters\nwith spaces instead.\n\nExample:\n\n<!-- markdownlint-disable no-hard-tabs -->\n\n```markdown\nSome text\n\n\t* hard tab character used to indent the list item\n```\n\n<!-- markdownlint-restore -->\n\nCorrected example:\n\n```markdown\nSome text\n\n    * Spaces used to indent the list item instead\n```\n\nYou have the option to exclude this rule for code blocks and spans. To do so,\nset the `code_blocks` parameter to `false`. Code blocks and spans are included\nby default since handling of tabs by Markdown tools can be inconsistent (e.g.,\nusing 4 vs. 8 spaces).\n\nWhen code blocks are scanned (e.g., by default or if `code_blocks` is `true`),\nthe `ignore_code_languages` parameter can be set to a list of languages that\nshould be ignored (i.e., hard tabs will be allowed, though not required). This\nmakes it easier for documents to include code for languages that require hard\ntabs.\n\nBy default, violations of this rule are fixed by replacing the tab with 1 space\ncharacter. To use a different number of spaces, set the `spaces_per_tab`\nparameter to the desired value.\n\nRationale: Hard tabs are often rendered inconsistently by different editors and\ncan be harder to work with than spaces.\n\nMore information:\n\n- <https://agiletribe.wordpress.com/2011/10/27/18-dont-use-tab-characters/>\n- <https://www.jwz.org/doc/tabs-vs-spaces.html>\n\n<a name=\"md011\"></a>\n\n## `MD011` - Reversed link syntax\n\nTags: `links`\n\nAliases: `no-reversed-links`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when text that appears to be a link is encountered, but\nwhere the syntax appears to have been reversed (the `[]` and `()` are\nreversed):\n\n```markdown\n(Incorrect link syntax)[https://www.example.com/]\n```\n\nTo fix this, swap the `[]` and `()` around:\n\n```markdown\n[Correct link syntax](https://www.example.com/)\n```\n\nNote: [Markdown Extra](https://wikipedia.org/wiki/Markdown_Extra)-style\nfootnotes do not trigger this rule:\n\n```markdown\nFor (example)[^1]\n```\n\nRationale: Reversed links are not rendered as usable links.\n\n<a name=\"md012\"></a>\n\n## `MD012` - Multiple consecutive blank lines\n\nTags: `blank_lines`, `whitespace`\n\nAliases: `no-multiple-blanks`\n\nParameters:\n\n- `maximum`: Consecutive blank lines (`integer`, default `1`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when there are multiple consecutive blank lines in the\ndocument:\n\n```markdown\nSome text here\n\n\nSome more text here\n```\n\nTo fix this, delete the offending lines:\n\n```markdown\nSome text here\n\nSome more text here\n```\n\nNote: this rule will not be triggered if there are multiple consecutive blank\nlines inside code blocks.\n\nNote: The `maximum` parameter can be used to configure the maximum number of\nconsecutive blank lines.\n\nRationale: Except in a code block, blank lines serve no purpose and do not\naffect the rendering of content.\n\n<a name=\"md013\"></a>\n\n## `MD013` - Line length\n\nTags: `line_length`\n\nAliases: `line-length`\n\nParameters:\n\n- `code_block_line_length`: Number of characters for code blocks (`integer`,\n  default `80`)\n- `code_blocks`: Include code blocks (`boolean`, default `true`)\n- `heading_line_length`: Number of characters for headings (`integer`, default\n  `80`)\n- `headings`: Include headings (`boolean`, default `true`)\n- `line_length`: Number of characters (`integer`, default `80`)\n- `stern`: Stern length checking (`boolean`, default `false`)\n- `strict`: Strict length checking (`boolean`, default `false`)\n- `tables`: Include tables (`boolean`, default `true`)\n\nThis rule is triggered when there are lines that are longer than the\nconfigured `line_length` (default: 80 characters). To fix this, split the line\nup into multiple lines. To set a different maximum length for headings, use\n`heading_line_length`. To set a different maximum length for code blocks, use\n`code_block_line_length`\n\nThis rule has an exception when there is no whitespace beyond the configured\nline length. This allows you to include items such as long URLs without being\nforced to break them in the middle. To disable this exception, set the `strict`\nparameter to `true` and an issue will be reported when any line is too long. To\nwarn for lines that are too long and could be fixed but allow long lines\nwithout spaces, set the `stern` parameter to `true`.\n\nFor example (assuming normal behavior):\n\n```markdown\nIF THIS LINE IS THE MAXIMUM LENGTH\nThis line is okay because there are-no-spaces-beyond-that-length\nThis line is a violation because there are spaces beyond that length\nThis-line-is-okay-because-there-are-no-spaces-anywhere-within\n```\n\nIn `strict` mode, the last three lines above are all violations. In `stern`\nmode, the middle two lines above are both violations, but the last is okay.\n\nYou have the option to exclude this rule for code blocks, tables, or headings.\nTo do so, set the `code_blocks`, `tables`, or `headings` parameter(s) to false.\n\nCode blocks are included in this rule by default since it is often a\nrequirement for document readability, and tentatively compatible with code\nrules. Still, some languages do not lend themselves to short lines.\n\nLines with link/image reference definitions and standalone lines (i.e., not part\nof a paragraph) with only a link/image (possibly using (strong) emphasis) are\nalways exempted from this rule (even in `strict` mode) because there is often no\nway to split such lines without breaking the URL.\n\nRationale: Extremely long lines can be difficult to work with in some editors.\nMore information: <https://cirosantilli.com/markdown-style-guide#line-wrapping>.\n\n<a name=\"md014\"></a>\n\n## `MD014` - Dollar signs used before commands without showing output\n\nTags: `code`\n\nAliases: `commands-show-output`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when there are code blocks showing shell commands to be\ntyped, and *all* of the shell commands are preceded by dollar signs ($):\n\n<!-- markdownlint-disable commands-show-output -->\n\n```markdown\n$ ls\n$ cat foo\n$ less bar\n```\n\n<!-- markdownlint-restore -->\n\nThe dollar signs are unnecessary in this situation, and should not be\nincluded:\n\n```markdown\nls\ncat foo\nless bar\n```\n\nShowing output for commands preceded by dollar signs does not trigger this rule:\n\n```markdown\n$ ls\nfoo bar\n$ cat foo\nHello world\n$ cat bar\nbaz\n```\n\nBecause some commands do not produce output, it is not a violation if *some*\ncommands do not have output:\n\n```markdown\n$ mkdir test\nmkdir: created directory 'test'\n$ ls test\n```\n\nRationale: It is easier to copy/paste and less noisy if the dollar signs\nare omitted when they are not needed. See\n<https://cirosantilli.com/markdown-style-guide#dollar-signs-in-shell-code>\nfor more information.\n\n<a name=\"md018\"></a>\n\n## `MD018` - No space after hash on atx style heading\n\nTags: `atx`, `headings`, `spaces`\n\nAliases: `no-missing-space-atx`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when spaces are missing after the hash characters\nin an atx style heading:\n\n```markdown\n#Heading 1\n\n##Heading 2\n```\n\nTo fix this, separate the heading text from the hash character by a single\nspace:\n\n```markdown\n# Heading 1\n\n## Heading 2\n```\n\nRationale: Violations of this rule can lead to improperly rendered content.\n\n<a name=\"md019\"></a>\n\n## `MD019` - Multiple spaces after hash on atx style heading\n\nTags: `atx`, `headings`, `spaces`\n\nAliases: `no-multiple-space-atx`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when more than one space is used to separate the\nheading text from the hash characters in an atx style heading:\n\n```markdown\n#  Heading 1\n\n##  Heading 2\n```\n\nTo fix this, separate the heading text from the hash character by a single\nspace:\n\n```markdown\n# Heading 1\n\n## Heading 2\n```\n\nRationale: Extra space has no purpose and does not affect the rendering of\ncontent.\n\n<a name=\"md020\"></a>\n\n## `MD020` - No space inside hashes on closed atx style heading\n\nTags: `atx_closed`, `headings`, `spaces`\n\nAliases: `no-missing-space-closed-atx`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when spaces are missing inside the hash characters\nin a closed atx style heading:\n\n```markdown\n#Heading 1#\n\n##Heading 2##\n```\n\nTo fix this, separate the heading text from the hash character by a single\nspace:\n\n```markdown\n# Heading 1 #\n\n## Heading 2 ##\n```\n\nNote: this rule will fire if either side of the heading is missing spaces.\n\nRationale: Violations of this rule can lead to improperly rendered content.\n\n<a name=\"md021\"></a>\n\n## `MD021` - Multiple spaces inside hashes on closed atx style heading\n\nTags: `atx_closed`, `headings`, `spaces`\n\nAliases: `no-multiple-space-closed-atx`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when more than one space is used to separate the\nheading text from the hash characters in a closed atx style heading:\n\n```markdown\n#  Heading 1  #\n\n##  Heading 2  ##\n```\n\nTo fix this, separate the heading text from the hash character by a single\nspace:\n\n```markdown\n# Heading 1 #\n\n## Heading 2 ##\n```\n\nNote: this rule will fire if either side of the heading contains multiple\nspaces.\n\nRationale: Extra space has no purpose and does not affect the rendering of\ncontent.\n\n<a name=\"md022\"></a>\n\n## `MD022` - Headings should be surrounded by blank lines\n\nTags: `blank_lines`, `headings`\n\nAliases: `blanks-around-headings`\n\nParameters:\n\n- `include_front_matter`: Include front matter content (`boolean`, default\n  `false`)\n- `lines_above`: Blank lines above heading (`integer|integer[]`, default `1`)\n- `lines_below`: Blank lines below heading (`integer|integer[]`, default `1`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when headings (any style) are either not preceded or not\nfollowed by at least one blank line:\n\n```markdown\n# Heading 1\nSome text\n\nSome more text\n## Heading 2\n```\n\nTo fix this, ensure that all headings have a blank line both before and after\n(except where the heading is at the beginning or end of the document):\n\n```markdown\n# Heading 1\n\nSome text\n\nSome more text\n\n## Heading 2\n```\n\nThe `lines_above` and `lines_below` parameters can be used to specify a\ndifferent number of blank lines (including `0`) above or below each heading.\nIf the value `-1` is used for either parameter, any number of blank lines is\nallowed. To customize the number of lines above or below each heading level\nindividually, specify a `number[]` where values correspond to heading levels\n1-6 (in order).\n\nNotes: If `lines_above` or `lines_below` are configured to require more than one\nblank line, [MD012/no-multiple-blanks](md012.md) should also be customized. This\nrule checks for *at least* as many blank lines as specified; any extra blank\nlines are ignored.\n\nBy default, [YAML](https://wikipedia.org/wiki/YAML) front matter is ignored, so\nthe following document reports no violations:\n\n```markdown\n---\ntitle: Title\n---\n## Heading\n```\n\nTo require the configured number of blank lines between front matter content and\na document's first heading, set the `include_front_matter` parameter to `true`.\n\nRationale: Aside from aesthetic reasons, some parsers, including `kramdown`,\nwill not parse headings that don't have a blank line before, and will parse them\nas regular text.\n\n<a name=\"md023\"></a>\n\n## `MD023` - Headings must start at the beginning of the line\n\nTags: `headings`, `spaces`\n\nAliases: `heading-start-left`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when a heading is indented by one or more spaces:\n\n```markdown\nSome text\n\n  # Indented heading\n```\n\nTo fix this, ensure that all headings start at the beginning of the line:\n\n```markdown\nSome text\n\n# Heading\n```\n\nNote that scenarios like block quotes \"indent\" the start of the line, so the\nfollowing is also correct:\n\n```markdown\n> # Heading in Block Quote\n```\n\nRationale: Headings that don't start at the beginning of the line will not be\nparsed as headings, and will instead appear as regular text.\n\n<a name=\"md024\"></a>\n\n## `MD024` - Multiple headings with the same content\n\nTags: `headings`\n\nAliases: `no-duplicate-heading`\n\nParameters:\n\n- `siblings_only`: Only check sibling headings (`boolean`, default `false`)\n\nThis rule is triggered if there are multiple headings in the document that have\nthe same text:\n\n```markdown\n# Some text\n\n## Some text\n```\n\nTo fix this, ensure that the content of each heading is different:\n\n```markdown\n# Some text\n\n## Some more text\n```\n\nIf the parameter `siblings_only` is set to `true`, duplication is allowed for\nheadings with different parents (as is common in changelogs):\n\n```markdown\n# Changelog\n\n## 1.0.0\n\n### Features\n\n## 2.0.0\n\n### Features\n```\n\nRationale: Some Markdown parsers generate anchors for headings based on the\nheading name; headings with the same content can cause problems with that.\n\n<a name=\"md025\"></a>\n\n## `MD025` - Multiple top-level headings in the same document\n\nTags: `headings`\n\nAliases: `single-h1`, `single-title`\n\nParameters:\n\n- `front_matter_title`: RegExp for matching title in front matter (`string`,\n  default `^\\s*title\\s*[:=]`)\n- `level`: Heading level (`integer`, default `1`)\n\nThis rule is triggered when a top-level heading is in use (the first line of\nthe file is an h1 heading), and more than one h1 heading is in use in the\ndocument:\n\n```markdown\n# Top level heading\n\n# Another top-level heading\n```\n\nTo fix, structure your document so there is a single h1 heading that is\nthe title for the document. Subsequent headings must be\nlower-level headings (h2, h3, etc.):\n\n```markdown\n# Title\n\n## Heading\n\n## Another heading\n```\n\nNote: The `level` parameter can be used to change the top-level (ex: to h2) in\ncases where an h1 is added externally.\n\nIf [YAML](https://wikipedia.org/wiki/YAML) front matter is present and\ncontains a `title` property (commonly used with blog posts), this rule treats\nthat as a top level heading and will report a violation for any subsequent\ntop-level headings. To use a different property name in the front matter,\nspecify the text of a regular expression via the `front_matter_title` parameter.\nTo disable the use of front matter by this rule, specify `\"\"` for\n`front_matter_title`.\n\nRationale: A top-level heading is an h1 on the first line of the file, and\nserves as the title for the document. If this convention is in use, then there\ncan not be more than one title for the document, and the entire document should\nbe contained within this heading.\n\n<a name=\"md026\"></a>\n\n## `MD026` - Trailing punctuation in heading\n\nTags: `headings`\n\nAliases: `no-trailing-punctuation`\n\nParameters:\n\n- `punctuation`: Punctuation characters (`string`, default `.,;:!。，；：！`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered on any heading that has one of the specified normal or\nfull-width punctuation characters as the last character in the line:\n\n```markdown\n# This is a heading.\n```\n\nTo fix this, remove the trailing punctuation:\n\n```markdown\n# This is a heading\n```\n\nNote: The `punctuation` parameter can be used to specify what characters count\nas punctuation at the end of a heading. For example, you can change it to\n`\".,;:\"` to allow headings that end with an exclamation point. `?` is\nallowed by default because of how common it is in headings of FAQ-style\ndocuments. Setting the `punctuation` parameter to `\"\"` allows all characters -\nand is equivalent to disabling the rule.\n\nNote: The trailing semicolon of [HTML entity references][html-entity-references]\nlike `&copy;`, `&#169;`, and `&#x000A9;` is ignored by this rule.\n\nRationale: Headings are not meant to be full sentences. More information:\n[Punctuation at the end of headers][end-punctuation].\n\n[end-punctuation]: https://cirosantilli.com/markdown-style-guide#punctuation-at-the-end-of-headers\n[html-entity-references]: https://wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references\n\n<a name=\"md027\"></a>\n\n## `MD027` - Multiple spaces after blockquote symbol\n\nTags: `blockquote`, `indentation`, `whitespace`\n\nAliases: `no-multiple-space-blockquote`\n\nParameters:\n\n- `list_items`: Include list items (`boolean`, default `true`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when blockquotes have more than one space after the\nblockquote (`>`) symbol:\n\n```markdown\n>  This is a blockquote with bad indentation\n>  there should only be one.\n```\n\nTo fix, remove any extraneous space:\n\n```markdown\n> This is a blockquote with correct\n> indentation.\n```\n\nInferring intended list indentation within a blockquote can be challenging;\nsetting the `list_items` parameter to `false` disables this rule for ordered\nand unordered list items.\n\nRationale: Consistent formatting makes it easier to understand a document.\n\n<a name=\"md028\"></a>\n\n## `MD028` - Blank line inside blockquote\n\nTags: `blockquote`, `whitespace`\n\nAliases: `no-blanks-blockquote`\n\nThis rule is triggered when two blockquote blocks are separated by nothing\nbut a blank line:\n\n```markdown\n> This is a blockquote\n> which is immediately followed by\n\n> this blockquote. In some cases,\n> these may be merged into one blockquote.\n```\n\nTo fix this, ensure that consecutive blockquotes have text (or an HTML comment)\nin between:\n\n```markdown\n> This is a blockquote.\n\nThis is paragraph text.\n\n> This is a second blockquote.\n\n<!-- This is an HTML comment -->\n\n> This is a third blockquote.\n```\n\nIf they are meant to be a single quote, add the blockquote symbol at the\nbeginning of the blank line:\n\n```markdown\n> This is a blockquote.\n>\n> This is the same blockquote.\n```\n\nRationale: Some Markdown parsers will treat two blockquotes separated by one\nor more blank lines as the same blockquote, while others will treat them as\nseparate blockquotes.\n\n<a name=\"md029\"></a>\n\n## `MD029` - Ordered list item prefix\n\nTags: `ol`\n\nAliases: `ol-prefix`\n\nParameters:\n\n- `style`: List style (`string`, default `one_or_ordered`, values `one` /\n  `one_or_ordered` / `ordered` / `zero`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered for ordered lists that do not either start with '1.' or\ndo not have a prefix that increases in numerical order (depending on the\nconfigured style). The less-common pattern of using '0.' as a first prefix or\nfor all prefixes is also supported.\n\nExample valid list if the style is configured as 'one':\n\n```markdown\n1. Do this.\n1. Do that.\n1. Done.\n```\n\nExamples of valid lists if the style is configured as 'ordered':\n\n```markdown\n1. Do this.\n2. Do that.\n3. Done.\n```\n\n```markdown\n0. Do this.\n1. Do that.\n2. Done.\n```\n\nAll three examples are valid when the style is configured as 'one_or_ordered'.\n\nExample valid list if the style is configured as 'zero':\n\n```markdown\n0. Do this.\n0. Do that.\n0. Done.\n```\n\nExample invalid list for all styles:\n\n```markdown\n1. Do this.\n3. Done.\n```\n\nThis rule supports 0-prefixing list items for uniform indentation and will\npreserve that when fixing:\n\n```markdown\n...\n08. Item\n09. Item\n10. Item\n11. Item\n```\n\nWhen list items appear to be right-aligned, fixes will maintain that alignment:\n\n```markdown\n...\n 8. Item\n 9. Item\n10. Item\n11. Item\n```\n\nNote: This rule will report violations for cases like the following where an\nimproperly-indented code block (or similar) appears between two list items and\n\"breaks\" the list in two:\n\n<!-- markdownlint-disable code-fence-style -->\n\n~~~markdown\n1. First list\n\n```text\nCode block\n```\n\n1. Second list\n~~~\n\nThe fix is to indent the code block so it becomes part of the preceding list\nitem as intended:\n\n~~~markdown\n1. First list\n\n   ```text\n   Code block\n   ```\n\n2. Still first list\n~~~\n\n<!-- markdownlint-restore -->\n\nRationale: Consistent formatting makes it easier to understand a document.\n\n<a name=\"md030\"></a>\n\n## `MD030` - Spaces after list markers\n\nTags: `ol`, `ul`, `whitespace`\n\nAliases: `list-marker-space`\n\nParameters:\n\n- `ol_multi`: Spaces for multi-line ordered list items (`integer`, default `1`)\n- `ol_single`: Spaces for single-line ordered list items (`integer`, default\n  `1`)\n- `ul_multi`: Spaces for multi-line unordered list items (`integer`, default\n  `1`)\n- `ul_single`: Spaces for single-line unordered list items (`integer`, default\n  `1`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule checks for the number of spaces between a list marker (e.g. '`-`',\n'`*`', '`+`' or '`1.`') and the text of the list item.\n\nThe number of spaces checked for depends on the document style in use, but the\ndefault is 1 space after any list marker:\n\n```markdown\n* Foo\n* Bar\n* Baz\n\n1. Foo\n1. Bar\n1. Baz\n\n1. Foo\n   * Bar\n1. Baz\n```\n\nA document style may change the number of spaces after unordered list items\nand ordered list items independently, as well as based on whether the content\nof every item in the list consists of a single paragraph or multiple\nparagraphs (including sub-lists and code blocks).\n\nFor example, the style guide at\n<https://cirosantilli.com/markdown-style-guide#spaces-after-list-marker>\nspecifies that 1 space after the list marker should be used if every item in\nthe list fits within a single paragraph, but to use 2 or 3 spaces (for ordered\nand unordered lists respectively) if there are multiple paragraphs of content\ninside the list:\n\n```markdown\n* Foo\n* Bar\n* Baz\n```\n\nvs.\n\n```markdown\n*   Foo\n\n    Second paragraph\n\n*   Bar\n```\n\nor\n\n```markdown\n1.  Foo\n\n    Second paragraph\n\n1.  Bar\n```\n\nTo fix this, ensure the correct number of spaces are used after the list marker\nfor your selected document style.\n\nRationale: Violations of this rule can lead to improperly rendered content.\n\nNote: See [Prettier.md](Prettier.md) for compatibility information.\n\n<a name=\"md031\"></a>\n\n## `MD031` - Fenced code blocks should be surrounded by blank lines\n\nTags: `blank_lines`, `code`\n\nAliases: `blanks-around-fences`\n\nParameters:\n\n- `list_items`: Include list items (`boolean`, default `true`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when fenced code blocks are either not preceded or not\nfollowed by a blank line:\n\n````markdown\nSome text\n```\nCode block\n```\n\n```\nAnother code block\n```\nSome more text\n````\n\nTo fix this, ensure that all fenced code blocks have a blank line both before\nand after (except where the block is at the beginning or end of the document):\n\n````markdown\nSome text\n\n```\nCode block\n```\n\n```\nAnother code block\n```\n\nSome more text\n````\n\nSet the `list_items` parameter to `false` to disable this rule for list items.\nDisabling this behavior for lists can be useful if it is necessary to create a\n[tight](https://spec.commonmark.org/0.29/#tight) list containing a code fence.\n\nRationale: Aside from aesthetic reasons, some parsers, including kramdown, will\nnot parse fenced code blocks that don't have blank lines before and after them.\n\n<a name=\"md032\"></a>\n\n## `MD032` - Lists should be surrounded by blank lines\n\nTags: `blank_lines`, `bullet`, `ol`, `ul`\n\nAliases: `blanks-around-lists`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when lists (of any kind) are either not preceded or not\nfollowed by a blank line:\n\n```markdown\nSome text\n* List item\n* List item\n\n1. List item\n2. List item\n***\n```\n\nIn the first case above, text immediately precedes the unordered list. In the\nsecond case above, a thematic break immediately follows the ordered list. To fix\nviolations of this rule, ensure that all lists have a blank line both before and\nafter (except when the list is at the very beginning or end of the document):\n\n```markdown\nSome text\n\n* List item\n* List item\n\n1. List item\n2. List item\n\n***\n```\n\nNote that the following case is **not** a violation of this rule:\n\n```markdown\n1. List item\n   More item 1\n2. List item\nMore item 2\n```\n\nAlthough it is not indented, the text \"More item 2\" is referred to as a\n[lazy continuation line][lazy-continuation] and considered part of the second\nlist item.\n\nRationale: In addition to aesthetic reasons, some parsers, including kramdown,\nwill not parse lists that don't have blank lines before and after them.\n\n[lazy-continuation]: https://spec.commonmark.org/0.30/#lazy-continuation-line\n\n<a name=\"md033\"></a>\n\n## `MD033` - Inline HTML\n\nTags: `html`\n\nAliases: `no-inline-html`\n\nParameters:\n\n- `allowed_elements`: Allowed elements (`string[]`, default `[]`)\n- `table_allowed_elements`: Allowed elements in tables (`string[]`, default\n  `[]`)\n\nThis rule is triggered whenever raw HTML is used in a Markdown document:\n\n```markdown\n<h1>Inline HTML heading</h1>\n```\n\nTo fix this, use 'pure' Markdown instead of including raw HTML:\n\n```markdown\n# Markdown heading\n```\n\nTo allow specific HTML elements anywhere in Markdown content, set the\n`allowed_elements` parameter to a list of HTML element names. To allow a\nspecific set of HTML elements within Markdown tables, set the\n`table_allowed_elements` parameter to a list of HTML element names. This can be\nused to permit the use of `<br>`-style line breaks only within Markdown tables.\n\nRationale: Raw HTML is allowed in Markdown, but this rule is included for\nthose who want their documents to only include \"pure\" Markdown, or for those\nwho are rendering Markdown documents into something other than HTML.\n\n<a name=\"md034\"></a>\n\n## `MD034` - Bare URL used\n\nTags: `links`, `url`\n\nAliases: `no-bare-urls`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered whenever a URL or email address appears without\nsurrounding angle brackets:\n\n```markdown\nFor more info, visit https://www.example.com/ or email user@example.com.\n```\n\nTo fix this, add angle brackets around the URL or email address:\n\n```markdown\nFor more info, visit <https://www.example.com/> or email <user@example.com>.\n```\n\nIf a URL or email address contains non-ASCII characters, it may be not be\nhandled as intended even when angle brackets are present. In such cases,\n[percent-encoding](https://wikipedia.org/wiki/Percent-encoding) can be used\nto comply with the required syntax for URL and email.\n\nNote: To include a bare URL or email without it being converted into a link,\nwrap it in a code span:\n\n```markdown\nNot a clickable link: `https://www.example.com`\n```\n\nNote: The following scenario does not trigger this rule because it could be a\nshortcut link:\n\n```markdown\n[https://www.example.com]\n```\n\nNote: The following syntax triggers this rule because the nested link could be\na shortcut link (which takes precedence):\n\n```markdown\n[text [shortcut] text](https://example.com)\n```\n\nTo avoid this, escape both inner brackets:\n\n```markdown\n[link \\[text\\] link](https://example.com)\n```\n\nRationale: Without angle brackets, a bare URL or email isn't converted into a\nlink by some Markdown parsers.\n\n<a name=\"md035\"></a>\n\n## `MD035` - Horizontal rule style\n\nTags: `hr`\n\nAliases: `hr-style`\n\nParameters:\n\n- `style`: Horizontal rule style (`string`, default `consistent`)\n\nThis rule is triggered when inconsistent styles of horizontal rules (also known\nas \"thematic breaks\") are used in a document:\n\n```markdown\n---\n\n- - -\n\n***\n\n* * *\n\n****\n```\n\nTo fix this, use the same horizontal rule syntax everywhere:\n\n```markdown\n---\n\n---\n\n---\n```\n\nThe `style` parameter's default value `consistent` ensures all horizontal rules\nin a document match the first horizontal rule in that document. To enforce a\nspecific pattern of characters, set the `style` parameter to that string (e.g.,\n`\"* * *\"`).\n\nNote: In order to be recognized as a horizontal rule, a line must contain three\nor more matching `-`, `_`, or `*` characters with optional space between.\n\nRationale: Consistent formatting makes it easier to understand a document.\n\n<a name=\"md036\"></a>\n\n## `MD036` - Emphasis used instead of a heading\n\nTags: `emphasis`, `headings`\n\nAliases: `no-emphasis-as-heading`\n\nParameters:\n\n- `punctuation`: Punctuation characters (`string`, default `.,;:!?。，；：！？`)\n\nThis check looks for instances where emphasized (i.e. bold or italic) text is\nused to separate sections, where a heading should be used instead:\n\n```markdown\n**My document**\n\nLorem ipsum dolor sit amet...\n\n_Another section_\n\nConsectetur adipiscing elit, sed do eiusmod.\n```\n\nTo fix this, use Markdown headings instead of emphasized text to denote\nsections:\n\n```markdown\n# My document\n\nLorem ipsum dolor sit amet...\n\n## Another section\n\nConsectetur adipiscing elit, sed do eiusmod.\n```\n\nNote: This rule looks for single-line paragraphs that consist entirely\nof emphasized text. It won't fire on emphasis used within regular text,\nmulti-line emphasized paragraphs, or paragraphs ending in punctuation\n(normal or full-width). Similarly to rule MD026, you can configure what\ncharacters are recognized as punctuation.\n\nRationale: Using emphasis instead of a heading prevents tools from inferring\nthe structure of a document. More information:\n<https://cirosantilli.com/markdown-style-guide#emphasis-vs-headers>.\n\n<a name=\"md037\"></a>\n\n## `MD037` - Spaces inside emphasis markers\n\nTags: `emphasis`, `whitespace`\n\nAliases: `no-space-in-emphasis`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when emphasis markers (bold, italic) are used, but they\nhave spaces between the markers and the text:\n\n```markdown\nHere is some ** bold ** text.\n\nHere is some * italic * text.\n\nHere is some more __ bold __ text.\n\nHere is some more _ italic _ text.\n```\n\nTo fix this, remove the spaces around the emphasis markers:\n\n```markdown\nHere is some **bold** text.\n\nHere is some *italic* text.\n\nHere is some more __bold__ text.\n\nHere is some more _italic_ text.\n```\n\nRationale: Emphasis is only parsed as such when the asterisks/underscores\naren't surrounded by spaces. This rule attempts to detect where\nthey were surrounded by spaces, but it appears that emphasized text was\nintended by the author.\n\n<a name=\"md038\"></a>\n\n## `MD038` - Spaces inside code span elements\n\nTags: `code`, `whitespace`\n\nAliases: `no-space-in-code`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered for code spans containing content with unnecessary space\nnext to the beginning or ending backticks:\n\n```markdown\n`some text `\n\n` some text`\n\n`   some text   `\n```\n\nTo fix this, remove the extra space characters from the beginning and ending:\n\n```markdown\n`some text`\n```\n\nNote: A single leading *and* trailing space is allowed by the specification and\ntrimmed by the parser to support code spans that begin or end with a backtick:\n\n```markdown\n`` `backticks` ``\n\n`` backtick` ``\n```\n\nNote: When single-space padding is present in the input, it will be preserved\n(even if unnecessary):\n\n```markdown\n` code `\n```\n\nNote: Code spans containing only spaces are allowed by the specification and are\nalso preserved:\n\n```markdown\n` `\n\n`   `\n```\n\nRationale: Violations of this rule are usually unintentional and can lead to\nimproperly-rendered content.\n\n<a name=\"md039\"></a>\n\n## `MD039` - Spaces inside link text\n\nTags: `links`, `whitespace`\n\nAliases: `no-space-in-links`\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered on links that have spaces surrounding the link text:\n\n```markdown\n[ a link ](https://www.example.com/)\n```\n\nTo fix this, remove the spaces surrounding the link text:\n\n```markdown\n[a link](https://www.example.com/)\n```\n\nRationale: Consistent formatting makes it easier to understand a document.\n\n<a name=\"md040\"></a>\n\n## `MD040` - Fenced code blocks should have a language specified\n\nTags: `code`, `language`\n\nAliases: `fenced-code-language`\n\nParameters:\n\n- `allowed_languages`: List of languages (`string[]`, default `[]`)\n- `language_only`: Require language only (`boolean`, default `false`)\n\nThis rule is triggered when fenced code blocks are used, but a language isn't\nspecified:\n\n````markdown\n```\n#!/bin/bash\necho Hello world\n```\n````\n\nTo fix this, add a language specifier to the code block:\n\n````markdown\n```bash\n#!/bin/bash\necho Hello world\n```\n````\n\nTo display a code block without syntax highlighting, use:\n\n````markdown\n```text\nPlain text in a code block\n```\n````\n\nYou can configure the `allowed_languages` parameter to specify a list of\nlanguages code blocks could use. Languages are case sensitive. The default value\nis `[]` which means any language specifier is valid.\n\nYou can prevent extra data from being present in the info string of fenced code\nblocks. To do so, set the `language_only` parameter to `true`.\n\n<!-- markdownlint-disable-next-line no-space-in-code -->\nInfo strings with leading/trailing whitespace (ex: `js `) or other content (ex:\n`ruby startline=3`) will trigger this rule.\n\nRationale: Specifying a language improves content rendering by using the\ncorrect syntax highlighting for code. More information:\n<https://cirosantilli.com/markdown-style-guide#option-code-fenced>.\n\n<a name=\"md041\"></a>\n\n## `MD041` - First line in a file should be a top-level heading\n\nTags: `headings`\n\nAliases: `first-line-h1`, `first-line-heading`\n\nParameters:\n\n- `allow_preamble`: Allow content before first heading (`boolean`, default\n  `false`)\n- `front_matter_title`: RegExp for matching title in front matter (`string`,\n  default `^\\s*title\\s*[:=]`)\n- `level`: Heading level (`integer`, default `1`)\n\nThis rule is intended to ensure documents have a title and is triggered when\nthe first line in a document is not a top-level ([HTML][HTML] `h1`) heading:\n\n```markdown\nThis is a document without a heading\n```\n\nTo fix this, add a top-level heading to the beginning of the document:\n\n```markdown\n# Document Heading\n\nThis is a document with a top-level heading\n```\n\nBecause it is common for projects on GitHub to use an image for the heading of\n`README.md` and that pattern is not well-supported by Markdown, HTML headings\nare also permitted by this rule. For example:\n\n```markdown\n<h1 align=\"center\"><img src=\"https://placekitten.com/300/150\"/></h1>\n\nThis is a document with a top-level HTML heading\n```\n\nIn some cases, a document's title heading may be preceded by text like a table\nof contents. This is not ideal for accessibility, but can be allowed by setting\nthe `allow_preamble` parameter to `true`.\n\n```markdown\nThis is a document with preamble text\n\n# Document Heading\n```\n\nIf [YAML][YAML] front matter is present and contains a `title` property\n(commonly used with blog posts), this rule will not report a violation. To use a\ndifferent property name in the front matter, specify the text of a [regular\nexpression][RegExp] via the `front_matter_title` parameter. To disable the use\nof front matter by this rule, specify `\"\"` for `front_matter_title`.\n\nThe `level` parameter can be used to change the top-level heading (ex: to `h2`)\nin cases where an `h1` is added externally.\n\nRationale: The top-level heading often acts as the title of a document. More\ninformation: <https://cirosantilli.com/markdown-style-guide#top-level-header>.\n\n[HTML]: https://wikipedia.org/wiki/HTML\n[RegExp]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions\n[YAML]: https://wikipedia.org/wiki/YAML\n\n<a name=\"md042\"></a>\n\n## `MD042` - No empty links\n\nTags: `links`\n\nAliases: `no-empty-links`\n\nThis rule is triggered when an empty link is encountered:\n\n```markdown\n[an empty link]()\n```\n\nTo fix the violation, provide a destination for the link:\n\n```markdown\n[a valid link](https://example.com/)\n```\n\nEmpty fragments will trigger this rule:\n\n```markdown\n[an empty fragment](#)\n\n[an empty link definition][empty]\n\n[empty]: #\n```\n\nBut non-empty fragments will not:\n\n```markdown\n[a valid fragment](#fragment)\n```\n\nEmpty link definitions\n\nRationale: Empty links do not lead anywhere and therefore don't function as\nlinks.\n\n<a name=\"md043\"></a>\n\n## `MD043` - Required heading structure\n\nTags: `headings`\n\nAliases: `required-headings`\n\nParameters:\n\n- `headings`: List of headings (`string[]|null`, default `null`)\n- `match_case`: Match case of headings (`boolean`, default `false`)\n\nThis rule is triggered when the headings in a file do not match the array of\nheadings passed to the rule. It can be used to enforce a standard heading\nstructure for a set of files.\n\nTo require exactly the following structure:\n\n```markdown\n# Heading\n## Item\n### Detail\n```\n\nSet the `headings` parameter to:\n\n```json\n[\n    \"# Heading\",\n    \"## Item\",\n    \"### Detail\"\n]\n```\n\nTo allow optional headings as with the following structure:\n\n```markdown\n# Heading\n## Item\n### Detail (optional)\n### Example (optional)\n## Foot\n### Notes (optional)\n```\n\nUse the special value `*` meaning \"zero or more unspecified headings\", the\nspecial value `+` meaning \"one or more unspecified headings\", or the special\nvalue `?` meaning \"exactly one unspecified heading\" and set the `headings`\nparameter to something like:\n\n```json\n[\n    \"# Heading\",\n    \"## Item\",\n    \"*\",\n    \"## Foot\",\n    \"+\"\n]\n```\n\nTo require a heading with a specific level and text matching a specific pattern\n(for example, a one-word project name):\n\n```markdown\n# Project\n## Description\n## Examples\n```\n\nReplace the `#` prefix character(s) with `%` and specify a regular expression;\nthe following example requires a level 1 heading with a single word made up of\nat least 4 letters:\n\n```json\n[\n    \"% [a-zA-Z]{4,}\",\n    \"## Description\",\n    \"## Examples\"\n]\n```\n\nTo handle repeating heading sections (common in `CHANGELOG` files) such as the\nfollowing:\n\n```markdown\n# Changelog\n## 1.0.0\n### Fixes\n### Features\n## 2.0.0\n### Fixes\n### Features\n```\n\nUse the special value `^` meaning \"if the next heading does not match, loop\nback to the previous matching marker\":\n\n```json\n[\n    \"# Changelog\",\n    \"^\",\n    \"%% ^\\\\d+\\\\.\\\\d+\\\\.\\\\d+$\",\n    \"### Fixes\",\n    \"### Features\",\n    \"^\"\n]\n```\n\nThe simple form shown above is enough for most scenarios; if multiple loops are\nneeded, matching pairs of `^^`, `^^^`, etc. can be used in conjunction. The\nprefix `%` and the special value `?` are supported with loops, but `*` and `+`\nare not and will result in undefined behavior. To avoid infinite looping, a\nviolation is reported if the rule loops more than 1,000 times.\n\nWhen an error is detected, this rule outputs the line number of the first\nproblematic heading (otherwise, it outputs the last line number of the file).\n\nNote that while the `headings` parameter uses the \"## Text\" ATX heading style\nfor simplicity, a file may use any supported heading style.\n\nBy default, the case of headings in the document is not required to match that\nof `headings`. To require that case match exactly, set the `match_case`\nparameter to `true`.\n\nRationale: Projects may wish to enforce a consistent document structure across\na set of similar content.\n\n<a name=\"md044\"></a>\n\n## `MD044` - Proper names should have the correct capitalization\n\nTags: `spelling`\n\nAliases: `proper-names`\n\nParameters:\n\n- `code_blocks`: Include code blocks (`boolean`, default `true`)\n- `html_elements`: Include HTML elements (`boolean`, default `true`)\n- `names`: List of proper names (`string[]`, default `[]`)\n\nFixable: Some violations can be fixed by tooling\n\nThis rule is triggered when any of the strings in the `names` array do not have\nthe specified capitalization. It can be used to enforce a standard letter case\nfor the names of projects and products.\n\nFor example, the language \"JavaScript\" is usually written with both the 'J' and\n'S' capitalized - though sometimes the 's' or 'j' appear in lower-case. To\nenforce the proper capitalization, specify the desired letter case in the\n`names` array:\n\n```json\n[\n    \"JavaScript\"\n]\n```\n\nSometimes a proper name is capitalized differently in certain contexts. In such\ncases, add both forms to the `names` array:\n\n```json\n[\n    \"GitHub\",\n    \"github.com\"\n]\n```\n\nSet the `code_blocks` parameter to `false` to disable this rule for code blocks\nand spans. Set the `html_elements` parameter to `false` to disable this rule\nfor HTML elements and attributes (such as when using a proper name as part of\na path for `a`/`href` or `img`/`src`).\n\nRationale: Incorrect capitalization of proper names is usually a mistake.\n\n<a name=\"md045\"></a>\n\n## `MD045` - Images should have alternate text (alt text)\n\nTags: `accessibility`, `images`\n\nAliases: `no-alt-text`\n\nThis rule reports a violation when an image is missing alternate text (alt text)\ninformation.\n\nAlternate text is commonly specified inline as:\n\n```markdown\n![Alternate text](image.jpg)\n```\n\nOr with reference syntax as:\n\n```markdown\n![Alternate text][ref]\n\n...\n\n[ref]: image.jpg \"Optional title\"\n```\n\nOr with HTML as:\n\n```html\n<img src=\"image.jpg\" alt=\"Alternate text\" />\n```\n\nNote: If the [HTML `aria-hidden` attribute][aria-hidden] is used to hide the\nimage from assistive technology, this rule does not report a violation:\n\n```html\n<img src=\"image.jpg\" aria-hidden=\"true\" />\n```\n\nGuidance for writing alternate text is available from the [W3C][w3c],\n[Wikipedia][wikipedia], and [other locations][phase2technology].\n\nRationale: Alternate text is important for ac\n\n<!-- File: test/rules/node_modules/markdownlint-rule-sample-commonjs/package.json (Tokens: ~119 | Category: anthropic-skill) -->\n{\n  \"name\": \"markdownlint-rule-sample-commonjs\",\n  \"version\": \"0.0.1\",\n  \"description\": \"Package for markdownlint custom rule sample (commonjs)\",\n  \"main\": \"sample-rule.cjs\",\n  \"type\": \"commonjs\",\n  \"author\": \"David Anson (https://dlaa.me/)\",\n  \"homepage\": \"https://github.com/DavidAnson/markdownlint\",\n  \"license\": \"MIT\",\n  \"keywords\": [\n    \"markdownlint-rule\"\n  ],\n  \"private\": true\n}\n\n<!-- File: test/rules/node_modules/markdownlint-rule-sample-module/package.json (Tokens: ~116 | Category: anthropic-skill) -->\n{\n  \"name\": \"markdownlint-rule-sample-module\",\n  \"version\": \"0.0.1\",\n  \"description\": \"Package for markdownlint custom rule sample (module)\",\n  \"main\": \"sample-rule.mjs\",\n  \"type\": \"module\",\n  \"author\": \"David Anson (https://dlaa.me/)\",\n  \"homepage\": \"https://github.com/DavidAnson/markdownlint\",\n  \"license\": \"MIT\",\n  \"keywords\": [\n    \"markdownlint-rule\"\n  ],\n  \"private\": true\n}\n\n<!-- File: test/rules/npm/package.json (Tokens: ~113 | Category: anthropic-skill) -->\n{\n  \"name\": \"markdownlint-rule-sample\",\n  \"version\": \"0.0.1\",\n  \"description\": \"Package for markdownlint custom rule sample\",\n  \"type\": \"commonjs\",\n  \"main\": \"./sample-rule.js\",\n  \"author\": \"David Anson (https://dlaa.me/)\",\n  \"homepage\": \"https://github.com/DavidAnson/markdownlint\",\n  \"license\": \"MIT\",\n  \"keywords\": [\n    \"markdownlint-rule\"\n  ],\n  \"private\": true\n}\n</yakaai_skills>"}