Humanizer (Academic): register-aware AI-tell removal
Polish an academic draft so it reads like a careful human author and conforms
to its register's norms. Two modes: English journal articles (en-journal) and
Chinese doctoral dissertations (zh-dissertation).
The analysis kernel is the "Signs of AI writing" taxonomy from
Wikipedia
(WikiProject AI Cleanup), re-gated for academic register: several general-prose
defaults are backwards in a journal or dissertation, so each tell is kept,
calibrated, or disabled rather than applied blindly. The heavy content lives in
references/; this file is the router and the behavioral rules.
In the python command below, <skill-dir> is this skill's base directory,
announced when the skill loads. Substitute that literal path; it is not an
environment variable. The bundled script self-locates, so only the path needs
to resolve.
诚信边界 (behavioral hard rule)
This skill polishes the author's own draft for clarity and for compliance
with academic norms. It is not a detector-evasion tool.
- The legitimate, transferable techniques here — varying cadence, calibrating
hedging, tightening argumentation, enforcing terminology consistency,
protecting citations — apply only to text the author actually wrote or
substantively authored.
- If the request is framed as "rewrite this generated text so it passes Turnitin
/ 知网 AIGC / an AI detector", refuse that framing. Redirect to the
legitimate goal: improving real originality (add real data and citations,
deepen analysis, fix norms). High AIGC rate is treated by many institutions as
academic misconduct; do not position this skill as a way around that.
When to use
- Polish an English journal/conference manuscript or section to remove AI tells
while keeping formal register, hedging, and section-appropriate passive.
- Polish a Chinese 学位论文 (摘要/引言/方法/结果/讨论/结论/致谢) for AI tells and
GB punctuation, terminology unification, and AIGC quantitative self-check.
- Norm-check a draft (
--check-only) and report mechanical tells without rewriting.
When NOT to use
- Generic / non-academic prose (blog posts, essays, marketing). This skill's
defaults are tuned for academic register; for general "make it sound human" use
an upstream generic humanizer, not this one.
- Paper intake, reading, synthesis, or literature review (skim, deep-read,
card, compare, gap map, review outline, normalize a DOI/arXiv source). That is
paper-workbench, not this skill. This skill edits language; paper-workbench
analyzes content.
- Implementing a paper's method into code. Out of scope.
Routing
1. Target (which norm pack)
- If
--target is given, use it.
- Otherwise infer from the text's CJK ratio: a high count of CJK characters
(roughly > 2% of characters, like
infer_language in
paper-workbench/scripts/normalize_paper.py) means zh-dissertation; otherwise
en-journal.
- If the language is genuinely ambiguous (mixed-language, very short), use
AskUserQuestion to pick en-journal vs zh-dissertation. Do not guess silently.
2. Section (which gates)
- Infer the section from headings or structure: abstract, introduction, methods,
results, discussion, conclusion.
--section overrides.
- Section drives the calibrated tells (most importantly passive voice: keep in
Methods, may activate in Discussion). If undeterminable, treat as "general
academic body".
Core loop
- Classify. Read the input. Resolve target and section (Routing above).
Identify each AI tell using
references/ai-tells-academic.md, applying its
keep / calibrate / disable gate — do not apply general-prose defaults blindly.
- Load the norm pack. Read
references/en-journal.md or
references/zh-dissertation.md for the active target. It decides per-section
behavior and adds register-specific norms.
- Register-aware draft. Rewrite to remove the tells while obeying the norm
pack. Cover everything the original covers (same number of paragraphs/claims).
Calibrate hedging (do not delete it), keep section-appropriate passive, unify
terminology, fix ghost citations by supplying real
(author, year) / [n] or
lowering claim strength, replace hollow generalities with specific
data/method/citation, and vary sentence cadence.
- Mechanical lint. Run the script (below) for the quantifiable tells the model
tends to miss (dash/quote characters, sentence-length and burstiness stats,
"首先/综上" comma-clauses, optional terminology variants). The script is a
copilot: it gives coordinates; it does not rewrite.
- "Still-AI" audit. Ask: what still reads as AI-generated here? List the
remaining tells briefly (uniform cadence, residual ghost citations, templated
paragraphs, over-stacked hedges).
- Final. Revise to address the audit and the lint hits. In
zh-dissertation,
conform punctuation to GB and keep full-text terminology consistent; in
en-journal, keep tense and citation style consistent per the norm pack.
Mechanical check
Run the linter for quantifiable tells (planned entry; if the script is not yet
present, do the mechanical scan by hand from the same checklist):
python "<skill-dir>/scripts/polish_lint.py" \
--target "<en-journal|zh-dissertation>" \
--file "<path-or-omit-to-read-stdin>" \
--json
The linter reports surface tells (em/en dash, curly quotes, AI high-frequency
words, Chinese "几字+逗号" short clauses), cadence stats (sentence count, mean
length, burstiness, over-long ratio with the zh > 28 字 threshold), and optional
terminology variants when a --glossary is supplied. It is a reporter (exit code
always 0); the rewrite stays with the model, guided by references/.
Output contract
Deliver, in order:
- Draft rewrite — register-correct, all covered content preserved.
- "Still-AI" audit — brief bullets of remaining tells.
- Final rewrite — addresses the audit and the lint hits.
- Change summary — what was changed and why (and, optionally, the lint report).
For --check-only, skip the rewrite: return the lint report plus a short list of
the tells found, by gate, with no edited text.
References
references/ai-tells-academic.md — the re-gated 33-pattern kernel (keep /
calibrate / disable) plus 5 new academic-specific tells, with academic before/after.
references/en-journal.md — English journal norm pack (register, hedging,
section-gated passive, IMRaD/CARS, tense, citation styles, dash/comma, spelling).
references/zh-dissertation.md — Chinese dissertation norm pack (语体, 术语统一,
GB/T 15834 标点, GB/T 15835 数字, 法定计量单位, 摘要/结论/标题/致谢, AIGC 量化特征).
Attribution
The pattern taxonomy is from
Wikipedia: Signs of AI writing,
maintained by WikiProject AI Cleanup. This skill (MIT) re-gates that taxonomy for
academic register and adds two norm packs and a mechanical linter.
1---2name: humanizer-paper3description: Register-aware academic language polisher for English journal articles and Chinese doctoral dissertations: removes AI-writing tells while keeping academic norms. Use whenever the user wants to polish, 降AI味, 润色, or norm-check an academic draft, paper section, abstract, or 学位论文 paragraph. Polishes the author's own drafts only — not for laundering generated text past Turnitin or 知网 AIGC detection.4license: MIT5---67# Humanizer (Academic): register-aware AI-tell removal89Polish an academic draft so it reads like a careful human author **and** conforms10to its register's norms. Two modes: English journal articles (`en-journal`) and11Chinese doctoral dissertations (`zh-dissertation`).1213The analysis kernel is the "Signs of AI writing" taxonomy from14[Wikipedia](https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing)15(WikiProject AI Cleanup), **re-gated** for academic register: several general-prose16defaults are backwards in a journal or dissertation, so each tell is kept,17calibrated, or disabled rather than applied blindly. The heavy content lives in18`references/`; this file is the router and the behavioral rules.1920> In the `python` command below, `<skill-dir>` is this skill's base directory,21> announced when the skill loads. Substitute that literal path; it is not an22> environment variable. The bundled script self-locates, so only the path needs23> to resolve.2425## 诚信边界 (behavioral hard rule)2627This skill polishes **the author's own draft** for clarity and for compliance28with academic norms. It is **not** a detector-evasion tool.2930- The legitimate, transferable techniques here — varying cadence, calibrating31 hedging, tightening argumentation, enforcing terminology consistency,32 protecting citations — apply only to text the author actually wrote or33 substantively authored.34- If the request is framed as "rewrite this generated text so it passes Turnitin35 / 知网 AIGC / an AI detector", **refuse that framing**. Redirect to the36 legitimate goal: improving real originality (add real data and citations,37 deepen analysis, fix norms). High AIGC rate is treated by many institutions as38 academic misconduct; do not position this skill as a way around that.3940## When to use4142- Polish an English journal/conference manuscript or section to remove AI tells43 while keeping formal register, hedging, and section-appropriate passive.44- Polish a Chinese 学位论文 (摘要/引言/方法/结果/讨论/结论/致谢) for AI tells **and**45 GB punctuation, terminology unification, and AIGC quantitative self-check.46- Norm-check a draft (`--check-only`) and report mechanical tells without rewriting.4748## When NOT to use4950- **Generic / non-academic prose** (blog posts, essays, marketing). This skill's51 defaults are tuned for academic register; for general "make it sound human" use52 an upstream generic humanizer, not this one.53- **Paper intake, reading, synthesis, or literature review** (skim, deep-read,54 card, compare, gap map, review outline, normalize a DOI/arXiv source). That is55 `paper-workbench`, not this skill. This skill edits _language_; `paper-workbench`56 analyzes _content_.57- **Implementing a paper's method into code.** Out of scope.5859## Routing6061### 1. Target (which norm pack)6263- If `--target` is given, use it.64- Otherwise infer from the text's CJK ratio: a high count of CJK characters65 (roughly > 2% of characters, like `infer_language` in66 `paper-workbench/scripts/normalize_paper.py`) means `zh-dissertation`; otherwise67 `en-journal`.68- If the language is genuinely ambiguous (mixed-language, very short), use69 `AskUserQuestion` to pick `en-journal` vs `zh-dissertation`. Do not guess silently.7071### 2. Section (which gates)7273- Infer the section from headings or structure: abstract, introduction, methods,74 results, discussion, conclusion. `--section` overrides.75- Section drives the calibrated tells (most importantly passive voice: keep in76 Methods, may activate in Discussion). If undeterminable, treat as "general77 academic body".7879## Core loop80811. **Classify.** Read the input. Resolve target and section (Routing above).82 Identify each AI tell using `references/ai-tells-academic.md`, applying its83 keep / calibrate / disable gate — do **not** apply general-prose defaults blindly.842. **Load the norm pack.** Read `references/en-journal.md` or85 `references/zh-dissertation.md` for the active target. It decides per-section86 behavior and adds register-specific norms.873. **Register-aware draft.** Rewrite to remove the tells while obeying the norm88 pack. Cover everything the original covers (same number of paragraphs/claims).89 Calibrate hedging (do not delete it), keep section-appropriate passive, unify90 terminology, fix ghost citations by supplying real `(author, year)` / `[n]` or91 lowering claim strength, replace hollow generalities with specific92 data/method/citation, and vary sentence cadence.934. **Mechanical lint.** Run the script (below) for the quantifiable tells the model94 tends to miss (dash/quote characters, sentence-length and burstiness stats,95 "首先/综上" comma-clauses, optional terminology variants). The script is a96 copilot: it gives coordinates; it does **not** rewrite.975. **"Still-AI" audit.** Ask: _what still reads as AI-generated here?_ List the98 remaining tells briefly (uniform cadence, residual ghost citations, templated99 paragraphs, over-stacked hedges).1006. **Final.** Revise to address the audit and the lint hits. In `zh-dissertation`,101 conform punctuation to GB and keep full-text terminology consistent; in102 `en-journal`, keep tense and citation style consistent per the norm pack.103104## Mechanical check105106Run the linter for quantifiable tells (planned entry; if the script is not yet107present, do the mechanical scan by hand from the same checklist):108109```bash110python "<skill-dir>/scripts/polish_lint.py" \111 --target "<en-journal|zh-dissertation>" \112 --file "<path-or-omit-to-read-stdin>" \113 --json114```115116The linter reports surface tells (em/en dash, curly quotes, AI high-frequency117words, Chinese "几字+逗号" short clauses), cadence stats (sentence count, mean118length, burstiness, over-long ratio with the zh > 28 字 threshold), and optional119terminology variants when a `--glossary` is supplied. It is a reporter (exit code120always 0); the rewrite stays with the model, guided by `references/`.121122## Output contract123124Deliver, in order:1251261. **Draft rewrite** — register-correct, all covered content preserved.1272. **"Still-AI" audit** — brief bullets of remaining tells.1283. **Final rewrite** — addresses the audit and the lint hits.1294. **Change summary** — what was changed and why (and, optionally, the lint report).130131For `--check-only`, skip the rewrite: return the lint report plus a short list of132the tells found, by gate, with no edited text.133134## References135136- `references/ai-tells-academic.md` — the re-gated 33-pattern kernel (keep /137 calibrate / disable) plus 5 new academic-specific tells, with academic before/after.138- `references/en-journal.md` — English journal norm pack (register, hedging,139 section-gated passive, IMRaD/CARS, tense, citation styles, dash/comma, spelling).140- `references/zh-dissertation.md` — Chinese dissertation norm pack (语体, 术语统一,141 GB/T 15834 标点, GB/T 15835 数字, 法定计量单位, 摘要/结论/标题/致谢, AIGC 量化特征).142143## Attribution144145The pattern taxonomy is from146[Wikipedia: Signs of AI writing](https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing),147maintained by WikiProject AI Cleanup. This skill (MIT) re-gates that taxonomy for148academic register and adds two norm packs and a mechanical linter.