ai-text-check 1.0.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 (150) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE +36 -0
  3. package/README.md +174 -0
  4. package/SOURCES.md +34 -0
  5. package/dist/cli.js +13834 -0
  6. package/dist/index.cjs +13366 -0
  7. package/dist/index.d.cts +36 -0
  8. package/dist/index.d.ts +36 -0
  9. package/dist/index.js +13351 -0
  10. package/dist/node.cjs +13581 -0
  11. package/dist/node.d.cts +41 -0
  12. package/dist/node.d.ts +41 -0
  13. package/dist/node.js +13564 -0
  14. package/dist/types-BlvvRFG5.d.cts +153 -0
  15. package/dist/types-BlvvRFG5.d.ts +153 -0
  16. package/package.json +115 -0
  17. package/slop-gate.config.json +3 -0
  18. package/vale/styles/AiTextCheck/DiveDeep.yml +5 -0
  19. package/vale/styles/AiTextCheck/Furthermore.yml +5 -0
  20. package/vale/styles/AiTextCheck/ImportantToNote.yml +5 -0
  21. package/vale/styles/AiTextCheck/InTodaysWorld.yml +5 -0
  22. package/vale/styles/AiTextCheck/LeverageUtilize.yml +5 -0
  23. package/vale/styles/AiTextCheck/meta.json +3 -0
  24. package/vale/styles/Google/AMPM.yml +9 -0
  25. package/vale/styles/Google/Acronyms.yml +64 -0
  26. package/vale/styles/Google/Colons.yml +8 -0
  27. package/vale/styles/Google/Contractions.yml +30 -0
  28. package/vale/styles/Google/DateFormat.yml +9 -0
  29. package/vale/styles/Google/Ellipses.yml +9 -0
  30. package/vale/styles/Google/EmDash.yml +12 -0
  31. package/vale/styles/Google/Exclamation.yml +12 -0
  32. package/vale/styles/Google/FirstPerson.yml +13 -0
  33. package/vale/styles/Google/Gender.yml +9 -0
  34. package/vale/styles/Google/GenderBias.yml +43 -0
  35. package/vale/styles/Google/HeadingPunctuation.yml +13 -0
  36. package/vale/styles/Google/Headings.yml +29 -0
  37. package/vale/styles/Google/LICENSE +21 -0
  38. package/vale/styles/Google/Latin.yml +11 -0
  39. package/vale/styles/Google/LyHyphens.yml +14 -0
  40. package/vale/styles/Google/OptionalPlurals.yml +12 -0
  41. package/vale/styles/Google/Ordinal.yml +7 -0
  42. package/vale/styles/Google/OxfordComma.yml +7 -0
  43. package/vale/styles/Google/Parens.yml +7 -0
  44. package/vale/styles/Google/Passive.yml +184 -0
  45. package/vale/styles/Google/Periods.yml +7 -0
  46. package/vale/styles/Google/Quotes.yml +7 -0
  47. package/vale/styles/Google/Ranges.yml +7 -0
  48. package/vale/styles/Google/Semicolons.yml +8 -0
  49. package/vale/styles/Google/Slang.yml +11 -0
  50. package/vale/styles/Google/Spacing.yml +10 -0
  51. package/vale/styles/Google/Spelling.yml +10 -0
  52. package/vale/styles/Google/Units.yml +8 -0
  53. package/vale/styles/Google/We.yml +11 -0
  54. package/vale/styles/Google/Will.yml +7 -0
  55. package/vale/styles/Google/WordList.yml +80 -0
  56. package/vale/styles/Google/meta.json +4 -0
  57. package/vale/styles/Google/vocab.txt +0 -0
  58. package/vale/styles/ai-tells/AIAdjectiveNounPairs.yml +8 -0
  59. package/vale/styles/ai-tells/AICompoundPhrases.yml +139 -0
  60. package/vale/styles/ai-tells/AbsoluteAssertions.yml +21 -0
  61. package/vale/styles/ai-tells/AffirmativeFormulas.yml +101 -0
  62. package/vale/styles/ai-tells/AnnouncementHeadings.yml +16 -0
  63. package/vale/styles/ai-tells/AnthropomorphicJustification.yml +115 -0
  64. package/vale/styles/ai-tells/ClosingPleasantries.yml +120 -0
  65. package/vale/styles/ai-tells/ColloquialAssessments.yml +47 -0
  66. package/vale/styles/ai-tells/ColonUsage.yml +18 -0
  67. package/vale/styles/ai-tells/ConclusionMarkers.yml +23 -0
  68. package/vale/styles/ai-tells/ContrastiveFormulas.yml +188 -0
  69. package/vale/styles/ai-tells/ContrastiveNegation.yml +22 -0
  70. package/vale/styles/ai-tells/DefensiveHedges.yml +63 -0
  71. package/vale/styles/ai-tells/DespiteChallenges.yml +32 -0
  72. package/vale/styles/ai-tells/EmDashUsage.yml +9 -0
  73. package/vale/styles/ai-tells/EmphaticCopula.yml +30 -0
  74. package/vale/styles/ai-tells/EmptyPadding.yml +10 -0
  75. package/vale/styles/ai-tells/EmptyPaddingStacked.yml +11 -0
  76. package/vale/styles/ai-tells/ExplainerHeadings.yml +20 -0
  77. package/vale/styles/ai-tells/FalseBalance.yml +31 -0
  78. package/vale/styles/ai-tells/FalseExclusivity.yml +41 -0
  79. package/vale/styles/ai-tells/FigurativeLands.yml +79 -0
  80. package/vale/styles/ai-tells/FillerPhrases.yml +78 -0
  81. package/vale/styles/ai-tells/FormalRegister.yml +58 -0
  82. package/vale/styles/ai-tells/FormalTransitions.yml +74 -0
  83. package/vale/styles/ai-tells/GrowthMetaphors.yml +28 -0
  84. package/vale/styles/ai-tells/HedgingPhrases.yml +85 -0
  85. package/vale/styles/ai-tells/LICENSE +21 -0
  86. package/vale/styles/ai-tells/ListIntroductions.yml +22 -0
  87. package/vale/styles/ai-tells/MarketingHeadings.yml +19 -0
  88. package/vale/styles/ai-tells/Metacommentary.yml +113 -0
  89. package/vale/styles/ai-tells/MicDrop.yml +205 -0
  90. package/vale/styles/ai-tells/MicDropHeadings.yml +20 -0
  91. package/vale/styles/ai-tells/NarrativePivots.yml +59 -0
  92. package/vale/styles/ai-tells/OpeningCliches.yml +98 -0
  93. package/vale/styles/ai-tells/OrganicConsequence.yml +38 -0
  94. package/vale/styles/ai-tells/OverusedVocabulary.yml +185 -0
  95. package/vale/styles/ai-tells/OverusedVocabularyVerbs.yml +7 -0
  96. package/vale/styles/ai-tells/ParallelStaccato.yml +34 -0
  97. package/vale/styles/ai-tells/ParticipialPadding.yml +74 -0
  98. package/vale/styles/ai-tells/PromotionalPuffery.yml +63 -0
  99. package/vale/styles/ai-tells/RedundantPrecaution.yml +8 -0
  100. package/vale/styles/ai-tells/ResonateOveruse.yml +13 -0
  101. package/vale/styles/ai-tells/RestatementMarkers.yml +36 -0
  102. package/vale/styles/ai-tells/RhetoricalDevices.yml +53 -0
  103. package/vale/styles/ai-tells/RhetoricalSelfAnswer.yml +51 -0
  104. package/vale/styles/ai-tells/SelfReference.yml +52 -0
  105. package/vale/styles/ai-tells/SemicolonUsage.yml +31 -0
  106. package/vale/styles/ai-tells/SequencingMarkers.yml +41 -0
  107. package/vale/styles/ai-tells/ServesAsDodge.yml +66 -0
  108. package/vale/styles/ai-tells/ShipOveruse.yml +16 -0
  109. package/vale/styles/ai-tells/StackedAnaphora.yml +185 -0
  110. package/vale/styles/ai-tells/StrategyBuzzwords.yml +32 -0
  111. package/vale/styles/ai-tells/StructureAnnouncements.yml +22 -0
  112. package/vale/styles/ai-tells/SycophancyMarkers.yml +26 -0
  113. package/vale/styles/ai-tells/UnpackExplore.yml +21 -0
  114. package/vale/styles/ai-tells/UrgencyInflation.yml +70 -0
  115. package/vale/styles/ai-tells/VagueAttributions.yml +67 -0
  116. package/vale/styles/ai-tells/VerbTricolon.yml +78 -0
  117. package/vale/styles/ai-tells/VerbTricolonDensity.yml +7 -0
  118. package/vale/styles/ai-tells/WrapUpHeadings.yml +22 -0
  119. package/vale/styles/signs-of-ai-writing/AspectOveruse.yml +13 -0
  120. package/vale/styles/signs-of-ai-writing/ChatGPTArtifacts.yml +12 -0
  121. package/vale/styles/signs-of-ai-writing/ChatbotCommunication.yml +21 -0
  122. package/vale/styles/signs-of-ai-writing/CitationArtifacts.yml +10 -0
  123. package/vale/styles/signs-of-ai-writing/ColonOveruse.yml +11 -0
  124. package/vale/styles/signs-of-ai-writing/Enumeration.yml +11 -0
  125. package/vale/styles/signs-of-ai-writing/Hedging.yml +6 -0
  126. package/vale/styles/signs-of-ai-writing/Intensifiers.yml +17 -0
  127. package/vale/styles/signs-of-ai-writing/KnowledgeCutoff.yml +14 -0
  128. package/vale/styles/signs-of-ai-writing/LICENSE +12 -0
  129. package/vale/styles/signs-of-ai-writing/Lists.yml +8 -0
  130. package/vale/styles/signs-of-ai-writing/Narrative.yml +15 -0
  131. package/vale/styles/signs-of-ai-writing/Passive.yml +16 -0
  132. package/vale/styles/signs-of-ai-writing/Placeholders.yml +17 -0
  133. package/vale/styles/signs-of-ai-writing/ScareQuotes.yml +6 -0
  134. package/vale/styles/signs-of-ai-writing/Symbolism.yml +23 -0
  135. package/vale/styles/signs-of-ai-writing/Transitions.yml +17 -0
  136. package/vale/styles/signs-of-ai-writing/UTMParameters.yml +10 -0
  137. package/vale/styles/signs-of-ai-writing/Vocabulary.yml +27 -0
  138. package/vale/styles/signs-of-ai-writing/meta.json +4 -0
  139. package/vale/styles/write-good/Cliches.yml +702 -0
  140. package/vale/styles/write-good/E-Prime.yml +32 -0
  141. package/vale/styles/write-good/Illusions.yml +11 -0
  142. package/vale/styles/write-good/LICENSE +21 -0
  143. package/vale/styles/write-good/Passive.yml +183 -0
  144. package/vale/styles/write-good/README.md +27 -0
  145. package/vale/styles/write-good/So.yml +5 -0
  146. package/vale/styles/write-good/ThereIs.yml +6 -0
  147. package/vale/styles/write-good/TooWordy.yml +221 -0
  148. package/vale/styles/write-good/Weasel.yml +29 -0
  149. package/vale/styles/write-good/meta.json +4 -0
  150. package/vale/vale.ini +38 -0
@@ -0,0 +1,139 @@
1
+ ---
2
+ extends: existence
3
+ message: "AI fingerprint: '%s'. Rewrite with concrete specifics instead of this clichéd phrase."
4
+ level: error
5
+ ignorecase: true
6
+ tokens:
7
+ - rich tapestry
8
+ - rich tapestries
9
+ - tapestry of
10
+ - intricate tapestry
11
+ - complex and multifaceted
12
+ - multifaceted and complex
13
+ - intricate interplay
14
+ - delicate balance
15
+ - delicate interplay
16
+ - dynamic interplay
17
+ - crucial role
18
+ - played a crucial role
19
+ - plays a crucial role
20
+ - vital role
21
+ - pivotal role
22
+ - key role
23
+ - instrumental role
24
+ - cutting-edge
25
+ - game-changer
26
+ - game-changing
27
+ - paradigm shift
28
+ - sea change
29
+ - tipping point
30
+ - watershed moment
31
+ - double-edged sword
32
+ - slippery slope
33
+ - tip of the iceberg
34
+ - at the forefront
35
+ - on the cutting edge
36
+ - paving the way
37
+ - laid the groundwork
38
+ - lays the groundwork
39
+ - sets the stage
40
+ - set the stage
41
+ - a testament to
42
+ - stands as a testament
43
+ - serve as a reminder
44
+ - serves as a reminder
45
+ - it remains to be seen
46
+ - only time will tell
47
+ - the jury is still out
48
+ - takes center stage
49
+ - take center stage
50
+ - took center stage
51
+ - paints a picture of
52
+ - paint a picture of
53
+ - painted a picture of
54
+ - is not without its challenges
55
+ - are not without their challenges
56
+ - is not without challenges
57
+ - whether we like it or not
58
+ - whether you like it or not
59
+ - a cornerstone of
60
+ - the transformative power of
61
+ - deeply rooted in
62
+ - deeply rooted
63
+ - the hallmark of
64
+ - a hallmark of
65
+ - moving the needle
66
+ - moves the needle
67
+ - moved the needle
68
+ - move the needle
69
+ - nudge the needle
70
+ - nudges the needle
71
+ - nudged the needle
72
+ - unlocks new
73
+ - unlocked new
74
+ - unlocking new
75
+ - unlock new
76
+ - unlocks the potential
77
+ - unlock the potential
78
+ - unlocks the power
79
+ - unlock the power
80
+ - unlocks the value
81
+ - unlock the value
82
+ - unlocks capabilities
83
+ - unlock capabilities
84
+ - unlocks possibilities
85
+ - unlock possibilities
86
+
87
+ # "real" as intensifier before an abstract noun.
88
+ # AI reaches for "a real choice" / "a real difference" to inflate
89
+ # weight where a plain noun would do. Bare "real" is too broad
90
+ # (real-time, real estate, real world), so this is enumerated.
91
+ - a real choice
92
+ - a real option
93
+ - a real difference
94
+ - a real test
95
+ - a real question
96
+ - a real chance
97
+ - a real problem
98
+ - a real shot
99
+ - a real risk
100
+ - a real cost
101
+ - a real benefit
102
+ - real value
103
+ - real progress
104
+ - real flexibility
105
+ - real benefits
106
+ - real costs
107
+ - real impact
108
+ - real leverage
109
+ - real ownership
110
+ - real accountability
111
+ - real consequences
112
+ - real tradeoffs
113
+ - real trade-offs
114
+ - real choices
115
+ - real options
116
+ - real differences
117
+
118
+ # Investigation-thread metaphors: AI's preferred way to describe
119
+ # "open questions" or "loose ends." Tutorial-blog tone.
120
+ - threads to pull on
121
+ - thread to pull on
122
+ - threads to pull
123
+ - thread to pull
124
+ - loose threads to pull
125
+ - loose threads to chase
126
+ - another thread to pull
127
+ - more threads to pull
128
+
129
+ # Solidification metaphors: the surface/design/contract "hardens"
130
+ # before some deadline. AI reaches for this constantly when
131
+ # describing in-progress work or pre-release windows.
132
+ # Broad regex catches "before/after X hardens" for any 1-6
133
+ # word X.
134
+ - (?:before|after) [^.,;:!?]{1,40} hardens
135
+ - (?:before|after) [^.,;:!?]{1,40} hardened
136
+ - (?:before|after) [^.,;:!?]{1,40} solidifies
137
+ - (?:before|after) [^.,;:!?]{1,40} solidified
138
+ - (?:before|after) [^.,;:!?]{1,40} ossifies
139
+ - (?:before|after) [^.,;:!?]{1,40} ossified
@@ -0,0 +1,21 @@
1
+ ---
2
+ extends: existence
3
+ message: "AI overreach: '%s'. Verify this claim or soften it."
4
+ level: error
5
+ ignorecase: true
6
+ tokens:
7
+ - the only way to
8
+ - the only real solution
9
+ - the only way forward
10
+ - the single most important
11
+ - the most important thing is
12
+ - above all else
13
+ - above everything else
14
+ - more than anything else
15
+ - there is no better
16
+ - there is no other way
17
+ - there can be no doubt
18
+ - make no mistake
19
+ - make no mistake about it
20
+ - there's no denying
21
+ - there is no denying
@@ -0,0 +1,101 @@
1
+ ---
2
+ extends: existence
3
+ message: "AI affirmation: '%s'. Cut the flourish and state the point plainly."
4
+ level: error
5
+ tokens:
6
+ # "And that's [the/what] X" patterns
7
+ - "[Aa]nd that'?s the beauty of it"
8
+ - "[Aa]nd that'?s what makes it [^.!?]+"
9
+ - "[Aa]nd that'?s what makes this [^.!?]+"
10
+ - "[Aa]nd that'?s exactly (?:what|why|how) [^.!?]+"
11
+ - "[Aa]nd that'?s the (?:key|real|true) [^.!?]+"
12
+ - "[Aa]nd that'?s precisely (?:what|why|how) [^.!?]+"
13
+
14
+ # "That's the X" standalone affirmations
15
+ - "[Tt]hat'?s the key (?:insight|takeaway|point|difference)"
16
+ - "[Tt]hat'?s the beauty of [^.!?]+"
17
+ - "[Tt]hat'?s the power of [^.!?]+"
18
+ - "[Tt]hat'?s the magic of [^.!?]+"
19
+ - "[Tt]hat'?s the essence of [^.!?]+"
20
+ - "[Tt]hat'?s the heart of [^.!?]+"
21
+ - "[Tt]hat'?s the crux of [^.!?]+"
22
+ - "[Tt]hat'?s the real (?:question|issue|challenge|opportunity)"
23
+
24
+ # "This is what X looks like" patterns
25
+ - "[Tt]his is what [^.!?]+ looks like"
26
+ - "[Tt]hat'?s what [^.!?]+ looks like"
27
+ - "[Tt]his is what it means to [^.!?]+"
28
+ - "[Tt]hat'?s what it means to [^.!?]+"
29
+
30
+ # "Here's the thing" and variants
31
+ - "[Hh]ere'?s the thing"
32
+ - "[Hh]ere'?s the deal"
33
+ - "[Hh]ere'?s the truth"
34
+ - "[Hh]ere'?s the reality"
35
+ - "[Hh]ere'?s the kicker"
36
+ - "[Hh]ere'?s the catch"
37
+ - "[Hh]ere'?s the secret"
38
+ - "[Hh]ere'?s what (?:most people|many|few) [^.!?]+"
39
+ - "[Hh]ere'?s why (?:this|that|it) matters"
40
+
41
+ # "The [adjective] X is" revelation patterns
42
+ - "[Tt]he (?:key|fundamental|crucial|core|central|critical|essential|main|primary|underlying|basic|real|true) (?:insight|point|takeaway|lesson|idea|observation|realization|understanding|truth|message|principle) is"
43
+ # "[Adjective] Xs are" revelation patterns (optional article)
44
+ - "(?:[Tt]he )?(?:[Kk]ey|[Ff]undamental|[Cc]rucial|[Cc]ore|[Cc]entral|[Cc]ritical|[Ee]ssential|[Mm]ain|[Pp]rimary|[Uu]nderlying|[Bb]asic|[Rr]eal|[Tt]rue) (?:insights|points|takeaways|lessons|ideas|observations|realizations|understandings|truths|messages|principles) are"
45
+ # Simpler "The X is" patterns
46
+ - "[Tt]he takeaway (?:here )?is [^.!?]+"
47
+ - "[Tt]he lesson (?:here )?is [^.!?]+"
48
+ - "[Tt]he point (?:here )?is [^.!?]+"
49
+ - "[Tt]he insight (?:here )?is [^.!?]+"
50
+ - "[Tt]he bottom line is [^.!?]+"
51
+
52
+ # "And X is [exactly/precisely] what/why" patterns
53
+ - "[Aa]nd (?:this|that) is (?:exactly|precisely) (?:what|why|how) [^.!?]+"
54
+ - "[Aa]nd (?:this|that)'?s (?:exactly|precisely) (?:what|why|how) [^.!?]+"
55
+
56
+ # "Think about it" and "Let that sink in" patterns
57
+ - "[Tt]hink about (?:it|that) for a (?:moment|second)"
58
+ - "[Ll]et that sink in"
59
+ - "[Rr]ead that again"
60
+ - "[Ll]et me say that again"
61
+
62
+ # "X, and that's [rare/powerful/significant]"
63
+ - ", and that'?s (?:rare|powerful|significant|remarkable|important|huge|massive)"
64
+ - "—and that'?s (?:rare|powerful|significant|remarkable|important|huge|massive)"
65
+
66
+ # "The real X is Y" revelation
67
+ - "[Tt]he real (?:secret|trick|key|answer|solution) is [^.!?]+"
68
+ - "[Tt]he real (?:question|issue|problem|challenge) isn'?t [^.!?]+"
69
+
70
+ # "What X really means" patterns
71
+ - "[Ww]hat (?:this|that) really means is [^.!?]+"
72
+ - "[Ww]hat (?:this|that) tells us is [^.!?]+"
73
+ - "[Ww]hat (?:this|that) shows us is [^.!?]+"
74
+
75
+ # "And here's why" / "And here's the thing"
76
+ - "[Aa]nd here'?s (?:why|the thing|the kicker|the catch)"
77
+ - "[Bb]ut here'?s (?:why|the thing|the kicker|the catch)"
78
+
79
+ # "Let me be clear/honest" patterns
80
+ - "[Ll]et me be (?:clear|honest|direct|frank|real)"
81
+ - "[Ll]et'?s be (?:clear|honest|direct|frank|real)"
82
+ - "[Tt]o be (?:clear|honest|direct|frank)"
83
+
84
+ # "Have no doubt" / "Rest assured" patterns
85
+ - "[Hh]ave no doubt"
86
+ - "[Rr]est assured"
87
+
88
+ # "The truth is" patterns
89
+ - "[Tt]he truth is"
90
+ - "[Tt]he reality is"
91
+ - "[Tt]he fact is"
92
+ - "[Tt]he simple truth is"
93
+ - "[Tt]he hard truth is"
94
+ - "[Tt]he uncomfortable truth is"
95
+
96
+ # "Spoiler alert" / meta-commentary
97
+ - "[Ss]poiler alert"
98
+ - "[Pp]lot twist"
99
+ - "[Ff]un fact"
100
+ - "[Pp]ro tip"
101
+ - "[Hh]ot take"
@@ -0,0 +1,16 @@
1
+ ---
2
+ extends: existence
3
+ message: "AI announcement heading: '%s'. Cut the heading or rename it to the topic."
4
+ level: error
5
+ ignorecase: true
6
+ scope: heading
7
+ tokens:
8
+ - What You'll Learn
9
+ - What You Will Learn
10
+ - What We'll Cover
11
+ - What We Will Cover
12
+ - What to Expect
13
+ - What We're Building
14
+ - What We Are Building
15
+ - Here's What You'll Get
16
+ - Here's What You Get
@@ -0,0 +1,115 @@
1
+ ---
2
+ extends: existence
3
+ message: "AI cliché: '%s'. Say what you mean directly."
4
+ level: error
5
+ ignorecase: true
6
+ tokens:
7
+ # "Earning" family
8
+ - earns? its keep
9
+ - earns? its place
10
+ - earns? its spot
11
+ - earned its keep
12
+ - earned its place
13
+ - earned its spot
14
+ - more than earns?
15
+
16
+ # "Paying" family
17
+ - pays? for itself
18
+ - pays? dividends
19
+ - pays? its rent
20
+ - more than pays? for itself
21
+ - paid for itself
22
+ - paid dividends
23
+ - paid its rent
24
+ - paying its rent
25
+
26
+ # "Weight" family
27
+ - pulls? its weight
28
+ - carries? its weight
29
+ - carrying its weight
30
+ - pulling its weight
31
+ - punche?s? above its weight
32
+ - punching above its weight
33
+ - worth its weight
34
+
35
+ # "Lifting" family
36
+ - does? the heavy lifting
37
+ - does? a lot of heavy lifting
38
+ - doing the heavy lifting
39
+ - doing a lot of heavy lifting
40
+ - does? the legwork
41
+ - doing the legwork
42
+ - do the heavy lifting
43
+
44
+ # "Load-bearing" / "doing work" family.
45
+ - load-bearing
46
+ - load bearing
47
+ - does? the work
48
+ - doing the work
49
+ - does? the real work
50
+ - doing the real work
51
+ - does? the actual work
52
+ - doing the actual work
53
+ - does? the hard work
54
+ - doing the hard work
55
+ - does? the important work
56
+ - doing the important work
57
+ - does? most of the work
58
+ - doing most of the work
59
+
60
+ # "Standing" family
61
+ - stands? on its own
62
+ - standing on its own
63
+ - holds? its own
64
+ - holding its own
65
+ - speaks? for itself
66
+ - speaking for itself
67
+ - justifies? its existence
68
+ - justify its existence
69
+ - justifying its existence
70
+
71
+ # "Deserving" family.
72
+ # Treats abstractions and inanimate subjects as moral agents owed
73
+ # consideration. The gerund shape ("deserves noting", "deserves
74
+ # exploring") is the strongest AI tell — the older idiomatic
75
+ # phrases ("deserves a closer look", "deserves mention") are
76
+ # included for completeness.
77
+ - deserves? attention
78
+ - deserves? mention
79
+ - deserves? mentioning
80
+ - deserves? noting
81
+ - deserves? exploring
82
+ - deserves? unpacking
83
+ - deserves? examining
84
+ - deserves? scrutiny
85
+ - deserves? consideration
86
+ - deserves? careful consideration
87
+ - deserves? careful thought
88
+ - deserves? careful attention
89
+ - deserves? a closer look
90
+ - deserves? a second look
91
+ - deserves? a moment
92
+ - deserves? a mention
93
+ - deserves? credit
94
+ - deserves? confirming
95
+ - deserves? checking
96
+ - deserves? rethinking
97
+ - deserves? revisiting
98
+
99
+ # "Harm" family.
100
+ # Treats inanimate subjects (a check, a config, a flag) as moral
101
+ # agents capable of inflicting or withholding damage — the
102
+ # Hippocratic register applied to code. "The check passes too
103
+ # without doing harm." Technical writing rarely needs it; just say
104
+ # what the change does or doesn't do.
105
+ # NOTE: legitimate in medical / health-software prose ("the device
106
+ # must do no harm"). No regex-clean way to detect that context;
107
+ # disable this rule for those files via .vale.ini if needed.
108
+ - does? harm
109
+ - doing harm
110
+ - does? no harm
111
+ - doing no harm
112
+ - without doing harm
113
+ - causes? harm
114
+ - causing harm
115
+ - without causing harm
@@ -0,0 +1,120 @@
1
+ ---
2
+ extends: existence
3
+ message: "AI closing: '%s'. Delete it and end with your actual content."
4
+ level: error
5
+ ignorecase: true
6
+ tokens:
7
+ # "I hope this helps" variants
8
+ - I hope this helps
9
+ - I hope this was helpful
10
+ - I hope this is helpful
11
+ - I hope this proves helpful
12
+ - I hope this will be helpful
13
+ - Hope this helps
14
+ - Hope this was helpful
15
+ - I hope this clears things up
16
+ - I hope this cleared things up
17
+ - I hope this answers your question
18
+ - I hope that answers your question
19
+ - I hope this helps clarify
20
+ - I hope this gives you a better understanding
21
+ - I hope you find this helpful
22
+ - I hope you found this helpful
23
+ - I hope you find this useful
24
+ - I hope you found this useful
25
+ - I hope this is what you were looking for
26
+ - I hope this pointed you in the right direction
27
+ - I hope this sheds some light
28
+ - I hope this makes things clearer
29
+ - Hopefully this helps
30
+ - Hopefully this is helpful
31
+
32
+ # "Feel free to" variants
33
+ - Feel free to ask
34
+ - Feel free to reach out
35
+ - Feel free to let me know
36
+ - Feel free to contact
37
+ - Feel free to ask questions
38
+ - Feel free to ask if you
39
+ - Feel free to ask if there
40
+ - Feel free to drop
41
+ - Please feel free to ask
42
+ - Please feel free to reach out
43
+
44
+ # "Don't hesitate" variants
45
+ - Don't hesitate to ask
46
+ - Don't hesitate to reach out
47
+ - Don't hesitate to contact
48
+ - Don't hesitate to get in touch
49
+ - Don't hesitate to drop
50
+ - Please don't hesitate to ask
51
+ - Please don't hesitate to reach out
52
+ - Please don't hesitate to contact
53
+
54
+ # "Let me know if" variants
55
+ - Let me know if you have any questions
56
+ - Let me know if you have further questions
57
+ - Let me know if you have any other questions
58
+ - Let me know if you have additional questions
59
+ - Let me know if you need anything else
60
+ - Let me know if you need further clarification
61
+ - Let me know if you need any clarification
62
+ - Let me know if you'd like more information
63
+ - Let me know if you'd like me to elaborate
64
+ - Let me know if you'd like me to clarify
65
+ - Let me know if you'd like me to expand
66
+ - Let me know if there's anything else
67
+ - Let me know if there's anything I can help with
68
+ - Let me know if anything is unclear
69
+ - Let me know if that makes sense
70
+ - Let me know if you want me to
71
+
72
+ # "If you have any questions" standalone variants
73
+ - If you have any questions, feel free
74
+ - If you have any further questions
75
+ - If you have any additional questions
76
+ - If you have any more questions
77
+ - If you need any clarification
78
+ - If you need more information
79
+ - If anything is unclear
80
+ - If you'd like more details
81
+ - If you'd like me to elaborate
82
+ - If you want me to expand
83
+
84
+ # "Happy to" variants
85
+ - Happy to help
86
+ - Happy to answer
87
+ - Happy to clarify
88
+ - Happy to elaborate
89
+ - Happy to explain
90
+ - Happy to assist
91
+ - Happy to walk you through
92
+ - I'm happy to help
93
+ - I'd be happy to help
94
+ - I'm happy to clarify
95
+ - I'd be happy to clarify
96
+ - I'm happy to elaborate
97
+ - I'd be happy to elaborate
98
+ - I'm happy to answer
99
+ - I'd be happy to answer
100
+ - I'm happy to walk you through
101
+ - I'd be happy to walk you through
102
+
103
+ # "I'm here to help" variants
104
+ - I'm here to help
105
+ - I'm here if you need
106
+ - I'm here if you have
107
+ - I'm always here to help
108
+ - We're here to help
109
+ - We're always happy to help
110
+
111
+ # Encouragement/well-wishing closers
112
+ - Best of luck
113
+ - Good luck with your
114
+ - Good luck on your
115
+ - You've got this
116
+ - Happy coding
117
+ - Happy learning
118
+ - Happy building
119
+ - Happy exploring
120
+ - Enjoy the journey
@@ -0,0 +1,47 @@
1
+ ---
2
+ extends: existence
3
+ message: "AI colloquial assessment: '%s'. State the assessment directly."
4
+ level: error
5
+ nonword: true
6
+ ignorecase: true
7
+ tokens:
8
+ # ==========================================================================
9
+ # "X lands" — figurative landing of jokes, points, arguments, analogies.
10
+ # Anchored to a narrow noun list (and to "really/actually lands"). The broad
11
+ # arrival-verb sense (a request lands on a node, a PR lands in main) lives in
12
+ # FigurativeLands, which exempts these assessment nouns and literal landings.
13
+ # ==========================================================================
14
+ - "[Tt]he (?:joke|point|argument|line|metaphor|analogy|comparison|critique|distinction|observation|framing|insight|takeaway|punchline|callback|bit|reference|callout) (?:really |actually |just |finally )?lands?\\b"
15
+ - "[Tt]he (?:joke|point|argument|line|metaphor|analogy|comparison|critique|distinction|observation|framing|insight|takeaway|punchline|callback|bit|reference|callout) (?:really|actually|just|finally) landed\\b"
16
+ - "\\b(?:really|actually) lands\\b"
17
+ - "\\b(?:really|actually) landed\\b"
18
+ # Figurative "lands" beyond the curated nouns: abstract subjects and
19
+ # assessment completions that can't be a literal landing.
20
+ - "\\bland(?:s|ed)? flat\\b"
21
+ - "\\bwhere (?:it|this|that|everything|the whole thing) (?:really |finally |ultimately |just |all )?lands?\\b"
22
+
23
+ # ==========================================================================
24
+ # "X is the move" — anchored verdict. Bare "the move" is too broad (chess,
25
+ # dance, real-estate), so we only catch the assessment shape.
26
+ # ==========================================================================
27
+ - "\\bis the move\\b"
28
+ - "\\bwas the move\\b"
29
+ - "\\b(?:that|this)'?s the move\\b"
30
+ - "\\b(?:that|this) is the move\\b"
31
+ - "\\bthe right move\\b"
32
+ - "\\bthe smart move\\b"
33
+ - "\\bthe obvious move\\b"
34
+ - "\\bthe play here\\b"
35
+ - "\\bthe move here\\b"
36
+
37
+ # ==========================================================================
38
+ # "What really matters" — the knowing-tone matters phrase. Bare "matters" is
39
+ # ordinary English; this targets the rhetorical wind-up.
40
+ # ==========================================================================
41
+ - "\\bwhat really matters\\b"
42
+ - "\\bwhat truly matters\\b"
43
+ - "\\bwhat actually matters\\b"
44
+ - "\\bwhat genuinely matters\\b"
45
+ - "\\bwhat matters most\\b"
46
+ - "\\ball that (?:really |truly |actually )?matters\\b"
47
+ - "\\bthe only thing that (?:really |truly |actually )?matters\\b"
@@ -0,0 +1,18 @@
1
+ ---
2
+ extends: existence
3
+ message: "AI punctuation: '%s'. Lowercase the word after the colon unless it is a proper noun."
4
+ level: error
5
+ nonword: true
6
+ # Replaces Google.Colons, which checks heading text too and flags the title
7
+ # half of "Appendix A: Glossary". Headings are exempt here; everywhere else
8
+ # a capitalized word after a colon is the "Label: Sentence" construction.
9
+ # The lookbehind (from Google's rule) skips a colon preceded by another
10
+ # colon-joined run, so "10:30: Meeting" stays clean. The token also skips
11
+ # acronyms and the pronoun "I", which stay capitalized in any position.
12
+ # Known limitation: Vale strips markup before matching, so a run-in bold
13
+ # label ("**Note:** Like this.") flags too. Disable the rule where that
14
+ # convention is established.
15
+ scope:
16
+ - "~heading"
17
+ tokens:
18
+ - "(?<!:[^ ]+?):\\s(?!I\\b)[A-Z][a-z]*\\b"
@@ -0,0 +1,23 @@
1
+ ---
2
+ extends: existence
3
+ message: "AI conclusion: '%s'. Delete this and end on your final point."
4
+ level: error
5
+ ignorecase: true
6
+ tokens:
7
+ - In conclusion
8
+ - In summary
9
+ - To summarize
10
+ - To sum up
11
+ - To conclude
12
+ - In closing
13
+ - Ultimately
14
+ - All in all
15
+ - At the end of the day
16
+ - When all is said and done
17
+ - The bottom line is
18
+ - In the final analysis
19
+ - Taking everything into account
20
+ - Taking all of this into account
21
+ - Overall
22
+ - On the whole
23
+ - By way of conclusion