chaffjs 0.20.0 → 0.22.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 (762) hide show
  1. package/README.md +7 -5
  2. package/dist/api.d.ts +16 -1
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js.map +1 -1
  5. package/dist/cli-text.d.ts +2 -0
  6. package/dist/cli-text.d.ts.map +1 -1
  7. package/dist/cli-text.js +18 -5
  8. package/dist/cli-text.js.map +1 -1
  9. package/dist/cli.d.ts.map +1 -1
  10. package/dist/cli.js +8 -11
  11. package/dist/cli.js.map +1 -1
  12. package/dist/command-help.d.ts +7 -0
  13. package/dist/command-help.d.ts.map +1 -0
  14. package/dist/command-help.js +18 -0
  15. package/dist/command-help.js.map +1 -0
  16. package/dist/commands/eval.js +2 -2
  17. package/dist/commands/eval.js.map +1 -1
  18. package/dist/commands/fix-plan.d.ts.map +1 -1
  19. package/dist/commands/fix-plan.js +11 -1
  20. package/dist/commands/fix-plan.js.map +1 -1
  21. package/dist/commands/help.d.ts +4 -0
  22. package/dist/commands/help.d.ts.map +1 -0
  23. package/dist/commands/help.js +7 -0
  24. package/dist/commands/help.js.map +1 -0
  25. package/dist/commands/init-command.d.ts +4 -0
  26. package/dist/commands/init-command.d.ts.map +1 -0
  27. package/dist/commands/init-command.js +15 -0
  28. package/dist/commands/init-command.js.map +1 -0
  29. package/dist/commands/plugin-init.d.ts +20 -0
  30. package/dist/commands/plugin-init.d.ts.map +1 -0
  31. package/dist/commands/plugin-init.js +129 -0
  32. package/dist/commands/plugin-init.js.map +1 -0
  33. package/dist/commands/plugin-test.d.ts +11 -0
  34. package/dist/commands/plugin-test.d.ts.map +1 -0
  35. package/dist/commands/plugin-test.js +81 -0
  36. package/dist/commands/plugin-test.js.map +1 -0
  37. package/dist/config/load.d.ts +2 -0
  38. package/dist/config/load.d.ts.map +1 -1
  39. package/dist/config/load.js +1 -0
  40. package/dist/config/load.js.map +1 -1
  41. package/dist/config/option-problems.js +2 -2
  42. package/dist/config/option-problems.js.map +1 -1
  43. package/dist/config/rule-problems.js +2 -2
  44. package/dist/config/rule-problems.js.map +1 -1
  45. package/dist/custom/checked.d.ts +9 -0
  46. package/dist/custom/checked.d.ts.map +1 -0
  47. package/dist/custom/checked.js +3 -0
  48. package/dist/custom/checked.js.map +1 -0
  49. package/dist/custom/dsl-fields.d.ts +27 -0
  50. package/dist/custom/dsl-fields.d.ts.map +1 -0
  51. package/dist/custom/dsl-fields.js +86 -0
  52. package/dist/custom/dsl-fields.js.map +1 -0
  53. package/dist/custom/load.d.ts.map +1 -1
  54. package/dist/custom/load.js +2 -0
  55. package/dist/custom/load.js.map +1 -1
  56. package/dist/custom/parse.d.ts +14 -3
  57. package/dist/custom/parse.d.ts.map +1 -1
  58. package/dist/custom/parse.js +44 -40
  59. package/dist/custom/parse.js.map +1 -1
  60. package/dist/custom/problems.d.ts.map +1 -1
  61. package/dist/custom/problems.js +10 -1
  62. package/dist/custom/problems.js.map +1 -1
  63. package/dist/detectors/amount-for-count.d.ts +21 -0
  64. package/dist/detectors/amount-for-count.d.ts.map +1 -0
  65. package/dist/detectors/amount-for-count.js +55 -0
  66. package/dist/detectors/amount-for-count.js.map +1 -0
  67. package/dist/detectors/blank-structure.d.ts.map +1 -1
  68. package/dist/detectors/blank-structure.js +6 -4
  69. package/dist/detectors/blank-structure.js.map +1 -1
  70. package/dist/detectors/clause-shape.d.ts +22 -0
  71. package/dist/detectors/clause-shape.d.ts.map +1 -0
  72. package/dist/detectors/clause-shape.js +149 -0
  73. package/dist/detectors/clause-shape.js.map +1 -0
  74. package/dist/detectors/code-fences.d.ts +34 -0
  75. package/dist/detectors/code-fences.d.ts.map +1 -0
  76. package/dist/detectors/code-fences.js +100 -0
  77. package/dist/detectors/code-fences.js.map +1 -0
  78. package/dist/detectors/cross-definitions.d.ts +4 -0
  79. package/dist/detectors/cross-definitions.d.ts.map +1 -0
  80. package/dist/detectors/cross-definitions.js +43 -0
  81. package/dist/detectors/cross-definitions.js.map +1 -0
  82. package/dist/detectors/cross-facts.d.ts +4 -0
  83. package/dist/detectors/cross-facts.d.ts.map +1 -0
  84. package/dist/detectors/cross-facts.js +53 -0
  85. package/dist/detectors/cross-facts.js.map +1 -0
  86. package/dist/detectors/cross-registry/cross-doc-duplicate-definition.d.ts +3 -0
  87. package/dist/detectors/cross-registry/cross-doc-duplicate-definition.d.ts.map +1 -0
  88. package/dist/detectors/cross-registry/cross-doc-duplicate-definition.js +3 -0
  89. package/dist/detectors/cross-registry/cross-doc-duplicate-definition.js.map +1 -0
  90. package/dist/detectors/cross-registry/cross-doc-fact-conflict.d.ts +3 -0
  91. package/dist/detectors/cross-registry/cross-doc-fact-conflict.d.ts.map +1 -0
  92. package/dist/detectors/cross-registry/cross-doc-fact-conflict.js +3 -0
  93. package/dist/detectors/cross-registry/cross-doc-fact-conflict.js.map +1 -0
  94. package/dist/detectors/currency-notation.d.ts +29 -0
  95. package/dist/detectors/currency-notation.d.ts.map +1 -0
  96. package/dist/detectors/currency-notation.js +58 -0
  97. package/dist/detectors/currency-notation.js.map +1 -0
  98. package/dist/detectors/custom.d.ts.map +1 -1
  99. package/dist/detectors/custom.js +4 -1
  100. package/dist/detectors/custom.js.map +1 -1
  101. package/dist/detectors/dangling-opener.d.ts +14 -0
  102. package/dist/detectors/dangling-opener.d.ts.map +1 -0
  103. package/dist/detectors/dangling-opener.js +55 -0
  104. package/dist/detectors/dangling-opener.js.map +1 -0
  105. package/dist/detectors/defined-term-form.d.ts +25 -0
  106. package/dist/detectors/defined-term-form.d.ts.map +1 -0
  107. package/dist/detectors/defined-term-form.js +170 -0
  108. package/dist/detectors/defined-term-form.js.map +1 -0
  109. package/dist/detectors/email-letter.d.ts +46 -0
  110. package/dist/detectors/email-letter.d.ts.map +1 -0
  111. package/dist/detectors/email-letter.js +234 -0
  112. package/dist/detectors/email-letter.js.map +1 -0
  113. package/dist/detectors/footnote-mismatch.d.ts +11 -0
  114. package/dist/detectors/footnote-mismatch.d.ts.map +1 -0
  115. package/dist/detectors/footnote-mismatch.js +55 -0
  116. package/dist/detectors/footnote-mismatch.js.map +1 -0
  117. package/dist/detectors/form-minority.d.ts +13 -0
  118. package/dist/detectors/form-minority.d.ts.map +1 -0
  119. package/dist/detectors/form-minority.js +19 -0
  120. package/dist/detectors/form-minority.js.map +1 -0
  121. package/dist/detectors/heading-end-mark.d.ts +10 -0
  122. package/dist/detectors/heading-end-mark.d.ts.map +1 -0
  123. package/dist/detectors/heading-end-mark.js +59 -0
  124. package/dist/detectors/heading-end-mark.js.map +1 -0
  125. package/dist/detectors/impossible-date.d.ts +20 -0
  126. package/dist/detectors/impossible-date.d.ts.map +1 -0
  127. package/dist/detectors/impossible-date.js +105 -0
  128. package/dist/detectors/impossible-date.js.map +1 -0
  129. package/dist/detectors/impossible-time.d.ts +18 -0
  130. package/dist/detectors/impossible-time.d.ts.map +1 -0
  131. package/dist/detectors/impossible-time.js +116 -0
  132. package/dist/detectors/impossible-time.js.map +1 -0
  133. package/dist/detectors/link-shape.d.ts +11 -0
  134. package/dist/detectors/link-shape.d.ts.map +1 -0
  135. package/dist/detectors/link-shape.js +56 -0
  136. package/dist/detectors/link-shape.js.map +1 -0
  137. package/dist/detectors/list-marker.d.ts +7 -0
  138. package/dist/detectors/list-marker.d.ts.map +1 -0
  139. package/dist/detectors/list-marker.js +50 -0
  140. package/dist/detectors/list-marker.js.map +1 -0
  141. package/dist/detectors/mark-shape.d.ts +53 -0
  142. package/dist/detectors/mark-shape.d.ts.map +1 -0
  143. package/dist/detectors/mark-shape.js +160 -0
  144. package/dist/detectors/mark-shape.js.map +1 -0
  145. package/dist/detectors/markdown-slip.d.ts +19 -0
  146. package/dist/detectors/markdown-slip.d.ts.map +1 -0
  147. package/dist/detectors/markdown-slip.js +122 -0
  148. package/dist/detectors/markdown-slip.js.map +1 -0
  149. package/dist/detectors/numeral-opener.d.ts +10 -0
  150. package/dist/detectors/numeral-opener.d.ts.map +1 -0
  151. package/dist/detectors/numeral-opener.js +65 -0
  152. package/dist/detectors/numeral-opener.js.map +1 -0
  153. package/dist/detectors/ordinal-suffix.d.ts +12 -0
  154. package/dist/detectors/ordinal-suffix.d.ts.map +1 -0
  155. package/dist/detectors/ordinal-suffix.js +33 -0
  156. package/dist/detectors/ordinal-suffix.js.map +1 -0
  157. package/dist/detectors/range-notation.d.ts +15 -0
  158. package/dist/detectors/range-notation.d.ts.map +1 -0
  159. package/dist/detectors/range-notation.js +58 -0
  160. package/dist/detectors/range-notation.js.map +1 -0
  161. package/dist/detectors/registry/adverb-polarity.d.ts +3 -0
  162. package/dist/detectors/registry/adverb-polarity.d.ts.map +1 -0
  163. package/dist/detectors/registry/adverb-polarity.js +3 -0
  164. package/dist/detectors/registry/adverb-polarity.js.map +1 -0
  165. package/dist/detectors/registry/amount-for-count.d.ts +3 -0
  166. package/dist/detectors/registry/amount-for-count.d.ts.map +1 -0
  167. package/dist/detectors/registry/amount-for-count.js +3 -0
  168. package/dist/detectors/registry/amount-for-count.js.map +1 -0
  169. package/dist/detectors/registry/attachment-missing.d.ts +3 -0
  170. package/dist/detectors/registry/attachment-missing.d.ts.map +1 -0
  171. package/dist/detectors/registry/attachment-missing.js +3 -0
  172. package/dist/detectors/registry/attachment-missing.js.map +1 -0
  173. package/dist/detectors/registry/bare-url-mix.d.ts +3 -0
  174. package/dist/detectors/registry/bare-url-mix.d.ts.map +1 -0
  175. package/dist/detectors/registry/bare-url-mix.js +3 -0
  176. package/dist/detectors/registry/bare-url-mix.js.map +1 -0
  177. package/dist/detectors/registry/caps-shouting.d.ts +3 -0
  178. package/dist/detectors/registry/caps-shouting.d.ts.map +1 -0
  179. package/dist/detectors/registry/caps-shouting.js +3 -0
  180. package/dist/detectors/registry/caps-shouting.js.map +1 -0
  181. package/dist/detectors/registry/code-fence-language.d.ts +3 -0
  182. package/dist/detectors/registry/code-fence-language.d.ts.map +1 -0
  183. package/dist/detectors/registry/code-fence-language.js +3 -0
  184. package/dist/detectors/registry/code-fence-language.js.map +1 -0
  185. package/dist/detectors/registry/currency-notation.d.ts +3 -0
  186. package/dist/detectors/registry/currency-notation.d.ts.map +1 -0
  187. package/dist/detectors/registry/currency-notation.js +3 -0
  188. package/dist/detectors/registry/currency-notation.js.map +1 -0
  189. package/dist/detectors/registry/dangling-opener.d.ts +3 -0
  190. package/dist/detectors/registry/dangling-opener.d.ts.map +1 -0
  191. package/dist/detectors/registry/dangling-opener.js +3 -0
  192. package/dist/detectors/registry/dangling-opener.js.map +1 -0
  193. package/dist/detectors/registry/defined-name-repeated.d.ts +3 -0
  194. package/dist/detectors/registry/defined-name-repeated.d.ts.map +1 -0
  195. package/dist/detectors/registry/defined-name-repeated.js +3 -0
  196. package/dist/detectors/registry/defined-name-repeated.js.map +1 -0
  197. package/dist/detectors/registry/defined-term-form.d.ts +3 -0
  198. package/dist/detectors/registry/defined-term-form.d.ts.map +1 -0
  199. package/dist/detectors/registry/defined-term-form.js +3 -0
  200. package/dist/detectors/registry/defined-term-form.js.map +1 -0
  201. package/dist/detectors/registry/email-frame.d.ts +3 -0
  202. package/dist/detectors/registry/email-frame.d.ts.map +1 -0
  203. package/dist/detectors/registry/email-frame.js +3 -0
  204. package/dist/detectors/registry/email-frame.js.map +1 -0
  205. package/dist/detectors/registry/email-subject.d.ts +3 -0
  206. package/dist/detectors/registry/email-subject.d.ts.map +1 -0
  207. package/dist/detectors/registry/email-subject.js +3 -0
  208. package/dist/detectors/registry/email-subject.js.map +1 -0
  209. package/dist/detectors/registry/ending-run.d.ts +3 -0
  210. package/dist/detectors/registry/ending-run.d.ts.map +1 -0
  211. package/dist/detectors/registry/ending-run.js +3 -0
  212. package/dist/detectors/registry/ending-run.js.map +1 -0
  213. package/dist/detectors/registry/footnote-mismatch.d.ts +3 -0
  214. package/dist/detectors/registry/footnote-mismatch.d.ts.map +1 -0
  215. package/dist/detectors/registry/footnote-mismatch.js +3 -0
  216. package/dist/detectors/registry/footnote-mismatch.js.map +1 -0
  217. package/dist/detectors/registry/heading-command.d.ts +3 -0
  218. package/dist/detectors/registry/heading-command.d.ts.map +1 -0
  219. package/dist/detectors/registry/heading-command.js +3 -0
  220. package/dist/detectors/registry/heading-command.js.map +1 -0
  221. package/dist/detectors/registry/heading-end-punctuation.d.ts +3 -0
  222. package/dist/detectors/registry/heading-end-punctuation.d.ts.map +1 -0
  223. package/dist/detectors/registry/heading-end-punctuation.js +3 -0
  224. package/dist/detectors/registry/heading-end-punctuation.js.map +1 -0
  225. package/dist/detectors/registry/hyphen-dash.d.ts +3 -0
  226. package/dist/detectors/registry/hyphen-dash.d.ts.map +1 -0
  227. package/dist/detectors/registry/hyphen-dash.js +3 -0
  228. package/dist/detectors/registry/hyphen-dash.js.map +1 -0
  229. package/dist/detectors/registry/image-file-name-alt.d.ts +3 -0
  230. package/dist/detectors/registry/image-file-name-alt.d.ts.map +1 -0
  231. package/dist/detectors/registry/image-file-name-alt.js +3 -0
  232. package/dist/detectors/registry/image-file-name-alt.js.map +1 -0
  233. package/dist/detectors/registry/impossible-date.d.ts +3 -0
  234. package/dist/detectors/registry/impossible-date.d.ts.map +1 -0
  235. package/dist/detectors/registry/impossible-date.js +3 -0
  236. package/dist/detectors/registry/impossible-date.js.map +1 -0
  237. package/dist/detectors/registry/impossible-time.d.ts +3 -0
  238. package/dist/detectors/registry/impossible-time.d.ts.map +1 -0
  239. package/dist/detectors/registry/impossible-time.js +3 -0
  240. package/dist/detectors/registry/impossible-time.js.map +1 -0
  241. package/dist/detectors/registry/latin-abbreviation.d.ts +3 -0
  242. package/dist/detectors/registry/latin-abbreviation.d.ts.map +1 -0
  243. package/dist/detectors/registry/latin-abbreviation.js +3 -0
  244. package/dist/detectors/registry/latin-abbreviation.js.map +1 -0
  245. package/dist/detectors/registry/link-text-url-mismatch.d.ts +3 -0
  246. package/dist/detectors/registry/link-text-url-mismatch.d.ts.map +1 -0
  247. package/dist/detectors/registry/link-text-url-mismatch.js +3 -0
  248. package/dist/detectors/registry/link-text-url-mismatch.js.map +1 -0
  249. package/dist/detectors/registry/list-marker.d.ts +3 -0
  250. package/dist/detectors/registry/list-marker.d.ts.map +1 -0
  251. package/dist/detectors/registry/list-marker.js +3 -0
  252. package/dist/detectors/registry/list-marker.js.map +1 -0
  253. package/dist/detectors/registry/mark-consistency.d.ts +3 -0
  254. package/dist/detectors/registry/mark-consistency.d.ts.map +1 -0
  255. package/dist/detectors/registry/mark-consistency.js +3 -0
  256. package/dist/detectors/registry/mark-consistency.js.map +1 -0
  257. package/dist/detectors/registry/numeral-opener.d.ts +3 -0
  258. package/dist/detectors/registry/numeral-opener.d.ts.map +1 -0
  259. package/dist/detectors/registry/numeral-opener.js +3 -0
  260. package/dist/detectors/registry/numeral-opener.js.map +1 -0
  261. package/dist/detectors/registry/ordinal-suffix.d.ts +3 -0
  262. package/dist/detectors/registry/ordinal-suffix.d.ts.map +1 -0
  263. package/dist/detectors/registry/ordinal-suffix.js +3 -0
  264. package/dist/detectors/registry/ordinal-suffix.js.map +1 -0
  265. package/dist/detectors/registry/origin-particle.d.ts +3 -0
  266. package/dist/detectors/registry/origin-particle.d.ts.map +1 -0
  267. package/dist/detectors/registry/origin-particle.js +3 -0
  268. package/dist/detectors/registry/origin-particle.js.map +1 -0
  269. package/dist/detectors/registry/range-notation.d.ts +3 -0
  270. package/dist/detectors/registry/range-notation.d.ts.map +1 -0
  271. package/dist/detectors/registry/range-notation.js +3 -0
  272. package/dist/detectors/registry/range-notation.js.map +1 -0
  273. package/dist/detectors/registry/relative-pronoun-mix.d.ts +3 -0
  274. package/dist/detectors/registry/relative-pronoun-mix.d.ts.map +1 -0
  275. package/dist/detectors/registry/relative-pronoun-mix.js +3 -0
  276. package/dist/detectors/registry/relative-pronoun-mix.js.map +1 -0
  277. package/dist/detectors/registry/request-without-deadline.d.ts +3 -0
  278. package/dist/detectors/registry/request-without-deadline.d.ts.map +1 -0
  279. package/dist/detectors/registry/request-without-deadline.js +3 -0
  280. package/dist/detectors/registry/request-without-deadline.js.map +1 -0
  281. package/dist/detectors/registry/sentence-spacing.d.ts +3 -0
  282. package/dist/detectors/registry/sentence-spacing.d.ts.map +1 -0
  283. package/dist/detectors/registry/sentence-spacing.js +3 -0
  284. package/dist/detectors/registry/sentence-spacing.js.map +1 -0
  285. package/dist/detectors/registry/share-over-hundred.d.ts +3 -0
  286. package/dist/detectors/registry/share-over-hundred.d.ts.map +1 -0
  287. package/dist/detectors/registry/share-over-hundred.js +3 -0
  288. package/dist/detectors/registry/share-over-hundred.js.map +1 -0
  289. package/dist/detectors/registry/shell-prompt.d.ts +3 -0
  290. package/dist/detectors/registry/shell-prompt.d.ts.map +1 -0
  291. package/dist/detectors/registry/shell-prompt.js +3 -0
  292. package/dist/detectors/registry/shell-prompt.js.map +1 -0
  293. package/dist/detectors/registry/step-reference.d.ts +3 -0
  294. package/dist/detectors/registry/step-reference.d.ts.map +1 -0
  295. package/dist/detectors/registry/step-reference.js +3 -0
  296. package/dist/detectors/registry/step-reference.js.map +1 -0
  297. package/dist/detectors/registry/step-statement.d.ts +3 -0
  298. package/dist/detectors/registry/step-statement.d.ts.map +1 -0
  299. package/dist/detectors/registry/step-statement.js +3 -0
  300. package/dist/detectors/registry/step-statement.js.map +1 -0
  301. package/dist/detectors/registry/table-row-overflow.d.ts +3 -0
  302. package/dist/detectors/registry/table-row-overflow.d.ts.map +1 -0
  303. package/dist/detectors/registry/table-row-overflow.js +3 -0
  304. package/dist/detectors/registry/table-row-overflow.js.map +1 -0
  305. package/dist/detectors/registry/toc-heading.d.ts +3 -0
  306. package/dist/detectors/registry/toc-heading.d.ts.map +1 -0
  307. package/dist/detectors/registry/toc-heading.js +3 -0
  308. package/dist/detectors/registry/toc-heading.js.map +1 -0
  309. package/dist/detectors/registry/unclosed-code-fence.d.ts +3 -0
  310. package/dist/detectors/registry/unclosed-code-fence.d.ts.map +1 -0
  311. package/dist/detectors/registry/unclosed-code-fence.js +3 -0
  312. package/dist/detectors/registry/unclosed-code-fence.js.map +1 -0
  313. package/dist/detectors/registry/unpaired-parallel.d.ts +3 -0
  314. package/dist/detectors/registry/unpaired-parallel.d.ts.map +1 -0
  315. package/dist/detectors/registry/unpaired-parallel.js +3 -0
  316. package/dist/detectors/registry/unpaired-parallel.js.map +1 -0
  317. package/dist/detectors/registry/unrendered-emphasis.d.ts +3 -0
  318. package/dist/detectors/registry/unrendered-emphasis.d.ts.map +1 -0
  319. package/dist/detectors/registry/unrendered-emphasis.js +3 -0
  320. package/dist/detectors/registry/unrendered-emphasis.js.map +1 -0
  321. package/dist/detectors/relative-pronoun-mix.d.ts +19 -0
  322. package/dist/detectors/relative-pronoun-mix.d.ts.map +1 -0
  323. package/dist/detectors/relative-pronoun-mix.js +60 -0
  324. package/dist/detectors/relative-pronoun-mix.js.map +1 -0
  325. package/dist/detectors/request-owner.d.ts +23 -0
  326. package/dist/detectors/request-owner.d.ts.map +1 -0
  327. package/dist/detectors/request-owner.js +110 -0
  328. package/dist/detectors/request-owner.js.map +1 -0
  329. package/dist/detectors/share-over-hundred.d.ts +20 -0
  330. package/dist/detectors/share-over-hundred.d.ts.map +1 -0
  331. package/dist/detectors/share-over-hundred.js +55 -0
  332. package/dist/detectors/share-over-hundred.js.map +1 -0
  333. package/dist/detectors/step-reference.d.ts +20 -0
  334. package/dist/detectors/step-reference.d.ts.map +1 -0
  335. package/dist/detectors/step-reference.js +57 -0
  336. package/dist/detectors/step-reference.js.map +1 -0
  337. package/dist/detectors/technical-docs.d.ts +32 -0
  338. package/dist/detectors/technical-docs.d.ts.map +1 -0
  339. package/dist/detectors/technical-docs.js +199 -0
  340. package/dist/detectors/technical-docs.js.map +1 -0
  341. package/dist/detectors/toc-heading.d.ts +10 -0
  342. package/dist/detectors/toc-heading.d.ts.map +1 -0
  343. package/dist/detectors/toc-heading.js +99 -0
  344. package/dist/detectors/toc-heading.js.map +1 -0
  345. package/dist/extension/pack-read.d.ts +21 -0
  346. package/dist/extension/pack-read.d.ts.map +1 -0
  347. package/dist/extension/pack-read.js +117 -0
  348. package/dist/extension/pack-read.js.map +1 -0
  349. package/dist/extension/plugin-load.d.ts.map +1 -1
  350. package/dist/extension/plugin-load.js +44 -10
  351. package/dist/extension/plugin-load.js.map +1 -1
  352. package/dist/extension/plugin-parse.d.ts.map +1 -1
  353. package/dist/extension/plugin-parse.js +10 -3
  354. package/dist/extension/plugin-parse.js.map +1 -1
  355. package/dist/facts/address-values.d.ts +5 -0
  356. package/dist/facts/address-values.d.ts.map +1 -0
  357. package/dist/facts/address-values.js +64 -0
  358. package/dist/facts/address-values.js.map +1 -0
  359. package/dist/facts/cross-facts.d.ts +20 -0
  360. package/dist/facts/cross-facts.d.ts.map +1 -0
  361. package/dist/facts/cross-facts.js +41 -0
  362. package/dist/facts/cross-facts.js.map +1 -0
  363. package/dist/fix-plan/chosen-depth.d.ts +10 -0
  364. package/dist/fix-plan/chosen-depth.d.ts.map +1 -0
  365. package/dist/fix-plan/chosen-depth.js +24 -0
  366. package/dist/fix-plan/chosen-depth.js.map +1 -0
  367. package/dist/fix-plan/mode.d.ts +13 -4
  368. package/dist/fix-plan/mode.d.ts.map +1 -1
  369. package/dist/fix-plan/mode.js +38 -7
  370. package/dist/fix-plan/mode.js.map +1 -1
  371. package/dist/fix-plan/plan.d.ts +20 -0
  372. package/dist/fix-plan/plan.d.ts.map +1 -1
  373. package/dist/fix-plan/plan.js +23 -5
  374. package/dist/fix-plan/plan.js.map +1 -1
  375. package/dist/fix-plan/render.d.ts.map +1 -1
  376. package/dist/fix-plan/render.js +24 -0
  377. package/dist/fix-plan/render.js.map +1 -1
  378. package/dist/fix-plan/text.d.ts +8 -0
  379. package/dist/fix-plan/text.d.ts.map +1 -1
  380. package/dist/fix-plan/text.js +36 -10
  381. package/dist/fix-plan/text.js.map +1 -1
  382. package/dist/genre-load.d.ts +1 -1
  383. package/dist/genre-load.d.ts.map +1 -1
  384. package/dist/genre-load.js +7 -4
  385. package/dist/genre-load.js.map +1 -1
  386. package/dist/genre-parse.d.ts +6 -0
  387. package/dist/genre-parse.d.ts.map +1 -1
  388. package/dist/genre-parse.js +18 -0
  389. package/dist/genre-parse.js.map +1 -1
  390. package/dist/init.js +10 -10
  391. package/dist/init.js.map +1 -1
  392. package/dist/known-genres.d.ts +8 -0
  393. package/dist/known-genres.d.ts.map +1 -0
  394. package/dist/known-genres.js +17 -0
  395. package/dist/known-genres.js.map +1 -0
  396. package/dist/link-shape.d.ts +20 -0
  397. package/dist/link-shape.d.ts.map +1 -0
  398. package/dist/link-shape.js +58 -0
  399. package/dist/link-shape.js.map +1 -0
  400. package/dist/list-marks.d.ts +21 -0
  401. package/dist/list-marks.d.ts.map +1 -0
  402. package/dist/list-marks.js +82 -0
  403. package/dist/list-marks.js.map +1 -0
  404. package/dist/reasons.d.ts.map +1 -1
  405. package/dist/reasons.js +15 -4
  406. package/dist/reasons.js.map +1 -1
  407. package/dist/render/explain.d.ts.map +1 -1
  408. package/dist/render/explain.js +11 -2
  409. package/dist/render/explain.js.map +1 -1
  410. package/dist/render/friendly.js +1 -1
  411. package/dist/render/friendly.js.map +1 -1
  412. package/dist/render/rules-json.d.ts.map +1 -1
  413. package/dist/render/rules-json.js +12 -3
  414. package/dist/render/rules-json.js.map +1 -1
  415. package/dist/render/rules-table.js +6 -6
  416. package/dist/render/rules-table.js.map +1 -1
  417. package/dist/render/semantic.js +2 -2
  418. package/dist/render/semantic.js.map +1 -1
  419. package/dist/render/suppressions.js +2 -2
  420. package/dist/render/suppressions.js.map +1 -1
  421. package/dist/rewrite-depth.d.ts +22 -0
  422. package/dist/rewrite-depth.d.ts.map +1 -0
  423. package/dist/rewrite-depth.js +42 -0
  424. package/dist/rewrite-depth.js.map +1 -0
  425. package/dist/rule-fields.d.ts +28 -0
  426. package/dist/rule-fields.d.ts.map +1 -0
  427. package/dist/rule-fields.js +85 -0
  428. package/dist/rule-fields.js.map +1 -0
  429. package/dist/rule-guide.d.ts +3 -0
  430. package/dist/rule-guide.d.ts.map +1 -1
  431. package/dist/rule-guide.js +6 -0
  432. package/dist/rule-guide.js.map +1 -1
  433. package/dist/rule-load.d.ts.map +1 -1
  434. package/dist/rule-load.js +13 -5
  435. package/dist/rule-load.js.map +1 -1
  436. package/dist/rule-offs.d.ts +14 -0
  437. package/dist/rule-offs.d.ts.map +1 -0
  438. package/dist/rule-offs.js +45 -0
  439. package/dist/rule-offs.js.map +1 -0
  440. package/dist/structure/build.d.ts.map +1 -1
  441. package/dist/structure/build.js +14 -1
  442. package/dist/structure/build.js.map +1 -1
  443. package/dist/structure/cross-definitions.d.ts +23 -0
  444. package/dist/structure/cross-definitions.d.ts.map +1 -0
  445. package/dist/structure/cross-definitions.js +34 -0
  446. package/dist/structure/cross-definitions.js.map +1 -0
  447. package/genres.yaml +14 -313
  448. package/package.json +3 -3
  449. package/rules/absolute-exception.yaml +3 -1
  450. package/rules/abstract-length.yaml +7 -1
  451. package/rules/acronym-expansion-conflict.yaml +2 -1
  452. package/rules/adverb-overuse.yaml +7 -1
  453. package/rules/adverb-without-negation.yaml +60 -0
  454. package/rules/adversative-ga-repeat.yaml +2 -1
  455. package/rules/agentless-passive.yaml +10 -1
  456. package/rules/agreement-slip.yaml +4 -1
  457. package/rules/ai-generated-composite.yaml +6 -1
  458. package/rules/ai-structure.yaml +8 -2
  459. package/rules/ai-tell.yaml +7 -1
  460. package/rules/all-caps-shouting.yaml +61 -0
  461. package/rules/announced-count-mismatch.yaml +3 -1
  462. package/rules/announcing-opener.yaml +7 -1
  463. package/rules/article-sound.yaml +6 -2
  464. package/rules/assistant-residue.yaml +4 -1
  465. package/rules/attachment-not-attached.yaml +112 -0
  466. package/rules/baito-keigo.yaml +64 -0
  467. package/rules/bare-url-mix.yaml +86 -0
  468. package/rules/bold-density.yaml +1 -0
  469. package/rules/bold-label-list.yaml +9 -1
  470. package/rules/bracket-nesting.yaml +2 -1
  471. package/rules/bracket-width-consistency.yaml +64 -0
  472. package/rules/broken-link.yaml +1 -1
  473. package/rules/chat-citation-residue.yaml +2 -1
  474. package/rules/citation-reference-mismatch.yaml +7 -1
  475. package/rules/citation-style-mix.yaml +7 -1
  476. package/rules/clause-chain.yaml +6 -1
  477. package/rules/cliche.yaml +67 -0
  478. package/rules/closing-cliche.yaml +7 -0
  479. package/rules/code-fence-language-mix.yaml +176 -0
  480. package/rules/colloquial-opener.yaml +62 -0
  481. package/rules/colon-lead-in.yaml +7 -1
  482. package/rules/concrete-evidence-density.yaml +6 -0
  483. package/rules/contraction-consistency.yaml +4 -1
  484. package/rules/contrast-framing.yaml +7 -1
  485. package/rules/cross-doc-duplicate-definition.yaml +70 -0
  486. package/rules/cross-doc-fact-conflict.yaml +64 -0
  487. package/rules/currency-notation-consistency.yaml +77 -0
  488. package/rules/cushion-phrase-density.yaml +8 -1
  489. package/rules/dangling-figure-reference.yaml +3 -1
  490. package/rules/dangling-participle.yaml +58 -0
  491. package/rules/dangling-reference.yaml +3 -1
  492. package/rules/date-format-consistency.yaml +3 -2
  493. package/rules/date-order.yaml +3 -1
  494. package/rules/date-range-reversed.yaml +3 -1
  495. package/rules/date-weekday-mismatch.yaml +3 -1
  496. package/rules/date-without-year.yaml +4 -3
  497. package/rules/defined-name-repeated.yaml +97 -0
  498. package/rules/defined-term-form.yaml +113 -0
  499. package/rules/demonstrative-opener-run.yaml +2 -1
  500. package/rules/double-keigo.yaml +6 -1
  501. package/rules/double-negative.yaml +5 -1
  502. package/rules/doubled-nado.yaml +2 -1
  503. package/rules/doubled-punctuation.yaml +1 -1
  504. package/rules/doubled-word.yaml +4 -1
  505. package/rules/duplicate-definition.yaml +3 -1
  506. package/rules/duplicate-heading.yaml +1 -1
  507. package/rules/duration-mismatch.yaml +2 -1
  508. package/rules/elapsed-years-mismatch.yaml +4 -1
  509. package/rules/email-greeting-closing.yaml +122 -0
  510. package/rules/email-subject-length.yaml +112 -0
  511. package/rules/emoji-density.yaml +3 -1
  512. package/rules/emoji-heading.yaml +7 -1
  513. package/rules/empty-intensifier.yaml +4 -0
  514. package/rules/empty-list-item.yaml +2 -1
  515. package/rules/empty-section.yaml +1 -1
  516. package/rules/empty-table-cell.yaml +2 -1
  517. package/rules/excessive-hedging.yaml +7 -1
  518. package/rules/exclamation-width-consistency.yaml +64 -0
  519. package/rules/expletive-construction.yaml +7 -1
  520. package/rules/fact-conflict.yaml +4 -1
  521. package/rules/figure-reference-order.yaml +7 -1
  522. package/rules/footnote-mismatch.yaml +91 -0
  523. package/rules/fullwidth-alnum-consistency.yaml +2 -2
  524. package/rules/hankaku-kana.yaml +1 -1
  525. package/rules/heading-command-missing.yaml +109 -0
  526. package/rules/heading-echo.yaml +6 -1
  527. package/rules/heading-end-punctuation-mix.yaml +158 -0
  528. package/rules/heading-level-skip.yaml +3 -3
  529. package/rules/heading-numbering-mix.yaml +4 -3
  530. package/rules/hiragana-fukushi.yaml +4 -1
  531. package/rules/homophone-slip.yaml +5 -1
  532. package/rules/humble-for-others.yaml +63 -0
  533. package/rules/hyphen-as-dash.yaml +59 -0
  534. package/rules/idiom-misuse.yaml +4 -1
  535. package/rules/image-file-name-alt.yaml +83 -0
  536. package/rules/impossible-date.yaml +79 -0
  537. package/rules/impossible-time.yaml +76 -0
  538. package/rules/internal-jargon.yaml +1 -1
  539. package/rules/invisible-character.yaml +1 -1
  540. package/rules/katakana-density.yaml +2 -1
  541. package/rules/katakana-long-vowel.yaml +1 -1
  542. package/rules/known-misspelling.yaml +2 -1
  543. package/rules/kutoten-consistency.yaml +1 -1
  544. package/rules/latin-abbreviation-form.yaml +58 -0
  545. package/rules/latin-spacing.yaml +6 -2
  546. package/rules/less-for-fewer.yaml +59 -0
  547. package/rules/link-text-url-mismatch.yaml +72 -0
  548. package/rules/list-item-form-mix.yaml +7 -1
  549. package/rules/list-marker-mix.yaml +111 -0
  550. package/rules/max-kanji-continuous.yaml +10 -2
  551. package/rules/max-paragraph-length.yaml +4 -1
  552. package/rules/max-sentence-length.yaml +29 -21
  553. package/rules/max-ten.yaml +4 -1
  554. package/rules/misconversion.yaml +2 -1
  555. package/rules/modal-conflict.yaml +2 -1
  556. package/rules/name-variant.yaml +4 -3
  557. package/rules/ngram-repetition.yaml +5 -0
  558. package/rules/no-doubled-joshi.yaml +5 -1
  559. package/rules/no-em-dash.yaml +4 -1
  560. package/rules/no-lead.yaml +6 -1
  561. package/rules/no-mixed-desumasu.yaml +5 -2
  562. package/rules/no-nakaguro-parallel.yaml +3 -0
  563. package/rules/nominalization.yaml +5 -1
  564. package/rules/nonstandard-word.yaml +80 -0
  565. package/rules/number-style-consistency.yaml +6 -1
  566. package/rules/number-without-unit.yaml +2 -1
  567. package/rules/numbering-gap.yaml +1 -1
  568. package/rules/numeral-sentence-start.yaml +56 -0
  569. package/rules/one-sentence-paragraph-run.yaml +5 -1
  570. package/rules/ordinal-suffix-mismatch.yaml +65 -0
  571. package/rules/orthographic-variant.yaml +4 -1
  572. package/rules/outside-announced-list.yaml +2 -1
  573. package/rules/oxford-comma-consistency.yaml +3 -1
  574. package/rules/padded-intro.yaml +7 -0
  575. package/rules/paragraph-length-variance.yaml +7 -1
  576. package/rules/paragraph-restatement.yaml +6 -1
  577. package/rules/percent-sum-mismatch.yaml +3 -1
  578. package/rules/person-consistency.yaml +4 -1
  579. package/rules/preamble-length.yaml +6 -0
  580. package/rules/preferred-term.yaml +1 -1
  581. package/rules/proper-noun-density.yaml +8 -1
  582. package/rules/quote-style-consistency.yaml +66 -0
  583. package/rules/ra-nuki.yaml +4 -1
  584. package/rules/range-notation-consistency.yaml +73 -0
  585. package/rules/redundant-expression.yaml +4 -1
  586. package/rules/reference-title-mismatch.yaml +4 -3
  587. package/rules/reference-topic-missing.yaml +2 -1
  588. package/rules/relative-date-mismatch.yaml +2 -1
  589. package/rules/repeated-conjunction.yaml +4 -1
  590. package/rules/repeated-sentence-ending.yaml +62 -0
  591. package/rules/repeated-sentence-head.yaml +4 -0
  592. package/rules/request-without-deadline.yaml +92 -0
  593. package/rules/required-sections.yaml +1 -1
  594. package/rules/requirement-modal.yaml +1 -1
  595. package/rules/requirement-smell.yaml +12 -4
  596. package/rules/rule-of-three.yaml +8 -1
  597. package/rules/sasete-itadaku.yaml +7 -1
  598. package/rules/section-length-uniformity.yaml +7 -1
  599. package/rules/sentence-initial-conjunction-run.yaml +5 -1
  600. package/rules/sentence-initial-so.yaml +6 -1
  601. package/rules/sentence-rhythm.yaml +8 -1
  602. package/rules/sentence-spacing-consistency.yaml +63 -0
  603. package/rules/share-over-hundred.yaml +65 -0
  604. package/rules/shell-prompt-mix.yaml +128 -0
  605. package/rules/space-before-punctuation.yaml +1 -1
  606. package/rules/spelling-consistency.yaml +3 -1
  607. package/rules/step-reference-missing.yaml +85 -0
  608. package/rules/step-statement-mix.yaml +76 -0
  609. package/rules/stock-transition.yaml +8 -1
  610. package/rules/stray-space.yaml +2 -2
  611. package/rules/summary-fact-mismatch.yaml +4 -1
  612. package/rules/table-header-variant.yaml +2 -1
  613. package/rules/table-row-overflow.yaml +90 -0
  614. package/rules/taigen-dome-in-prose.yaml +6 -0
  615. package/rules/tari-unpaired.yaml +58 -0
  616. package/rules/teki-overuse.yaml +2 -1
  617. package/rules/title-case-consistency.yaml +1 -1
  618. package/rules/title-length.yaml +7 -1
  619. package/rules/toc-heading-mismatch.yaml +136 -0
  620. package/rules/topic-predicate-distance.yaml +6 -1
  621. package/rules/total-mismatch.yaml +3 -1
  622. package/rules/translationese-density.yaml +4 -1
  623. package/rules/unbalanced-bracket.yaml +3 -3
  624. package/rules/unclosed-code-fence.yaml +107 -0
  625. package/rules/uncomparable-graded.yaml +65 -0
  626. package/rules/undefined-acronym.yaml +8 -1
  627. package/rules/unfilled-placeholder.yaml +1 -1
  628. package/rules/unit-mismatch.yaml +2 -1
  629. package/rules/unknown-word.yaml +4 -1
  630. package/rules/unqualified-superlative.yaml +6 -1
  631. package/rules/unrendered-emphasis.yaml +73 -0
  632. package/rules/unused-definition.yaml +4 -3
  633. package/rules/url-run-on.yaml +1 -1
  634. package/rules/use-before-definition.yaml +4 -3
  635. package/rules/vague-figure-reference.yaml +3 -1
  636. package/rules/vague-link-text.yaml +2 -1
  637. package/rules/vague-word-density.yaml +2 -1
  638. package/rules/very-adjective.yaml +5 -1
  639. package/rules/weasel-word.yaml +6 -1
  640. package/rules/which-that-consistency.yaml +64 -0
  641. package/rules/wordy-phrase.yaml +6 -1
  642. package/rules/yori-as-from.yaml +61 -0
  643. package/skills/chaff/SKILL.md +7 -7
  644. package/src/api.ts +13 -1
  645. package/src/cli-text.ts +22 -7
  646. package/src/cli.ts +8 -9
  647. package/src/command-help.ts +26 -0
  648. package/src/commands/eval.ts +2 -2
  649. package/src/commands/fix-plan.ts +13 -1
  650. package/src/commands/help.ts +8 -0
  651. package/src/commands/init-command.ts +13 -0
  652. package/src/commands/plugin-init.ts +150 -0
  653. package/src/commands/plugin-test.ts +111 -0
  654. package/src/config/load.ts +3 -0
  655. package/src/config/option-problems.ts +2 -2
  656. package/src/config/rule-problems.ts +2 -2
  657. package/src/custom/checked.ts +8 -0
  658. package/src/custom/dsl-fields.ts +102 -0
  659. package/src/custom/load.ts +2 -0
  660. package/src/custom/parse.ts +72 -50
  661. package/src/custom/problems.ts +16 -2
  662. package/src/detectors/amount-for-count.ts +90 -0
  663. package/src/detectors/blank-structure.ts +12 -4
  664. package/src/detectors/clause-shape.ts +199 -0
  665. package/src/detectors/code-fences.ts +113 -0
  666. package/src/detectors/cross-definitions.ts +49 -0
  667. package/src/detectors/cross-facts.ts +60 -0
  668. package/src/detectors/cross-registry/cross-doc-duplicate-definition.ts +4 -0
  669. package/src/detectors/cross-registry/cross-doc-fact-conflict.ts +4 -0
  670. package/src/detectors/currency-notation.ts +90 -0
  671. package/src/detectors/custom.ts +10 -2
  672. package/src/detectors/dangling-opener.ts +74 -0
  673. package/src/detectors/defined-term-form.ts +200 -0
  674. package/src/detectors/email-letter.ts +262 -0
  675. package/src/detectors/footnote-mismatch.ts +72 -0
  676. package/src/detectors/form-minority.ts +21 -0
  677. package/src/detectors/heading-end-mark.ts +82 -0
  678. package/src/detectors/impossible-date.ts +141 -0
  679. package/src/detectors/impossible-time.ts +151 -0
  680. package/src/detectors/link-shape.ts +70 -0
  681. package/src/detectors/list-marker.ts +60 -0
  682. package/src/detectors/mark-shape.ts +202 -0
  683. package/src/detectors/markdown-slip.ts +140 -0
  684. package/src/detectors/numeral-opener.ts +72 -0
  685. package/src/detectors/ordinal-suffix.ts +40 -0
  686. package/src/detectors/range-notation.ts +76 -0
  687. package/src/detectors/registry/adverb-polarity.ts +4 -0
  688. package/src/detectors/registry/amount-for-count.ts +4 -0
  689. package/src/detectors/registry/attachment-missing.ts +4 -0
  690. package/src/detectors/registry/bare-url-mix.ts +4 -0
  691. package/src/detectors/registry/caps-shouting.ts +4 -0
  692. package/src/detectors/registry/code-fence-language.ts +4 -0
  693. package/src/detectors/registry/currency-notation.ts +4 -0
  694. package/src/detectors/registry/dangling-opener.ts +4 -0
  695. package/src/detectors/registry/defined-name-repeated.ts +4 -0
  696. package/src/detectors/registry/defined-term-form.ts +4 -0
  697. package/src/detectors/registry/email-frame.ts +4 -0
  698. package/src/detectors/registry/email-subject.ts +4 -0
  699. package/src/detectors/registry/ending-run.ts +4 -0
  700. package/src/detectors/registry/footnote-mismatch.ts +4 -0
  701. package/src/detectors/registry/heading-command.ts +4 -0
  702. package/src/detectors/registry/heading-end-punctuation.ts +4 -0
  703. package/src/detectors/registry/hyphen-dash.ts +4 -0
  704. package/src/detectors/registry/image-file-name-alt.ts +4 -0
  705. package/src/detectors/registry/impossible-date.ts +4 -0
  706. package/src/detectors/registry/impossible-time.ts +4 -0
  707. package/src/detectors/registry/latin-abbreviation.ts +4 -0
  708. package/src/detectors/registry/link-text-url-mismatch.ts +4 -0
  709. package/src/detectors/registry/list-marker.ts +4 -0
  710. package/src/detectors/registry/mark-consistency.ts +4 -0
  711. package/src/detectors/registry/numeral-opener.ts +4 -0
  712. package/src/detectors/registry/ordinal-suffix.ts +4 -0
  713. package/src/detectors/registry/origin-particle.ts +4 -0
  714. package/src/detectors/registry/range-notation.ts +4 -0
  715. package/src/detectors/registry/relative-pronoun-mix.ts +4 -0
  716. package/src/detectors/registry/request-without-deadline.ts +4 -0
  717. package/src/detectors/registry/sentence-spacing.ts +4 -0
  718. package/src/detectors/registry/share-over-hundred.ts +4 -0
  719. package/src/detectors/registry/shell-prompt.ts +4 -0
  720. package/src/detectors/registry/step-reference.ts +4 -0
  721. package/src/detectors/registry/step-statement.ts +4 -0
  722. package/src/detectors/registry/table-row-overflow.ts +4 -0
  723. package/src/detectors/registry/toc-heading.ts +4 -0
  724. package/src/detectors/registry/unclosed-code-fence.ts +4 -0
  725. package/src/detectors/registry/unpaired-parallel.ts +4 -0
  726. package/src/detectors/registry/unrendered-emphasis.ts +4 -0
  727. package/src/detectors/relative-pronoun-mix.ts +79 -0
  728. package/src/detectors/request-owner.ts +141 -0
  729. package/src/detectors/share-over-hundred.ts +75 -0
  730. package/src/detectors/step-reference.ts +83 -0
  731. package/src/detectors/technical-docs.ts +230 -0
  732. package/src/detectors/toc-heading.ts +125 -0
  733. package/src/extension/pack-read.ts +128 -0
  734. package/src/extension/plugin-load.ts +49 -9
  735. package/src/extension/plugin-parse.ts +10 -3
  736. package/src/facts/address-values.ts +74 -0
  737. package/src/facts/cross-facts.ts +54 -0
  738. package/src/fix-plan/chosen-depth.ts +28 -0
  739. package/src/fix-plan/mode.ts +57 -11
  740. package/src/fix-plan/plan.ts +37 -5
  741. package/src/fix-plan/render.ts +24 -0
  742. package/src/fix-plan/text.ts +47 -10
  743. package/src/genre-load.ts +7 -4
  744. package/src/genre-parse.ts +19 -0
  745. package/src/init.ts +10 -10
  746. package/src/known-genres.ts +19 -0
  747. package/src/link-shape.ts +62 -0
  748. package/src/list-marks.ts +106 -0
  749. package/src/reasons.ts +16 -4
  750. package/src/render/explain.ts +14 -2
  751. package/src/render/friendly.ts +1 -1
  752. package/src/render/rules-json.ts +14 -3
  753. package/src/render/rules-table.ts +6 -6
  754. package/src/render/semantic.ts +2 -2
  755. package/src/render/suppressions.ts +2 -2
  756. package/src/rewrite-depth.ts +60 -0
  757. package/src/rule-fields.ts +123 -0
  758. package/src/rule-guide.ts +9 -0
  759. package/src/rule-load.ts +10 -4
  760. package/src/rule-offs.ts +50 -0
  761. package/src/structure/build.ts +21 -1
  762. package/src/structure/cross-definitions.ts +60 -0
@@ -0,0 +1,86 @@
1
+ id: bare-url-mix
2
+ layer: L3
3
+ status: stable
4
+ how_to_find: bare-url-mix
5
+ requires: [markdown]
6
+ severity: info
7
+
8
+ name:
9
+ ja: 言葉のリンクの中に URL がそのまま混ざっている
10
+ en: A bare URL among worded links
11
+
12
+ why:
13
+ ja: 文書のリンクがほとんど「[導入の手引き](https://…)」のように言葉で書かれているのに、一部だけ「https://…」がそのまま本文に出ていると、そこだけ読み手は長い記号の列を読まされ、行き先が何かを URL から推し量ることになります。言葉のリンクに揃っていない所は、書き直し忘れのことが多い形です。どちらの書き方が正しいかは決めません。URL をそのまま書く文書(言葉のリンクが少ない文書、URL のほうが多い文書)は指しません。
14
+ en: When a document's links are mostly words ("[the setup guide](https://…)"), a URL left bare in the text ("https://…") makes the reader read a string of symbols there and guess the target from it. A spot that does not match the worded links is usually one that was not rewritten. Neither style is called right; a document that writes its URLs bare (few worded links, or more bare URLs than worded ones) is not reported.
15
+
16
+ message:
17
+ ja: URL「{url}」がそのまま書かれています(言葉のリンクが {count} 個ある文書)
18
+ en: 'The URL "{url}" is written bare ({count} worded {count|link|links} in this document)'
19
+
20
+ how_to_fix:
21
+ ja: 行き先の名前を言葉にしてリンクにしてください([導入の手引き](https://…))。URL そのものを見せたいときは、山括弧で囲んでリンクにします(<https://…>)。
22
+ en: Make the target's name the link text ("[the setup guide](https://…)"). If the URL itself should show, wrap it in angle brackets ("<https://…>").
23
+
24
+ # 指摘に要る、言葉のリンクの数。少ないと、どちらが文書の書き方かが決まらない。
25
+ levels: { strict: 2, normal: 3, relaxed: 5 }
26
+
27
+ use_for: [business, technical, blog, legal, docs, academic, literature, speech]
28
+
29
+ group: consistency
30
+ summary:
31
+ ja: 言葉でリンクを書く文書の中に、「https://…」がそのまま書かれている所
32
+ en: A URL written bare in a document whose other links are words
33
+ example:
34
+ ja:
35
+ before: |
36
+ 導入は[導入の手引き](https://example.com/setup)に、設定は[設定の一覧](https://example.com/settings)にあります。
37
+
38
+ 料金は[料金表](https://example.com/pricing)を見てください。問い合わせは https://example.com/contact から送れます。
39
+ after: |
40
+ 導入は[導入の手引き](https://example.com/setup)に、設定は[設定の一覧](https://example.com/settings)にあります。
41
+
42
+ 料金は[料金表](https://example.com/pricing)を見てください。問い合わせは[問い合わせの窓口](https://example.com/contact)から送れます。
43
+ en:
44
+ before: |
45
+ Setup is in [the setup guide](https://example.com/setup), and the options are in [the settings list](https://example.com/settings).
46
+
47
+ Prices are on [the pricing page](https://example.com/pricing). Send questions through https://example.com/contact today.
48
+ after: |
49
+ Setup is in [the setup guide](https://example.com/setup), and the options are in [the settings list](https://example.com/settings).
50
+
51
+ Prices are on [the pricing page](https://example.com/pricing). Send questions through [the contact form](https://example.com/contact) today.
52
+
53
+ not_flagged:
54
+ ja: 山括弧で囲んだ URL(<https://…>)、言葉が URL のリンク、コードと引用の中の URL は指しません。参照の形のリンク([言葉][1])は言葉のリンクに数えません。言葉のリンクが指摘に要る数に届かない文書と、URL をそのまま書くほうが多い文書も指しません。
55
+ en: A URL in angle brackets ("<https://…>"), a link whose text is the URL, and URLs in code or quotations are not reported; reference-style links ("[text][1]") are not counted as worded links; nor is a document with fewer worded links than the level needs, or one where bare URLs are not the few.
56
+ level_meaning:
57
+ ja: 言葉のリンクが {limit} 個以上ある文書で指摘
58
+ en: reported in a document with {limit} or more worded links
59
+ rewrite:
60
+ depth: light
61
+ ja:
62
+ direction: そのまま書いた URL を、行き先の名前を言葉にしたリンクに変えてください。行き先の名前は、文がすでに言っている名前(窓口、手引き)を使います。URL は変えません。
63
+ pairs:
64
+ - before: 問い合わせは https://example.com/contact から送れます。
65
+ after: 問い合わせは[問い合わせの窓口](https://example.com/contact)から送れます。
66
+ - before: 手順は https://example.com/guide にまとめました。
67
+ after: 手順は[作業の手引き](https://example.com/guide)にまとめました。
68
+ keep:
69
+ - リンクの行き先(URL)
70
+ - 文の言っていること
71
+ avoid:
72
+ - 行き先の名前を推し量って、URL の中身と違う名前を付ける
73
+ - 「こちら」「ここ」をリンクの言葉にする
74
+ en:
75
+ direction: Turn the bare URL into a link whose text names the target. Use a name the sentence already gives (the form, the guide). Keep the URL.
76
+ pairs:
77
+ - before: Send questions through https://example.com/contact today.
78
+ after: Send questions through [the contact form](https://example.com/contact) today.
79
+ - before: The steps are at https://example.com/guide for now.
80
+ after: The steps are in [the setup guide](https://example.com/guide) for now.
81
+ keep:
82
+ - the link target (the URL)
83
+ - what the sentence says
84
+ avoid:
85
+ - guessing a name the target page does not have
86
+ - making "here" or "click here" the link text
@@ -61,6 +61,7 @@ level_meaning:
61
61
  ja: 1000 字あたり太字 {limit} 箇所まで
62
62
  en: up to {limit} bold spans per 1000 characters
63
63
  rewrite:
64
+ depth: light
64
65
  ja:
65
66
  direction: 太字をいったん全部外し、見落とすと困る所(期限、禁止、金額)を 1〜2 か所だけ太字に戻してください。
66
67
  pairs:
@@ -1,6 +1,6 @@
1
1
  id: bold-label-list
2
2
  layer: L1
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: bold-label-list
5
5
  requires: [markdown]
6
6
  # English human writing (handbooks, minutes, policies, changelogs) labels list items in bold as a matter of course: the
@@ -28,6 +28,13 @@ how_to_fix:
28
28
  levels: { strict: 3, normal: 5, relaxed: 8 }
29
29
 
30
30
  use_for: [technical/readme, blog, business, legal, docs, academic, literature, speech]
31
+ off_for:
32
+ legal: "Legal drafting repeats its terms and its sentence heads on purpose, puts the actor in the passive (shall be deemed), and joins long noun compounds (個人情報取扱事業者). This rule would only flag the form."
33
+ docs: "A help page repeats its heading in its first line (To upload a file, ...) and states no claims to back up."
34
+ academic: "Science writes in the passive, hedges its claims on purpose (may, suggest) and cites numbers as its evidence."
35
+ literature: "Length, rhythm, repetition and register are the author's choices in literature, and dialogue mixes styles. Only what one work can hold itself to runs: consistent spacing and commas, and numbering without gaps."
36
+ business/meeting-notes: "A header block of labelled fields (- **日時**:…, - **出席者**:…) is the form of minutes, not a list of captions."
37
+ speech/transcript: "Labelled speaker turns (- **記者**:…) are how a transcript is laid out."
31
38
  sources: [zhang-2024]
32
39
 
33
40
  group: ai-tells
@@ -58,6 +65,7 @@ level_meaning:
58
65
  ja: 太字の札で始まる項目が {limit} 個あれば指摘
59
66
  en: reported once {limit} list items open with a bold label
60
67
  rewrite:
68
+ depth: structure
61
69
  ja:
62
70
  direction: 太字の札を外し、項目を文に戻してください。札の語は文の中に入れ、項目どうしの関係(理由、順番、どちらが大事か)を書きます。用語集のように、札が定義される語そのものなら箇条書きのままにします。
63
71
  pairs:
@@ -1,6 +1,6 @@
1
1
  id: bracket-nesting
2
2
  layer: L3
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: bracket-nesting
5
5
  severity: info
6
6
 
@@ -47,6 +47,7 @@ level_meaning:
47
47
  ja: 括弧の重なり {limit} 重まで
48
48
  en: brackets nested up to {limit} deep
49
49
  rewrite:
50
+ depth: light
50
51
  ja:
51
52
  direction: 一番内側の括弧を外して、別の文か注にしてください。括弧の中身は落とさずに残します。
52
53
  pairs:
@@ -0,0 +1,64 @@
1
+ id: bracket-width-consistency
2
+ layer: L1
3
+ status: stable
4
+ how_to_find: mark-consistency
5
+ word_list: bracket-width
6
+ languages: [ja]
7
+ severity: info
8
+
9
+ name:
10
+ ja: 丸括弧の全角と半角の混在
11
+ en: Full-width and half-width parentheses mixed
12
+
13
+ why:
14
+ ja: 日本語の文の中で、丸括弧を全角(())と半角(())で混ぜて書くと、別々の所から貼り合わせた文書に見えます。どちらが正しいかは決めません。日本語の字に接する括弧だけを数え、文書の中で少ないほうを指します。
15
+ en: In a Japanese document, parentheses written both full-width () and half-width () make it look pasted together. chaff does not pick a side; it counts only brackets touching Japanese text and points at the less common way.
16
+
17
+ message:
18
+ ja: 括弧を「{mark}」と書いています(この文書はふつう「{usual}」。{of} 箇所のうち {count} 箇所が違う)
19
+ en: 'The parenthesis "{mark}" here, where the document usually writes "{usual}" ({count} of {of})'
20
+
21
+ # 少ないほうが 5 箇所以上で、全体の 2 割を超えるとき。書き損じではなく書き方が二通りあるので、1 件にまとめて両方の数を言う。
22
+ messages:
23
+ mixed:
24
+ ja: "丸括弧を、全角で {spaced} 箇所、半角で {touching} 箇所書いています。この文書には書き方が二通りあります"
25
+ en: "Parentheses are written two ways in this document ({spaced} full-width, {touching} half-width)"
26
+
27
+ how_to_fix:
28
+ ja: 文書の多いほうの書き方に合わせてください。
29
+ en: Match the way the rest of the document writes it.
30
+
31
+ levels: { strict: 1, normal: 1, relaxed: 3 }
32
+
33
+ use_for: [business, technical, blog, legal, docs, academic, literature, speech]
34
+
35
+ group: consistency
36
+ summary:
37
+ ja: 日本語の文の中で、丸括弧の全角(())と半角(())が混ざっている所
38
+ en: Full-width () and half-width () parentheses mixed in one Japanese document
39
+ example:
40
+ ja:
41
+ before: |
42
+ 会議(定例)は月曜です。報告(月次)は金曜です。資料(最新版)を配ります。
43
+ after: |
44
+ 会議(定例)は月曜です。報告(月次)は金曜です。資料(最新版)を配ります。
45
+
46
+ not_flagged:
47
+ ja: 日本語の字に接する括弧だけを数えます。英語の中の括弧(f(x)、API(s))、コード、鉤括弧で引いたものの中は数えません。
48
+ en: Only brackets touching Japanese text. Brackets in English text (f(x)), code, and 「」 quotations are not counted.
49
+ level_meaning:
50
+ ja: 少ないほうの書き方が {limit} 箇所あれば指摘
51
+ en: reported once the less common way appears {limit} times
52
+ rewrite:
53
+ depth: light
54
+ ja:
55
+ direction: 指された括弧だけを、文書の多いほうの書き方(全角か半角)に替えてください。
56
+ pairs:
57
+ - before: 資料(最新版)を配ります。
58
+ after: 資料(最新版)を配ります。
59
+ - before: 期限(今週金曜)までに出します。
60
+ after: 期限(今週金曜)までに出します。
61
+ keep:
62
+ - 括弧の中の言葉
63
+ avoid:
64
+ - 英語やコードの中の括弧まで替える
@@ -1,6 +1,6 @@
1
1
  id: broken-link
2
2
  layer: L1
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: broken-link
5
5
  requires: [markdown]
6
6
  severity: warning
@@ -1,6 +1,6 @@
1
1
  id: chat-citation-residue
2
2
  layer: L2
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: chat-citation-residue
5
5
  word_list: chat-citation-marker
6
6
  severity: warning
@@ -49,6 +49,7 @@ level_meaning:
49
49
  ja: 名残の印が {limit} 個あれば指摘
50
50
  en: reported once there are {limit}
51
51
  rewrite:
52
+ depth: light
52
53
  ja:
53
54
  direction: リンク先を開いて、その文の出典になっているかを確かめてから、チャットの印だけを消してください。出典にならないリンクは消し、確かめた出典に替えます。
54
55
  pairs:
@@ -1,6 +1,6 @@
1
1
  id: citation-reference-mismatch
2
2
  layer: L3
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: citation-entry
5
5
  severity: warning
6
6
 
@@ -31,6 +31,11 @@ how_to_fix:
31
31
  levels: { strict: error, normal: warning, relaxed: info }
32
32
 
33
33
  use_for: [academic, legal, docs, literature, speech]
34
+ off_for:
35
+ legal: "A paper's citations, figures and abstract: only the academic paper genre turns these on."
36
+ docs: "A paper's citations, figures and abstract: only the academic paper genre turns these on."
37
+ literature: "A paper's citations, figures and abstract: only the academic paper genre turns these on."
38
+ speech: "A paper's citations, figures and abstract: only the academic paper genre turns these on."
34
39
 
35
40
  group: facts
36
41
  summary:
@@ -82,6 +87,7 @@ not_flagged:
82
87
  ja: 「参考文献」「References」のような見出しの下に文献一覧が無い文書、番号も著者と年も読み取れない文献、文献が一つしか無い一覧は見ません。番号で引く引用と番号の文献、著者と年で引く引用と著者と年の文献は、それぞれの組の中だけで比べます。論文のジャンルでだけ見ます。
83
88
  en: 'A document without a list under a heading such as "References", entries that give neither a number nor an author and a year, and a list of one entry are left alone. Numbered citations are compared only with numbered entries, and author-year citations only with author-year entries. Only the academic paper genre runs this rule.'
84
89
  rewrite:
90
+ depth: light
85
91
  ja:
86
92
  direction: 引用と文献一覧のどちらがずれたのかを書き手に確かめ、ずれたほうを直してください。番号を推測で書き換えず、確かめられないときはその旨を書き手に伝えます。引かない文献は、消すか、引く所を書き手に尋ねます。
87
93
  pairs:
@@ -1,6 +1,6 @@
1
1
  id: citation-style-mix
2
2
  layer: L3
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: citation-style
5
5
  severity: info
6
6
 
@@ -23,6 +23,11 @@ how_to_fix:
23
23
  levels: { strict: 3, normal: 2, relaxed: 1 }
24
24
 
25
25
  use_for: [academic, legal, docs, literature, speech]
26
+ off_for:
27
+ legal: "A paper's citations, figures and abstract: only the academic paper genre turns these on."
28
+ docs: "A paper's citations, figures and abstract: only the academic paper genre turns these on."
29
+ literature: "A paper's citations, figures and abstract: only the academic paper genre turns these on."
30
+ speech: "A paper's citations, figures and abstract: only the academic paper genre turns these on."
26
31
 
27
32
  group: consistency
28
33
  summary:
@@ -81,6 +86,7 @@ level_meaning:
81
86
  ja: 少ないほうの書き方が {limit} 箇所以下のとき指摘
82
87
  en: reported when the minority style appears {limit} times or fewer
83
88
  rewrite:
89
+ depth: light
84
90
  ja:
85
91
  direction: 少数の書き方の引用を、論文で最も多い書き方に書き直してください。番号の方式なら、その文献の文献一覧での番号を使います。番号が分からなければ、書き手に確かめます。
86
92
  pairs:
@@ -1,6 +1,6 @@
1
1
  id: clause-chain
2
2
  layer: L3
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: clause-chain
5
5
  requires: [pos]
6
6
  languages: [ja]
@@ -24,6 +24,10 @@ how_to_fix:
24
24
 
25
25
  levels: { strict: 4, normal: 5, relaxed: 7 }
26
26
 
27
+ # 法令と契約は、要件を節でつないで一文に書く。既定の上限では group の文書の過半に出たので、測って上げた(spec §21.1)。
28
+ by_genre:
29
+ legal: { strict: 7, normal: 8, relaxed: 10 }
30
+
27
31
  use_for: [business, technical, blog, legal, docs, academic, literature, speech]
28
32
 
29
33
  group: readability
@@ -44,6 +48,7 @@ level_meaning:
44
48
  ja: 一文の節 {limit} つまで
45
49
  en: up to {limit} clauses in one sentence
46
50
  rewrite:
51
+ depth: light
47
52
  ja:
48
53
  direction: 節のつなぎ目(「〜が、」「〜ので、」「〜て、」)のどこかで文を切り、切った所の関係を次の文の頭で言い直してください。
49
54
  pairs:
@@ -0,0 +1,67 @@
1
+ id: cliche
2
+ layer: L2
3
+ status: stable
4
+ how_to_find: phrase-match
5
+ word_list: cliche
6
+ requires: [pos]
7
+ languages: [en]
8
+ severity: info
9
+
10
+ name:
11
+ ja: 使い古された決まり文句
12
+ en: Cliché
13
+
14
+ why:
15
+ ja: 英語の「at the end of the day」「low-hanging fruit」「move the needle」のような決まり文句は、使われすぎて中身が抜けた比喩です。読み手は見慣れた形を読み飛ばし、この文書で何が言いたいのかが残りません。言い回しの一覧は言語ごとの語彙表にあり、それぞれに何を書けばよいかが付いています。
16
+ en: '"At the end of the day", "low-hanging fruit" and "move the needle" are figures of speech worn down to filler. The reader skims the familiar shape and learns nothing about this document. The phrases are listed in the lexicon, each with what to write instead.'
17
+
18
+ message:
19
+ ja: 「{matched}」は使い古された決まり文句です
20
+ en: '"{matched}" is a cliché'
21
+
22
+ how_to_fix:
23
+ ja: 決まり文句が指していた中身を、そのまま書いてください(low-hanging fruit → 簡単に済む作業の名前)。
24
+ en: Say what the phrase stood for ("low-hanging fruit" → name the easy tasks).
25
+
26
+ levels: { strict: 1, normal: 1, relaxed: 2 }
27
+
28
+ use_for: [business, technical, blog, legal, docs, academic, literature, speech]
29
+ off_for:
30
+ literature: "A narrator or a character may speak in clichés; the voice is the author's choice."
31
+ speech: "A transcript keeps the speaker's words."
32
+
33
+ group: wording
34
+ summary:
35
+ ja: 英語で、「at the end of the day」「low-hanging fruit」のような使い古された決まり文句
36
+ en: A worn phrase such as "at the end of the day" or "low-hanging fruit"
37
+ example:
38
+ en:
39
+ before: |
40
+ At the end of the day, the new cache is faster.
41
+ after: |
42
+ The new cache cuts load time from 2 seconds to 0.5.
43
+
44
+ not_flagged:
45
+ ja: 一覧にある言い回しだけを見ます。ほかの規則が見る言い回し(ai-tell の「game-changer」、empty-intensifier の「needless to say」)は入れていません。英語の文書だけで動き、文学と講演の書き起こしは対象にしません。
46
+ en: Only the phrases on chaff's list are checked. Phrases another rule reads ("game-changer" in ai-tell, "needless to say" in empty-intensifier) are not on it. English documents only; literature and speech transcripts are not checked.
47
+ level_meaning:
48
+ ja: 当てはまる言い回しが {limit} 箇所あれば指摘
49
+ en: reported once there are {limit}
50
+ sources: [write-good, proselint]
51
+ rewrite:
52
+ depth: light
53
+ en:
54
+ direction: Replace the cliché with what it stood for in this document, following the lexicon's note for the phrase. If the text does not say what that is, ask the writer rather than invent it.
55
+ pairs:
56
+ - before: At the end of the day, the new cache is faster.
57
+ after: The new cache is faster.
58
+ - before: Fixing the login page is low-hanging fruit.
59
+ after: Fixing the login page takes an hour.
60
+ - before: Let's touch base next week.
61
+ after: Let's talk next week.
62
+ keep:
63
+ - the claim the sentence makes
64
+ - numbers, names and dates in the sentence
65
+ avoid:
66
+ - swapping one cliché for another
67
+ - inventing a figure or a date the text does not give
@@ -29,6 +29,12 @@ levels:
29
29
  relaxed: 2
30
30
 
31
31
  use_for: [blog, legal, docs, academic, literature, speech]
32
+ off_for:
33
+ legal: "Legal drafting repeats its terms and its sentence heads on purpose, puts the actor in the passive (shall be deemed), and joins long noun compounds (個人情報取扱事業者). This rule would only flag the form."
34
+ docs: "A help page repeats its heading in its first line (To upload a file, ...) and states no claims to back up."
35
+ academic: "Science writes in the passive, hedges its claims on purpose (may, suggest) and cites numbers as its evidence."
36
+ literature: "Length, rhythm, repetition and register are the author's choices in literature, and dialogue mixes styles. Only what one work can hold itself to runs: consistent spacing and commas, and numbering without gaps."
37
+ speech: "A speech opens with greetings and closes with thanks: that is its form, not padding."
32
38
 
33
39
  group: wording
34
40
  summary:
@@ -63,6 +69,7 @@ level_meaning:
63
69
  ja: 当てはまる結びが {limit} 箇所あれば指摘
64
70
  en: reported once there are {limit}
65
71
  rewrite:
72
+ depth: light
66
73
  ja:
67
74
  direction: 決まり文句の結びを消してください。本文の結論がすでに最後にあれば、そこで終えます。無ければ、本文で分かったことのうち持ち帰ってほしい一つを一文で書きます。
68
75
  pairs:
@@ -0,0 +1,176 @@
1
+ id: code-fence-language-mix
2
+ layer: L1
3
+ status: stable
4
+ how_to_find: code-fence-language
5
+ requires: [markdown]
6
+ severity: info
7
+
8
+ name:
9
+ ja: 言語名の無いコードブロックが混ざっている
10
+ en: Code blocks with and without a language
11
+
12
+ why:
13
+ ja: コードブロックに言語名(```bash、```json)を付けると、読み手の画面で色が付き、何の言語かがひと目で分かります。ほとんどのブロックに付けているのに一部だけ無いと、そのブロックだけ色が付かず、付け忘れに見えます。どちらに揃えるかは決めず、少ないほうを指します(markdownlint の MD040 は、すべてのブロックに言語名を求めます)。
14
+ en: "A language on a code block (```bash, ```json) gives it highlighting on the reader's screen and says at a glance what it is. When most blocks name their language and a few do not, those few show plain and look forgotten. chaff does not decide which way to go; it points at the fewer (markdownlint's MD040 asks for a language on every block)."
15
+
16
+ message:
17
+ ja: このコードブロックだけ言語名がありません(言語名のあるブロック {tagged} 個)
18
+ en: This code block names no language, unlike the others ({tagged} blocks name one)
19
+
20
+ how_to_fix:
21
+ ja: 「```」の後ろに言語名を書いてください。出力や平文なら「text」と書きます。
22
+ en: Add the language after the opening ```. For output or plain text, write "text".
23
+
24
+ levels: { strict: 3, normal: 2, relaxed: 1 }
25
+
26
+ use_for: [technical, docs, blog, legal, academic, literature, speech]
27
+ off_for:
28
+ legal: "Code blocks, shell prompts, command headings and numbered steps belong to technical writing."
29
+ academic: "Code blocks, shell prompts, command headings and numbered steps belong to technical writing."
30
+ literature: "Code blocks, shell prompts, command headings and numbered steps belong to technical writing."
31
+ speech: "Code blocks, shell prompts, command headings and numbered steps belong to technical writing."
32
+
33
+ group: consistency
34
+ summary:
35
+ ja: ほとんどのコードブロックに言語名があるのに、一部だけ無い所
36
+ en: A code block without a language among blocks that name theirs
37
+ example:
38
+ ja:
39
+ config: { genre: docs/manual }
40
+ before: |
41
+ # 使い方
42
+
43
+ インストールします。
44
+
45
+ ```bash
46
+ npm install chaffjs
47
+ ```
48
+
49
+ 設定を書きます。
50
+
51
+ ```yaml
52
+ genre: technical/readme
53
+ ```
54
+
55
+ 確かめます。
56
+
57
+ ```
58
+ npx chaffjs README.md
59
+ ```
60
+ after: |
61
+ # 使い方
62
+
63
+ インストールします。
64
+
65
+ ```bash
66
+ npm install chaffjs
67
+ ```
68
+
69
+ 設定を書きます。
70
+
71
+ ```yaml
72
+ genre: technical/readme
73
+ ```
74
+
75
+ 確かめます。
76
+
77
+ ```bash
78
+ npx chaffjs README.md
79
+ ```
80
+ en:
81
+ config: { genre: docs/manual }
82
+ before: |
83
+ # Usage
84
+
85
+ Install it.
86
+
87
+ ```bash
88
+ npm install chaffjs
89
+ ```
90
+
91
+ Write the settings.
92
+
93
+ ```yaml
94
+ genre: technical/readme
95
+ ```
96
+
97
+ Check a file.
98
+
99
+ ```
100
+ npx chaffjs README.md
101
+ ```
102
+ after: |
103
+ # Usage
104
+
105
+ Install it.
106
+
107
+ ```bash
108
+ npm install chaffjs
109
+ ```
110
+
111
+ Write the settings.
112
+
113
+ ```yaml
114
+ genre: technical/readme
115
+ ```
116
+
117
+ Check a file.
118
+
119
+ ```bash
120
+ npx chaffjs README.md
121
+ ```
122
+
123
+ not_flagged:
124
+ ja: 字下げだけのコードブロック、引用の中のブロックは見ません。言語名の無いブロックが {limit} 個を超えるとき、または言語名のあるブロックより多いときは、使い分けとみなして指しません。
125
+ en: Indented code blocks and blocks inside a quotation are not read. When more than {limit} blocks lack a language, or they are as many as those with one, it is taken as a choice and not reported.
126
+ level_meaning:
127
+ ja: 言語名の無いブロックが {limit} 個以下で、ある方より少ないとき指摘
128
+ en: reported when {limit} or fewer blocks lack a language and they are fewer than those with one
129
+ rewrite:
130
+ depth: light
131
+ ja:
132
+ direction: 言語名の無いブロックに、中身の言語名を付けてください。コマンドなら bash、設定なら yaml や json、出力や平文なら text です。中身から言語が決められなければ text にします。コードは変えません。
133
+ pairs:
134
+ - before: |
135
+ ```
136
+ npx chaffjs README.md
137
+ ```
138
+ after: |
139
+ ```bash
140
+ npx chaffjs README.md
141
+ ```
142
+ - before: |
143
+ ```
144
+ 3 findings
145
+ ```
146
+ after: |
147
+ ```text
148
+ 3 findings
149
+ ```
150
+ keep:
151
+ - ブロックの中身
152
+ avoid:
153
+ - 中身と違う言語名を付ける
154
+ en:
155
+ direction: Give each block without a language the language of its content. Commands are bash, settings yaml or json, output or plain text text. If the content does not settle it, use text. Do not change the code.
156
+ pairs:
157
+ - before: |
158
+ ```
159
+ npx chaffjs README.md
160
+ ```
161
+ after: |
162
+ ```bash
163
+ npx chaffjs README.md
164
+ ```
165
+ - before: |
166
+ ```
167
+ 3 findings
168
+ ```
169
+ after: |
170
+ ```text
171
+ 3 findings
172
+ ```
173
+ keep:
174
+ - the block's content
175
+ avoid:
176
+ - naming a language the content is not in
@@ -0,0 +1,62 @@
1
+ id: colloquial-opener
2
+ layer: L2
3
+ status: stable
4
+ how_to_find: opener-pile
5
+ word_list: colloquial-opener
6
+ requires: [pos]
7
+ languages: [ja]
8
+ severity: info
9
+
10
+ name:
11
+ ja: 文頭の話し言葉の接続詞
12
+ en: A spoken conjunction opening a sentence
13
+
14
+ why:
15
+ ja: 文の頭の「なので」「でも」「だけど」は話し言葉の接続詞です。報告書や案内の中にあると、そこだけ口調が砕けて聞こえます。書き言葉には同じ働きの語(そのため、したがって、しかし)があります。文の途中の「〜なので」は普通の書き方なので見ません。
16
+ en: In Japanese, なので, でも and だけど at the head of a sentence are spoken conjunctions. In a report or a notice they make that sentence sound casual. Written Japanese has words that do the same job (そのため, しかし). なので inside a sentence is ordinary and not checked.
17
+
18
+ message:
19
+ ja: 「{matched}」で始まる文が {count} 個あります({limit} 個から)
20
+ en: '{count} {count|sentence opens|sentences open} with "{matched}" ({limit} needed)'
21
+
22
+ how_to_fix:
23
+ ja: 書き言葉の接続詞に替えてください(なので → そのため、でも → しかし)。
24
+ en: Use the written conjunction (なので → そのため, でも → しかし).
25
+
26
+ levels: { strict: 1, normal: 1, relaxed: 2 }
27
+
28
+ use_for: [business, technical, legal, docs, academic, literature, speech]
29
+ off_for:
30
+ literature: "Spoken 全然大丈夫, なので and より in a character's voice; classical verse has a たり that does not list."
31
+ speech: "Spoken Japanese says 全然大丈夫, opens with なので and greets with より参りました."
32
+
33
+ group: wording
34
+ summary:
35
+ ja: 「なので、」「でも、」のような話し言葉の接続詞で始まる文
36
+ en: A Japanese sentence opening with a spoken conjunction (なので, でも)
37
+ example:
38
+ ja:
39
+ before: |
40
+ 在庫が足りません。なので、出荷は来週になります。
41
+ after: |
42
+ 在庫が足りません。そのため、出荷は来週になります。
43
+
44
+ not_flagged:
45
+ ja: 文の途中の「〜なので」「〜でも」と、書き言葉の接続詞(そのため、しかし、したがって)は指しません。ブログ、文芸、話し言葉のジャンルでは動きません。
46
+ en: なので and でも inside a sentence, and written conjunctions (そのため, しかし), are not reported. Off for blogs, literature and speech.
47
+ level_meaning:
48
+ ja: 話し言葉の接続詞で始まる文が {limit} 個あれば指摘
49
+ en: reported from {limit} sentences opening with a spoken conjunction
50
+ rewrite:
51
+ depth: light
52
+ ja:
53
+ direction: 文頭の話し言葉の接続詞を、同じ働きの書き言葉に替えてください(なので → そのため、でも → しかし、だけど → しかし)。
54
+ pairs:
55
+ - before: 在庫が足りません。なので、出荷は来週になります。
56
+ after: 在庫が足りません。そのため、出荷は来週になります。
57
+ - before: 費用は増えます。でも、作業は半分になります。
58
+ after: 費用は増えます。しかし、作業は半分になります。
59
+ keep:
60
+ - 前の文とのつながりの向き(理由、逆接)
61
+ avoid:
62
+ - 接続詞を消して、つながりの向きを読み手に推させる