Genres

Pick the kind of document (the genre) and chaff sets its rules and limits to that kind. A contract gets sentence limits fit for legal writing, and its clause numbering and references to clauses are checked too. No settings needed.

npx chaffjs --genre legal/contract contract.md
npx chaffjs init --genre legal/contract

A document with no genre set is checked as a tech blog post (blog/tech). When it looks like another kind, the screen says so and names the genre to try.

Technical

technical/specSpecification

Specifications, RFCs and design documents, written so the reader cannot get it wrong

npx chaffjs --genre technical/spec <file>

This genre turns no rule off.

technical/readmeREADME and technical docs

READMEs and documentation for developers

npx chaffjs --genre technical/readme <file>

This genre turns no rule off.

Blog

blog/techTech blog

Technical articles; the genre used when none is set

npx chaffjs --genre blog/tech <file>

Rules this kind is not checked with (1)

concrete-evidence-density

blog/essayBlog essay

Personal essays posted on a blog

npx chaffjs --genre blog/essay <file>

Rules this kind is not checked with (1)

concrete-evidence-density

Business

business/proposalProposal

Proposals, plans and pitches

npx chaffjs --genre business/proposal <file>

Rules this kind is not checked with (1)

agentless-passive

business/reportReport

Reports, white papers and internal documents

npx chaffjs --genre business/report <file>

Rules this kind is not checked with (1)

agentless-passive

business/emailEmail and letter

Work email and letters

npx chaffjs --genre business/email <file>

Rules this kind is not checked with (2)

preamble-lengthagentless-passive

business/press-releasePress release and notice

Press releases and public notices

npx chaffjs --genre business/press-release <file>

Rules this kind is not checked with (2)

agentless-passiveproper-noun-density

Legal

Documentation

docs/manualManual and how-to

User guides, how-to pages and help

npx chaffjs --genre docs/manual <file>

Rules this kind is not checked with (47)

ai-generated-compositeai-structurebold-label-listcolon-lead-inconcrete-evidence-densityemoji-headingheading-echoparagraph-length-variancepreamble-lengthquote-style-consistencyrule-of-threesection-length-uniformitysentence-rhythmai-tellannouncing-openerattachment-not-attachedclosing-clichecontrast-framingcushion-phrase-densityemail-greeting-closingemail-subject-lengthobligation-without-deadlinepadded-introquote-unnamed-speakerquote-without-sourcestock-transitionunqualified-superlativevague-deadlineabstract-lengthadverb-overuseagentless-passivecitation-reference-mismatchcitation-style-mixdeadline-after-eventdefined-name-repeateddefined-term-formdouble-keigoexpletive-constructionfigure-reference-orderparty-orderparty-role-nameproper-noun-densityrequest-without-deadlinesasete-itadakusentence-initial-conjunction-runtoki-as-conditionundefined-term

docs/faqFAQ

Pages of questions and answers

npx chaffjs --genre docs/faq <file>

Rules this kind is not checked with (49)

ai-generated-compositeai-structurebold-label-listcolon-lead-inconcrete-evidence-densityemoji-headingheading-echoparagraph-length-variancepreamble-lengthquote-style-consistencyrule-of-threesection-length-uniformitysentence-rhythmtitle-lengthai-tellannouncing-openerattachment-not-attachedclosing-clichecontrast-framingcushion-phrase-densityemail-greeting-closingemail-subject-lengthobligation-without-deadlinepadded-introquote-unnamed-speakerquote-without-sourcestock-transitionunqualified-superlativevague-deadlineabstract-lengthadverb-overuseagentless-passivecitation-reference-mismatchcitation-style-mixdeadline-after-eventdefined-name-repeateddefined-term-formdouble-keigodue-before-issueexpletive-constructionfigure-reference-orderparty-orderparty-role-nameproper-noun-densityrequest-without-deadlinesasete-itadakusentence-initial-conjunction-runtoki-as-conditionundefined-term

docs/glossaryGlossary

Lists of terms and what they mean

npx chaffjs --genre docs/glossary <file>

Rules this kind is not checked with (51)

ai-generated-compositeai-structurebold-label-listcolon-lead-inconcrete-evidence-densityemoji-headingheading-echongram-repetitionparagraph-length-variancepreamble-lengthquote-style-consistencyrule-of-threesection-length-uniformitysentence-rhythmai-tellannouncing-openerattachment-not-attachedclosing-clichecontrast-framingcushion-phrase-densityemail-greeting-closingemail-subject-lengthobligation-without-deadlinepadded-introquote-unnamed-speakerquote-without-sourcerequirement-smellstock-transitionunqualified-superlativevague-deadlineabstract-lengthadverb-overuseagentless-passivecitation-reference-mismatchcitation-style-mixdeadline-after-eventdefined-name-repeateddefined-term-formdouble-keigodue-before-issueexpletive-constructionfigure-reference-orderparty-orderparty-role-nameproper-noun-densityrequest-without-deadlinesasete-itadakusentence-initial-conjunction-runtaigen-dome-in-prosetoki-as-conditionundefined-term

Academic

academic/paperAcademic paper

Papers and abstracts

npx chaffjs --genre academic/paper <file>

Rules this kind is not checked with (52)

ai-structurebold-label-listcode-fence-language-mixconcrete-evidence-densitydefault-value-mismatchdeprecated-option-usedemoji-headingheading-command-missingmax-sentence-lengthparagraph-length-varianceparameter-table-mismatchpreamble-lengthreturn-type-mismatchrule-of-threesection-length-uniformitysentence-rhythmshell-prompt-mixundefined-acronymundefined-function-callversion-mismatchversion-orderattachment-not-attachedclosing-clichecushion-phrase-densityemail-greeting-closingemail-subject-lengthexcessive-hedgingobligation-without-deadlinepadded-introquote-unnamed-speakerrequirement-smellstock-transitionvague-deadlineadverb-overuseagentless-passivedeadline-after-eventdefined-name-repeateddefined-term-formdouble-keigodue-before-issueexpletive-constructionparty-orderparty-role-nameprerequisite-after-stepproper-noun-densityrequest-without-deadlinesasete-itadakustep-statement-mixtoki-as-conditionui-label-variantundefined-termwarning-without-action

Literature

literature/fictionFiction

Novels and stories

npx chaffjs --genre literature/fiction <file>

Rules this kind is not checked with (199)

ai-generated-compositeall-caps-shoutingbold-label-listcode-fence-language-mixcolon-lead-inconcrete-evidence-densitydefault-value-mismatchdeprecated-option-usedemoji-densityemoji-headingheading-command-missingheading-echohyphen-as-dashmax-paragraph-lengthmax-sentence-lengthmissing-space-after-commangram-repetitionno-em-dashno-leadnumbered-generic-headingparagraph-length-varianceparameter-table-mismatchpreamble-lengthrepeated-sentence-headreturn-type-mismatchrule-of-threesection-length-uniformitysentence-rhythmshell-prompt-mixtitle-lengthundefined-acronymundefined-function-callversion-mismatchversion-orderai-tellannouncing-openerarticle-soundattachment-not-attachedclicheclosing-clichecolloquial-openerconnective-hierarchycontraction-consistencycontrast-framingcushion-phrase-densitydouble-negativeemail-greeting-closingemail-subject-lengthempty-intensifierexcessive-hedgingfigurative-densityhomophone-sliplist-item-form-mixmissing-final-periodnado-closed-listnonstandard-wordnumber-style-consistencyobligation-without-deadlinepadded-introparagraph-restatementperson-consistencyquote-unnamed-speakerquote-without-sourcera-nukiredundant-expressionrepeated-conjunctionrequirement-smellsentence-initial-sostock-transitiontranslationese-densityuncomparable-gradedunknown-wordunqualified-superlativevague-deadlinevague-figure-referencevery-adjectiveweasel-wordwordy-phraseabsolute-exceptionabstract-lengthadverb-overuseadverb-without-negationagentless-passiveagreement-slipamount-range-reversedannounced-count-mismatchannual-holidays-mismatchannual-pay-mismatcharrival-before-departurebackorder-mismatchbaito-keigobmi-mismatchchange-rate-mismatchcitation-reference-mismatchcitation-style-mixclause-chainclosing-balance-mismatchcomparative-without-baselineconnection-time-shortcontact-variantcount-over-capacitycross-doc-term-variantcumulative-below-currentcurrency-column-mixdangling-figure-referencedangling-participledangling-referencedate-orderdate-outside-perioddate-range-reverseddate-stamp-orderdate-weekday-mismatchdeadline-after-eventdeductible-exceeds-limitdefined-name-repeateddefined-term-formdelivered-over-ordereddemonstrative-opener-rundiscount-rate-mismatchdouble-keigodoubled-worddue-before-issueduplicate-definitionelapsed-years-mismatchexpletive-constructionfact-conflictfigure-reference-orderformula-amount-mismatchgpa-mismatchhiragana-fukushihumble-for-othersidiom-misuseinstallment-total-mismatchinterest-mismatchinterval-count-mismatchlayout-code-mismatchless-for-fewerline-amount-mismatchmax-kanji-continuousmax-tenmeter-usage-mismatchnet-amount-mismatchnet-over-grossno-doubled-joshino-mixed-desumasuno-nakaguro-parallelnominalizationone-sentence-paragraph-runorthographic-variantparty-orderparty-role-namepercent-sum-mismatchperiod-label-conflictperiod-multiple-mismatchperiod-part-exceeds-wholephone-number-variantprerequisite-after-stepproduct-exceeds-maximumproper-noun-densityquantity-range-reversedrange-band-mismatchratio-mismatchreference-flag-mismatchreference-number-repeatedreference-number-variantreference-unit-mismatchrent-multiple-mismatchrepeated-sentence-endingrequest-without-deadlinerequired-listed-as-preferredrevision-direction-mismatchrunning-balance-mismatchsasete-itadakuscaled-quantity-mismatchsentence-initial-conjunction-runserial-range-reversedshare-amount-mismatchspelling-consistencystep-statement-mixstep-time-sum-mismatchsummary-fact-mismatchtable-unit-mixtaigen-dome-in-prosetari-unpairedtax-mismatchtier-threshold-mismatchtime-ordertime-range-reversedtoki-as-conditiontopic-predicate-distancetotal-mismatchui-label-variantundefined-termunlisted-item-usedvariance-mismatchwalk-time-distance-mismatchwarning-without-actionwhich-that-consistencyyori-as-from

literature/essayLiterary essay

Literary essays; a blog essay is blog/essay

npx chaffjs --genre literature/essay <file>

Rules this kind is not checked with (199)

ai-generated-compositeall-caps-shoutingbold-label-listcode-fence-language-mixcolon-lead-inconcrete-evidence-densitydefault-value-mismatchdeprecated-option-usedemoji-densityemoji-headingheading-command-missingheading-echohyphen-as-dashmax-paragraph-lengthmax-sentence-lengthmissing-space-after-commangram-repetitionno-em-dashno-leadnumbered-generic-headingparagraph-length-varianceparameter-table-mismatchpreamble-lengthrepeated-sentence-headreturn-type-mismatchrule-of-threesection-length-uniformitysentence-rhythmshell-prompt-mixtitle-lengthundefined-acronymundefined-function-callversion-mismatchversion-orderai-tellannouncing-openerarticle-soundattachment-not-attachedclicheclosing-clichecolloquial-openerconnective-hierarchycontraction-consistencycontrast-framingcushion-phrase-densitydouble-negativeemail-greeting-closingemail-subject-lengthempty-intensifierexcessive-hedgingfigurative-densityhomophone-sliplist-item-form-mixmissing-final-periodnado-closed-listnonstandard-wordnumber-style-consistencyobligation-without-deadlinepadded-introparagraph-restatementperson-consistencyquote-unnamed-speakerquote-without-sourcera-nukiredundant-expressionrepeated-conjunctionrequirement-smellsentence-initial-sostock-transitiontranslationese-densityuncomparable-gradedunknown-wordunqualified-superlativevague-deadlinevague-figure-referencevery-adjectiveweasel-wordwordy-phraseabsolute-exceptionabstract-lengthadverb-overuseadverb-without-negationagentless-passiveagreement-slipamount-range-reversedannounced-count-mismatchannual-holidays-mismatchannual-pay-mismatcharrival-before-departurebackorder-mismatchbaito-keigobmi-mismatchchange-rate-mismatchcitation-reference-mismatchcitation-style-mixclause-chainclosing-balance-mismatchcomparative-without-baselineconnection-time-shortcontact-variantcount-over-capacitycross-doc-term-variantcumulative-below-currentcurrency-column-mixdangling-figure-referencedangling-participledangling-referencedate-orderdate-outside-perioddate-range-reverseddate-stamp-orderdate-weekday-mismatchdeadline-after-eventdeductible-exceeds-limitdefined-name-repeateddefined-term-formdelivered-over-ordereddemonstrative-opener-rundiscount-rate-mismatchdouble-keigodoubled-worddue-before-issueduplicate-definitionelapsed-years-mismatchexpletive-constructionfact-conflictfigure-reference-orderformula-amount-mismatchgpa-mismatchhiragana-fukushihumble-for-othersidiom-misuseinstallment-total-mismatchinterest-mismatchinterval-count-mismatchlayout-code-mismatchless-for-fewerline-amount-mismatchmax-kanji-continuousmax-tenmeter-usage-mismatchnet-amount-mismatchnet-over-grossno-doubled-joshino-mixed-desumasuno-nakaguro-parallelnominalizationone-sentence-paragraph-runorthographic-variantparty-orderparty-role-namepercent-sum-mismatchperiod-label-conflictperiod-multiple-mismatchperiod-part-exceeds-wholephone-number-variantprerequisite-after-stepproduct-exceeds-maximumproper-noun-densityquantity-range-reversedrange-band-mismatchratio-mismatchreference-flag-mismatchreference-number-repeatedreference-number-variantreference-unit-mismatchrent-multiple-mismatchrepeated-sentence-endingrequest-without-deadlinerequired-listed-as-preferredrevision-direction-mismatchrunning-balance-mismatchsasete-itadakuscaled-quantity-mismatchsentence-initial-conjunction-runserial-range-reversedshare-amount-mismatchspelling-consistencystep-statement-mixstep-time-sum-mismatchsummary-fact-mismatchtable-unit-mixtaigen-dome-in-prosetari-unpairedtax-mismatchtier-threshold-mismatchtime-ordertime-range-reversedtoki-as-conditiontopic-predicate-distancetotal-mismatchui-label-variantundefined-termunlisted-item-usedvariance-mismatchwalk-time-distance-mismatchwarning-without-actionwhich-that-consistencyyori-as-from

literature/poetryPoetry

Poems and verse

npx chaffjs --genre literature/poetry <file>

Reads with the knowledge of this kind of document: verse

Rules this kind is not checked with (199)

ai-generated-compositeall-caps-shoutingbold-label-listcode-fence-language-mixcolon-lead-inconcrete-evidence-densitydefault-value-mismatchdeprecated-option-usedemoji-densityemoji-headingheading-command-missingheading-echohyphen-as-dashmax-paragraph-lengthmax-sentence-lengthmissing-space-after-commangram-repetitionno-em-dashno-leadnumbered-generic-headingparagraph-length-varianceparameter-table-mismatchpreamble-lengthrepeated-sentence-headreturn-type-mismatchrule-of-threesection-length-uniformitysentence-rhythmshell-prompt-mixtitle-lengthundefined-acronymundefined-function-callversion-mismatchversion-orderai-tellannouncing-openerarticle-soundattachment-not-attachedclicheclosing-clichecolloquial-openerconnective-hierarchycontraction-consistencycontrast-framingcushion-phrase-densitydouble-negativeemail-greeting-closingemail-subject-lengthempty-intensifierexcessive-hedgingfigurative-densityhomophone-sliplist-item-form-mixmissing-final-periodnado-closed-listnonstandard-wordnumber-style-consistencyobligation-without-deadlinepadded-introparagraph-restatementperson-consistencyquote-unnamed-speakerquote-without-sourcera-nukiredundant-expressionrepeated-conjunctionrequirement-smellsentence-initial-sostock-transitiontranslationese-densityuncomparable-gradedunknown-wordunqualified-superlativevague-deadlinevague-figure-referencevery-adjectiveweasel-wordwordy-phraseabsolute-exceptionabstract-lengthadverb-overuseadverb-without-negationagentless-passiveagreement-slipamount-range-reversedannounced-count-mismatchannual-holidays-mismatchannual-pay-mismatcharrival-before-departurebackorder-mismatchbaito-keigobmi-mismatchchange-rate-mismatchcitation-reference-mismatchcitation-style-mixclause-chainclosing-balance-mismatchcomparative-without-baselineconnection-time-shortcontact-variantcount-over-capacitycross-doc-term-variantcumulative-below-currentcurrency-column-mixdangling-figure-referencedangling-participledangling-referencedate-orderdate-outside-perioddate-range-reverseddate-stamp-orderdate-weekday-mismatchdeadline-after-eventdeductible-exceeds-limitdefined-name-repeateddefined-term-formdelivered-over-ordereddemonstrative-opener-rundiscount-rate-mismatchdouble-keigodoubled-worddue-before-issueduplicate-definitionelapsed-years-mismatchexpletive-constructionfact-conflictfigure-reference-orderformula-amount-mismatchgpa-mismatchhiragana-fukushihumble-for-othersidiom-misuseinstallment-total-mismatchinterest-mismatchinterval-count-mismatchlayout-code-mismatchless-for-fewerline-amount-mismatchmax-kanji-continuousmax-tenmeter-usage-mismatchnet-amount-mismatchnet-over-grossno-doubled-joshino-mixed-desumasuno-nakaguro-parallelnominalizationone-sentence-paragraph-runorthographic-variantparty-orderparty-role-namepercent-sum-mismatchperiod-label-conflictperiod-multiple-mismatchperiod-part-exceeds-wholephone-number-variantprerequisite-after-stepproduct-exceeds-maximumproper-noun-densityquantity-range-reversedrange-band-mismatchratio-mismatchreference-flag-mismatchreference-number-repeatedreference-number-variantreference-unit-mismatchrent-multiple-mismatchrepeated-sentence-endingrequest-without-deadlinerequired-listed-as-preferredrevision-direction-mismatchrunning-balance-mismatchsasete-itadakuscaled-quantity-mismatchsentence-initial-conjunction-runserial-range-reversedshare-amount-mismatchspelling-consistencystep-statement-mixstep-time-sum-mismatchsummary-fact-mismatchtable-unit-mixtaigen-dome-in-prosetari-unpairedtax-mismatchtier-threshold-mismatchtime-ordertime-range-reversedtoki-as-conditiontopic-predicate-distancetotal-mismatchui-label-variantundefined-termunlisted-item-usedvariance-mismatchwalk-time-distance-mismatchwarning-without-actionwhich-that-consistencyyori-as-from

literature/playPlay and script

Plays and scripts

npx chaffjs --genre literature/play <file>

Reads with the knowledge of this kind of document: play

Rules this kind is not checked with (199)

ai-generated-compositeall-caps-shoutingbold-label-listcode-fence-language-mixcolon-lead-inconcrete-evidence-densitydefault-value-mismatchdeprecated-option-usedemoji-densityemoji-headingheading-command-missingheading-echohyphen-as-dashmax-paragraph-lengthmax-sentence-lengthmissing-space-after-commangram-repetitionno-em-dashno-leadnumbered-generic-headingparagraph-length-varianceparameter-table-mismatchpreamble-lengthrepeated-sentence-headreturn-type-mismatchrule-of-threesection-length-uniformitysentence-rhythmshell-prompt-mixtitle-lengthundefined-acronymundefined-function-callversion-mismatchversion-orderai-tellannouncing-openerarticle-soundattachment-not-attachedclicheclosing-clichecolloquial-openerconnective-hierarchycontraction-consistencycontrast-framingcushion-phrase-densitydouble-negativeemail-greeting-closingemail-subject-lengthempty-intensifierexcessive-hedgingfigurative-densityhomophone-sliplist-item-form-mixmissing-final-periodnado-closed-listnonstandard-wordnumber-style-consistencyobligation-without-deadlinepadded-introparagraph-restatementperson-consistencyquote-unnamed-speakerquote-without-sourcera-nukiredundant-expressionrepeated-conjunctionrequirement-smellsentence-initial-sostock-transitiontranslationese-densityuncomparable-gradedunknown-wordunqualified-superlativevague-deadlinevague-figure-referencevery-adjectiveweasel-wordwordy-phraseabsolute-exceptionabstract-lengthadverb-overuseadverb-without-negationagentless-passiveagreement-slipamount-range-reversedannounced-count-mismatchannual-holidays-mismatchannual-pay-mismatcharrival-before-departurebackorder-mismatchbaito-keigobmi-mismatchchange-rate-mismatchcitation-reference-mismatchcitation-style-mixclause-chainclosing-balance-mismatchcomparative-without-baselineconnection-time-shortcontact-variantcount-over-capacitycross-doc-term-variantcumulative-below-currentcurrency-column-mixdangling-figure-referencedangling-participledangling-referencedate-orderdate-outside-perioddate-range-reverseddate-stamp-orderdate-weekday-mismatchdeadline-after-eventdeductible-exceeds-limitdefined-name-repeateddefined-term-formdelivered-over-ordereddemonstrative-opener-rundiscount-rate-mismatchdouble-keigodoubled-worddue-before-issueduplicate-definitionelapsed-years-mismatchexpletive-constructionfact-conflictfigure-reference-orderformula-amount-mismatchgpa-mismatchhiragana-fukushihumble-for-othersidiom-misuseinstallment-total-mismatchinterest-mismatchinterval-count-mismatchlayout-code-mismatchless-for-fewerline-amount-mismatchmax-kanji-continuousmax-tenmeter-usage-mismatchnet-amount-mismatchnet-over-grossno-doubled-joshino-mixed-desumasuno-nakaguro-parallelnominalizationone-sentence-paragraph-runorthographic-variantparty-orderparty-role-namepercent-sum-mismatchperiod-label-conflictperiod-multiple-mismatchperiod-part-exceeds-wholephone-number-variantprerequisite-after-stepproduct-exceeds-maximumproper-noun-densityquantity-range-reversedrange-band-mismatchratio-mismatchreference-flag-mismatchreference-number-repeatedreference-number-variantreference-unit-mismatchrent-multiple-mismatchrepeated-sentence-endingrequest-without-deadlinerequired-listed-as-preferredrevision-direction-mismatchrunning-balance-mismatchsasete-itadakuscaled-quantity-mismatchsentence-initial-conjunction-runserial-range-reversedshare-amount-mismatchspelling-consistencystep-statement-mixstep-time-sum-mismatchsummary-fact-mismatchtable-unit-mixtaigen-dome-in-prosetari-unpairedtax-mismatchtier-threshold-mismatchtime-ordertime-range-reversedtoki-as-conditiontopic-predicate-distancetotal-mismatchui-label-variantundefined-termunlisted-item-usedvariance-mismatchwalk-time-distance-mismatchwarning-without-actionwhich-that-consistencyyori-as-from

Speech

speech/addressSpeech

Speeches and addresses written to be read aloud

npx chaffjs --genre speech/address <file>

Rules this kind is not checked with (83)

ai-structurecode-fence-language-mixcolon-lead-inconcrete-evidence-densitydefault-value-mismatchdeprecated-option-usedheading-command-missingno-leadnumbered-generic-headingparagraph-length-varianceparameter-table-mismatchpreamble-lengthreturn-type-mismatchrule-of-threesection-length-uniformitysentence-rhythmshell-prompt-mixtitle-lengthundefined-function-callversion-mismatchversion-orderannouncing-openerarticle-soundattachment-not-attachedclicheclosing-clichecolloquial-openerconnective-hierarchycontrast-framingdouble-negativeemail-greeting-closingemail-subject-lengthfigurative-densityhomophone-sliplist-item-form-mixmissing-final-periodnado-closed-listnonstandard-wordnumber-style-consistencynumeral-sentence-startobligation-without-deadlinepadded-introparagraph-restatementquote-unnamed-speakerquote-without-sourcera-nukirequirement-smellsentence-initial-sostock-transitionvague-deadlinevery-adjectiveweasel-wordwordy-phraseabstract-lengthadverb-without-negationagentless-passivebaito-keigocitation-reference-mismatchcitation-style-mixcomparative-without-baselinecontact-variantdangling-participledate-stamp-orderdeadline-after-eventdefined-name-repeateddefined-term-formdue-before-issuefigure-reference-orderless-for-fewerparty-orderparty-role-namephone-number-variantprerequisite-after-stepproper-noun-densityreference-number-variantrequest-without-deadlinestep-statement-mixtoki-as-conditionui-label-variantundefined-termwarning-without-actionwhich-that-consistencyyori-as-from

speech/transcriptTranscript

Verbatim records of what was said (press conferences, parliamentary debates)

npx chaffjs --genre speech/transcript <file>

Rules this kind is not checked with (114)

ai-generated-compositeai-structurebold-label-listcode-fence-language-mixcolon-lead-inconcrete-evidence-densitydefault-value-mismatchdeprecated-option-usedheading-command-missingheading-echomax-paragraph-lengthmax-sentence-lengthngram-repetitionno-leadnumbered-generic-headingparagraph-length-varianceparameter-table-mismatchpreamble-lengthrepeated-sentence-headreturn-type-mismatchrule-of-threesection-length-uniformitysentence-rhythmshell-prompt-mixtitle-lengthundefined-acronymundefined-function-callversion-mismatchversion-orderai-tellannouncing-openerarticle-soundassistant-residueattachment-not-attachedclicheclosing-clichecolloquial-openerconnective-hierarchycontraction-consistencycontrast-framingcushion-phrase-densitydouble-negativeemail-greeting-closingemail-subject-lengthempty-intensifierexcessive-hedgingfigurative-densityhomophone-sliplist-item-form-mixmissing-final-periodnado-closed-listnonstandard-wordnumber-style-consistencynumeral-sentence-startobligation-without-deadlinepadded-introparagraph-restatementperson-consistencyquote-unnamed-speakerquote-without-sourcera-nukirepeated-conjunctionrequirement-smellsentence-initial-sostock-transitionunqualified-superlativevague-deadlinevery-adjectiveweasel-wordwordy-phraseabstract-lengthadverb-overuseadverb-without-negationagentless-passiveagreement-slipbaito-keigocitation-reference-mismatchcitation-style-mixcomparative-without-baselinecontact-variantdangling-participledate-stamp-orderdeadline-after-eventdefined-name-repeateddefined-term-formdouble-keigodoubled-worddue-before-issueexpletive-constructionfigure-reference-orderhiragana-fukushiless-for-fewermax-kanji-continuousno-doubled-joshino-mixed-desumasuno-nakaguro-parallelone-sentence-paragraph-runparty-orderparty-role-namephone-number-variantprerequisite-after-stepproper-noun-densityreference-number-variantrequest-without-deadlinesasete-itadakusentence-initial-conjunction-runstep-statement-mixtaigen-dome-in-prosetoki-as-conditionui-label-variantundefined-termwarning-without-actionwhich-that-consistencyyori-as-from

This page is built from the genre definitions shipped with chaff (genres.yaml)