Try it
Type or paste prose. Default and NLP rules run in your browser with no network call.
Click a highlighted span to inspect it. Click an issue to jump back to the exact range.
Default rules. Full NLP pack.
Fast path
- no-em-dash Rejects em dashes, with options for en dashes and double hyphens.
tight, not bloated — direct - no-weasel-words Catches reinforcement adverbs like actually, truly, really, and literally.
Shipping faircopy actually changes how you write. - no-rhetorical-scaffolding Flags X is Y, not Z constructions and Without X / With X setups.
Without faircopy... With faircopy...
These rules began as personal feedback. faircopy turns them into enforceable checks that agents must satisfy.
NLP pack
- no-filter-words Removes framing phrases like I think, basically, and in order to.
I think the launch page was delayed. - no-passive-voice Warns when passive constructions hide the actor.
The page was approved. - no-weak-modals Flags hedged modal claims like can help and might improve.
It can help teams unlock outcomes. - no-stacked-adjectives Finds adjective piles before a noun so the copy keeps one earned descriptor.
adaptive intelligent workflow engine - no-nominalized-phrases Warns on X of Y phrases that bury an action inside a noun.
optimization of onboarding
Add @faircopy/rules-nlp when you want semantic checks in the browser or CLI. Version 1.4.0 adds weak modals, stacked adjectives, and nominalized phrases.
How it works
CLI and libraries
Install what you need. The core engine, default rules, NLP rules, and adapters install separately so your projects stay lean.
Framework adapters
@faircopy/astro, @faircopy/react, and @faircopy/solid parse JSX or Astro components, extract strings and prose attributes, and report exact locations with source maps.
Claude Code plugin
The Stop hook watches every turn. Lint errors halt the response and require the agent to revise its output. Agents learn your standards through repetition.
Browser NLP
The optional @faircopy/rules-nlp pack uses lightweight POS tagging to catch filter phrases, passive voice, weak modals, stacked adjectives, and nominalized phrases in both the CLI and the in-browser demo.
Custom rules welcome
Every built-in rule is a pure function that returns diagnostics. Add your own without touching plugin internals.
Built for the patterns agents repeat
Agents default to certain habits on landing pages. faircopy flags them immediately, from simple regex tells to NLP-backed semantic patterns, and demands cleaner alternatives. The result reads with more authority and requires less human editing.
Same idea as impeccable.style, applied to copy instead of frontend design systems.
Get started
npm install -D faircopy @faircopy/rules-nlp
npx faircopy init
Add the Claude Code plugin. Point it at your landing pages.
The harness runs from that moment forward.
All packages live at version 1.4.0. Open source under MIT. Provenance verified. Regex rules stay fast. NLP rules stay optional.
GitHub → · Rules reference · Adapters · Plugin