@alexlit/lint-kit 214.0.1 → 214.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. package/package.json +1 -1
  2. package/packages/config-eslint/package.json +3 -3
  3. package/packages/config-markdownlint/node_modules/ansi-regex/index.d.ts +33 -0
  4. package/packages/config-markdownlint/node_modules/ansi-regex/index.js +15 -0
  5. package/packages/config-markdownlint/node_modules/ansi-regex/license +9 -0
  6. package/packages/config-markdownlint/node_modules/ansi-regex/package.json +61 -0
  7. package/packages/config-markdownlint/node_modules/ansi-regex/readme.md +66 -0
  8. package/packages/config-markdownlint/node_modules/markdownlint/CHANGELOG.md +553 -0
  9. package/packages/config-markdownlint/node_modules/markdownlint/CONTRIBUTING.md +77 -0
  10. package/packages/config-markdownlint/node_modules/markdownlint/LICENSE +21 -0
  11. package/packages/config-markdownlint/node_modules/markdownlint/README.md +1112 -0
  12. package/packages/config-markdownlint/node_modules/markdownlint/doc/CustomRules.md +196 -0
  13. package/packages/config-markdownlint/node_modules/markdownlint/doc/Prettier.md +27 -0
  14. package/packages/config-markdownlint/node_modules/markdownlint/doc/ReleaseProcess.md +20 -0
  15. package/packages/config-markdownlint/node_modules/markdownlint/doc/Rules.md +2909 -0
  16. package/packages/config-markdownlint/node_modules/markdownlint/doc/md001.md +51 -0
  17. package/packages/config-markdownlint/node_modules/markdownlint/doc/md003.md +59 -0
  18. package/packages/config-markdownlint/node_modules/markdownlint/doc/md004.md +50 -0
  19. package/packages/config-markdownlint/node_modules/markdownlint/doc/md005.md +53 -0
  20. package/packages/config-markdownlint/node_modules/markdownlint/doc/md007.md +52 -0
  21. package/packages/config-markdownlint/node_modules/markdownlint/doc/md009.md +50 -0
  22. package/packages/config-markdownlint/node_modules/markdownlint/doc/md010.md +61 -0
  23. package/packages/config-markdownlint/node_modules/markdownlint/doc/md011.md +30 -0
  24. package/packages/config-markdownlint/node_modules/markdownlint/doc/md012.md +38 -0
  25. package/packages/config-markdownlint/node_modules/markdownlint/doc/md013.md +58 -0
  26. package/packages/config-markdownlint/node_modules/markdownlint/doc/md014.md +54 -0
  27. package/packages/config-markdownlint/node_modules/markdownlint/doc/md018.md +27 -0
  28. package/packages/config-markdownlint/node_modules/markdownlint/doc/md019.md +28 -0
  29. package/packages/config-markdownlint/node_modules/markdownlint/doc/md020.md +29 -0
  30. package/packages/config-markdownlint/node_modules/markdownlint/doc/md021.md +31 -0
  31. package/packages/config-markdownlint/node_modules/markdownlint/doc/md022.md +67 -0
  32. package/packages/config-markdownlint/node_modules/markdownlint/doc/md023.md +33 -0
  33. package/packages/config-markdownlint/node_modules/markdownlint/doc/md024.md +44 -0
  34. package/packages/config-markdownlint/node_modules/markdownlint/doc/md025.md +49 -0
  35. package/packages/config-markdownlint/node_modules/markdownlint/doc/md026.md +40 -0
  36. package/packages/config-markdownlint/node_modules/markdownlint/doc/md027.md +32 -0
  37. package/packages/config-markdownlint/node_modules/markdownlint/doc/md028.md +44 -0
  38. package/packages/config-markdownlint/node_modules/markdownlint/doc/md029.md +110 -0
  39. package/packages/config-markdownlint/node_modules/markdownlint/doc/md030.md +82 -0
  40. package/packages/config-markdownlint/node_modules/markdownlint/doc/md031.md +50 -0
  41. package/packages/config-markdownlint/node_modules/markdownlint/doc/md032.md +55 -0
  42. package/packages/config-markdownlint/node_modules/markdownlint/doc/md033.md +33 -0
  43. package/packages/config-markdownlint/node_modules/markdownlint/doc/md034.md +55 -0
  44. package/packages/config-markdownlint/node_modules/markdownlint/doc/md035.md +44 -0
  45. package/packages/config-markdownlint/node_modules/markdownlint/doc/md036.md +45 -0
  46. package/packages/config-markdownlint/node_modules/markdownlint/doc/md037.md +37 -0
  47. package/packages/config-markdownlint/node_modules/markdownlint/doc/md038.md +52 -0
  48. package/packages/config-markdownlint/node_modules/markdownlint/doc/md039.md +21 -0
  49. package/packages/config-markdownlint/node_modules/markdownlint/doc/md040.md +52 -0
  50. package/packages/config-markdownlint/node_modules/markdownlint/doc/md041.md +64 -0
  51. package/packages/config-markdownlint/node_modules/markdownlint/doc/md042.md +38 -0
  52. package/packages/config-markdownlint/node_modules/markdownlint/doc/md043.md +125 -0
  53. package/packages/config-markdownlint/node_modules/markdownlint/doc/md044.md +45 -0
  54. package/packages/config-markdownlint/node_modules/markdownlint/doc/md045.md +48 -0
  55. package/packages/config-markdownlint/node_modules/markdownlint/doc/md046.md +40 -0
  56. package/packages/config-markdownlint/node_modules/markdownlint/doc/md047.md +34 -0
  57. package/packages/config-markdownlint/node_modules/markdownlint/doc/md048.md +42 -0
  58. package/packages/config-markdownlint/node_modules/markdownlint/doc/md049.md +36 -0
  59. package/packages/config-markdownlint/node_modules/markdownlint/doc/md050.md +35 -0
  60. package/packages/config-markdownlint/node_modules/markdownlint/doc/md051.md +117 -0
  61. package/packages/config-markdownlint/node_modules/markdownlint/doc/md052.md +52 -0
  62. package/packages/config-markdownlint/node_modules/markdownlint/doc/md053.md +38 -0
  63. package/packages/config-markdownlint/node_modules/markdownlint/doc/md054.md +100 -0
  64. package/packages/config-markdownlint/node_modules/markdownlint/doc/md055.md +58 -0
  65. package/packages/config-markdownlint/node_modules/markdownlint/doc/md056.md +37 -0
  66. package/packages/config-markdownlint/node_modules/markdownlint/doc/md058.md +48 -0
  67. package/packages/config-markdownlint/node_modules/markdownlint/doc/md059.md +33 -0
  68. package/packages/config-markdownlint/node_modules/markdownlint/doc/md060.md +131 -0
  69. package/packages/config-markdownlint/node_modules/markdownlint/helpers/LICENSE +21 -0
  70. package/packages/config-markdownlint/node_modules/markdownlint/helpers/README.md +29 -0
  71. package/packages/config-markdownlint/node_modules/markdownlint/helpers/helpers.cjs +711 -0
  72. package/packages/config-markdownlint/node_modules/markdownlint/helpers/micromark-helpers.cjs +328 -0
  73. package/packages/config-markdownlint/node_modules/markdownlint/helpers/package.json +22 -0
  74. package/packages/config-markdownlint/node_modules/markdownlint/helpers/shared.cjs +16 -0
  75. package/packages/config-markdownlint/node_modules/markdownlint/lib/cache.mjs +81 -0
  76. package/packages/config-markdownlint/node_modules/markdownlint/lib/configuration-strict.d.ts +2429 -0
  77. package/packages/config-markdownlint/node_modules/markdownlint/lib/configuration.d.ts +8 -0
  78. package/packages/config-markdownlint/node_modules/markdownlint/lib/constants.mjs +14 -0
  79. package/packages/config-markdownlint/node_modules/markdownlint/lib/defer-require.cjs +19 -0
  80. package/packages/config-markdownlint/node_modules/markdownlint/lib/exports-async.d.mts +1 -0
  81. package/packages/config-markdownlint/node_modules/markdownlint/lib/exports-async.mjs +3 -0
  82. package/packages/config-markdownlint/node_modules/markdownlint/lib/exports-promise.d.mts +1 -0
  83. package/packages/config-markdownlint/node_modules/markdownlint/lib/exports-promise.mjs +3 -0
  84. package/packages/config-markdownlint/node_modules/markdownlint/lib/exports-sync.d.mts +1 -0
  85. package/packages/config-markdownlint/node_modules/markdownlint/lib/exports-sync.mjs +3 -0
  86. package/packages/config-markdownlint/node_modules/markdownlint/lib/exports.d.mts +58 -0
  87. package/packages/config-markdownlint/node_modules/markdownlint/lib/exports.mjs +33 -0
  88. package/packages/config-markdownlint/node_modules/markdownlint/lib/markdownit.cjs +178 -0
  89. package/packages/config-markdownlint/node_modules/markdownlint/lib/markdownlint.d.mts +757 -0
  90. package/packages/config-markdownlint/node_modules/markdownlint/lib/markdownlint.mjs +1588 -0
  91. package/packages/config-markdownlint/node_modules/markdownlint/lib/md001.mjs +32 -0
  92. package/packages/config-markdownlint/node_modules/markdownlint/lib/md003.mjs +47 -0
  93. package/packages/config-markdownlint/node_modules/markdownlint/lib/md004.mjs +73 -0
  94. package/packages/config-markdownlint/node_modules/markdownlint/lib/md005.mjs +69 -0
  95. package/packages/config-markdownlint/node_modules/markdownlint/lib/md007.mjs +84 -0
  96. package/packages/config-markdownlint/node_modules/markdownlint/lib/md009.mjs +95 -0
  97. package/packages/config-markdownlint/node_modules/markdownlint/lib/md010.mjs +78 -0
  98. package/packages/config-markdownlint/node_modules/markdownlint/lib/md011.mjs +59 -0
  99. package/packages/config-markdownlint/node_modules/markdownlint/lib/md012.mjs +40 -0
  100. package/packages/config-markdownlint/node_modules/markdownlint/lib/md013.mjs +95 -0
  101. package/packages/config-markdownlint/node_modules/markdownlint/lib/md014.mjs +47 -0
  102. package/packages/config-markdownlint/node_modules/markdownlint/lib/md018.mjs +43 -0
  103. package/packages/config-markdownlint/node_modules/markdownlint/lib/md019-md021.mjs +78 -0
  104. package/packages/config-markdownlint/node_modules/markdownlint/lib/md020.mjs +68 -0
  105. package/packages/config-markdownlint/node_modules/markdownlint/lib/md022.mjs +103 -0
  106. package/packages/config-markdownlint/node_modules/markdownlint/lib/md023.mjs +37 -0
  107. package/packages/config-markdownlint/node_modules/markdownlint/lib/md024.mjs +45 -0
  108. package/packages/config-markdownlint/node_modules/markdownlint/lib/md025.mjs +45 -0
  109. package/packages/config-markdownlint/node_modules/markdownlint/lib/md026.mjs +46 -0
  110. package/packages/config-markdownlint/node_modules/markdownlint/lib/md027.mjs +50 -0
  111. package/packages/config-markdownlint/node_modules/markdownlint/lib/md028.mjs +38 -0
  112. package/packages/config-markdownlint/node_modules/markdownlint/lib/md029.mjs +95 -0
  113. package/packages/config-markdownlint/node_modules/markdownlint/lib/md030.mjs +57 -0
  114. package/packages/config-markdownlint/node_modules/markdownlint/lib/md031.mjs +61 -0
  115. package/packages/config-markdownlint/node_modules/markdownlint/lib/md032.mjs +79 -0
  116. package/packages/config-markdownlint/node_modules/markdownlint/lib/md033.mjs +46 -0
  117. package/packages/config-markdownlint/node_modules/markdownlint/lib/md034.mjs +92 -0
  118. package/packages/config-markdownlint/node_modules/markdownlint/lib/md035.mjs +23 -0
  119. package/packages/config-markdownlint/node_modules/markdownlint/lib/md036.mjs +55 -0
  120. package/packages/config-markdownlint/node_modules/markdownlint/lib/md037.mjs +93 -0
  121. package/packages/config-markdownlint/node_modules/markdownlint/lib/md038.mjs +73 -0
  122. package/packages/config-markdownlint/node_modules/markdownlint/lib/md039.mjs +63 -0
  123. package/packages/config-markdownlint/node_modules/markdownlint/lib/md040.mjs +32 -0
  124. package/packages/config-markdownlint/node_modules/markdownlint/lib/md041.mjs +71 -0
  125. package/packages/config-markdownlint/node_modules/markdownlint/lib/md042.mjs +58 -0
  126. package/packages/config-markdownlint/node_modules/markdownlint/lib/md043.mjs +126 -0
  127. package/packages/config-markdownlint/node_modules/markdownlint/lib/md044.mjs +110 -0
  128. package/packages/config-markdownlint/node_modules/markdownlint/lib/md045.mjs +61 -0
  129. package/packages/config-markdownlint/node_modules/markdownlint/lib/md046.mjs +31 -0
  130. package/packages/config-markdownlint/node_modules/markdownlint/lib/md047.mjs +28 -0
  131. package/packages/config-markdownlint/node_modules/markdownlint/lib/md048.mjs +45 -0
  132. package/packages/config-markdownlint/node_modules/markdownlint/lib/md049-md050.mjs +115 -0
  133. package/packages/config-markdownlint/node_modules/markdownlint/lib/md051.mjs +173 -0
  134. package/packages/config-markdownlint/node_modules/markdownlint/lib/md052.mjs +40 -0
  135. package/packages/config-markdownlint/node_modules/markdownlint/lib/md053.mjs +60 -0
  136. package/packages/config-markdownlint/node_modules/markdownlint/lib/md054.mjs +122 -0
  137. package/packages/config-markdownlint/node_modules/markdownlint/lib/md055.mjs +82 -0
  138. package/packages/config-markdownlint/node_modules/markdownlint/lib/md056.mjs +50 -0
  139. package/packages/config-markdownlint/node_modules/markdownlint/lib/md058.mjs +57 -0
  140. package/packages/config-markdownlint/node_modules/markdownlint/lib/md059.mjs +71 -0
  141. package/packages/config-markdownlint/node_modules/markdownlint/lib/md060.mjs +229 -0
  142. package/packages/config-markdownlint/node_modules/markdownlint/lib/micromark-parse.mjs +338 -0
  143. package/packages/config-markdownlint/node_modules/markdownlint/lib/micromark-types.d.mts +11 -0
  144. package/packages/config-markdownlint/node_modules/markdownlint/lib/node-imports-browser.mjs +22 -0
  145. package/packages/config-markdownlint/node_modules/markdownlint/lib/node-imports-node.mjs +11 -0
  146. package/packages/config-markdownlint/node_modules/markdownlint/lib/parse-configuration.mjs +47 -0
  147. package/packages/config-markdownlint/node_modules/markdownlint/lib/resolve-module.cjs +53 -0
  148. package/packages/config-markdownlint/node_modules/markdownlint/lib/resolve-module.d.cts +39 -0
  149. package/packages/config-markdownlint/node_modules/markdownlint/lib/rules.mjs +122 -0
  150. package/packages/config-markdownlint/node_modules/markdownlint/lib/types.d.mts +13 -0
  151. package/packages/config-markdownlint/node_modules/markdownlint/package.json +119 -0
  152. package/packages/config-markdownlint/node_modules/markdownlint/schema/.markdownlint.jsonc +349 -0
  153. package/packages/config-markdownlint/node_modules/markdownlint/schema/.markdownlint.yaml +310 -0
  154. package/packages/config-markdownlint/node_modules/markdownlint/schema/ValidatingConfiguration.md +26 -0
  155. package/packages/config-markdownlint/node_modules/markdownlint/schema/markdownlint-config-schema-strict.json +5146 -0
  156. package/packages/config-markdownlint/node_modules/markdownlint/schema/markdownlint-config-schema.json +5151 -0
  157. package/packages/config-markdownlint/node_modules/markdownlint/style/all.json +5 -0
  158. package/packages/config-markdownlint/node_modules/markdownlint/style/cirosantilli.json +22 -0
  159. package/packages/config-markdownlint/node_modules/markdownlint/style/prettier.json +27 -0
  160. package/packages/config-markdownlint/node_modules/markdownlint/style/relaxed.json +12 -0
  161. package/packages/config-markdownlint/node_modules/micromark/dev/index.d.ts +82 -0
  162. package/packages/config-markdownlint/node_modules/micromark/dev/index.d.ts.map +1 -0
  163. package/packages/config-markdownlint/node_modules/micromark/dev/index.js +68 -0
  164. package/packages/config-markdownlint/node_modules/micromark/dev/lib/compile.d.ts +16 -0
  165. package/packages/config-markdownlint/node_modules/micromark/dev/lib/compile.d.ts.map +1 -0
  166. package/packages/config-markdownlint/node_modules/micromark/dev/lib/compile.js +1162 -0
  167. package/packages/config-markdownlint/node_modules/micromark/dev/lib/constructs.d.ts +73 -0
  168. package/packages/config-markdownlint/node_modules/micromark/dev/lib/constructs.d.ts.map +1 -0
  169. package/packages/config-markdownlint/node_modules/micromark/dev/lib/constructs.js +101 -0
  170. package/packages/config-markdownlint/node_modules/micromark/dev/lib/create-tokenizer.d.ts +46 -0
  171. package/packages/config-markdownlint/node_modules/micromark/dev/lib/create-tokenizer.d.ts.map +1 -0
  172. package/packages/config-markdownlint/node_modules/micromark/dev/lib/create-tokenizer.js +718 -0
  173. package/packages/config-markdownlint/node_modules/micromark/dev/lib/initialize/content.d.ts +4 -0
  174. package/packages/config-markdownlint/node_modules/micromark/dev/lib/initialize/content.d.ts.map +1 -0
  175. package/packages/config-markdownlint/node_modules/micromark/dev/lib/initialize/content.js +99 -0
  176. package/packages/config-markdownlint/node_modules/micromark/dev/lib/initialize/document.d.ts +10 -0
  177. package/packages/config-markdownlint/node_modules/micromark/dev/lib/initialize/document.d.ts.map +1 -0
  178. package/packages/config-markdownlint/node_modules/micromark/dev/lib/initialize/document.js +449 -0
  179. package/packages/config-markdownlint/node_modules/micromark/dev/lib/initialize/flow.d.ts +4 -0
  180. package/packages/config-markdownlint/node_modules/micromark/dev/lib/initialize/flow.d.ts.map +1 -0
  181. package/packages/config-markdownlint/node_modules/micromark/dev/lib/initialize/flow.js +86 -0
  182. package/packages/config-markdownlint/node_modules/micromark/dev/lib/initialize/text.d.ts +8 -0
  183. package/packages/config-markdownlint/node_modules/micromark/dev/lib/initialize/text.d.ts.map +1 -0
  184. package/packages/config-markdownlint/node_modules/micromark/dev/lib/initialize/text.js +248 -0
  185. package/packages/config-markdownlint/node_modules/micromark/dev/lib/parse.d.ts +10 -0
  186. package/packages/config-markdownlint/node_modules/micromark/dev/lib/parse.d.ts.map +1 -0
  187. package/packages/config-markdownlint/node_modules/micromark/dev/lib/parse.js +58 -0
  188. package/packages/config-markdownlint/node_modules/micromark/dev/lib/postprocess.d.ts +9 -0
  189. package/packages/config-markdownlint/node_modules/micromark/dev/lib/postprocess.d.ts.map +1 -0
  190. package/packages/config-markdownlint/node_modules/micromark/dev/lib/postprocess.js +19 -0
  191. package/packages/config-markdownlint/node_modules/micromark/dev/lib/preprocess.d.ts +13 -0
  192. package/packages/config-markdownlint/node_modules/micromark/dev/lib/preprocess.d.ts.map +1 -0
  193. package/packages/config-markdownlint/node_modules/micromark/dev/lib/preprocess.js +139 -0
  194. package/packages/config-markdownlint/node_modules/micromark/dev/stream.d.ts +35 -0
  195. package/packages/config-markdownlint/node_modules/micromark/dev/stream.d.ts.map +1 -0
  196. package/packages/config-markdownlint/node_modules/micromark/dev/stream.js +270 -0
  197. package/packages/config-markdownlint/node_modules/micromark/index.d.ts +82 -0
  198. package/packages/config-markdownlint/node_modules/micromark/index.d.ts.map +1 -0
  199. package/packages/config-markdownlint/node_modules/micromark/index.js +60 -0
  200. package/packages/config-markdownlint/node_modules/micromark/lib/compile.d.ts +16 -0
  201. package/packages/config-markdownlint/node_modules/micromark/lib/compile.d.ts.map +1 -0
  202. package/packages/config-markdownlint/node_modules/micromark/lib/compile.js +1068 -0
  203. package/packages/config-markdownlint/node_modules/micromark/lib/constructs.d.ts +73 -0
  204. package/packages/config-markdownlint/node_modules/micromark/lib/constructs.d.ts.map +1 -0
  205. package/packages/config-markdownlint/node_modules/micromark/lib/constructs.js +85 -0
  206. package/packages/config-markdownlint/node_modules/micromark/lib/create-tokenizer.d.ts +46 -0
  207. package/packages/config-markdownlint/node_modules/micromark/lib/create-tokenizer.d.ts.map +1 -0
  208. package/packages/config-markdownlint/node_modules/micromark/lib/create-tokenizer.js +613 -0
  209. package/packages/config-markdownlint/node_modules/micromark/lib/initialize/content.d.ts +4 -0
  210. package/packages/config-markdownlint/node_modules/micromark/lib/initialize/content.d.ts.map +1 -0
  211. package/packages/config-markdownlint/node_modules/micromark/lib/initialize/content.js +79 -0
  212. package/packages/config-markdownlint/node_modules/micromark/lib/initialize/document.d.ts +10 -0
  213. package/packages/config-markdownlint/node_modules/micromark/lib/initialize/document.d.ts.map +1 -0
  214. package/packages/config-markdownlint/node_modules/micromark/lib/initialize/document.js +370 -0
  215. package/packages/config-markdownlint/node_modules/micromark/lib/initialize/flow.d.ts +4 -0
  216. package/packages/config-markdownlint/node_modules/micromark/lib/initialize/flow.d.ts.map +1 -0
  217. package/packages/config-markdownlint/node_modules/micromark/lib/initialize/flow.js +58 -0
  218. package/packages/config-markdownlint/node_modules/micromark/lib/initialize/text.d.ts +8 -0
  219. package/packages/config-markdownlint/node_modules/micromark/lib/initialize/text.d.ts.map +1 -0
  220. package/packages/config-markdownlint/node_modules/micromark/lib/initialize/text.js +216 -0
  221. package/packages/config-markdownlint/node_modules/micromark/lib/parse.d.ts +10 -0
  222. package/packages/config-markdownlint/node_modules/micromark/lib/parse.d.ts.map +1 -0
  223. package/packages/config-markdownlint/node_modules/micromark/lib/parse.js +56 -0
  224. package/packages/config-markdownlint/node_modules/micromark/lib/postprocess.d.ts +9 -0
  225. package/packages/config-markdownlint/node_modules/micromark/lib/postprocess.d.ts.map +1 -0
  226. package/packages/config-markdownlint/node_modules/micromark/lib/postprocess.js +18 -0
  227. package/packages/config-markdownlint/node_modules/micromark/lib/preprocess.d.ts +13 -0
  228. package/packages/config-markdownlint/node_modules/micromark/lib/preprocess.d.ts.map +1 -0
  229. package/packages/config-markdownlint/node_modules/micromark/lib/preprocess.js +112 -0
  230. package/packages/config-markdownlint/node_modules/micromark/license +22 -0
  231. package/packages/config-markdownlint/node_modules/micromark/package.json +87 -0
  232. package/packages/config-markdownlint/node_modules/micromark/readme.md +488 -0
  233. package/packages/config-markdownlint/node_modules/micromark/stream.d.ts +35 -0
  234. package/packages/config-markdownlint/node_modules/micromark/stream.d.ts.map +1 -0
  235. package/packages/config-markdownlint/node_modules/micromark/stream.js +256 -0
  236. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/index.d.ts +23 -0
  237. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/index.d.ts.map +1 -0
  238. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/index.js +22 -0
  239. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/attention.d.ts +4 -0
  240. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/attention.d.ts.map +1 -0
  241. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/attention.js +294 -0
  242. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/autolink.d.ts +4 -0
  243. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/autolink.d.ts.map +1 -0
  244. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/autolink.js +269 -0
  245. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/blank-line.d.ts +4 -0
  246. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/blank-line.d.ts.map +1 -0
  247. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/blank-line.js +62 -0
  248. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/block-quote.d.ts +4 -0
  249. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/block-quote.d.ts.map +1 -0
  250. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/block-quote.js +162 -0
  251. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/character-escape.d.ts +4 -0
  252. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/character-escape.d.ts.map +1 -0
  253. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/character-escape.js +69 -0
  254. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/character-reference.d.ts +4 -0
  255. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/character-reference.d.ts.map +1 -0
  256. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/character-reference.js +166 -0
  257. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/code-fenced.d.ts +4 -0
  258. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/code-fenced.d.ts.map +1 -0
  259. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/code-fenced.js +472 -0
  260. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/code-indented.d.ts +4 -0
  261. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/code-indented.d.ts.map +1 -0
  262. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/code-indented.js +178 -0
  263. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/code-text.d.ts +4 -0
  264. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/code-text.d.ts.map +1 -0
  265. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/code-text.js +257 -0
  266. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/content.d.ts +7 -0
  267. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/content.d.ts.map +1 -0
  268. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/content.js +185 -0
  269. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/definition.d.ts +4 -0
  270. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/definition.d.ts.map +1 -0
  271. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/definition.js +295 -0
  272. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/hard-break-escape.d.ts +4 -0
  273. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/hard-break-escape.d.ts.map +1 -0
  274. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/hard-break-escape.js +65 -0
  275. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/heading-atx.d.ts +4 -0
  276. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/heading-atx.d.ts.map +1 -0
  277. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/heading-atx.js +229 -0
  278. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/html-flow.d.ts +4 -0
  279. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/html-flow.d.ts.map +1 -0
  280. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/html-flow.js +938 -0
  281. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/html-text.d.ts +4 -0
  282. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/html-text.d.ts.map +1 -0
  283. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/html-text.js +783 -0
  284. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/label-end.d.ts +4 -0
  285. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/label-end.d.ts.map +1 -0
  286. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/label-end.js +658 -0
  287. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/label-start-image.d.ts +4 -0
  288. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/label-start-image.d.ts.map +1 -0
  289. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/label-start-image.js +119 -0
  290. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/label-start-link.d.ts +4 -0
  291. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/label-start-link.d.ts.map +1 -0
  292. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/label-start-link.js +71 -0
  293. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/line-ending.d.ts +4 -0
  294. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/line-ending.d.ts.map +1 -0
  295. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/line-ending.js +34 -0
  296. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/list.d.ts +4 -0
  297. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/list.d.ts.map +1 -0
  298. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/list.js +306 -0
  299. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/partial-non-lazy-continuation.d.ts +4 -0
  300. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/partial-non-lazy-continuation.d.ts.map +1 -0
  301. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/partial-non-lazy-continuation.js +67 -0
  302. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/setext-underline.d.ts +4 -0
  303. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/setext-underline.d.ts.map +1 -0
  304. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/setext-underline.js +213 -0
  305. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/thematic-break.d.ts +4 -0
  306. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/thematic-break.d.ts.map +1 -0
  307. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/thematic-break.js +120 -0
  308. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/index.d.ts +23 -0
  309. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/index.d.ts.map +1 -0
  310. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/index.js +22 -0
  311. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/attention.d.ts +4 -0
  312. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/attention.d.ts.map +1 -0
  313. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/attention.js +231 -0
  314. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/autolink.d.ts +4 -0
  315. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/autolink.d.ts.map +1 -0
  316. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/autolink.js +233 -0
  317. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/blank-line.d.ts +4 -0
  318. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/blank-line.d.ts.map +1 -0
  319. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/blank-line.js +61 -0
  320. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/block-quote.d.ts +4 -0
  321. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/block-quote.d.ts.map +1 -0
  322. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/block-quote.js +143 -0
  323. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/character-escape.d.ts +4 -0
  324. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/character-escape.d.ts.map +1 -0
  325. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/character-escape.js +64 -0
  326. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/character-reference.d.ts +4 -0
  327. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/character-reference.d.ts.map +1 -0
  328. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/character-reference.js +149 -0
  329. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/code-fenced.d.ts +4 -0
  330. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/code-fenced.d.ts.map +1 -0
  331. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/code-fenced.js +422 -0
  332. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/code-indented.d.ts +4 -0
  333. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/code-indented.d.ts.map +1 -0
  334. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/code-indented.js +159 -0
  335. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/code-text.d.ts +4 -0
  336. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/code-text.d.ts.map +1 -0
  337. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/code-text.js +225 -0
  338. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/content.d.ts +7 -0
  339. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/content.d.ts.map +1 -0
  340. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/content.js +163 -0
  341. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/definition.d.ts +4 -0
  342. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/definition.d.ts.map +1 -0
  343. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/definition.js +254 -0
  344. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/hard-break-escape.d.ts +4 -0
  345. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/hard-break-escape.d.ts.map +1 -0
  346. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/hard-break-escape.js +60 -0
  347. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/heading-atx.d.ts +4 -0
  348. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/heading-atx.d.ts.map +1 -0
  349. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/heading-atx.js +191 -0
  350. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/html-flow.d.ts +4 -0
  351. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/html-flow.d.ts.map +1 -0
  352. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/html-flow.js +827 -0
  353. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/html-text.d.ts +4 -0
  354. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/html-text.d.ts.map +1 -0
  355. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/html-text.js +678 -0
  356. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/label-end.d.ts +4 -0
  357. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/label-end.d.ts.map +1 -0
  358. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/label-end.js +561 -0
  359. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/label-start-image.d.ts +4 -0
  360. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/label-start-image.d.ts.map +1 -0
  361. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/label-start-image.js +110 -0
  362. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/label-start-link.d.ts +4 -0
  363. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/label-start-link.d.ts.map +1 -0
  364. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/label-start-link.js +63 -0
  365. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/line-ending.d.ts +4 -0
  366. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/line-ending.d.ts.map +1 -0
  367. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/line-ending.js +33 -0
  368. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/list.d.ts +4 -0
  369. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/list.d.ts.map +1 -0
  370. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/list.js +213 -0
  371. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/partial-non-lazy-continuation.d.ts +4 -0
  372. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/partial-non-lazy-continuation.d.ts.map +1 -0
  373. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/partial-non-lazy-continuation.js +61 -0
  374. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/setext-underline.d.ts +4 -0
  375. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/setext-underline.d.ts.map +1 -0
  376. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/setext-underline.js +187 -0
  377. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/thematic-break.d.ts +4 -0
  378. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/thematic-break.d.ts.map +1 -0
  379. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/thematic-break.js +102 -0
  380. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/license +22 -0
  381. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/package.json +62 -0
  382. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/readme.md +171 -0
  383. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/dev/index.d.ts +55 -0
  384. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/dev/index.js +2 -0
  385. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/dev/lib/edit-map.d.ts +51 -0
  386. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/dev/lib/edit-map.d.ts.map +1 -0
  387. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/dev/lib/edit-map.js +231 -0
  388. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/dev/lib/html.d.ts +11 -0
  389. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/dev/lib/html.d.ts.map +1 -0
  390. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/dev/lib/html.js +153 -0
  391. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/dev/lib/infer.d.ts +14 -0
  392. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/dev/lib/infer.d.ts.map +1 -0
  393. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/dev/lib/infer.js +64 -0
  394. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/dev/lib/syntax.d.ts +18 -0
  395. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/dev/lib/syntax.d.ts.map +1 -0
  396. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/dev/lib/syntax.js +964 -0
  397. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/index.d.ts +55 -0
  398. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/index.js +2 -0
  399. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/lib/edit-map.d.ts +51 -0
  400. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/lib/edit-map.d.ts.map +1 -0
  401. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/lib/edit-map.js +222 -0
  402. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/lib/html.d.ts +11 -0
  403. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/lib/html.d.ts.map +1 -0
  404. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/lib/html.js +135 -0
  405. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/lib/infer.d.ts +14 -0
  406. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/lib/infer.d.ts.map +1 -0
  407. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/lib/infer.js +52 -0
  408. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/lib/syntax.d.ts +18 -0
  409. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/lib/syntax.d.ts.map +1 -0
  410. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/lib/syntax.js +846 -0
  411. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/license +22 -0
  412. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/package.json +86 -0
  413. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/readme.md +515 -0
  414. package/packages/config-markdownlint/node_modules/micromark-util-types/index.d.ts +1315 -0
  415. package/packages/config-markdownlint/node_modules/micromark-util-types/index.js +2 -0
  416. package/packages/config-markdownlint/node_modules/micromark-util-types/license +22 -0
  417. package/packages/config-markdownlint/node_modules/micromark-util-types/package.json +37 -0
  418. package/packages/config-markdownlint/node_modules/micromark-util-types/readme.md +151 -0
  419. package/packages/config-markdownlint/node_modules/string-width/index.d.ts +39 -0
  420. package/packages/config-markdownlint/node_modules/string-width/index.js +203 -0
  421. package/packages/config-markdownlint/node_modules/string-width/license +9 -0
  422. package/packages/config-markdownlint/node_modules/string-width/package.json +65 -0
  423. package/packages/config-markdownlint/node_modules/string-width/readme.md +66 -0
  424. package/packages/config-markdownlint/node_modules/strip-ansi/index.d.ts +15 -0
  425. package/packages/config-markdownlint/node_modules/strip-ansi/index.js +19 -0
  426. package/packages/config-markdownlint/node_modules/strip-ansi/license +9 -0
  427. package/packages/config-markdownlint/node_modules/strip-ansi/package.json +59 -0
  428. package/packages/config-markdownlint/node_modules/strip-ansi/readme.md +37 -0
  429. package/packages/config-markdownlint/package.json +2 -2
@@ -0,0 +1,2909 @@
1
+ # Rules
2
+
3
+ This document contains a description of all rules, what they are checking for,
4
+ as well as examples of documents that break the rule and corrected
5
+ versions of the examples.
6
+
7
+ <a name="md001"></a>
8
+
9
+ ## `MD001` - Heading levels should only increment by one level at a time
10
+
11
+ Tags: `headings`
12
+
13
+ Aliases: `heading-increment`
14
+
15
+ Parameters:
16
+
17
+ - `front_matter_title`: RegExp for matching title in front matter (`string`,
18
+ default `^\s*title\s*[:=]`)
19
+
20
+ This rule is triggered when you skip heading levels in a Markdown document, for
21
+ example:
22
+
23
+ ```markdown
24
+ # Heading 1
25
+
26
+ ### Heading 3
27
+
28
+ We skipped out a 2nd level heading in this document
29
+ ```
30
+
31
+ When using multiple heading levels, nested headings should increase by only one
32
+ level at a time:
33
+
34
+ ```markdown
35
+ # Heading 1
36
+
37
+ ## Heading 2
38
+
39
+ ### Heading 3
40
+
41
+ #### Heading 4
42
+
43
+ ## Another Heading 2
44
+
45
+ ### Another Heading 3
46
+ ```
47
+
48
+ If [YAML](https://wikipedia.org/wiki/YAML) front matter is present and
49
+ contains a `title` property (commonly used with blog posts), this rule treats
50
+ that as a top level heading and will report a violation if the actual first
51
+ heading is not a level 2 heading. To use a different property name in the
52
+ front matter, specify the text of a regular expression via the
53
+ `front_matter_title` parameter. To disable the use of front matter by this
54
+ rule, specify `""` for `front_matter_title`. When front matter is not present,
55
+ the first heading can be any level.
56
+
57
+ Rationale: Headings represent the structure of a document and can be confusing
58
+ when skipped - especially for accessibility scenarios. More information:
59
+ <https://www.w3.org/WAI/tutorials/page-structure/headings/>.
60
+
61
+ <a name="md003"></a>
62
+
63
+ ## `MD003` - Heading style
64
+
65
+ Tags: `headings`
66
+
67
+ Aliases: `heading-style`
68
+
69
+ Parameters:
70
+
71
+ - `style`: Heading style (`string`, default `consistent`, values `atx` /
72
+ `atx_closed` / `consistent` / `setext` / `setext_with_atx` /
73
+ `setext_with_atx_closed`)
74
+
75
+ This rule is triggered when different heading styles are used in the same
76
+ document:
77
+
78
+ ```markdown
79
+ # ATX style H1
80
+
81
+ ## Closed ATX style H2 ##
82
+
83
+ Setext style H1
84
+ ===============
85
+ ```
86
+
87
+ To fix the issue, use consistent heading styles throughout the document:
88
+
89
+ ```markdown
90
+ # ATX style H1
91
+
92
+ ## ATX style H2
93
+ ```
94
+
95
+ The `setext_with_atx` and `setext_with_atx_closed` settings allow ATX-style
96
+ headings of level 3 or more in documents with setext-style headings (which only
97
+ support level 1 and 2 headings):
98
+
99
+ ```markdown
100
+ Setext style H1
101
+ ===============
102
+
103
+ Setext style H2
104
+ ---------------
105
+
106
+ ### ATX style H3
107
+ ```
108
+
109
+ Note: The configured heading style can be a specific style to require (`atx`,
110
+ `atx_closed`, `setext`, `setext_with_atx`, `setext_with_atx_closed`), or can
111
+ require that all heading styles match the first heading style via `consistent`.
112
+
113
+ Note: The placement of a horizontal rule directly below a line of text can
114
+ trigger this rule by turning that text into a level 2 setext-style heading:
115
+
116
+ ```markdown
117
+ A line of text followed by a horizontal rule becomes a heading
118
+ ---
119
+ ```
120
+
121
+ Rationale: Consistent formatting makes it easier to understand a document.
122
+
123
+ <a name="md004"></a>
124
+
125
+ ## `MD004` - Unordered list style
126
+
127
+ Tags: `bullet`, `ul`
128
+
129
+ Aliases: `ul-style`
130
+
131
+ Parameters:
132
+
133
+ - `style`: List style (`string`, default `consistent`, values `asterisk` /
134
+ `consistent` / `dash` / `plus` / `sublist`)
135
+
136
+ Fixable: Some violations can be fixed by tooling
137
+
138
+ This rule is triggered when the symbols used in the document for unordered
139
+ list items do not match the configured unordered list style:
140
+
141
+ ```markdown
142
+ * Item 1
143
+ + Item 2
144
+ - Item 3
145
+ ```
146
+
147
+ To fix this issue, use the configured style for list items throughout the
148
+ document:
149
+
150
+ ```markdown
151
+ * Item 1
152
+ * Item 2
153
+ * Item 3
154
+ ```
155
+
156
+ The configured list style can ensure all list styling is a specific symbol
157
+ (`asterisk`, `plus`, `dash`), ensure each sublist has a consistent symbol that
158
+ differs from its parent list (`sublist`), or ensure all list styles match the
159
+ first list style (`consistent`).
160
+
161
+ For example, the following is valid for the `sublist` style because the
162
+ outer-most indent uses asterisk, the middle indent uses plus, and the inner-most
163
+ indent uses dash:
164
+
165
+ ```markdown
166
+ * Item 1
167
+ + Item 2
168
+ - Item 3
169
+ + Item 4
170
+ * Item 4
171
+ + Item 5
172
+ ```
173
+
174
+ Rationale: Consistent formatting makes it easier to understand a document.
175
+
176
+ <a name="md005"></a>
177
+
178
+ ## `MD005` - Inconsistent indentation for list items at the same level
179
+
180
+ Tags: `bullet`, `indentation`, `ul`
181
+
182
+ Aliases: `list-indent`
183
+
184
+ Fixable: Some violations can be fixed by tooling
185
+
186
+ This rule is triggered when list items are parsed as being at the same level,
187
+ but don't have the same indentation:
188
+
189
+ ```markdown
190
+ * Item 1
191
+ * Nested Item 1
192
+ * Nested Item 2
193
+ * A misaligned item
194
+ ```
195
+
196
+ Usually, this rule will be triggered because of a typo. Correct the indentation
197
+ for the list to fix it:
198
+
199
+ ```markdown
200
+ * Item 1
201
+ * Nested Item 1
202
+ * Nested Item 2
203
+ * Nested Item 3
204
+ ```
205
+
206
+ Sequentially-ordered list markers are usually left-aligned such that all items
207
+ have the same starting column:
208
+
209
+ ```markdown
210
+ ...
211
+ 8. Item
212
+ 9. Item
213
+ 10. Item
214
+ 11. Item
215
+ ...
216
+ ```
217
+
218
+ This rule also supports right-alignment of list markers such that all items have
219
+ the same ending column:
220
+
221
+ ```markdown
222
+ ...
223
+ 8. Item
224
+ 9. Item
225
+ 10. Item
226
+ 11. Item
227
+ ...
228
+ ```
229
+
230
+ Rationale: Violations of this rule can lead to improperly rendered content.
231
+
232
+ <a name="md007"></a>
233
+
234
+ ## `MD007` - Unordered list indentation
235
+
236
+ Tags: `bullet`, `indentation`, `ul`
237
+
238
+ Aliases: `ul-indent`
239
+
240
+ Parameters:
241
+
242
+ - `indent`: Spaces for indent (`integer`, default `2`)
243
+ - `start_indent`: Spaces for first level indent (when start_indented is set)
244
+ (`integer`, default `2`)
245
+ - `start_indented`: Whether to indent the first level of the list (`boolean`,
246
+ default `false`)
247
+
248
+ Fixable: Some violations can be fixed by tooling
249
+
250
+ This rule is triggered when list items are not indented by the configured
251
+ number of spaces (default: 2).
252
+
253
+ Example:
254
+
255
+ ```markdown
256
+ * List item
257
+ * Nested list item indented by 3 spaces
258
+ ```
259
+
260
+ Corrected Example:
261
+
262
+ ```markdown
263
+ * List item
264
+ * Nested list item indented by 2 spaces
265
+ ```
266
+
267
+ Note: This rule applies to a sublist only if its parent lists are all also
268
+ unordered (otherwise, extra indentation of ordered lists interferes with the
269
+ rule).
270
+
271
+ The `start_indented` parameter allows the first level of lists to be indented by
272
+ the configured number of spaces rather than starting at zero. The `start_indent`
273
+ parameter allows the first level of lists to be indented by a different number
274
+ of spaces than the rest (ignored when `start_indented` is not set).
275
+
276
+ Rationale: Indenting by 2 spaces allows the content of a nested list to be in
277
+ line with the start of the content of the parent list when a single space is
278
+ used after the list marker. Indenting by 4 spaces is consistent with code blocks
279
+ and simpler for editors to implement. Additionally, this can be a compatibility
280
+ issue for other Markdown parsers, which require 4-space indents. More
281
+ information: [Markdown Style Guide][markdown-style-guide].
282
+
283
+ Note: See [Prettier.md](Prettier.md) for compatibility information.
284
+
285
+ [markdown-style-guide]: https://cirosantilli.com/markdown-style-guide#indentation-of-content-inside-lists
286
+
287
+ <a name="md009"></a>
288
+
289
+ ## `MD009` - Trailing spaces
290
+
291
+ Tags: `whitespace`
292
+
293
+ Aliases: `no-trailing-spaces`
294
+
295
+ Parameters:
296
+
297
+ - `br_spaces`: Spaces for line break (`integer`, default `2`)
298
+ - `code_blocks`: Include code blocks (`boolean`, default `false`)
299
+ - `list_item_empty_lines`: Allow spaces for empty lines in list items
300
+ (`boolean`, default `false`)
301
+ - `strict`: Include unnecessary breaks (`boolean`, default `false`)
302
+
303
+ Fixable: Some violations can be fixed by tooling
304
+
305
+ This rule is triggered on any lines that end with unexpected whitespace. To fix
306
+ this, remove the trailing space from the end of the line.
307
+
308
+ The `br_spaces` parameter allows an exception to this rule for a specific number
309
+ of trailing spaces, typically used to insert an explicit line break. The default
310
+ value allows 2 spaces to indicate a hard break (\<br> element). (You must set
311
+ `br_spaces` to a value >= 2 for this parameter to take effect. Setting
312
+ `br_spaces` to 1 behaves the same as 0, disallowing any trailing spaces.)
313
+
314
+ By default, trailing space is allowed in indented and fenced code blocks because
315
+ some programming languages require that. To report such instances, set the
316
+ `code_blocks` parameter to `true`.
317
+
318
+ By default, this rule will not trigger when the allowed number of spaces is
319
+ used, even when it doesn't create a hard break (for example, at the end of a
320
+ paragraph). To report such instances, set the `strict` parameter to `true`.
321
+
322
+ ```markdown
323
+ Text text text
324
+ text[2 spaces]
325
+ ```
326
+
327
+ Using spaces to indent blank lines inside a list item is usually not necessary,
328
+ but some parsers require it. Set the `list_item_empty_lines` parameter to `true`
329
+ to allow this (even when `strict` is `true`):
330
+
331
+ ```markdown
332
+ - list item text
333
+ [2 spaces]
334
+ list item text
335
+ ```
336
+
337
+ Rationale: Except when being used to create a line break, trailing whitespace
338
+ has no purpose and does not affect the rendering of content.
339
+
340
+ <a name="md010"></a>
341
+
342
+ ## `MD010` - Hard tabs
343
+
344
+ Tags: `hard_tab`, `whitespace`
345
+
346
+ Aliases: `no-hard-tabs`
347
+
348
+ Parameters:
349
+
350
+ - `code_blocks`: Include code blocks (`boolean`, default `true`)
351
+ - `ignore_code_languages`: Fenced code languages to ignore (`string[]`, default
352
+ `[]`)
353
+ - `spaces_per_tab`: Number of spaces for each hard tab (`integer`, default `1`)
354
+
355
+ Fixable: Some violations can be fixed by tooling
356
+
357
+ This rule is triggered by any lines that contain hard tab characters instead
358
+ of using spaces for indentation. To fix this, replace any hard tab characters
359
+ with spaces instead.
360
+
361
+ Example:
362
+
363
+ <!-- markdownlint-disable no-hard-tabs -->
364
+
365
+ ```markdown
366
+ Some text
367
+
368
+ * hard tab character used to indent the list item
369
+ ```
370
+
371
+ <!-- markdownlint-restore -->
372
+
373
+ Corrected example:
374
+
375
+ ```markdown
376
+ Some text
377
+
378
+ * Spaces used to indent the list item instead
379
+ ```
380
+
381
+ You have the option to exclude this rule for code blocks and spans. To do so,
382
+ set the `code_blocks` parameter to `false`. Code blocks and spans are included
383
+ by default since handling of tabs by Markdown tools can be inconsistent (e.g.,
384
+ using 4 vs. 8 spaces).
385
+
386
+ When code blocks are scanned (e.g., by default or if `code_blocks` is `true`),
387
+ the `ignore_code_languages` parameter can be set to a list of languages that
388
+ should be ignored (i.e., hard tabs will be allowed, though not required). This
389
+ makes it easier for documents to include code for languages that require hard
390
+ tabs.
391
+
392
+ By default, violations of this rule are fixed by replacing the tab with 1 space
393
+ character. To use a different number of spaces, set the `spaces_per_tab`
394
+ parameter to the desired value.
395
+
396
+ Rationale: Hard tabs are often rendered inconsistently by different editors and
397
+ can be harder to work with than spaces.
398
+
399
+ More information:
400
+
401
+ - <https://agiletribe.wordpress.com/2011/10/27/18-dont-use-tab-characters/>
402
+ - <https://www.jwz.org/doc/tabs-vs-spaces.html>
403
+
404
+ <a name="md011"></a>
405
+
406
+ ## `MD011` - Reversed link syntax
407
+
408
+ Tags: `links`
409
+
410
+ Aliases: `no-reversed-links`
411
+
412
+ Fixable: Some violations can be fixed by tooling
413
+
414
+ This rule is triggered when text that appears to be a link is encountered, but
415
+ where the syntax appears to have been reversed (the `[]` and `()` are
416
+ reversed):
417
+
418
+ ```markdown
419
+ (Incorrect link syntax)[https://www.example.com/]
420
+ ```
421
+
422
+ To fix this, swap the `[]` and `()` around:
423
+
424
+ ```markdown
425
+ [Correct link syntax](https://www.example.com/)
426
+ ```
427
+
428
+ Note: [Markdown Extra](https://wikipedia.org/wiki/Markdown_Extra)-style
429
+ footnotes do not trigger this rule:
430
+
431
+ ```markdown
432
+ For (example)[^1]
433
+ ```
434
+
435
+ Rationale: Reversed links are not rendered as usable links.
436
+
437
+ <a name="md012"></a>
438
+
439
+ ## `MD012` - Multiple consecutive blank lines
440
+
441
+ Tags: `blank_lines`, `whitespace`
442
+
443
+ Aliases: `no-multiple-blanks`
444
+
445
+ Parameters:
446
+
447
+ - `maximum`: Consecutive blank lines (`integer`, default `1`)
448
+
449
+ Fixable: Some violations can be fixed by tooling
450
+
451
+ This rule is triggered when there are multiple consecutive blank lines in the
452
+ document:
453
+
454
+ ```markdown
455
+ Some text here
456
+
457
+
458
+ Some more text here
459
+ ```
460
+
461
+ To fix this, delete the offending lines:
462
+
463
+ ```markdown
464
+ Some text here
465
+
466
+ Some more text here
467
+ ```
468
+
469
+ Note: this rule will not be triggered if there are multiple consecutive blank
470
+ lines inside code blocks.
471
+
472
+ Note: The `maximum` parameter can be used to configure the maximum number of
473
+ consecutive blank lines.
474
+
475
+ Rationale: Except in a code block, blank lines serve no purpose and do not
476
+ affect the rendering of content.
477
+
478
+ <a name="md013"></a>
479
+
480
+ ## `MD013` - Line length
481
+
482
+ Tags: `line_length`
483
+
484
+ Aliases: `line-length`
485
+
486
+ Parameters:
487
+
488
+ - `code_block_line_length`: Number of characters for code blocks (`integer`,
489
+ default `80`)
490
+ - `code_blocks`: Include code blocks (`boolean`, default `true`)
491
+ - `heading_line_length`: Number of characters for headings (`integer`, default
492
+ `80`)
493
+ - `headings`: Include headings (`boolean`, default `true`)
494
+ - `line_length`: Number of characters (`integer`, default `80`)
495
+ - `stern`: Stern length checking (`boolean`, default `false`)
496
+ - `strict`: Strict length checking (`boolean`, default `false`)
497
+ - `tables`: Include tables (`boolean`, default `true`)
498
+
499
+ This rule is triggered when there are lines that are longer than the
500
+ configured `line_length` (default: 80 characters). To fix this, split the line
501
+ up into multiple lines. To set a different maximum length for headings, use
502
+ `heading_line_length`. To set a different maximum length for code blocks, use
503
+ `code_block_line_length`
504
+
505
+ This rule has an exception when there is no whitespace beyond the configured
506
+ line length. This allows you to include items such as long URLs without being
507
+ forced to break them in the middle. To disable this exception, set the `strict`
508
+ parameter to `true` and an issue will be reported when any line is too long. To
509
+ warn for lines that are too long and could be fixed but allow long lines
510
+ without spaces, set the `stern` parameter to `true`.
511
+
512
+ For example (assuming normal behavior):
513
+
514
+ ```markdown
515
+ IF THIS LINE IS THE MAXIMUM LENGTH
516
+ This line is okay because there are-no-spaces-beyond-that-length
517
+ This line is a violation because there are spaces beyond that length
518
+ This-line-is-okay-because-there-are-no-spaces-anywhere-within
519
+ ```
520
+
521
+ In `strict` mode, the last three lines above are all violations. In `stern`
522
+ mode, the middle two lines above are both violations, but the last is okay.
523
+
524
+ You have the option to exclude this rule for code blocks, tables, or headings.
525
+ To do so, set the `code_blocks`, `tables`, or `headings` parameter(s) to false.
526
+
527
+ Code blocks are included in this rule by default since it is often a
528
+ requirement for document readability, and tentatively compatible with code
529
+ rules. Still, some languages do not lend themselves to short lines.
530
+
531
+ Lines with link/image reference definitions and standalone lines (i.e., not part
532
+ of a paragraph) with only a link/image (possibly using (strong) emphasis) are
533
+ always exempted from this rule (even in `strict` mode) because there is often no
534
+ way to split such lines without breaking the URL.
535
+
536
+ Rationale: Extremely long lines can be difficult to work with in some editors.
537
+ More information: <https://cirosantilli.com/markdown-style-guide#line-wrapping>.
538
+
539
+ <a name="md014"></a>
540
+
541
+ ## `MD014` - Dollar signs used before commands without showing output
542
+
543
+ Tags: `code`
544
+
545
+ Aliases: `commands-show-output`
546
+
547
+ Fixable: Some violations can be fixed by tooling
548
+
549
+ This rule is triggered when there are code blocks showing shell commands to be
550
+ typed, and *all* of the shell commands are preceded by dollar signs ($):
551
+
552
+ <!-- markdownlint-disable commands-show-output -->
553
+
554
+ ```markdown
555
+ $ ls
556
+ $ cat foo
557
+ $ less bar
558
+ ```
559
+
560
+ <!-- markdownlint-restore -->
561
+
562
+ The dollar signs are unnecessary in this situation, and should not be
563
+ included:
564
+
565
+ ```markdown
566
+ ls
567
+ cat foo
568
+ less bar
569
+ ```
570
+
571
+ Showing output for commands preceded by dollar signs does not trigger this rule:
572
+
573
+ ```markdown
574
+ $ ls
575
+ foo bar
576
+ $ cat foo
577
+ Hello world
578
+ $ cat bar
579
+ baz
580
+ ```
581
+
582
+ Because some commands do not produce output, it is not a violation if *some*
583
+ commands do not have output:
584
+
585
+ ```markdown
586
+ $ mkdir test
587
+ mkdir: created directory 'test'
588
+ $ ls test
589
+ ```
590
+
591
+ Rationale: It is easier to copy/paste and less noisy if the dollar signs
592
+ are omitted when they are not needed. See
593
+ <https://cirosantilli.com/markdown-style-guide#dollar-signs-in-shell-code>
594
+ for more information.
595
+
596
+ <a name="md018"></a>
597
+
598
+ ## `MD018` - No space after hash on atx style heading
599
+
600
+ Tags: `atx`, `headings`, `spaces`
601
+
602
+ Aliases: `no-missing-space-atx`
603
+
604
+ Fixable: Some violations can be fixed by tooling
605
+
606
+ This rule is triggered when spaces are missing after the hash characters
607
+ in an atx style heading:
608
+
609
+ ```markdown
610
+ #Heading 1
611
+
612
+ ##Heading 2
613
+ ```
614
+
615
+ To fix this, separate the heading text from the hash character by a single
616
+ space:
617
+
618
+ ```markdown
619
+ # Heading 1
620
+
621
+ ## Heading 2
622
+ ```
623
+
624
+ Rationale: Violations of this rule can lead to improperly rendered content.
625
+
626
+ <a name="md019"></a>
627
+
628
+ ## `MD019` - Multiple spaces after hash on atx style heading
629
+
630
+ Tags: `atx`, `headings`, `spaces`
631
+
632
+ Aliases: `no-multiple-space-atx`
633
+
634
+ Fixable: Some violations can be fixed by tooling
635
+
636
+ This rule is triggered when more than one space is used to separate the
637
+ heading text from the hash characters in an atx style heading:
638
+
639
+ ```markdown
640
+ # Heading 1
641
+
642
+ ## Heading 2
643
+ ```
644
+
645
+ To fix this, separate the heading text from the hash character by a single
646
+ space:
647
+
648
+ ```markdown
649
+ # Heading 1
650
+
651
+ ## Heading 2
652
+ ```
653
+
654
+ Rationale: Extra space has no purpose and does not affect the rendering of
655
+ content.
656
+
657
+ <a name="md020"></a>
658
+
659
+ ## `MD020` - No space inside hashes on closed atx style heading
660
+
661
+ Tags: `atx_closed`, `headings`, `spaces`
662
+
663
+ Aliases: `no-missing-space-closed-atx`
664
+
665
+ Fixable: Some violations can be fixed by tooling
666
+
667
+ This rule is triggered when spaces are missing inside the hash characters
668
+ in a closed atx style heading:
669
+
670
+ ```markdown
671
+ #Heading 1#
672
+
673
+ ##Heading 2##
674
+ ```
675
+
676
+ To fix this, separate the heading text from the hash character by a single
677
+ space:
678
+
679
+ ```markdown
680
+ # Heading 1 #
681
+
682
+ ## Heading 2 ##
683
+ ```
684
+
685
+ Note: this rule will fire if either side of the heading is missing spaces.
686
+
687
+ Rationale: Violations of this rule can lead to improperly rendered content.
688
+
689
+ <a name="md021"></a>
690
+
691
+ ## `MD021` - Multiple spaces inside hashes on closed atx style heading
692
+
693
+ Tags: `atx_closed`, `headings`, `spaces`
694
+
695
+ Aliases: `no-multiple-space-closed-atx`
696
+
697
+ Fixable: Some violations can be fixed by tooling
698
+
699
+ This rule is triggered when more than one space is used to separate the
700
+ heading text from the hash characters in a closed atx style heading:
701
+
702
+ ```markdown
703
+ # Heading 1 #
704
+
705
+ ## Heading 2 ##
706
+ ```
707
+
708
+ To fix this, separate the heading text from the hash character by a single
709
+ space:
710
+
711
+ ```markdown
712
+ # Heading 1 #
713
+
714
+ ## Heading 2 ##
715
+ ```
716
+
717
+ Note: this rule will fire if either side of the heading contains multiple
718
+ spaces.
719
+
720
+ Rationale: Extra space has no purpose and does not affect the rendering of
721
+ content.
722
+
723
+ <a name="md022"></a>
724
+
725
+ ## `MD022` - Headings should be surrounded by blank lines
726
+
727
+ Tags: `blank_lines`, `headings`
728
+
729
+ Aliases: `blanks-around-headings`
730
+
731
+ Parameters:
732
+
733
+ - `include_front_matter`: Include front matter content (`boolean`, default
734
+ `false`)
735
+ - `lines_above`: Blank lines above heading (`integer|integer[]`, default `1`)
736
+ - `lines_below`: Blank lines below heading (`integer|integer[]`, default `1`)
737
+
738
+ Fixable: Some violations can be fixed by tooling
739
+
740
+ This rule is triggered when headings (any style) are either not preceded or not
741
+ followed by at least one blank line:
742
+
743
+ ```markdown
744
+ # Heading 1
745
+ Some text
746
+
747
+ Some more text
748
+ ## Heading 2
749
+ ```
750
+
751
+ To fix this, ensure that all headings have a blank line both before and after
752
+ (except where the heading is at the beginning or end of the document):
753
+
754
+ ```markdown
755
+ # Heading 1
756
+
757
+ Some text
758
+
759
+ Some more text
760
+
761
+ ## Heading 2
762
+ ```
763
+
764
+ The `lines_above` and `lines_below` parameters can be used to specify a
765
+ different number of blank lines (including `0`) above or below each heading.
766
+ If the value `-1` is used for either parameter, any number of blank lines is
767
+ allowed. To customize the number of lines above or below each heading level
768
+ individually, specify a `number[]` where values correspond to heading levels
769
+ 1-6 (in order).
770
+
771
+ Notes: If `lines_above` or `lines_below` are configured to require more than one
772
+ blank line, [MD012/no-multiple-blanks](md012.md) should also be customized. This
773
+ rule checks for *at least* as many blank lines as specified; any extra blank
774
+ lines are ignored.
775
+
776
+ By default, [YAML](https://wikipedia.org/wiki/YAML) front matter is ignored, so
777
+ the following document reports no violations:
778
+
779
+ ```markdown
780
+ ---
781
+ title: Title
782
+ ---
783
+ ## Heading
784
+ ```
785
+
786
+ To require the configured number of blank lines between front matter content and
787
+ a document's first heading, set the `include_front_matter` parameter to `true`.
788
+
789
+ Rationale: Aside from aesthetic reasons, some parsers, including `kramdown`,
790
+ will not parse headings that don't have a blank line before, and will parse them
791
+ as regular text.
792
+
793
+ <a name="md023"></a>
794
+
795
+ ## `MD023` - Headings must start at the beginning of the line
796
+
797
+ Tags: `headings`, `spaces`
798
+
799
+ Aliases: `heading-start-left`
800
+
801
+ Fixable: Some violations can be fixed by tooling
802
+
803
+ This rule is triggered when a heading is indented by one or more spaces:
804
+
805
+ ```markdown
806
+ Some text
807
+
808
+ # Indented heading
809
+ ```
810
+
811
+ To fix this, ensure that all headings start at the beginning of the line:
812
+
813
+ ```markdown
814
+ Some text
815
+
816
+ # Heading
817
+ ```
818
+
819
+ Note that scenarios like block quotes "indent" the start of the line, so the
820
+ following is also correct:
821
+
822
+ ```markdown
823
+ > # Heading in Block Quote
824
+ ```
825
+
826
+ Rationale: Headings that don't start at the beginning of the line will not be
827
+ parsed as headings, and will instead appear as regular text.
828
+
829
+ <a name="md024"></a>
830
+
831
+ ## `MD024` - Multiple headings with the same content
832
+
833
+ Tags: `headings`
834
+
835
+ Aliases: `no-duplicate-heading`
836
+
837
+ Parameters:
838
+
839
+ - `siblings_only`: Only check sibling headings (`boolean`, default `false`)
840
+
841
+ This rule is triggered if there are multiple headings in the document that have
842
+ the same text:
843
+
844
+ ```markdown
845
+ # Some text
846
+
847
+ ## Some text
848
+ ```
849
+
850
+ To fix this, ensure that the content of each heading is different:
851
+
852
+ ```markdown
853
+ # Some text
854
+
855
+ ## Some more text
856
+ ```
857
+
858
+ If the parameter `siblings_only` is set to `true`, duplication is allowed for
859
+ headings with different parents (as is common in changelogs):
860
+
861
+ ```markdown
862
+ # Changelog
863
+
864
+ ## 1.0.0
865
+
866
+ ### Features
867
+
868
+ ## 2.0.0
869
+
870
+ ### Features
871
+ ```
872
+
873
+ Rationale: Some Markdown parsers generate anchors for headings based on the
874
+ heading name; headings with the same content can cause problems with that.
875
+
876
+ <a name="md025"></a>
877
+
878
+ ## `MD025` - Multiple top-level headings in the same document
879
+
880
+ Tags: `headings`
881
+
882
+ Aliases: `single-h1`, `single-title`
883
+
884
+ Parameters:
885
+
886
+ - `front_matter_title`: RegExp for matching title in front matter (`string`,
887
+ default `^\s*title\s*[:=]`)
888
+ - `level`: Heading level (`integer`, default `1`)
889
+
890
+ This rule is triggered when a top-level heading is in use (the first line of
891
+ the file is an h1 heading), and more than one h1 heading is in use in the
892
+ document:
893
+
894
+ ```markdown
895
+ # Top level heading
896
+
897
+ # Another top-level heading
898
+ ```
899
+
900
+ To fix, structure your document so there is a single h1 heading that is
901
+ the title for the document. Subsequent headings must be
902
+ lower-level headings (h2, h3, etc.):
903
+
904
+ ```markdown
905
+ # Title
906
+
907
+ ## Heading
908
+
909
+ ## Another heading
910
+ ```
911
+
912
+ Note: The `level` parameter can be used to change the top-level (ex: to h2) in
913
+ cases where an h1 is added externally.
914
+
915
+ If [YAML](https://wikipedia.org/wiki/YAML) front matter is present and
916
+ contains a `title` property (commonly used with blog posts), this rule treats
917
+ that as a top level heading and will report a violation for any subsequent
918
+ top-level headings. To use a different property name in the front matter,
919
+ specify the text of a regular expression via the `front_matter_title` parameter.
920
+ To disable the use of front matter by this rule, specify `""` for
921
+ `front_matter_title`.
922
+
923
+ Rationale: A top-level heading is an h1 on the first line of the file, and
924
+ serves as the title for the document. If this convention is in use, then there
925
+ can not be more than one title for the document, and the entire document should
926
+ be contained within this heading.
927
+
928
+ <a name="md026"></a>
929
+
930
+ ## `MD026` - Trailing punctuation in heading
931
+
932
+ Tags: `headings`
933
+
934
+ Aliases: `no-trailing-punctuation`
935
+
936
+ Parameters:
937
+
938
+ - `punctuation`: Punctuation characters (`string`, default `.,;:!。,;:!`)
939
+
940
+ Fixable: Some violations can be fixed by tooling
941
+
942
+ This rule is triggered on any heading that has one of the specified normal or
943
+ full-width punctuation characters as the last character in the line:
944
+
945
+ ```markdown
946
+ # This is a heading.
947
+ ```
948
+
949
+ To fix this, remove the trailing punctuation:
950
+
951
+ ```markdown
952
+ # This is a heading
953
+ ```
954
+
955
+ Note: The `punctuation` parameter can be used to specify what characters count
956
+ as punctuation at the end of a heading. For example, you can change it to
957
+ `".,;:"` to allow headings that end with an exclamation point. `?` is
958
+ allowed by default because of how common it is in headings of FAQ-style
959
+ documents. Setting the `punctuation` parameter to `""` allows all characters -
960
+ and is equivalent to disabling the rule.
961
+
962
+ Note: The trailing semicolon of [HTML entity references][html-entity-references]
963
+ like `&copy;`, `&#169;`, and `&#x000A9;` is ignored by this rule.
964
+
965
+ Rationale: Headings are not meant to be full sentences. More information:
966
+ [Punctuation at the end of headers][end-punctuation].
967
+
968
+ [end-punctuation]: https://cirosantilli.com/markdown-style-guide#punctuation-at-the-end-of-headers
969
+ [html-entity-references]: https://wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references
970
+
971
+ <a name="md027"></a>
972
+
973
+ ## `MD027` - Multiple spaces after blockquote symbol
974
+
975
+ Tags: `blockquote`, `indentation`, `whitespace`
976
+
977
+ Aliases: `no-multiple-space-blockquote`
978
+
979
+ Parameters:
980
+
981
+ - `list_items`: Include list items (`boolean`, default `true`)
982
+
983
+ Fixable: Some violations can be fixed by tooling
984
+
985
+ This rule is triggered when blockquotes have more than one space after the
986
+ blockquote (`>`) symbol:
987
+
988
+ ```markdown
989
+ > This is a blockquote with bad indentation
990
+ > there should only be one.
991
+ ```
992
+
993
+ To fix, remove any extraneous space:
994
+
995
+ ```markdown
996
+ > This is a blockquote with correct
997
+ > indentation.
998
+ ```
999
+
1000
+ Inferring intended list indentation within a blockquote can be challenging;
1001
+ setting the `list_items` parameter to `false` disables this rule for ordered
1002
+ and unordered list items.
1003
+
1004
+ Rationale: Consistent formatting makes it easier to understand a document.
1005
+
1006
+ <a name="md028"></a>
1007
+
1008
+ ## `MD028` - Blank line inside blockquote
1009
+
1010
+ Tags: `blockquote`, `whitespace`
1011
+
1012
+ Aliases: `no-blanks-blockquote`
1013
+
1014
+ This rule is triggered when two blockquote blocks are separated by nothing
1015
+ but a blank line:
1016
+
1017
+ ```markdown
1018
+ > This is a blockquote
1019
+ > which is immediately followed by
1020
+
1021
+ > this blockquote. In some cases,
1022
+ > these may be merged into one blockquote.
1023
+ ```
1024
+
1025
+ To fix this, ensure that consecutive blockquotes have text (or an HTML comment)
1026
+ in between:
1027
+
1028
+ ```markdown
1029
+ > This is a blockquote.
1030
+
1031
+ This is paragraph text.
1032
+
1033
+ > This is a second blockquote.
1034
+
1035
+ <!-- This is an HTML comment -->
1036
+
1037
+ > This is a third blockquote.
1038
+ ```
1039
+
1040
+ If they are meant to be a single quote, add the blockquote symbol at the
1041
+ beginning of the blank line:
1042
+
1043
+ ```markdown
1044
+ > This is a blockquote.
1045
+ >
1046
+ > This is the same blockquote.
1047
+ ```
1048
+
1049
+ Rationale: Some Markdown parsers will treat two blockquotes separated by one
1050
+ or more blank lines as the same blockquote, while others will treat them as
1051
+ separate blockquotes.
1052
+
1053
+ <a name="md029"></a>
1054
+
1055
+ ## `MD029` - Ordered list item prefix
1056
+
1057
+ Tags: `ol`
1058
+
1059
+ Aliases: `ol-prefix`
1060
+
1061
+ Parameters:
1062
+
1063
+ - `style`: List style (`string`, default `one_or_ordered`, values `one` /
1064
+ `one_or_ordered` / `ordered` / `zero`)
1065
+
1066
+ Fixable: Some violations can be fixed by tooling
1067
+
1068
+ This rule is triggered for ordered lists that do not either start with '1.' or
1069
+ do not have a prefix that increases in numerical order (depending on the
1070
+ configured style). The less-common pattern of using '0.' as a first prefix or
1071
+ for all prefixes is also supported.
1072
+
1073
+ Example valid list if the style is configured as 'one':
1074
+
1075
+ ```markdown
1076
+ 1. Do this.
1077
+ 1. Do that.
1078
+ 1. Done.
1079
+ ```
1080
+
1081
+ Examples of valid lists if the style is configured as 'ordered':
1082
+
1083
+ ```markdown
1084
+ 1. Do this.
1085
+ 2. Do that.
1086
+ 3. Done.
1087
+ ```
1088
+
1089
+ ```markdown
1090
+ 0. Do this.
1091
+ 1. Do that.
1092
+ 2. Done.
1093
+ ```
1094
+
1095
+ All three examples are valid when the style is configured as 'one_or_ordered'.
1096
+
1097
+ Example valid list if the style is configured as 'zero':
1098
+
1099
+ ```markdown
1100
+ 0. Do this.
1101
+ 0. Do that.
1102
+ 0. Done.
1103
+ ```
1104
+
1105
+ Example invalid list for all styles:
1106
+
1107
+ ```markdown
1108
+ 1. Do this.
1109
+ 3. Done.
1110
+ ```
1111
+
1112
+ This rule supports 0-prefixing list items for uniform indentation and will
1113
+ preserve that when fixing:
1114
+
1115
+ ```markdown
1116
+ ...
1117
+ 08. Item
1118
+ 09. Item
1119
+ 10. Item
1120
+ 11. Item
1121
+ ```
1122
+
1123
+ When list items appear to be right-aligned, fixes will maintain that alignment:
1124
+
1125
+ ```markdown
1126
+ ...
1127
+ 8. Item
1128
+ 9. Item
1129
+ 10. Item
1130
+ 11. Item
1131
+ ```
1132
+
1133
+ Note: This rule will report violations for cases like the following where an
1134
+ improperly-indented code block (or similar) appears between two list items and
1135
+ "breaks" the list in two:
1136
+
1137
+ <!-- markdownlint-disable code-fence-style -->
1138
+
1139
+ ~~~markdown
1140
+ 1. First list
1141
+
1142
+ ```text
1143
+ Code block
1144
+ ```
1145
+
1146
+ 1. Second list
1147
+ ~~~
1148
+
1149
+ The fix is to indent the code block so it becomes part of the preceding list
1150
+ item as intended:
1151
+
1152
+ ~~~markdown
1153
+ 1. First list
1154
+
1155
+ ```text
1156
+ Code block
1157
+ ```
1158
+
1159
+ 2. Still first list
1160
+ ~~~
1161
+
1162
+ <!-- markdownlint-restore -->
1163
+
1164
+ Rationale: Consistent formatting makes it easier to understand a document.
1165
+
1166
+ <a name="md030"></a>
1167
+
1168
+ ## `MD030` - Spaces after list markers
1169
+
1170
+ Tags: `ol`, `ul`, `whitespace`
1171
+
1172
+ Aliases: `list-marker-space`
1173
+
1174
+ Parameters:
1175
+
1176
+ - `ol_multi`: Spaces for multi-line ordered list items (`integer`, default `1`)
1177
+ - `ol_single`: Spaces for single-line ordered list items (`integer`, default
1178
+ `1`)
1179
+ - `ul_multi`: Spaces for multi-line unordered list items (`integer`, default
1180
+ `1`)
1181
+ - `ul_single`: Spaces for single-line unordered list items (`integer`, default
1182
+ `1`)
1183
+
1184
+ Fixable: Some violations can be fixed by tooling
1185
+
1186
+ This rule checks for the number of spaces between a list marker (e.g. '`-`',
1187
+ '`*`', '`+`' or '`1.`') and the text of the list item.
1188
+
1189
+ The number of spaces checked for depends on the document style in use, but the
1190
+ default is 1 space after any list marker:
1191
+
1192
+ ```markdown
1193
+ * Foo
1194
+ * Bar
1195
+ * Baz
1196
+
1197
+ 1. Foo
1198
+ 1. Bar
1199
+ 1. Baz
1200
+
1201
+ 1. Foo
1202
+ * Bar
1203
+ 1. Baz
1204
+ ```
1205
+
1206
+ A document style may change the number of spaces after unordered list items
1207
+ and ordered list items independently, as well as based on whether the content
1208
+ of every item in the list consists of a single paragraph or multiple
1209
+ paragraphs (including sub-lists and code blocks).
1210
+
1211
+ For example, the style guide at
1212
+ <https://cirosantilli.com/markdown-style-guide#spaces-after-list-marker>
1213
+ specifies that 1 space after the list marker should be used if every item in
1214
+ the list fits within a single paragraph, but to use 2 or 3 spaces (for ordered
1215
+ and unordered lists respectively) if there are multiple paragraphs of content
1216
+ inside the list:
1217
+
1218
+ ```markdown
1219
+ * Foo
1220
+ * Bar
1221
+ * Baz
1222
+ ```
1223
+
1224
+ vs.
1225
+
1226
+ ```markdown
1227
+ * Foo
1228
+
1229
+ Second paragraph
1230
+
1231
+ * Bar
1232
+ ```
1233
+
1234
+ or
1235
+
1236
+ ```markdown
1237
+ 1. Foo
1238
+
1239
+ Second paragraph
1240
+
1241
+ 1. Bar
1242
+ ```
1243
+
1244
+ To fix this, ensure the correct number of spaces are used after the list marker
1245
+ for your selected document style.
1246
+
1247
+ Rationale: Violations of this rule can lead to improperly rendered content.
1248
+
1249
+ Note: See [Prettier.md](Prettier.md) for compatibility information.
1250
+
1251
+ <a name="md031"></a>
1252
+
1253
+ ## `MD031` - Fenced code blocks should be surrounded by blank lines
1254
+
1255
+ Tags: `blank_lines`, `code`
1256
+
1257
+ Aliases: `blanks-around-fences`
1258
+
1259
+ Parameters:
1260
+
1261
+ - `list_items`: Include list items (`boolean`, default `true`)
1262
+
1263
+ Fixable: Some violations can be fixed by tooling
1264
+
1265
+ This rule is triggered when fenced code blocks are either not preceded or not
1266
+ followed by a blank line:
1267
+
1268
+ ````markdown
1269
+ Some text
1270
+ ```
1271
+ Code block
1272
+ ```
1273
+
1274
+ ```
1275
+ Another code block
1276
+ ```
1277
+ Some more text
1278
+ ````
1279
+
1280
+ To fix this, ensure that all fenced code blocks have a blank line both before
1281
+ and after (except where the block is at the beginning or end of the document):
1282
+
1283
+ ````markdown
1284
+ Some text
1285
+
1286
+ ```
1287
+ Code block
1288
+ ```
1289
+
1290
+ ```
1291
+ Another code block
1292
+ ```
1293
+
1294
+ Some more text
1295
+ ````
1296
+
1297
+ Set the `list_items` parameter to `false` to disable this rule for list items.
1298
+ Disabling this behavior for lists can be useful if it is necessary to create a
1299
+ [tight](https://spec.commonmark.org/0.29/#tight) list containing a code fence.
1300
+
1301
+ Rationale: Aside from aesthetic reasons, some parsers, including kramdown, will
1302
+ not parse fenced code blocks that don't have blank lines before and after them.
1303
+
1304
+ <a name="md032"></a>
1305
+
1306
+ ## `MD032` - Lists should be surrounded by blank lines
1307
+
1308
+ Tags: `blank_lines`, `bullet`, `ol`, `ul`
1309
+
1310
+ Aliases: `blanks-around-lists`
1311
+
1312
+ Fixable: Some violations can be fixed by tooling
1313
+
1314
+ This rule is triggered when lists (of any kind) are either not preceded or not
1315
+ followed by a blank line:
1316
+
1317
+ ```markdown
1318
+ Some text
1319
+ * List item
1320
+ * List item
1321
+
1322
+ 1. List item
1323
+ 2. List item
1324
+ ***
1325
+ ```
1326
+
1327
+ In the first case above, text immediately precedes the unordered list. In the
1328
+ second case above, a thematic break immediately follows the ordered list. To fix
1329
+ violations of this rule, ensure that all lists have a blank line both before and
1330
+ after (except when the list is at the very beginning or end of the document):
1331
+
1332
+ ```markdown
1333
+ Some text
1334
+
1335
+ * List item
1336
+ * List item
1337
+
1338
+ 1. List item
1339
+ 2. List item
1340
+
1341
+ ***
1342
+ ```
1343
+
1344
+ Note that the following case is **not** a violation of this rule:
1345
+
1346
+ ```markdown
1347
+ 1. List item
1348
+ More item 1
1349
+ 2. List item
1350
+ More item 2
1351
+ ```
1352
+
1353
+ Although it is not indented, the text "More item 2" is referred to as a
1354
+ [lazy continuation line][lazy-continuation] and considered part of the second
1355
+ list item.
1356
+
1357
+ Rationale: In addition to aesthetic reasons, some parsers, including kramdown,
1358
+ will not parse lists that don't have blank lines before and after them.
1359
+
1360
+ [lazy-continuation]: https://spec.commonmark.org/0.30/#lazy-continuation-line
1361
+
1362
+ <a name="md033"></a>
1363
+
1364
+ ## `MD033` - Inline HTML
1365
+
1366
+ Tags: `html`
1367
+
1368
+ Aliases: `no-inline-html`
1369
+
1370
+ Parameters:
1371
+
1372
+ - `allowed_elements`: Allowed elements (`string[]`, default `[]`)
1373
+ - `table_allowed_elements`: Allowed elements in tables (`string[]`, default
1374
+ `[]`)
1375
+
1376
+ This rule is triggered whenever raw HTML is used in a Markdown document:
1377
+
1378
+ ```markdown
1379
+ <h1>Inline HTML heading</h1>
1380
+ ```
1381
+
1382
+ To fix this, use 'pure' Markdown instead of including raw HTML:
1383
+
1384
+ ```markdown
1385
+ # Markdown heading
1386
+ ```
1387
+
1388
+ To allow specific HTML elements anywhere in Markdown content, set the
1389
+ `allowed_elements` parameter to a list of HTML element names. To allow a
1390
+ specific set of HTML elements within Markdown tables, set the
1391
+ `table_allowed_elements` parameter to a list of HTML element names. This can be
1392
+ used to permit the use of `<br>`-style line breaks only within Markdown tables.
1393
+
1394
+ Rationale: Raw HTML is allowed in Markdown, but this rule is included for
1395
+ those who want their documents to only include "pure" Markdown, or for those
1396
+ who are rendering Markdown documents into something other than HTML.
1397
+
1398
+ <a name="md034"></a>
1399
+
1400
+ ## `MD034` - Bare URL used
1401
+
1402
+ Tags: `links`, `url`
1403
+
1404
+ Aliases: `no-bare-urls`
1405
+
1406
+ Fixable: Some violations can be fixed by tooling
1407
+
1408
+ This rule is triggered whenever a URL or email address appears without
1409
+ surrounding angle brackets:
1410
+
1411
+ ```markdown
1412
+ For more info, visit https://www.example.com/ or email user@example.com.
1413
+ ```
1414
+
1415
+ To fix this, add angle brackets around the URL or email address:
1416
+
1417
+ ```markdown
1418
+ For more info, visit <https://www.example.com/> or email <user@example.com>.
1419
+ ```
1420
+
1421
+ If a URL or email address contains non-ASCII characters, it may be not be
1422
+ handled as intended even when angle brackets are present. In such cases,
1423
+ [percent-encoding](https://wikipedia.org/wiki/Percent-encoding) can be used
1424
+ to comply with the required syntax for URL and email.
1425
+
1426
+ Note: To include a bare URL or email without it being converted into a link,
1427
+ wrap it in a code span:
1428
+
1429
+ ```markdown
1430
+ Not a clickable link: `https://www.example.com`
1431
+ ```
1432
+
1433
+ Note: The following scenario does not trigger this rule because it could be a
1434
+ shortcut link:
1435
+
1436
+ ```markdown
1437
+ [https://www.example.com]
1438
+ ```
1439
+
1440
+ Note: The following syntax triggers this rule because the nested link could be
1441
+ a shortcut link (which takes precedence):
1442
+
1443
+ ```markdown
1444
+ [text [shortcut] text](https://example.com)
1445
+ ```
1446
+
1447
+ To avoid this, escape both inner brackets:
1448
+
1449
+ ```markdown
1450
+ [link \[text\] link](https://example.com)
1451
+ ```
1452
+
1453
+ Rationale: Without angle brackets, a bare URL or email isn't converted into a
1454
+ link by some Markdown parsers.
1455
+
1456
+ <a name="md035"></a>
1457
+
1458
+ ## `MD035` - Horizontal rule style
1459
+
1460
+ Tags: `hr`
1461
+
1462
+ Aliases: `hr-style`
1463
+
1464
+ Parameters:
1465
+
1466
+ - `style`: Horizontal rule style (`string`, default `consistent`)
1467
+
1468
+ This rule is triggered when inconsistent styles of horizontal rules (also known
1469
+ as "thematic breaks") are used in a document:
1470
+
1471
+ ```markdown
1472
+ ---
1473
+
1474
+ - - -
1475
+
1476
+ ***
1477
+
1478
+ * * *
1479
+
1480
+ ****
1481
+ ```
1482
+
1483
+ To fix this, use the same horizontal rule syntax everywhere:
1484
+
1485
+ ```markdown
1486
+ ---
1487
+
1488
+ ---
1489
+
1490
+ ---
1491
+ ```
1492
+
1493
+ The `style` parameter's default value `consistent` ensures all horizontal rules
1494
+ in a document match the first horizontal rule in that document. To enforce a
1495
+ specific pattern of characters, set the `style` parameter to that string (e.g.,
1496
+ `"* * *"`).
1497
+
1498
+ Note: In order to be recognized as a horizontal rule, a line must contain three
1499
+ or more matching `-`, `_`, or `*` characters with optional space between.
1500
+
1501
+ Rationale: Consistent formatting makes it easier to understand a document.
1502
+
1503
+ <a name="md036"></a>
1504
+
1505
+ ## `MD036` - Emphasis used instead of a heading
1506
+
1507
+ Tags: `emphasis`, `headings`
1508
+
1509
+ Aliases: `no-emphasis-as-heading`
1510
+
1511
+ Parameters:
1512
+
1513
+ - `punctuation`: Punctuation characters (`string`, default `.,;:!?。,;:!?`)
1514
+
1515
+ This check looks for instances where emphasized (i.e. bold or italic) text is
1516
+ used to separate sections, where a heading should be used instead:
1517
+
1518
+ ```markdown
1519
+ **My document**
1520
+
1521
+ Lorem ipsum dolor sit amet...
1522
+
1523
+ _Another section_
1524
+
1525
+ Consectetur adipiscing elit, sed do eiusmod.
1526
+ ```
1527
+
1528
+ To fix this, use Markdown headings instead of emphasized text to denote
1529
+ sections:
1530
+
1531
+ ```markdown
1532
+ # My document
1533
+
1534
+ Lorem ipsum dolor sit amet...
1535
+
1536
+ ## Another section
1537
+
1538
+ Consectetur adipiscing elit, sed do eiusmod.
1539
+ ```
1540
+
1541
+ Note: This rule looks for single-line paragraphs that consist entirely
1542
+ of emphasized text. It won't fire on emphasis used within regular text,
1543
+ multi-line emphasized paragraphs, or paragraphs ending in punctuation
1544
+ (normal or full-width). Similarly to rule MD026, you can configure what
1545
+ characters are recognized as punctuation.
1546
+
1547
+ Rationale: Using emphasis instead of a heading prevents tools from inferring
1548
+ the structure of a document. More information:
1549
+ <https://cirosantilli.com/markdown-style-guide#emphasis-vs-headers>.
1550
+
1551
+ <a name="md037"></a>
1552
+
1553
+ ## `MD037` - Spaces inside emphasis markers
1554
+
1555
+ Tags: `emphasis`, `whitespace`
1556
+
1557
+ Aliases: `no-space-in-emphasis`
1558
+
1559
+ Fixable: Some violations can be fixed by tooling
1560
+
1561
+ This rule is triggered when emphasis markers (bold, italic) are used, but they
1562
+ have spaces between the markers and the text:
1563
+
1564
+ ```markdown
1565
+ Here is some ** bold ** text.
1566
+
1567
+ Here is some * italic * text.
1568
+
1569
+ Here is some more __ bold __ text.
1570
+
1571
+ Here is some more _ italic _ text.
1572
+ ```
1573
+
1574
+ To fix this, remove the spaces around the emphasis markers:
1575
+
1576
+ ```markdown
1577
+ Here is some **bold** text.
1578
+
1579
+ Here is some *italic* text.
1580
+
1581
+ Here is some more __bold__ text.
1582
+
1583
+ Here is some more _italic_ text.
1584
+ ```
1585
+
1586
+ Rationale: Emphasis is only parsed as such when the asterisks/underscores
1587
+ aren't surrounded by spaces. This rule attempts to detect where
1588
+ they were surrounded by spaces, but it appears that emphasized text was
1589
+ intended by the author.
1590
+
1591
+ <a name="md038"></a>
1592
+
1593
+ ## `MD038` - Spaces inside code span elements
1594
+
1595
+ Tags: `code`, `whitespace`
1596
+
1597
+ Aliases: `no-space-in-code`
1598
+
1599
+ Fixable: Some violations can be fixed by tooling
1600
+
1601
+ This rule is triggered for code spans containing content with unnecessary space
1602
+ next to the beginning or ending backticks:
1603
+
1604
+ ```markdown
1605
+ `some text `
1606
+
1607
+ ` some text`
1608
+
1609
+ ` some text `
1610
+ ```
1611
+
1612
+ To fix this, remove the extra space characters from the beginning and ending:
1613
+
1614
+ ```markdown
1615
+ `some text`
1616
+ ```
1617
+
1618
+ Note: A single leading *and* trailing space is allowed by the specification and
1619
+ trimmed by the parser to support code spans that begin or end with a backtick:
1620
+
1621
+ ```markdown
1622
+ `` `backticks` ``
1623
+
1624
+ `` backtick` ``
1625
+ ```
1626
+
1627
+ Note: When single-space padding is present in the input, it will be preserved
1628
+ (even if unnecessary):
1629
+
1630
+ ```markdown
1631
+ ` code `
1632
+ ```
1633
+
1634
+ Note: Code spans containing only spaces are allowed by the specification and are
1635
+ also preserved:
1636
+
1637
+ ```markdown
1638
+ ` `
1639
+
1640
+ ` `
1641
+ ```
1642
+
1643
+ Rationale: Violations of this rule are usually unintentional and can lead to
1644
+ improperly-rendered content.
1645
+
1646
+ <a name="md039"></a>
1647
+
1648
+ ## `MD039` - Spaces inside link text
1649
+
1650
+ Tags: `links`, `whitespace`
1651
+
1652
+ Aliases: `no-space-in-links`
1653
+
1654
+ Fixable: Some violations can be fixed by tooling
1655
+
1656
+ This rule is triggered on links that have spaces surrounding the link text:
1657
+
1658
+ ```markdown
1659
+ [ a link ](https://www.example.com/)
1660
+ ```
1661
+
1662
+ To fix this, remove the spaces surrounding the link text:
1663
+
1664
+ ```markdown
1665
+ [a link](https://www.example.com/)
1666
+ ```
1667
+
1668
+ Rationale: Consistent formatting makes it easier to understand a document.
1669
+
1670
+ <a name="md040"></a>
1671
+
1672
+ ## `MD040` - Fenced code blocks should have a language specified
1673
+
1674
+ Tags: `code`, `language`
1675
+
1676
+ Aliases: `fenced-code-language`
1677
+
1678
+ Parameters:
1679
+
1680
+ - `allowed_languages`: List of languages (`string[]`, default `[]`)
1681
+ - `language_only`: Require language only (`boolean`, default `false`)
1682
+
1683
+ This rule is triggered when fenced code blocks are used, but a language isn't
1684
+ specified:
1685
+
1686
+ ````markdown
1687
+ ```
1688
+ #!/bin/bash
1689
+ echo Hello world
1690
+ ```
1691
+ ````
1692
+
1693
+ To fix this, add a language specifier to the code block:
1694
+
1695
+ ````markdown
1696
+ ```bash
1697
+ #!/bin/bash
1698
+ echo Hello world
1699
+ ```
1700
+ ````
1701
+
1702
+ To display a code block without syntax highlighting, use:
1703
+
1704
+ ````markdown
1705
+ ```text
1706
+ Plain text in a code block
1707
+ ```
1708
+ ````
1709
+
1710
+ You can configure the `allowed_languages` parameter to specify a list of
1711
+ languages code blocks could use. Languages are case sensitive. The default value
1712
+ is `[]` which means any language specifier is valid.
1713
+
1714
+ You can prevent extra data from being present in the info string of fenced code
1715
+ blocks. To do so, set the `language_only` parameter to `true`.
1716
+
1717
+ <!-- markdownlint-disable-next-line no-space-in-code -->
1718
+ Info strings with leading/trailing whitespace (ex: `js `) or other content (ex:
1719
+ `ruby startline=3`) will trigger this rule.
1720
+
1721
+ Rationale: Specifying a language improves content rendering by using the
1722
+ correct syntax highlighting for code. More information:
1723
+ <https://cirosantilli.com/markdown-style-guide#option-code-fenced>.
1724
+
1725
+ <a name="md041"></a>
1726
+
1727
+ ## `MD041` - First line in a file should be a top-level heading
1728
+
1729
+ Tags: `headings`
1730
+
1731
+ Aliases: `first-line-h1`, `first-line-heading`
1732
+
1733
+ Parameters:
1734
+
1735
+ - `allow_preamble`: Allow content before first heading (`boolean`, default
1736
+ `false`)
1737
+ - `front_matter_title`: RegExp for matching title in front matter (`string`,
1738
+ default `^\s*title\s*[:=]`)
1739
+ - `level`: Heading level (`integer`, default `1`)
1740
+
1741
+ This rule is intended to ensure documents have a title and is triggered when
1742
+ the first line in a document is not a top-level ([HTML][HTML] `h1`) heading:
1743
+
1744
+ ```markdown
1745
+ This is a document without a heading
1746
+ ```
1747
+
1748
+ To fix this, add a top-level heading to the beginning of the document:
1749
+
1750
+ ```markdown
1751
+ # Document Heading
1752
+
1753
+ This is a document with a top-level heading
1754
+ ```
1755
+
1756
+ Because it is common for projects on GitHub to use an image for the heading of
1757
+ `README.md` and that pattern is not well-supported by Markdown, HTML headings
1758
+ are also permitted by this rule. For example:
1759
+
1760
+ ```markdown
1761
+ <h1 align="center"><img src="https://placekitten.com/300/150"/></h1>
1762
+
1763
+ This is a document with a top-level HTML heading
1764
+ ```
1765
+
1766
+ In some cases, a document's title heading may be preceded by text like a table
1767
+ of contents. This is not ideal for accessibility, but can be allowed by setting
1768
+ the `allow_preamble` parameter to `true`.
1769
+
1770
+ ```markdown
1771
+ This is a document with preamble text
1772
+
1773
+ # Document Heading
1774
+ ```
1775
+
1776
+ If [YAML][YAML] front matter is present and contains a `title` property
1777
+ (commonly used with blog posts), this rule will not report a violation. To use a
1778
+ different property name in the front matter, specify the text of a [regular
1779
+ expression][RegExp] via the `front_matter_title` parameter. To disable the use
1780
+ of front matter by this rule, specify `""` for `front_matter_title`.
1781
+
1782
+ The `level` parameter can be used to change the top-level heading (ex: to `h2`)
1783
+ in cases where an `h1` is added externally.
1784
+
1785
+ Rationale: The top-level heading often acts as the title of a document. More
1786
+ information: <https://cirosantilli.com/markdown-style-guide#top-level-header>.
1787
+
1788
+ [HTML]: https://wikipedia.org/wiki/HTML
1789
+ [RegExp]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions
1790
+ [YAML]: https://wikipedia.org/wiki/YAML
1791
+
1792
+ <a name="md042"></a>
1793
+
1794
+ ## `MD042` - No empty links
1795
+
1796
+ Tags: `links`
1797
+
1798
+ Aliases: `no-empty-links`
1799
+
1800
+ This rule is triggered when an empty link is encountered:
1801
+
1802
+ ```markdown
1803
+ [an empty link]()
1804
+ ```
1805
+
1806
+ To fix the violation, provide a destination for the link:
1807
+
1808
+ ```markdown
1809
+ [a valid link](https://example.com/)
1810
+ ```
1811
+
1812
+ Empty fragments will trigger this rule:
1813
+
1814
+ ```markdown
1815
+ [an empty fragment](#)
1816
+
1817
+ [an empty link definition][empty]
1818
+
1819
+ [empty]: #
1820
+ ```
1821
+
1822
+ But non-empty fragments will not:
1823
+
1824
+ ```markdown
1825
+ [a valid fragment](#fragment)
1826
+ ```
1827
+
1828
+ Empty link definitions
1829
+
1830
+ Rationale: Empty links do not lead anywhere and therefore don't function as
1831
+ links.
1832
+
1833
+ <a name="md043"></a>
1834
+
1835
+ ## `MD043` - Required heading structure
1836
+
1837
+ Tags: `headings`
1838
+
1839
+ Aliases: `required-headings`
1840
+
1841
+ Parameters:
1842
+
1843
+ - `headings`: List of headings (`string[]|null`, default `null`)
1844
+ - `match_case`: Match case of headings (`boolean`, default `false`)
1845
+
1846
+ This rule is triggered when the headings in a file do not match the array of
1847
+ headings passed to the rule. It can be used to enforce a standard heading
1848
+ structure for a set of files.
1849
+
1850
+ To require exactly the following structure:
1851
+
1852
+ ```markdown
1853
+ # Heading
1854
+ ## Item
1855
+ ### Detail
1856
+ ```
1857
+
1858
+ Set the `headings` parameter to:
1859
+
1860
+ ```json
1861
+ [
1862
+ "# Heading",
1863
+ "## Item",
1864
+ "### Detail"
1865
+ ]
1866
+ ```
1867
+
1868
+ To allow optional headings as with the following structure:
1869
+
1870
+ ```markdown
1871
+ # Heading
1872
+ ## Item
1873
+ ### Detail (optional)
1874
+ ### Example (optional)
1875
+ ## Foot
1876
+ ### Notes (optional)
1877
+ ```
1878
+
1879
+ Use the special value `*` meaning "zero or more unspecified headings", the
1880
+ special value `+` meaning "one or more unspecified headings", or the special
1881
+ value `?` meaning "exactly one unspecified heading" and set the `headings`
1882
+ parameter to something like:
1883
+
1884
+ ```json
1885
+ [
1886
+ "# Heading",
1887
+ "## Item",
1888
+ "*",
1889
+ "## Foot",
1890
+ "+"
1891
+ ]
1892
+ ```
1893
+
1894
+ To require a heading with a specific level and text matching a specific pattern
1895
+ (for example, a one-word project name):
1896
+
1897
+ ```markdown
1898
+ # Project
1899
+ ## Description
1900
+ ## Examples
1901
+ ```
1902
+
1903
+ Replace the `#` prefix character(s) with `%` and specify a regular expression;
1904
+ the following example requires a level 1 heading with a single word made up of
1905
+ at least 4 letters:
1906
+
1907
+ ```json
1908
+ [
1909
+ "% [a-zA-Z]{4,}",
1910
+ "## Description",
1911
+ "## Examples"
1912
+ ]
1913
+ ```
1914
+
1915
+ To handle repeating heading sections (common in `CHANGELOG` files) such as the
1916
+ following:
1917
+
1918
+ ```markdown
1919
+ # Changelog
1920
+ ## 1.0.0
1921
+ ### Fixes
1922
+ ### Features
1923
+ ## 2.0.0
1924
+ ### Fixes
1925
+ ### Features
1926
+ ```
1927
+
1928
+ Use the special value `^` meaning "if the next heading does not match, loop
1929
+ back to the previous matching marker":
1930
+
1931
+ ```json
1932
+ [
1933
+ "# Changelog",
1934
+ "^",
1935
+ "%% ^\\d+\\.\\d+\\.\\d+$",
1936
+ "### Fixes",
1937
+ "### Features",
1938
+ "^"
1939
+ ]
1940
+ ```
1941
+
1942
+ The simple form shown above is enough for most scenarios; if multiple loops are
1943
+ needed, matching pairs of `^^`, `^^^`, etc. can be used in conjunction. The
1944
+ prefix `%` and the special value `?` are supported with loops, but `*` and `+`
1945
+ are not and will result in undefined behavior. To avoid infinite looping, a
1946
+ violation is reported if the rule loops more than 1,000 times.
1947
+
1948
+ When an error is detected, this rule outputs the line number of the first
1949
+ problematic heading (otherwise, it outputs the last line number of the file).
1950
+
1951
+ Note that while the `headings` parameter uses the "## Text" ATX heading style
1952
+ for simplicity, a file may use any supported heading style.
1953
+
1954
+ By default, the case of headings in the document is not required to match that
1955
+ of `headings`. To require that case match exactly, set the `match_case`
1956
+ parameter to `true`.
1957
+
1958
+ Rationale: Projects may wish to enforce a consistent document structure across
1959
+ a set of similar content.
1960
+
1961
+ <a name="md044"></a>
1962
+
1963
+ ## `MD044` - Proper names should have the correct capitalization
1964
+
1965
+ Tags: `spelling`
1966
+
1967
+ Aliases: `proper-names`
1968
+
1969
+ Parameters:
1970
+
1971
+ - `code_blocks`: Include code blocks (`boolean`, default `true`)
1972
+ - `html_elements`: Include HTML elements (`boolean`, default `true`)
1973
+ - `names`: List of proper names (`string[]`, default `[]`)
1974
+
1975
+ Fixable: Some violations can be fixed by tooling
1976
+
1977
+ This rule is triggered when any of the strings in the `names` array do not have
1978
+ the specified capitalization. It can be used to enforce a standard letter case
1979
+ for the names of projects and products.
1980
+
1981
+ For example, the language "JavaScript" is usually written with both the 'J' and
1982
+ 'S' capitalized - though sometimes the 's' or 'j' appear in lower-case. To
1983
+ enforce the proper capitalization, specify the desired letter case in the
1984
+ `names` array:
1985
+
1986
+ ```json
1987
+ [
1988
+ "JavaScript"
1989
+ ]
1990
+ ```
1991
+
1992
+ Sometimes a proper name is capitalized differently in certain contexts. In such
1993
+ cases, add both forms to the `names` array:
1994
+
1995
+ ```json
1996
+ [
1997
+ "GitHub",
1998
+ "github.com"
1999
+ ]
2000
+ ```
2001
+
2002
+ Set the `code_blocks` parameter to `false` to disable this rule for code blocks
2003
+ and spans. Set the `html_elements` parameter to `false` to disable this rule
2004
+ for HTML elements and attributes (such as when using a proper name as part of
2005
+ a path for `a`/`href` or `img`/`src`).
2006
+
2007
+ Rationale: Incorrect capitalization of proper names is usually a mistake.
2008
+
2009
+ <a name="md045"></a>
2010
+
2011
+ ## `MD045` - Images should have alternate text (alt text)
2012
+
2013
+ Tags: `accessibility`, `images`
2014
+
2015
+ Aliases: `no-alt-text`
2016
+
2017
+ This rule reports a violation when an image is missing alternate text (alt text)
2018
+ information.
2019
+
2020
+ Alternate text is commonly specified inline as:
2021
+
2022
+ ```markdown
2023
+ ![Alternate text](image.jpg)
2024
+ ```
2025
+
2026
+ Or with reference syntax as:
2027
+
2028
+ ```markdown
2029
+ ![Alternate text][ref]
2030
+
2031
+ ...
2032
+
2033
+ [ref]: image.jpg "Optional title"
2034
+ ```
2035
+
2036
+ Or with HTML as:
2037
+
2038
+ ```html
2039
+ <img src="image.jpg" alt="Alternate text" />
2040
+ ```
2041
+
2042
+ Note: If the [HTML `aria-hidden` attribute][aria-hidden] is used to hide the
2043
+ image from assistive technology, this rule does not report a violation:
2044
+
2045
+ ```html
2046
+ <img src="image.jpg" aria-hidden="true" />
2047
+ ```
2048
+
2049
+ Guidance for writing alternate text is available from the [W3C][w3c],
2050
+ [Wikipedia][wikipedia], and [other locations][phase2technology].
2051
+
2052
+ Rationale: Alternate text is important for accessibility and describes the
2053
+ content of an image for people who may not be able to see it.
2054
+
2055
+ [aria-hidden]: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-hidden
2056
+ [phase2technology]: https://www.phase2technology.com/blog/no-more-excuses
2057
+ [w3c]: https://www.w3.org/WAI/alt/
2058
+ [wikipedia]: https://wikipedia.org/wiki/Alt_attribute
2059
+
2060
+ <a name="md046"></a>
2061
+
2062
+ ## `MD046` - Code block style
2063
+
2064
+ Tags: `code`
2065
+
2066
+ Aliases: `code-block-style`
2067
+
2068
+ Parameters:
2069
+
2070
+ - `style`: Block style (`string`, default `consistent`, values `consistent` /
2071
+ `fenced` / `indented`)
2072
+
2073
+ This rule is triggered when unwanted or different code block styles are used in
2074
+ the same document.
2075
+
2076
+ In the default configuration this rule reports a violation for the following
2077
+ document:
2078
+
2079
+ <!-- markdownlint-disable code-block-style -->
2080
+
2081
+ Some text.
2082
+
2083
+ # Indented code
2084
+
2085
+ More text.
2086
+
2087
+ ```ruby
2088
+ # Fenced code
2089
+ ```
2090
+
2091
+ More text.
2092
+
2093
+ <!-- markdownlint-restore -->
2094
+
2095
+ To fix violations of this rule, use a consistent style (either indenting or code
2096
+ fences).
2097
+
2098
+ The configured code block style can be specific (`fenced`, `indented`) or can
2099
+ require all code blocks match the first code block (`consistent`).
2100
+
2101
+ Rationale: Consistent formatting makes it easier to understand a document.
2102
+
2103
+ <a name="md047"></a>
2104
+
2105
+ ## `MD047` - Files should end with a single newline character
2106
+
2107
+ Tags: `blank_lines`
2108
+
2109
+ Aliases: `single-trailing-newline`
2110
+
2111
+ Fixable: Some violations can be fixed by tooling
2112
+
2113
+ This rule is triggered when there is not a single newline character at the end
2114
+ of a file.
2115
+
2116
+ An example that triggers the rule:
2117
+
2118
+ ```markdown
2119
+ # Heading
2120
+
2121
+ This file ends without a newline.[EOF]
2122
+ ```
2123
+
2124
+ To fix the violation, add a newline character to the end of the file:
2125
+
2126
+ ```markdown
2127
+ # Heading
2128
+
2129
+ This file ends with a newline.
2130
+ [EOF]
2131
+ ```
2132
+
2133
+ Rationale: Some programs have trouble with files that do not end with a newline.
2134
+
2135
+ More information: [What's the point in adding a new line to the end of a
2136
+ file?][stack-exchange]
2137
+
2138
+ [stack-exchange]: https://unix.stackexchange.com/questions/18743/whats-the-point-in-adding-a-new-line-to-the-end-of-a-file
2139
+
2140
+ <a name="md048"></a>
2141
+
2142
+ ## `MD048` - Code fence style
2143
+
2144
+ Tags: `code`
2145
+
2146
+ Aliases: `code-fence-style`
2147
+
2148
+ Parameters:
2149
+
2150
+ - `style`: Code fence style (`string`, default `consistent`, values `backtick`
2151
+ / `consistent` / `tilde`)
2152
+
2153
+ This rule is triggered when the symbols used in the document for fenced code
2154
+ blocks do not match the configured code fence style:
2155
+
2156
+ ````markdown
2157
+ ```ruby
2158
+ # Fenced code
2159
+ ```
2160
+
2161
+ ~~~ruby
2162
+ # Fenced code
2163
+ ~~~
2164
+ ````
2165
+
2166
+ To fix this issue, use the configured code fence style throughout the
2167
+ document:
2168
+
2169
+ ````markdown
2170
+ ```ruby
2171
+ # Fenced code
2172
+ ```
2173
+
2174
+ ```ruby
2175
+ # Fenced code
2176
+ ```
2177
+ ````
2178
+
2179
+ The configured code fence style can be a specific symbol to use (`backtick`,
2180
+ `tilde`) or it can require all code fences match the first code fence
2181
+ (`consistent`).
2182
+
2183
+ Rationale: Consistent formatting makes it easier to understand a document.
2184
+
2185
+ <a name="md049"></a>
2186
+
2187
+ ## `MD049` - Emphasis style
2188
+
2189
+ Tags: `emphasis`
2190
+
2191
+ Aliases: `emphasis-style`
2192
+
2193
+ Parameters:
2194
+
2195
+ - `style`: Emphasis style (`string`, default `consistent`, values `asterisk` /
2196
+ `consistent` / `underscore`)
2197
+
2198
+ Fixable: Some violations can be fixed by tooling
2199
+
2200
+ This rule is triggered when the symbols used in the document for emphasis do not
2201
+ match the configured emphasis style:
2202
+
2203
+ ```markdown
2204
+ *Text*
2205
+ _Text_
2206
+ ```
2207
+
2208
+ To fix this issue, use the configured emphasis style throughout the document:
2209
+
2210
+ ```markdown
2211
+ *Text*
2212
+ *Text*
2213
+ ```
2214
+
2215
+ The configured emphasis style can be a specific symbol to use (`asterisk`,
2216
+ `underscore`) or can require all emphasis matches the first emphasis
2217
+ (`consistent`).
2218
+
2219
+ Note: Emphasis within a word is restricted to `asterisk` in order to avoid
2220
+ unwanted emphasis for words containing internal underscores like_this_one.
2221
+
2222
+ Rationale: Consistent formatting makes it easier to understand a document.
2223
+
2224
+ <a name="md050"></a>
2225
+
2226
+ ## `MD050` - Strong style
2227
+
2228
+ Tags: `emphasis`
2229
+
2230
+ Aliases: `strong-style`
2231
+
2232
+ Parameters:
2233
+
2234
+ - `style`: Strong style (`string`, default `consistent`, values `asterisk` /
2235
+ `consistent` / `underscore`)
2236
+
2237
+ Fixable: Some violations can be fixed by tooling
2238
+
2239
+ This rule is triggered when the symbols used in the document for strong do not
2240
+ match the configured strong style:
2241
+
2242
+ ```markdown
2243
+ **Text**
2244
+ __Text__
2245
+ ```
2246
+
2247
+ To fix this issue, use the configured strong style throughout the document:
2248
+
2249
+ ```markdown
2250
+ **Text**
2251
+ **Text**
2252
+ ```
2253
+
2254
+ The configured strong style can be a specific symbol to use (`asterisk`,
2255
+ `underscore`) or can require all strong matches the first strong (`consistent`).
2256
+
2257
+ Note: Emphasis within a word is restricted to `asterisk` in order to avoid
2258
+ unwanted emphasis for words containing internal underscores like__this__one.
2259
+
2260
+ Rationale: Consistent formatting makes it easier to understand a document.
2261
+
2262
+ <a name="md051"></a>
2263
+
2264
+ ## `MD051` - Link fragments should be valid
2265
+
2266
+ Tags: `links`
2267
+
2268
+ Aliases: `link-fragments`
2269
+
2270
+ Parameters:
2271
+
2272
+ - `ignore_case`: Ignore case of fragments (`boolean`, default `false`)
2273
+ - `ignored_pattern`: Pattern for ignoring additional fragments (`string`,
2274
+ default ``)
2275
+
2276
+ Fixable: Some violations can be fixed by tooling
2277
+
2278
+ This rule is triggered when a link fragment does not match any of the fragments
2279
+ that are automatically generated by GitHub for headings in the document:
2280
+
2281
+ ```markdown
2282
+ # Heading Name
2283
+
2284
+ [Link](#fragment)
2285
+ ```
2286
+
2287
+ To fix this issue, change the link fragment to reference an existing heading's
2288
+ generated name (see below):
2289
+
2290
+ ```markdown
2291
+ # Heading Name
2292
+
2293
+ [Link](#heading-name)
2294
+ ```
2295
+
2296
+ For consistency, this rule requires fragments to exactly match the [GitHub
2297
+ algorithm for section links][github-section-links] which (among other things)
2298
+ converts letters to lowercase. Therefore, the following is reported as a
2299
+ violation:
2300
+
2301
+ ```markdown
2302
+ # Heading Name
2303
+
2304
+ [Link](#Heading-Name)
2305
+ ```
2306
+
2307
+ To ignore case when comparing fragments with heading names, the `ignore_case`
2308
+ parameter can be set to `true`. In this configuration, the previous example is
2309
+ not reported as a violation.
2310
+
2311
+ Some platforms allow the syntax `{#named-anchor}` to be used within a heading to
2312
+ provide a specific name (consisting of only lower-case letters, numbers, `-`,
2313
+ and `_`); that is allowed by this rule:
2314
+
2315
+ ```markdown
2316
+ # Heading Name {#custom-name}
2317
+
2318
+ [Link](#custom-name)
2319
+ ```
2320
+
2321
+ Alternatively, any HTML tag with an `id` attribute or an `a` tag with a `name`
2322
+ attribute can be used to define a fragment:
2323
+
2324
+ ```markdown
2325
+ <a id="bookmark"></a>
2326
+
2327
+ [Link](#bookmark)
2328
+ ```
2329
+
2330
+ Using an `a` tag can be useful in scenarios where a heading is not appropriate
2331
+ or for control over the text of the fragment identifier.
2332
+
2333
+ [HTML links to `#top` scroll to the top of a document][html-top-fragment]. This
2334
+ rule allows that syntax (using lower-case for consistency):
2335
+
2336
+ ```markdown
2337
+ [Link](#top)
2338
+ ```
2339
+
2340
+ This rule supports the fragment syntax used by GitHub to highlight [specific
2341
+ lines/sections of a document][github-linking-to-content]. For example, this link
2342
+ to line 20:
2343
+
2344
+ ```markdown
2345
+ [Link](#L20)
2346
+ ```
2347
+
2348
+ And this link to content starting within line 19 running partly through line 21:
2349
+
2350
+ ```markdown
2351
+ [Link](#L19C5-L21C11)
2352
+ ```
2353
+
2354
+ Some Markdown generators dynamically create and insert headings when building
2355
+ documents, for example by combining a fixed prefix like `figure-` and an
2356
+ incrementing numeric counter. To ignore such generated fragments, set the
2357
+ `ignored_pattern` [regular expression][RegEx] parameter to a suitable pattern
2358
+ (e.g., `^figure-`).
2359
+
2360
+ Rationale: [GitHub section links][github-section-links] are created
2361
+ automatically for every heading when Markdown content is displayed on GitHub.
2362
+ This makes it easy to link directly to different sections within a document.
2363
+ However, section links change if headings are renamed or removed. This rule
2364
+ helps identify broken section links within a document.
2365
+
2366
+ Note: Section links are **not** part of the CommonMark specification; this rule
2367
+ enforces the GitHub algorithm. Basically:
2368
+
2369
+ 1. Convert text to lowercase
2370
+ 2. Remove punctuation characters
2371
+ 3. Convert spaces to dashes
2372
+ 4. Remove HTML comments
2373
+ 5. Append dash+incrementing integer if needed for uniqueness
2374
+ 6. [URI-encode][encodeURIComponent] the result
2375
+
2376
+ [encodeURIComponent]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
2377
+ [github-section-links]: https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#section-links
2378
+ [github-linking-to-content]: https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/creating-a-permanent-link-to-a-code-snippet#linking-to-markdown
2379
+ [html-top-fragment]: https://html.spec.whatwg.org/multipage/browsing-the-web.html#scrolling-to-a-fragment
2380
+ [RegEx]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions
2381
+
2382
+ <a name="md052"></a>
2383
+
2384
+ ## `MD052` - Reference links and images should use a label that is defined
2385
+
2386
+ Tags: `images`, `links`
2387
+
2388
+ Aliases: `reference-links-images`
2389
+
2390
+ Parameters:
2391
+
2392
+ - `ignored_labels`: Ignored link labels (`string[]`, default `["x"]`)
2393
+ - `shortcut_syntax`: Include shortcut syntax (`boolean`, default `false`)
2394
+
2395
+ Links and images in Markdown can provide the link destination or image source
2396
+ at the time of use or can define it elsewhere and use a label for reference.
2397
+ The reference format is convenient for keeping paragraph text clutter-free
2398
+ and makes it easy to reuse the same URL in multiple places.
2399
+
2400
+ There are three kinds of reference links and images:
2401
+
2402
+ ```markdown
2403
+ Full: [text][label]
2404
+ Collapsed: [label][]
2405
+ Shortcut: [label]
2406
+
2407
+ Full: ![text][image]
2408
+ Collapsed: ![image][]
2409
+ Shortcut: ![image]
2410
+
2411
+ [label]: https://example.com/label
2412
+ [image]: https://example.com/image
2413
+ ```
2414
+
2415
+ A link or image renders correctly when the corresponding label is defined, but
2416
+ displays as text with brackets when the label is not present. By default, this
2417
+ rule warns of undefined labels for "full" and "collapsed" reference syntax but
2418
+ not for "shortcut" syntax because it is ambiguous.
2419
+
2420
+ The text `[example]` could be a shortcut link or the text "example" in brackets,
2421
+ so "shortcut" syntax is ignored by default. To include "shortcut" syntax, set
2422
+ the `include_shortcut` parameter to `true`. Note that doing so produces warnings
2423
+ for *all* text in the document that *could* be a shortcut. If bracketed text is
2424
+ intentional, brackets can be escaped with the `\` character: `\[example\]`.
2425
+
2426
+ If there are link labels that are deliberately unreferenced, they can be ignored
2427
+ by setting the `ignored_labels` parameter to the list of strings to ignore. The
2428
+ default value of this parameter ignores the checkbox syntax used by
2429
+ [GitHub Flavored Markdown task list items][gfm-tasklist]:
2430
+
2431
+ ```markdown
2432
+ - [x] Checked task list item
2433
+ ```
2434
+
2435
+ [gfm-tasklist]: https://github.github.com/gfm/#task-list-items-extension-
2436
+
2437
+ <a name="md053"></a>
2438
+
2439
+ ## `MD053` - Link and image reference definitions should be needed
2440
+
2441
+ Tags: `images`, `links`
2442
+
2443
+ Aliases: `link-image-reference-definitions`
2444
+
2445
+ Parameters:
2446
+
2447
+ - `ignored_definitions`: Ignored definitions (`string[]`, default `["//"]`)
2448
+
2449
+ Fixable: Some violations can be fixed by tooling
2450
+
2451
+ Links and images in Markdown can provide the link destination or image source
2452
+ at the time of use or can use a label to reference a definition elsewhere in
2453
+ the document. The latter reference format is convenient for keeping paragraph
2454
+ text clutter-free and makes it easy to reuse the same URL in multiple places.
2455
+
2456
+ Because link and image reference definitions are located separately from
2457
+ where they are used, there are two scenarios where a definition can be
2458
+ unnecessary:
2459
+
2460
+ 1. If a label is not referenced by any link or image in a document, that
2461
+ definition is unused and can be deleted.
2462
+ 2. If a label is defined multiple times in a document, the first definition is
2463
+ used and the others can be deleted.
2464
+
2465
+ This rule considers a reference definition to be used if any link or image
2466
+ reference has the corresponding label. The "full", "collapsed", and "shortcut"
2467
+ formats are all supported.
2468
+
2469
+ If there are reference definitions that are deliberately unreferenced, they can
2470
+ be ignored by setting the `ignored_definitions` parameter to the list of strings
2471
+ to ignore. The default value of this parameter ignores the following convention
2472
+ for adding non-HTML comments to Markdown:
2473
+
2474
+ ```markdown
2475
+ [//]: # (This behaves like a comment)
2476
+ ```
2477
+
2478
+ <a name="md054"></a>
2479
+
2480
+ ## `MD054` - Link and image style
2481
+
2482
+ Tags: `images`, `links`
2483
+
2484
+ Aliases: `link-image-style`
2485
+
2486
+ Parameters:
2487
+
2488
+ - `autolink`: Allow autolinks (`boolean`, default `true`)
2489
+ - `collapsed`: Allow collapsed reference links and images (`boolean`, default
2490
+ `true`)
2491
+ - `full`: Allow full reference links and images (`boolean`, default `true`)
2492
+ - `inline`: Allow inline links and images (`boolean`, default `true`)
2493
+ - `shortcut`: Allow shortcut reference links and images (`boolean`, default
2494
+ `true`)
2495
+ - `url_inline`: Allow URLs as inline links (`boolean`, default `true`)
2496
+
2497
+ Fixable: Some violations can be fixed by tooling
2498
+
2499
+ Links and images in Markdown can provide the link destination or image source at
2500
+ the time of use or can use a label to reference a definition elsewhere in the
2501
+ document. The three reference formats are convenient for keeping paragraph text
2502
+ clutter-free and make it easy to reuse the same URL in multiple places.
2503
+
2504
+ By default, this rule allows all link/image styles.
2505
+
2506
+ Setting the `autolink` parameter to `false` disables autolinks:
2507
+
2508
+ ```markdown
2509
+ <https://example.com>
2510
+ ```
2511
+
2512
+ Setting the `inline` parameter to `false` disables inline links and images:
2513
+
2514
+ ```markdown
2515
+ [link](https://example.com)
2516
+
2517
+ ![image](https://example.com)
2518
+ ```
2519
+
2520
+ Setting the `full` parameter to `false` disables full reference links and
2521
+ images:
2522
+
2523
+ ```markdown
2524
+ [link][url]
2525
+
2526
+ ![image][url]
2527
+
2528
+ [url]: https://example.com
2529
+ ```
2530
+
2531
+ Setting the `collapsed` parameter to `false` disables collapsed reference links
2532
+ and images:
2533
+
2534
+ ```markdown
2535
+ [url][]
2536
+
2537
+ ![url][]
2538
+
2539
+ [url]: https://example.com
2540
+ ```
2541
+
2542
+ Setting the `shortcut` parameter to `false` disables shortcut reference links
2543
+ and images:
2544
+
2545
+ ```markdown
2546
+ [url]
2547
+
2548
+ ![url]
2549
+
2550
+ [url]: https://example.com
2551
+ ```
2552
+
2553
+ To fix violations of this rule, change the link or image to use an allowed
2554
+ style. This rule can automatically fix violations when a link or image can be
2555
+ converted to the `inline` style (preferred) or a link can be converted to the
2556
+ `autolink` style (which does not support images and must be an absolute URL).
2557
+ This rule does *not* fix scenarios that require converting a link or image to
2558
+ the `full`, `collapsed`, or `shortcut` reference styles because that involves
2559
+ naming the reference and determining where to insert it in the document.
2560
+
2561
+ Setting the `url_inline` parameter to `false` prevents the use of inline links
2562
+ with the same absolute URL text/destination and no title because such links can
2563
+ be converted to autolinks:
2564
+
2565
+ ```markdown
2566
+ [https://example.com](https://example.com)
2567
+ ```
2568
+
2569
+ To fix `url_inline` violations, use the simpler autolink syntax instead:
2570
+
2571
+ ```markdown
2572
+ <https://example.com>
2573
+ ```
2574
+
2575
+ Rationale: Consistent formatting makes it easier to understand a document.
2576
+ Autolinks are concise, but appear as URLs which can be long and confusing.
2577
+ Inline links and images can include descriptive text, but take up more space in
2578
+ Markdown form. Reference links and images can be easier to read and manipulate
2579
+ in Markdown form, but require a separate link reference definition.
2580
+
2581
+ <a name="md055"></a>
2582
+
2583
+ ## `MD055` - Table pipe style
2584
+
2585
+ Tags: `table`
2586
+
2587
+ Aliases: `table-pipe-style`
2588
+
2589
+ Parameters:
2590
+
2591
+ - `style`: Table pipe style (`string`, default `consistent`, values
2592
+ `consistent` / `leading_and_trailing` / `leading_only` /
2593
+ `no_leading_or_trailing` / `per_table` / `trailing_only`)
2594
+
2595
+ This rule is triggered when a [GitHub Flavored Markdown table][gfm-table-055]
2596
+ is inconsistent with its use of leading and trailing pipe characters (`|`).
2597
+
2598
+ By default (`consistent` style), the header row of the first table in a document
2599
+ is used to determine the style that is enforced for every table in the document.
2600
+ A specific style can be used instead (`leading_and_trailing`, `leading_only`,
2601
+ `no_leading_or_trailing`, `trailing_only`) to require all tables in a document
2602
+ have the same approach. The style `per_table` can be used to require the rows of
2603
+ each table use the same approach (based on its header row) while allowing tables
2604
+ in a document to differ from each other.
2605
+
2606
+ This table's header row has leading and trailing pipes, but its delimiter row is
2607
+ missing the trailing pipe and its first row of cells is missing the leading
2608
+ pipe:
2609
+
2610
+ ```markdown
2611
+ | Header | Header |
2612
+ | ------ | ------
2613
+ Cell | Cell |
2614
+ ```
2615
+
2616
+ To fix these issues, make sure there is a pipe character at the beginning and
2617
+ end of every row:
2618
+
2619
+ ```markdown
2620
+ | Header | Header |
2621
+ | ------ | ------ |
2622
+ | Cell | Cell |
2623
+ ```
2624
+
2625
+ Note that text immediately following a table (i.e., not separated by an empty
2626
+ line) is treated as part of the table (per the specification) and may also
2627
+ trigger this rule:
2628
+
2629
+ ```markdown
2630
+ | Header | Header |
2631
+ | ------ | ------ |
2632
+ | Cell | Cell |
2633
+ This text is part of the table
2634
+ ```
2635
+
2636
+ Rationale: Some parsers have difficulty with tables that are missing their
2637
+ leading or trailing pipe characters. The use of leading/trailing pipes can also
2638
+ help provide visual clarity.
2639
+
2640
+ [gfm-table-055]: https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/organizing-information-with-tables
2641
+
2642
+ <a name="md056"></a>
2643
+
2644
+ ## `MD056` - Table column count
2645
+
2646
+ Tags: `table`
2647
+
2648
+ Aliases: `table-column-count`
2649
+
2650
+ This rule is triggered when a [GitHub Flavored Markdown table][gfm-table-056]
2651
+ does not have the same number of cells in every row.
2652
+
2653
+ This table's second data row has too few cells and its third data row has too
2654
+ many cells:
2655
+
2656
+ ```markdown
2657
+ | Header | Header |
2658
+ | ------ | ------ |
2659
+ | Cell | Cell |
2660
+ | Cell |
2661
+ | Cell | Cell | Cell |
2662
+ ```
2663
+
2664
+ To fix these issues, ensure every row has the same number of cells:
2665
+
2666
+ ```markdown
2667
+ | Header | Header |
2668
+ | ------ | ------ |
2669
+ | Cell | Cell |
2670
+ | Cell | Cell |
2671
+ | Cell | Cell |
2672
+ ```
2673
+
2674
+ Note that a table's header row and its delimiter row must have the same number
2675
+ of cells or it will not be recognized as a table (per specification).
2676
+
2677
+ Rationale: Extra cells in a row are usually not shown, so their data is lost.
2678
+ Missing cells in a row create holes in the table and suggest an omission.
2679
+
2680
+ [gfm-table-056]: https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/organizing-information-with-tables
2681
+
2682
+ <a name="md058"></a>
2683
+
2684
+ ## `MD058` - Tables should be surrounded by blank lines
2685
+
2686
+ Tags: `table`
2687
+
2688
+ Aliases: `blanks-around-tables`
2689
+
2690
+ Fixable: Some violations can be fixed by tooling
2691
+
2692
+ This rule is triggered when tables are either not preceded or not followed by a
2693
+ blank line:
2694
+
2695
+ ```markdown
2696
+ Some text
2697
+ | Header | Header |
2698
+ | ------ | ------ |
2699
+ | Cell | Cell |
2700
+ > Blockquote
2701
+ ```
2702
+
2703
+ To fix violations of this rule, ensure that all tables have a blank line both
2704
+ before and after (except when the table is at the very beginning or end of the
2705
+ document):
2706
+
2707
+ ```markdown
2708
+ Some text
2709
+
2710
+ | Header | Header |
2711
+ | ------ | ------ |
2712
+ | Cell | Cell |
2713
+
2714
+ > Blockquote
2715
+ ```
2716
+
2717
+ Note that text immediately following a table (i.e., not separated by an empty
2718
+ line) is treated as part of the table (per the specification) and will not
2719
+ trigger this rule:
2720
+
2721
+ ```markdown
2722
+ | Header | Header |
2723
+ | ------ | ------ |
2724
+ | Cell | Cell |
2725
+ This text is part of the table and the next line is blank
2726
+
2727
+ Some text
2728
+ ```
2729
+
2730
+ Rationale: In addition to aesthetic reasons, some parsers will incorrectly parse
2731
+ tables that don't have blank lines before and after them.
2732
+
2733
+ <a name="md059"></a>
2734
+
2735
+ ## `MD059` - Link text should be descriptive
2736
+
2737
+ Tags: `accessibility`, `links`
2738
+
2739
+ Aliases: `descriptive-link-text`
2740
+
2741
+ Parameters:
2742
+
2743
+ - `prohibited_texts`: Prohibited link texts (`string[]`, default `["click
2744
+ here","here","link","more"]`)
2745
+
2746
+ This rule is triggered when a link has generic text like `[click here](...)` or
2747
+ `[link](...)`.
2748
+
2749
+ Link text should be descriptive and communicate the purpose of the link (e.g.,
2750
+ `[Download the budget document](...)` or `[CommonMark Specification](...)`).
2751
+ This is especially important for screen readers which sometimes present links
2752
+ without context.
2753
+
2754
+ By default, this rule prohibits a small number of common English words/phrases.
2755
+ To customize that list of words/phrases, set the `prohibited_texts` parameter to
2756
+ an `Array` of `string`s.
2757
+
2758
+ Note: For languages other than English, use the `prohibited_texts` parameter to
2759
+ customize the list for that language. It is *not* a goal for this rule to have
2760
+ translations for every language.
2761
+
2762
+ Note: This rule checks Markdown links; HTML links are ignored.
2763
+
2764
+ More information:
2765
+
2766
+ - <https://webaim.org/techniques/hypertext/>
2767
+ - <https://www.w3.org/WAI/WCAG21/Understanding/link-purpose-link-only.html>
2768
+
2769
+ <a name="md060"></a>
2770
+
2771
+ ## `MD060` - Table column style
2772
+
2773
+ Tags: `table`
2774
+
2775
+ Aliases: `table-column-style`
2776
+
2777
+ Parameters:
2778
+
2779
+ - `aligned_delimiter`: Aligned delimiter columns (`boolean`, default `false`)
2780
+ - `style`: Table column style (`string`, default `any`, values `aligned` /
2781
+ `any` / `compact` / `tight`)
2782
+
2783
+ Fixable: Some violations can be fixed by tooling
2784
+
2785
+ This rule is triggered when the column separator pipe characters (`|`) of a
2786
+ [GitHub Flavored Markdown table][gfm-table-060] are used inconsistently.
2787
+
2788
+ This rule recognizes three table column styles based on popular use.
2789
+
2790
+ Style `aligned` ensures pipe characters are vertically aligned:
2791
+
2792
+ ```markdown
2793
+ | Character | Meaning |
2794
+ | --------- | ------- |
2795
+ | Y | Yes |
2796
+ | N | No |
2797
+ ```
2798
+
2799
+ The `aligned` style ignores cell content, so the following is also valid:
2800
+
2801
+ ```markdown
2802
+ | Character | Meaning |
2803
+ |-----------|---------|
2804
+ | Y | Yes |
2805
+ | N | No |
2806
+ ```
2807
+
2808
+ Style `compact` avoids extra padding with a single space before and after cell
2809
+ content (or just a single space for cells without content):
2810
+
2811
+ ```markdown
2812
+ | Character | Meaning |
2813
+ | --- | --- |
2814
+ | Y | Yes |
2815
+ | N | No |
2816
+ ```
2817
+
2818
+ Style `tight` uses no padding at all (for cells with or without content):
2819
+
2820
+ ```markdown
2821
+ |Character|Meaning|
2822
+ |---|---|
2823
+ |Y|Yes|
2824
+ |N|No|
2825
+ ```
2826
+
2827
+ When this rule's `style` parameter is set to `aligned`, `compact`, or `tight`,
2828
+ every table must match the corresponding pattern and any violations will be
2829
+ reported. By default, or when the `any` style is used, each table is analyzed to
2830
+ see if it satisfies any supported style. If so, no violations are reported. If
2831
+ not, violations are be reported for whichever style would produce the *fewest*
2832
+ issues (i.e., whichever style is the closest match).
2833
+
2834
+ Setting the `aligned_delimiter` parameter to `true` requires pipe characters in
2835
+ the delimiter row to align with those in the header row. This can be used with
2836
+ `compact` and `tight` tables to make the header text more obvious. (It's already
2837
+ required for tables with style `aligned`.)
2838
+
2839
+ Style `compact` with `aligned_delimiter`:
2840
+
2841
+ ```markdown
2842
+ | Character | Meaning |
2843
+ | --------- | ------- |
2844
+ | Y | Yes |
2845
+ | N | No |
2846
+ ```
2847
+
2848
+ Style `tight` with `aligned_delimiter`:
2849
+
2850
+ ```markdown
2851
+ |Character|Meaning|
2852
+ |---------|-------|
2853
+ |Y|Yes|
2854
+ |N|No|
2855
+ ```
2856
+
2857
+ Violations for styles `compact` and `tight` are simple/independent and can be
2858
+ fixed automatically. However, fixing even single violations for style `aligned`
2859
+ may require modifying the entire table, and therefore are not automatic:
2860
+
2861
+ ```markdown
2862
+ |Alpha |Delta|
2863
+ |------|-----|
2864
+ |Charlie|Beta|
2865
+ ```
2866
+
2867
+ **Note**: This rule does not require leading/trailing pipe characters, so this
2868
+ is also a valid table for style `compact`:
2869
+
2870
+ ```markdown
2871
+ Character | Meaning
2872
+ --- | ---
2873
+ Y | Yes
2874
+ N | No
2875
+ ```
2876
+
2877
+ **Note**: Pipe alignment for the `aligned` style is based on visual appearance
2878
+ and not character count. Because editors typically render [emoji][emoji] and
2879
+ [CJK characters][cjk-characters] at *twice* the width of
2880
+ [Latin characters][latin-script], this rule takes that into account for tables
2881
+ using the `aligned` style. The following table is correctly formatted and will
2882
+ appear aligned in most editors and monospaced fonts:
2883
+
2884
+ <!-- markdownlint-capture -->
2885
+ <!-- markdownlint-disable extended-ascii -->
2886
+
2887
+ ```markdown
2888
+ | Response | Emoji |
2889
+ | -------- | ----- |
2890
+ | Yes | ✅ |
2891
+ | No | ❎ |
2892
+ ```
2893
+
2894
+ <!-- markdownlint-restore -->
2895
+
2896
+ Rationale: Consistent formatting makes it easier to understand a document.
2897
+
2898
+ [cjk-characters]: https://wikipedia.org/wiki/CJK_characters
2899
+ [emoji]: https://wikipedia.org/wiki/Emoji
2900
+ [gfm-table-060]: https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/organizing-information-with-tables
2901
+ [latin-script]: https://wikipedia.org/wiki/Latin_script
2902
+
2903
+ <!-- markdownlint-configure-file {
2904
+ "no-inline-html": {
2905
+ "allowed_elements": [
2906
+ "a"
2907
+ ]
2908
+ }
2909
+ } -->