clearfelt-writing · v0.8.0 · runs offline
A score computed in code, not a model's opinion of itself.
Most anti-slop tools hand the model a big prompt and ask you to trust the rewrite. This one parses Markdown rule files and computes a 0 to 100 Human Score in code, so the number is reproducible by anyone who runs the script, on any file, at any time.
Zero dependencies. Node standard library only. No network calls, ever.
Scores and rewrites AI-sounding writing against a sourced rule dictionary. 197 tests, zero dependencies, runs offline.
npx skills add andrei-ionut-nita/clearfelt-writingReal snippets, real scores, computed by detect.mjs
$ node scripts/detect.mjs --mode report yourfile.md
{
"target": "yourfile.md",
"score": 22,
"leadDriver": "Rule-hit deduction (capped from 67) (-65 of the score)",
...
}Real output, from a fresh file in an empty directory, nothing configured first. No setup, no voice profile, no config file.
Five commands
/clearfelt-writing setupBuilds a voice profile and a domain profile through a short interview. Optional, recommended first, re-runnable any time.
/clearfelt-writing auditScores a file or directory, reports every hit with line numbers plus a separate readability report. Never edits anything.
/clearfelt-writing rewriteLoops scrub, re-score and preservation-check until it clears the threshold, then shows a before/after and asks. Two approvals, not one.
/clearfelt-writing writeTurns a seed into a full first draft at a chosen length, through the same scoring and preservation pass. Never overwrites the seed.
/clearfelt-writing explainPrints every resolved config setting and which layer set it, plus voice, domain and hook state, in one place.
Guarantees checked by code, not promised by a prompt
Every rule cites a source.
Each rule carries a source field pointing at real research or named prior art. Claims that could not be traced to a real paper are labelled unresolved and stay off by default rather than counting against your score.
Preservation is diffed.
A locked span that changed, or a missed constraint, always blocks the write. A dropped number, date, proper noun or quote surfaces as a disclosed warning.
Hard limits, actually checked.
--max-chars, --max-words, --must-contain and --must-not-contain are verified against the text it produced, not prompt-instructed and hoped for.
Readability kept separate.
Flesch-Kincaid, Gunning Fog and processing-fluency signals are reported apart from AI-tell scoring, so audience fit and slop detection never blur into one number.
Calibrated to you.
Hand it a sample of your past writing and it measures your own sentence variance, paragraph variance and vocabulary diversity, so scoring compares you to your rhythm, not a generic baseline.
Tested, not just trusted.
197 tests across every script, an eval against a labelled corpus that reports its pass rate honestly including where it falls short, and a lint pass for repo drift.
What it is not for
It helps your own writing sound like you, consistently, across drafts. It is not built or intended to disguise AI-generated text as human-written anywhere an authorship claim carries real weight: an academic submission, a byline, a filing.