style·doctorv0.4.4

Prose scores for open-source repositories.

We ran Style Doctor on six open-source repositories. Explore the findings, then give your own prose a check on every pull request.

Add it to your GitHub Actions

Local snapshots · Style Doctor 0.4.2 · Oct 8, 2026 UTC

Repository scans

Lowest score first · Expand a row to inspect findings
brandonwise/humanizer76 / 100Needs workFindings 32444 errors · 280 warningsFiles 15Words 6,826

This writing-rules repository includes intentional examples and test fixtures of the patterns it teaches writers to avoid. Those examples contribute to its score; review the findings in context.

Grammar 17Filler 125LLM Tells 161AI Artifacts 12Formatting 9

Findings by rule

Expand a rule for matched text, rewrite guidance, and links to the original source. Showing up to five occurrences per rule.

errorLeftover AI-generation artifact×12

This is a chatbot sign-off or citation scrap left in from an unedited paste.

Remove it; it means the output was never read before publishing.

Showing 5 of 12 occurrences. The JSON report includes every source location.

errorFiller word "delve"×10

"delve" is a hallmark LLM word rarely used in natural writing.

Use "look at", "go into", or cut.

Showing 5 of 10 occurrences. The JSON report includes every source location.

error"Tapestry" metaphor×10

"tapestry" as a metaphor is LLM boilerplate.

Name the actual thing.

Showing 5 of 10 occurrences. The JSON report includes every source location.

error"It's important to note" filler×6

"it's important to note" adds nothing.

Just state the note.

Showing 5 of 6 occurrences. The JSON report includes every source location.

error"It's not X, it's Y" reversal×3

The "It's not X, it's Y" reversal reads as generated.

Make the claim once, plainly.

error"A testament to" filler praise×2

"a testament to" is empty praise.

Say what it shows and why.

error"Not just X, but Y" construction×1

The "not just X, but Y" escalation is one of the strongest LLM tells.

Cut it and state the point directly.

warningAI-vocabulary word×39

This word shows up disproportionately in LLM output.

Use a plainer, more specific word.

Showing 5 of 39 occurrences. The JSON report includes every source location.

warningWordy phrase×32

This phrase has a shorter equivalent.

e.g. "in order to" -> "to", "due to the fact that" -> "because".

Showing 5 of 32 occurrences. The JSON report includes every source location.

warningOverused intensifier×30

Everything is "crucial" in LLM prose.

Reserve it for what truly is; else cut.

Showing 5 of 30 occurrences. The JSON report includes every source location.

warningSuperficial-analysis "-ing" filler×23

These "-ing" connectives gesture at analysis without adding any.

State the actual point instead.

Showing 5 of 23 occurrences. The JSON report includes every source location.

warning"Serves/stands as" instead of "is"×22

Dressing up "is" as "serves as"/"stands as" is a common LLM avoidance tic.

Just use "is" or the plain verb.

Showing 5 of 22 occurrences. The JSON report includes every source location.

warningPossible passive voice×17

Naive check for passive voice (no POS tagger).

Prefer active voice: name the actor. --ignore passive-voice if noisy.

Showing 5 of 17 occurrences. The JSON report includes every source location.

warningUnsourced authority×15

This attributes a claim to an unnamed authority.

Cite the actual source or cut the claim.

Showing 5 of 15 occurrences. The JSON report includes every source location.

warningFormal connective overload×11

Formal connectives pile up in LLM prose.

Use "also" or start a new sentence.

Showing 5 of 11 occurrences. The JSON report includes every source location.

warningTravel-brochure word "nestled"×10

"nestled" is travel-brochure prose.

Use "in" or "near".

Showing 5 of 10 occurrences. The JSON report includes every source location.

warningStacked hedge / confidence-calibration opener×9

Stacked hedges, or flagging your own "noteworthy" aside, is LLM throat-clearing.

Pick one hedge, or state the fact plainly.

Showing 5 of 9 occurrences. The JSON report includes every source location.

warningMarketing filler "seamless"×8

"seamless" is marketing filler.

Describe the actual flow.

Showing 5 of 8 occurrences. The JSON report includes every source location.

warningWeasel / hedge word×8

Hedge and intensifier words weaken the sentence.

Cut it or be specific.

Showing 5 of 8 occurrences. The JSON report includes every source location.

warningCorporate verb "leverage"×7

"leverage" as a verb is corporate-speak.

Use "use".

Showing 5 of 7 occurrences. The JSON report includes every source location.

warningEm-dash overuse×5

A high em-dash rate is a common LLM tell.

Replace some with periods or commas.

warningAd-copy verb "boasts"×5
warningVague praise "robust"×5
warningShowy word "myriad"×5
warningBold-text overuse×4

Frequent bolding is a common LLM formatting tell.

Reserve bold for genuine emphasis; use fewer spans.

warningVague legacy/location praise×4

This phrase is empty legacy/location praise.

Say the specific fact instead.

warning"**Label:** text" bullet×3

Bolded label-then-colon bullets are an LLM list default.

Write the point as a plain sentence, or drop the bold.

warning"Landscape" metaphor×3

The "landscape" metaphor is overused by LLMs.

Be concrete about what changed.

warning"In today's world" opener×2

"in today's world" is throat-clearing.

Cut it.

warning"Deep dive" filler opener×2

"deep dive" / "let's dive in" is a filler opener.

Just start.

warning"In the realm of" padding×2

"in the realm of" is padding.

Use "in" or name the field.

warningTitle Case Every Word heading×2

Capitalizing every word in a heading is an LLM formatting default.

Use sentence case.

warningEmpty superlative "cutting-edge"×2

"cutting-edge" carries no information.

Name the specific capability.

warning"When it comes to" filler×2

"when it comes to" is filler.

Use "for" or "with".

warning"Game-changer" cliche×1

"game-changer" is marketing cliche.

State the concrete effect.

warning"At the end of the day" cliche×1

"at the end of the day" is a dead cliche.

Cut it or say "ultimately".

warningRedundant "In conclusion" signpost×1

"In conclusion" signposting is unnecessary in short prose.

End on the point itself.

Iampattanayak/Claude-Humanizer77 / 100Needs workFindings 8711 errors · 76 warningsFiles 2Words 1,911

This writing-rules repository includes intentional examples and test fixtures of the patterns it teaches writers to avoid. Those examples contribute to its score; review the findings in context.

LLM Tells 43Grammar 5Formatting 10Filler 24AI Artifacts 5

Findings by rule

Expand a rule for matched text, rewrite guidance, and links to the original source. Showing up to five occurrences per rule.

errorLeftover AI-generation artifact×5

This is a chatbot sign-off or citation scrap left in from an unedited paste.

Remove it; it means the output was never read before publishing.

errorFiller word "delve"×2

"delve" is a hallmark LLM word rarely used in natural writing.

Use "look at", "go into", or cut.

error"Tapestry" metaphor×2

"tapestry" as a metaphor is LLM boilerplate.

Name the actual thing.

error"It's not X, it's Y" reversal×1

The "It's not X, it's Y" reversal reads as generated.

Make the claim once, plainly.

error"It's important to note" filler×1

"it's important to note" adds nothing.

Just state the note.

warningSuperficial-analysis "-ing" filler×10

These "-ing" connectives gesture at analysis without adding any.

State the actual point instead.

Showing 5 of 10 occurrences. The JSON report includes every source location.

warningAI-vocabulary word×9

This word shows up disproportionately in LLM output.

Use a plainer, more specific word.

Showing 5 of 9 occurrences. The JSON report includes every source location.

warning"Serves/stands as" instead of "is"×7

Dressing up "is" as "serves as"/"stands as" is a common LLM avoidance tic.

Just use "is" or the plain verb.

Showing 5 of 7 occurrences. The JSON report includes every source location.

warningOverused intensifier×7

Everything is "crucial" in LLM prose.

Reserve it for what truly is; else cut.

Showing 5 of 7 occurrences. The JSON report includes every source location.

warningWeasel / hedge word×6

Hedge and intensifier words weaken the sentence.

Cut it or be specific.

Showing 5 of 6 occurrences. The JSON report includes every source location.

warningWordy phrase×6

This phrase has a shorter equivalent.

e.g. "in order to" -> "to", "due to the fact that" -> "because".

Showing 5 of 6 occurrences. The JSON report includes every source location.

warningPossible passive voice×5

Naive check for passive voice (no POS tagger).

Prefer active voice: name the actor. --ignore passive-voice if noisy.

warningTitle Case Every Word heading×5

Capitalizing every word in a heading is an LLM formatting default.

Use sentence case.

warningAd-copy verb "boasts"×3

"X boasts Y" is product-page voice.

Use "has" or "includes".

warning"**Label:** text" bullet×3

Bolded label-then-colon bullets are an LLM list default.

Write the point as a plain sentence, or drop the bold.

warningUnsourced authority×3

This attributes a claim to an unnamed authority.

Cite the actual source or cut the claim.

warningStacked hedge / confidence-calibration opener×2

Stacked hedges, or flagging your own "noteworthy" aside, is LLM throat-clearing.

Pick one hedge, or state the fact plainly.

warningBold-text overuse×2

Frequent bolding is a common LLM formatting tell.

Reserve bold for genuine emphasis; use fewer spans.

warning"Landscape" metaphor×2

The "landscape" metaphor is overused by LLMs.

Be concrete about what changed.

warningVague legacy/location praise×2

This phrase is empty legacy/location praise.

Say the specific fact instead.

warningTravel-brochure word "nestled"×2

"nestled" is travel-brochure prose.

Use "in" or "near".

warningFormal connective overload×1

Formal connectives pile up in LLM prose.

Use "also" or start a new sentence.

warningMarketing filler "seamless"×1

"seamless" is marketing filler.

Describe the actual flow.

vitejs/vite92 / 100ExcellentFindings 2,8345 errors · 2,829 warningsFiles 307Words 137,657
Grammar 900Formatting 1,850Filler 76LLM Tells 8

Findings by rule

Expand a rule for matched text, rewrite guidance, and links to the original source. Showing up to five occurrences per rule.

error"It's important to note" filler×3

"it's important to note" adds nothing.

Just state the note.

error"Not just X, but Y" construction×2

The "not just X, but Y" escalation is one of the strongest LLM tells.

Cut it and state the point directly.

warning"**Label:** text" bullet×1746

Bolded label-then-colon bullets are an LLM list default.

Write the point as a plain sentence, or drop the bold.

Showing 5 of 1746 occurrences. The JSON report includes every source location.

warningPossible passive voice×860

Naive check for passive voice (no POS tagger).

Prefer active voice: name the actor. --ignore passive-voice if noisy.

Showing 5 of 860 occurrences. The JSON report includes every source location.

warningTitle Case Every Word heading×95

Capitalizing every word in a heading is an LLM formatting default.

Use sentence case.

Showing 5 of 95 occurrences. The JSON report includes every source location.

warningWeasel / hedge word×43

Hedge and intensifier words weaken the sentence.

Cut it or be specific.

Showing 5 of 43 occurrences. The JSON report includes every source location.

warningSentence buried behind "there is"×40

"There is / are" pushes the real subject back.

Start with the real subject.

Showing 5 of 40 occurrences. The JSON report includes every source location.

warningCorporate verb "leverage"×11

"leverage" as a verb is corporate-speak.

Use "use".

Showing 5 of 11 occurrences. The JSON report includes every source location.

warningBold-text overuse×9

Frequent bolding is a common LLM formatting tell.

Reserve bold for genuine emphasis; use fewer spans.

Showing 5 of 9 occurrences. The JSON report includes every source location.

warningWordy phrase×8

This phrase has a shorter equivalent.

e.g. "in order to" -> "to", "due to the fact that" -> "because".

Showing 5 of 8 occurrences. The JSON report includes every source location.

warningFormal connective overload×5

Formal connectives pile up in LLM prose.

Use "also" or start a new sentence.

warningVague praise "robust"×3
warningEmpty superlative "cutting-edge"×3

"cutting-edge" carries no information.

Name the specific capability.

warning"Serves/stands as" instead of "is"×2

Dressing up "is" as "serves as"/"stands as" is a common LLM avoidance tic.

Just use "is" or the plain verb.

warningAI-vocabulary word×1

This word shows up disproportionately in LLM output.

Use a plainer, more specific word.

warningOverused intensifier×1

Everything is "crucial" in LLM prose.

Reserve it for what truly is; else cut.

warningMarketing filler "seamless"×1

"seamless" is marketing filler.

Describe the actual flow.

warningRedundant "In conclusion" signpost×1

"In conclusion" signposting is unnecessary in short prose.

End on the point itself.

honojs/hono94 / 100ExcellentFindings 571 errors · 56 warningsFiles 59Words 3,704
Filler 4Grammar 49Formatting 3LLM Tells 1

Findings by rule

Expand a rule for matched text, rewrite guidance, and links to the original source. Showing up to five occurrences per rule.

error"Not just X, but Y" construction×1

The "not just X, but Y" escalation is one of the strongest LLM tells.

Cut it and state the point directly.

warningPossible passive voice×43

Naive check for passive voice (no POS tagger).

Prefer active voice: name the actor. --ignore passive-voice if noisy.

Showing 5 of 43 occurrences. The JSON report includes every source location.

warningSentence buried behind "there is"×6

"There is / are" pushes the real subject back.

Start with the real subject.

Showing 5 of 6 occurrences. The JSON report includes every source location.

warningWeasel / hedge word×4

Hedge and intensifier words weaken the sentence.

Cut it or be specific.

warningTitle Case Every Word heading×3

Capitalizing every word in a heading is an LLM formatting default.

Use sentence case.

facebook/react96 / 100ExcellentFindings 1,8613 errors · 1,858 warningsFiles 2,239Words 184,382
Grammar 1,321Formatting 386Filler 112LLM Tells 42

Findings by rule

Expand a rule for matched text, rewrite guidance, and links to the original source. Showing up to five occurrences per rule.

error"It's important to note" filler×2

"it's important to note" adds nothing.

Just state the note.

error"Not just X, but Y" construction×1

The "not just X, but Y" escalation is one of the strongest LLM tells.

Cut it and state the point directly.

warningPossible passive voice×1277

Naive check for passive voice (no POS tagger).

Prefer active voice: name the actor. --ignore passive-voice if noisy.

Showing 5 of 1277 occurrences. The JSON report includes every source location.

warningTitle Case Every Word heading×278

Capitalizing every word in a heading is an LLM formatting default.

Use sentence case.

Showing 5 of 278 occurrences. The JSON report includes every source location.

warningWeasel / hedge word×78

Hedge and intensifier words weaken the sentence.

Cut it or be specific.

Showing 5 of 78 occurrences. The JSON report includes every source location.

warning"**Label:** text" bullet×58

Bolded label-then-colon bullets are an LLM list default.

Write the point as a plain sentence, or drop the bold.

Showing 5 of 58 occurrences. The JSON report includes every source location.

warningBold-text overuse×50

Frequent bolding is a common LLM formatting tell.

Reserve bold for genuine emphasis; use fewer spans.

Showing 5 of 50 occurrences. The JSON report includes every source location.

warningSentence buried behind "there is"×44

"There is / are" pushes the real subject back.

Start with the real subject.

Showing 5 of 44 occurrences. The JSON report includes every source location.

warning"Serves/stands as" instead of "is"×18

Dressing up "is" as "serves as"/"stands as" is a common LLM avoidance tic.

Just use "is" or the plain verb.

Showing 5 of 18 occurrences. The JSON report includes every source location.

warningWordy phrase×17

This phrase has a shorter equivalent.

e.g. "in order to" -> "to", "due to the fact that" -> "because".

Showing 5 of 17 occurrences. The JSON report includes every source location.

warningEm-dash overuse×12

A high em-dash rate is a common LLM tell.

Replace some with periods or commas.

Showing 5 of 12 occurrences. The JSON report includes every source location.

warningSuperficial-analysis "-ing" filler×9

These "-ing" connectives gesture at analysis without adding any.

State the actual point instead.

Showing 5 of 9 occurrences. The JSON report includes every source location.

warningOverused intensifier×5
warningFormal connective overload×4

Formal connectives pile up in LLM prose.

Use "also" or start a new sentence.

warningStacked hedge / confidence-calibration opener×3

Stacked hedges, or flagging your own "noteworthy" aside, is LLM throat-clearing.

Pick one hedge, or state the fact plainly.

warningCorporate verb "leverage"×2
warningEmpty superlative "cutting-edge"×2

"cutting-edge" carries no information.

Name the specific capability.

warningVague praise "robust"×1

"robust" is vague praise.

Say how it holds up.

withastro/astro97 / 100ExcellentFindings 2,90360 errors · 2,843 warningsFiles 2,449Words 432,840
Grammar 2,268Formatting 128LLM Tells 158Filler 349

Findings by rule

Expand a rule for matched text, rewrite guidance, and links to the original source. Showing up to five occurrences per rule.

error"Not just X, but Y" construction×60

The "not just X, but Y" escalation is one of the strongest LLM tells.

Cut it and state the point directly.

Showing 5 of 60 occurrences. The JSON report includes every source location.

warningPossible passive voice×2191

Naive check for passive voice (no POS tagger).

Prefer active voice: name the actor. --ignore passive-voice if noisy.

Showing 5 of 2191 occurrences. The JSON report includes every source location.

warningWeasel / hedge word×260
warningTitle Case Every Word heading×90

Capitalizing every word in a heading is an LLM formatting default.

Use sentence case.

Showing 5 of 90 occurrences. The JSON report includes every source location.

warningSuperficial-analysis "-ing" filler×78

These "-ing" connectives gesture at analysis without adding any.

State the actual point instead.

Showing 5 of 78 occurrences. The JSON report includes every source location.

warningSentence buried behind "there is"×77

"There is / are" pushes the real subject back.

Start with the real subject.

Showing 5 of 77 occurrences. The JSON report includes every source location.

warningFormal connective overload×43

Formal connectives pile up in LLM prose.

Use "also" or start a new sentence.

Showing 5 of 43 occurrences. The JSON report includes every source location.

warningWordy phrase×34

This phrase has a shorter equivalent.

e.g. "in order to" -> "to", "due to the fact that" -> "because".

Showing 5 of 34 occurrences. The JSON report includes every source location.

warning"**Label:** text" bullet×25

Bolded label-then-colon bullets are an LLM list default.

Write the point as a plain sentence, or drop the bold.

Showing 5 of 25 occurrences. The JSON report includes every source location.

warningBold-text overuse×13

Frequent bolding is a common LLM formatting tell.

Reserve bold for genuine emphasis; use fewer spans.

Showing 5 of 13 occurrences. The JSON report includes every source location.

warningEm-dash overuse×11

A high em-dash rate is a common LLM tell.

Replace some with periods or commas.

Showing 5 of 11 occurrences. The JSON report includes every source location.

warningStacked hedge / confidence-calibration opener×5

Stacked hedges, or flagging your own "noteworthy" aside, is LLM throat-clearing.

Pick one hedge, or state the fact plainly.

warningAI-vocabulary word×4
warningMarketing filler "seamless"×4
warningOverused intensifier×3

Everything is "crucial" in LLM prose.

Reserve it for what truly is; else cut.

warning"Serves/stands as" instead of "is"×3

Dressing up "is" as "serves as"/"stands as" is a common LLM avoidance tic.

Just use "is" or the plain verb.

warningEmpty superlative "cutting-edge"×1

"cutting-edge" carries no information.

Name the specific capability.

warning"Deep dive" filler opener×1

"deep dive" / "let's dive in" is a filler opener.

Just start.

Scores measure weighted findings per 100 words. A high score can still include many findings in a large repo. These checks suggest edits; they do not establish who wrote the text.

What we scanned

Each snapshot covers the supported, tracked files in a clean checkout at the linked commit: Markdown, MDX, text, Astro, JSX, TSX, HTML, Vue, and Svelte. The scan includes changelogs and test fixtures; documentation in separate repositories is outside the scan.

We used the same default rules for every repo, with repository configuration disabled. We exclude standard dependency, build, cache, and vendor directories. The engine skips fenced code, inline code, and blockquotes, and uses a heuristic extractor for component prose. Findings can need human review.

These results stay fixed until we run another local scan. Expand a repository and a rule to read findings here, or download the JSON for every source location.

Check your own repo

Catch prose issues in your pull requests.

Add this workflow to .github/workflows/prose.yml. It scans the repo on pushes to main and on pull requests, and fails when error-severity findings remain.

Start with --blocking none for an advisory check. Adjust the branch name if needed, and use .style-doctor.json to ignore rules or exclude paths.

Read the CI and configuration guide ↗
prose.yml
name: Prose check

on:
  pull_request:
  push:
    branches: [main]

permissions:
  contents: read

jobs:
  style-doctor:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 24
      - name: Check prose
        run: npx --yes style-doctor@0.4.4 --quiet