@redocly/recheck 0.1.0 → 0.3.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 (595) hide show
  1. package/README.md +1023 -56
  2. package/dist/cli.js +40 -7
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/markdoc-schema.d.ts +17 -0
  5. package/dist/commands/markdoc-schema.d.ts.map +1 -0
  6. package/dist/commands/markdoc-schema.js +127 -0
  7. package/dist/commands/markdoc-schema.js.map +1 -0
  8. package/dist/commands/run.d.ts +2 -1
  9. package/dist/commands/run.d.ts.map +1 -1
  10. package/dist/commands/run.js +87 -10
  11. package/dist/commands/run.js.map +1 -1
  12. package/dist/config/load.d.ts +11 -0
  13. package/dist/config/load.d.ts.map +1 -1
  14. package/dist/config/load.js +12 -2
  15. package/dist/config/load.js.map +1 -1
  16. package/dist/config/presets/google.d.ts +3 -0
  17. package/dist/config/presets/google.d.ts.map +1 -0
  18. package/dist/config/presets/google.js +1671 -0
  19. package/dist/config/presets/google.js.map +1 -0
  20. package/dist/config/presets/inclusive-language.d.ts +3 -0
  21. package/dist/config/presets/inclusive-language.d.ts.map +1 -0
  22. package/dist/config/presets/inclusive-language.js +321 -0
  23. package/dist/config/presets/inclusive-language.js.map +1 -0
  24. package/dist/config/presets/index.d.ts +67 -0
  25. package/dist/config/presets/index.d.ts.map +1 -0
  26. package/dist/config/presets/index.js +137 -0
  27. package/dist/config/presets/index.js.map +1 -0
  28. package/dist/config/presets/markdoc.d.ts +21 -0
  29. package/dist/config/presets/markdoc.d.ts.map +1 -0
  30. package/dist/config/presets/markdoc.js +101 -0
  31. package/dist/config/presets/markdoc.js.map +1 -0
  32. package/dist/config/presets/markdown-relaxed.d.ts +3 -0
  33. package/dist/config/presets/markdown-relaxed.d.ts.map +1 -0
  34. package/dist/config/presets/markdown-relaxed.js +98 -0
  35. package/dist/config/presets/markdown-relaxed.js.map +1 -0
  36. package/dist/config/presets/markdown.d.ts +43 -0
  37. package/dist/config/presets/markdown.d.ts.map +1 -0
  38. package/dist/config/presets/markdown.js +132 -0
  39. package/dist/config/presets/markdown.js.map +1 -0
  40. package/dist/config/presets/microsoft.d.ts +3 -0
  41. package/dist/config/presets/microsoft.d.ts.map +1 -0
  42. package/dist/config/presets/microsoft.js +2268 -0
  43. package/dist/config/presets/microsoft.js.map +1 -0
  44. package/dist/config/presets/minimal.d.ts +3 -0
  45. package/dist/config/presets/minimal.d.ts.map +1 -0
  46. package/dist/config/presets/minimal.js +21 -0
  47. package/dist/config/presets/minimal.js.map +1 -0
  48. package/dist/config/presets/plain-language.d.ts +3 -0
  49. package/dist/config/presets/plain-language.d.ts.map +1 -0
  50. package/dist/config/presets/plain-language.js +351 -0
  51. package/dist/config/presets/plain-language.js.map +1 -0
  52. package/dist/config/presets/prose.d.ts +52 -0
  53. package/dist/config/presets/prose.d.ts.map +1 -0
  54. package/dist/config/presets/prose.js +138 -0
  55. package/dist/config/presets/prose.js.map +1 -0
  56. package/dist/config/schema.d.ts +128 -22
  57. package/dist/config/schema.d.ts.map +1 -1
  58. package/dist/config/schema.js +105 -21
  59. package/dist/config/schema.js.map +1 -1
  60. package/dist/config/validate.d.ts +12 -2
  61. package/dist/config/validate.d.ts.map +1 -1
  62. package/dist/config/validate.js +1200 -44
  63. package/dist/config/validate.js.map +1 -1
  64. package/dist/core/auto-fix.d.ts +8 -13
  65. package/dist/core/auto-fix.d.ts.map +1 -1
  66. package/dist/core/auto-fix.js +94 -75
  67. package/dist/core/auto-fix.js.map +1 -1
  68. package/dist/core/case-preserve.d.ts +46 -0
  69. package/dist/core/case-preserve.d.ts.map +1 -0
  70. package/dist/core/case-preserve.js +57 -0
  71. package/dist/core/case-preserve.js.map +1 -0
  72. package/dist/core/directives.d.ts +9 -0
  73. package/dist/core/directives.d.ts.map +1 -0
  74. package/dist/core/directives.js +73 -0
  75. package/dist/core/directives.js.map +1 -0
  76. package/dist/core/files.d.ts +63 -0
  77. package/dist/core/files.d.ts.map +1 -1
  78. package/dist/core/files.js +185 -0
  79. package/dist/core/files.js.map +1 -1
  80. package/dist/core/inline-code.d.ts +87 -0
  81. package/dist/core/inline-code.d.ts.map +1 -0
  82. package/dist/core/inline-code.js +104 -0
  83. package/dist/core/inline-code.js.map +1 -0
  84. package/dist/core/line-endings.d.ts +32 -0
  85. package/dist/core/line-endings.d.ts.map +1 -0
  86. package/dist/core/line-endings.js +65 -0
  87. package/dist/core/line-endings.js.map +1 -0
  88. package/dist/core/markdoc-tags.d.ts +79 -0
  89. package/dist/core/markdoc-tags.d.ts.map +1 -0
  90. package/dist/core/markdoc-tags.js +131 -0
  91. package/dist/core/markdoc-tags.js.map +1 -0
  92. package/dist/core/rule-filters.d.ts +17 -0
  93. package/dist/core/rule-filters.d.ts.map +1 -1
  94. package/dist/core/rule-filters.js +64 -0
  95. package/dist/core/rule-filters.js.map +1 -1
  96. package/dist/core/runner.d.ts +92 -3
  97. package/dist/core/runner.d.ts.map +1 -1
  98. package/dist/core/runner.js +348 -110
  99. package/dist/core/runner.js.map +1 -1
  100. package/dist/core/timing.d.ts.map +1 -1
  101. package/dist/data/markdoc-realm-schema.d.ts +3 -0
  102. package/dist/data/markdoc-realm-schema.d.ts.map +1 -0
  103. package/dist/data/markdoc-realm-schema.js +760 -0
  104. package/dist/data/markdoc-realm-schema.js.map +1 -0
  105. package/dist/data/proper-nouns.d.ts +2 -0
  106. package/dist/data/proper-nouns.d.ts.map +1 -0
  107. package/dist/data/proper-nouns.js +47 -0
  108. package/dist/data/proper-nouns.js.map +1 -0
  109. package/dist/index.d.ts +90 -0
  110. package/dist/index.d.ts.map +1 -0
  111. package/dist/index.js +152 -0
  112. package/dist/index.js.map +1 -0
  113. package/dist/metrics/formulas.d.ts +17 -0
  114. package/dist/metrics/formulas.d.ts.map +1 -0
  115. package/dist/metrics/formulas.js +70 -0
  116. package/dist/metrics/formulas.js.map +1 -0
  117. package/dist/metrics/index.d.ts +5 -0
  118. package/dist/metrics/index.d.ts.map +1 -0
  119. package/dist/metrics/index.js +3 -0
  120. package/dist/metrics/index.js.map +1 -0
  121. package/dist/metrics/statistics.d.ts +27 -0
  122. package/dist/metrics/statistics.d.ts.map +1 -0
  123. package/dist/metrics/statistics.js +56 -0
  124. package/dist/metrics/statistics.js.map +1 -0
  125. package/dist/parser/index.d.ts +18 -0
  126. package/dist/parser/index.d.ts.map +1 -0
  127. package/dist/parser/index.js +168 -0
  128. package/dist/parser/index.js.map +1 -0
  129. package/dist/parser/markdoc/extract-statics.d.ts +45 -0
  130. package/dist/parser/markdoc/extract-statics.d.ts.map +1 -0
  131. package/dist/parser/markdoc/extract-statics.js +139 -0
  132. package/dist/parser/markdoc/extract-statics.js.map +1 -0
  133. package/dist/parser/markdoc/pairing.d.ts +63 -0
  134. package/dist/parser/markdoc/pairing.d.ts.map +1 -0
  135. package/dist/parser/markdoc/pairing.js +94 -0
  136. package/dist/parser/markdoc/pairing.js.map +1 -0
  137. package/dist/parser/markdoc/schema.d.ts +85 -0
  138. package/dist/parser/markdoc/schema.d.ts.map +1 -0
  139. package/dist/parser/markdoc/schema.js +86 -0
  140. package/dist/parser/markdoc/schema.js.map +1 -0
  141. package/dist/parser/markdoc/span.d.ts +64 -0
  142. package/dist/parser/markdoc/span.d.ts.map +1 -0
  143. package/dist/parser/markdoc/span.js +729 -0
  144. package/dist/parser/markdoc/span.js.map +1 -0
  145. package/dist/parser/markdoc/structure.d.ts +28 -0
  146. package/dist/parser/markdoc/structure.d.ts.map +1 -0
  147. package/dist/parser/markdoc/structure.js +153 -0
  148. package/dist/parser/markdoc/structure.js.map +1 -0
  149. package/dist/parser/markdoc/syntax.d.ts +44 -0
  150. package/dist/parser/markdoc/syntax.d.ts.map +1 -0
  151. package/dist/parser/markdoc/syntax.js +317 -0
  152. package/dist/parser/markdoc/syntax.js.map +1 -0
  153. package/dist/parser/types.d.ts +18 -0
  154. package/dist/parser/types.d.ts.map +1 -0
  155. package/dist/parser/types.js.map +1 -0
  156. package/dist/reporter/fixes.d.ts.map +1 -1
  157. package/dist/reporter/fixes.js +22 -1
  158. package/dist/reporter/fixes.js.map +1 -1
  159. package/dist/reporter/statistics.d.ts +1 -8
  160. package/dist/reporter/statistics.d.ts.map +1 -1
  161. package/dist/reporter/statistics.js.map +1 -1
  162. package/dist/rules/registry.d.ts +15 -0
  163. package/dist/rules/registry.d.ts.map +1 -0
  164. package/dist/rules/registry.js +81 -0
  165. package/dist/rules/registry.js.map +1 -0
  166. package/dist/rules/scope/capitalization.d.ts +3 -0
  167. package/dist/rules/scope/capitalization.d.ts.map +1 -0
  168. package/dist/rules/scope/capitalization.js +163 -0
  169. package/dist/rules/scope/capitalization.js.map +1 -0
  170. package/dist/rules/scope/conditional.d.ts +3 -0
  171. package/dist/rules/scope/conditional.d.ts.map +1 -0
  172. package/dist/rules/scope/conditional.js +112 -0
  173. package/dist/rules/scope/conditional.js.map +1 -0
  174. package/dist/rules/scope/consistency.d.ts +3 -0
  175. package/dist/rules/scope/consistency.d.ts.map +1 -0
  176. package/dist/rules/scope/consistency.js +178 -0
  177. package/dist/rules/scope/consistency.js.map +1 -0
  178. package/dist/rules/scope/length.d.ts +3 -0
  179. package/dist/rules/scope/length.d.ts.map +1 -0
  180. package/dist/rules/scope/length.js +69 -0
  181. package/dist/rules/scope/length.js.map +1 -0
  182. package/dist/rules/scope/max-image-size.d.ts +3 -0
  183. package/dist/rules/scope/max-image-size.d.ts.map +1 -0
  184. package/dist/rules/scope/max-image-size.js +65 -0
  185. package/dist/rules/scope/max-image-size.js.map +1 -0
  186. package/dist/rules/scope/metric.d.ts +17 -0
  187. package/dist/rules/scope/metric.d.ts.map +1 -0
  188. package/dist/rules/scope/metric.js +216 -0
  189. package/dist/rules/scope/metric.js.map +1 -0
  190. package/dist/rules/scope/occurrence.d.ts +3 -0
  191. package/dist/rules/scope/occurrence.d.ts.map +1 -0
  192. package/dist/rules/scope/occurrence.js +48 -0
  193. package/dist/rules/scope/occurrence.js.map +1 -0
  194. package/dist/rules/scope/pattern.d.ts +3 -0
  195. package/dist/rules/scope/pattern.d.ts.map +1 -0
  196. package/dist/rules/scope/pattern.js +75 -0
  197. package/dist/rules/scope/pattern.js.map +1 -0
  198. package/dist/rules/scope/repetition.d.ts +3 -0
  199. package/dist/rules/scope/repetition.d.ts.map +1 -0
  200. package/dist/rules/scope/repetition.js +139 -0
  201. package/dist/rules/scope/repetition.js.map +1 -0
  202. package/dist/rules/scope/semantic-line-breaks.d.ts +3 -0
  203. package/dist/rules/scope/semantic-line-breaks.d.ts.map +1 -0
  204. package/dist/rules/scope/semantic-line-breaks.js +213 -0
  205. package/dist/rules/scope/semantic-line-breaks.js.map +1 -0
  206. package/dist/rules/scope/spelling.d.ts +27 -0
  207. package/dist/rules/scope/spelling.d.ts.map +1 -0
  208. package/dist/rules/scope/spelling.js +227 -0
  209. package/dist/rules/scope/spelling.js.map +1 -0
  210. package/dist/rules/scope/swap.d.ts +3 -0
  211. package/dist/rules/scope/swap.d.ts.map +1 -0
  212. package/dist/rules/scope/swap.js +149 -0
  213. package/dist/rules/scope/swap.js.map +1 -0
  214. package/dist/rules/scope/title-case.d.ts +46 -0
  215. package/dist/rules/scope/title-case.d.ts.map +1 -0
  216. package/dist/rules/scope/title-case.js +301 -0
  217. package/dist/rules/scope/title-case.js.map +1 -0
  218. package/dist/rules/token/blanks-around-fences.d.ts +3 -0
  219. package/dist/rules/token/blanks-around-fences.d.ts.map +1 -0
  220. package/dist/rules/token/blanks-around-fences.js +44 -0
  221. package/dist/rules/token/blanks-around-fences.js.map +1 -0
  222. package/dist/rules/token/blanks-around-headings.d.ts +3 -0
  223. package/dist/rules/token/blanks-around-headings.d.ts.map +1 -0
  224. package/dist/rules/token/blanks-around-headings.js +108 -0
  225. package/dist/rules/token/blanks-around-headings.js.map +1 -0
  226. package/dist/rules/token/blanks-around-lists.d.ts +3 -0
  227. package/dist/rules/token/blanks-around-lists.d.ts.map +1 -0
  228. package/dist/rules/token/blanks-around-lists.js +56 -0
  229. package/dist/rules/token/blanks-around-lists.js.map +1 -0
  230. package/dist/rules/token/blanks-around-tables.d.ts +3 -0
  231. package/dist/rules/token/blanks-around-tables.d.ts.map +1 -0
  232. package/dist/rules/token/blanks-around-tables.js +42 -0
  233. package/dist/rules/token/blanks-around-tables.js.map +1 -0
  234. package/dist/rules/token/code-block-style.d.ts +3 -0
  235. package/dist/rules/token/code-block-style.d.ts.map +1 -0
  236. package/dist/rules/token/code-block-style.js +30 -0
  237. package/dist/rules/token/code-block-style.js.map +1 -0
  238. package/dist/rules/token/code-fence-style.d.ts +3 -0
  239. package/dist/rules/token/code-fence-style.d.ts.map +1 -0
  240. package/dist/rules/token/code-fence-style.js +35 -0
  241. package/dist/rules/token/code-fence-style.js.map +1 -0
  242. package/dist/rules/token/commands-show-output.d.ts +3 -0
  243. package/dist/rules/token/commands-show-output.d.ts.map +1 -0
  244. package/dist/rules/token/commands-show-output.js +38 -0
  245. package/dist/rules/token/commands-show-output.js.map +1 -0
  246. package/dist/rules/token/descriptive-link-text.d.ts +3 -0
  247. package/dist/rules/token/descriptive-link-text.d.ts.map +1 -0
  248. package/dist/rules/token/descriptive-link-text.js +53 -0
  249. package/dist/rules/token/descriptive-link-text.js.map +1 -0
  250. package/dist/rules/token/emphasis-style.d.ts +3 -0
  251. package/dist/rules/token/emphasis-style.d.ts.map +1 -0
  252. package/dist/rules/token/emphasis-style.js +51 -0
  253. package/dist/rules/token/emphasis-style.js.map +1 -0
  254. package/dist/rules/token/fenced-code-language.d.ts +3 -0
  255. package/dist/rules/token/fenced-code-language.d.ts.map +1 -0
  256. package/dist/rules/token/fenced-code-language.js +35 -0
  257. package/dist/rules/token/fenced-code-language.js.map +1 -0
  258. package/dist/rules/token/first-line-h1.d.ts +3 -0
  259. package/dist/rules/token/first-line-h1.d.ts.map +1 -0
  260. package/dist/rules/token/first-line-h1.js +107 -0
  261. package/dist/rules/token/first-line-h1.js.map +1 -0
  262. package/dist/rules/token/heading-increment.d.ts +3 -0
  263. package/dist/rules/token/heading-increment.d.ts.map +1 -0
  264. package/dist/rules/token/heading-increment.js +27 -0
  265. package/dist/rules/token/heading-increment.js.map +1 -0
  266. package/dist/rules/token/heading-start-left.d.ts +3 -0
  267. package/dist/rules/token/heading-start-left.d.ts.map +1 -0
  268. package/dist/rules/token/heading-start-left.js +31 -0
  269. package/dist/rules/token/heading-start-left.js.map +1 -0
  270. package/dist/rules/token/heading-style.d.ts +3 -0
  271. package/dist/rules/token/heading-style.d.ts.map +1 -0
  272. package/dist/rules/token/heading-style.js +41 -0
  273. package/dist/rules/token/heading-style.js.map +1 -0
  274. package/dist/rules/token/helpers.d.ts +313 -0
  275. package/dist/rules/token/helpers.d.ts.map +1 -0
  276. package/dist/rules/token/helpers.js +746 -0
  277. package/dist/rules/token/helpers.js.map +1 -0
  278. package/dist/rules/token/hr-style.d.ts +3 -0
  279. package/dist/rules/token/hr-style.d.ts.map +1 -0
  280. package/dist/rules/token/hr-style.js +28 -0
  281. package/dist/rules/token/hr-style.js.map +1 -0
  282. package/dist/rules/token/index.d.ts +75 -0
  283. package/dist/rules/token/index.d.ts.map +1 -0
  284. package/dist/rules/token/index.js +226 -0
  285. package/dist/rules/token/index.js.map +1 -0
  286. package/dist/rules/token/line-length.d.ts +3 -0
  287. package/dist/rules/token/line-length.d.ts.map +1 -0
  288. package/dist/rules/token/line-length.js +120 -0
  289. package/dist/rules/token/line-length.js.map +1 -0
  290. package/dist/rules/token/link-fragments.d.ts +3 -0
  291. package/dist/rules/token/link-fragments.d.ts.map +1 -0
  292. package/dist/rules/token/link-fragments.js +145 -0
  293. package/dist/rules/token/link-fragments.js.map +1 -0
  294. package/dist/rules/token/link-image-reference-definitions.d.ts +3 -0
  295. package/dist/rules/token/link-image-reference-definitions.d.ts.map +1 -0
  296. package/dist/rules/token/link-image-reference-definitions.js +50 -0
  297. package/dist/rules/token/link-image-reference-definitions.js.map +1 -0
  298. package/dist/rules/token/link-image-style.d.ts +3 -0
  299. package/dist/rules/token/link-image-style.d.ts.map +1 -0
  300. package/dist/rules/token/link-image-style.js +131 -0
  301. package/dist/rules/token/link-image-style.js.map +1 -0
  302. package/dist/rules/token/list-indent.d.ts +3 -0
  303. package/dist/rules/token/list-indent.d.ts.map +1 -0
  304. package/dist/rules/token/list-indent.js +60 -0
  305. package/dist/rules/token/list-indent.js.map +1 -0
  306. package/dist/rules/token/list-length.d.ts +3 -0
  307. package/dist/rules/token/list-length.d.ts.map +1 -0
  308. package/dist/rules/token/list-length.js +55 -0
  309. package/dist/rules/token/list-length.js.map +1 -0
  310. package/dist/rules/token/list-marker-space.d.ts +3 -0
  311. package/dist/rules/token/list-marker-space.d.ts.map +1 -0
  312. package/dist/rules/token/list-marker-space.js +52 -0
  313. package/dist/rules/token/list-marker-space.js.map +1 -0
  314. package/dist/rules/token/markdoc-attributes.d.ts +3 -0
  315. package/dist/rules/token/markdoc-attributes.d.ts.map +1 -0
  316. package/dist/rules/token/markdoc-attributes.js +269 -0
  317. package/dist/rules/token/markdoc-attributes.js.map +1 -0
  318. package/dist/rules/token/markdoc-pairing.d.ts +3 -0
  319. package/dist/rules/token/markdoc-pairing.d.ts.map +1 -0
  320. package/dist/rules/token/markdoc-pairing.js +73 -0
  321. package/dist/rules/token/markdoc-pairing.js.map +1 -0
  322. package/dist/rules/token/markdoc-syntax.d.ts +3 -0
  323. package/dist/rules/token/markdoc-syntax.d.ts.map +1 -0
  324. package/dist/rules/token/markdoc-syntax.js +119 -0
  325. package/dist/rules/token/markdoc-syntax.js.map +1 -0
  326. package/dist/rules/token/markdoc-unknown-tag.d.ts +3 -0
  327. package/dist/rules/token/markdoc-unknown-tag.d.ts.map +1 -0
  328. package/dist/rules/token/markdoc-unknown-tag.js +64 -0
  329. package/dist/rules/token/markdoc-unknown-tag.js.map +1 -0
  330. package/dist/rules/token/messages.d.ts +4 -0
  331. package/dist/rules/token/messages.d.ts.map +1 -0
  332. package/dist/rules/token/messages.js +20 -0
  333. package/dist/rules/token/messages.js.map +1 -0
  334. package/dist/rules/token/no-alt-text.d.ts +3 -0
  335. package/dist/rules/token/no-alt-text.d.ts.map +1 -0
  336. package/dist/rules/token/no-alt-text.js +47 -0
  337. package/dist/rules/token/no-alt-text.js.map +1 -0
  338. package/dist/rules/token/no-bare-urls.d.ts +3 -0
  339. package/dist/rules/token/no-bare-urls.d.ts.map +1 -0
  340. package/dist/rules/token/no-bare-urls.js +88 -0
  341. package/dist/rules/token/no-bare-urls.js.map +1 -0
  342. package/dist/rules/token/no-blanks-blockquote.d.ts +3 -0
  343. package/dist/rules/token/no-blanks-blockquote.d.ts.map +1 -0
  344. package/dist/rules/token/no-blanks-blockquote.js +39 -0
  345. package/dist/rules/token/no-blanks-blockquote.js.map +1 -0
  346. package/dist/rules/token/no-duplicate-heading.d.ts +3 -0
  347. package/dist/rules/token/no-duplicate-heading.d.ts.map +1 -0
  348. package/dist/rules/token/no-duplicate-heading.js +101 -0
  349. package/dist/rules/token/no-duplicate-heading.js.map +1 -0
  350. package/dist/rules/token/no-duplicate-link-destinations.d.ts +3 -0
  351. package/dist/rules/token/no-duplicate-link-destinations.d.ts.map +1 -0
  352. package/dist/rules/token/no-duplicate-link-destinations.js +65 -0
  353. package/dist/rules/token/no-duplicate-link-destinations.js.map +1 -0
  354. package/dist/rules/token/no-emphasis-as-heading.d.ts +3 -0
  355. package/dist/rules/token/no-emphasis-as-heading.d.ts.map +1 -0
  356. package/dist/rules/token/no-emphasis-as-heading.js +44 -0
  357. package/dist/rules/token/no-emphasis-as-heading.js.map +1 -0
  358. package/dist/rules/token/no-empty-headings.d.ts +3 -0
  359. package/dist/rules/token/no-empty-headings.d.ts.map +1 -0
  360. package/dist/rules/token/no-empty-headings.js +28 -0
  361. package/dist/rules/token/no-empty-headings.js.map +1 -0
  362. package/dist/rules/token/no-empty-links.d.ts +3 -0
  363. package/dist/rules/token/no-empty-links.d.ts.map +1 -0
  364. package/dist/rules/token/no-empty-links.js +67 -0
  365. package/dist/rules/token/no-empty-links.js.map +1 -0
  366. package/dist/rules/token/no-hard-tabs.d.ts +3 -0
  367. package/dist/rules/token/no-hard-tabs.d.ts.map +1 -0
  368. package/dist/rules/token/no-hard-tabs.js +76 -0
  369. package/dist/rules/token/no-hard-tabs.js.map +1 -0
  370. package/dist/rules/token/no-inline-html.d.ts +3 -0
  371. package/dist/rules/token/no-inline-html.d.ts.map +1 -0
  372. package/dist/rules/token/no-inline-html.js +45 -0
  373. package/dist/rules/token/no-inline-html.js.map +1 -0
  374. package/dist/rules/token/no-missing-space-atx.d.ts +3 -0
  375. package/dist/rules/token/no-missing-space-atx.d.ts.map +1 -0
  376. package/dist/rules/token/no-missing-space-atx.js +36 -0
  377. package/dist/rules/token/no-missing-space-atx.js.map +1 -0
  378. package/dist/rules/token/no-missing-space-closed-atx.d.ts +3 -0
  379. package/dist/rules/token/no-missing-space-closed-atx.d.ts.map +1 -0
  380. package/dist/rules/token/no-missing-space-closed-atx.js +45 -0
  381. package/dist/rules/token/no-missing-space-closed-atx.js.map +1 -0
  382. package/dist/rules/token/no-multiple-blanks.d.ts +3 -0
  383. package/dist/rules/token/no-multiple-blanks.d.ts.map +1 -0
  384. package/dist/rules/token/no-multiple-blanks.js +35 -0
  385. package/dist/rules/token/no-multiple-blanks.js.map +1 -0
  386. package/dist/rules/token/no-multiple-space-atx.d.ts +13 -0
  387. package/dist/rules/token/no-multiple-space-atx.d.ts.map +1 -0
  388. package/dist/rules/token/no-multiple-space-atx.js +50 -0
  389. package/dist/rules/token/no-multiple-space-atx.js.map +1 -0
  390. package/dist/rules/token/no-multiple-space-blockquote.d.ts +3 -0
  391. package/dist/rules/token/no-multiple-space-blockquote.d.ts.map +1 -0
  392. package/dist/rules/token/no-multiple-space-blockquote.js +43 -0
  393. package/dist/rules/token/no-multiple-space-blockquote.js.map +1 -0
  394. package/dist/rules/token/no-multiple-space-closed-atx.d.ts +3 -0
  395. package/dist/rules/token/no-multiple-space-closed-atx.d.ts.map +1 -0
  396. package/dist/rules/token/no-multiple-space-closed-atx.js +19 -0
  397. package/dist/rules/token/no-multiple-space-closed-atx.js.map +1 -0
  398. package/dist/rules/token/no-reversed-links.d.ts +3 -0
  399. package/dist/rules/token/no-reversed-links.d.ts.map +1 -0
  400. package/dist/rules/token/no-reversed-links.js +52 -0
  401. package/dist/rules/token/no-reversed-links.js.map +1 -0
  402. package/dist/rules/token/no-space-in-code.d.ts +3 -0
  403. package/dist/rules/token/no-space-in-code.d.ts.map +1 -0
  404. package/dist/rules/token/no-space-in-code.js +75 -0
  405. package/dist/rules/token/no-space-in-code.js.map +1 -0
  406. package/dist/rules/token/no-space-in-emphasis.d.ts +3 -0
  407. package/dist/rules/token/no-space-in-emphasis.d.ts.map +1 -0
  408. package/dist/rules/token/no-space-in-emphasis.js +79 -0
  409. package/dist/rules/token/no-space-in-emphasis.js.map +1 -0
  410. package/dist/rules/token/no-space-in-links.d.ts +3 -0
  411. package/dist/rules/token/no-space-in-links.d.ts.map +1 -0
  412. package/dist/rules/token/no-space-in-links.js +48 -0
  413. package/dist/rules/token/no-space-in-links.js.map +1 -0
  414. package/dist/rules/token/no-trailing-punctuation.d.ts +3 -0
  415. package/dist/rules/token/no-trailing-punctuation.d.ts.map +1 -0
  416. package/dist/rules/token/no-trailing-punctuation.js +38 -0
  417. package/dist/rules/token/no-trailing-punctuation.js.map +1 -0
  418. package/dist/rules/token/no-trailing-spaces.d.ts +3 -0
  419. package/dist/rules/token/no-trailing-spaces.d.ts.map +1 -0
  420. package/dist/rules/token/no-trailing-spaces.js +89 -0
  421. package/dist/rules/token/no-trailing-spaces.js.map +1 -0
  422. package/dist/rules/token/ol-prefix.d.ts +3 -0
  423. package/dist/rules/token/ol-prefix.d.ts.map +1 -0
  424. package/dist/rules/token/ol-prefix.js +70 -0
  425. package/dist/rules/token/ol-prefix.js.map +1 -0
  426. package/dist/rules/token/proper-names.d.ts +3 -0
  427. package/dist/rules/token/proper-names.d.ts.map +1 -0
  428. package/dist/rules/token/proper-names.js +93 -0
  429. package/dist/rules/token/proper-names.js.map +1 -0
  430. package/dist/rules/token/reference-links-images.d.ts +3 -0
  431. package/dist/rules/token/reference-links-images.d.ts.map +1 -0
  432. package/dist/rules/token/reference-links-images.js +36 -0
  433. package/dist/rules/token/reference-links-images.js.map +1 -0
  434. package/dist/rules/token/required-headings.d.ts +3 -0
  435. package/dist/rules/token/required-headings.d.ts.map +1 -0
  436. package/dist/rules/token/required-headings.js +83 -0
  437. package/dist/rules/token/required-headings.js.map +1 -0
  438. package/dist/rules/token/single-h1.d.ts +3 -0
  439. package/dist/rules/token/single-h1.d.ts.map +1 -0
  440. package/dist/rules/token/single-h1.js +56 -0
  441. package/dist/rules/token/single-h1.js.map +1 -0
  442. package/dist/rules/token/single-trailing-newline.d.ts +3 -0
  443. package/dist/rules/token/single-trailing-newline.d.ts.map +1 -0
  444. package/dist/rules/token/single-trailing-newline.js +25 -0
  445. package/dist/rules/token/single-trailing-newline.js.map +1 -0
  446. package/dist/rules/token/strong-style.d.ts +3 -0
  447. package/dist/rules/token/strong-style.d.ts.map +1 -0
  448. package/dist/rules/token/strong-style.js +51 -0
  449. package/dist/rules/token/strong-style.js.map +1 -0
  450. package/dist/rules/token/table-column-count.d.ts +3 -0
  451. package/dist/rules/token/table-column-count.d.ts.map +1 -0
  452. package/dist/rules/token/table-column-count.js +44 -0
  453. package/dist/rules/token/table-column-count.js.map +1 -0
  454. package/dist/rules/token/table-column-style.d.ts +3 -0
  455. package/dist/rules/token/table-column-style.d.ts.map +1 -0
  456. package/dist/rules/token/table-column-style.js +179 -0
  457. package/dist/rules/token/table-column-style.js.map +1 -0
  458. package/dist/rules/token/table-pipe-style.d.ts +3 -0
  459. package/dist/rules/token/table-pipe-style.d.ts.map +1 -0
  460. package/dist/rules/token/table-pipe-style.js +54 -0
  461. package/dist/rules/token/table-pipe-style.js.map +1 -0
  462. package/dist/rules/token/ul-indent.d.ts +3 -0
  463. package/dist/rules/token/ul-indent.d.ts.map +1 -0
  464. package/dist/rules/token/ul-indent.js +72 -0
  465. package/dist/rules/token/ul-indent.js.map +1 -0
  466. package/dist/rules/token/ul-style.d.ts +3 -0
  467. package/dist/rules/token/ul-style.d.ts.map +1 -0
  468. package/dist/rules/token/ul-style.js +80 -0
  469. package/dist/rules/token/ul-style.js.map +1 -0
  470. package/dist/rules/types.d.ts +81 -0
  471. package/dist/rules/types.d.ts.map +1 -0
  472. package/dist/rules/types.js +2 -0
  473. package/dist/rules/types.js.map +1 -0
  474. package/dist/rules/utils.d.ts +29 -0
  475. package/dist/rules/utils.d.ts.map +1 -0
  476. package/dist/{assertions → rules}/utils.js +27 -0
  477. package/dist/rules/utils.js.map +1 -0
  478. package/dist/scopes/extractor.d.ts +7 -0
  479. package/dist/scopes/extractor.d.ts.map +1 -0
  480. package/dist/scopes/extractor.js +475 -0
  481. package/dist/scopes/extractor.js.map +1 -0
  482. package/dist/scopes/selector.d.ts +51 -0
  483. package/dist/scopes/selector.d.ts.map +1 -0
  484. package/dist/scopes/selector.js +121 -0
  485. package/dist/scopes/selector.js.map +1 -0
  486. package/dist/scopes/sentences.d.ts +15 -0
  487. package/dist/scopes/sentences.d.ts.map +1 -0
  488. package/dist/scopes/sentences.js +124 -0
  489. package/dist/scopes/sentences.js.map +1 -0
  490. package/dist/scopes/types.d.ts +44 -0
  491. package/dist/scopes/types.d.ts.map +1 -0
  492. package/dist/scopes/types.js +2 -0
  493. package/dist/scopes/types.js.map +1 -0
  494. package/dist/scopes/vocabulary.d.ts +16 -0
  495. package/dist/scopes/vocabulary.d.ts.map +1 -0
  496. package/dist/scopes/vocabulary.js +70 -0
  497. package/dist/scopes/vocabulary.js.map +1 -0
  498. package/dist/types/assertions.d.ts +95 -32
  499. package/dist/types/assertions.d.ts.map +1 -1
  500. package/dist/types/problems.d.ts +4 -5
  501. package/dist/types/problems.d.ts.map +1 -1
  502. package/dist/types/rules.d.ts +4 -6
  503. package/dist/types/rules.d.ts.map +1 -1
  504. package/examples/appendices/google.appendix.yaml +91 -0
  505. package/examples/appendices/inclusive-language.appendix.yaml +61 -0
  506. package/examples/appendices/microsoft.appendix.yaml +99 -0
  507. package/examples/appendices/plain-language.appendix.yaml +88 -0
  508. package/examples/google.yaml +1525 -0
  509. package/examples/inclusive-language.yaml +304 -0
  510. package/examples/microsoft.yaml +1542 -0
  511. package/examples/plain-language.yaml +325 -0
  512. package/package.json +49 -16
  513. package/presets/google/PROVENANCE.md +1022 -0
  514. package/presets/google/sources.json +192 -0
  515. package/presets/inclusive-language/PROVENANCE.md +174 -0
  516. package/presets/inclusive-language/sources.json +107 -0
  517. package/presets/microsoft/PROVENANCE.md +1555 -0
  518. package/presets/microsoft/sources.json +494 -0
  519. package/presets/plain-language/PROVENANCE.md +364 -0
  520. package/presets/plain-language/sources.json +108 -0
  521. package/dist/assertions/bullet-style.d.ts +0 -3
  522. package/dist/assertions/bullet-style.d.ts.map +0 -1
  523. package/dist/assertions/bullet-style.js +0 -60
  524. package/dist/assertions/bullet-style.js.map +0 -1
  525. package/dist/assertions/index.d.ts +0 -21
  526. package/dist/assertions/index.d.ts.map +0 -1
  527. package/dist/assertions/index.js +0 -30
  528. package/dist/assertions/index.js.map +0 -1
  529. package/dist/assertions/max-image-size.d.ts +0 -3
  530. package/dist/assertions/max-image-size.d.ts.map +0 -1
  531. package/dist/assertions/max-image-size.js +0 -73
  532. package/dist/assertions/max-image-size.js.map +0 -1
  533. package/dist/assertions/max-line-length.d.ts +0 -3
  534. package/dist/assertions/max-line-length.d.ts.map +0 -1
  535. package/dist/assertions/max-line-length.js +0 -68
  536. package/dist/assertions/max-line-length.js.map +0 -1
  537. package/dist/assertions/no-broken-fragment-links.d.ts +0 -3
  538. package/dist/assertions/no-broken-fragment-links.d.ts.map +0 -1
  539. package/dist/assertions/no-broken-fragment-links.js +0 -79
  540. package/dist/assertions/no-broken-fragment-links.js.map +0 -1
  541. package/dist/assertions/no-duplicate-headings.d.ts +0 -3
  542. package/dist/assertions/no-duplicate-headings.d.ts.map +0 -1
  543. package/dist/assertions/no-duplicate-headings.js +0 -66
  544. package/dist/assertions/no-duplicate-headings.js.map +0 -1
  545. package/dist/assertions/no-hard-tabs.d.ts +0 -3
  546. package/dist/assertions/no-hard-tabs.d.ts.map +0 -1
  547. package/dist/assertions/no-hard-tabs.js +0 -63
  548. package/dist/assertions/no-hard-tabs.js.map +0 -1
  549. package/dist/assertions/no-trailing-spaces.d.ts +0 -3
  550. package/dist/assertions/no-trailing-spaces.d.ts.map +0 -1
  551. package/dist/assertions/no-trailing-spaces.js +0 -72
  552. package/dist/assertions/no-trailing-spaces.js.map +0 -1
  553. package/dist/assertions/pattern.d.ts +0 -3
  554. package/dist/assertions/pattern.d.ts.map +0 -1
  555. package/dist/assertions/pattern.js +0 -39
  556. package/dist/assertions/pattern.js.map +0 -1
  557. package/dist/assertions/semantic-line-breaks.d.ts +0 -3
  558. package/dist/assertions/semantic-line-breaks.d.ts.map +0 -1
  559. package/dist/assertions/semantic-line-breaks.js +0 -152
  560. package/dist/assertions/semantic-line-breaks.js.map +0 -1
  561. package/dist/assertions/swap.d.ts +0 -3
  562. package/dist/assertions/swap.d.ts.map +0 -1
  563. package/dist/assertions/swap.js +0 -39
  564. package/dist/assertions/swap.js.map +0 -1
  565. package/dist/assertions/utils.d.ts +0 -8
  566. package/dist/assertions/utils.d.ts.map +0 -1
  567. package/dist/assertions/utils.js.map +0 -1
  568. package/dist/core/scope-parser.d.ts +0 -26
  569. package/dist/core/scope-parser.d.ts.map +0 -1
  570. package/dist/core/scope-parser.js +0 -110
  571. package/dist/core/scope-parser.js.map +0 -1
  572. package/dist/files.d.ts +0 -2
  573. package/dist/files.d.ts.map +0 -1
  574. package/dist/files.js +0 -39
  575. package/dist/files.js.map +0 -1
  576. package/dist/load-config.d.ts +0 -25
  577. package/dist/load-config.d.ts.map +0 -1
  578. package/dist/load-config.js +0 -104
  579. package/dist/load-config.js.map +0 -1
  580. package/dist/load.d.ts +0 -25
  581. package/dist/load.d.ts.map +0 -1
  582. package/dist/load.js +0 -112
  583. package/dist/load.js.map +0 -1
  584. package/dist/scope.d.ts +0 -26
  585. package/dist/scope.d.ts.map +0 -1
  586. package/dist/scope.js +0 -110
  587. package/dist/scope.js.map +0 -1
  588. package/dist/types.d.ts +0 -109
  589. package/dist/types.d.ts.map +0 -1
  590. package/dist/types.js.map +0 -1
  591. package/dist/validate.d.ts +0 -31
  592. package/dist/validate.d.ts.map +0 -1
  593. package/dist/validate.js +0 -154
  594. package/dist/validate.js.map +0 -1
  595. /package/dist/{types.js → parser/types.js} +0 -0
@@ -0,0 +1,1525 @@
1
+ # ==============================================================================
2
+ # recheck/google — Google developer documentation style guide, as a config
3
+ # ==============================================================================
4
+ # Source: Google developer documentation style guide
5
+ # https://developers.google.com/style
6
+ # License: CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/
7
+ # Synced: 2026-07-29
8
+ # Provenance: packages/recheck/presets/google/PROVENANCE.md (every rule's
9
+ # source page, quote, and verdict; everything considered and
10
+ # NOT shipped, and why)
11
+ #
12
+ # Rules are adapted to Recheck's own assertion vocabulary (swap, pattern,
13
+ # capitalization, length); wording is paraphrased in each rule's `message`,
14
+ # never quoted verbatim from the guide.
15
+ #
16
+ # Generated file — do not hand-edit. Regenerate with `pnpm examples:generate`
17
+ # after changing src/config/presets/google.ts or this file's appendix
18
+ # (examples/appendices/google.appendix.yaml).
19
+
20
+ # ------------------------------------------------------------------------------
21
+ # What to paste
22
+ # ------------------------------------------------------------------------------
23
+ # This is the entire adoption cost: two lines. `recheck/markdown` is the
24
+ # 53-rule markdownlint-parity structural set; `recheck/google` layers Google's
25
+ # own style opinions on top — it ships its own heading/list/table/link
26
+ # structural rules too, so the two are complementary, not duplicates.
27
+
28
+ extends:
29
+ - recheck/markdown
30
+ - recheck/google
31
+
32
+ # ------------------------------------------------------------------------------
33
+ # How to tune it
34
+ # ------------------------------------------------------------------------------
35
+ # Your own rule keys always win over the preset's (`extends` resolves
36
+ # first, then your top-level keys are merged on top, per rule key).
37
+ #
38
+ # Turn a rule off entirely:
39
+ #
40
+ # google/no-via:
41
+ # severity: off
42
+ #
43
+ # Downgrade an error to a warning:
44
+ #
45
+ # google/heading-sentence-case:
46
+ # severity: warn
47
+ #
48
+ # Silence one occurrence instead of the whole rule, with an inline HTML
49
+ # comment directive — works on any rule, from any preset:
50
+ #
51
+ # <!-- recheck-disable-next-line google/no-via -->
52
+ # Log in via the admin console.
53
+ #
54
+ # <!-- recheck-disable google/no-via -->
55
+ # ...several occurrences here are all silenced...
56
+ # <!-- recheck-enable google/no-via -->
57
+ #
58
+ # <!-- recheck-disable-file -->
59
+ #
60
+ # THE SHARP EDGE — read this before reaching for a per-term override.
61
+ # Merging happens per ASSERTION ID, not per option inside it.
62
+ # Setting:
63
+ #
64
+ # google/compound-forms:
65
+ # assertions:
66
+ # swap:
67
+ # ignoreCase: false
68
+ #
69
+ # does not just flip `ignoreCase` — it REPLACES the whole `swap` assertion
70
+ # object, silently dropping the preset's 81-entry `pairs` map along with
71
+ # it, and the config then fails validation outright:
72
+ #
73
+ # Rule "google/compound-forms": swap requires a "pairs" object mapping
74
+ # find -> replace strings
75
+ #
76
+ # (verified against this exact rule).
77
+ # So today, to reject one term out of a bundled swap/pattern rule, your
78
+ # options are: turn the whole rule off, restate its entire pairs/tokens
79
+ # yourself, or inline-disable each occurrence as shown above. A per-term
80
+ # opt-out for swap/pattern is a known follow-up, not a promise.
81
+ #
82
+ # Two assertion types DO already have a per-term escape hatch:
83
+ # `capitalization`'s `exceptions` (an array of allowed terms that COMPOSES
84
+ # with the built-in technical-proper-noun vocabulary and anything else you
85
+ # add — it does not replace either) and `spelling`'s `ignore` (spelling
86
+ # itself isn't shipped by any of these four presets — see the README's
87
+ # "Opt-in prose assertions").
88
+ # For example, to stop this preset's own sentence-case rule from flagging
89
+ # your product's name:
90
+ #
91
+ # google/heading-sentence-case:
92
+ # assertions:
93
+ # capitalization:
94
+ # match: $sentence
95
+ # exceptions: [Your Product Name]
96
+ #
97
+ # Verified: this reports zero findings on a heading using "Your Product
98
+ # Name" while every other sentence-case violation still fires normally.
99
+
100
+ # ------------------------------------------------------------------------------
101
+ # Full expansion (reference)
102
+ # ------------------------------------------------------------------------------
103
+ # This is what `extends: [recheck/google]` resolves to today: all 99 rules,
104
+ # alphabetized by rule id, generated straight from the live preset (`pnpm
105
+ # examples:generate`). You do not need to copy any of it — the extends
106
+ # block above already gives you all of this. Read it to see exactly what
107
+ # you are adopting, or as a starting point if you would rather pin or fork
108
+ # specific rules into your own config instead of extending the preset.
109
+ #
110
+ # `fix: false` on every rule below means what it says: detection-only, no
111
+ # exceptions — see "How to tune it" above and PROVENANCE.md for why.
112
+
113
+ google/abbrev-no-periods:
114
+ severity: warn
115
+ message: Don't use periods with acronyms or initialisms such as "%s" (Google).
116
+ link: https://developers.google.com/style/abbreviations
117
+ scope: summary
118
+ fix: false
119
+ assertions:
120
+ pattern:
121
+ tokens:
122
+ - \b(?:[A-Z]\.){2,}
123
+ google/ableist-figurative-terms:
124
+ severity: warn
125
+ message: Use a precise term such as "%s" instead of "%s" when describing a system or object (Google).
126
+ link: https://developers.google.com/style/word-list#crazy
127
+ scope: summary
128
+ fix: false
129
+ assertions:
130
+ swap:
131
+ pairs:
132
+ crazy: unexpected
133
+ insane: unexpected
134
+ lunatic: unexpected
135
+ bonkers: unexpected
136
+ loony: unexpected
137
+ sane: valid
138
+ sanity check: quick check
139
+ dumb down: simplify
140
+ retarded: slowed
141
+ ignoreCase: true
142
+ wordBoundary: true
143
+ google/acronym-caps-detect-only:
144
+ severity: warn
145
+ message: 'Use "%s" instead of "%s" (Google: fixed acronym/abbreviation form).'
146
+ link: https://developers.google.com/style/word-list
147
+ scope: summary
148
+ fix: false
149
+ assertions:
150
+ swap:
151
+ pairs:
152
+ UNICODE: Unicode
153
+ IPSEC: IPsec
154
+ IO: I/O
155
+ wordBoundary: true
156
+ google/acronym-forms:
157
+ severity: warn
158
+ message: 'Use "%s" instead of "%s" (Google: fixed acronym/abbreviation form).'
159
+ link: https://developers.google.com/style/word-list
160
+ scope: summary
161
+ fix: false
162
+ assertions:
163
+ swap:
164
+ pairs:
165
+ HTTPs: HTTPS
166
+ IPSec: IPsec
167
+ No-SQL: NoSQL
168
+ No SQL: NoSQL
169
+ OAuth 2(?!\.0): OAuth 2.0
170
+ OAuth2: OAuth 2.0
171
+ Oauth: OAuth 2.0
172
+ micro-services: microservices
173
+ fin-tech: fintech
174
+ adtech: ad tech
175
+ ad-tech: ad tech
176
+ wordBoundary: true
177
+ keysAreRegex: true
178
+ google/acronym-forms-proper-noun:
179
+ severity: warn
180
+ message: 'Use "%s" instead of "%s" (Google: fixed acronym/abbreviation form).'
181
+ link: https://developers.google.com/style/word-list
182
+ scope: summary
183
+ fix: false
184
+ assertions:
185
+ swap:
186
+ pairs:
187
+ I-O: I/O
188
+ FinTech: fintech
189
+ wordBoundary: true
190
+ keysAreRegex: true
191
+ google/aka-form:
192
+ severity: warn
193
+ message: Use "%s" instead of "%s" (Google).
194
+ link: https://developers.google.com/style/word-list
195
+ scope: summary
196
+ fix: false
197
+ assertions:
198
+ swap:
199
+ pairs:
200
+ aka: also known as
201
+ ignoreCase: true
202
+ wordBoundary: true
203
+ google/black-white-box-testing:
204
+ severity: warn
205
+ message: Use "%s" instead of "%s" (Google inclusive language).
206
+ link: https://developers.google.com/style/word-list#black-box
207
+ scope: summary
208
+ fix: false
209
+ assertions:
210
+ swap:
211
+ pairs:
212
+ black-box testing: opaque-box testing
213
+ black box testing: opaque-box testing
214
+ white-box testing: clear-box testing
215
+ white box testing: clear-box testing
216
+ black-box monitoring: synthetic monitoring
217
+ white-box monitoring: introspective monitoring
218
+ ignoreCase: true
219
+ wordBoundary: true
220
+ google/black-white-hat:
221
+ severity: warn
222
+ message: Use a precise term such as "%s" instead of "%s" (Google inclusive language).
223
+ link: https://developers.google.com/style/word-list#blackhat
224
+ scope: summary
225
+ fix: false
226
+ assertions:
227
+ swap:
228
+ pairs:
229
+ black hat: unethical
230
+ blackhat: unethical
231
+ white hat: ethical
232
+ whitehat: ethical
233
+ ignoreCase: true
234
+ wordBoundary: true
235
+ google/blacklist-whitelist:
236
+ severity: warn
237
+ message: Use "%s" instead of "%s" (Google inclusive language).
238
+ link: https://developers.google.com/style/word-list#blacklist
239
+ scope: summary
240
+ fix: false
241
+ assertions:
242
+ swap:
243
+ pairs:
244
+ blacklist: denylist
245
+ whitelist: allowlist
246
+ graylist: denylist
247
+ greylist: denylist
248
+ ignoreCase: true
249
+ wordBoundary: true
250
+ google/blind-figurative:
251
+ severity: warn
252
+ message: Use "ignore", "unaware of", "disregard", or "reject" instead of "%s" (Google).
253
+ link: https://developers.google.com/style/word-list#blind
254
+ scope: summary
255
+ fix: false
256
+ assertions:
257
+ pattern:
258
+ tokens:
259
+ - \bblind to\b
260
+ - \bblind eye to\b
261
+ ignoreCase: true
262
+ google/brand-capitalization:
263
+ severity: warn
264
+ message: 'Use "%s" instead of "%s" (Google: fixed brand capitalization).'
265
+ link: https://developers.google.com/style/word-list
266
+ scope: summary
267
+ fix: false
268
+ assertions:
269
+ swap:
270
+ pairs:
271
+ Google Play Services: Google Play services
272
+ Google account: Google Account
273
+ Google accounts: Google Accounts
274
+ cURL: curl
275
+ wordBoundary: true
276
+ google/brand-capitalization-proper-noun:
277
+ severity: warn
278
+ message: 'Use "%s" instead of "%s" (Google: fixed brand capitalization).'
279
+ link: https://developers.google.com/style/word-list
280
+ scope: summary
281
+ fix: false
282
+ assertions:
283
+ swap:
284
+ pairs:
285
+ markdown: Markdown
286
+ material design: Material Design
287
+ search console: Search Console
288
+ wordBoundary: true
289
+ google/chapter-terminology:
290
+ severity: warn
291
+ message: Refer to "document", "page", or "section" instead of "%s" (Google, for web docs).
292
+ link: https://developers.google.com/style/word-list#chapter
293
+ scope: summary
294
+ fix: false
295
+ assertions:
296
+ pattern:
297
+ tokens:
298
+ - \bchapters?\b
299
+ ignoreCase: true
300
+ google/colo-form:
301
+ severity: warn
302
+ message: Use "%s" instead of "%s" (Google compound-word form).
303
+ link: https://developers.google.com/style/word-list
304
+ scope: summary
305
+ fix: false
306
+ assertions:
307
+ swap:
308
+ pairs:
309
+ colo: colocate
310
+ ignoreCase: true
311
+ wordBoundary: true
312
+ google/comma-before-that:
313
+ severity: warn
314
+ message: Don't put a comma before restrictive "that" (Google).
315
+ link: https://developers.google.com/style/pronouns
316
+ scope: sentence
317
+ fix: false
318
+ assertions:
319
+ pattern:
320
+ tokens:
321
+ - ', that\b'
322
+ google/compound-forms:
323
+ severity: warn
324
+ message: Use "%s" instead of "%s" (Google compound-word form).
325
+ link: https://developers.google.com/style/word-list
326
+ scope: summary
327
+ fix: false
328
+ assertions:
329
+ swap:
330
+ pairs:
331
+ e-mail: email
332
+ E-mail: email
333
+ e-commerce: ecommerce
334
+ web page: webpage
335
+ check box: checkbox
336
+ code base: codebase
337
+ code lab: codelab
338
+ code-lab: codelab
339
+ data store: datastore
340
+ datacenter: data center
341
+ datatype: data type
342
+ file name: filename
343
+ filesystem: file system
344
+ front-end: frontend
345
+ front end: frontend
346
+ back-end: backend
347
+ back end: backend
348
+ host name: hostname
349
+ end point: endpoint
350
+ name space: namespace
351
+ nameserver: name server
352
+ life cycle: lifecycle
353
+ life-cycle: lifecycle
354
+ live stream: livestream
355
+ health care: healthcare
356
+ health-care: healthcare
357
+ on prem: on-premises
358
+ on premise: on-premises
359
+ on-premise: on-premises
360
+ read only: read-only
361
+ pre-built: prebuilt
362
+ run book: runbook
363
+ screen shot: screenshot
364
+ time stamp: timestamp
365
+ time frame: timeframe
366
+ time-to-live: time to live
367
+ tool kit: toolkit
368
+ tool-kit: toolkit
369
+ touch screen: touchscreen
370
+ user base: userbase
371
+ walk-through: walkthrough
372
+ webserver: web server
373
+ white paper: whitepaper
374
+ white space: whitespace
375
+ wild card: wildcard
376
+ statusbar: status bar
377
+ status-bar: status bar
378
+ key/value pair: key-value pair
379
+ key value pair: key-value pair
380
+ singlemost: single most
381
+ signin: sign-in
382
+ signout: sign-out
383
+ auto-healing: autohealing
384
+ auto-scaling: autoscaling
385
+ auto-populate: autopopulate
386
+ auto populate: autopopulate
387
+ auto-tagging: autotagging
388
+ pre-capture: precapture
389
+ pre-emptible: preemptible
390
+ preexisting: pre-existing
391
+ pre-recorded: prerecorded
392
+ preshared key: pre-shared key
393
+ pre-submit: presubmit
394
+ meta-feed: metafeed
395
+ meta-generation: metageneration
396
+ inter-cluster: intercluster
397
+ sub-tree: subtree
398
+ sub-zone: subzone
399
+ sub zone: subzone
400
+ subcommand: sub-command
401
+ co-locate: colocate
402
+ blue/green: blue-green
403
+ blue green: blue-green
404
+ parent—child: parent-child
405
+ long running operation: long-running operation
406
+ hard-code: hardcode
407
+ hard-coded: hardcoded
408
+ in-line: inline
409
+ Unixlike: Unix-like
410
+ Unix like: Unix-like
411
+ resource recordset: resource record set
412
+ ignoreCase: true
413
+ wordBoundary: true
414
+ google/compound-forms-proper-noun:
415
+ severity: warn
416
+ message: Use "%s" instead of "%s" (Google compound-word form).
417
+ link: https://developers.google.com/style/word-list
418
+ scope: summary
419
+ fix: false
420
+ assertions:
421
+ swap:
422
+ pairs:
423
+ datasource: data source
424
+ ignoreCase: true
425
+ wordBoundary: true
426
+ google/compound-forms-word-choice:
427
+ severity: warn
428
+ message: Use "%s" instead of "%s" (Google compound-word form).
429
+ link: https://developers.google.com/style/word-list
430
+ scope: summary
431
+ fix: false
432
+ assertions:
433
+ swap:
434
+ pairs:
435
+ data cleansing: data cleaning
436
+ transcompile: transpile
437
+ autoupdate: automatically update
438
+ pre-emptive: preemptible
439
+ noops: fully managed
440
+ NoOps: fully managed
441
+ ignoreCase: true
442
+ wordBoundary: true
443
+ google/conjunctive-adverb-comma:
444
+ severity: warn
445
+ message: Put a comma after "%s" when it opens a sentence (Google).
446
+ link: https://developers.google.com/style/commas
447
+ scope: sentence
448
+ fix: false
449
+ assertions:
450
+ pattern:
451
+ tokens:
452
+ - ^(?:Otherwise|However|Therefore) [a-z]
453
+ google/cons-and-pros:
454
+ severity: warn
455
+ message: Use "%s" instead of "%s" (Google).
456
+ link: https://developers.google.com/style/word-list#pros
457
+ scope: summary
458
+ fix: false
459
+ assertions:
460
+ swap:
461
+ pairs:
462
+ pros and cons: advantages and disadvantages
463
+ ignoreCase: true
464
+ wordBoundary: true
465
+ google/copy-and-paste:
466
+ severity: warn
467
+ message: 'Explain what to enter into a field, not how to enter it (Google): "%s"'
468
+ link: https://developers.google.com/style/word-list#Copy_and_paste
469
+ scope: summary
470
+ fix: false
471
+ assertions:
472
+ pattern:
473
+ tokens:
474
+ - \bcopy and paste\b
475
+ ignoreCase: true
476
+ google/create-a-new:
477
+ severity: warn
478
+ message: Use "%s ..." instead of "%s ..." unless distinguishing from another recently created item (Google).
479
+ link: https://developers.google.com/style/word-list#Create_a_new
480
+ scope: summary
481
+ fix: false
482
+ assertions:
483
+ swap:
484
+ pairs:
485
+ Create a new: Create a
486
+ ignoreCase: true
487
+ wordBoundary: true
488
+ google/dash-style:
489
+ severity: warn
490
+ message: Don't use an en dash or a double hyphen in place of an em dash; don't space the em dash (Google).
491
+ link: https://developers.google.com/style/dashes
492
+ scope: summary
493
+ fix: false
494
+ assertions:
495
+ pattern:
496
+ tokens:
497
+ - –
498
+ - \s--\s
499
+ - \s—\s
500
+ google/data-rate-units:
501
+ severity: warn
502
+ message: 'Use "%s" instead of "%s" (Google: by convention we don''t use the slash form).'
503
+ link: https://developers.google.com/style/word-list#GBps
504
+ scope: summary
505
+ fix: false
506
+ assertions:
507
+ swap:
508
+ pairs:
509
+ KB/s: KBps
510
+ Kb/s: Kbps
511
+ MB/s: MBps
512
+ Mb/s: Mbps
513
+ GB/s: GBps
514
+ Gb/s: Gbps
515
+ wordBoundary: true
516
+ google/date-format:
517
+ severity: warn
518
+ message: Avoid all-numeric slash dates such as "%s" (Google); spell out the month.
519
+ link: https://developers.google.com/style/dates-times
520
+ scope: summary
521
+ fix: false
522
+ assertions:
523
+ pattern:
524
+ tokens:
525
+ - \b\d{1,2}/\d{1,2}/\d{2,4}\b
526
+ google/disability-language:
527
+ severity: warn
528
+ message: Use "%s" instead of "%s" (Google inclusive documentation).
529
+ link: https://developers.google.com/style/inclusive-documentation
530
+ scope: summary
531
+ fix: false
532
+ assertions:
533
+ swap:
534
+ pairs:
535
+ the disabled: people with disabilities
536
+ a quadriplegic: a quadriplegic person
537
+ wheelchair-bound: uses a wheelchair
538
+ suffering from: experiencing
539
+ victim of: living with
540
+ ignoreCase: true
541
+ wordBoundary: true
542
+ google/dummy-variable:
543
+ severity: warn
544
+ message: 'Use "%s" instead of "%s" (Google): for a statistics sense, see the word list for alternatives.'
545
+ link: https://developers.google.com/style/word-list#dummy-variable
546
+ scope: summary
547
+ fix: false
548
+ assertions:
549
+ swap:
550
+ pairs:
551
+ dummy variable: placeholder
552
+ ignoreCase: true
553
+ wordBoundary: true
554
+ google/emphasis-style:
555
+ severity: warn
556
+ message: Use underscores for emphasis/italics, not asterisks (Google).
557
+ link: https://developers.google.com/style/text-formatting
558
+ scope: all
559
+ fix: false
560
+ assertions:
561
+ emphasis-style:
562
+ style: underscore
563
+ google/first-line-h1:
564
+ severity: error
565
+ message: 'The first line in a file should be a top-level heading (Google: heading structure).'
566
+ link: https://developers.google.com/style/headings
567
+ scope: all
568
+ fix: false
569
+ assertions:
570
+ first-line-h1: {}
571
+ google/gcp-name:
572
+ severity: warn
573
+ message: Use "%s" instead of "%s" (Google product naming).
574
+ link: https://developers.google.com/style/word-list
575
+ scope: summary
576
+ fix: false
577
+ assertions:
578
+ swap:
579
+ pairs:
580
+ GCP: Google Cloud
581
+ wordBoundary: true
582
+ google/gendered-terms:
583
+ severity: warn
584
+ message: Use non-gendered language such as "%s" instead of "%s" (Google inclusive language).
585
+ link: https://developers.google.com/style/word-list#man_hours
586
+ scope: summary
587
+ fix: false
588
+ assertions:
589
+ swap:
590
+ pairs:
591
+ you guys: everyone
592
+ guys: everyone
593
+ male adapter: plug
594
+ female adapter: socket
595
+ man hours: person hours
596
+ manhours: person hours
597
+ manmade: artificial
598
+ man made: artificial
599
+ manned: staffed
600
+ manpower: staff
601
+ man-power: staff
602
+ man-in-the-middle: on-path attacker
603
+ he/she: they
604
+ webmaster: website owner
605
+ ignoreCase: true
606
+ wordBoundary: true
607
+ google/grandfathered:
608
+ severity: warn
609
+ message: Use "%s" instead of "%s" (Google inclusive language).
610
+ link: https://developers.google.com/style/word-list#grandfathered
611
+ scope: summary
612
+ fix: false
613
+ assertions:
614
+ swap:
615
+ pairs:
616
+ grandfathered: legacy
617
+ grandfather clause: exempt
618
+ ignoreCase: true
619
+ wordBoundary: true
620
+ google/grayed-out:
621
+ severity: warn
622
+ message: Use "%s" instead of "%s" (Google inclusive language).
623
+ link: https://developers.google.com/style/word-list#grayed-out
624
+ scope: summary
625
+ fix: false
626
+ assertions:
627
+ swap:
628
+ pairs:
629
+ grayed-out: unavailable
630
+ greyed-out: unavailable
631
+ ignoreCase: true
632
+ wordBoundary: true
633
+ google/heading-increment:
634
+ severity: error
635
+ message: 'Heading levels should only increment by one level at a time (Google: heading structure).'
636
+ link: https://developers.google.com/style/headings
637
+ scope: all
638
+ fix: false
639
+ assertions:
640
+ heading-increment: {}
641
+ google/heading-sentence-case:
642
+ severity: error
643
+ message: '"%s" should use %s capitalization (Google: sentence case for headings).'
644
+ link: https://developers.google.com/style/headings
645
+ scope: heading
646
+ fix: false
647
+ assertions:
648
+ capitalization:
649
+ match: $sentence
650
+ google/in-order-to:
651
+ severity: warn
652
+ message: Prefer "%s" over "%s" unless needed to clarify meaning (Google).
653
+ link: https://developers.google.com/style/word-list#in_order_to
654
+ scope: summary
655
+ fix: false
656
+ assertions:
657
+ swap:
658
+ pairs:
659
+ in order to: to
660
+ ignoreCase: true
661
+ wordBoundary: true
662
+ google/jargon-with-people-references:
663
+ severity: warn
664
+ message: Use a precise term such as "%s" instead of "%s" (Google jargon/inclusive language).
665
+ link: https://developers.google.com/style/word-list#ninja
666
+ scope: summary
667
+ fix: false
668
+ assertions:
669
+ swap:
670
+ pairs:
671
+ gypsy: Romani
672
+ ghetto: clumsy
673
+ ninja: expert
674
+ guru: expert
675
+ sherpa: guide
676
+ dojo: training
677
+ mom test: beginner user test
678
+ grandma test: beginner user test
679
+ girlfriend test: beginner user test
680
+ monkey test: automated, random tests
681
+ brown bag: learning session
682
+ brown-bag: learning session
683
+ build cop: build monitor
684
+ build sheriff: build monitor
685
+ war room: incident-management team
686
+ warroom: incident-management team
687
+ final solution: solution
688
+ demilitarized zone: perimeter network
689
+ DMZ: perimeter network
690
+ denigrate: disparage
691
+ sexy: elegant
692
+ nuke: remove
693
+ voodoo: mysterious
694
+ first-class citizen: higher-order value
695
+ first class citizen: higher-order value
696
+ ignoreCase: true
697
+ wordBoundary: true
698
+ google/keyboard-keys:
699
+ severity: warn
700
+ message: Spell out modifier keys (Control, Command) instead of "%s" (Google).
701
+ link: https://developers.google.com/style/ui-elements
702
+ scope: summary
703
+ fix: false
704
+ assertions:
705
+ pattern:
706
+ tokens:
707
+ - \bctrl\b
708
+ - \bcmd\b
709
+ - ⌘
710
+ ignoreCase: true
711
+ google/leverage:
712
+ severity: warn
713
+ message: 'Avoid "%s" if you mean "use", "build on", or "take advantage of" (Google): "%s"'
714
+ link: https://developers.google.com/style/word-list#leverage
715
+ scope: summary
716
+ fix: false
717
+ assertions:
718
+ swap:
719
+ pairs:
720
+ leverage: use
721
+ leveraging: using
722
+ leveraged: used
723
+ ignoreCase: true
724
+ wordBoundary: true
725
+ google/link-intro-about:
726
+ severity: warn
727
+ message: 'Use "%s" instead of "%s" (Google: use "about", not "on").'
728
+ link: https://developers.google.com/style/cross-references
729
+ scope: summary
730
+ fix: false
731
+ assertions:
732
+ swap:
733
+ pairs:
734
+ for more information on: for more information about
735
+ more details on: more details about
736
+ ignoreCase: true
737
+ wordBoundary: true
738
+ google/link-punctuation:
739
+ severity: warn
740
+ message: Don't put link text in quotation marks (Google).
741
+ link: https://developers.google.com/style/cross-references
742
+ scope: link
743
+ fix: false
744
+ assertions:
745
+ pattern:
746
+ tokens:
747
+ - ^["“].*["”]$
748
+ google/list-item-capital:
749
+ severity: error
750
+ message: '"%s" should use %s capitalization (Google: start list items with a capital letter).'
751
+ link: https://developers.google.com/style/lists
752
+ scope: list-item
753
+ fix: false
754
+ assertions:
755
+ capitalization:
756
+ match: $sentence
757
+ google/list-length:
758
+ severity: warn
759
+ message: List has %s item(s); a single item usually reads better as a plain sentence (Google).
760
+ link: https://developers.google.com/style/lists
761
+ scope: all
762
+ fix: false
763
+ assertions:
764
+ list-length:
765
+ min: 2
766
+ google/master-slave:
767
+ severity: warn
768
+ message: Avoid "%s"; use "worker" or "replica" instead (Google).
769
+ link: https://developers.google.com/style/word-list#slave
770
+ scope: summary
771
+ fix: false
772
+ assertions:
773
+ swap:
774
+ pairs:
775
+ slave: worker
776
+ ignoreCase: true
777
+ wordBoundary: true
778
+ google/neither-nor:
779
+ severity: warn
780
+ message: Write "neither A nor B", not "neither A or B" (Google).
781
+ link: https://developers.google.com/style/word-list#neither
782
+ scope: sentence
783
+ fix: false
784
+ assertions:
785
+ pattern:
786
+ tokens:
787
+ - \bneither\b(?:(?!\bnor\b)[\s\S])*?\bor\b
788
+ google/no-alt-text:
789
+ severity: error
790
+ message: 'Every image needs alt text (Google: accessibility).'
791
+ link: https://developers.google.com/style/accessibility
792
+ scope: all
793
+ fix: false
794
+ assertions:
795
+ no-alt-text: {}
796
+ google/no-ampersand:
797
+ severity: warn
798
+ message: Don't use "&" as a conjunction or shorthand for "and" (Google).
799
+ link: https://developers.google.com/style/text-formatting
800
+ scope: summary
801
+ fix: false
802
+ assertions:
803
+ pattern:
804
+ tokens:
805
+ - \s&\s
806
+ google/no-and-or:
807
+ severity: warn
808
+ message: Avoid "and/or" except where space is limited, such as in tables (Google).
809
+ link: https://developers.google.com/style/slashes
810
+ scope: summary
811
+ fix: false
812
+ assertions:
813
+ pattern:
814
+ tokens:
815
+ - \band/or\b
816
+ ignoreCase: true
817
+ google/no-casing-style-names:
818
+ severity: warn
819
+ message: Don't use a casing style name such as "%s"; describe the naming convention instead (Google).
820
+ link: https://developers.google.com/style/capitalization
821
+ scope: summary
822
+ fix: false
823
+ assertions:
824
+ pattern:
825
+ tokens:
826
+ - \bcamel[\s-]?case\b
827
+ - \bsnake[\s-]?case\b
828
+ ignoreCase: true
829
+ google/no-click-on:
830
+ severity: warn
831
+ message: Use "%s" instead of "%s" (Google).
832
+ link: https://developers.google.com/style/word-list#click
833
+ scope: summary
834
+ fix: false
835
+ assertions:
836
+ swap:
837
+ pairs:
838
+ click on: click
839
+ ignoreCase: true
840
+ wordBoundary: true
841
+ google/no-code-in-heading:
842
+ severity: warn
843
+ message: Avoid code items in headings (Google); rephrase in plain words.
844
+ link: https://developers.google.com/style/headings
845
+ scope: heading
846
+ fix: false
847
+ assertions:
848
+ pattern:
849
+ tokens:
850
+ - '`[^`]+`'
851
+ includeCode: true
852
+ google/no-duplicate-heading:
853
+ severity: error
854
+ message: 'Headings should be unique so readers can jump between sections (Google: heading structure).'
855
+ link: https://developers.google.com/style/headings
856
+ scope: all
857
+ fix: false
858
+ assertions:
859
+ no-duplicate-heading: {}
860
+ google/no-emphasis-as-heading:
861
+ severity: error
862
+ message: 'Tag headings using heading elements, not bold/italic text (Google: accessibility).'
863
+ link: https://developers.google.com/style/accessibility
864
+ scope: all
865
+ fix: false
866
+ assertions:
867
+ no-emphasis-as-heading: {}
868
+ google/no-empty-headings:
869
+ severity: error
870
+ message: Don't use empty headings; make sure headings are followed by content (Google).
871
+ link: https://developers.google.com/style/headings
872
+ scope: all
873
+ fix: false
874
+ assertions:
875
+ no-empty-headings: {}
876
+ google/no-hover:
877
+ severity: warn
878
+ message: Use "hold the pointer over" instead of "%s" (Google).
879
+ link: https://developers.google.com/style/word-list#hover
880
+ scope: summary
881
+ fix: false
882
+ assertions:
883
+ pattern:
884
+ tokens:
885
+ - \bhover(?:s|ing|ed)?\b
886
+ ignoreCase: true
887
+ google/no-inflected-code:
888
+ severity: warn
889
+ message: 'Don''t inflect the name of a code element (Google): "%s"'
890
+ link: https://developers.google.com/style/code-in-text
891
+ scope: summary
892
+ fix: false
893
+ assertions:
894
+ pattern:
895
+ tokens:
896
+ - '`[^`]+`''s\b'
897
+ - '`[^`]+`s\b'
898
+ includeCode: true
899
+ google/no-internet-slang:
900
+ severity: warn
901
+ message: Avoid the internet-slang abbreviation "%s"; use "%s" instead (Google).
902
+ link: https://developers.google.com/style/abbreviations
903
+ scope: summary
904
+ fix: false
905
+ assertions:
906
+ swap:
907
+ pairs:
908
+ tl;dr: To summarize
909
+ ymmv: Your results might vary
910
+ RTFM: For more information, see...
911
+ ignoreCase: true
912
+ wordBoundary: true
913
+ google/no-latinisms:
914
+ severity: warn
915
+ message: Use "%s" instead of "%s" (Google).
916
+ link: https://developers.google.com/style/word-list
917
+ scope: summary
918
+ fix: false
919
+ assertions:
920
+ swap:
921
+ pairs:
922
+ \bi\.e\.: that is
923
+ \be\.g\.: for example
924
+ ignoreCase: true
925
+ wordBoundary: false
926
+ keysAreRegex: true
927
+ google/no-latinisms-plain:
928
+ severity: warn
929
+ message: Use "%s" instead of "%s" (Google).
930
+ link: https://developers.google.com/style/word-list
931
+ scope: summary
932
+ fix: false
933
+ assertions:
934
+ swap:
935
+ pairs:
936
+ vice versa: the other way around
937
+ ignoreCase: true
938
+ wordBoundary: true
939
+ google/no-lets:
940
+ severity: warn
941
+ message: '"%s": avoid if at all possible (Google).'
942
+ link: https://developers.google.com/style/word-list#lets
943
+ scope: summary
944
+ fix: false
945
+ assertions:
946
+ pattern:
947
+ tokens:
948
+ - \blet's\b
949
+ ignoreCase: true
950
+ google/no-link-in-heading:
951
+ severity: error
952
+ message: Don't put links in headings (Google); move the link into the following paragraph.
953
+ link: https://developers.google.com/style/headings
954
+ scope: heading
955
+ fix: false
956
+ assertions:
957
+ pattern:
958
+ tokens:
959
+ - \[[^\]]*\]\([^)]*\)
960
+ google/no-merged-cells:
961
+ severity: error
962
+ message: Don't merge table cells with colspan/rowspan (Google).
963
+ link: https://developers.google.com/style/accessibility
964
+ scope: all
965
+ fix: false
966
+ assertions:
967
+ pattern:
968
+ tokens:
969
+ - \bcolspan\s*=
970
+ - \browspan\s*=
971
+ ignoreCase: true
972
+ google/no-numbered-headings:
973
+ severity: warn
974
+ message: Don't use numbers in headings to indicate a sequence (Google).
975
+ link: https://developers.google.com/style/headings
976
+ scope: heading
977
+ fix: false
978
+ assertions:
979
+ pattern:
980
+ tokens:
981
+ - ^\d+[.)]\s
982
+ - ^Step\s+\d+\b
983
+ - ^Part\s+\d+\b
984
+ ignoreCase: true
985
+ google/no-please:
986
+ severity: warn
987
+ message: '"%s": only use when asking for permission or forgiveness, not in the normal course of instructions (Google).'
988
+ link: https://developers.google.com/style/word-list#please
989
+ scope: summary
990
+ fix: false
991
+ assertions:
992
+ pattern:
993
+ tokens:
994
+ - \bplease\b
995
+ ignoreCase: true
996
+ google/no-please-note:
997
+ severity: warn
998
+ message: '%sGoogle''s style guide says not to use the phrase "%s"; remove it.'
999
+ link: https://developers.google.com/style/word-list#please
1000
+ scope: summary
1001
+ fix: false
1002
+ assertions:
1003
+ swap:
1004
+ pairs:
1005
+ please note: ''
1006
+ ignoreCase: true
1007
+ wordBoundary: true
1008
+ google/no-run-the-following-command:
1009
+ severity: warn
1010
+ message: Focus on what the command does instead of "%s" (Google).
1011
+ link: https://developers.google.com/style/procedures
1012
+ scope: summary
1013
+ fix: false
1014
+ assertions:
1015
+ pattern:
1016
+ tokens:
1017
+ - \brun the following command\b
1018
+ ignoreCase: true
1019
+ google/no-slash-abbrev:
1020
+ severity: warn
1021
+ message: Use "%s" instead of the slash abbreviation "%s" (Google).
1022
+ link: https://developers.google.com/style/slashes
1023
+ scope: summary
1024
+ fix: false
1025
+ assertions:
1026
+ swap:
1027
+ pairs:
1028
+ \bc/o(?![A-Za-z]): care of
1029
+ \bw/(?![A-Za-z]): with
1030
+ ignoreCase: true
1031
+ wordBoundary: false
1032
+ keysAreRegex: true
1033
+ google/no-target-blank:
1034
+ severity: warn
1035
+ message: Don't force links to open in a new tab or window (Google).
1036
+ link: https://developers.google.com/style/cross-references
1037
+ scope: all
1038
+ fix: false
1039
+ assertions:
1040
+ pattern:
1041
+ tokens:
1042
+ - target\s*=\s*["']_blank["']
1043
+ google/no-timeless-phrases:
1044
+ severity: warn
1045
+ message: '"%s" is implied by the existence of the documentation itself; consider removing it (Google).'
1046
+ link: https://developers.google.com/style/timeless-documentation
1047
+ scope: summary
1048
+ fix: false
1049
+ assertions:
1050
+ pattern:
1051
+ tokens:
1052
+ - \bas of this writing\b
1053
+ - \bat present\b
1054
+ - \bpresently\b
1055
+ - \bdoes not yet\b
1056
+ - \bcurrently\b
1057
+ ignoreCase: true
1058
+ google/no-toggle-verb:
1059
+ severity: warn
1060
+ message: 'Describe the action instead of using "toggle" as a verb (Google): "%s"'
1061
+ link: https://developers.google.com/style/ui-elements
1062
+ scope: summary
1063
+ fix: false
1064
+ assertions:
1065
+ pattern:
1066
+ tokens:
1067
+ - \btoggle(?:d|s)?\s+(?:the|this|that|a|an)\b
1068
+ - \bto toggle\b
1069
+ ignoreCase: true
1070
+ google/no-trailing-punctuation:
1071
+ severity: error
1072
+ message: Don't end headings with periods (Google).
1073
+ link: https://developers.google.com/style/periods
1074
+ scope: all
1075
+ fix: false
1076
+ assertions:
1077
+ no-trailing-punctuation: {}
1078
+ google/no-triple-contractions:
1079
+ severity: warn
1080
+ message: Don't use three-word contractions such as "%s" (Google).
1081
+ link: https://developers.google.com/style/contractions
1082
+ scope: summary
1083
+ fix: false
1084
+ assertions:
1085
+ pattern:
1086
+ tokens:
1087
+ - \bmightn't've\b
1088
+ - \bwouldn't've\b
1089
+ - \bcouldn't've\b
1090
+ - \bshouldn't've\b
1091
+ ignoreCase: true
1092
+ google/no-uncheck:
1093
+ severity: warn
1094
+ message: Use "%s" instead of "%s" for checkboxes (Google).
1095
+ link: https://developers.google.com/style/word-list#uncheck
1096
+ scope: summary
1097
+ fix: false
1098
+ assertions:
1099
+ swap:
1100
+ pairs:
1101
+ uncheck: clear
1102
+ ignoreCase: true
1103
+ wordBoundary: true
1104
+ google/no-underline:
1105
+ severity: warn
1106
+ message: Reserve underlining for link text (Google).
1107
+ link: https://developers.google.com/style/text-formatting
1108
+ scope: all
1109
+ fix: false
1110
+ assertions:
1111
+ pattern:
1112
+ tokens:
1113
+ - <u>
1114
+ ignoreCase: true
1115
+ google/no-url-as-link-text:
1116
+ severity: warn
1117
+ message: Don't use a URL as link text (Google); use a descriptive phrase instead.
1118
+ link: https://developers.google.com/style/cross-references
1119
+ scope: link
1120
+ fix: false
1121
+ assertions:
1122
+ pattern:
1123
+ tokens:
1124
+ - ^https?://
1125
+ google/no-via:
1126
+ severity: warn
1127
+ message: '"%s": avoid — Google''s word list says not to use it; rephrase (e.g. "using", "through").'
1128
+ link: https://developers.google.com/style/word-list#via
1129
+ scope: summary
1130
+ fix: false
1131
+ assertions:
1132
+ pattern:
1133
+ tokens:
1134
+ - \bvia\b
1135
+ ignoreCase: true
1136
+ google/number-format:
1137
+ severity: warn
1138
+ message: 'Number formatting: "%s" doesn''t match Google''s stated convention.'
1139
+ link: https://developers.google.com/style/numbers
1140
+ scope: summary
1141
+ fix: false
1142
+ assertions:
1143
+ pattern:
1144
+ tokens:
1145
+ - \d\s%
1146
+ - (?<![\d.])\.\d
1147
+ - \d+ x \d+
1148
+ - \bfrom\s+\d+-\d+\b
1149
+ google/performant:
1150
+ severity: warn
1151
+ message: Avoid "%s"; use a more precise term (Google).
1152
+ link: https://developers.google.com/style/word-list#performant
1153
+ scope: summary
1154
+ fix: false
1155
+ assertions:
1156
+ pattern:
1157
+ tokens:
1158
+ - \bperformant\b
1159
+ ignoreCase: true
1160
+ google/plain-language-swaps:
1161
+ severity: warn
1162
+ message: 'Prefer "%s" over "%s" (Google: plain language).'
1163
+ link: https://developers.google.com/style/word-list
1164
+ scope: summary
1165
+ fix: false
1166
+ assertions:
1167
+ swap:
1168
+ pairs:
1169
+ allows you to: lets you
1170
+ enables you to: lets you
1171
+ comprise: consist of
1172
+ comprised of: consist of
1173
+ desire: want
1174
+ desired: wanted
1175
+ wish: want
1176
+ learnings: knowledge
1177
+ agnostic: platform-independent
1178
+ ignoreCase: true
1179
+ wordBoundary: true
1180
+ google/product-names:
1181
+ severity: warn
1182
+ message: Use "%s" instead of "%s" (Google product naming).
1183
+ link: https://developers.google.com/style/word-list
1184
+ scope: summary
1185
+ fix: false
1186
+ assertions:
1187
+ swap:
1188
+ pairs:
1189
+ Cloud Platform: Google Cloud
1190
+ (?<![Gg][Oo][Oo][Gg][Ll][Ee]\s+)Cloud console: Google Cloud console
1191
+ Developers Console: Google Cloud console
1192
+ Google Cloud SDK: Cloud SDK
1193
+ API explorer: APIs Explorer
1194
+ API Explorer: APIs Explorer
1195
+ developer key: API key
1196
+ dev key: API key
1197
+ API Console key: API key
1198
+ account name: username
1199
+ curated roles: predefined roles
1200
+ network IP address: internal IP address
1201
+ MIME type: media type
1202
+ interconnect type: connection type
1203
+ peer zone: peering zone
1204
+ Android device: Android-powered device
1205
+ Android devices: Android-powered devices
1206
+ wordBoundary: true
1207
+ keysAreRegex: true
1208
+ google/rfc-spacing:
1209
+ severity: warn
1210
+ message: 'Use a space between RFC and the number, e.g. "RFC 2318" (Google): "%s"'
1211
+ link: https://developers.google.com/style/word-list#RFC
1212
+ scope: summary
1213
+ fix: false
1214
+ assertions:
1215
+ pattern:
1216
+ tokens:
1217
+ - \bRFC\d+\b
1218
+ google/scroll-to:
1219
+ severity: warn
1220
+ message: Prefer "%s" over "%s" (Google).
1221
+ link: https://developers.google.com/style/word-list#scroll
1222
+ scope: summary
1223
+ fix: false
1224
+ assertions:
1225
+ swap:
1226
+ pairs:
1227
+ scroll to: go to
1228
+ ignoreCase: true
1229
+ wordBoundary: true
1230
+ google/second-person:
1231
+ severity: warn
1232
+ message: Use second person ("you"/"your") instead of "%s", unless referring to the organization itself (Google).
1233
+ link: https://developers.google.com/style/person
1234
+ scope: summary
1235
+ fix: false
1236
+ assertions:
1237
+ pattern:
1238
+ tokens:
1239
+ - \b(?:We|we|Our|our|Us|us)\b
1240
+ google/self-reference-terms:
1241
+ severity: warn
1242
+ message: Use "this document" instead of "%s" when referring to the current document (Google).
1243
+ link: https://developers.google.com/style/word-list#documentation
1244
+ scope: summary
1245
+ fix: false
1246
+ assertions:
1247
+ pattern:
1248
+ tokens:
1249
+ - \bthis article\b
1250
+ - \bthis topic\b
1251
+ - \bthis doc\b
1252
+ - \bthis page\b
1253
+ ignoreCase: true
1254
+ google/sentence-length:
1255
+ severity: error
1256
+ message: Sentence is %s %s long; Google recommends fewer than 26 words (max %s).
1257
+ link: https://developers.google.com/style/accessibility
1258
+ scope: sentence
1259
+ fix: false
1260
+ assertions:
1261
+ length:
1262
+ unit: words
1263
+ max: 25
1264
+ google/sha1-form:
1265
+ severity: warn
1266
+ message: 'Use "%s" instead of "%s" (Google: fixed acronym/abbreviation form).'
1267
+ link: https://developers.google.com/style/word-list
1268
+ scope: summary
1269
+ fix: false
1270
+ assertions:
1271
+ swap:
1272
+ pairs:
1273
+ (?<!-)\bSHA1\b: SHA-1
1274
+ wordBoundary: false
1275
+ keysAreRegex: true
1276
+ google/single-h1:
1277
+ severity: error
1278
+ message: 'Only use a level-1 heading once on a page (Google: heading structure).'
1279
+ link: https://developers.google.com/style/headings
1280
+ scope: all
1281
+ fix: false
1282
+ assertions:
1283
+ single-h1: {}
1284
+ google/single-space-sentences:
1285
+ severity: warn
1286
+ message: Leave only one space between sentences (Google).
1287
+ link: https://developers.google.com/style/periods
1288
+ scope: summary
1289
+ fix: false
1290
+ assertions:
1291
+ pattern:
1292
+ tokens:
1293
+ - \. +\S
1294
+ google/spell-out-ordinals:
1295
+ severity: warn
1296
+ message: Spell out ordinal numbers; avoid "%s" (Google).
1297
+ link: https://developers.google.com/style/numbers
1298
+ scope: summary
1299
+ fix: false
1300
+ assertions:
1301
+ pattern:
1302
+ tokens:
1303
+ - \b\d+(?:st|nd|rd|th)\b
1304
+ google/strong-style:
1305
+ severity: warn
1306
+ message: Use double asterisks for bold, not underscores (Google).
1307
+ link: https://developers.google.com/style/text-formatting
1308
+ scope: all
1309
+ fix: false
1310
+ assertions:
1311
+ strong-style:
1312
+ style: asterisk
1313
+ google/technical-jargon-precision:
1314
+ severity: warn
1315
+ message: 'Use a precise term such as "%s" instead of "%s" (Google: technical-jargon precision, not people).'
1316
+ link: https://developers.google.com/style/word-list#fat
1317
+ scope: summary
1318
+ fix: false
1319
+ assertions:
1320
+ swap:
1321
+ pairs:
1322
+ fat client: full-featured client
1323
+ fat connection: high-capacity network connection
1324
+ chubby: overextended
1325
+ ignoreCase: true
1326
+ wordBoundary: true
1327
+ google/time-format:
1328
+ severity: warn
1329
+ message: '"%s": use all-caps AM/PM with a space before it, and drop :00 on round hours (Google).'
1330
+ link: https://developers.google.com/style/word-list#AM,_PM
1331
+ scope: summary
1332
+ fix: false
1333
+ assertions:
1334
+ pattern:
1335
+ tokens:
1336
+ - \d\s?[ap]\.m\.
1337
+ - \d(?:am|pm)\b
1338
+ - \d(?:AM|PM)\b
1339
+ - \b\d{1,2}:00\s?(?:AM|PM|am|pm)\b
1340
+ google/ui-element-quotes:
1341
+ severity: warn
1342
+ message: 'Don''t put UI element names in quotation marks; use bold instead (Google): "%s"'
1343
+ link: https://developers.google.com/style/ui-elements
1344
+ scope: summary
1345
+ fix: false
1346
+ assertions:
1347
+ pattern:
1348
+ tokens:
1349
+ - '"[A-Z][a-zA-Z ]*"\s+(?:button|tab|menu|checkbox|option|link|field)\b'
1350
+ google/unsighted-visually-challenged:
1351
+ severity: warn
1352
+ message: Use "%s" instead of "%s" (Google inclusive language).
1353
+ link: https://developers.google.com/style/word-list#unsighted
1354
+ scope: summary
1355
+ fix: false
1356
+ assertions:
1357
+ swap:
1358
+ pairs:
1359
+ unsighted: person who is blind
1360
+ visually challenged: person who is visually impaired
1361
+ ignoreCase: true
1362
+ wordBoundary: true
1363
+ google/us-abbreviation:
1364
+ severity: warn
1365
+ message: 'Use "%s" instead of "%s" (Google: US is OK as an abbreviation for United States).'
1366
+ link: https://developers.google.com/style/word-list#US
1367
+ scope: summary
1368
+ fix: false
1369
+ assertions:
1370
+ swap:
1371
+ pairs:
1372
+ U.S.A.: US
1373
+ U.S.: US
1374
+ wordBoundary: false
1375
+ google/use-contractions:
1376
+ severity: warn
1377
+ message: Use "%s" instead of "%s" (Google recommends negation contractions).
1378
+ link: https://developers.google.com/style/contractions
1379
+ scope: summary
1380
+ fix: false
1381
+ assertions:
1382
+ swap:
1383
+ pairs:
1384
+ is not: isn't
1385
+ are not: aren't
1386
+ do not: don't
1387
+ does not: doesn't
1388
+ did not: didn't
1389
+ cannot: can't
1390
+ will not: won't
1391
+ have not: haven't
1392
+ has not: hasn't
1393
+ had not: hadn't
1394
+ should not: shouldn't
1395
+ would not: wouldn't
1396
+ could not: couldn't
1397
+ ignoreCase: true
1398
+ wordBoundary: true
1399
+ google/utilize:
1400
+ severity: warn
1401
+ message: Use "use" instead of "%s" unless referring to the quantity of a resource used (Google).
1402
+ link: https://developers.google.com/style/word-list#utilize
1403
+ scope: summary
1404
+ fix: false
1405
+ assertions:
1406
+ pattern:
1407
+ tokens:
1408
+ - \butiliz(?:e|es|ed|ing|ation)\b
1409
+ ignoreCase: true
1410
+ google/vague-link-text:
1411
+ severity: warn
1412
+ message: Avoid vague link text such as "%s"; describe the destination (Google).
1413
+ link: https://developers.google.com/style/cross-references
1414
+ scope: link
1415
+ fix: false
1416
+ assertions:
1417
+ pattern:
1418
+ tokens:
1419
+ - \b(?:this document|this article|this page|this topic|this doc|click here)\b
1420
+ ignoreCase: true
1421
+ google/vs-versus:
1422
+ severity: warn
1423
+ message: Use "%s" instead of "%s" (Google).
1424
+ link: https://developers.google.com/style/word-list
1425
+ scope: summary
1426
+ fix: false
1427
+ assertions:
1428
+ swap:
1429
+ pairs:
1430
+ \bvs\.: versus
1431
+ ignoreCase: true
1432
+ wordBoundary: false
1433
+ keysAreRegex: true
1434
+
1435
+ # ==============================================================================
1436
+ # Appendix — candidates NOT shipped by recheck/google (hand-maintained)
1437
+ # ==============================================================================
1438
+ # This file is appended verbatim to the generated example above by
1439
+ # `pnpm examples:generate` (see scripts/generate-examples.mjs). Editing it
1440
+ # makes examples/google.yaml stale until you regenerate — the drift test's
1441
+ # failure message says so, so this doesn't read as a generator bug.
1442
+ #
1443
+ # Full detail, every candidate, and why: packages/recheck/presets/google/PROVENANCE.md
1444
+ #
1445
+ # ------------------------------------------------------------------------------
1446
+ # NOISY — real, guide-confirmed content, judged too broad to enforce
1447
+ # mechanically. Shown here as the rule it WOULD be if shipped, commented out,
1448
+ # so you can see the shape being avoided rather than just a name.
1449
+ # ------------------------------------------------------------------------------
1450
+
1451
+ # NOISY: a heading starting with an "-ing" word would also flag ordinary
1452
+ # tech-noun headings used as topics, not verb-form imperatives (Networking,
1453
+ # Logging, Caching, Monitoring, Testing) — Google names only two exceptions
1454
+ # (Billing, Pricing), itself evidence this needs more context than a
1455
+ # heading's first word.
1456
+ # google/no-gerund-headings:
1457
+ # severity: warn
1458
+ # scope: heading
1459
+ # message: 'Avoid starting a heading with a gerund (Google).'
1460
+ # assertions:
1461
+ # pattern:
1462
+ # ignoreCase: true
1463
+ # tokens: ['^\w*ing\b']
1464
+
1465
+ # NOISY: table cells often legitimately contain short labels, proper nouns,
1466
+ # or numeric/code values that don't fit sentence-case cleanly.
1467
+ # google/table-sentence-case:
1468
+ # severity: warn
1469
+ # scope: table.cell
1470
+ # message: 'Use sentence case for table cells (Google).'
1471
+ # assertions:
1472
+ # capitalization:
1473
+ # match: $sentence
1474
+
1475
+ # NOISY: slashes appear constantly in dates, paths, fractions, and URLs — a
1476
+ # blind "avoid slashes" pattern would flag nearly all of them.
1477
+ # google/no-slashes-general:
1478
+ # severity: warn
1479
+ # message: 'Avoid using slashes, except in code (Google).'
1480
+ # assertions:
1481
+ # pattern:
1482
+ # tokens: ['(?<!\/)\/(?!\/)']
1483
+
1484
+ # NOISY: confirmed guide content ("don't put code in quotes or angle
1485
+ # brackets"), but the draft that fed this preset already flagged both as
1486
+ # NOISY and they were never re-litigated — no safe anchor was found that
1487
+ # doesn't also match ordinary quoted/angle-bracketed prose unrelated to code.
1488
+ # google/no-quotes-around-code:
1489
+ # severity: warn
1490
+ # message: "Don't wrap code terms in quotation marks (Google)."
1491
+ # assertions:
1492
+ # pattern:
1493
+ # tokens: ['"`[^`]+`"']
1494
+ # google/no-angle-brackets-around-code:
1495
+ # severity: warn
1496
+ # message: "Don't wrap code terms in angle brackets (Google)."
1497
+ # assertions:
1498
+ # pattern:
1499
+ # tokens: ['<`[^`]+`>']
1500
+
1501
+ # ------------------------------------------------------------------------------
1502
+ # NEEDS HUMAN REVIEW — real guide content with no safe mechanical detection
1503
+ # (NOT-ENFORCEABLE). Recheck cannot check these; review them yourself:
1504
+ # ------------------------------------------------------------------------------
1505
+ # [ ] "Optional:" prefix on genuinely optional sections (requires knowing
1506
+ # whether a section is actually optional)
1507
+ # [ ] Text before a colon must be a complete sentence
1508
+ # [ ] Oxford comma (missing-comma detection needs real clause parsing)
1509
+ # [ ] Acronyms used as verbs ("ping the server") — needs POS tagging
1510
+ # [ ] Spell out an abbreviation on first mention (needs unbounded
1511
+ # first-mention tracking across the document)
1512
+ # [ ] Avoid linking the same destination from different link text (the
1513
+ # guide's own exceptions — different section, long page, multiple
1514
+ # entry points — need judgment a token rule can't apply)
1515
+ # [ ] External link icon (a rendered visual/CSS concern, not markdown text)
1516
+ # [ ] Drop "..." when quoting a UI element name (risks over- and
1517
+ # under-firing with a regex)
1518
+ # [ ] Directional language (above/below/right-hand side) as a spatial UI
1519
+ # reference vs. its equally common non-directional use
1520
+ # [ ] "A link isn't a button" — requires knowing what a referenced UI
1521
+ # element actually is
1522
+ # [ ] Generic he/him/his/she/her — requires knowing whether a pronoun
1523
+ # names a specific person or is used generically
1524
+ # [ ] Active voice, metaphor avoidance, and the "what belongs in code
1525
+ # font" table — all require holistic judgment about content/structure