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,74 @@
1
+ ---
2
+ extends: existence
3
+ message: "AI transition: '%s'. Delete it, or use a simpler connector like 'and', 'but', or 'so'."
4
+ level: error
5
+ ignorecase: true
6
+ tokens:
7
+ - Moreover
8
+ - Furthermore
9
+ - Additionally
10
+ - Consequently
11
+ - Subsequently
12
+ - Nevertheless
13
+ - Nonetheless
14
+ - Conversely
15
+ - Accordingly
16
+ - Hence
17
+ - Thus
18
+ - Therefore
19
+ - Thereby
20
+ - Henceforth
21
+ - Likewise
22
+ - Similarly
23
+ - In addition
24
+ - In contrast
25
+ - On the contrary
26
+ - By contrast
27
+ - As a result
28
+ - For instance
29
+ - For example
30
+ - In particular
31
+ - Specifically
32
+ - Notably
33
+ - Importantly
34
+ - Significantly
35
+ - Crucially
36
+ - Essentially
37
+ - Fundamentally
38
+ - With that in mind
39
+ - With this in mind
40
+ - To that end
41
+ - In turn
42
+ - Building on this
43
+ - Building on that
44
+ - That's why
45
+ - This is why
46
+ - Which is why
47
+ - That's because
48
+ - This is because
49
+ - What's more
50
+ - What is more
51
+ - Not to mention
52
+ - To that point
53
+ - On that note
54
+ - On a related note
55
+ - Case in point
56
+ - A case in point
57
+ - Of note
58
+ - Worth noting
59
+ - Along the same lines
60
+ - In the same vein
61
+ - By extension
62
+ - To top it off
63
+ - That's not all
64
+ - Better yet
65
+ - Even better
66
+ - Equally important
67
+ - Equally crucial
68
+ - Equally significant
69
+ - That is to say
70
+ - In light of this
71
+ - In light of that
72
+ - Given this
73
+ - Given that
74
+ - Given the above
@@ -0,0 +1,28 @@
1
+ ---
2
+ extends: existence
3
+ message: "AI growth metaphor: '%s'. Say what literally happens, or disable this rule for medical or nature writing."
4
+ level: error
5
+ nonword: true
6
+ ignorecase: true
7
+ # The startup-as-organism register: a product is conceived, incubated, born, and
8
+ # raised to maturity. The biological-development words are flagged broadly and
9
+ # disable-in-domain (medical, nature, agriculture, parenting) covers their
10
+ # literal senses (an egg incubates, a fledgling is a young bird, a gestation
11
+ # period). The finance and tech-overloaded words (viable, seed, organic) are
12
+ # scoped to their startup phrases so the random seed, a viable option, and
13
+ # organic produce stay clean. "Infancy" is scoped to the metaphor phrase so
14
+ # literal babyhood does not fire.
15
+ tokens:
16
+ # Biological-development words (broad)
17
+ - "\\bincubat(?:e|es|ed|ing|ion|or|ors)\\b"
18
+ - "\\bgestat(?:e|es|ed|ing|ion)\\b"
19
+ - "\\bnascent\\b"
20
+ - "\\bfledglings?\\b"
21
+ - "\\bembryonic\\b"
22
+ - "\\bcultivat(?:e|es|ed|ing)\\b"
23
+ - "\\bnurtur(?:e|es|ed|ing)\\b"
24
+ - "\\bin (?:its|their|the|early|relative|comparative|this) infancy\\b"
25
+ # Finance and tech-overloaded words, scoped to the startup phrase
26
+ - "\\bminimum viable\\b"
27
+ - "\\bseed (?:funding|rounds?|stage|capital|money|investment|financing|investors?|backers?)\\b"
28
+ - "\\borganic growth\\b"
@@ -0,0 +1,85 @@
1
+ ---
2
+ extends: existence
3
+ message: "AI hedge: '%s'. Delete this throat-clearing and state your point directly."
4
+ level: error
5
+ ignorecase: true
6
+ tokens:
7
+ - It's important to note that
8
+ - It is important to note that
9
+ - It is important to understand
10
+ - It is important to consider
11
+ - It is important to recognize
12
+ - It is important to acknowledge
13
+ - It is important to emphasize
14
+ - It is important to highlight
15
+ - It is important to mention
16
+ - It's worth noting that
17
+ - It is worth noting that
18
+ - It's worth mentioning that
19
+ - It is worth mentioning that
20
+ - It is worth emphasizing that
21
+ - It is worth highlighting that
22
+ - It is worth pointing out that
23
+ - It is worth remembering that
24
+ - It is essential to note
25
+ - It is essential to understand
26
+ - It is essential to recognize
27
+ - It is essential to acknowledge
28
+ - It is essential to emphasize
29
+ - It is crucial to note
30
+ - It is crucial to understand
31
+ - It is crucial to recognize
32
+ - It is critical to note
33
+ - It is critical to understand
34
+ - It is critical to recognize
35
+ - It is necessary to note
36
+ - It is necessary to understand
37
+ - It is necessary to recognize
38
+ - It should be noted that
39
+ - It should be emphasized that
40
+ - It should be mentioned that
41
+ - It bears mentioning
42
+ - It goes without saying
43
+ - Needless to say
44
+ - Generally speaking
45
+ - Broadly speaking
46
+ - For the most part
47
+ - By and large
48
+ - All things considered
49
+ - That being said
50
+ - That said
51
+ - With that said
52
+ - Having said that
53
+ - On the other hand
54
+ - At the same time
55
+ - To be sure
56
+ - To some extent
57
+ - In some ways
58
+ - In many ways
59
+ - In a sense
60
+ - As such
61
+ - As it were
62
+ - One thing is clear
63
+ - One thing is certain
64
+ - One thing is for sure
65
+ - One thing is for certain
66
+ - This much is clear
67
+ - This much is certain
68
+ - raises important questions
69
+ - raises serious questions
70
+ - raises questions about
71
+ - begs the question
72
+ - forces us to ask
73
+ - forces us to consider
74
+ - invites us to consider
75
+ - invites us to ask
76
+ - invites us to reflect
77
+ - prompts us to ask
78
+ - prompts us to consider
79
+ - calls into question
80
+ - calls on us to
81
+ - reminds us that
82
+ - reminds us of the importance
83
+ - as you might expect
84
+ - as you'd expect
85
+ - as one might expect
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025-2026 Tony Burns
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,22 @@
1
+ ---
2
+ extends: existence
3
+ message: "AI list intro: '%s'. Skip the announcement and present the content directly."
4
+ level: error
5
+ ignorecase: true
6
+ tokens:
7
+ - Below you'll find
8
+ - Below you will find
9
+ - Here's a breakdown of
10
+ - Here is a breakdown of
11
+ - Here's an overview of
12
+ - Here is an overview of
13
+ - Here's a summary of
14
+ - Here is a summary of
15
+ - Here's everything you need to know
16
+ - Here is everything you need to know
17
+ - Here's what you need to know about
18
+ - Here is what you need to know about
19
+ - The following sections will
20
+ - The following guide will
21
+ - The following tutorial will
22
+ - The following walkthrough will
@@ -0,0 +1,19 @@
1
+ ---
2
+ extends: existence
3
+ message: "AI marketing heading: '%s'. Strip the puffery and name the topic plainly."
4
+ level: error
5
+ ignorecase: true
6
+ scope: heading
7
+ tokens:
8
+ - The Ultimate Guide
9
+ - Everything You Need to Know
10
+ - Mastering
11
+ - Unlocking
12
+ - The Power of
13
+ - The Magic of
14
+ - Why Choose
15
+ - The Future of
16
+ - The Art of
17
+ - The Science of
18
+ - A Game-Changer
19
+ - Revolutionizing
@@ -0,0 +1,113 @@
1
+ ---
2
+ extends: existence
3
+ message: "AI metacommentary: '%s'. Delete it or replace it with substantive content."
4
+ level: error
5
+ nonword: true
6
+ scope: raw
7
+ tokens:
8
+ # "This [short noun] matters." - filler bridge sentences
9
+ - "This \\w+ matters\\."
10
+ - "This \\w+ \\w+ matters\\."
11
+ - "This \\w+ \\w+ \\w+ matters\\."
12
+
13
+ # "This matters because" variants
14
+ - "This matters because"
15
+ - "This is important because"
16
+ - "This distinction matters"
17
+ - "This difference matters"
18
+ - "This framing matters"
19
+ - "This choice matters"
20
+ - "This detail matters"
21
+ - "This nuance matters"
22
+ - "This subtlety matters"
23
+
24
+ # "Let me explain" / "Let's explore" throat-clearing
25
+ - "Let me explain"
26
+ - "Let's explore"
27
+ - "Let's examine"
28
+ - "Let's consider"
29
+ - "Let's look at"
30
+ - "Let's break down"
31
+ - "Let's unpack"
32
+ - "Let's dive into"
33
+
34
+ # "The key here is" / "The point is" filler
35
+ - "The key here is"
36
+ - "The point here is"
37
+ - "The idea here is"
38
+ - "The insight here is"
39
+ - "The takeaway here is"
40
+ - "The important thing here is"
41
+
42
+ # "It's worth [verb]ing" hedged assertions
43
+ - "It'?s worth noting"
44
+ - "It'?s worth mentioning"
45
+ - "It'?s worth pointing out"
46
+ - "It'?s worth emphasizing"
47
+ - "It'?s worth highlighting"
48
+ - "It'?s worth remembering"
49
+
50
+ # Bold callout phrases (in markdown)
51
+ - "\\*\\*Key insight:?\\*\\*"
52
+ - "\\*\\*Key takeaway:?\\*\\*"
53
+ - "\\*\\*Key point:?\\*\\*"
54
+ - "\\*\\*Important:?\\*\\*"
55
+ - "\\*\\*Note:?\\*\\*"
56
+ - "\\*\\*Bottom line:?\\*\\*"
57
+ - "\\*\\*The point:?\\*\\*"
58
+
59
+ # "This is the insight/key/point" framing
60
+ - "This is the insight"
61
+ - "This is the key"
62
+ - "This is the point"
63
+ - "This is the takeaway"
64
+ - "This is the crucial"
65
+ - "This is the critical"
66
+ - "This is the important"
67
+
68
+ # "This enables/ensures/allows" consequence statements
69
+ # Includes "This [noun] enables" and "This [noun] [noun] enables" variants
70
+ - "This enables [^.]+\\."
71
+ - "This \\w+ enables [^.]+\\."
72
+ - "This \\w+ \\w+ enables [^.]+\\."
73
+ - "This ensures [^.]+\\."
74
+ - "This \\w+ ensures [^.]+\\."
75
+ - "This allows [^.]+\\."
76
+ - "This \\w+ allows [^.]+\\."
77
+ - "This provides [^.]+\\."
78
+ - "This \\w+ provides [^.]+\\."
79
+ - "This gives you [^.]+\\."
80
+ - "This \\w+ gives you [^.]+\\."
81
+ - "This means [^.]+\\."
82
+ - "This \\w+ means [^.]+\\."
83
+
84
+ # "Understanding X enables/helps you" opener
85
+ - "Understanding [^.]+enables you to [^.]+\\."
86
+ - "Understanding [^.]+helps you [^.]+\\."
87
+ - "Understanding [^.]+allows you to [^.]+\\."
88
+
89
+ # "Real-world" filler
90
+ - "Real-world [a-z]+"
91
+ - "In the real world"
92
+
93
+ # "At its core/heart" framing
94
+ - "At its core"
95
+ - "At its heart"
96
+ - "At its most basic"
97
+ - "At its most basic level"
98
+ - "At its most fundamental"
99
+ - "At its most fundamental level"
100
+ - "At its simplest"
101
+ - "At their core"
102
+ - "At their heart"
103
+
104
+ # "Think of X as" explanatory framing
105
+ - "Think of it as"
106
+ - "Think of this as"
107
+ - "Think of [^.]+as [^.]+\\."
108
+
109
+ # "This is where" pivot phrases
110
+ - "This is where it gets interesting"
111
+ - "This is where things get interesting"
112
+ - "This is where [^.]+ comes in"
113
+ - "That'?s where [^.]+ comes in"
@@ -0,0 +1,205 @@
1
+ ---
2
+ extends: existence
3
+ message: "AI mic-drop: '%s'. Integrate the point into the surrounding text or cut it."
4
+ level: error
5
+ nonword: true
6
+ tokens:
7
+ # ==========================================================================
8
+ # Staccato declarations: short punchy sentences AI drops in for dramatic
9
+ # effect. "All four are thin." "It matters." "And it shows."
10
+ #
11
+ # These read like someone slamming a gavel in what should be a calm
12
+ # technical discussion. Human technical writers state facts inline;
13
+ # AI punctuates with mic-drops.
14
+ # ==========================================================================
15
+
16
+ # ---- Pronoun + intransitive verb mic-drops ----
17
+ # "It matters." "This works." "That scales."
18
+ - "(?:It|This|That) matters\\."
19
+ - "(?:It|This|That) works\\."
20
+ - "(?:It|This|That) shows\\."
21
+ - "(?:It|This|That) helps\\."
22
+ - "(?:It|This|That) scales\\."
23
+ - "(?:It|This|That) compounds\\."
24
+ - "(?:It|This|That) counts\\."
25
+ - "(?:It|This|That) adds up\\."
26
+ - "(?:It|This|That) pays off\\."
27
+ - "(?:It|This|That) depends\\."
28
+
29
+ # ---- Explicit-NP subject + intransitive mic-drop verb ----
30
+ # Same family as the pronoun set above, but with definite or demonstrative
31
+ # noun-phrase subjects instead of bare pronouns. AI punctuates technical
32
+ # discussion with these terminal one-liners.
33
+ # "The unset-versus-bogus distinction matters." "The trust compounds."
34
+ # [\w-] catches hyphenated subjects ("load-bearing", "user-facing").
35
+ - "(?:The|This|That) [\\w-]+(?: [\\w-]+){0,2} (?:matters|compounds|pays off|adds up)\\."
36
+
37
+ # Plural form: "These details matter." "Those choices add up."
38
+ - "(?:These|Those) [\\w-]+(?: [\\w-]+){0,2} (?:matter|compound|pay off|add up)\\."
39
+
40
+ # ---- "This/That/It + copula + adjective" emphatic declarations ----
41
+ # "This is key." "That's intentional." "It was deliberate."
42
+ - "(?:It|This|That)(?:'s| is| was) (?:key|crucial|critical|intentional|deliberate|powerful|elegant|subtle|clean|simple|clear|important|significant|telling|striking|notable|profound|revealing|transformative|remarkable|essential|fundamental|beautiful|paramount|vital|obvious|neat|real|enough)\\."
43
+ - "(?:It|This|That)(?:'s| is| was) (?:by design|on purpose|no accident|no coincidence|worth it|worth noting|not optional)\\."
44
+
45
+ # ---- "They/These/Those + copula + adjective" ----
46
+ # "These are thin." "Those were deliberate."
47
+ - "(?:They|These|Those)(?:'re| are| were) (?:thin|key|crucial|critical|intentional|deliberate|powerful|elegant|subtle|clean|simple|clear|important|significant|telling|striking|notable|profound|essential|vital|obvious|neat|enough)\\."
48
+
49
+ # ---- "The [noun] is [adjective]." short dramatic assessments ----
50
+ # "The result is clean." "The difference is subtle."
51
+ - "The \\w+ (?:is|are|was|were) (?:thin|clean|simple|subtle|clear|key|crucial|critical|intentional|deliberate|powerful|elegant|important|significant|telling|striking|notable|straightforward|profound|revealing|transformative|remarkable|essential|fundamental|beautiful|obvious|neat|real|paramount|vital)\\."
52
+ - "The \\w+ \\w+ (?:is|are|was|were) (?:thin|clean|simple|subtle|clear|key|crucial|critical|intentional|deliberate|powerful|elegant|important|significant|telling|striking|notable|straightforward|profound|revealing|transformative|remarkable|essential|fundamental|beautiful|obvious|neat|real|paramount|vital)\\."
53
+
54
+ # ---- Quantifier/determiner + copula + adjective mic-drops ----
55
+ # Short declarations with a quantifier subject and a single-adjective verdict.
56
+
57
+ # "All [noun] are [adjective]." — "All four are thin." "All three are identical."
58
+ - "All \\w+ (?:are|were) (?:thin|clean|simple|subtle|clear|key|crucial|critical|intentional|deliberate|powerful|elegant|important|significant|telling|striking|notable|straightforward|profound|essential|obvious|neat|identical|interchangeable|equivalent)\\."
59
+
60
+ # "Both [are/noun are] [adjective]." — "Both are thin." "Both layers are thin."
61
+ - "Both (?:are|were) (?:thin|clean|simple|subtle|clear|key|crucial|critical|intentional|deliberate|powerful|elegant|important|significant|telling|notable|straightforward|essential|obvious|identical|interchangeable|equivalent)\\."
62
+ - "Both \\w+ (?:are|were) (?:thin|clean|simple|subtle|clear|key|crucial|critical|intentional|deliberate|powerful|elegant|important|significant|telling|notable|straightforward|essential|obvious|identical|interchangeable|equivalent)\\."
63
+
64
+ # "Each/Every [noun] is [adjective]." — "Each handler is clean." "Every choice is deliberate."
65
+ - "(?:Each|Every) \\w+ (?:is|was) (?:thin|clean|simple|subtle|clear|key|crucial|critical|intentional|deliberate|powerful|elegant|important|significant|telling|striking|notable|straightforward|profound|essential|obvious|neat|identical|independent|self-contained)\\."
66
+ # "Each is [adjective]." — standalone without noun
67
+ - "Each (?:(?:one )?(?:is|was)) (?:thin|clean|simple|subtle|clear|key|crucial|critical|intentional|deliberate|powerful|elegant|important|significant|telling|notable|straightforward|essential|obvious|identical|independent|self-contained)\\."
68
+
69
+ # "Everything/Nothing is [adjective]." — "Everything is intentional." "Nothing is accidental."
70
+ - "Everything (?:is|was) (?:intentional|deliberate|purposeful|connected|composable|explicit|visible|traceable|testable|optional)\\."
71
+ - "Nothing (?:is|was) (?:accidental|random|hidden|implicit|optional|wasted|redundant|superfluous|arbitrary|magical|surprising)\\."
72
+
73
+ # "None are [adjective]." — "None are optional." "None are accidental."
74
+ - "None (?:are|were|is|was) (?:optional|accidental|random|redundant|superfluous|arbitrary|wasted|surprising|hidden|magical)\\."
75
+
76
+ # ---- Antithetical balance: "X changes, Y stays the same." ----
77
+ # Two balanced clauses with change/permanence verb opposition, creating
78
+ # a pithy aphorism. AI reaches for this structure constantly.
79
+ # "The adapter changes, the service call stays the same."
80
+ # "Tools change, principles don't."
81
+ # "Frameworks come and go, fundamentals remain."
82
+
83
+ # Change-verb, then stay-verb (comma / semicolon / em-dash separated)
84
+ - "(?:changes?|evolves?|shifts?|varies|vary|comes? and go(?:es)?)[,;—] (?:the |a |an )?(?:\\w+ ){0,4}(?:stays? the same|remains?(?: the same)?|holds?|persists?|endures?|(?:doesn't|don't) change)\\."
85
+
86
+ # Stay-verb, then change-verb (reverse order)
87
+ - "(?:stays? the same|remains?(?: the same)?|holds?|persists?|endures?)[,;—] (?:the |a |an )?(?:\\w+ ){0,4}(?:changes?|evolves?|shifts?|varies|vary|comes? and go(?:es)?)\\."
88
+
89
+ # Period-separated: "Tools change. Principles don't."
90
+ - "(?:changes?|evolves?|shifts?|varies|vary)\\. [A-Z](?:\\w+ ){0,3}(?:stays? the same|remains?|holds?|persists?|endures?|(?:doesn't|don't) change)\\."
91
+ - "(?:stays? the same|remains?|holds?|persists?|endures?)\\. [A-Z](?:\\w+ ){0,3}(?:changes?|evolves?|shifts?|varies|vary)\\."
92
+
93
+ # ---- Verbless fragment mic-drops ----
94
+ # Short sentences with no main verb, used as paragraph closers.
95
+ # Distinct from the copula patterns above — these have no verb at all.
96
+
97
+ # Bare adjective list fragments: "Simple, predictable, testable."
98
+ - "(?:Pure|Clean|Simple|Clear|Fast|Small|Thin|Lean|Cheap|Safe|Flat|Sane|Strict|Minimal|Explicit|Composable|Predictable|Testable|Readable|Maintainable|Reproducible|Intentional|Deliberate|Declarative|Idiomatic|Immutable|Ergonomic|Deterministic|Straightforward|Opinionated), (?:\\w+, )*(?:and )?\\w+\\."
99
+
100
+ # Parallel noun-phrase fragment pairs: "Clean separation, clear ownership."
101
+ - "(?:Clean|Clear|Pure|Simple|Single|One|Zero|Full|Same|Thin|Flat|Strict|Minimal|Explicit|Complete|Total|Direct|Separate) \\w+, (?:clean|clear|pure|simple|single|one|zero|full|same|thin|flat|strict|minimal|explicit|complete|total|direct|separate|different|no|fewer?) \\w+\\."
102
+
103
+ # Comparative-adjective balanced fragments:
104
+ # "Stronger isolation, more lifecycle machinery."
105
+ # "Faster delivery, fewer surprises."
106
+ # Comparative adjective + 1-2 word noun, paired with another
107
+ # comparative + noun. The balanced tradeoff aphorism shape.
108
+ - "(?:Stronger|Weaker|Faster|Slower|Better|Worse|Cleaner|Simpler|Smaller|Larger|Bigger|Higher|Lower|Tighter|Looser|Smoother|Newer|Older|Richer|Leaner|Safer|Saner|More|Less|Fewer) [\\w-]+(?: [\\w-]+)?, (?:stronger|weaker|faster|slower|better|worse|cleaner|simpler|smaller|larger|bigger|higher|lower|tighter|looser|smoother|newer|older|richer|leaner|safer|saner|more|less|fewer) [\\w-]+(?: [\\w-]+)?\\."
109
+
110
+ # "Just/Pure/Clean + noun" standalone fragments: "Pure orchestration." "Just data."
111
+ - "(?:Just|Pure|Clean|Plain|Bare|Raw|Straight|Strict|Simple|Mere) \\w+\\."
112
+
113
+ # "Just X, nothing more/else" closers: "Just data, nothing more."
114
+ - "Just \\w+, nothing (?:more|else|fancy|special|clever)\\."
115
+
116
+ # Fragment + dramatic qualifier spliced with "and":
117
+ # "Pure orchestration, and the one package that imports from all layers."
118
+ - "(?:Pure|Clean|Just|Simple|Plain|Bare|Raw|Mere|Thin|Flat) \\w+, and [^.]+\\."
119
+
120
+ # Terse prepositional callback: "With PostgreSQL, one."
121
+ # A telegraphic fragment that only makes sense as a parallel to the
122
+ # preceding sentence. The single-word answer is the mic-drop.
123
+ - "With \\w+(?:[ -]\\w+)?, \\w+\\."
124
+
125
+ # ---- Dramatic codas: "And [short clause]." ----
126
+ # "And it shows." "And that's okay."
127
+ - "And it shows\\."
128
+ - "And it works\\."
129
+ - "And it matters\\."
130
+ - "And it helps\\."
131
+ - "And it scales\\."
132
+ - "And that'?s okay\\."
133
+ - "And that'?s fine\\."
134
+ - "And that'?s enough\\."
135
+ - "And that'?s it\\."
136
+ - "And that'?s the point\\."
137
+
138
+ # ---- "Full stop" / "Period" as emphasis ----
139
+ - "Full stop\\."
140
+ - "[Pp]eriod\\."
141
+
142
+ # ---- Contrastive fragment mic-drops ----
143
+ # "X, not Y." — contrastive fragment with no verb
144
+ # "Dense, not cramped." "Fast, not sloppy." "Opinionated, not rigid."
145
+ - "[A-Z][a-z]+, not [a-z]+\\."
146
+ - "[A-Z][a-z]+, never [a-z]+\\."
147
+
148
+ # Bare "Not X." / "No X." standalone fragment: "Not now."
149
+ # "No singleton." AI deploys these as one-word verdicts — a tiny
150
+ # period-bound answer that the surrounding prose pretends to be
151
+ # responding to. The broader regex catches both negation forms
152
+ # with any single-word tail. Some conversational fragments
153
+ # ("No idea.", "No way.", "Not bad.") fire too; acceptable for
154
+ # an error-level rule in technical-doc contexts.
155
+ - "Not? \\w+\\."
156
+
157
+ # Verb-led contrastive: the extended-sentence remediation cheat
158
+ # that appears after the bare-fragment form above gets flagged.
159
+ # "Isolation here stays logical, not physical."
160
+ # "The output reads clean, not cluttered."
161
+ # "Code becomes declarative, not imperative."
162
+ # Subject is 1-3 words; the linking-ish verb list mirrors the
163
+ # copula sense ("X stays/remains/becomes Y" = "X is Y").
164
+ - "[A-Z][a-z]+(?: \\w+){0,2} (?:stays?|remains?|becomes?|feels?|reads?|seems?|sounds?|looks?|appears?|grows?|ends? up|comes? across) [a-z-]+, not [a-z-]+\\."
165
+ - "[A-Z][a-z]+(?: \\w+){0,2} (?:stays?|remains?|becomes?|feels?|reads?|seems?|sounds?|looks?|appears?|grows?|ends? up|comes? across) [a-z-]+, never [a-z-]+\\."
166
+
167
+ # Verb-led contrastive with non-linking verbs + noun objects:
168
+ # "They share a contract, not code."
169
+ # "Custom signals belong in stderr text, not in the exit number."
170
+ # Different shape from the linking-verb family above — the object
171
+ # is a noun phrase rather than an adjective.
172
+ - "[A-Z][a-z]+(?: \\w+){0,2} (?:shares?|keeps?|holds?|lives?|belongs?|sits?|points?|goes|go|gives?|takes?) (?:(?:in|on|to|at|with|for) )?[\\w-]+(?: [\\w-]+){0,3}, not (?:(?:in|on|to|at|with|for) )?[\\w-]+(?: [\\w-]+){0,3}[.:]"
173
+
174
+ # "X over Y." — preference fragment
175
+ # "Clarity over cleverness." "Depth over breadth."
176
+ - "[A-Z][a-z]+ over [a-z]+\\."
177
+
178
+ # Comparative aphorism: "X verbs comparative-adjective than Y."
179
+ # "Disk costs less than lost context."
180
+ # "Tests run faster than docs."
181
+ # Concise, sentence-final, AI tutorial-blog tone.
182
+ - "[A-Z][a-z]+(?: \\w+){0,2} \\w+s (?:more|less|fewer|faster|slower|cheaper|cleaner|simpler|safer|tighter|better|worse|larger|smaller|bigger|higher|lower|longer|shorter) than [^.!?]+\\."
183
+
184
+ # "X, not Y, not Z." — extended contrastive
185
+ - "[A-Z][a-z]+, not [a-z]+, not [a-z]+\\."
186
+
187
+ # "X, then Y." — sequencing fragment
188
+ # "Scannable, then readable." "Simple, then fast."
189
+ - "[A-Z][a-z]+, then [a-z]+\\."
190
+
191
+ # "X first, Y second." — priority fragment
192
+ - "[A-Z][a-z]+ first, [a-z]+ second\\."
193
+ - "[A-Z][a-z]+ first, [a-z]+ never\\."
194
+
195
+ # "Verb in the noun." — imperative mic-drop
196
+ # "Invest in the system." "Trust the process." "Ship the thing."
197
+ - "(?:Invest|Trust|Embrace|Ship|Build|Start|Keep|Focus|Lean|Bet|Play|Own|Do) (?:in |on |into )?the [a-z]+\\."
198
+
199
+ # "[Noun] is a [noun]." — categorical declaration as closer
200
+ # "Density is a feature." "Complexity is a choice."
201
+ - "[A-Z][a-z]+ is an? [a-z]+\\."
202
+
203
+ # "the X, not the Y" — tagline gloss after a colon
204
+ # "Implicit positioning: the reference shelf, not the opinion column."
205
+ - ": the [^,]+, not the [^.]+"
@@ -0,0 +1,20 @@
1
+ ---
2
+ extends: existence
3
+ message: "AI mic-drop: '%s'. Use a descriptive heading instead."
4
+ level: error
5
+ nonword: true
6
+ scope: heading
7
+ tokens:
8
+ # "X, not Y" / "X, never Y"
9
+ - "[A-Z][a-z]+, not [a-z]+"
10
+ - "[A-Z][a-z]+, never [a-z]+"
11
+
12
+ # "X, then Y"
13
+ - "[A-Z][a-z]+, then [a-z]+"
14
+
15
+ # "X over Y"
16
+ - "[A-Z][a-z]+ over [a-z]+"
17
+
18
+ # "X first, Y second"
19
+ - "[A-Z][a-z]+ first, [a-z]+ second"
20
+ - "[A-Z][a-z]+ first, [a-z]+ never"
@@ -0,0 +1,59 @@
1
+ ---
2
+ extends: existence
3
+ message: "AI narrative pivot: '%s'. State your point directly."
4
+ level: error
5
+ ignorecase: true
6
+ tokens:
7
+ - something shifted
8
+ - something changed
9
+ - something clicked
10
+ - something snapped
11
+ - everything changed
12
+ - everything shifted
13
+ - everything clicked
14
+ - and then everything changed
15
+ - and then it clicked
16
+ - and then it hit me
17
+ - that changed everything
18
+ - that changes everything
19
+ - this changes everything
20
+ - this changed everything
21
+ - and that made all the difference
22
+ - and that makes all the difference
23
+ - but then something interesting happened
24
+ - but then something unexpected happened
25
+ - but then I realized
26
+ - and that's when it hit me
27
+ - and that's when I realized
28
+ - it was a turning point
29
+ - it was an inflection point
30
+ - it was a watershed moment
31
+ - it was a game-changer
32
+ - it was a wake-up call
33
+ - a light bulb went off
34
+ - a lightbulb went off
35
+ - the penny dropped
36
+ - it all came together
37
+ - it all made sense
38
+ - things started to click
39
+ - things fell into place
40
+ - changed the game
41
+ - changes the game
42
+ - changing the game
43
+ - change the game
44
+ - changed the game forever
45
+ - changes the game forever
46
+ - changed everything forever
47
+ - changed the landscape
48
+ - changes the landscape
49
+ - rewrote the rules
50
+ - rewrites the rules
51
+ - rewriting the rules
52
+ - rewrote the playbook
53
+ - rewrites the playbook
54
+ - rewriting the playbook
55
+ - flipped the script
56
+ - flips the script
57
+ - flipping the script
58
+ - moved the goalposts
59
+ - shifted the paradigm