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
@@ -1,6 +1,6 @@
1
1
  id: acronym-expansion-conflict
2
2
  layer: L3
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: acronym-expansion-conflict
5
5
  severity: warning
6
6
 
@@ -58,6 +58,7 @@ not_flagged:
58
58
  ja: 名前の大文字小文字、ハイフン、終わりの複数の s の違いは同じ名前と見ます。英語の名前は、頭文字が略語と揃うときだけ展開と読みます。
59
59
  en: Differences of case, hyphens and a final plural s are not counted. An English name counts as an expansion only when its initials spell the abbreviation.
60
60
  rewrite:
61
+ depth: light
61
62
  ja:
62
63
  direction: 二つの展開のうち正しいほうを書き手に確かめ、もう一方を消すか正しい名前に替えてください。二度目以降は略語だけで書けます。
63
64
  pairs:
@@ -1,6 +1,6 @@
1
1
  id: adverb-overuse
2
2
  layer: L3
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: adverb-density
5
5
  requires: [pos]
6
6
  languages: [en]
@@ -26,6 +26,12 @@ how_to_fix:
26
26
  levels: { strict: 10, normal: 15, relaxed: 25 }
27
27
 
28
28
  use_for: [blog, business, legal, docs, academic, literature, speech]
29
+ off_for:
30
+ 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."
31
+ docs: "A help page repeats its heading in its first line (To upload a file, ...) and states no claims to back up."
32
+ academic: "Science writes in the passive, hedges its claims on purpose (may, suggest) and cites numbers as its evidence."
33
+ 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."
34
+ speech/transcript: "A transcript records what was said: its sentences, repeats and register are the speaker's, not the writer's to fix."
29
35
 
30
36
  group: readability
31
37
  summary:
@@ -0,0 +1,60 @@
1
+ id: adverb-without-negation
2
+ layer: L3
3
+ status: stable
4
+ how_to_find: adverb-polarity
5
+ word_list: negative-polarity-adverb
6
+ extra_word_lists: [negation-word]
7
+ requires: [pos]
8
+ languages: [ja]
9
+ severity: info
10
+
11
+ name:
12
+ ja: 打ち消しを伴わない「全然」「決して」
13
+ en: 全然 or 決して with no negation
14
+
15
+ why:
16
+ ja: 「全然」「決して」「到底」は、書き言葉では「全然足りない」「決して許されない」のように打ち消しと組む副詞です。「全然大丈夫です」のように打ち消し無しで使うのは話し言葉で、報告書や案内では砕けて読まれます。文の後ろに打ち消しの語(ない、ません、ず、違う、不〜、無〜)が一つも無いときだけ指します。
17
+ en: In written Japanese, adverbs such as 全然 and 決して pair with a negation (全然足りない, "not at all enough"). Without one (全然大丈夫です, "totally fine") they are spoken usage and read as casual in a report or a notice. chaff reports one only when no negating word (ない, ません, ず, 違う, a 不 or 無 prefix) follows it in the sentence.
18
+
19
+ message:
20
+ ja: 「{word}」の後に打ち消しがありません
21
+ en: '"{word}" has no negation after it'
22
+
23
+ how_to_fix:
24
+ ja: 打ち消しを伴わないなら、別の副詞に替えてください(全然大丈夫です → まったく問題ありません、十分に間に合います)。
25
+ en: Without a negation, use another adverb (全然大丈夫です → まったく問題ありません).
26
+
27
+ levels: { strict: warning, normal: info, relaxed: info }
28
+
29
+ use_for: [business, technical, legal, docs, academic, literature, speech]
30
+ off_for:
31
+ literature: "Spoken 全然大丈夫, なので and より in a character's voice; classical verse has a たり that does not list."
32
+ speech: "Spoken Japanese says 全然大丈夫, opens with なので and greets with より参りました."
33
+
34
+ group: wording
35
+ summary:
36
+ ja: 「全然大丈夫です」のように、打ち消しと組む副詞を打ち消し無しで使った所
37
+ en: A Japanese adverb that pairs with a negation (全然, 決して) used without one
38
+ example:
39
+ ja:
40
+ before: |
41
+ 納期は全然大丈夫です。
42
+ after: |
43
+ 納期には十分に間に合います。
44
+
45
+ not_flagged:
46
+ ja: 後ろに打ち消しの語(ない、ません、ず、まい、違う、異なる、駄目)か、不・未・無・非で始まる語(不十分、無理)があれば指しません。「まったく」は「まったく同じ」が正しいので見ません。ブログ、文芸、話し言葉のジャンルでは動きません。
47
+ en: Not reported when a negating word (ない, ません, ず, 違う, 駄目) or a word opening with 不, 未, 無 or 非 follows. まったく is not checked, since まったく同じ is correct. Off for blogs, literature and speech.
48
+ rewrite:
49
+ depth: light
50
+ ja:
51
+ direction: 打ち消しの無い「全然」「決して」を、肯定と組む言い方に替えてください。打ち消しを言いたかったのなら、打ち消しの形にします。
52
+ pairs:
53
+ - before: 納期は全然大丈夫です。
54
+ after: 納期には十分に間に合います。
55
+ - before: 新しい手順は全然簡単です。
56
+ after: 新しい手順はとても簡単です。
57
+ keep:
58
+ - 文が言っている判断の向き(問題が無い、簡単だ)
59
+ avoid:
60
+ - 打ち消しを足して文の意味を逆にする
@@ -1,6 +1,6 @@
1
1
  id: adversative-ga-repeat
2
2
  layer: L3
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: sentence-conjunctive-count
5
5
  word_list: adversative-particle
6
6
  requires: [pos]
@@ -45,6 +45,7 @@ level_meaning:
45
45
  ja: 一文の逆接の「が」{limit} 個まで
46
46
  en: up to {limit} contrastive が in a sentence
47
47
  rewrite:
48
+ depth: light
48
49
  ja:
49
50
  direction: 一つ目の逆接の「が」の所で文を切ってください。次の文の頭に、前との関係を言う語(しかし、ただし)を置けます。
50
51
  pairs:
@@ -1,6 +1,6 @@
1
1
  id: agentless-passive
2
2
  layer: L3
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: agentless-passive
5
5
  word_list: agent-marker
6
6
  requires: [pos]
@@ -26,6 +26,14 @@ how_to_fix:
26
26
  levels: { strict: 1, normal: 1, relaxed: 2 }
27
27
 
28
28
  use_for: [business, legal, docs, academic, literature, speech]
29
+ off_for:
30
+ 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."
31
+ docs: "A help page repeats its heading in its first line (To upload a file, ...) and states no claims to back up."
32
+ academic: "Science writes in the passive, hedges its claims on purpose (may, suggest) and cites numbers as its evidence."
33
+ 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."
34
+ speech: "A speech opens with greetings and closes with thanks: that is its form, not padding."
35
+ business/meeting-notes: "Minutes record what the meeting did (the meeting was held, 了承された): the actor is the meeting, by the form. In the corpus the rule fires on nearly every set of minutes, English and Japanese."
36
+ business: measured by yarn rules:measure
29
37
  sources: [yasashii-nihongo-2020, plain-2011]
30
38
 
31
39
  group: wording
@@ -47,6 +55,7 @@ level_meaning:
47
55
  ja: 一文に受け身が {limit} 個あれば指摘
48
56
  en: reported when a sentence has {limit} passives with no actor
49
57
  rewrite:
58
+ depth: light
50
59
  ja:
51
60
  direction: 誰がしたのかを本文から探して主語にし、能動の文にしてください。本文のどこにも書かれていなければ、作らずに[誰が]と空けて書き手に聞きます。
52
61
  pairs:
@@ -1,6 +1,6 @@
1
1
  id: agreement-slip
2
2
  layer: L3
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: agreement-slip
5
5
  requires: [pos]
6
6
  languages: [en]
@@ -34,6 +34,9 @@ how_to_fix:
34
34
  levels: { strict: error, normal: warning, relaxed: info }
35
35
 
36
36
  use_for: [blog, business, technical, legal, docs, academic, literature, speech]
37
+ off_for:
38
+ 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."
39
+ speech/transcript: "A transcript records what was said: its sentences, repeats and register are the speaker's, not the writer's to fix."
37
40
 
38
41
  group: slips
39
42
  summary:
@@ -1,6 +1,6 @@
1
1
  id: ai-generated-composite
2
2
  layer: L1
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: composite
5
5
  severity: warning
6
6
 
@@ -40,6 +40,11 @@ how_to_fix:
40
40
  levels: { strict: 2, normal: 3, relaxed: 5 }
41
41
 
42
42
  use_for: [technical/readme, blog, business, legal, docs, academic, literature, speech]
43
+ off_for:
44
+ 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."
45
+ docs: "A help page repeats its heading in its first line (To upload a file, ...) and states no claims to back up."
46
+ 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."
47
+ speech/transcript: "A transcript records what was said: its sentences, repeats and register are the speaker's, not the writer's to fix."
43
48
 
44
49
  group: ai-tells
45
50
  summary:
@@ -1,6 +1,6 @@
1
1
  id: ai-structure
2
2
  layer: L1
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: ai-structure
5
5
  requires: [headings]
6
6
  severity: info
@@ -24,8 +24,13 @@ how_to_fix:
24
24
  # 人の記事の 9 割を超えた項目が何個そろったら出すか。人の記事で何個そろうかは scripts/structure-baseline.ts --values で数え直せる。
25
25
  levels: { strict: 2, normal: 3, relaxed: 4 }
26
26
 
27
- # 基準にした人の記事はブログ。ビジネス文書は見ない。法務・説明書・論文・話し言葉は見出しの立て方がもともと違うので、genres.yaml で止める。
27
+ # 基準にした人の記事はブログ。ビジネス文書は見ない。法務・説明書・論文・話し言葉は見出しの立て方がもともと違うので、off_for で止める。
28
28
  use_for: [blog, legal, docs, academic, literature, speech]
29
+ off_for:
30
+ 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."
31
+ docs: "A help page repeats its heading in its first line (To upload a file, ...) and states no claims to back up."
32
+ academic: "Science writes in the passive, hedges its claims on purpose (may, suggest) and cites numbers as its evidence."
33
+ speech: "A speech opens with greetings and closes with thanks: that is its form, not padding."
29
34
 
30
35
  group: ai-tells
31
36
  summary:
@@ -130,6 +135,7 @@ level_meaning:
130
135
  ja: 人の記事の 9 割を超えた項目が {limit} 個そろえば指摘
131
136
  en: reported once {limit} measures lie past 90% of human articles
132
137
  rewrite:
138
+ depth: structure
133
139
  ja:
134
140
  direction: 構成から書き直してください。`chaff outline` が人の記事の 9 割を超えたと言う項目を、人の記事の範囲に戻します。見出しは中身のまとまりごとに立て、一段落ごとに立てません。小見出しの数は中身の数に合わせ、3 つに揃えません。太字の札の箇条書きは文に戻し、本文を言い直すだけのまとめは消します。
135
141
  pairs:
@@ -1,6 +1,6 @@
1
1
  id: ai-tell
2
2
  layer: L2
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: ai-tell
5
5
  word_list: ai-tell
6
6
  uses: [pos]
@@ -26,6 +26,11 @@ how_to_fix:
26
26
  levels: { strict: 10, normal: 18, relaxed: 30 }
27
27
 
28
28
  use_for: [technical/readme, blog, business, legal, docs, academic, literature, speech]
29
+ off_for:
30
+ 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."
31
+ docs: "A help page repeats its heading in its first line (To upload a file, ...) and states no claims to back up."
32
+ 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."
33
+ speech/transcript: "A transcript records what was said: its sentences, repeats and register are the speaker's, not the writer's to fix."
29
34
  sources: [kobak-2025, liang-2024, juzek-ward-2025]
30
35
 
31
36
  group: ai-tells
@@ -51,6 +56,7 @@ level_meaning:
51
56
  ja: 言い回しの重みの合計が {limit} 点まで
52
57
  en: up to a score of {limit}
53
58
  rewrite:
59
+ depth: light
54
60
  ja:
55
61
  direction: 決まった言い回しを、その文が実際に言っている中身(誰が、何を、どれだけ)に置き換えてください。中身の無い文は消してください。
56
62
  pairs:
@@ -0,0 +1,61 @@
1
+ id: all-caps-shouting
2
+ layer: L1
3
+ status: stable
4
+ how_to_find: caps-shouting
5
+ word_list: caps-convention
6
+ languages: [en]
7
+ severity: info
8
+
9
+ name:
10
+ ja: 大文字だけの語の連なり(叫び)
11
+ en: Shouting in capitals
12
+
13
+ why:
14
+ ja: 英語の本文で、「DO NOT DELETE THIS」のように普通の語を大文字だけで三つ以上続けると、叫んでいるように読め、大文字の語は読む速さも落ちます。略語の並び(AWS IAM SSO)と区別するため、半分以上の語が文書のほかの所で小文字でも書かれているときだけ指します。
15
+ en: Three or more ordinary words in capitals ("DO NOT DELETE THIS") read as shouting, and words in capitals are slower to read. To tell them from a run of acronyms (AWS IAM SSO), a run is reported only when at least half its words also appear in lower case elsewhere in the document.
16
+
17
+ message:
18
+ ja: 「{matched}」を大文字だけで書いています
19
+ en: '"{matched}" is written in capitals'
20
+
21
+ how_to_fix:
22
+ ja: 普通の大文字小文字で書き、強めたいなら太字にするか、なぜ大事なのかを書いてください。
23
+ en: Write it in ordinary case; to stress it, use bold or say why it matters.
24
+
25
+ levels: { strict: 1, normal: 1, relaxed: 2 }
26
+
27
+ use_for: [business, technical, blog, legal, docs, academic, literature, speech]
28
+ off_for:
29
+ legal: "Contracts set disclaimers in capitals so they are conspicuous, as the law asks."
30
+ literature: 'Older printed texts set the dash as "--" and titles in capitals.'
31
+
32
+ group: readability
33
+ summary:
34
+ ja: 英語で、「DO NOT DELETE THIS」のように普通の語を大文字だけで続けた所
35
+ en: Ordinary words run together in capitals, such as "DO NOT DELETE THIS"
36
+ example:
37
+ en:
38
+ before: |
39
+ Do not delete the log. DO NOT DELETE THIS FILE before the audit.
40
+ after: |
41
+ Do not delete the log. Do not delete this file before the audit.
42
+
43
+ not_flagged:
44
+ ja: 三語以上の連なりだけを見ます。略語の並び(文書のほかの所で小文字で書かれない語)とコードは見ません。仕様書の MUST や SHALL は慣習の大文字として数えません。法令と文学の文書では既定で止めています(大文字で目立たせる決まりや、題を大文字で組む慣習があるため)。
45
+ en: Only runs of three or more words. Runs of acronyms (words never written in lower case elsewhere) and code are not reported, and MUST or SHALL in a specification count as conventional capitals. The legal and literature presets turn it off, since contracts set disclaimers in capitals by rule and older texts set titles that way.
46
+ level_meaning:
47
+ ja: "{limit} 箇所あれば指摘"
48
+ en: reported once there are {limit}
49
+ rewrite:
50
+ depth: light
51
+ en:
52
+ direction: Rewrite the capitals in ordinary sentence case. If the words carry a warning, keep the warning in words, not in capitals.
53
+ pairs:
54
+ - before: DO NOT DELETE THIS FILE before the audit.
55
+ after: Do not delete this file before the audit.
56
+ - before: The form is DUE BY FRIDAY.
57
+ after: The form is due by Friday.
58
+ keep:
59
+ - acronyms and names that are written in capitals
60
+ avoid:
61
+ - lowering acronyms (API, NASA) along with the shouted words
@@ -1,6 +1,6 @@
1
1
  id: announced-count-mismatch
2
2
  layer: L3
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: announced-count
5
5
  severity: warning
6
6
 
@@ -23,6 +23,8 @@ how_to_fix:
23
23
  levels: { strict: error, normal: warning, relaxed: info }
24
24
 
25
25
  use_for: [business, technical, blog, legal, docs, academic, literature, speech]
26
+ off_for:
27
+ 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."
26
28
 
27
29
  group: facts
28
30
  summary:
@@ -1,6 +1,6 @@
1
1
  id: announcing-opener
2
2
  layer: L2
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: opener-pile
5
5
  word_list: announcing-opener
6
6
  uses: [pos]
@@ -26,6 +26,11 @@ how_to_fix:
26
26
  levels: { strict: 2, normal: 3, relaxed: 5 }
27
27
 
28
28
  use_for: [technical/readme, blog, business, legal, docs, academic, literature, speech]
29
+ off_for:
30
+ 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."
31
+ docs: "A help page repeats its heading in its first line (To upload a file, ...) and states no claims to back up."
32
+ 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."
33
+ speech: "A speech opens with greetings and closes with thanks: that is its form, not padding."
29
34
 
30
35
  group: ai-tells
31
36
  summary:
@@ -50,6 +55,7 @@ level_meaning:
50
55
  ja: 予告で始まる文が {limit} 個あれば指摘
51
56
  en: reported once {limit} sentences open with an announcement
52
57
  rewrite:
58
+ depth: light
53
59
  ja:
54
60
  direction: 「重要なのは、」「ポイントは、」のような予告を消し、その後ろの中身から文を始めてください。
55
61
  pairs:
@@ -1,11 +1,11 @@
1
1
  id: article-sound
2
2
  layer: L2
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: article-sound
5
5
  word_list: article-sound
6
6
  requires: [pos]
7
7
  languages: [en]
8
- severity: warning
8
+ severity: info
9
9
 
10
10
  name:
11
11
  ja: a と an の取り違え
@@ -26,6 +26,9 @@ how_to_fix:
26
26
  levels: { strict: 1, normal: 1, relaxed: 2 }
27
27
 
28
28
  use_for: [business, technical, blog, legal, docs, academic, literature, speech]
29
+ off_for:
30
+ literature: 'Dialect and old usage ("an hospital") are the work''s voice, and dialogue leans on "very".'
31
+ speech: "A transcript keeps the speaker's words: hedges and ら dropped as spoken."
29
32
 
30
33
  group: slips
31
34
  summary:
@@ -45,6 +48,7 @@ level_meaning:
45
48
  ja: "{limit} 箇所あれば指摘"
46
49
  en: reported once there are {limit}
47
50
  rewrite:
51
+ depth: light
48
52
  en:
49
53
  direction: Change only the article, to "an" before a vowel sound and "a" before a consonant sound.
50
54
  pairs:
@@ -1,6 +1,6 @@
1
1
  id: assistant-residue
2
2
  layer: L2
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: assistant-residue
5
5
  word_list: assistant-residue
6
6
  uses: [pos]
@@ -27,6 +27,8 @@ how_to_fix:
27
27
  levels: { strict: 10, normal: 10, relaxed: 20 }
28
28
 
29
29
  use_for: [blog, business, technical, legal, docs, academic, literature, speech]
30
+ off_for:
31
+ speech/transcript: "A transcript records what was said: its sentences, repeats and register are the speaker's, not the writer's to fix."
30
32
  sources: [hayashi-aizawa-2026]
31
33
 
32
34
  group: ai-tells
@@ -52,6 +54,7 @@ level_meaning:
52
54
  ja: 重みの合計が {limit} 点で指摘
53
55
  en: reported from a score of {limit}
54
56
  rewrite:
57
+ depth: light
55
58
  ja:
56
59
  direction: チャットの相手に向けた言葉(「お役に立てれば」「ご質問があれば」)を消してください。知識の期限を書いた文は、確かめた日付と出典に置き換えます。分からなければ[ ]で空けて書き手に聞きます。
57
60
  pairs:
@@ -0,0 +1,112 @@
1
+ id: attachment-not-attached
2
+ layer: L2
3
+ status: stable
4
+ how_to_find: attachment-missing
5
+ severity: warning
6
+
7
+ name:
8
+ ja: 添付に触れているのに、添付が見当たらない
9
+ en: Attachment mentioned but not shown
10
+
11
+ why:
12
+ ja: 「資料を添付します」と書いて添付を忘れるのは、仕事のメールでいちばんよくある失敗の一つです。受け手は返信で頼み直すことになり、やり取りが一往復増えます。本文が「添付」「別添」「同封」に触れているのに、文書のどこにも添付の欄(添付ファイル:)、ファイル名(見積書.pdf)、メーリングリストの添付の注記が無いとき指します。chaff はメールに実際に何が付いているかは見られないので、本文に添付を書き出す運用のときに役立ちます。
13
+ en: 'Writing "please find attached" and forgetting the attachment is one of the most common mistakes in work email. The recipient has to ask again, and the exchange takes another round. chaff points out a text that mentions an attachment ("attached", "enclosed") when the document shows none: no attachment field ("Attachment:", "Encl.:"), no file name ("quote.pdf"), and no mailing-list note about a removed attachment. chaff cannot see what is really attached to a message, so this helps where the files are listed in the text.'
14
+
15
+ message:
16
+ ja: 添付に触れていますが、添付の欄やファイル名がありません
17
+ en: An attachment is mentioned, but no attachment line or file name is shown
18
+
19
+ how_to_fix:
20
+ ja: ファイルを付けたか確かめてください。付けたなら、署名の前に「添付ファイル:見積書.pdf」のように添付したものを書きます。
21
+ en: 'Check that the file is attached. If it is, list it before the signature, as in "Attachment: quote.pdf".'
22
+
23
+ levels: { strict: error, normal: warning, relaxed: info }
24
+
25
+ use_for: [business/email, legal, docs, academic, literature, speech]
26
+ off_for:
27
+ legal: "An email's greeting, closing, subject and attachments: only the email and letter genre turns these on."
28
+ docs: "An email's greeting, closing, subject and attachments: only the email and letter genre turns these on."
29
+ academic: "An email's greeting, closing, subject and attachments: only the email and letter genre turns these on."
30
+ literature: "An email's greeting, closing, subject and attachments: only the email and letter genre turns these on."
31
+ speech: "An email's greeting, closing, subject and attachments: only the email and letter genre turns these on."
32
+
33
+ group: facts
34
+ summary:
35
+ ja: 本文が「添付します」と書いているのに、添付の欄もファイル名も無いメール
36
+ en: An email that says something is attached but shows no attachment line or file name
37
+ example:
38
+ ja:
39
+ config: { genre: business/email }
40
+ before: |
41
+ 件名: 見積書の送付
42
+
43
+ いつもお世話になっております。見積書を添付しましたので、ご確認ください。
44
+
45
+ よろしくお願いいたします。
46
+ after: |
47
+ 件名: 見積書の送付
48
+
49
+ いつもお世話になっております。見積書を添付しましたので、ご確認ください。
50
+
51
+ 添付ファイル:見積書.pdf
52
+
53
+ よろしくお願いいたします。
54
+ en:
55
+ config: { genre: business/email }
56
+ before: |
57
+ Subject: Quote
58
+
59
+ Dear Ms Lee,
60
+
61
+ I have attached the quote for the panels.
62
+
63
+ Best regards,
64
+ Ichiro
65
+ after: |
66
+ Subject: Quote
67
+
68
+ Dear Ms Lee,
69
+
70
+ I have attached the quote for the panels.
71
+
72
+ Attachment: quote.pdf
73
+
74
+ Best regards,
75
+ Ichiro
76
+ not_flagged:
77
+ ja: 「添付なし」「添付はありません」のような、付けていないと言う書き方と、引用した返信の中の「添付」は数えません。メール・手紙のジャンルでだけ見ます。
78
+ en: 'Phrases that say nothing is attached ("no attachment") or that use the word for something else ("attached to the wall"), and mentions inside a quoted reply, are not counted. Only the email and letter genre runs this rule.'
79
+ rewrite:
80
+ depth: light
81
+ ja:
82
+ direction: 書き手に、ファイルを付けたかを確かめてください。付けたなら、添付したもののファイル名を「添付ファイル:」の行に書きます。付けないなら、添付に触れた文を消すか、資料の在りか(共有フォルダの場所など)を書きます。ファイル名を推測で書きません。
83
+ pairs:
84
+ - before: 見積書を添付しましたので、ご確認ください。
85
+ after: |
86
+ 見積書を添付しましたので、ご確認ください。
87
+
88
+ 添付ファイル:見積書.pdf
89
+ - before: 資料を添付します。
90
+ after: 資料は共有フォルダの「2026年10月」に置きました。
91
+ keep:
92
+ - 用件の文
93
+ - 本文にあるファイルの名前
94
+ avoid:
95
+ - 本文に無いファイル名を作る
96
+ - 添付したと書き手に確かめずに書く
97
+ en:
98
+ direction: Ask the writer whether the file is attached. If it is, list its file name on an "Attachment:" line. If not, remove the sentence that mentions it, or say where the file is (a shared folder). Do not guess a file name.
99
+ pairs:
100
+ - before: I have attached the quote for the panels.
101
+ after: |
102
+ I have attached the quote for the panels.
103
+
104
+ Attachment: quote.pdf
105
+ - before: Please find the slides attached.
106
+ after: The slides are in the shared folder under "October 2026".
107
+ keep:
108
+ - the body's sentences
109
+ - file names the text already gives
110
+ avoid:
111
+ - inventing a file name
112
+ - saying the file is attached without asking the writer
@@ -0,0 +1,64 @@
1
+ id: baito-keigo
2
+ layer: L3
3
+ status: stable
4
+ how_to_find: phrase-match
5
+ word_list: baito-keigo
6
+ uses: [pos]
7
+ languages: [ja]
8
+ severity: warning
9
+
10
+ name:
11
+ ja: バイト敬語
12
+ en: Service-counter keigo
13
+
14
+ why:
15
+ ja: 「〜でよろしかったでしょうか」「こちらになります」「1000円からお預かりします」のように、接客の場で広まった言い方です。過去形にする必要の無い「よろしかった」、「です」の代わりの「になります」、金額に付けた「から」は、敬語の誤りとして挙げられることが多く、改まった文書では幼く読まれます。
16
+ en: Phrases spread at Japanese service counters (でよろしかったでしょうか, こちらになります, 円からお預かり). Guides list them as keigo mistakes, and in a formal document they read as careless.
17
+
18
+ message:
19
+ ja: 「{matched}」はバイト敬語と呼ばれる言い方です
20
+ en: '"{matched}" is service-counter keigo'
21
+
22
+ how_to_fix:
23
+ ja: 「よろしかったでしょうか」は「よろしいでしょうか」、「こちらになります」は「こちらです」、「1000円からお預かりします」は「1000円をお預かりします」に直してください。
24
+ en: Write よろしいでしょうか, こちらです, 円をお預かりします.
25
+
26
+ levels: { strict: 1, normal: 1, relaxed: 2 }
27
+
28
+ use_for: [blog, business, legal, docs, academic, literature, speech]
29
+ off_for:
30
+ literature: "Dialogue keeps a character's keigo, mistakes and all."
31
+ speech: "A transcript keeps the speaker's words: hedges and ら dropped as spoken."
32
+
33
+ group: wording
34
+ summary:
35
+ ja: 「〜でよろしかったでしょうか」「こちらになります」のように、接客の場で広まった誤りとされる敬語
36
+ en: Japanese service-counter keigo (でよろしかったでしょうか, こちらになります)
37
+ example:
38
+ ja:
39
+ before: ご注文は以上でよろしかったでしょうか。
40
+ after: ご注文は以上でよろしいでしょうか。
41
+
42
+ not_flagged:
43
+ ja: 一覧にある形だけを見ます。変化を言う「になります」(来月から有料になります)と、人から預かる「から」(お客様からお預かりした書類)は正しいので見ません。話し言葉と小説の台詞は話したとおりに書くので、文学と話し言葉のジャンルでは見ません。
44
+ en: Only the forms on chaff's list are checked. になります for a change and から for a person are correct and not reported. Literature and speech do not run this rule.
45
+ level_meaning:
46
+ ja: 当てはまる形が {limit} 箇所あれば指摘
47
+ en: reported once there are {limit}
48
+ rewrite:
49
+ depth: light
50
+ ja:
51
+ direction: 指摘された言い方を、普通の丁寧語に置き換えてください。「よろしかった」は「よろしい」、「になります」は「です」、金額の後の「から」は「を」にします。
52
+ pairs:
53
+ - before: ご注文は以上でよろしかったでしょうか。
54
+ after: ご注文は以上でよろしいでしょうか。
55
+ - before: 会議の資料はこちらになります。
56
+ after: 会議の資料はこちらです。
57
+ - before: 1万円からお預かりします。
58
+ after: 1万円をお預かりします。
59
+ keep:
60
+ - 丁寧さの度合い(です・ます、ございます)
61
+ - 金額や数
62
+ avoid:
63
+ - 変化を言う「になります」(来月から有料になります)まで「です」にする
64
+ - 丁寧語をやめて、くだけた言い方にする