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
pythoncommand 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.
Integrity boundary (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 / CNKI 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 thesis (abstract/introduction/methods/results/discussion/conclusion/acknowledgements) 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-workbenchanalyzes content. - Implementing a paper's method into code. Out of scope.
Routing
1. Target (which norm pack)
- If
--targetis given, use it. - Otherwise infer from the text's CJK ratio: a high count of CJK characters
(roughly > 2% of characters, like
infer_languageinpaper-workbench/scripts/normalize_paper.py) meanszh-dissertation; otherwiseen-journal. - If the language is genuinely ambiguous (mixed-language, very short), use
AskUserQuestionto picken-journalvszh-dissertation. Do not guess silently.
2. Section (which gates)
- Infer the section from headings or structure: abstract, introduction, methods,
results, discussion, conclusion.
--sectionoverrides. - 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.mdorreferences/zh-dissertation.mdfor 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; inen-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 "a few characters + comma" short clauses), cadence stats (sentence count, mean length, burstiness, over-long ratio with the zh > 28 character 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 (register, terminology consistency, GB/T 15834 punctuation, GB/T 15835 numerals, legal units of measurement, abstract/conclusion/title/acknowledgements, AIGC quantitative features).
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.