From 6ba6f1709671d1c1e017ef141b54dec90eb66218 Mon Sep 17 00:00:00 2001 From: Raymond Ware Date: Fri, 23 Oct 2026 10:23:28 -0700 Subject: [PATCH 1/2] fix(detector): catch "don't just X, they Y" frames The not-just rule only matched the literal word "not", so "leaders don't just manage teams, but inspire them" slipped through. Match n't contractions, and add the comma form where a pronoun replaces "but". --- tests/test_prose_fingerprints.py | 3 +++ tools/prose_fingerprints.py | 12 +++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/tests/test_prose_fingerprints.py b/tests/test_prose_fingerprints.py index 3a13cfb..432636d 100644 --- a/tests/test_prose_fingerprints.py +++ b/tests/test_prose_fingerprints.py @@ -40,6 +40,9 @@ def test_detects_contracted_and_comma_spliced_frames(self): "It isn't a tool, it's a mindset.", "This was never about money. It was about respect.", "We don't need more speed. We need impact.", + "Great leaders don't just manage teams, but inspire them.", + "Great leaders don\u2019t just manage teams, they inspire them.", + "The tool doesn't only format code; it rewrites it.", ] for text in cases: with self.subTest(text=text): diff --git a/tools/prose_fingerprints.py b/tools/prose_fingerprints.py index 2de239a..6920321 100644 --- a/tools/prose_fingerprints.py +++ b/tools/prose_fingerprints.py @@ -33,7 +33,17 @@ class Finding: ( "not_just_but", re.compile( - r"\bnot\s+(?:just|only|merely)\b[^.!?;]{0,160}\bbut(?:\s+also)?\b[^.!?]{0,160}", + rf"(?:\bnot|n{_APOS}t)\s+(?:just|only|merely)\b[^.!?;]{{0,160}}\bbut(?:\s+also)?\b[^.!?]{{0,160}}", + re.IGNORECASE, + ), + ), + ( + # "Great leaders don't just manage teams, they inspire them." Same move as + # "not just X, but Y" with the "but" dropped and a pronoun restarting the clause. + "dont_just_comma_claim", + re.compile( + rf"\b(?:do|does|did)n{_APOS}t\s+(?:just|only|merely)\s+\w+[^.!?;]{{0,120}}?" + r"[,;]\s*(?:they|we|you|it|he|she|i)\s+\w+[^.!?]{0,140}", re.IGNORECASE, ), ), From 3c49d0960a451b51b7214fee02412e6830258c49 Mon Sep 17 00:00:00 2001 From: Raymond Ware Date: Fri, 23 Oct 2026 10:23:28 -0700 Subject: [PATCH 2/2] docs(readme): lead with an outcome, install, and before/after demo Replace the mechanism-first intro with a one-line promise, the install commands, a flagged before paragraph, and a rewrite. The after text is a placeholder until it is swapped for real /scribe:revise output. --- README.md | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 82ff039..9059277 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,38 @@ # Scribe -A Claude Code plugin that catches AI-default writing patterns before they ship. +**Make AI-assisted drafts sound like you wrote them.** -Scribe routes every draft through a persona system, picks a varied subset of anti-patterns per run (so two runs never produce the same critique), scores prose on a 0-100 sameness scale, and fixes voice, rhythm, vocabulary, structure, and rhetoric before the book goes to print. +Scribe is a Claude Code plugin for authors, essayists, and editors. It finds the patterns readers recognize as AI prose and rewrites them in a voice that fits your book. -Built for longform authors, essayists, ghostwriters, and editors. Runs a team of specialist agents that plan, draft, edit, and review collaboratively. +``` +/plugin marketplace add raymondware/kern +/plugin install scribe@raymondware +/scribe:revise +``` + +Paste a passage after `/scribe:revise`. Scribe returns the rewrite, a diff, and a 0-100 sameness score. + +### Before + +> In today's fast-paced world, leadership isn't about authority; it's about influence. Great leaders don't just manage teams, but inspire them. By leveraging empathy, clarity, and vision, they unlock the full potential of their organizations. It's important to note that this is not a destination. It is a mindset. + +| Flagged | Pattern | +|---|---| +| "In today's fast-paced world" | `in-todays-fast-paced-world` | +| "isn't about authority; it's about influence" | `negative-positive-restatement` | +| "don't just manage teams, but inspire them" | `not-just-x-but-y-reflex` | +| "empathy, clarity, and vision" | `tricolon-reflex` | +| "leveraging", "unlock the full potential" | `marketing-verb` | +| "It's important to note that" | `its-worth-noting-throat-clearing` | +| "not a destination. It is a mindset." | `negative-positive-restatement` | + +### After + + + +> Teams follow the manager who listens before deciding. She asks what is blocking the work, says plainly which goal matters this quarter, and then lets people do it. + +**18 agents · 31 anti-patterns · 5 writer personas · a different critique subset every run** ## The Problem