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.
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.
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.
READMEs and documentation for developers
npx chaffjs --genre technical/readme <file>
This genre turns no rule off.
Technical articles; the genre used when none is set
npx chaffjs --genre blog/tech <file>
Personal essays posted on a blog
npx chaffjs --genre blog/essay <file>
Articles an organisation publishes for its readers
npx chaffjs --genre blog/owned-media <file>
Proposals, plans and pitches
npx chaffjs --genre business/proposal <file>
Reports, white papers and internal documents
npx chaffjs --genre business/report <file>
Work email and letters
npx chaffjs --genre business/email <file>
Press releases and public notices
npx chaffjs --genre business/press-release <file>
Minutes and meeting notes
npx chaffjs --genre business/meeting-notes <file>
bold-label-listconcrete-evidence-densitylist-item-form-mixagentless-passive
Contracts, terms of service and privacy policies
npx chaffjs --genre legal/contract <file>
ai-generated-compositeai-structureall-caps-shoutingbold-label-listcode-fence-language-mixcolon-lead-inconcrete-evidence-densitydefault-value-mismatchdeprecated-option-usedemoji-headingheading-command-missingheading-echomax-sentence-lengthngram-repetitionno-leadparagraph-length-varianceparameter-table-mismatchpreamble-lengthrepeated-sentence-headreturn-type-mismatchrule-of-threesection-length-uniformitysentence-rhythmshell-prompt-mixtitle-lengthundefined-function-callversion-mismatchversion-orderai-tellannouncing-openerattachment-not-attachedclosing-clichecontrast-framingcushion-phrase-densitydouble-negativeemail-greeting-closingemail-subject-lengthexcessive-hedginglist-item-form-mixnumber-style-consistencypadded-introparagraph-restatementquote-unnamed-speakerquote-without-sourcesentence-initial-sostock-transitionunqualified-superlativeweasel-wordwordy-phraseabstract-lengthadverb-overuseagentless-passivecitation-reference-mismatchcitation-style-mixdeadline-after-eventexpletive-constructionfigure-reference-ordermax-kanji-continuousmax-tenno-doubled-joshinominalizationone-sentence-paragraph-runprerequisite-after-stepproper-noun-densityrepeated-sentence-endingrequest-without-deadlinesasete-itadakustep-statement-mixtaigen-dome-in-proseui-label-variantwarning-without-action
Statutes, regulations and internal rules
npx chaffjs --genre legal/statute <file>
Reads with the knowledge of this kind of document: statute
ai-generated-compositeai-structureall-caps-shoutingbold-label-listcode-fence-language-mixcolon-lead-inconcrete-evidence-densitydefault-value-mismatchdeprecated-option-usedemoji-headingheading-command-missingheading-echomax-sentence-lengthngram-repetitionno-leadparagraph-length-varianceparameter-table-mismatchpreamble-lengthrepeated-sentence-headreturn-type-mismatchrule-of-threesection-length-uniformitysentence-rhythmshell-prompt-mixtitle-lengthundefined-function-callversion-mismatchversion-orderai-tellannouncing-openerattachment-not-attachedclosing-clichecontrast-framingcushion-phrase-densitydouble-negativeemail-greeting-closingemail-subject-lengthexcessive-hedginglist-item-form-mixnumber-style-consistencyobligation-without-deadlinepadded-introparagraph-restatementquote-unnamed-speakerquote-without-sourcerequirement-smellsentence-initial-sostock-transitionunqualified-superlativevague-deadlineweasel-wordwordy-phraseabstract-lengthadverb-overuseagentless-passivecitation-reference-mismatchcitation-style-mixdeadline-after-eventdue-before-issueexpletive-constructionfigure-reference-ordermax-kanji-continuousmax-tenno-doubled-joshinominalizationone-sentence-paragraph-runparty-orderparty-role-nameprerequisite-after-stepproper-noun-densityrepeated-sentence-endingrequest-without-deadlinesasete-itadakustep-statement-mixtaigen-dome-in-proseui-label-variantundefined-termwarning-without-action
Court judgments and opinions
npx chaffjs --genre legal/judgment <file>
ai-generated-compositeai-structureall-caps-shoutingbold-label-listcode-fence-language-mixcolon-lead-inconcrete-evidence-densitydefault-value-mismatchdeprecated-option-usedemoji-headingheading-command-missingheading-echomax-sentence-lengthngram-repetitionno-leadparagraph-length-varianceparameter-table-mismatchpreamble-lengthrepeated-sentence-headreturn-type-mismatchrule-of-threesection-length-uniformitysentence-rhythmshell-prompt-mixtitle-lengthundefined-function-callversion-mismatchversion-orderai-tellannouncing-openerattachment-not-attachedclosing-clichecontrast-framingcushion-phrase-densitydouble-negativeemail-greeting-closingemail-subject-lengthexcessive-hedginglist-item-form-mixnumber-style-consistencyobligation-without-deadlinepadded-introparagraph-restatementquote-unnamed-speakerquote-without-sourcerequirement-smellsentence-initial-sostock-transitionunqualified-superlativevague-deadlineweasel-wordwordy-phraseabstract-lengthadverb-overuseagentless-passivecitation-reference-mismatchcitation-style-mixdeadline-after-eventdue-before-issueexpletive-constructionfigure-reference-ordermax-kanji-continuousmax-tenno-doubled-joshinominalizationone-sentence-paragraph-runparty-orderprerequisite-after-stepproper-noun-densityrepeated-sentence-endingrequest-without-deadlinesasete-itadakustep-statement-mixtaigen-dome-in-proseui-label-variantundefined-termwarning-without-action
Patent specifications and claims
npx chaffjs --genre legal/patent <file>
ai-generated-compositeai-structureall-caps-shoutingbold-label-listcode-fence-language-mixcolon-lead-inconcrete-evidence-densitydefault-value-mismatchdeprecated-option-usedemoji-headingheading-command-missingheading-echomax-sentence-lengthngram-repetitionno-leadparagraph-length-varianceparameter-table-mismatchpreamble-lengthrepeated-sentence-headreturn-type-mismatchrule-of-threesection-length-uniformitysentence-rhythmshell-prompt-mixtitle-lengthundefined-function-callversion-mismatchversion-orderai-tellannouncing-openerattachment-not-attachedclosing-clichecontrast-framingcushion-phrase-densitydouble-negativeemail-greeting-closingemail-subject-lengthexcessive-hedginglist-item-form-mixnonstandard-wordnumber-style-consistencyobligation-without-deadlinepadded-introparagraph-restatementquote-unnamed-speakerquote-without-sourcerequirement-smellsentence-initial-sostock-transitionunqualified-superlativevague-deadlineweasel-wordwordy-phraseabstract-lengthadverb-overuseagentless-passivecitation-reference-mismatchcitation-style-mixdeadline-after-eventdue-before-issueexpletive-constructionfigure-reference-ordermax-kanji-continuousmax-tenno-doubled-joshinominalizationone-sentence-paragraph-runparty-orderprerequisite-after-stepproper-noun-densityrepeated-sentence-endingrequest-without-deadlinesasete-itadakustep-statement-mixtaigen-dome-in-proseui-label-variantundefined-termwarning-without-action
User guides, how-to pages and help
npx chaffjs --genre docs/manual <file>
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
Pages of questions and answers
npx chaffjs --genre docs/faq <file>
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
Lists of terms and what they mean
npx chaffjs --genre docs/glossary <file>
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
Papers and abstracts
npx chaffjs --genre academic/paper <file>
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
Novels and stories
npx chaffjs --genre literature/fiction <file>
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
Literary essays; a blog essay is blog/essay
npx chaffjs --genre literature/essay <file>
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
Poems and verse
npx chaffjs --genre literature/poetry <file>
Reads with the knowledge of this kind of document: verse
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
Plays and scripts
npx chaffjs --genre literature/play <file>
Reads with the knowledge of this kind of document: play
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
Speeches and addresses written to be read aloud
npx chaffjs --genre speech/address <file>
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
Verbatim records of what was said (press conferences, parliamentary debates)
npx chaffjs --genre speech/transcript <file>
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)