aboutsummaryrefslogtreecommitdiff
path: root/config/vale
diff options
context:
space:
mode:
authorKenny Ballou <kballou@devnulllabs.io>2021-03-21 22:19:54 -0600
committerKenny Ballou <kballou@devnulllabs.io>2021-03-21 22:19:54 -0600
commit6ff7ab01d3729882bda663a6ca224c5fecc5ac99 (patch)
tree27e8d7e06c85657ba8af6317f18f58e24e474901 /config/vale
parentd5d9c9233534070a6726d6d83ab4aeb29a98fb90 (diff)
downloaddotfiles-6ff7ab01d3729882bda663a6ca224c5fecc5ac99.tar.gz
dotfiles-6ff7ab01d3729882bda663a6ca224c5fecc5ac99.tar.xz
config: vale: add vale configuration
Configure the `kb` style for vale, a combination of write-good, proselint, google, and Microsoft vale styles. Signed-off-by: Kenny Ballou <kballou@devnulllabs.io>
Diffstat (limited to 'config/vale')
-rw-r--r--config/vale/default.nix9
-rw-r--r--config/vale/styles/kb/Adverbs.yml271
-rw-r--r--config/vale/styles/kb/Annotations.yml10
-rw-r--r--config/vale/styles/kb/Archaisms.yml53
-rw-r--r--config/vale/styles/kb/Auto.yml12
-rw-r--r--config/vale/styles/kb/Both.yml7
-rw-r--r--config/vale/styles/kb/But.yml9
-rw-r--r--config/vale/styles/kb/Cliches.yml783
-rw-r--r--config/vale/styles/kb/CorporateSpeak.yml31
-rw-r--r--config/vale/styles/kb/Currency.yml6
-rw-r--r--config/vale/styles/kb/Dashes.yml14
-rw-r--r--config/vale/styles/kb/DateCase.yml8
-rw-r--r--config/vale/styles/kb/DateFormat.yml9
-rw-r--r--config/vale/styles/kb/DateMidnight.yml8
-rw-r--r--config/vale/styles/kb/DateNumbers.yml41
-rw-r--r--config/vale/styles/kb/DateOrder.yml9
-rw-r--r--config/vale/styles/kb/DateRedundancy.yml11
-rw-r--r--config/vale/styles/kb/DateSpacing.yml8
-rw-r--r--config/vale/styles/kb/DenizenLabels.yml53
-rw-r--r--config/vale/styles/kb/Diacritical.yml96
-rw-r--r--config/vale/styles/kb/FirstPerson.yml14
-rw-r--r--config/vale/styles/kb/GenderBias.yml46
-rw-r--r--config/vale/styles/kb/GeneralURL.yml12
-rw-r--r--config/vale/styles/kb/GroupTerms.yml40
-rw-r--r--config/vale/styles/kb/HeadingColons.yml9
-rw-r--r--config/vale/styles/kb/HeadingPunctuation.yml14
-rw-r--r--config/vale/styles/kb/Headings.yml29
-rw-r--r--config/vale/styles/kb/Hedging.yml9
-rw-r--r--config/vale/styles/kb/Hyperbole.yml7
-rw-r--r--config/vale/styles/kb/Hyphens.yml15
-rw-r--r--config/vale/styles/kb/Illusions.yml12
-rw-r--r--config/vale/styles/kb/Needless.yml359
-rw-r--r--config/vale/styles/kb/Negative.yml14
-rw-r--r--config/vale/styles/kb/Nonwords.yml39
-rw-r--r--config/vale/styles/kb/Ordinal.yml14
-rw-r--r--config/vale/styles/kb/OxfordComma.yml9
-rw-r--r--config/vale/styles/kb/Oxymorons.yml23
-rw-r--r--config/vale/styles/kb/P-Value.yml7
-rw-r--r--config/vale/styles/kb/Passive.yml184
-rw-r--r--config/vale/styles/kb/Percentages.yml8
-rw-r--r--config/vale/styles/kb/Quotes.yml8
-rw-r--r--config/vale/styles/kb/RASSyndrome.yml31
-rw-r--r--config/vale/styles/kb/README.md15
-rw-r--r--config/vale/styles/kb/RangeFormat.yml14
-rw-r--r--config/vale/styles/kb/RangeTime.yml14
-rw-r--r--config/vale/styles/kb/Ranges.yml8
-rw-r--r--config/vale/styles/kb/Semicolon.yml9
-rw-r--r--config/vale/styles/kb/SentenceLength.yml7
-rw-r--r--config/vale/styles/kb/Skunked.yml14
-rw-r--r--config/vale/styles/kb/So.yml6
-rw-r--r--config/vale/styles/kb/Terms.yml44
-rw-r--r--config/vale/styles/kb/ThereIs.yml7
-rw-r--r--config/vale/styles/kb/TooWordy.yml222
-rw-r--r--config/vale/styles/kb/Typography.yml11
-rw-r--r--config/vale/styles/kb/URLFormat.yml10
-rw-r--r--config/vale/styles/kb/Uncomparables.yml51
-rw-r--r--config/vale/styles/kb/Units.yml17
-rw-r--r--config/vale/styles/kb/Very.yml7
-rw-r--r--config/vale/styles/kb/Vocab.yml26
-rw-r--r--config/vale/styles/kb/Weasel.yml208
-rw-r--r--config/vale/styles/kb/Will.yml7
-rw-r--r--config/vale/vale.ini14
62 files changed, 3062 insertions, 0 deletions
diff --git a/config/vale/default.nix b/config/vale/default.nix
new file mode 100644
index 00000000..8fd5aa16
--- /dev/null
+++ b/config/vale/default.nix
@@ -0,0 +1,9 @@
+{ ... }:
+{
+ home.file.".vale.ini".source = ./vale.ini;
+ xdg.configFile.vale = {
+ recursive = true;
+ target = "vale/styles";
+ source = ./styles;
+ };
+}
diff --git a/config/vale/styles/kb/Adverbs.yml b/config/vale/styles/kb/Adverbs.yml
new file mode 100644
index 00000000..abe310ea
--- /dev/null
+++ b/config/vale/styles/kb/Adverbs.yml
@@ -0,0 +1,271 @@
+---
+extends: existence
+message: "Consider removing '%s'."
+link: https://docs.microsoft.com/en-us/style-guide/word-choice/use-simple-words-concise-sentences
+ignorecase: true
+level: warning
+action:
+ name: remove
+tokens:
+ - abnormally
+ - absentmindedly
+ - accidentally
+ - adventurously
+ - anxiously
+ - arrogantly
+ - awkwardly
+ - bashfully
+ - beautifully
+ - bitterly
+ - bleakly
+ - blindly
+ - blissfully
+ - boastfully
+ - boldly
+ - bravely
+ - briefly
+ - brightly
+ - briskly
+ - broadly
+ - busily
+ - calmly
+ - carefully
+ - carelessly
+ - cautiously
+ - cheerfully
+ - cleverly
+ - closely
+ - coaxingly
+ - colorfully
+ - continually
+ - coolly
+ - courageously
+ - crossly
+ - cruelly
+ - curiously
+ - daintily
+ - dearly
+ - deceivingly
+ - deeply
+ - defiantly
+ - deliberately
+ - delightfully
+ - diligently
+ - dimly
+ - doubtfully
+ - dreamily
+ - easily
+ - elegantly
+ - energetically
+ - enormously
+ - enthusiastically
+ - excitedly
+ - extremely
+ - fairly
+ - faithfully
+ - famously
+ - ferociously
+ - fervently
+ - fiercely
+ - fondly
+ - foolishly
+ - fortunately
+ - frankly
+ - frantically
+ - freely
+ - frenetically
+ - frightfully
+ - furiously
+ - generally
+ - generously
+ - gently
+ - gladly
+ - gleefully
+ - gracefully
+ - gratefully
+ - greatly
+ - greedily
+ - happily
+ - hastily
+ - healthily
+ - heavily
+ - helplessly
+ - honestly
+ - hopelessly
+ - hungrily
+ - innocently
+ - inquisitively
+ - intensely
+ - intently
+ - interestingly
+ - inwardly
+ - irritably
+ - jaggedly
+ - jealously
+ - jovially
+ - joyfully
+ - joyously
+ - jubilantly
+ - judgmentally
+ - justly
+ - keenly
+ - kiddingly
+ - kindheartedly
+ - knavishly
+ - knowingly
+ - knowledgeably
+ - lazily
+ - lightly
+ - limply
+ - lively
+ - loftily
+ - longingly
+ - loosely
+ - loudly
+ - lovingly
+ - loyally
+ - madly
+ - majestically
+ - meaningfully
+ - mechanically
+ - merrily
+ - miserably
+ - mockingly
+ - mortally
+ - mysteriously
+ - naturally
+ - nearly
+ - neatly
+ - nervously
+ - nicely
+ - noisily
+ - obediently
+ - obnoxiously
+ - oddly
+ - offensively
+ - optimistically
+ - overconfidently
+ - painfully
+ - partially
+ - patiently
+ - perfectly
+ - playfully
+ - politely
+ - poorly
+ - positively
+ - potentially
+ - powerfully
+ - promptly
+ - properly
+ - punctually
+ - quaintly
+ - queasily
+ - queerly
+ - questionably
+ - quickly
+ - quietly
+ - quirkily
+ - quizzically
+ - randomly
+ - rapidly
+ - rarely
+ - readily
+ - really
+ - reassuringly
+ - recklessly
+ - regularly
+ - reluctantly
+ - repeatedly
+ - reproachfully
+ - restfully
+ - righteously
+ - rightfully
+ - rigidly
+ - roughly
+ - rudely
+ - safely
+ - scarcely
+ - scarily
+ - searchingly
+ - sedately
+ - seemingly
+ - selfishly
+ - separately
+ - seriously
+ - shakily
+ - sharply
+ - sheepishly
+ - shrilly
+ - shyly
+ - silently
+ - sleepily
+ - slowly
+ - smoothly
+ - softly
+ - solemnly
+ - solidly
+ - speedily
+ - stealthily
+ - sternly
+ - strictly
+ - suddenly
+ - supposedly
+ - surprisingly
+ - suspiciously
+ - sweetly
+ - swiftly
+ - sympathetically
+ - tenderly
+ - tensely
+ - terribly
+ - thankfully
+ - thoroughly
+ - thoughtfully
+ - tightly
+ - tremendously
+ - triumphantly
+ - truthfully
+ - ultimately
+ - unabashedly
+ - unaccountably
+ - unbearably
+ - unethically
+ - unexpectedly
+ - unfortunately
+ - unimpressively
+ - unnaturally
+ - unnecessarily
+ - urgently
+ - usefully
+ - uselessly
+ - utterly
+ - vacantly
+ - vaguely
+ - vainly
+ - valiantly
+ - vastly
+ - verbally
+ - very
+ - viciously
+ - victoriously
+ - violently
+ - vivaciously
+ - voluntarily
+ - warmly
+ - weakly
+ - wearily
+ - wetly
+ - wholly
+ - wildly
+ - willfully
+ - wisely
+ - woefully
+ - wonderfully
+ - worriedly
+ - yawningly
+ - yearningly
+ - yieldingly
+ - youthfully
+ - zealously
+ - zestfully
+ - zestily
diff --git a/config/vale/styles/kb/Annotations.yml b/config/vale/styles/kb/Annotations.yml
new file mode 100644
index 00000000..70e98c60
--- /dev/null
+++ b/config/vale/styles/kb/Annotations.yml
@@ -0,0 +1,10 @@
+---
+extends: existence
+message: "'%s' left in text."
+ignorecase: false
+level: error
+tokens:
+ - XXX
+ - FIXME
+ - TODO
+ - NOTE
diff --git a/config/vale/styles/kb/Archaisms.yml b/config/vale/styles/kb/Archaisms.yml
new file mode 100644
index 00000000..55301188
--- /dev/null
+++ b/config/vale/styles/kb/Archaisms.yml
@@ -0,0 +1,53 @@
+---
+extends: existence
+message: "'%s' is archaic."
+ignorecase: true
+level: error
+tokens:
+ - alack
+ - anent
+ - begat
+ - belike
+ - betimes
+ - boughten
+ - brocage
+ - brokage
+ - camarade
+ - chiefer
+ - chiefest
+ - Christiana
+ - completely obsolescent
+ - cozen
+ - divers
+ - deflexion
+ - fain
+ - forsooth
+ - foreclose from
+ - haply
+ - howbeit
+ - illumine
+ - in sooth
+ - maugre
+ - meseems
+ - methinks
+ - nigh
+ - peradventure
+ - perchance
+ - saith
+ - shew
+ - sistren
+ - spake
+ - to wit
+ - verily
+ - whilom
+ - withal
+ - wot
+ - enclosed please find
+ - please find enclosed
+ - enclosed herewith
+ - enclosed herein
+ - inforce
+ - ex postfacto
+ - foreclose from
+ - forewent
+ - for ever
diff --git a/config/vale/styles/kb/Auto.yml b/config/vale/styles/kb/Auto.yml
new file mode 100644
index 00000000..e55b6219
--- /dev/null
+++ b/config/vale/styles/kb/Auto.yml
@@ -0,0 +1,12 @@
+---
+extends: existence
+message: "In general, don't hyphenate '%s'."
+link: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/a/auto
+ignorecase: true
+level: error
+action:
+ name: convert
+ params:
+ - simple
+tokens:
+ - 'auto-\w+'
diff --git a/config/vale/styles/kb/Both.yml b/config/vale/styles/kb/Both.yml
new file mode 100644
index 00000000..8220e08e
--- /dev/null
+++ b/config/vale/styles/kb/Both.yml
@@ -0,0 +1,7 @@
+---
+extends: existence
+message: "Consider removing '%s'."
+ignorecase: true
+level: warning
+tokens:
+ - (?i)both
diff --git a/config/vale/styles/kb/But.yml b/config/vale/styles/kb/But.yml
new file mode 100644
index 00000000..218cbec7
--- /dev/null
+++ b/config/vale/styles/kb/But.yml
@@ -0,0 +1,9 @@
+---
+extends: existence
+message: "Do not start a paragraph with a 'but'."
+level: error
+scope: paragraph
+action:
+ name: remove
+tokens:
+ - ^But
diff --git a/config/vale/styles/kb/Cliches.yml b/config/vale/styles/kb/Cliches.yml
new file mode 100644
index 00000000..1fdb9a7f
--- /dev/null
+++ b/config/vale/styles/kb/Cliches.yml
@@ -0,0 +1,783 @@
+---
+extends: existence
+message: "'%s' is a cliche."
+level: error
+ignorecase: true
+tokens:
+ - a chip off the old block
+ - a clean slate
+ - a dark and stormy night
+ - a far cry
+ - a fate worse than death
+ - a fine kettle of fish
+ - a loose cannon
+ - a penny saved is a penny earned
+ - a tough row to hoe
+ - a word to the wise
+ - ace in the hole
+ - acid test
+ - add insult to injury
+ - against all odds
+ - air your dirty laundry
+ - alas and alack
+ - all fun and games
+ - all hell broke loose
+ - all in a day's work
+ - all talk, no action
+ - all thumbs
+ - all your eggs in one basket
+ - all's fair in love and war
+ - all's well that ends well
+ - almighty dollar
+ - American as apple pie
+ - an axe to grind
+ - another day, another dollar
+ - armed to the teeth
+ - as luck would have it
+ - as old as time
+ - as the crow flies
+ - at loose ends
+ - at my wits end
+ - at the end of the day
+ - avoid like the plague
+ - babe in the woods
+ - back against the wall
+ - back in the saddle
+ - back to square one
+ - back to the drawing board
+ - bad to the bone
+ - badge of honor
+ - bald faced liar
+ - bald-faced lie
+ - ballpark figure
+ - banging your head against a brick wall
+ - baptism by fire
+ - barking up the wrong tree
+ - bat out of hell
+ - be all and end all
+ - beat a dead horse
+ - beat around the bush
+ - been there, done that
+ - beggars can't be choosers
+ - behind the eight ball
+ - bend over backwards
+ - benefit of the doubt
+ - bent out of shape
+ - best thing since sliced bread
+ - bet your bottom dollar
+ - better half
+ - better late than never
+ - better mousetrap
+ - better safe than sorry
+ - between a rock and a hard place
+ - between a rock and a hard place
+ - between Scylla and Charybdis
+ - between the devil and the deep blue see
+ - betwixt and between
+ - beyond the pale
+ - bide your time
+ - big as life
+ - big cheese
+ - big fish in a small pond
+ - big man on campus
+ - bigger they are the harder they fall
+ - bird in the hand
+ - bird's eye view
+ - birds and the bees
+ - birds of a feather flock together
+ - bit the hand that feeds you
+ - bite the bullet
+ - bite the dust
+ - bitten off more than he can chew
+ - black as coal
+ - black as pitch
+ - black as the ace of spades
+ - blast from the past
+ - bleeding heart
+ - blessing in disguise
+ - blind ambition
+ - blind as a bat
+ - blind leading the blind
+ - blissful ignorance
+ - blood is thicker than water
+ - blood sweat and tears
+ - blow a fuse
+ - blow off steam
+ - blow your own horn
+ - blushing bride
+ - boils down to
+ - bolt from the blue
+ - bone to pick
+ - bored stiff
+ - bored to tears
+ - bottomless pit
+ - boys will be boys
+ - bright and early
+ - brings home the bacon
+ - broad across the beam
+ - broken record
+ - brought back to reality
+ - bulk large
+ - bull by the horns
+ - bull in a china shop
+ - burn the midnight oil
+ - burning question
+ - burning the candle at both ends
+ - burst your bubble
+ - bury the hatchet
+ - busy as a bee
+ - but that's another story
+ - by hook or by crook
+ - call a spade a spade
+ - called onto the carpet
+ - calm before the storm
+ - can of worms
+ - can't cut the mustard
+ - can't hold a candle to
+ - case of mistaken identity
+ - cast aspersions
+ - cat got your tongue
+ - cat's meow
+ - caught in the crossfire
+ - caught red-handed
+ - chase a red herring
+ - checkered past
+ - chomping at the bit
+ - cleanliness is next to godliness
+ - clear as a bell
+ - clear as mud
+ - close to the vest
+ - cock and bull story
+ - cold shoulder
+ - come hell or high water
+ - comparing apples and oranges
+ - compleat
+ - conspicuous by its absence
+ - cool as a cucumber
+ - cool, calm, and collected
+ - cost a king's ransom
+ - count your blessings
+ - crack of dawn
+ - crash course
+ - creature comforts
+ - cross that bridge when you come to it
+ - crushing blow
+ - cry like a baby
+ - cry me a river
+ - cry over spilt milk
+ - crystal clear
+ - crystal clear
+ - curiosity killed the cat
+ - cut and dried
+ - cut through the red tape
+ - cut to the chase
+ - cute as a bugs ear
+ - cute as a button
+ - cute as a puppy
+ - cuts to the quick
+ - cutting edge
+ - dark before the dawn
+ - day in, day out
+ - dead as a doornail
+ - decision-making process
+ - devil is in the details
+ - dime a dozen
+ - divide and conquer
+ - dog and pony show
+ - dog days
+ - dog eat dog
+ - dog tired
+ - don't burn your bridges
+ - don't count your chickens
+ - don't look a gift horse in the mouth
+ - don't rock the boat
+ - don't step on anyone's toes
+ - don't take any wooden nickels
+ - down and out
+ - down at the heels
+ - down in the dumps
+ - down the hatch
+ - down to earth
+ - draw the line
+ - dressed to kill
+ - dressed to the nines
+ - drives me up the wall
+ - dubious distinction
+ - dull as dishwater
+ - duly authorized
+ - dyed in the wool
+ - eagle eye
+ - ear to the ground
+ - early bird catches the worm
+ - easier said than done
+ - easy as pie
+ - eat your heart out
+ - eat your words
+ - eleventh hour
+ - even the playing field
+ - every dog has its day
+ - every fiber of my being
+ - everything but the kitchen sink
+ - eye for an eye
+ - eyes peeled
+ - face the music
+ - facts of life
+ - fair weather friend
+ - fall by the wayside
+ - fan the flames
+ - far be it from me
+ - fast and loose
+ - feast or famine
+ - feather your nest
+ - feathered friends
+ - few and far between
+ - fifteen minutes of fame
+ - fills the bill
+ - filthy vermin
+ - fine kettle of fish
+ - first and foremost
+ - fish out of water
+ - fishing for a compliment
+ - fit as a fiddle
+ - fit the bill
+ - fit to be tied
+ - flash in the pan
+ - flat as a pancake
+ - flip your lid
+ - flog a dead horse
+ - fly by night
+ - fly the coop
+ - follow your heart
+ - for all intents and purposes
+ - for free
+ - for the birds
+ - for what it's worth
+ - force of nature
+ - force to be reckoned with
+ - forgive and forget
+ - fox in the henhouse
+ - free and easy
+ - free as a bird
+ - fresh as a daisy
+ - full steam ahead
+ - fun in the sun
+ - garbage in, garbage out
+ - gentle as a lamb
+ - get a kick out of
+ - get a leg up
+ - get down and dirty
+ - get the lead out
+ - get to the bottom of
+ - get with the program
+ - get your feet wet
+ - gets my goat
+ - gilding the lily
+ - gilding the lily
+ - give and take
+ - go against the grain
+ - go at it tooth and nail
+ - go for broke
+ - go him one better
+ - go the extra mile
+ - go with the flow
+ - goes without saying
+ - good as gold
+ - good deed for the day
+ - good things come to those who wait
+ - good time was had by all
+ - good times were had by all
+ - greased lightning
+ - greek to me
+ - green thumb
+ - green-eyed monster
+ - grist for the mill
+ - growing like a weed
+ - hair of the dog
+ - hand to mouth
+ - happy as a clam
+ - happy as a lark
+ - hasn't a clue
+ - have a nice day
+ - have a short fuse
+ - have high hopes
+ - have the last laugh
+ - haven't got a row to hoe
+ - he's got his hands full
+ - head honcho
+ - head over heels
+ - hear a pin drop
+ - heard it through the grapevine
+ - heart's content
+ - heavy as lead
+ - hem and haw
+ - high and dry
+ - high and mighty
+ - high as a kite
+ - his own worst enemy
+ - his work cut out for him
+ - hit paydirt
+ - hither and yon
+ - Hobson's choice
+ - hold your head up high
+ - hold your horses
+ - hold your own
+ - hold your tongue
+ - honest as the day is long
+ - horns of a dilemma
+ - horns of a dilemma
+ - horse of a different color
+ - hot under the collar
+ - hour of need
+ - I beg to differ
+ - icing on the cake
+ - if the shoe fits
+ - if the shoe were on the other foot
+ - if you catch my drift
+ - in a jam
+ - in a jiffy
+ - in a nutshell
+ - in a pig's eye
+ - in a pinch
+ - in a word
+ - in hot water
+ - in light of
+ - in the final analysis
+ - in the gutter
+ - in the last analysis
+ - in the nick of time
+ - in the thick of it
+ - in your dreams
+ - innocent bystander
+ - it ain't over till the fat lady sings
+ - it goes without saying
+ - it takes all kinds
+ - it takes one to know one
+ - it's a small world
+ - it's not what you know, it's who you know
+ - it's only a matter of time
+ - ivory tower
+ - Jack of all trades
+ - jockey for position
+ - jog your memory
+ - joined at the hip
+ - judge a book by its cover
+ - jump down your throat
+ - jump in with both feet
+ - jump on the bandwagon
+ - jump the gun
+ - jump to conclusions
+ - just a hop, skip, and a jump
+ - just the ticket
+ - justice is blind
+ - keep a stiff upper lip
+ - keep an eye on
+ - keep it simple, stupid
+ - keep the home fires burning
+ - keep up with the Joneses
+ - keep your chin up
+ - keep your fingers crossed
+ - kick the bucket
+ - kick up your heels
+ - kick your feet up
+ - kid in a candy store
+ - kill two birds with one stone
+ - kiss of death
+ - knock it out of the park
+ - knock on wood
+ - knock your socks off
+ - know him from Adam
+ - know the ropes
+ - know the score
+ - knuckle down
+ - knuckle sandwich
+ - knuckle under
+ - labor of love
+ - ladder of success
+ - land on your feet
+ - lap of luxury
+ - last but not least
+ - last but not least
+ - last hurrah
+ - last-ditch effort
+ - law of the jungle
+ - law of the land
+ - lay down the law
+ - leaps and bounds
+ - let sleeping dogs lie
+ - let the cat out of the bag
+ - let the good times roll
+ - let your hair down
+ - let's talk turkey
+ - letter perfect
+ - lick your wounds
+ - lies like a rug
+ - life's a bitch
+ - life's a grind
+ - light at the end of the tunnel
+ - lighter than a feather
+ - lighter than air
+ - like clockwork
+ - like father like son
+ - like taking candy from a baby
+ - like there's no tomorrow
+ - lion's share
+ - live and learn
+ - live and let live
+ - long and short of it
+ - long lost love
+ - look before you leap
+ - look down your nose
+ - look what the cat dragged in
+ - looking a gift horse in the mouth
+ - looks like death warmed over
+ - loose cannon
+ - lose your head
+ - lose your temper
+ - loud as a horn
+ - lounge lizard
+ - loved and lost
+ - low man on the totem pole
+ - luck of the draw
+ - luck of the Irish
+ - make a mockery of
+ - make hay while the sun shines
+ - make money hand over fist
+ - make my day
+ - make the best of a bad situation
+ - make the best of it
+ - make your blood boil
+ - male chauvinism
+ - man of few words
+ - man's best friend
+ - mark my words
+ - meaningful dialogue
+ - missed the boat on that one
+ - moment in the sun
+ - moment of glory
+ - moment of truth
+ - moment of truth
+ - money to burn
+ - more in sorrow than in anger
+ - more power to you
+ - more sinned against than sinning
+ - more than one way to skin a cat
+ - movers and shakers
+ - moving experience
+ - my better half
+ - naked as a jaybird
+ - naked truth
+ - neat as a pin
+ - needle in a haystack
+ - needless to say
+ - neither here nor there
+ - never look back
+ - never say never
+ - nip and tuck
+ - nip in the bud
+ - nip it in the bud
+ - no guts, no glory
+ - no love lost
+ - no pain, no gain
+ - no skin off my back
+ - no stone unturned
+ - no time like the present
+ - no use crying over spilled milk
+ - nose to the grindstone
+ - not a hope in hell
+ - not a minute's peace
+ - not in my backyard
+ - not playing with a full deck
+ - not the end of the world
+ - not written in stone
+ - nothing to sneeze at
+ - nothing ventured nothing gained
+ - now we're cooking
+ - off the top of my head
+ - off the wagon
+ - off the wall
+ - old hat
+ - olden days
+ - older and wiser
+ - older than dirt
+ - older than Methuselah
+ - on a roll
+ - on cloud nine
+ - on pins and needles
+ - on the bandwagon
+ - on the money
+ - on the nose
+ - on the rocks
+ - on the same page
+ - on the spot
+ - on the tip of my tongue
+ - on the wagon
+ - on thin ice
+ - once bitten, twice shy
+ - one bad apple doesn't spoil the bushel
+ - one born every minute
+ - one brick short
+ - one foot in the grave
+ - one in a million
+ - one red cent
+ - only game in town
+ - open a can of worms
+ - open and shut case
+ - open the flood gates
+ - opportunity doesn't knock twice
+ - out of pocket
+ - out of sight, out of mind
+ - out of the frying pan into the fire
+ - out of the woods
+ - out on a limb
+ - over a barrel
+ - over the hump
+ - pain and suffering
+ - pain in the
+ - panic button
+ - par for the course
+ - part and parcel
+ - party pooper
+ - pass the buck
+ - patience is a virtue
+ - pay through the nose
+ - penny pincher
+ - perfect storm
+ - pig in a poke
+ - pile it on
+ - pillar of the community
+ - pin your hopes on
+ - pitter patter of little feet
+ - plain as day
+ - plain as the nose on your face
+ - play by the rules
+ - play your cards right
+ - playing the field
+ - playing with fire
+ - pleased as punch
+ - plenty of fish in the sea
+ - point with pride
+ - poor as a church mouse
+ - pot calling the kettle black
+ - presidential timber
+ - pretty as a picture
+ - pull a fast one
+ - pull your punches
+ - pulled no punches
+ - pulling your leg
+ - pure as the driven snow
+ - put it in a nutshell
+ - put one over on you
+ - put the cart before the horse
+ - put the pedal to the metal
+ - put your best foot forward
+ - put your foot down
+ - quantum jump
+ - quantum leap
+ - quick as a bunny
+ - quick as a lick
+ - quick as a wink
+ - quick as lightning
+ - quiet as a dormouse
+ - rags to riches
+ - raining buckets
+ - raining cats and dogs
+ - rank and file
+ - rat race
+ - reap what you sow
+ - red as a beet
+ - red herring
+ - redound to one's credit
+ - redound to the benefit of
+ - reinvent the wheel
+ - rich and famous
+ - rings a bell
+ - ripe old age
+ - ripped me off
+ - rise and shine
+ - road to hell is paved with good intentions
+ - rob Peter to pay Paul
+ - roll over in the grave
+ - rub the wrong way
+ - ruled the roost
+ - running in circles
+ - sad but true
+ - sadder but wiser
+ - salt of the earth
+ - scared stiff
+ - scared to death
+ - sea change
+ - sealed with a kiss
+ - second to none
+ - see eye to eye
+ - seen the light
+ - seize the day
+ - set the record straight
+ - set the world on fire
+ - set your teeth on edge
+ - sharp as a tack
+ - shirked his duties
+ - shoot for the moon
+ - shoot the breeze
+ - shot in the dark
+ - shoulder to the wheel
+ - sick as a dog
+ - sigh of relief
+ - signed, sealed, and delivered
+ - sink or swim
+ - six of one, half a dozen of another
+ - six of one, half a dozen of the other
+ - skating on thin ice
+ - slept like a log
+ - slinging mud
+ - slippery as an eel
+ - slow as molasses
+ - smart as a whip
+ - smooth as a baby's bottom
+ - sneaking suspicion
+ - snug as a bug in a rug
+ - sow wild oats
+ - spare the rod, spoil the child
+ - speak of the devil
+ - spilled the beans
+ - spinning your wheels
+ - spitting image of
+ - spoke with relish
+ - spread like wildfire
+ - spring to life
+ - squeaky wheel gets the grease
+ - stands out like a sore thumb
+ - start from scratch
+ - stick in the mud
+ - still waters run deep
+ - stitch in time
+ - stop and smell the roses
+ - straight as an arrow
+ - straw that broke the camel's back
+ - stretched to the breaking point
+ - strong as an ox
+ - stubborn as a mule
+ - stuff that dreams are made of
+ - stuffed shirt
+ - sweating blood
+ - sweating bullets
+ - take a load off
+ - take one for the team
+ - take the bait
+ - take the bull by the horns
+ - take the plunge
+ - takes one to know one
+ - takes two to tango
+ - than you can shake a stick at
+ - the cream of the crop
+ - the cream rises to the top
+ - the more the merrier
+ - the real deal
+ - the real McCoy
+ - the red carpet treatment
+ - the same old story
+ - the straw that broke the camel's back
+ - there is no accounting for taste
+ - thick as a brick
+ - thick as thieves
+ - thick as thieves
+ - thin as a rail
+ - think outside of the box
+ - thinking outside the box
+ - third time's the charm
+ - this day and age
+ - this hurts me worse than it hurts you
+ - this point in time
+ - thought leaders?
+ - three sheets to the wind
+ - through thick and thin
+ - throw in the towel
+ - throw the baby out with the bathwater
+ - tie one on
+ - tighter than a drum
+ - time and time again
+ - time is of the essence
+ - tip of the iceberg
+ - tired but happy
+ - to coin a phrase
+ - to each his own
+ - to make a long story short
+ - to the best of my knowledge
+ - toe the line
+ - tongue in cheek
+ - too good to be true
+ - too hot to handle
+ - too numerous to mention
+ - touch with a ten foot pole
+ - tough as nails
+ - trial and error
+ - trials and tribulations
+ - tried and true
+ - trip down memory lane
+ - twist of fate
+ - two cents worth
+ - two peas in a pod
+ - ugly as sin
+ - under the counter
+ - under the gun
+ - under the same roof
+ - under the weather
+ - until the cows come home
+ - unvarnished truth
+ - up the creek
+ - uphill battle
+ - upper crust
+ - upset the applecart
+ - vain attempt
+ - vain effort
+ - vanquish the enemy
+ - various and sundry
+ - vested interest
+ - viable alternative
+ - waiting for the other shoe to drop
+ - wakeup call
+ - warm welcome
+ - watch your p's and q's
+ - watch your tongue
+ - watching the clock
+ - water under the bridge
+ - wax eloquent
+ - wax poetic
+ - we've got a situation here
+ - weather the storm
+ - weed them out
+ - week of Sundays
+ - went belly up
+ - wet behind the ears
+ - what goes around comes around
+ - what you see is what you get
+ - when it rains, it pours
+ - when push comes to shove
+ - when the cat's away
+ - when the going gets tough, the tough get going
+ - whet (?:the|your) appetite
+ - white as a sheet
+ - whole ball of wax
+ - whole hog
+ - whole nine yards
+ - wild goose chase
+ - will wonders never cease?
+ - wisdom of the ages
+ - wise as an owl
+ - wolf at the door
+ - wool pulled over our eyes
+ - words fail me
+ - work like a dog
+ - world weary
+ - worst nightmare
+ - worth its weight in gold
+ - writ large
+ - wrong side of the bed
+ - yanking your chain
+ - yappy as a dog
+ - years young
+ - you are what you eat
+ - you can run but you can't hide
+ - you only live once
+ - you're the boss
+ - young and foolish
+ - young and vibrant
diff --git a/config/vale/styles/kb/CorporateSpeak.yml b/config/vale/styles/kb/CorporateSpeak.yml
new file mode 100644
index 00000000..04129b34
--- /dev/null
+++ b/config/vale/styles/kb/CorporateSpeak.yml
@@ -0,0 +1,31 @@
+---
+extends: existence
+message: "'%s' is corporate speak."
+ignorecase: true
+level: error
+tokens:
+ - at the end of the day
+ - back to the drawing board
+ - hit the ground running
+ - get the ball rolling
+ - low-hanging fruit
+ - thrown under the bus
+ - think outside the box
+ - let's touch base
+ - get my manager's blessing
+ - it's on my radar
+ - ping me
+ - i don't have the bandwidth
+ - no brainer
+ - par for the course
+ - bang for your buck
+ - synergy
+ - move the goal post
+ - apples to apples
+ - win-win
+ - circle back around
+ - all hands on deck
+ - take this offline
+ - drill-down
+ - elephant in the room
+ - on my plate
diff --git a/config/vale/styles/kb/Currency.yml b/config/vale/styles/kb/Currency.yml
new file mode 100644
index 00000000..222cf601
--- /dev/null
+++ b/config/vale/styles/kb/Currency.yml
@@ -0,0 +1,6 @@
+---
+extends: existence
+message: "Incorrect use of symbols in '%s'."
+ignorecase: true
+raw:
+ - \$[\d]* ?(?:dollars|usd|us dollars)
diff --git a/config/vale/styles/kb/Dashes.yml b/config/vale/styles/kb/Dashes.yml
new file mode 100644
index 00000000..3bc20035
--- /dev/null
+++ b/config/vale/styles/kb/Dashes.yml
@@ -0,0 +1,14 @@
+---
+extends: existence
+message: "Remove the spaces around '%s'."
+link: https://docs.microsoft.com/en-us/style-guide/punctuation/dashes-hyphens/emes
+ignorecase: true
+nonword: true
+level: error
+action:
+ name: edit
+ params:
+ - remove
+ - ' '
+tokens:
+ - '[—–]\s|\s[—–]'
diff --git a/config/vale/styles/kb/DateCase.yml b/config/vale/styles/kb/DateCase.yml
new file mode 100644
index 00000000..b8904010
--- /dev/null
+++ b/config/vale/styles/kb/DateCase.yml
@@ -0,0 +1,8 @@
+---
+extends: existence
+message: With lowercase letters, the periods are standard.
+ignorecase: true
+level: error
+nonword: true
+tokens:
+ - '\d{1,2} ?[ap]m\b'
diff --git a/config/vale/styles/kb/DateFormat.yml b/config/vale/styles/kb/DateFormat.yml
new file mode 100644
index 00000000..6df38c05
--- /dev/null
+++ b/config/vale/styles/kb/DateFormat.yml
@@ -0,0 +1,9 @@
+---
+extends: existence
+message: Use 'July 31, 2016' format, not '%s'.
+link: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/date-time-terms
+ignorecase: true
+level: error
+nonword: true
+tokens:
+ - '\d{1,2} (?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)|May|Jun(?:e)|Jul(?:y)|Aug(?:ust)|Sep(?:tember)?|Oct(?:ober)|Nov(?:ember)?|Dec(?:ember)?) \d{4}'
diff --git a/config/vale/styles/kb/DateMidnight.yml b/config/vale/styles/kb/DateMidnight.yml
new file mode 100644
index 00000000..c8f539b8
--- /dev/null
+++ b/config/vale/styles/kb/DateMidnight.yml
@@ -0,0 +1,8 @@
+---
+extends: existence
+message: "Use 'midnight' or 'noon'."
+ignorecase: true
+level: error
+nonword: true
+tokens:
+ - '12 ?[ap]\.?m\.?'
diff --git a/config/vale/styles/kb/DateNumbers.yml b/config/vale/styles/kb/DateNumbers.yml
new file mode 100644
index 00000000..289caff3
--- /dev/null
+++ b/config/vale/styles/kb/DateNumbers.yml
@@ -0,0 +1,41 @@
+---
+extends: existence
+message: "Don't use ordinal numbers for dates."
+link: https://docs.microsoft.com/en-us/style-guide/numbers#numbers-in-dates
+level: error
+nonword: true
+ignorecase: true
+raw:
+ - \b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)|May|Jun(?:e)|Jul(?:y)|Aug(?:ust)|Sep(?:tember)?|Oct(?:ober)|Nov(?:ember)?|Dec(?:ember)?)\b\s*
+tokens:
+ - first
+ - second
+ - third
+ - fourth
+ - fifth
+ - sixth
+ - seventh
+ - eighth
+ - ninth
+ - tenth
+ - eleventh
+ - twelfth
+ - thirteenth
+ - fourteenth
+ - fifteenth
+ - sixteenth
+ - seventeenth
+ - eighteenth
+ - nineteenth
+ - twentieth
+ - twenty-first
+ - twenty-second
+ - twenty-third
+ - twenty-fourth
+ - twenty-fifth
+ - twenty-sixth
+ - twenty-seventh
+ - twenty-eighth
+ - twenty-ninth
+ - thirtieth
+ - thirty-first
diff --git a/config/vale/styles/kb/DateOrder.yml b/config/vale/styles/kb/DateOrder.yml
new file mode 100644
index 00000000..b43f48d9
--- /dev/null
+++ b/config/vale/styles/kb/DateOrder.yml
@@ -0,0 +1,9 @@
+---
+extends: existence
+message: "Always spell out the name of the month."
+link: https://docs.microsoft.com/en-us/style-guide/numbers#numbers-in-dates
+ignorecase: true
+level: error
+nonword: true
+tokens:
+ - '\b\d{1,2}/\d{1,2}/(?:\d{4}|\d{2})\b'
diff --git a/config/vale/styles/kb/DateRedundancy.yml b/config/vale/styles/kb/DateRedundancy.yml
new file mode 100644
index 00000000..403c00f1
--- /dev/null
+++ b/config/vale/styles/kb/DateRedundancy.yml
@@ -0,0 +1,11 @@
+---
+extends: existence
+message: "'a.m.' is always morning; 'p.m.' is always night."
+ignorecase: true
+level: error
+nonword: true
+tokens:
+ - '\d{1,2} ?a\.?m\.? in the morning'
+ - '\d{1,2} ?p\.?m\.? in the evening'
+ - '\d{1,2} ?p\.?m\.? at night'
+ - '\d{1,2} ?p\.?m\.? in the afternoon'
diff --git a/config/vale/styles/kb/DateSpacing.yml b/config/vale/styles/kb/DateSpacing.yml
new file mode 100644
index 00000000..6d48a01d
--- /dev/null
+++ b/config/vale/styles/kb/DateSpacing.yml
@@ -0,0 +1,8 @@
+---
+extends: existence
+message: "It's standard to put a space before '%s'"
+ignorecase: true
+level: error
+nonword: true
+tokens:
+ - '\d{1,2}[ap]\.?m\.?'
diff --git a/config/vale/styles/kb/DenizenLabels.yml b/config/vale/styles/kb/DenizenLabels.yml
new file mode 100644
index 00000000..b290f194
--- /dev/null
+++ b/config/vale/styles/kb/DenizenLabels.yml
@@ -0,0 +1,53 @@
+---
+extends: substitution
+message: Did you mean '%s'?
+ignorecase: false
+action:
+ name: replace
+swap:
+ (?:Afrikaaner|Afrikander): Afrikaner
+ (?:Hong Kongite|Hong Kongian): Hong Konger
+ (?:Indianan|Indianian): Hoosier
+ (?:Michiganite|Michiganian): Michigander
+ (?:New Hampshireite|New Hampshireman): New Hampshirite
+ (?:Newcastlite|Newcastleite): Novocastrian
+ (?:Providencian|Providencer): Providentian
+ (?:Trentian|Trentonian): Tridentine
+ (?:Warsawer|Warsawian): Varsovian
+ (?:Wolverhamptonite|Wolverhamptonian): Wulfrunian
+ Alabaman: Alabamian
+ Albuquerquian: Albuquerquean
+ Anchoragite: Anchorageite
+ Arizonian: Arizonan
+ Arkansawyer: Arkansan
+ Belarusan: Belarusian
+ Cayman Islander: Caymanian
+ Coloradoan: Coloradan
+ Connecticuter: Nutmegger
+ Fairbanksian: Fairbanksan
+ Fort Worther: Fort Worthian
+ Grenadian: Grenadan
+ Halifaxer: Haligonian
+ Hartlepoolian: Hartlepudlian
+ Illinoisian: Illinoisan
+ Iowegian: Iowan
+ Leedsian: Leodenisian
+ Liverpoolian: Liverpudlian
+ Los Angelean: Angeleno
+ Manchesterian: Mancunian
+ Minneapolisian: Minneapolitan
+ Missouran: Missourian
+ Monacan: Monegasque
+ Neopolitan: Neapolitan
+ New Jerseyite: New Jerseyan
+ New Orleansian: New Orleanian
+ Oklahoma Citian: Oklahoma Cityan
+ Oklahomian: Oklahoman
+ Saudi Arabian: Saudi
+ Seattlite: Seattleite
+ Surinamer: Surinamese
+ Tallahassean: Tallahasseean
+ Tennesseean: Tennessean
+ Trois-Rivièrester: Trifluvian
+ Utahan: Utahn
+ Valladolidian: Vallisoletano
diff --git a/config/vale/styles/kb/Diacritical.yml b/config/vale/styles/kb/Diacritical.yml
new file mode 100644
index 00000000..fd8a5e42
--- /dev/null
+++ b/config/vale/styles/kb/Diacritical.yml
@@ -0,0 +1,96 @@
+---
+extends: substitution
+message: Consider using '%s' instead of '%s'.
+ignorecase: true
+level: error
+action:
+ name: replace
+swap:
+ beau ideal: beau idéal
+ boutonniere: boutonnière
+ bric-a-brac: bric-à-brac
+ cafe: café
+ cause celebre: cause célèbre
+ chevre: chèvre
+ cliche: cliché
+ consomme: consommé
+ coup de grace: coup de grâce
+ crudites: crudités
+ creme brulee: crème brûlée
+ creme de menthe: crème de menthe
+ creme fraice: crème fraîche
+ creme fresh: crème fraîche
+ crepe: crêpe
+ debutante: débutante
+ decor: décor
+ deja vu: déjà vu
+ denouement: dénouement
+ facade: façade
+ fiance: fiancé
+ fiancee: fiancée
+ flambe: flambé
+ garcon: garçon
+ lycee: lycée
+ maitre d: maître d
+ menage a trois: ménage à trois
+ negligee: négligée
+ protege: protégé
+ protegee: protégée
+ puree: purée
+ my resume: my résumé
+ your resume: your résumé
+ his resume: his résumé
+ her resume: her résumé
+ a resume: a résumé
+ the resume: the résumé
+ risque: risqué
+ roue: roué
+ soiree: soirée
+ souffle: soufflé
+ soupcon: soupçon
+ touche: touché
+ tete-a-tete: tête-à-tête
+ voila: voilà
+ a la carte: à la carte
+ a la mode: à la mode
+ emigre: émigré
+
+ # Spanish loanwords
+ El Nino: El Niño
+ jalapeno: jalapeño
+ La Nina: La Niña
+ pina colada: piña colada
+ senor: señor
+ senora: señora
+ senorita: señorita
+
+ # Portuguese loanwords
+ acai: açaí
+
+ # German loanwords
+ doppelganger: doppelgänger
+ Fuhrer: Führer
+ Gewurztraminer: Gewürztraminer
+ vis-a-vis: vis-à-vis
+ Ubermensch: Übermensch
+
+ # Swedish loanwords
+ filmjolk: filmjölk
+ smorgasbord: smörgåsbord
+
+ # Names, places, and companies
+ Beyonce: Beyoncé
+ Bronte: Brontë
+ Champs-Elysees: Champs-Élysées
+ Citroen: Citroën
+ Curacao: Curaçao
+ Lowenbrau: Löwenbräu
+ Monegasque: Monégasque
+ Motley Crue: Mötley Crüe
+ Nescafe: Nescafé
+ Queensryche: Queensrÿche
+ Quebec: Québec
+ Quebecois: Québécois
+ Angstrom: Ångström
+ angstrom: ångström
+ Skoda: Škoda
diff --git a/config/vale/styles/kb/FirstPerson.yml b/config/vale/styles/kb/FirstPerson.yml
new file mode 100644
index 00000000..002e6b30
--- /dev/null
+++ b/config/vale/styles/kb/FirstPerson.yml
@@ -0,0 +1,14 @@
+---
+extends: existence
+message: "Use first person (such as '%s') sparingly."
+link: https://docs.microsoft.com/en-us/style-guide/grammar/person
+ignorecase: true
+level: warning
+nonword: true
+tokens:
+ - (?:^|\s)I\s
+ - (?:^|\s)I,\s
+ - \bI'm\b
+ - \bme\b
+ - \bmy\b
+ - \bmine\b
diff --git a/config/vale/styles/kb/GenderBias.yml b/config/vale/styles/kb/GenderBias.yml
new file mode 100644
index 00000000..3177c915
--- /dev/null
+++ b/config/vale/styles/kb/GenderBias.yml
@@ -0,0 +1,46 @@
+---
+extends: substitution
+message: Consider using '%s' instead of '%s'.
+ignorecase: true
+level: error
+action:
+ name: replace
+swap:
+ (?:alumnae|alumni): graduates
+ (?:alumna|alumnus): graduate
+ air(?:m[ae]n|wom[ae]n): pilot(s)
+ anchor(?:m[ae]n|wom[ae]n): anchor(s)
+ authoress: author
+ camera(?:m[ae]n|wom[ae]n): camera operator(s)
+ chair(?:m[ae]n|wom[ae]n): chair(s)
+ congress(?:m[ae]n|wom[ae]n): member(s) of congress
+ door(?:m[ae]|wom[ae]n): concierge(s)
+ draft(?:m[ae]n|wom[ae]n): drafter(s)
+ fire(?:m[ae]n|wom[ae]n): firefighter(s)
+ fisher(?:m[ae]n|wom[ae]n): fisher(s)
+ fresh(?:m[ae]n|wom[ae]n): first-year student(s)
+ garbage(?:m[ae]n|wom[ae]n): waste collector(s)
+ lady lawyer: lawyer
+ ladylike: courteous
+ landlord: building manager
+ mail(?:m[ae]n|wom[ae]n): mail carriers
+ man and wife: husband and wife
+ man enough: strong enough
+ mankind: human kind
+ manmade: manufactured
+ men and girls: men and women
+ middle(?:m[ae]n|wom[ae]n): intermediary
+ news(?:m[ae]n|wom[ae]n): journalist(s)
+ ombuds(?:man|woman): ombuds
+ oneupmanship: upstaging
+ poetess: poet
+ police(?:m[ae]n|wom[ae]n): police officer(s)
+ repair(?:m[ae]n|wom[ae]n): technician(s)
+ sales(?:m[ae]n|wom[ae]n): salesperson or sales people
+ service(?:m[ae]n|wom[ae]n): soldier(s)
+ steward(?:ess)?: flight attendant
+ tribes(?:m[ae]n|wom[ae]n): tribe member(s)
+ waitress: waiter
+ woman doctor: doctor
+ woman scientist[s]?: scientist(s)
+ work(?:m[ae]n|wom[ae]n): worker(s)
diff --git a/config/vale/styles/kb/GeneralURL.yml b/config/vale/styles/kb/GeneralURL.yml
new file mode 100644
index 00000000..692cefd0
--- /dev/null
+++ b/config/vale/styles/kb/GeneralURL.yml
@@ -0,0 +1,12 @@
+---
+extends: existence
+message: "For a general audience, use 'address' rather than 'URL'."
+link: https://docs.microsoft.com/en-us/style-guide/urls-web-addresses
+level: warning
+action:
+ name: replace
+ params:
+ - URL
+ - address
+tokens:
+ - URL
diff --git a/config/vale/styles/kb/GroupTerms.yml b/config/vale/styles/kb/GroupTerms.yml
new file mode 100644
index 00000000..8b2a97cd
--- /dev/null
+++ b/config/vale/styles/kb/GroupTerms.yml
@@ -0,0 +1,40 @@
+---
+extends: substitution
+message: Consider using '%s' instead of '%s'.
+ignorecase: true
+action:
+ name: replace
+swap:
+ (?:bunch|group|pack|flock) of chickens: brood of chickens
+ (?:bunch|group|pack|flock) of crows: murder of crows
+ (?:bunch|group|pack|flock) of hawks: cast of hawks
+ (?:bunch|group|pack|flock) of parrots: pandemonium of parrots
+ (?:bunch|group|pack|flock) of peacocks: muster of peacocks
+ (?:bunch|group|pack|flock) of penguins: muster of penguins
+ (?:bunch|group|pack|flock) of sparrows: host of sparrows
+ (?:bunch|group|pack|flock) of turkeys: rafter of turkeys
+ (?:bunch|group|pack|flock) of woodpeckers: descent of woodpeckers
+ (?:bunch|group|pack|herd) of apes: shrewdness of apes
+ (?:bunch|group|pack|herd) of baboons: troop of baboons
+ (?:bunch|group|pack|herd) of badgers: cete of badgers
+ (?:bunch|group|pack|herd) of bears: sloth of bears
+ (?:bunch|group|pack|herd) of bullfinches: bellowing of bullfinches
+ (?:bunch|group|pack|herd) of bullocks: drove of bullocks
+ (?:bunch|group|pack|herd) of caterpillars: army of caterpillars
+ (?:bunch|group|pack|herd) of cats: clowder of cats
+ (?:bunch|group|pack|herd) of colts: rag of colts
+ (?:bunch|group|pack|herd) of crocodiles: bask of crocodiles
+ (?:bunch|group|pack|herd) of dolphins: school of dolphins
+ (?:bunch|group|pack|herd) of foxes: skulk of foxes
+ (?:bunch|group|pack|herd) of gorillas: band of gorillas
+ (?:bunch|group|pack|herd) of hippopotami: bloat of hippopotami
+ (?:bunch|group|pack|herd) of horses: drove of horses
+ (?:bunch|group|pack|herd) of jellyfish: fluther of jellyfish
+ (?:bunch|group|pack|herd) of kangeroos: mob of kangeroos
+ (?:bunch|group|pack|herd) of monkeys: troop of monkeys
+ (?:bunch|group|pack|herd) of oxen: yoke of oxen
+ (?:bunch|group|pack|herd) of rhinoceros: crash of rhinoceros
+ (?:bunch|group|pack|herd) of wild boar: sounder of wild boar
+ (?:bunch|group|pack|herd) of wild pigs: drift of wild pigs
+ (?:bunch|group|pack|herd) of zebras: zeal of wild pigs
+ (?:bunch|group|pack|school) of trout: hover of trout
diff --git a/config/vale/styles/kb/HeadingColons.yml b/config/vale/styles/kb/HeadingColons.yml
new file mode 100644
index 00000000..087dfa65
--- /dev/null
+++ b/config/vale/styles/kb/HeadingColons.yml
@@ -0,0 +1,9 @@
+---
+extends: existence
+message: "Capitalize '%s'."
+link: https://docs.microsoft.com/en-us/style-guide/punctuation/colons
+nonword: true
+level: error
+scope: heading
+tokens:
+ - ':\s[a-z]'
diff --git a/config/vale/styles/kb/HeadingPunctuation.yml b/config/vale/styles/kb/HeadingPunctuation.yml
new file mode 100644
index 00000000..c138107f
--- /dev/null
+++ b/config/vale/styles/kb/HeadingPunctuation.yml
@@ -0,0 +1,14 @@
+---
+extends: existence
+message: "Don't use end punctuation in headings."
+link: https://docs.microsoft.com/en-us/style-guide/punctuation/periods
+nonword: true
+level: warning
+scope: heading
+action:
+ name: edit
+ params:
+ - remove
+ - '.?!'
+tokens:
+ - '[a-z][.?!](?:\s|$)'
diff --git a/config/vale/styles/kb/Headings.yml b/config/vale/styles/kb/Headings.yml
new file mode 100644
index 00000000..7de189d3
--- /dev/null
+++ b/config/vale/styles/kb/Headings.yml
@@ -0,0 +1,29 @@
+---
+extends: capitalization
+message: "'%s' should use sentence-style capitalization."
+link: https://docs.microsoft.com/en-us/style-guide/capitalization
+level: suggestion
+scope: heading
+match: $sentence
+indicators:
+ - ':'
+exceptions:
+ - Azure
+ - CLI
+ - Code
+ - Cosmos
+ - Docker
+ - Emmet
+ - I
+ - Kubernetes
+ - Linux
+ - macOS
+ - Marketplace
+ - MongoDB
+ - REPL
+ - Studio
+ - TypeScript
+ - URLs
+ - Visual
+ - VS
+ - Windows
diff --git a/config/vale/styles/kb/Hedging.yml b/config/vale/styles/kb/Hedging.yml
new file mode 100644
index 00000000..a4967c5c
--- /dev/null
+++ b/config/vale/styles/kb/Hedging.yml
@@ -0,0 +1,9 @@
+---
+extends: existence
+message: "'%s' is hedging."
+ignorecase: true
+level: error
+tokens:
+ - I would argue that
+ - ', so to speak'
+ - to a certain degree
diff --git a/config/vale/styles/kb/Hyperbole.yml b/config/vale/styles/kb/Hyperbole.yml
new file mode 100644
index 00000000..e6422c87
--- /dev/null
+++ b/config/vale/styles/kb/Hyperbole.yml
@@ -0,0 +1,7 @@
+---
+extends: existence
+message: "'%s' is hyperbolic."
+level: error
+nonword: true
+tokens:
+ - '[a-z]+[!?]{2,}'
diff --git a/config/vale/styles/kb/Hyphens.yml b/config/vale/styles/kb/Hyphens.yml
new file mode 100644
index 00000000..b14a2ad9
--- /dev/null
+++ b/config/vale/styles/kb/Hyphens.yml
@@ -0,0 +1,15 @@
+---
+extends: existence
+message: "'%s' doesn't need a hyphen."
+link: https://docs.microsoft.com/en-us/style-guide/punctuation/dashes-hyphens/hyphens
+level: warning
+ignorecase: false
+nonword: true
+action:
+ name: edit
+ params:
+ - replace
+ - '-'
+ - ' '
+tokens:
+ - '\s[^\s-]+ly-'
diff --git a/config/vale/styles/kb/Illusions.yml b/config/vale/styles/kb/Illusions.yml
new file mode 100644
index 00000000..6b41536e
--- /dev/null
+++ b/config/vale/styles/kb/Illusions.yml
@@ -0,0 +1,12 @@
+---
+extends: repetition
+message: "'%s' is repeated!"
+level: warning
+alpha: true
+action:
+ name: edit
+ params:
+ - truncate
+ - " "
+tokens:
+ - '[^\s]+'
diff --git a/config/vale/styles/kb/Needless.yml b/config/vale/styles/kb/Needless.yml
new file mode 100644
index 00000000..a0ab201d
--- /dev/null
+++ b/config/vale/styles/kb/Needless.yml
@@ -0,0 +1,359 @@
+---
+extends: substitution
+message: Prefer '%s' over '%s'
+ignorecase: true
+action:
+ name: replace
+swap:
+ '(?:cell phone|cell-phone)': cellphone
+ '(?:cliquey|cliquy)': cliquish
+ '(?:pygmean|pygmaen)': pygmy
+ '(?:retributional|retributionary)': retributive
+ '(?:revokable|revokeable)': revocable
+ abolishment: abolition
+ accessary: accessory
+ accreditate: accredit
+ accruement: accrual
+ accusee: accused
+ acquaintanceship: acquaintance
+ acquitment: acquittal
+ administrate: administer
+ administrated: administered
+ administrating: administering
+ adulterate: adulterous
+ advisatory: advisory
+ advocator: advocate
+ aggrievance: grievance
+ allegator: alleger
+ allusory: allusive
+ amative: amorous
+ amortizement: amortization
+ amphiboly: amphibology
+ anecdotalist: anecdotist
+ anilinctus: anilingus
+ anticipative: anticipatory
+ antithetic: antithetical
+ applicative: applicable
+ applicatory: applicable
+ applier: applicator
+ approbative: approbatory
+ arbitrager: arbitrageur
+ arsenous: arsenious
+ ascendance: ascendancy
+ ascendence: ascendancy
+ ascendency: ascendancy
+ auctorial: authorial
+ averral: averment
+ barbwire: barbed wire
+ benefic: beneficent
+ benignant: benign
+ bestowment: bestowal
+ betrothment: betrothal
+ blamableness: blameworthiness
+ butt naked: buck naked
+ camarade: comrade
+ carta blanca: carte blanche
+ casualities: casualties
+ casuality: casualty
+ catch on fire: catch fire
+ catholicly: catholically
+ cease fire: ceasefire
+ channelize: channel
+ chaplainship: chaplaincy
+ chrysalid: chrysalis
+ chrysalids: chrysalises
+ cigaret: cigarette
+ coemployee: coworker
+ cognitional: cognitive
+ cohabitate: cohabit
+ cohabitor: cohabitant
+ collodium: collodion
+ collusory: collusive
+ commemoratory: commemorative
+ commonty: commonage
+ communicatory: communicative
+ compensative: compensatory
+ complacence: complacency
+ complicitous: complicit
+ computate: compute
+ conciliative: conciliatory
+ concomitancy: concomitance
+ condonance: condonation
+ confirmative: confirmatory
+ congruency: congruence
+ connotate: connote
+ consanguineal: consanguine
+ conspicuity: conspicuousness
+ conspiratorialist: conspirator
+ constitutionist: constitutionalist
+ contingence: contigency
+ contributary: contributory
+ contumacity: contumacy
+ conversible: convertible
+ conveyal: conveyance
+ copartner: partner
+ copartnership: partnership
+ corroboratory: corroborative
+ cotemporaneous: contemporaneous
+ cotemporary: contemporary
+ criminate: incriminate
+ culpatory: inculpatory
+ cumbrance: encumbrance
+ cumulate: accumulate
+ curatory: curative
+ daredeviltry: daredevilry
+ deceptious: deceptive
+ defamative: defamatory
+ defraudulent: fraudulent
+ degeneratory: degenerative
+ delimitate: delimit
+ delusory: delusive
+ denouncement: denunciation
+ depositee: depositary
+ depreciative: depreciatory
+ deprival: deprivation
+ derogative: derogatory
+ destroyable: destructible
+ detoxicate: detoxify
+ detractory: detractive
+ deviancy: deviance
+ deviationist: deviant
+ digamy: deuterogamy
+ digitalize: digitize
+ diminishment: diminution
+ diplomatist: diplomat
+ disassociate: dissociate
+ disciplinatory: disciplinary
+ discriminant: discriminating
+ disenthrone: dethrone
+ disintegratory: disintegrative
+ dismission: dismissal
+ disorientate: disorient
+ disorientated: disoriented
+ disquieten: disquiet
+ distraite: distrait
+ divergency: divergence
+ dividable: divisible
+ doctrinary: doctrinaire
+ documental: documentary
+ domesticize: domesticate
+ duplicatory: duplicative
+ duteous: dutiful
+ educationalist: educationist
+ educatory: educative
+ enigmatas: enigmas
+ enlargen: enlarge
+ enswathe: swathe
+ epical: epic
+ erotism: eroticism
+ ethician: ethicist
+ ex officiis: ex officio
+ exculpative: exculpatory
+ exigeant: exigent
+ exigence: exigency
+ exotism: exoticism
+ expedience: expediency
+ expediential: expedient
+ extensible: extendable
+ eying: eyeing
+ fiefdom: fief
+ flagrance: flagrancy
+ flatulency: flatulence
+ fraudful: fraudulent
+ funebrial: funereal
+ geographical: geographic
+ geometrical: geometric
+ gerry-rigged: jury-rigged
+ goatherder: goatherd
+ gustatorial: gustatory
+ habitude: habit
+ henceforward: henceforth
+ hesitance: hesitancy
+ heterogenous: heterogeneous
+ hierarchic: hierarchical
+ hindermost: hindmost
+ honorand: honoree
+ hypostasize: hypostatize
+ hysteric: hysterical
+ idolatrize: idolize
+ impanel: empanel
+ imperviable: impervious
+ importunacy: importunity
+ impotency: impotence
+ imprimatura: imprimatur
+ improprietous: improper
+ inalterable: unalterable
+ incitation: incitement
+ incommunicative: uncommunicative
+ inconsistence: inconsistency
+ incontrollable: uncontrollable
+ incurment: incurrence
+ indow: endow
+ indue: endue
+ inhibitive: inhibitory
+ innavigable: unnavigable
+ innovational: innovative
+ inquisitional: inquisitorial
+ insistment: insistence
+ insolvable: unsolvable
+ instillment: instillation
+ instinctual: instinctive
+ insuror: insurer
+ insurrectional: insurrectionary
+ interpretate: interpret
+ intervenience: intervention
+ ironical: ironic
+ jerry-rigged: jury-rigged
+ judgmatic: judgmental
+ labyrinthian: labyrinthine
+ laudative: laudatory
+ legitimatization: legitimation
+ legitimatize: legitimize
+ legitimization: legitimation
+ lengthways: lengthwise
+ life-sized: life-size
+ liquorice: licorice
+ lithesome: lithe
+ lollipop: lollypop
+ loth: loath
+ lubricous: lubricious
+ maihem: mayhem
+ medicinal marijuana: medical marijuana
+ meliorate: ameliorate
+ minimalize: minimize
+ mirk: murk
+ mirky: murky
+ misdoubt: doubt
+ monetarize: monetize
+ moveable: movable
+ narcism: narcissism
+ neglective: neglectful
+ negligency: negligence
+ neologizer: neologist
+ neurologic: neurological
+ nicknack: knickknack
+ nictate: nictitate
+ nonenforceable: unenforceable
+ normalcy: normality
+ numbedness: numbness
+ omittable: omissible
+ onomatopoetic: onomatopoeic
+ opinioned: opined
+ optimum advantage: optimal advantage
+ orientate: orient
+ outsized: outsize
+ oversized: oversize
+ overthrowal: overthrow
+ pacificist: pacifist
+ paederast: pederast
+ parachronism: anachronism
+ parti-color: parti-colored
+ participative: participatory
+ party-colored: parti-colored
+ pediatrist: pediatrician
+ penumbrous: penumbral
+ perjorative: pejorative
+ permissory: permissive
+ permutate: permute
+ personation: impersonation
+ pharmaceutic: pharmaceutical
+ pleuritis: pleurisy
+ policy holder: policyholder
+ policyowner: policyholder
+ politicalize: politicize
+ precedency: precedence
+ preceptoral: preceptorial
+ precipitance: precipitancy
+ precipitant: precipitate
+ preclusory: preclusive
+ precolumbian: pre-Columbian
+ prefectoral: prefectorial
+ preponderately: preponderantly
+ preserval: preservation
+ preventative: preventive
+ proconsulship: proconsulate
+ procreational: procreative
+ procurance: procurement
+ propelment: propulsion
+ propulsory: propulsive
+ prosecutive: prosecutory
+ protectory: protective
+ provocatory: provocative
+ pruriency: prurience
+ psychal: psychical
+ punitory: punitive
+ quantitate: quantify
+ questionary: questionnaire
+ quiescency: quiescence
+ rabbin: rabbi
+ reasonability: reasonableness
+ recidivistic: recidivous
+ recriminative: recriminatory
+ recruital: recruitment
+ recurrency: recurrence
+ recusance: recusancy
+ recusation: recusal
+ recusement: recusal
+ redemptory: redemptive
+ referrable: referable
+ referrible: referable
+ refutatory: refutative
+ remitment: remittance
+ remittal: remission
+ renouncement: renunciation
+ renunciable: renounceable
+ reparatory: reparative
+ repudiative: repudiatory
+ requitement: requital
+ rescindment: rescission
+ restoral: restoration
+ reticency: reticence
+ reviewal: review
+ revisal: revision
+ revisional: revisionary
+ revolute: revolt
+ saliency: salience
+ salutiferous: salutary
+ sensatory: sensory
+ sessionary: sessional
+ shareowner: shareholder
+ sicklily: sickly
+ signator: signatory
+ slanderize: slander
+ societary: societal
+ sodomist: sodomite
+ solicitate: solicit
+ speculatory: speculative
+ spiritous: spirituous
+ statutorial: statutory
+ submergeable: submersible
+ submittal: submission
+ subtile: subtle
+ succuba: succubus
+ sufficience: sufficiency
+ suppliant: supplicant
+ surmisal: surmise
+ suspendible: suspendable
+ synthetize: synthesize
+ systemize: systematize
+ tactual: tactile
+ tangental: tangential
+ tautologous: tautological
+ tee-shirt: T-shirt
+ thenceforward: thenceforth
+ transiency: transience
+ transposal: transposition
+ unfrequent: infrequent
+ unreasonability: unreasonableness
+ unrevokable: irrevocable
+ unsubstantial: insubstantial
+ usurpature: usurpation
+ variative: variational
+ vegetive: vegetative
+ vindicative: vindictive
+ vituperous: vituperative
+ vociferant: vociferous
+ volitive: volitional
+ wolverene: wolverine
+ wolvish: wolfish
+ Zoroastrism: Zoroastrianism
diff --git a/config/vale/styles/kb/Negative.yml b/config/vale/styles/kb/Negative.yml
new file mode 100644
index 00000000..fc10e659
--- /dev/null
+++ b/config/vale/styles/kb/Negative.yml
@@ -0,0 +1,14 @@
+---
+extends: existence
+message: "Form a negative number with an en dash, not a hyphen."
+link: https://docs.microsoft.com/en-us/style-guide/numbers
+nonword: true
+level: error
+action:
+ name: edit
+ params:
+ - replace
+ - '-'
+ - '–'
+tokens:
+ - '\s-\d+\s'
diff --git a/config/vale/styles/kb/Nonwords.yml b/config/vale/styles/kb/Nonwords.yml
new file mode 100644
index 00000000..f92a6868
--- /dev/null
+++ b/config/vale/styles/kb/Nonwords.yml
@@ -0,0 +1,39 @@
+---
+extends: substitution
+message: "Consider using '%s' instead of '%s'."
+ignorecase: true
+level: error
+action:
+ name: replace
+swap:
+ affrontery: effrontery
+ analyzation: analysis
+ annoyment: annoyance
+ confirmant: confirmand
+ confirmants: confirmands
+ conversate: converse
+ crained: cranded
+ discomforture: discomfort|discomfiture
+ dispersement: disbursement|dispersal
+ doubtlessly: doubtless|undoubtedly
+ forebearance: forbearance
+ improprietous: improper
+ inclimate: inclement
+ inimicable: inimical
+ irregardless: regardless
+ minimalize: minimize
+ minimalized: minimized
+ minimalizes: minimizes
+ minimalizing: minimizing
+ optimalize: optimize
+ paralyzation: paralysis
+ pettifogger: pettifog
+ proprietous: proper
+ relative inexpense: relatively low price|affordability
+ seldomly: seldom
+ thusly: thus
+ uncategorically: categorically
+ undoubtably: undoubtedly|indubitably
+ unequivocable: unequivocal
+ unmercilessly: mercilessly
+ unrelentlessly: unrelentingly|relentlessly
diff --git a/config/vale/styles/kb/Ordinal.yml b/config/vale/styles/kb/Ordinal.yml
new file mode 100644
index 00000000..a1e79f40
--- /dev/null
+++ b/config/vale/styles/kb/Ordinal.yml
@@ -0,0 +1,14 @@
+---
+extends: existence
+message: "Don't add -ly to an ordinal number."
+link: https://docs.microsoft.com/en-us/style-guide/numbers
+level: error
+action:
+ name: edit
+ params:
+ - trim
+ - ly
+tokens:
+ - firstly
+ - secondly
+ - thirdly
diff --git a/config/vale/styles/kb/OxfordComma.yml b/config/vale/styles/kb/OxfordComma.yml
new file mode 100644
index 00000000..c948c6fb
--- /dev/null
+++ b/config/vale/styles/kb/OxfordComma.yml
@@ -0,0 +1,9 @@
+---
+extends: existence
+message: "Use the Oxford comma in '%s'."
+link: https://docs.microsoft.com/en-us/style-guide/punctuation/commas
+scope: sentence
+level: suggestion
+nonword: true
+tokens:
+ - '(?:[^\s,]+,){1,} \w+ (?:and|or) \w+[.?!]'
diff --git a/config/vale/styles/kb/Oxymorons.yml b/config/vale/styles/kb/Oxymorons.yml
new file mode 100644
index 00000000..abf3f6e1
--- /dev/null
+++ b/config/vale/styles/kb/Oxymorons.yml
@@ -0,0 +1,23 @@
+---
+extends: existence
+message: "'%s' is an oxymoron."
+ignorecase: true
+level: error
+tokens:
+ - amateur expert
+ - increasingly less
+ - advancing backwards
+ - alludes explicitly to
+ - explicitly alludes to
+ - totally obsolescent
+ - completely obsolescent
+ - generally always
+ - usually always
+ - increasingly less
+ - build down
+ - conspicuous absence
+ - exact estimate
+ - found missing
+ - intense apathy
+ - mandatory choice
+ - organized mess
diff --git a/config/vale/styles/kb/P-Value.yml b/config/vale/styles/kb/P-Value.yml
new file mode 100644
index 00000000..645b0300
--- /dev/null
+++ b/config/vale/styles/kb/P-Value.yml
@@ -0,0 +1,7 @@
+---
+extends: existence
+message: "You should use more decimal places, unless '%s' is really true."
+ignorecase: true
+level: suggestion
+tokens:
+ - 'p = 0\.0{2,4}'
diff --git a/config/vale/styles/kb/Passive.yml b/config/vale/styles/kb/Passive.yml
new file mode 100644
index 00000000..fdc01cce
--- /dev/null
+++ b/config/vale/styles/kb/Passive.yml
@@ -0,0 +1,184 @@
+---
+extends: existence
+message: "'%s' may be passive voice. Use active voice if you can."
+ignorecase: true
+level: warning
+raw:
+ - \b(am|are|were|being|is|been|was|be)\b\s*
+tokens:
+ - '[\w]+ed'
+ - awoken
+ - beat
+ - become
+ - been
+ - begun
+ - bent
+ - beset
+ - bet
+ - bid
+ - bidden
+ - bitten
+ - bled
+ - blown
+ - born
+ - bought
+ - bound
+ - bred
+ - broadcast
+ - broken
+ - brought
+ - built
+ - burnt
+ - burst
+ - cast
+ - caught
+ - chosen
+ - clung
+ - come
+ - cost
+ - crept
+ - cut
+ - dealt
+ - dived
+ - done
+ - drawn
+ - dreamt
+ - driven
+ - drunk
+ - dug
+ - eaten
+ - fallen
+ - fed
+ - felt
+ - fit
+ - fled
+ - flown
+ - flung
+ - forbidden
+ - foregone
+ - forgiven
+ - forgotten
+ - forsaken
+ - fought
+ - found
+ - frozen
+ - given
+ - gone
+ - gotten
+ - ground
+ - grown
+ - heard
+ - held
+ - hidden
+ - hit
+ - hung
+ - hurt
+ - kept
+ - knelt
+ - knit
+ - known
+ - laid
+ - lain
+ - leapt
+ - learnt
+ - led
+ - left
+ - lent
+ - let
+ - lighted
+ - lost
+ - made
+ - meant
+ - met
+ - misspelt
+ - mistaken
+ - mown
+ - overcome
+ - overdone
+ - overtaken
+ - overthrown
+ - paid
+ - pled
+ - proven
+ - put
+ - quit
+ - read
+ - rid
+ - ridden
+ - risen
+ - run
+ - rung
+ - said
+ - sat
+ - sawn
+ - seen
+ - sent
+ - set
+ - sewn
+ - shaken
+ - shaven
+ - shed
+ - shod
+ - shone
+ - shorn
+ - shot
+ - shown
+ - shrunk
+ - shut
+ - slain
+ - slept
+ - slid
+ - slit
+ - slung
+ - smitten
+ - sold
+ - sought
+ - sown
+ - sped
+ - spent
+ - spilt
+ - spit
+ - split
+ - spoken
+ - spread
+ - sprung
+ - spun
+ - stolen
+ - stood
+ - stridden
+ - striven
+ - struck
+ - strung
+ - stuck
+ - stung
+ - stunk
+ - sung
+ - sunk
+ - swept
+ - swollen
+ - sworn
+ - swum
+ - swung
+ - taken
+ - taught
+ - thought
+ - thrived
+ - thrown
+ - thrust
+ - told
+ - torn
+ - trodden
+ - understood
+ - upheld
+ - upset
+ - wed
+ - wept
+ - withheld
+ - withstood
+ - woken
+ - won
+ - worn
+ - wound
+ - woven
+ - written
+ - wrung
diff --git a/config/vale/styles/kb/Percentages.yml b/config/vale/styles/kb/Percentages.yml
new file mode 100644
index 00000000..6b8ed6c1
--- /dev/null
+++ b/config/vale/styles/kb/Percentages.yml
@@ -0,0 +1,8 @@
+---
+extends: existence
+message: "Use a numeral plus the units."
+link: https://docs.microsoft.com/en-us/style-guide/numbers
+nonword: true
+level: error
+tokens:
+ - '\b[a-zA-z]+\spercent\b'
diff --git a/config/vale/styles/kb/Quotes.yml b/config/vale/styles/kb/Quotes.yml
new file mode 100644
index 00000000..cf7c4c37
--- /dev/null
+++ b/config/vale/styles/kb/Quotes.yml
@@ -0,0 +1,8 @@
+---
+extends: existence
+message: 'Punctuation should be inside the quotes.'
+link: https://docs.microsoft.com/en-us/style-guide/punctuation/quotation-marks
+level: error
+nonword: true
+tokens:
+ - '["“][^"”“]+["”][.,]'
diff --git a/config/vale/styles/kb/RASSyndrome.yml b/config/vale/styles/kb/RASSyndrome.yml
new file mode 100644
index 00000000..b2477800
--- /dev/null
+++ b/config/vale/styles/kb/RASSyndrome.yml
@@ -0,0 +1,31 @@
+---
+extends: existence
+message: "'%s' is redundant."
+level: error
+action:
+ name: edit
+ params:
+ - split
+ - ' '
+ - '0'
+tokens:
+ - ABM missile
+ - ACT test
+ - ABM missiles
+ - ABS braking system
+ - ATM machine
+ - CD disc
+ - CPI Index
+ - GPS system
+ - GUI interface
+ - HIV virus
+ - ISBN number
+ - LCD display
+ - PDF format
+ - PIN number
+ - RAS syndrome
+ - RIP in peace
+ - please RSVP
+ - SALT talks
+ - SAT test
+ - UPC codes
diff --git a/config/vale/styles/kb/README.md b/config/vale/styles/kb/README.md
new file mode 100644
index 00000000..5839daaf
--- /dev/null
+++ b/config/vale/styles/kb/README.md
@@ -0,0 +1,15 @@
+# Vale Styles #
+
+This directory contains a series of style rules for the [Vale][0] style
+checker. Many of them are directly borrowed from existing style guides, e.g.,
+[write-good][1], [proselint][2], [Google][3], and [Microsoft][4].
+
+[0]: https://errata.ai/
+
+[1]: https://github.com/errata-ai/write-good
+
+[2]: https://github.com/errata-ai/proselint
+
+[3]: https://github.com/errata-ai/Google
+
+[4]: https://github.com/errata-ai/Microsoft
diff --git a/config/vale/styles/kb/RangeFormat.yml b/config/vale/styles/kb/RangeFormat.yml
new file mode 100644
index 00000000..c0fecc50
--- /dev/null
+++ b/config/vale/styles/kb/RangeFormat.yml
@@ -0,0 +1,14 @@
+---
+extends: existence
+message: "Use an en dash in a range of numbers."
+link: https://docs.microsoft.com/en-us/style-guide/numbers
+nonword: true
+level: error
+action:
+ name: edit
+ params:
+ - replace
+ - '-'
+ - '–'
+tokens:
+ - '\b\d+\s?[-]\s?\d+\b'
diff --git a/config/vale/styles/kb/RangeTime.yml b/config/vale/styles/kb/RangeTime.yml
new file mode 100644
index 00000000..ce1ac126
--- /dev/null
+++ b/config/vale/styles/kb/RangeTime.yml
@@ -0,0 +1,14 @@
+---
+extends: existence
+message: "Use 'to' instead of a dash in '%s'."
+link: https://docs.microsoft.com/en-us/style-guide/numbers
+nonword: true
+level: error
+action:
+ name: edit
+ params:
+ - replace
+ - '[-–]'
+ - 'to'
+tokens:
+ - '\b(?:AM|PM)\s?[-–]\s?.+(?:AM|PM)\b'
diff --git a/config/vale/styles/kb/Ranges.yml b/config/vale/styles/kb/Ranges.yml
new file mode 100644
index 00000000..9bfebe4e
--- /dev/null
+++ b/config/vale/styles/kb/Ranges.yml
@@ -0,0 +1,8 @@
+---
+extends: existence
+message: "In most cases, use 'from' or 'through' to describe a range of numbers."
+link: 'https://docs.microsoft.com/en-us/style-guide/numbers'
+nonword: true
+level: warning
+tokens:
+ - '\b\d+\s?[-–]\s?\d+\b'
diff --git a/config/vale/styles/kb/Semicolon.yml b/config/vale/styles/kb/Semicolon.yml
new file mode 100644
index 00000000..e434d769
--- /dev/null
+++ b/config/vale/styles/kb/Semicolon.yml
@@ -0,0 +1,9 @@
+---
+extends: existence
+message: "Try to simplify this sentence."
+link: https://docs.microsoft.com/en-us/style-guide/punctuation/semicolons
+nonword: true
+scope: sentence
+level: suggestion
+tokens:
+ - ';'
diff --git a/config/vale/styles/kb/SentenceLength.yml b/config/vale/styles/kb/SentenceLength.yml
new file mode 100644
index 00000000..d3d351f1
--- /dev/null
+++ b/config/vale/styles/kb/SentenceLength.yml
@@ -0,0 +1,7 @@
+---
+extends: occurrence
+message: "Try to keep sentences short (< 30 words)."
+scope: sentence
+level: suggestion
+max: 30
+token: \b(\w+)\b
diff --git a/config/vale/styles/kb/Skunked.yml b/config/vale/styles/kb/Skunked.yml
new file mode 100644
index 00000000..7e1a522c
--- /dev/null
+++ b/config/vale/styles/kb/Skunked.yml
@@ -0,0 +1,14 @@
+---
+extends: existence
+message: "'%s' is a bit of a skunked term — impossible to use without issue."
+ignorecase: true
+level: error
+tokens:
+ - bona fides
+ - deceptively
+ - decimate
+ - effete
+ - fulsome
+ - hopefully
+ - impassionate
+ - Thankfully
diff --git a/config/vale/styles/kb/So.yml b/config/vale/styles/kb/So.yml
new file mode 100644
index 00000000..9f86242f
--- /dev/null
+++ b/config/vale/styles/kb/So.yml
@@ -0,0 +1,6 @@
+---
+extends: existence
+message: "Don't start a sentence with '%s'."
+level: error
+raw:
+ - '(?:[;-]\s)so[\s,]|\bSo[\s,]'
diff --git a/config/vale/styles/kb/Terms.yml b/config/vale/styles/kb/Terms.yml
new file mode 100644
index 00000000..bbf1a7c2
--- /dev/null
+++ b/config/vale/styles/kb/Terms.yml
@@ -0,0 +1,44 @@
+---
+extends: substitution
+message: "Prefer '%s' over '%s'."
+level: warning
+ignorecase: true
+action:
+ name: replace
+swap:
+ '(?:agent|virtual assistant|intelligent personal assistant)': personal digital assistant
+ '(?:drive C:|drive C>|C: drive)': drive C
+ '(?:internet bot|web robot)s?': bot(s)
+ '(?:microsoft cloud|the cloud)': cloud
+ '(?:mobile|smart) ?phone': phone
+ '24/7': every day
+ 'audio(?:-| )book': audiobook
+ 'back(?:-| )light': backlight
+ 'chat ?bots?': chatbot(s)
+ adaptor: adapter
+ administrate: administer
+ afterwards: afterward
+ alphabetic: alphabetical
+ alphanumerical: alphanumeric
+ anti-aliasing: antialiasing
+ anti-malware: antimalware
+ anti-spyware: antispyware
+ anti-virus: antivirus
+ appendixes: appendices
+ artificial intelligence: artificial intelligence
+ assembler: assembly language
+ bpp: bpp
+ bps: bps
+ caap: CaaP
+ conversation-as-a-platform: conversation as a platform
+ eb: EB
+ gb: GB
+ gbps: Gbps
+ kb: KB
+ keypress: keystroke
+ mb: MB
+ pb: PB
+ tb: TB
+ zb: ZB
+ viz: namely
+ ergo: therefore
diff --git a/config/vale/styles/kb/ThereIs.yml b/config/vale/styles/kb/ThereIs.yml
new file mode 100644
index 00000000..30db4ff0
--- /dev/null
+++ b/config/vale/styles/kb/ThereIs.yml
@@ -0,0 +1,7 @@
+---
+extends: existence
+message: "Don't start a sentence with '%s'."
+ignorecase: false
+level: error
+raw:
+ - '(?:[;-]\s)There\s(is|are)|\bThere\s(is|are)\b'
diff --git a/config/vale/styles/kb/TooWordy.yml b/config/vale/styles/kb/TooWordy.yml
new file mode 100644
index 00000000..9e783d2f
--- /dev/null
+++ b/config/vale/styles/kb/TooWordy.yml
@@ -0,0 +1,222 @@
+---
+extends: existence
+message: "'%s' is too wordy."
+ignorecase: true
+level: warning
+tokens:
+ - a number of
+ - abundance
+ - accede to
+ - accelerate
+ - accentuate
+ - accompany
+ - accomplish
+ - accorded
+ - accrue
+ - acquiesce
+ - acquire
+ - additional
+ - adjacent to
+ - adjustment
+ - admissible
+ - advantageous
+ - adversely impact
+ - advise
+ - aforementioned
+ - aggregate
+ - aircraft
+ - all of
+ - all things considered
+ - alleviate
+ - allocate
+ - along the lines of
+ - already existing
+ - alternatively
+ - amazing
+ - ameliorate
+ - anticipate
+ - apparent
+ - appreciable
+ - as a matter of fact
+ - as a means of
+ - as far as I'm concerned
+ - as of yet
+ - as to
+ - as yet
+ - ascertain
+ - assistance
+ - at the present time
+ - at this time
+ - attain
+ - attributable to
+ - authorize
+ - because of the fact that
+ - belated
+ - benefit from
+ - bestow
+ - by means of
+ - by virtue of
+ - by virtue of the fact that
+ - cease
+ - close proximity
+ - commence
+ - comply with
+ - concerning
+ - consequently
+ - consolidate
+ - constitutes
+ - demonstrate
+ - depart
+ - designate
+ - discontinue
+ - due to the fact that
+ - each and every
+ - economical
+ - eliminate
+ - elucidate
+ - employ
+ - endeavor
+ - enumerate
+ - equitable
+ - equivalent
+ - evaluate
+ - evidenced
+ - exclusively
+ - expedite
+ - expend
+ - expiration
+ - facilitate
+ - factual evidence
+ - feasible
+ - finalize
+ - first and foremost
+ - for all intents and purposes
+ - for the most part
+ - for the purpose of
+ - forfeit
+ - formulate
+ - have a tendency to
+ - honest truth
+ - however
+ - if and when
+ - impacted
+ - implement
+ - in a manner of speaking
+ - in a timely manner
+ - in a very real sense
+ - in accordance with
+ - in addition
+ - in all likelihood
+ - in an effort to
+ - in between
+ - in excess of
+ - in lieu of
+ - in light of the fact that
+ - in many cases
+ - in my opinion
+ - in order to
+ - in regard to
+ - in some instances
+ - in terms of
+ - in the case of
+ - in the event that
+ - in the final analysis
+ - in the nature of
+ - in the near future
+ - in the process of
+ - inception
+ - incumbent upon
+ - indicate
+ - indication
+ - initiate
+ - irregardless
+ - is applicable to
+ - is authorized to
+ - is responsible for
+ - it is
+ - it is essential
+ - it seems that
+ - it was
+ - magnitude
+ - maximum
+ - methodology
+ - minimize
+ - minimum
+ - modify
+ - monitor
+ - multiple
+ - necessitate
+ - nevertheless
+ - not certain
+ - not many
+ - not often
+ - not unless
+ - not unlike
+ - notwithstanding
+ - null and void
+ - numerous
+ - objective
+ - obligate
+ - obtain
+ - on the contrary
+ - on the other hand
+ - one particular
+ - optimum
+ - overall
+ - owing to the fact that
+ - participate
+ - particulars
+ - pass away
+ - pertaining to
+ - point in time
+ - portion
+ - possess
+ - preclude
+ - previously
+ - prior to
+ - prioritize
+ - procure
+ - proficiency
+ - provided that
+ - purchase
+ - put simply
+ - readily apparent
+ - refer back
+ - regarding
+ - relocate
+ - remainder
+ - remuneration
+ - requirement
+ - reside
+ - residence
+ - retain
+ - satisfy
+ - shall
+ - should you wish
+ - similar to
+ - solicit
+ - span across
+ - strategize
+ - subsequent
+ - substantial
+ - successfully complete
+ - sufficient
+ - terminate
+ - the month of
+ - the point I am trying to make
+ - therefore
+ - time period
+ - took advantage of
+ - transmit
+ - transpire
+ - type of
+ - until such time as
+ - utilization
+ - utilize
+ - validate
+ - various different
+ - what I mean to say is
+ - whether or not
+ - with respect to
+ - with the exception of
+ - witnessed
diff --git a/config/vale/styles/kb/Typography.yml b/config/vale/styles/kb/Typography.yml
new file mode 100644
index 00000000..7ce347f5
--- /dev/null
+++ b/config/vale/styles/kb/Typography.yml
@@ -0,0 +1,11 @@
+---
+extends: substitution
+message: Consider using the '%s' symbol instead of '%s'.
+level: error
+nonword: true
+swap:
+ '\([cC]\)': ©
+ '\(TM\)': ™
+ '\(tm\)': ™
+ '\([rR]\)': ®
+ '[0-9]+ ?x ?[0-9]+': ×
diff --git a/config/vale/styles/kb/URLFormat.yml b/config/vale/styles/kb/URLFormat.yml
new file mode 100644
index 00000000..31ecac0f
--- /dev/null
+++ b/config/vale/styles/kb/URLFormat.yml
@@ -0,0 +1,10 @@
+---
+extends: substitution
+message: "Use '%s' instead of '%s'."
+ignorecase: true
+level: error
+action:
+ name: replace
+swap:
+ URL for: URL of
+ an URL: a URL
diff --git a/config/vale/styles/kb/Uncomparables.yml b/config/vale/styles/kb/Uncomparables.yml
new file mode 100644
index 00000000..7937b56c
--- /dev/null
+++ b/config/vale/styles/kb/Uncomparables.yml
@@ -0,0 +1,51 @@
+---
+extends: existence
+message: "'%s' is not comparable"
+ignorecase: true
+level: error
+action:
+ name: edit
+ params:
+ - split
+ - ' '
+ - '1'
+raw:
+ - \b(?:absolutely|most|more|less|least|very|quite|largely|extremely|increasingly|kind of|mildy|hardly|greatly|sort of)\b\s*
+tokens:
+ - absolute
+ - adequate
+ - complete
+ - correct
+ - certain
+ - devoid
+ - entire
+ - 'false'
+ - fatal
+ - favorite
+ - final
+ - ideal
+ - impossible
+ - inevitable
+ - infinite
+ - irrevocable
+ - main
+ - manifest
+ - only
+ - paramount
+ - perfect
+ - perpetual
+ - possible
+ - preferable
+ - principal
+ - singular
+ - stationary
+ - sufficient
+ - 'true'
+ - unanimous
+ - unavoidable
+ - unbroken
+ - uniform
+ - unique
+ - universal
+ - void
+ - whole
diff --git a/config/vale/styles/kb/Units.yml b/config/vale/styles/kb/Units.yml
new file mode 100644
index 00000000..fb135e7a
--- /dev/null
+++ b/config/vale/styles/kb/Units.yml
@@ -0,0 +1,17 @@
+---
+extends: existence
+message: "Don't spell out the number in '%s'."
+link: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/units-of-measure-terms
+level: error
+raw:
+ - '[a-zA-Z]+\s'
+tokens:
+ - '(?:centi|milli)?meters'
+ - '(?:kilo)?grams'
+ - '(?:kilo)?meters'
+ - '(?:mega)?pixels'
+ - cm
+ - inches
+ - lb
+ - miles
+ - pounds
diff --git a/config/vale/styles/kb/Very.yml b/config/vale/styles/kb/Very.yml
new file mode 100644
index 00000000..c6c01e92
--- /dev/null
+++ b/config/vale/styles/kb/Very.yml
@@ -0,0 +1,7 @@
+---
+extends: existence
+message: "Remove '%s'."
+ignorecase: true
+level: error
+tokens:
+ - very
diff --git a/config/vale/styles/kb/Vocab.yml b/config/vale/styles/kb/Vocab.yml
new file mode 100644
index 00000000..72810072
--- /dev/null
+++ b/config/vale/styles/kb/Vocab.yml
@@ -0,0 +1,26 @@
+---
+extends: existence
+message: "Verify your use of '%s' with the A-Z word list."
+link: 'https://docs.microsoft.com/en-us/style-guide'
+level: suggestion
+ignorecase: true
+tokens:
+ - above
+ - accessible
+ - actionable
+ - against
+ - alarm
+ - alert
+ - alias
+ - allows?
+ - and/or
+ - as well as
+ - assure
+ - author
+ - avg
+ - beta
+ - ensure
+ - he
+ - insure
+ - sample
+ - she
diff --git a/config/vale/styles/kb/Weasel.yml b/config/vale/styles/kb/Weasel.yml
new file mode 100644
index 00000000..75a41646
--- /dev/null
+++ b/config/vale/styles/kb/Weasel.yml
@@ -0,0 +1,208 @@
+---
+extends: existence
+message: "'%s' is a weasel word!"
+ignorecase: true
+level: warning
+tokens:
+ - absolutely
+ - accidentally
+ - additionally
+ - allegedly
+ - alternatively
+ - angrily
+ - anxiously
+ - approximately
+ - awkwardly
+ - badly
+ - barely
+ - beautifully
+ - blindly
+ - boldly
+ - bravely
+ - brightly
+ - briskly
+ - bristly
+ - bubbly
+ - busily
+ - calmly
+ - carefully
+ - carelessly
+ - cautiously
+ - cheerfully
+ - clearly
+ - closely
+ - coldly
+ - completely
+ - consequently
+ - correctly
+ - courageously
+ - crinkly
+ - cruelly
+ - crumbly
+ - cuddly
+ - currently
+ - daily
+ - daringly
+ - deadly
+ - definitely
+ - deliberately
+ - doubtfully
+ - dumbly
+ - eagerly
+ - early
+ - easily
+ - elegantly
+ - enormously
+ - enthusiastically
+ - equally
+ - especially
+ - eventually
+ - exactly
+ - exceedingly
+ - exclusively
+ - extremely
+ - fairly
+ - faithfully
+ - fatally
+ - fiercely
+ - finally
+ - fondly
+ - few
+ - foolishly
+ - fortunately
+ - frankly
+ - frantically
+ - generously
+ - gently
+ - giggly
+ - gladly
+ - gracefully
+ - greedily
+ - happily
+ - hardly
+ - hastily
+ - healthily
+ - heartily
+ - helpfully
+ - honestly
+ - hourly
+ - hungrily
+ - hurriedly
+ - immediately
+ - impatiently
+ - inadequately
+ - ingeniously
+ - innocently
+ - inquisitively
+ - interestingly
+ - irritably
+ - jiggly
+ - joyously
+ - justly
+ - kindly
+ - largely
+ - lately
+ - lazily
+ - likely
+ - literally
+ - lonely
+ - loosely
+ - loudly
+ - loudly
+ - luckily
+ - madly
+ - many
+ - mentally
+ - mildly
+ - monthly
+ - mortally
+ - mostly
+ - mysteriously
+ - neatly
+ - nervously
+ - nightly
+ - noisily
+ - normally
+ - obediently
+ - occasionally
+ - only
+ - openly
+ - painfully
+ - particularly
+ - patiently
+ - perfectly
+ - politely
+ - poorly
+ - powerfully
+ - presumably
+ - previously
+ - promptly
+ - punctually
+ - quarterly
+ - quickly
+ - quietly
+ - rapidly
+ - rarely
+ - really
+ - recently
+ - recklessly
+ - regularly
+ - remarkably
+ - relatively
+ - reluctantly
+ - repeatedly
+ - rightfully
+ - roughly
+ - rudely
+ - sadly
+ - safely
+ - selfishly
+ - sensibly
+ - seriously
+ - sharply
+ - shortly
+ - shyly
+ - significantly
+ - silently
+ - simply
+ - sleepily
+ - slowly
+ - smartly
+ - smelly
+ - smoothly
+ - softly
+ - solemnly
+ - sparkly
+ - speedily
+ - stealthily
+ - sternly
+ - stupidly
+ - substantially
+ - successfully
+ - suddenly
+ - surprisingly
+ - suspiciously
+ - swiftly
+ - tenderly
+ - tensely
+ - thoughtfully
+ - tightly
+ - timely
+ - truthfully
+ - unexpectedly
+ - unfortunately
+ - usually
+ - very
+ - victoriously
+ - violently
+ - vivaciously
+ - warmly
+ - waverly
+ - weakly
+ - wearily
+ - weekly
+ - wildly
+ - wisely
+ - worldly
+ - wrinkly
+ - yearly
diff --git a/config/vale/styles/kb/Will.yml b/config/vale/styles/kb/Will.yml
new file mode 100644
index 00000000..e2449da6
--- /dev/null
+++ b/config/vale/styles/kb/Will.yml
@@ -0,0 +1,7 @@
+---
+extends: existence
+message: "Remove '%s'."
+ignorecase: true
+level: error
+tokens:
+ - (?i)will
diff --git a/config/vale/vale.ini b/config/vale/vale.ini
new file mode 100644
index 00000000..c34c14c4
--- /dev/null
+++ b/config/vale/vale.ini
@@ -0,0 +1,14 @@
+StylesPath = .config/vale/styles
+
+MinAlertLevel = suggestion
+
+IgnoredScopes = code, tt
+
+IgnoredClasses =
+
+SkippedScopes = script, style, pre, figure
+
+WordTemplate = \b(?:%s)\b
+
+[*]
+BasedOnStyles = kb