Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Detect and remove AI writing patterns from academic manuscripts and response-to-reviewers letters. Scans for 27 common AI-generated text patterns and rewrites flagged passages to sound naturally human-written while preserving technical accuracy, bounding how much of the text a rewrite is allowed to touch.
.claude/skills/aperivue-humanize/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 217% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 418% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 262% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 227% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 409% | 0% |
You are assisting a medical researcher in detecting and removing AI writing patterns from academic manuscripts. Your goal: make the text read as if an experienced academic physician wrote it, while preserving every technical claim, number, and citation.
${CLAUDE_SKILL_DIR}/references/ai_patterns.md -- full 27-pattern list with expanded examples for medical/radiology manuscripts (Pattern 19–21 are senior-MA-reviewer red flags; Patterns 25–27 are style/structure tells applying to any prose — typographic, rhythmic and syntactic respectively; Pattern 22–24 are response-to-reviewers letter patterns)references/ai_patterns.md records the grounding per pattern.Always read the pattern reference file at the start of a humanize session.
Read the manuscript section(s) provided by the user and scan for all 27 patterns. For response-to-reviewers letters and cover letters, prioritise patterns 22-24.
For each pattern found:
Output: Pattern Frequency Table
## AI Pattern Scan Report
Section: {section name}
Word count: {N}
| # | Pattern | Count | Severity | Example from text |
|---|---------|-------|----------|-------------------|
| 1 | Significance inflation | 3 | HIGH | "...pivotal role in diagnostic imaging..." |
| 7 | AI vocabulary words | 5 | HIGH | "Additionally,...", "crucial finding..." |
| 8 | Copula avoidance | 2 | MEDIUM | "...serves as the gold standard..." |
| ... | ... | ... | ... | ... |
Patterns not detected: 2, 4, 9, 14, 15
Total AI pattern instances: {N}
AI pattern density: {N per 1000 words}Present findings to the user with actionable summary.
Severity levels:
AI Pattern Score:
Gate: Present the report and ask the user which patterns to fix. Default: fix all HIGH and MEDIUM.
Rewrite flagged passages following these rules:
clinical fact must remain identical.
in a top-tier journal -- not a blog post.
coefficient," "Fleiss' kappa" stay as-is.
(25-35 words). Avoid uniform length. A de-AI pass tends to flatten rhythm — it shortens the long sentences and pads the short ones toward a comfortable middle, which is itself a tell. scripts/check_sentence_variety.py verifies this rule in Phase 4.
prose leans on "X rather than Y", "not X but Y", "X, not Y", or sentence-initial "What … is …" / "It is … that …", apply the negative-form test to each: delete the negative half and rewrite the clause in the positive. If a fact disappears, the contrast was functional — keep it; if nothing disappears, it was decoration — cut it. Judge by the manuscript's overall rate, not instance by instance, and keep two or three for emphasis. Rewrite clefts in plain subject-verb order ("What matters is X" → "X matters"). scripts/check_rhetorical_density.py (in /self-review) measures this in Phase 4. (M2 test adapted from the SNL-UCSB paper-writing skill, MIT.)
Fix strategies per pattern category:
| Category | Strategy | |----------|----------| | Content patterns (1-6) | Delete vague claims; replace with specific data or citations | | Language patterns (7-12) | Substitute with plain academic English; simplify verb constructions | | Style patterns (13-15) | Adjust formatting and punctuation | | Filler and hedging (16-18) | Delete filler; calibrate hedging to match evidence level | | Style/structure density (25-27) | Strip inline emphasis; absorb aphorisms; thin antithesis/cleft per the M2 test |
Output: Present the rewritten text with changes highlighted using diff format or tracked changes.
Keep the pre-rewrite text. Before editing in place, copy the original somewhere the fidelity check can read it (cp manuscript.md /tmp/pre_humanize.md). Without it Phase 4 can only re-scan for patterns — it cannot tell whether the rewrite preserved what it was supposed to preserve.
Run both deterministic checks, then re-scan the rewritten text using the same 27 patterns.
bashpython3 "${CLAUDE_SKILL_DIR}/scripts/check_rewrite_fidelity.py" \ --before /tmp/pre_humanize.md --after manuscript.md \ --out qc/rewrite_fidelity.json --strict python3 "${CLAUDE_SKILL_DIR}/scripts/check_sentence_variety.py" \ --manuscript manuscript.md --out qc/sentence_variety.json
NUMBER_DRIFT or CITATION_DROP means the rewrite broke an invariant — revert that passage and redo it. EDIT_FOOTPRINT_HIGH is advisory: a thorough pass over an inflated draft legitimately rewrites most of the words, so read the diff and confirm the author's argument survived rather than assuming the percentage is a defect.
Output: Verification Report
## Verification Report
| Metric | Before | After |
|--------|--------|-------|
| Total instances | 23 | 4 |
| Density (per 1000 words) | 8.2 | 1.4 |
| HIGH severity patterns | 3 | 0 |
| MEDIUM severity patterns | 5 | 2 |
Remaining issues:
- Pattern 17 (hedging): 2 instances remain -- appropriate for the evidence level.
Verdict: PASS (density < 2.0)If the density remains above 2.0, run another fix-verify cycle (max 3 rounds).
| # | Pattern | What to look for | Fix | |---|---------|------------------|-----| | 1 | Significance inflation | "pivotal," "evolving landscape," "underscores the critical importance" | Delete or state the specific importance with data | | 2 | Notability claims | "landmark trial," "renowned investigators," "groundbreaking" | Remove; let the data speak | | 3 | Superficial -ing analyses | "highlighting the cardioprotective effects," "underscoring the broad applicability" | End the sentence at the data; start a new sentence for interpretation | | 4 | Promotional language | "remarkable findings," "dramatic reductions," "profound impact" | State the actual numbers neutrally | | 5 | Vague attributions | "Studies have shown," "Experts argue," "Several publications" | Cite the specific study | | 6 | Formulaic challenges sections | "Despite challenges... future outlook... continues to provide" | State specific limitations factually |
| # | Pattern | What to look for | Fix | |---|---------|------------------|-----| | 7 | AI vocabulary words | Additionally, crucial, delve, enhance, fostering, pivotal, showcase, tapestry, underscore, landscape (abstract) | Delete or replace with plain English | | 8 | Copula avoidance | "serves as," "stands as," "represents a" | Use "is" | | 9 | Negative parallelisms | "not only X but also Y" | "X and Y" | | 10 | Rule of three overuse | Forcing ideas into groups of three repeatedly | Use natural grouping (2, 4, 5 items) | | 11 | Synonym cycling | patients/participants/subjects/individuals | Pick one term, use consistently | | 12 | False ranges | "from improved renal function to enhanced cardiac outcomes" | List the specific outcomes directly |
| # | Pattern | What to look for | Fix | |---|---------|------------------|-----| | 13 | Em dash overuse | More than 2 em dashes per page | Use parentheses or restructure. After converting — X — appositives to (X), run the paren-span safety scan (/self-review scripts/check_paren_spans.py): a bulk conversion can pair two unrelated dashes across a sentence boundary and wrap a whole sentence (or an ordinal "Sixth, …" limitation) inside one parenthesis — paren-balanced but broken, so a balance check misses it. Operate per-sentence; never match across . | | 14 | Title case in headings | "Statistical Analysis And Primary Endpoints" | Sentence case per journal style | | 15 | Curly quotation marks | Curly quotes from ChatGPT | Straight quotes |
| # | Pattern | What to look for | Fix | |---|---------|------------------|-----| | 16 | Filler phrases | "It is important to note that," "In order to," "Due to the fact that" | Delete the filler; state the content directly | | 17 | Excessive hedging | "may potentially suggest the possibility" | Choose the appropriate certainty level: "suggests" | | 18 | Generic positive conclusions | "The future looks bright," "continues to reshape," "paves the way" | State the specific next step or implication |
| # | Pattern | What to look for | Fix | |---|---------|------------------|-----| | 19 | § (section sign) marker | "as in §2.3", "(see §Discussion)", "§Results" | Delete or replace with section name ("Methods", "Results") — grep -c "§" = 0 | | 20 | Methods/Results self-reference parenthetical | "(Methods §X)", "(Results §3.1)", "(Methods, Section 2.3)" | Drop the parenthetical or shorten to "(see Methods)" | | 21 | AI Disclosure boilerplate (body) | "## Artificial Intelligence Disclosure", "Generative AI was not used to create..." in manuscript body | Remove from body → place in cover letter / submission form only (per ~/.claude/rules/journal-ai-image-policies.md) | | 25 | Inline-emphasis over-use (typographic over-signposting) | Single-word italics (into, passive, same), whole-clause italics (a redesign of the relationship itself), bold used mid-paragraph to signpost | Remove inline emphasis; keep only legitimate italics — statistical symbols (P, t, n), Latin (in vivo, et al.), gene/species (BRCA1). A bold run-in subheading at line start is fine (Nature/npj style) |
Patterns 22-24 apply only when scanning a response-to-reviewers letter or editor cover letter, not manuscript bodies. To avoid drift, they are defined once — with triage detection, the editing-mechanism-vs-analysis distinction, and before/after examples — in ${CLAUDE_SKILL_DIR}/references/ai_patterns.md (Response-Letter Patterns section). For authoring guidance and the full gallery, see the revise skill's references/r2r_voice.md.
When scanning a full manuscript, prioritize these patterns per section:
| Section | Priority Patterns | Reason | |---------|------------------|--------| | Abstract | ALL (1-21, 25) | Most visible section; most scrutinized for AI patterns | | Introduction | 1, 2, 5, 7, 12 | AI inflates background importance and uses vague attributions | | Methods | 8, 16 | Methods should be straightforward; copula avoidance and filler are common | | Results | 3, 4, 6, 10, 11 | AI adds interpretive -ing clauses and promotional language to results | | Discussion | 1, 5, 6, 17, 18 | AI produces formulaic discussions with excessive hedging | | Conclusion | 1, 18 | AI generates generic positive conclusions | | Methods (MA / SR) | 19, 20, 21 | § markers, self-reference parentheticals, AI Disclosure boilerplate are senior-MA-reviewer red flags | | Discussion (MA / SR) | 19, 20 | Self-reference parentheticals especially common when discussing methods | | Body (any) | 21 | AI Disclosure belongs in cover letter / submission form, not manuscript body | | Response to Reviewers / cover letter | 22, 23, 24 (+ 13, 16, 19) | Editing-mechanism narration, internal draft line numbers, and tooling leaks are the dominant tells in machine-drafted rebuttals (see ai_patterns.md R2R section) |
| Calling skill | When this skill is invoked | |---------------|---------------------------| | /write-paper | Phase 7 (Polish) -- automatic scan before submission | | /peer-review | When reviewing one's own manuscript for AI patterns | | /revise | When drafting response-to-reviewers letters and cover letters -- patterns 22-24 are the enforced gate before submission |
When called by another skill, return the verification report so the calling skill can check the pass/fail status.
| Gate | Severity | Trigger | Action on fail | |---|---|---|---| | AI-pattern density target | ADVISORY | density > 2.0 patterns / 1000 words after sweep | warn; surface remaining flagged passages for manual review | | Pattern 13 — paren-span corruption after em-dash conversion | ENFORCED | after a — X — → (X) sweep | run /self-review scripts/check_paren_spans.py --strict; PAREN_SPAN_ORDINAL / PAREN_SPAN_SENTENCE means a conversion wrapped a sentence/ordinal inside parens — fix before finalizing | | Pattern 19 — § symbol | ENFORCED (senior MA reviewer prep) | grep -c "§" manuscript.md > 0 | auto-strip; verify post-rewrite count == 0 | | Pattern 20 — (see Methods §X) self-reference | ENFORCED | match found | rewrite to direct section name reference | | Pattern 21 — AI Disclosure paragraph in body | ENFORCED | "Generative AI was not used..." paragraph in manuscript body | move to cover letter or remove | | Pattern 26 — aphorism density | ENFORCED | negative-definition rate AND short-declarative share both over threshold | run /self-review scripts/check_aphorism_density.py --manuscript manuscript.md; APHORISM_DENSITY (Minor) means the prose is a run of epigrams with the explanatory sentences compressed out — absorb most of them into the neighbouring sentence and write the explanation back, keeping two or three for emphasis; do NOT simply delete them, which shortens the prose further | | Pattern 27 — antithesis / cleft density | ENFORCED | "rather than" / "not X but Y" / "X, not Y" or "What … is …" / "It is … that …" over a per-1000 threshold AND raw-count floor | run /self-review scripts/check_rhetorical_density.py --manuscript manuscript.md; ANTITHESIS_DENSITY / CLEFT_DENSITY (both Minor) mean a run of marked constructions per-instance rules miss — apply the M2 test (delete the negative half; if a fact vanishes it was functional, keep it; if not, cut it), rewrite clefts in plain order, keep two or three. A lone functional "rather than" or "instead of" never fires | | Pattern 25 — inline-emphasis over-use | ENFORCED | italic-emphasis density over threshold after allowlist | run /self-review scripts/check_emphasis_density.py --manuscript manuscript.md; EMPHASIS_OVERUSE (Minor) means strip inline italics (keep only stat symbols / Latin / gene-species); whole-clause italics are the strongest tell | | Patterns 22-24 — R2R editing-mechanism / draft line-number / tooling leak | TRIAGE (response letters); § = 0 hard | detection greps in ai_patterns.md R2R section surface candidates | review each hit (analysis narration, quoted additions, revised-manuscript page/line are NOT tells); rewrite confirmed tells to substantive prose | | Citation preservation invariant | ENFORCED | any pre-existing citation removed by the rewrite | scripts/check_rewrite_fidelity.py --before <pre> --after <post> --strict → CITATION_DROP (Major); revert that single rewrite and flag for the user | | Numerical preservation invariant | ENFORCED | any number changed by the rewrite | same script → NUMBER_DRIFT (Major); revert and flag | | Rewrite footprint | ADVISORY | fraction of word tokens changed exceeds --warn-pct (default 70) | EDIT_FOOTPRINT_HIGH (Minor) — never blocks. Patterns 6 and 18 replace whole paragraphs by design, so a correct pass can exceed 60%. Read the diff; confirm the argument survived, not just the phrasing | | Fix rule 7 — sentence-length uniformity | ADVISORY | prose has no short (≤12 words) or no long (≥25 words) sentences | scripts/check_sentence_variety.py --manuscript <file> → SENTENCE_UNIFORM (Minor); break up or combine sentences until both bands exist. Silent below 15 sentences |
Some passages in this skill cite a path of the form ~/.claude/rules/<name>.md. Those are the maintainer's personal global rules, kept outside this repository. They are not shipped with this skill and will not exist on your machine; they appear only as provenance for where a convention came from. If one of them looks like it is standing in for an instruction you actually need, that is a bug — please open an issue, because the instruction belongs here.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 9,864 | 2,651 | -73% | 1 | 1 | 0% | 1,643 | 5,204 | +217% | 0 | 0 | — |
case-02 | fail→pass | 14,101 | 2,293 | -84% | 1 | 1 | 0% | 1,000 | 5,176 | +418% | 0 | 0 | — |
case-03 | pass→pass | 11,337 | 5,474 | -52% | 1 | 1 | 0% | 2,017 | 5,669 | +181% | 0 | 0 | — |
case-04 | pass→pass | 13,443 | 12,543 | -7% | 1 | 1 | 0% | 2,158 | 6,955 | +222% | 0 | 0 | — |
case-05 | fail→fail | 10,542 | 6,823 | -35% | 1 | 1 | 0% | 1,801 | 6,015 | +234% | 0 | 0 | — |
case-06 | fail→pass | 9,388 | 4,474 | -52% | 1 | 1 | 0% | 1,514 | 5,483 | +262% | 0 | 0 | — |
case-07 | pass→pass | 12,265 | 6,967 | -43% | 1 | 1 | 0% | 1,852 | 5,967 | +222% | 0 | 0 | — |
case-08 | fail→pass | 10,263 | 4,303 | -58% | 1 | 1 | 0% | 1,712 | 5,592 | +227% | 0 | 0 | — |
case-09 | fail→pass | 6,928 | 3,389 | -51% | 1 | 1 | 0% | 1,052 | 5,354 | +409% | 0 | 0 | — |
case-10 | pass→pass | 8,892 | 4,134 | -54% | 1 | 1 | 0% | 1,373 | 5,526 | +302% | 0 | 0 | — |
case-11 | fail→pass | 10,137 | 4,908 | -52% | 1 | 1 | 0% | 1,610 | 5,606 | +248% | 0 | 0 | — |
case-12 | pass→pass | 20,052 | 3,854 | -81% | 1 | 1 | 0% | 3,624 | 5,412 | +49% | 0 | 0 | — |
case-13 | pass→pass | 13,122 | 8,805 | -33% | 1 | 1 | 0% | 2,032 | 6,211 | +206% | 0 | 0 | — |
case-14 | fail→pass | 15,007 | 7,525 | -50% | 1 | 1 | 0% | 2,240 | 5,932 | +165% | 0 | 0 | — |
case-15 | fail→pass | 14,548 | 9,151 | -37% | 1 | 1 | 0% | 2,350 | 6,345 | +170% | 0 | 0 | — |
case-16 | pass→pass | 15,641 | 6,731 | -57% | 1 | 1 | 0% | 2,394 | 5,813 | +143% | 0 | 0 | — |
case-17 | fail→fail | 16,026 | 7,802 | -51% | 1 | 1 | 0% | 2,749 | 5,941 | +116% | 0 | 0 | — |
case-18 | pass→pass | 10,181 | 5,054 | -50% | 1 | 1 | 0% | 1,475 | 5,523 | +274% | 0 | 0 | — |
case-19 | pass→pass | 7,526 | 1,738 | -77% | 1 | 1 | 0% | 1,250 | 5,004 | +300% | 0 | 0 | — |
case-20 | pass→pass | 20,144 | 17,547 | -13% | 1 | 1 | 0% | 3,422 | 7,566 | +121% | 0 | 0 | — |
case-21 | fail→fail | 2,874 | 3,355 | +17% | 1 | 1 | 0% | 435 | 5,262 | +1110% | 0 | 0 | — |
case-22 | fail→fail | 6,822 | 5,531 | -19% | 1 | 1 | 0% | 1,028 | 5,617 | +446% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +36 percentage points is the difference between those two pass rates over the 21 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.