From 67b3dc90db99a17cef0fcf2bedefa0f2065d4a4f Mon Sep 17 00:00:00 2001 From: nicoa Date: Mon, 15 Dec 2025 18:08:52 -0700 Subject: [PATCH 01/22] add vale-linter skeleton --- docs-linter/.markdownlint.json | 8 ++++++++ docs-linter/.vale.ini | 15 +++++++++++++++ docs-linter/styles/Vocab/terms/accept.txt | 13 +++++++++++++ .../Vocab/terms/accept.txt:Zone.Identifier | Bin 0 -> 25 bytes .../accept.txt:Zone.Identifier:Zone.Identifier | Bin 0 -> 25 bytes docs-linter/styles/Vocab/terms/reject.txt | 1 + .../Vocab/terms/reject.txt:Zone.Identifier | Bin 0 -> 25 bytes .../reject.txt:Zone.Identifier:Zone.Identifier | Bin 0 -> 25 bytes 8 files changed, 37 insertions(+) create mode 100644 docs-linter/.markdownlint.json create mode 100644 docs-linter/.vale.ini create mode 100644 docs-linter/styles/Vocab/terms/accept.txt create mode 100644 docs-linter/styles/Vocab/terms/accept.txt:Zone.Identifier create mode 100644 docs-linter/styles/Vocab/terms/accept.txt:Zone.Identifier:Zone.Identifier create mode 100644 docs-linter/styles/Vocab/terms/reject.txt create mode 100644 docs-linter/styles/Vocab/terms/reject.txt:Zone.Identifier create mode 100644 docs-linter/styles/Vocab/terms/reject.txt:Zone.Identifier:Zone.Identifier diff --git a/docs-linter/.markdownlint.json b/docs-linter/.markdownlint.json new file mode 100644 index 0000000..409c0ea --- /dev/null +++ b/docs-linter/.markdownlint.json @@ -0,0 +1,8 @@ +{ + "default": true, + "MD013": false, + "MD024": false, + "MD033": false, + "MD034": false, + "MD041": false +} \ No newline at end of file diff --git a/docs-linter/.vale.ini b/docs-linter/.vale.ini new file mode 100644 index 0000000..3bb57c1 --- /dev/null +++ b/docs-linter/.vale.ini @@ -0,0 +1,15 @@ +# Core Settings +StylesPath = styles +MinAlertLevel = suggestion + +# The "Vocab" setting must match the folder name inside 'styles/Vocab/' +Vocab = terms + +# External Packages +# We include Microsoft because it is the industry standard baseline. +Packages = Microsoft + +# Rules for Markdown files +[*.{md,mdx}] +# Apply the rules from these three sources +BasedOnStyles = Vale, Microsoft, custom-rules \ No newline at end of file diff --git a/docs-linter/styles/Vocab/terms/accept.txt b/docs-linter/styles/Vocab/terms/accept.txt new file mode 100644 index 0000000..a9af80e --- /dev/null +++ b/docs-linter/styles/Vocab/terms/accept.txt @@ -0,0 +1,13 @@ +Docusaurus +Github +Bitbucket +API +CLI +Kubernetes +repo +linter +NetFoundry +Frontdoor +ZLAN +OpenZiti +Ziti \ No newline at end of file diff --git a/docs-linter/styles/Vocab/terms/accept.txt:Zone.Identifier b/docs-linter/styles/Vocab/terms/accept.txt:Zone.Identifier new file mode 100644 index 0000000000000000000000000000000000000000..d6c1ec682968c796b9f5e9e080cc6f674b57c766 GIT binary patch literal 25 dcma!!%Fjy;DN4*MPD?F{<>dl#JyUFr831@K2xdl#JyUFr831@K2xdl#JyUFr831@K2xdl#JyUFr831@K2x Date: Mon, 15 Dec 2025 18:11:47 -0700 Subject: [PATCH 02/22] remove damn zone identifiers --- docs-linter/.vale.ini | 2 +- docs-linter/styles/Vocab/{terms => }/accept.txt | 0 docs-linter/styles/Vocab/reject.txt | 0 .../styles/Vocab/terms/accept.txt:Zone.Identifier | Bin 25 -> 0 bytes .../accept.txt:Zone.Identifier:Zone.Identifier | Bin 25 -> 0 bytes docs-linter/styles/Vocab/terms/reject.txt | 1 - .../styles/Vocab/terms/reject.txt:Zone.Identifier | Bin 25 -> 0 bytes .../reject.txt:Zone.Identifier:Zone.Identifier | Bin 25 -> 0 bytes 8 files changed, 1 insertion(+), 2 deletions(-) rename docs-linter/styles/Vocab/{terms => }/accept.txt (100%) create mode 100644 docs-linter/styles/Vocab/reject.txt delete mode 100644 docs-linter/styles/Vocab/terms/accept.txt:Zone.Identifier delete mode 100644 docs-linter/styles/Vocab/terms/accept.txt:Zone.Identifier:Zone.Identifier delete mode 100644 docs-linter/styles/Vocab/terms/reject.txt delete mode 100644 docs-linter/styles/Vocab/terms/reject.txt:Zone.Identifier delete mode 100644 docs-linter/styles/Vocab/terms/reject.txt:Zone.Identifier:Zone.Identifier diff --git a/docs-linter/.vale.ini b/docs-linter/.vale.ini index 3bb57c1..5b41436 100644 --- a/docs-linter/.vale.ini +++ b/docs-linter/.vale.ini @@ -10,6 +10,6 @@ Vocab = terms Packages = Microsoft # Rules for Markdown files -[*.{md,mdx}] +[*.md] # Apply the rules from these three sources BasedOnStyles = Vale, Microsoft, custom-rules \ No newline at end of file diff --git a/docs-linter/styles/Vocab/terms/accept.txt b/docs-linter/styles/Vocab/accept.txt similarity index 100% rename from docs-linter/styles/Vocab/terms/accept.txt rename to docs-linter/styles/Vocab/accept.txt diff --git a/docs-linter/styles/Vocab/reject.txt b/docs-linter/styles/Vocab/reject.txt new file mode 100644 index 0000000..e69de29 diff --git a/docs-linter/styles/Vocab/terms/accept.txt:Zone.Identifier b/docs-linter/styles/Vocab/terms/accept.txt:Zone.Identifier deleted file mode 100644 index d6c1ec682968c796b9f5e9e080cc6f674b57c766..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25 dcma!!%Fjy;DN4*MPD?F{<>dl#JyUFr831@K2xdl#JyUFr831@K2xdl#JyUFr831@K2xdl#JyUFr831@K2x Date: Mon, 15 Dec 2025 18:14:12 -0700 Subject: [PATCH 03/22] add new lines --- docs-linter/.markdownlint.json | 2 +- docs-linter/.vale.ini | 2 +- docs-linter/styles/Vocab/accept.txt | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs-linter/.markdownlint.json b/docs-linter/.markdownlint.json index 409c0ea..9711d76 100644 --- a/docs-linter/.markdownlint.json +++ b/docs-linter/.markdownlint.json @@ -5,4 +5,4 @@ "MD033": false, "MD034": false, "MD041": false -} \ No newline at end of file +} diff --git a/docs-linter/.vale.ini b/docs-linter/.vale.ini index 5b41436..9777bcc 100644 --- a/docs-linter/.vale.ini +++ b/docs-linter/.vale.ini @@ -12,4 +12,4 @@ Packages = Microsoft # Rules for Markdown files [*.md] # Apply the rules from these three sources -BasedOnStyles = Vale, Microsoft, custom-rules \ No newline at end of file +BasedOnStyles = Vale, Microsoft, custom-rules diff --git a/docs-linter/styles/Vocab/accept.txt b/docs-linter/styles/Vocab/accept.txt index a9af80e..0532cee 100644 --- a/docs-linter/styles/Vocab/accept.txt +++ b/docs-linter/styles/Vocab/accept.txt @@ -1,5 +1,5 @@ Docusaurus -Github +GitHub Bitbucket API CLI @@ -10,4 +10,4 @@ NetFoundry Frontdoor ZLAN OpenZiti -Ziti \ No newline at end of file +Ziti From 85b95b4a2d06552548f1f4d27e776607e5edcb2a Mon Sep 17 00:00:00 2001 From: nicoa Date: Mon, 22 Dec 2025 17:00:36 -0700 Subject: [PATCH 04/22] EOD --- docs-linter/.vale.ini | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs-linter/.vale.ini b/docs-linter/.vale.ini index 9777bcc..0a5923c 100644 --- a/docs-linter/.vale.ini +++ b/docs-linter/.vale.ini @@ -1,12 +1,11 @@ -# Core Settings +# Core settings StylesPath = styles MinAlertLevel = suggestion # The "Vocab" setting must match the folder name inside 'styles/Vocab/' Vocab = terms -# External Packages -# We include Microsoft because it is the industry standard baseline. +# External packages Packages = Microsoft # Rules for Markdown files From feaf414a63daffe0f0c58a385d3c99ac6affb300 Mon Sep 17 00:00:00 2001 From: nicoa Date: Mon, 22 Dec 2025 17:04:38 -0700 Subject: [PATCH 05/22] add mdx extension and microsoft package --- docs-linter/.vale.ini | 2 +- docs-linter/styles/Microsoft/AMPM.yml | 9 + .../styles/Microsoft/Accessibility.yml | 30 ++ docs-linter/styles/Microsoft/Acronyms.yml | 64 +++++ docs-linter/styles/Microsoft/Adverbs.yml | 272 ++++++++++++++++++ docs-linter/styles/Microsoft/Auto.yml | 11 + docs-linter/styles/Microsoft/Avoid.yml | 14 + docs-linter/styles/Microsoft/Contractions.yml | 50 ++++ docs-linter/styles/Microsoft/Dashes.yml | 13 + docs-linter/styles/Microsoft/DateFormat.yml | 8 + docs-linter/styles/Microsoft/DateNumbers.yml | 40 +++ docs-linter/styles/Microsoft/DateOrder.yml | 8 + docs-linter/styles/Microsoft/Ellipses.yml | 9 + docs-linter/styles/Microsoft/FirstPerson.yml | 16 ++ docs-linter/styles/Microsoft/Foreign.yml | 13 + docs-linter/styles/Microsoft/Gender.yml | 8 + docs-linter/styles/Microsoft/GenderBias.yml | 42 +++ docs-linter/styles/Microsoft/GeneralURL.yml | 11 + .../styles/Microsoft/HeadingAcronyms.yml | 7 + .../styles/Microsoft/HeadingColons.yml | 8 + .../styles/Microsoft/HeadingPunctuation.yml | 13 + docs-linter/styles/Microsoft/Headings.yml | 28 ++ docs-linter/styles/Microsoft/Hyphens.yml | 14 + docs-linter/styles/Microsoft/Negative.yml | 13 + docs-linter/styles/Microsoft/Ordinal.yml | 13 + docs-linter/styles/Microsoft/OxfordComma.yml | 8 + docs-linter/styles/Microsoft/Passive.yml | 183 ++++++++++++ docs-linter/styles/Microsoft/Percentages.yml | 7 + docs-linter/styles/Microsoft/Plurals.yml | 7 + docs-linter/styles/Microsoft/Quotes.yml | 7 + docs-linter/styles/Microsoft/RangeTime.yml | 13 + docs-linter/styles/Microsoft/Semicolon.yml | 8 + .../styles/Microsoft/SentenceLength.yml | 7 + docs-linter/styles/Microsoft/Spacing.yml | 8 + docs-linter/styles/Microsoft/Suspended.yml | 7 + docs-linter/styles/Microsoft/Terms.yml | 42 +++ docs-linter/styles/Microsoft/URLFormat.yml | 9 + docs-linter/styles/Microsoft/Units.yml | 16 ++ docs-linter/styles/Microsoft/Vocab.yml | 25 ++ docs-linter/styles/Microsoft/We.yml | 11 + docs-linter/styles/Microsoft/Wordiness.yml | 127 ++++++++ docs-linter/styles/Microsoft/meta.json | 4 + 42 files changed, 1204 insertions(+), 1 deletion(-) create mode 100644 docs-linter/styles/Microsoft/AMPM.yml create mode 100644 docs-linter/styles/Microsoft/Accessibility.yml create mode 100644 docs-linter/styles/Microsoft/Acronyms.yml create mode 100644 docs-linter/styles/Microsoft/Adverbs.yml create mode 100644 docs-linter/styles/Microsoft/Auto.yml create mode 100644 docs-linter/styles/Microsoft/Avoid.yml create mode 100644 docs-linter/styles/Microsoft/Contractions.yml create mode 100644 docs-linter/styles/Microsoft/Dashes.yml create mode 100644 docs-linter/styles/Microsoft/DateFormat.yml create mode 100644 docs-linter/styles/Microsoft/DateNumbers.yml create mode 100644 docs-linter/styles/Microsoft/DateOrder.yml create mode 100644 docs-linter/styles/Microsoft/Ellipses.yml create mode 100644 docs-linter/styles/Microsoft/FirstPerson.yml create mode 100644 docs-linter/styles/Microsoft/Foreign.yml create mode 100644 docs-linter/styles/Microsoft/Gender.yml create mode 100644 docs-linter/styles/Microsoft/GenderBias.yml create mode 100644 docs-linter/styles/Microsoft/GeneralURL.yml create mode 100644 docs-linter/styles/Microsoft/HeadingAcronyms.yml create mode 100644 docs-linter/styles/Microsoft/HeadingColons.yml create mode 100644 docs-linter/styles/Microsoft/HeadingPunctuation.yml create mode 100644 docs-linter/styles/Microsoft/Headings.yml create mode 100644 docs-linter/styles/Microsoft/Hyphens.yml create mode 100644 docs-linter/styles/Microsoft/Negative.yml create mode 100644 docs-linter/styles/Microsoft/Ordinal.yml create mode 100644 docs-linter/styles/Microsoft/OxfordComma.yml create mode 100644 docs-linter/styles/Microsoft/Passive.yml create mode 100644 docs-linter/styles/Microsoft/Percentages.yml create mode 100644 docs-linter/styles/Microsoft/Plurals.yml create mode 100644 docs-linter/styles/Microsoft/Quotes.yml create mode 100644 docs-linter/styles/Microsoft/RangeTime.yml create mode 100644 docs-linter/styles/Microsoft/Semicolon.yml create mode 100644 docs-linter/styles/Microsoft/SentenceLength.yml create mode 100644 docs-linter/styles/Microsoft/Spacing.yml create mode 100644 docs-linter/styles/Microsoft/Suspended.yml create mode 100644 docs-linter/styles/Microsoft/Terms.yml create mode 100644 docs-linter/styles/Microsoft/URLFormat.yml create mode 100644 docs-linter/styles/Microsoft/Units.yml create mode 100644 docs-linter/styles/Microsoft/Vocab.yml create mode 100644 docs-linter/styles/Microsoft/We.yml create mode 100644 docs-linter/styles/Microsoft/Wordiness.yml create mode 100644 docs-linter/styles/Microsoft/meta.json diff --git a/docs-linter/.vale.ini b/docs-linter/.vale.ini index 0a5923c..03b6c0e 100644 --- a/docs-linter/.vale.ini +++ b/docs-linter/.vale.ini @@ -9,6 +9,6 @@ Vocab = terms Packages = Microsoft # Rules for Markdown files -[*.md] +[*.{md,mdx}] # Apply the rules from these three sources BasedOnStyles = Vale, Microsoft, custom-rules diff --git a/docs-linter/styles/Microsoft/AMPM.yml b/docs-linter/styles/Microsoft/AMPM.yml new file mode 100644 index 0000000..8b9fed1 --- /dev/null +++ b/docs-linter/styles/Microsoft/AMPM.yml @@ -0,0 +1,9 @@ +extends: existence +message: Use 'AM' or 'PM' (preceded by a space). +link: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/date-time-terms +level: error +nonword: true +tokens: + - '\d{1,2}[AP]M' + - '\d{1,2} ?[ap]m' + - '\d{1,2} ?[aApP]\.[mM]\.' diff --git a/docs-linter/styles/Microsoft/Accessibility.yml b/docs-linter/styles/Microsoft/Accessibility.yml new file mode 100644 index 0000000..f5f4829 --- /dev/null +++ b/docs-linter/styles/Microsoft/Accessibility.yml @@ -0,0 +1,30 @@ +extends: existence +message: "Don't use language (such as '%s') that defines people by their disability." +link: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/accessibility-terms +level: suggestion +ignorecase: true +tokens: + - a victim of + - able-bodied + - an epileptic + - birth defect + - crippled + - differently abled + - disabled + - dumb + - handicapped + - handicaps + - healthy person + - hearing-impaired + - lame + - maimed + - mentally handicapped + - missing a limb + - mute + - non-verbal + - normal person + - sight-impaired + - slow learner + - stricken with + - suffers from + - vision-impaired diff --git a/docs-linter/styles/Microsoft/Acronyms.yml b/docs-linter/styles/Microsoft/Acronyms.yml new file mode 100644 index 0000000..308ff7c --- /dev/null +++ b/docs-linter/styles/Microsoft/Acronyms.yml @@ -0,0 +1,64 @@ +extends: conditional +message: "'%s' has no definition." +link: https://docs.microsoft.com/en-us/style-guide/acronyms +level: suggestion +ignorecase: false +# Ensures that the existence of 'first' implies the existence of 'second'. +first: '\b([A-Z]{3,5})\b' +second: '(?:\b[A-Z][a-z]+ )+\(([A-Z]{3,5})\)' +# ... with the exception of these: +exceptions: + - API + - ASP + - CLI + - CPU + - CSS + - CSV + - DEBUG + - DOM + - DPI + - FAQ + - GCC + - GDB + - GET + - GPU + - GTK + - GUI + - HTML + - HTTP + - HTTPS + - IDE + - JAR + - JSON + - JSX + - LESS + - LLDB + - NET + - NOTE + - NVDA + - OSS + - PATH + - PDF + - PHP + - POST + - RAM + - REPL + - RSA + - SCM + - SCSS + - SDK + - SQL + - SSH + - SSL + - SVG + - TBD + - TCP + - TODO + - URI + - URL + - USB + - UTF + - XML + - XSS + - YAML + - ZIP diff --git a/docs-linter/styles/Microsoft/Adverbs.yml b/docs-linter/styles/Microsoft/Adverbs.yml new file mode 100644 index 0000000..5619f99 --- /dev/null +++ b/docs-linter/styles/Microsoft/Adverbs.yml @@ -0,0 +1,272 @@ +extends: existence +message: "Remove '%s' if it's not important to the meaning of the statement." +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 + - effectively + - 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 + - quite + - 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/docs-linter/styles/Microsoft/Auto.yml b/docs-linter/styles/Microsoft/Auto.yml new file mode 100644 index 0000000..4da4393 --- /dev/null +++ b/docs-linter/styles/Microsoft/Auto.yml @@ -0,0 +1,11 @@ +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/docs-linter/styles/Microsoft/Avoid.yml b/docs-linter/styles/Microsoft/Avoid.yml new file mode 100644 index 0000000..dab7822 --- /dev/null +++ b/docs-linter/styles/Microsoft/Avoid.yml @@ -0,0 +1,14 @@ +extends: existence +message: "Don't use '%s'. See the A-Z word list for details." +# See the A-Z word list +link: https://docs.microsoft.com/en-us/style-guide +ignorecase: true +level: error +tokens: + - abortion + - and so on + - app(?:lication)?s? (?:developer|program) + - app(?:lication)? file + - backbone + - backend + - contiguous selection diff --git a/docs-linter/styles/Microsoft/Contractions.yml b/docs-linter/styles/Microsoft/Contractions.yml new file mode 100644 index 0000000..8c81dcb --- /dev/null +++ b/docs-linter/styles/Microsoft/Contractions.yml @@ -0,0 +1,50 @@ +extends: substitution +message: "Use '%s' instead of '%s'." +link: https://docs.microsoft.com/en-us/style-guide/word-choice/use-contractions +level: error +ignorecase: true +action: + name: replace +swap: + are not: aren't + cannot: can't + could not: couldn't + did not: didn't + do not: don't + does not: doesn't + has not: hasn't + have not: haven't + how is: how's + is not: isn't + + 'it is(?!\.)': it's + 'it''s(?=\.)': it is + + should not: shouldn't + + "that is(?![.,])": that's + 'that''s(?=\.)': that is + + 'they are(?!\.)': they're + 'they''re(?=\.)': they are + + was not: wasn't + + 'we are(?!\.)': we're + 'we''re(?=\.)': we are + + 'we have(?!\.)': we've + 'we''ve(?=\.)': we have + + were not: weren't + + 'what is(?!\.)': what's + 'what''s(?=\.)': what is + + 'when is(?!\.)': when's + 'when''s(?=\.)': when is + + 'where is(?!\.)': where's + 'where''s(?=\.)': where is + + will not: won't diff --git a/docs-linter/styles/Microsoft/Dashes.yml b/docs-linter/styles/Microsoft/Dashes.yml new file mode 100644 index 0000000..72b05ba --- /dev/null +++ b/docs-linter/styles/Microsoft/Dashes.yml @@ -0,0 +1,13 @@ +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: + - trim + - " " +tokens: + - '\s[—–]\s|\s[—–]|[—–]\s' diff --git a/docs-linter/styles/Microsoft/DateFormat.yml b/docs-linter/styles/Microsoft/DateFormat.yml new file mode 100644 index 0000000..1965313 --- /dev/null +++ b/docs-linter/styles/Microsoft/DateFormat.yml @@ -0,0 +1,8 @@ +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/docs-linter/styles/Microsoft/DateNumbers.yml b/docs-linter/styles/Microsoft/DateNumbers.yml new file mode 100644 index 0000000..14d4674 --- /dev/null +++ b/docs-linter/styles/Microsoft/DateNumbers.yml @@ -0,0 +1,40 @@ +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/docs-linter/styles/Microsoft/DateOrder.yml b/docs-linter/styles/Microsoft/DateOrder.yml new file mode 100644 index 0000000..12d69ba --- /dev/null +++ b/docs-linter/styles/Microsoft/DateOrder.yml @@ -0,0 +1,8 @@ +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/docs-linter/styles/Microsoft/Ellipses.yml b/docs-linter/styles/Microsoft/Ellipses.yml new file mode 100644 index 0000000..320457a --- /dev/null +++ b/docs-linter/styles/Microsoft/Ellipses.yml @@ -0,0 +1,9 @@ +extends: existence +message: "In general, don't use an ellipsis." +link: https://docs.microsoft.com/en-us/style-guide/punctuation/ellipses +nonword: true +level: warning +action: + name: remove +tokens: + - '\.\.\.' diff --git a/docs-linter/styles/Microsoft/FirstPerson.yml b/docs-linter/styles/Microsoft/FirstPerson.yml new file mode 100644 index 0000000..f58dea3 --- /dev/null +++ b/docs-linter/styles/Microsoft/FirstPerson.yml @@ -0,0 +1,16 @@ +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'd\b + - \bI'll\b + - \bI'm\b + - \bI've\b + - \bme\b + - \bmy\b + - \bmine\b diff --git a/docs-linter/styles/Microsoft/Foreign.yml b/docs-linter/styles/Microsoft/Foreign.yml new file mode 100644 index 0000000..0d3d600 --- /dev/null +++ b/docs-linter/styles/Microsoft/Foreign.yml @@ -0,0 +1,13 @@ +extends: substitution +message: "Use '%s' instead of '%s'." +link: https://docs.microsoft.com/en-us/style-guide/word-choice/use-us-spelling-avoid-non-english-words +ignorecase: true +level: error +nonword: true +action: + name: replace +swap: + '\b(?:eg|e\.g\.)[\s,]': for example + '\b(?:ie|i\.e\.)[\s,]': that is + '\b(?:viz\.)[\s,]': namely + '\b(?:ergo)[\s,]': therefore diff --git a/docs-linter/styles/Microsoft/Gender.yml b/docs-linter/styles/Microsoft/Gender.yml new file mode 100644 index 0000000..47c0802 --- /dev/null +++ b/docs-linter/styles/Microsoft/Gender.yml @@ -0,0 +1,8 @@ +extends: existence +message: "Don't use '%s'." +link: https://github.com/MicrosoftDocs/microsoft-style-guide/blob/master/styleguide/grammar/nouns-pronouns.md#pronouns-and-gender +level: error +ignorecase: true +tokens: + - he/she + - s/he diff --git a/docs-linter/styles/Microsoft/GenderBias.yml b/docs-linter/styles/Microsoft/GenderBias.yml new file mode 100644 index 0000000..fc987b9 --- /dev/null +++ b/docs-linter/styles/Microsoft/GenderBias.yml @@ -0,0 +1,42 @@ +extends: substitution +message: "Consider using '%s' instead of '%s'." +ignorecase: true +level: error +action: + name: replace +swap: + (?:alumna|alumnus): graduate + (?:alumnae|alumni): graduates + 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) + 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 + mail(?:m[ae]n|wom[ae]n): mail carriers + man and wife: husband and wife + man enough: strong enough + mankind: human kind + manmade: manufactured + manpower: personnel + 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/docs-linter/styles/Microsoft/GeneralURL.yml b/docs-linter/styles/Microsoft/GeneralURL.yml new file mode 100644 index 0000000..dcef503 --- /dev/null +++ b/docs-linter/styles/Microsoft/GeneralURL.yml @@ -0,0 +1,11 @@ +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/docs-linter/styles/Microsoft/HeadingAcronyms.yml b/docs-linter/styles/Microsoft/HeadingAcronyms.yml new file mode 100644 index 0000000..9dc3b6c --- /dev/null +++ b/docs-linter/styles/Microsoft/HeadingAcronyms.yml @@ -0,0 +1,7 @@ +extends: existence +message: "Avoid using acronyms in a title or heading." +link: https://docs.microsoft.com/en-us/style-guide/acronyms#be-careful-with-acronyms-in-titles-and-headings +level: warning +scope: heading +tokens: + - '[A-Z]{2,4}' diff --git a/docs-linter/styles/Microsoft/HeadingColons.yml b/docs-linter/styles/Microsoft/HeadingColons.yml new file mode 100644 index 0000000..7013c39 --- /dev/null +++ b/docs-linter/styles/Microsoft/HeadingColons.yml @@ -0,0 +1,8 @@ +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/docs-linter/styles/Microsoft/HeadingPunctuation.yml b/docs-linter/styles/Microsoft/HeadingPunctuation.yml new file mode 100644 index 0000000..4954cb1 --- /dev/null +++ b/docs-linter/styles/Microsoft/HeadingPunctuation.yml @@ -0,0 +1,13 @@ +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: + - trim_right + - ".?!" +tokens: + - "[a-z][.?!]$" diff --git a/docs-linter/styles/Microsoft/Headings.yml b/docs-linter/styles/Microsoft/Headings.yml new file mode 100644 index 0000000..63624ed --- /dev/null +++ b/docs-linter/styles/Microsoft/Headings.yml @@ -0,0 +1,28 @@ +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/docs-linter/styles/Microsoft/Hyphens.yml b/docs-linter/styles/Microsoft/Hyphens.yml new file mode 100644 index 0000000..7e5731c --- /dev/null +++ b/docs-linter/styles/Microsoft/Hyphens.yml @@ -0,0 +1,14 @@ +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: + - regex + - "-" + - " " +tokens: + - '\b[^\s-]+ly-\w+\b' diff --git a/docs-linter/styles/Microsoft/Negative.yml b/docs-linter/styles/Microsoft/Negative.yml new file mode 100644 index 0000000..d73221f --- /dev/null +++ b/docs-linter/styles/Microsoft/Negative.yml @@ -0,0 +1,13 @@ +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: + - regex + - "-" + - "–" +tokens: + - '(?<=\s)-\d+(?:\.\d+)?\b' diff --git a/docs-linter/styles/Microsoft/Ordinal.yml b/docs-linter/styles/Microsoft/Ordinal.yml new file mode 100644 index 0000000..e3483e3 --- /dev/null +++ b/docs-linter/styles/Microsoft/Ordinal.yml @@ -0,0 +1,13 @@ +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/docs-linter/styles/Microsoft/OxfordComma.yml b/docs-linter/styles/Microsoft/OxfordComma.yml new file mode 100644 index 0000000..493b55c --- /dev/null +++ b/docs-linter/styles/Microsoft/OxfordComma.yml @@ -0,0 +1,8 @@ +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/docs-linter/styles/Microsoft/Passive.yml b/docs-linter/styles/Microsoft/Passive.yml new file mode 100644 index 0000000..102d377 --- /dev/null +++ b/docs-linter/styles/Microsoft/Passive.yml @@ -0,0 +1,183 @@ +extends: existence +message: "'%s' looks like passive voice." +ignorecase: true +level: suggestion +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/docs-linter/styles/Microsoft/Percentages.yml b/docs-linter/styles/Microsoft/Percentages.yml new file mode 100644 index 0000000..b68a736 --- /dev/null +++ b/docs-linter/styles/Microsoft/Percentages.yml @@ -0,0 +1,7 @@ +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/docs-linter/styles/Microsoft/Plurals.yml b/docs-linter/styles/Microsoft/Plurals.yml new file mode 100644 index 0000000..1bb6660 --- /dev/null +++ b/docs-linter/styles/Microsoft/Plurals.yml @@ -0,0 +1,7 @@ +extends: existence +message: "Don't add '%s' to a singular noun. Use plural instead." +ignorecase: true +level: error +link: https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/s/s-es +raw: + - '\(s\)|\(es\)' diff --git a/docs-linter/styles/Microsoft/Quotes.yml b/docs-linter/styles/Microsoft/Quotes.yml new file mode 100644 index 0000000..38f4976 --- /dev/null +++ b/docs-linter/styles/Microsoft/Quotes.yml @@ -0,0 +1,7 @@ +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/docs-linter/styles/Microsoft/RangeTime.yml b/docs-linter/styles/Microsoft/RangeTime.yml new file mode 100644 index 0000000..72d8bbf --- /dev/null +++ b/docs-linter/styles/Microsoft/RangeTime.yml @@ -0,0 +1,13 @@ +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: + - regex + - "[-–]" + - "to" +tokens: + - '\b(?:AM|PM)\s?[-–]\s?.+(?:AM|PM)\b' diff --git a/docs-linter/styles/Microsoft/Semicolon.yml b/docs-linter/styles/Microsoft/Semicolon.yml new file mode 100644 index 0000000..4d90546 --- /dev/null +++ b/docs-linter/styles/Microsoft/Semicolon.yml @@ -0,0 +1,8 @@ +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/docs-linter/styles/Microsoft/SentenceLength.yml b/docs-linter/styles/Microsoft/SentenceLength.yml new file mode 100644 index 0000000..f248cf0 --- /dev/null +++ b/docs-linter/styles/Microsoft/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/docs-linter/styles/Microsoft/Spacing.yml b/docs-linter/styles/Microsoft/Spacing.yml new file mode 100644 index 0000000..bbd10e5 --- /dev/null +++ b/docs-linter/styles/Microsoft/Spacing.yml @@ -0,0 +1,8 @@ +extends: existence +message: "'%s' should have one space." +link: https://docs.microsoft.com/en-us/style-guide/punctuation/periods +level: error +nonword: true +tokens: + - '[a-z][.?!] {2,}[A-Z]' + - '[a-z][.?!][A-Z]' diff --git a/docs-linter/styles/Microsoft/Suspended.yml b/docs-linter/styles/Microsoft/Suspended.yml new file mode 100644 index 0000000..7282e9c --- /dev/null +++ b/docs-linter/styles/Microsoft/Suspended.yml @@ -0,0 +1,7 @@ +extends: existence +message: "Don't use '%s' unless space is limited." +link: https://docs.microsoft.com/en-us/style-guide/punctuation/dashes-hyphens/hyphens +ignorecase: true +level: warning +tokens: + - '\w+- and \w+-' diff --git a/docs-linter/styles/Microsoft/Terms.yml b/docs-linter/styles/Microsoft/Terms.yml new file mode 100644 index 0000000..65fca10 --- /dev/null +++ b/docs-linter/styles/Microsoft/Terms.yml @@ -0,0 +1,42 @@ +extends: substitution +message: "Prefer '%s' over '%s'." +# term preference should be based on microsoft style guide, such as +link: https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/a/adapter +level: warning +ignorecase: true +action: + name: replace +swap: + "(?:agent|virtual assistant|intelligent personal assistant)": personal digital assistant + "(?:assembler|machine language)": assembly language + "(?: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 + an URL: a URL + anti-aliasing: antialiasing + anti-malware: antimalware + anti-spyware: antispyware + anti-virus: antivirus + appendixes: appendices + artificial intelligence: AI + 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 diff --git a/docs-linter/styles/Microsoft/URLFormat.yml b/docs-linter/styles/Microsoft/URLFormat.yml new file mode 100644 index 0000000..4e24aa5 --- /dev/null +++ b/docs-linter/styles/Microsoft/URLFormat.yml @@ -0,0 +1,9 @@ +extends: substitution +message: Use 'of' (not 'for') to describe the relationship of the word URL to a resource. +ignorecase: true +link: https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/u/url +level: suggestion +action: + name: replace +swap: + URL for: URL of diff --git a/docs-linter/styles/Microsoft/Units.yml b/docs-linter/styles/Microsoft/Units.yml new file mode 100644 index 0000000..f062418 --- /dev/null +++ b/docs-linter/styles/Microsoft/Units.yml @@ -0,0 +1,16 @@ +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/docs-linter/styles/Microsoft/Vocab.yml b/docs-linter/styles/Microsoft/Vocab.yml new file mode 100644 index 0000000..eebe97b --- /dev/null +++ b/docs-linter/styles/Microsoft/Vocab.yml @@ -0,0 +1,25 @@ +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/docs-linter/styles/Microsoft/We.yml b/docs-linter/styles/Microsoft/We.yml new file mode 100644 index 0000000..97c901c --- /dev/null +++ b/docs-linter/styles/Microsoft/We.yml @@ -0,0 +1,11 @@ +extends: existence +message: "Try to avoid using first-person plural like '%s'." +link: https://docs.microsoft.com/en-us/style-guide/grammar/person#avoid-first-person-plural +level: warning +ignorecase: true +tokens: + - we + - we'(?:ve|re) + - ours? + - us + - let's diff --git a/docs-linter/styles/Microsoft/Wordiness.yml b/docs-linter/styles/Microsoft/Wordiness.yml new file mode 100644 index 0000000..8a4fea7 --- /dev/null +++ b/docs-linter/styles/Microsoft/Wordiness.yml @@ -0,0 +1,127 @@ +extends: substitution +message: "Consider using '%s' instead of '%s'." +link: https://docs.microsoft.com/en-us/style-guide/word-choice/use-simple-words-concise-sentences +ignorecase: true +level: suggestion +action: + name: replace +swap: + "sufficient number(?: of)?": enough + (?:extract|take away|eliminate): remove + (?:in order to|as a means to): to + (?:inform|let me know): tell + (?:previous|prior) to: before + (?:utilize|make use of): use + a (?:large)? majority of: most + a (?:large)? number of: many + a myriad of: myriad + adversely impact: hurt + all across: across + all of a sudden: suddenly + all of these: these + all of(?! a sudden| these): all + all-time record: record + almost all: most + almost never: seldom + along the lines of: similar to + an adequate number of: enough + an appreciable number of: many + an estimated: about + any and all: all + are in agreement: agree + as a matter of fact: in fact + as a means of: to + as a result of: because of + as of yet: yet + as per: per + at a later date: later + at all times: always + at the present time: now + at this point in time: at this point + based in large part on: based on + based on the fact that: because + basic necessity: necessity + because of the fact that: because + came to a realization: realized + came to an abrupt end: ended abruptly + carry out an evaluation of: evaluate + close down: close + closed down: closed + complete stranger: stranger + completely separate: separate + concerning the matter of: regarding + conduct a review of: review + conduct an investigation: investigate + conduct experiments: experiment + continue on: continue + despite the fact that: although + disappear from sight: disappear + doomed to fail: doomed + drag and drop: drag + drag-and-drop: drag + due to the fact that: because + during the period of: during + during the time that: while + emergency situation: emergency + establish connectivity: connect + except when: unless + excessive number: too many + extend an invitation: invite + fall down: fall + fell down: fell + for the duration of: during + gather together: gather + has the ability to: can + has the capacity to: can + has the opportunity to: could + hold a meeting: meet + if this is not the case: if not + in a careful manner: carefully + in a thoughtful manner: thoughtfully + in a timely manner: timely + in addition: also + in an effort to: to + in between: between + in lieu of: instead of + in many cases: often + in most cases: usually + in order to: to + in some cases: sometimes + in spite of the fact that: although + in spite of: despite + in the (?:very)? near future: soon + in the event that: if + in the neighborhood of: roughly + in the vicinity of: close to + it would appear that: apparently + lift up: lift + made reference to: referred to + make reference to: refer to + mix together: mix + none at all: none + not in a position to: unable + not possible: impossible + of major importance: important + perform an assessment of: assess + pertaining to: about + place an order: order + plays a key role in: is essential to + present time: now + readily apparent: apparent + some of the: some + span across: span + subsequent to: after + successfully complete: complete + take action: act + take into account: consider + the question as to whether: whether + there is no doubt but that: doubtless + this day and age: this age + this is a subject that: this subject + time (?:frame|period): time + under the provisions of: under + until such time as: until + used for fuel purposes: used for fuel + whether or not: whether + with regard to: regarding + with the exception of: except for diff --git a/docs-linter/styles/Microsoft/meta.json b/docs-linter/styles/Microsoft/meta.json new file mode 100644 index 0000000..297719b --- /dev/null +++ b/docs-linter/styles/Microsoft/meta.json @@ -0,0 +1,4 @@ +{ + "feed": "https://github.com/errata-ai/Microsoft/releases.atom", + "vale_version": ">=1.0.0" +} From 60c2e4f9ba5e319c42a769cd7a6a3ca45954f232 Mon Sep 17 00:00:00 2001 From: nicoa Date: Mon, 22 Dec 2025 17:26:24 -0700 Subject: [PATCH 06/22] adjust rules --- docs-linter/.vale.ini | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/docs-linter/.vale.ini b/docs-linter/.vale.ini index 03b6c0e..cd7cea7 100644 --- a/docs-linter/.vale.ini +++ b/docs-linter/.vale.ini @@ -1,14 +1,13 @@ -# Core settings StylesPath = styles MinAlertLevel = suggestion - -# The "Vocab" setting must match the folder name inside 'styles/Vocab/' Vocab = terms - -# External packages Packages = Microsoft -# Rules for Markdown files [*.{md,mdx}] -# Apply the rules from these three sources BasedOnStyles = Vale, Microsoft, custom-rules + +# --- DISABLING RULES --- + +Microsoft.Accessibility = NO +Microsoft.Gender = NO +Microsoft.GenderBias = NO \ No newline at end of file From 654f4bbc89214dd3c063c727f6033389f7b82a4f Mon Sep 17 00:00:00 2001 From: nicoa Date: Mon, 22 Dec 2025 17:41:48 -0700 Subject: [PATCH 07/22] rule updates --- docs-linter/styles/custom-rules/Branding.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 docs-linter/styles/custom-rules/Branding.yml diff --git a/docs-linter/styles/custom-rules/Branding.yml b/docs-linter/styles/custom-rules/Branding.yml new file mode 100644 index 0000000..e7bdd31 --- /dev/null +++ b/docs-linter/styles/custom-rules/Branding.yml @@ -0,0 +1,20 @@ +# styles/custom-rules/Branding.yml +extends: substitution +message: "Use '%s' instead of '%s'." +link: https://my-company-style-guide.com +level: error +ignorecase: true +swap: + # Left side: The regex/text to find (lowercase) + # Right side: The correction to suggest + netfoundry: NetFoundry + frontdoor: Frontdoor + openziti: OpenZiti + zlan: zLAN + Zrok: zrok + docusaurus: Docusaurus + github: GitHub + bitbucket: Bitbucket + javascript: JavaScript + typescript: TypeScript + vscode: VS Code From 8aeb30c71e87b90a96252db8792ca271b4e38616 Mon Sep 17 00:00:00 2001 From: nicoa Date: Tue, 23 Dec 2025 11:32:43 -0700 Subject: [PATCH 08/22] vale working now --- docs-linter/.vale.ini | 5 ++--- docs-linter/smoke-test.md | 5 +++++ .../vocabularies/terms}/accept.txt | 4 ++++ .../vocabularies/terms}/reject.txt | 0 docs-linter/styles/custom-rules/Branding.yml | 18 ++++-------------- 5 files changed, 15 insertions(+), 17 deletions(-) create mode 100644 docs-linter/smoke-test.md rename docs-linter/styles/{Vocab => config/vocabularies/terms}/accept.txt (76%) rename docs-linter/styles/{Vocab => config/vocabularies/terms}/reject.txt (100%) diff --git a/docs-linter/.vale.ini b/docs-linter/.vale.ini index cd7cea7..27ce6a2 100644 --- a/docs-linter/.vale.ini +++ b/docs-linter/.vale.ini @@ -6,8 +6,7 @@ Packages = Microsoft [*.{md,mdx}] BasedOnStyles = Vale, Microsoft, custom-rules -# --- DISABLING RULES --- - +# Disable the noisy Microsoft rules Microsoft.Accessibility = NO Microsoft.Gender = NO -Microsoft.GenderBias = NO \ No newline at end of file +Microsoft.GenderBias = NO diff --git a/docs-linter/smoke-test.md b/docs-linter/smoke-test.md new file mode 100644 index 0000000..8baaf7f --- /dev/null +++ b/docs-linter/smoke-test.md @@ -0,0 +1,5 @@ +# Smoke test + +I pushed code to github using netfoundry. + +This is a testtoken. diff --git a/docs-linter/styles/Vocab/accept.txt b/docs-linter/styles/config/vocabularies/terms/accept.txt similarity index 76% rename from docs-linter/styles/Vocab/accept.txt rename to docs-linter/styles/config/vocabularies/terms/accept.txt index 0532cee..a4f7855 100644 --- a/docs-linter/styles/Vocab/accept.txt +++ b/docs-linter/styles/config/vocabularies/terms/accept.txt @@ -11,3 +11,7 @@ Frontdoor ZLAN OpenZiti Ziti +zLAN +zrok +JavaScript +TypeScript \ No newline at end of file diff --git a/docs-linter/styles/Vocab/reject.txt b/docs-linter/styles/config/vocabularies/terms/reject.txt similarity index 100% rename from docs-linter/styles/Vocab/reject.txt rename to docs-linter/styles/config/vocabularies/terms/reject.txt diff --git a/docs-linter/styles/custom-rules/Branding.yml b/docs-linter/styles/custom-rules/Branding.yml index e7bdd31..0ef3d44 100644 --- a/docs-linter/styles/custom-rules/Branding.yml +++ b/docs-linter/styles/custom-rules/Branding.yml @@ -1,20 +1,10 @@ -# styles/custom-rules/Branding.yml extends: substitution message: "Use '%s' instead of '%s'." -link: https://my-company-style-guide.com +link: https://netfoundry.io level: error ignorecase: true swap: - # Left side: The regex/text to find (lowercase) - # Right side: The correction to suggest - netfoundry: NetFoundry - frontdoor: Frontdoor - openziti: OpenZiti - zlan: zLAN - Zrok: zrok - docusaurus: Docusaurus - github: GitHub - bitbucket: Bitbucket - javascript: JavaScript - typescript: TypeScript + # KEEP: Substitutions that change structure (spaces, punctuation). For just capitalization, add to accept.txt vscode: VS Code + open ziti: OpenZiti + front door: Frontdoor From 8414c878619863dac87c0b512e87c6d09079a35f Mon Sep 17 00:00:00 2001 From: nicoa Date: Tue, 23 Dec 2025 12:38:10 -0700 Subject: [PATCH 09/22] test pipelines cvale --- bitbucket-pipelines.yml | 19 +++++++++++++++++++ docs-linter/sanity-check.md | 5 +++++ 2 files changed, 24 insertions(+) create mode 100644 bitbucket-pipelines.yml create mode 100644 docs-linter/sanity-check.md diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml new file mode 100644 index 0000000..8086c7d --- /dev/null +++ b/bitbucket-pipelines.yml @@ -0,0 +1,19 @@ +image: jdkato/vale:latest + +pipelines: + pull-requests: + '**': # Runs on all PRs + - step: + name: Validate Linter Config + script: + # 1. Download external styles (Microsoft) + # This ensures network + config paths are valid + - vale sync + + # 2. Run a sanity check on a clean file + # If this fails, your config is broken (or the text is bad) + - vale tests/sanity-check.md + + # 3. (Optional) Syntax check your YAML files + # This ensures you didn't leave a tab or bad space in Branding.yml + - vale ls-config \ No newline at end of file diff --git a/docs-linter/sanity-check.md b/docs-linter/sanity-check.md new file mode 100644 index 0000000..519e370 --- /dev/null +++ b/docs-linter/sanity-check.md @@ -0,0 +1,5 @@ +# Sanity Check + +This file contains valid text. +I use GitHub and NetFoundry properly. +This ensures the linter configuration loads correctly. From b57af5e52ae1f9c744f467a79e3c18a7afcf40cc Mon Sep 17 00:00:00 2001 From: nicoa Date: Tue, 23 Dec 2025 12:44:08 -0700 Subject: [PATCH 10/22] Add Vale CI workflow --- .github/workflows/vale-check.yml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 .github/workflows/vale-check.yml diff --git a/.github/workflows/vale-check.yml b/.github/workflows/vale-check.yml new file mode 100644 index 0000000..5c0371e --- /dev/null +++ b/.github/workflows/vale-check.yml @@ -0,0 +1,26 @@ +name: Vale Linter Check + +on: + push: + branches: [ main, master ] + pull_request: + branches: [ main, master ] + +jobs: + vale-sanity-check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install Vale + run: | + wget https://github.com/errata-ai/vale/releases/download/v3.9.0/vale_3.9.0_Linux_64-bit.tar.gz + tar -xvzf vale_3.9.0_Linux_64-bit.tar.gz + sudo mv vale /usr/local/bin/ + vale -v + + - name: Run Vale Smoke Test + run: | + cd docs-linter + vale sync + vale tests/sanity-check.md From 285d7f657971c956cc5d7162933eb4114acd2a91 Mon Sep 17 00:00:00 2001 From: nicoa Date: Tue, 23 Dec 2025 12:46:18 -0700 Subject: [PATCH 11/22] fix config to show develop --- .github/workflows/vale-check.yml | 4 ++-- bitbucket-pipelines.yml | 19 ------------------- docs-linter/.github/workflows/vale-check.yml | 0 3 files changed, 2 insertions(+), 21 deletions(-) delete mode 100644 bitbucket-pipelines.yml create mode 100644 docs-linter/.github/workflows/vale-check.yml diff --git a/.github/workflows/vale-check.yml b/.github/workflows/vale-check.yml index 5c0371e..73f0934 100644 --- a/.github/workflows/vale-check.yml +++ b/.github/workflows/vale-check.yml @@ -2,9 +2,9 @@ name: Vale Linter Check on: push: - branches: [ main, master ] + branches: [ develop ] pull_request: - branches: [ main, master ] + branches: [ develop ] jobs: vale-sanity-check: diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml deleted file mode 100644 index 8086c7d..0000000 --- a/bitbucket-pipelines.yml +++ /dev/null @@ -1,19 +0,0 @@ -image: jdkato/vale:latest - -pipelines: - pull-requests: - '**': # Runs on all PRs - - step: - name: Validate Linter Config - script: - # 1. Download external styles (Microsoft) - # This ensures network + config paths are valid - - vale sync - - # 2. Run a sanity check on a clean file - # If this fails, your config is broken (or the text is bad) - - vale tests/sanity-check.md - - # 3. (Optional) Syntax check your YAML files - # This ensures you didn't leave a tab or bad space in Branding.yml - - vale ls-config \ No newline at end of file diff --git a/docs-linter/.github/workflows/vale-check.yml b/docs-linter/.github/workflows/vale-check.yml new file mode 100644 index 0000000..e69de29 From ff8223e5b5a532b7c77d8f93dc2814d64ed0762f Mon Sep 17 00:00:00 2001 From: nicoa Date: Tue, 23 Dec 2025 12:53:45 -0700 Subject: [PATCH 12/22] Force CI trigger From 308c92f02083edb14f0cb38f0893e41648793ede Mon Sep 17 00:00:00 2001 From: nicoa Date: Tue, 23 Dec 2025 12:56:06 -0700 Subject: [PATCH 13/22] Fix CI to target main branch --- .github/workflows/vale-check.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/vale-check.yml b/.github/workflows/vale-check.yml index 73f0934..6271d8d 100644 --- a/.github/workflows/vale-check.yml +++ b/.github/workflows/vale-check.yml @@ -2,9 +2,9 @@ name: Vale Linter Check on: push: - branches: [ develop ] + branches: [ main ] pull_request: - branches: [ develop ] + branches: [ main ] jobs: vale-sanity-check: From 7745e03fdebba5f4014522341bd988a0f8d9eb87 Mon Sep 17 00:00:00 2001 From: nicoa Date: Tue, 23 Dec 2025 14:19:40 -0700 Subject: [PATCH 14/22] add no fail line for buiild --- .github/workflows/vale-check.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/vale-check.yml b/.github/workflows/vale-check.yml index 6271d8d..0f9e256 100644 --- a/.github/workflows/vale-check.yml +++ b/.github/workflows/vale-check.yml @@ -24,3 +24,4 @@ jobs: cd docs-linter vale sync vale tests/sanity-check.md + vale tests/sanity-check.md --no-exit From b0780edcc6964d958836884a7174322d4bb74210 Mon Sep 17 00:00:00 2001 From: nicoa Date: Tue, 23 Dec 2025 14:31:41 -0700 Subject: [PATCH 15/22] add markdownlint step to container --- .github/workflows/vale-check.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/vale-check.yml b/.github/workflows/vale-check.yml index 0f9e256..1f4be01 100644 --- a/.github/workflows/vale-check.yml +++ b/.github/workflows/vale-check.yml @@ -23,5 +23,11 @@ jobs: run: | cd docs-linter vale sync - vale tests/sanity-check.md vale tests/sanity-check.md --no-exit + + - name: Install Markdownlint + run: sudo npm install -g markdownlint-cli + + - name: Run Markdownlint (Format Check) + run: | + markdownlint --config docs-linter/.markdownlint.json docs-linter/tests/sanity-check.md || true From c650e934965ff76bd0a19053b999735d2d439c3e Mon Sep 17 00:00:00 2001 From: nicoa Date: Tue, 23 Dec 2025 14:44:36 -0700 Subject: [PATCH 16/22] new test --- .github/workflows/vale-check.yml | 8 +++++--- docs-linter/smoke-test.md | 4 ++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/vale-check.yml b/.github/workflows/vale-check.yml index 1f4be01..df1c399 100644 --- a/.github/workflows/vale-check.yml +++ b/.github/workflows/vale-check.yml @@ -7,7 +7,7 @@ on: branches: [ main ] jobs: - vale-sanity-check: + vale-quality-check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -23,11 +23,13 @@ jobs: run: | cd docs-linter vale sync - vale tests/sanity-check.md --no-exit + # Run against your renamed file + vale tests/smoke-test.md --no-exit - name: Install Markdownlint run: sudo npm install -g markdownlint-cli - name: Run Markdownlint (Format Check) run: | - markdownlint --config docs-linter/.markdownlint.json docs-linter/tests/sanity-check.md || true + cd docs-linter + markdownlint --config .markdownlint.json tests/smoke-test.md || true diff --git a/docs-linter/smoke-test.md b/docs-linter/smoke-test.md index 8baaf7f..eb2a3eb 100644 --- a/docs-linter/smoke-test.md +++ b/docs-linter/smoke-test.md @@ -3,3 +3,7 @@ I pushed code to github using netfoundry. This is a testtoken. + +### + +moret esting From 371546a8ca1c238994381fceef9212716e834ef2 Mon Sep 17 00:00:00 2001 From: nicoa Date: Tue, 23 Dec 2025 15:19:18 -0700 Subject: [PATCH 17/22] remove tests --- .github/workflows/vale-check.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/vale-check.yml b/.github/workflows/vale-check.yml index df1c399..f9725cf 100644 --- a/.github/workflows/vale-check.yml +++ b/.github/workflows/vale-check.yml @@ -17,14 +17,12 @@ jobs: wget https://github.com/errata-ai/vale/releases/download/v3.9.0/vale_3.9.0_Linux_64-bit.tar.gz tar -xvzf vale_3.9.0_Linux_64-bit.tar.gz sudo mv vale /usr/local/bin/ - vale -v - name: Run Vale Smoke Test run: | cd docs-linter vale sync - # Run against your renamed file - vale tests/smoke-test.md --no-exit + vale smoke-test.md --no-exit - name: Install Markdownlint run: sudo npm install -g markdownlint-cli @@ -32,4 +30,4 @@ jobs: - name: Run Markdownlint (Format Check) run: | cd docs-linter - markdownlint --config .markdownlint.json tests/smoke-test.md || true + markdownlint --config .markdownlint.json smoke-test.md || true From 0c61eace855cf1cd0070f0c28b9eabc164fe8621 Mon Sep 17 00:00:00 2001 From: nicoa Date: Tue, 23 Dec 2025 16:31:46 -0700 Subject: [PATCH 18/22] EOD --- docs-linter/smoke-test.md | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/docs-linter/smoke-test.md b/docs-linter/smoke-test.md index eb2a3eb..523f713 100644 --- a/docs-linter/smoke-test.md +++ b/docs-linter/smoke-test.md @@ -1,9 +1,16 @@ -# Smoke test +# Smoke Test File -I pushed code to github using netfoundry. +This is a paragraph with trailing spaces at the end. +(That line has spaces, triggering MD009). -This is a testtoken. +# A Second H1 Header (Violation: MD025) -### +#### Skipped Header Level (Violation: MD001 - H1 to H4) -moret esting +Here is a list of Vale violations: + +1. **Branding:** We use netfoundry and github in our daily work. +2. **Passive Voice:** The file was opened by the admin. +3. **Wordiness:** In order to login, you must utilize the key. +4. **First Person:** I decided to push the code myself. +5. **Spelling:** This is a testtoken for moret esting. \ No newline at end of file From 7e3bc19bdc560a4ccc022da8f6723110c375d291 Mon Sep 17 00:00:00 2001 From: Nico Alba Date: Wed, 24 Dec 2025 12:04:04 -0700 Subject: [PATCH 19/22] Disable Microsoft.Vocab rule in Vale configuration --- docs-linter/.vale.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/docs-linter/.vale.ini b/docs-linter/.vale.ini index 27ce6a2..439f5c2 100644 --- a/docs-linter/.vale.ini +++ b/docs-linter/.vale.ini @@ -10,3 +10,4 @@ BasedOnStyles = Vale, Microsoft, custom-rules Microsoft.Accessibility = NO Microsoft.Gender = NO Microsoft.GenderBias = NO +Microsoft.Vocab = NO From f87fbea47ab87a4f2be919bf5faa8b3d3b3d5e99 Mon Sep 17 00:00:00 2001 From: Nico Alba Date: Wed, 24 Dec 2025 12:40:01 -0700 Subject: [PATCH 20/22] Update .vale.ini --- docs-linter/.vale.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/docs-linter/.vale.ini b/docs-linter/.vale.ini index 439f5c2..3fbfdb9 100644 --- a/docs-linter/.vale.ini +++ b/docs-linter/.vale.ini @@ -11,3 +11,4 @@ Microsoft.Accessibility = NO Microsoft.Gender = NO Microsoft.GenderBias = NO Microsoft.Vocab = NO +Microsoft.Acronyms = NO From deccf3b7059cb1e198c810122377d3b3d232d041 Mon Sep 17 00:00:00 2001 From: Nico Alba Date: Wed, 24 Dec 2025 15:11:10 -0700 Subject: [PATCH 21/22] Update .vale.ini --- docs-linter/.vale.ini | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs-linter/.vale.ini b/docs-linter/.vale.ini index 3fbfdb9..4a4e526 100644 --- a/docs-linter/.vale.ini +++ b/docs-linter/.vale.ini @@ -1,14 +1,19 @@ StylesPath = styles MinAlertLevel = suggestion +TokenIgnores = (https?://[^\s\)]+) Vocab = terms Packages = Microsoft [*.{md,mdx}] BasedOnStyles = Vale, Microsoft, custom-rules +BlockIgnores = (?s)(^---\n.*?\n---) + # Disable the noisy Microsoft rules Microsoft.Accessibility = NO Microsoft.Gender = NO Microsoft.GenderBias = NO Microsoft.Vocab = NO Microsoft.Acronyms = NO +Microsoft.Foreign = NO +Microsoft.Avoid = NO From b8025d8e1fe349588620d81e49d4218a355eb13d Mon Sep 17 00:00:00 2001 From: Nico Alba Date: Wed, 24 Dec 2025 15:15:12 -0700 Subject: [PATCH 22/22] Add TokenIgnores back to .vale.ini --- docs-linter/.vale.ini | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs-linter/.vale.ini b/docs-linter/.vale.ini index 4a4e526..465ebdb 100644 --- a/docs-linter/.vale.ini +++ b/docs-linter/.vale.ini @@ -1,12 +1,11 @@ StylesPath = styles MinAlertLevel = suggestion -TokenIgnores = (https?://[^\s\)]+) Vocab = terms Packages = Microsoft [*.{md,mdx}] BasedOnStyles = Vale, Microsoft, custom-rules - +TokenIgnores = (https?://[^\s\)]+) BlockIgnores = (?s)(^---\n.*?\n---) # Disable the noisy Microsoft rules