{"id":"academic-humanizer","name":"academic-humanizer","summary":"英語または中国語の学術散文を草稿、監査、または最小限に改訂し、定型的で空虚、機械的に繰り返し、またはプロセスの漏れを生む言語を減らしつつ、主張、証拠の強さ、論理的関係、原稿全体の用語の同一性、文書レベルのパターンの変異を保持する。","body":"# Academic Humanizer\n\nImprove academic prose by removing observable writing defects, not by imitating\nimperfection or optimizing an authorship detector. Preserve the author's facts,\nargument, uncertainty, and disciplinary voice. This skill does not guarantee how\nany reader or detector will classify a text.\n\n## Portability\n\nThis skill is agent-agnostic. Its core behavior is defined by `SKILL.md` and\n`references/`; Python is optional and supports reproducible diagnostics.\n\n- Resolve `<skill-dir>` from the directory containing this `SKILL.md`.\n- Let `<python>` mean an available Python 3 launcher, such as `python3`, `py -3`,\n  or `python`.\n- Let `<input-file>` mean a user-authorized local text file. Quote paths that\n  contain spaces and use the host shell's path separator.\n- Do not assume a fixed skill root, home directory, shell, operating system,\n  agent name, or path separator.\n- `agents/openai.yaml` is optional interface metadata. Core behavior does not\n  depend on a particular agent runtime.\n- If Python is unavailable, skip the scripts and apply the same contracts\n  directly.\n\n## Load the operating references\n\nRead these before drafting or editing:\n\n1. [Semantic contract](references/semantic-contract.md) for claim preservation,\n   locked spans, deletion safety, and the internal claim ledger.\n2. [Terminology contract](references/terminology-contract.md) for canonical terms,\n   declared aliases, coined names, intentional distinctions, and the internal\n   terminology ledger. Always load it for multi-span or manuscript-level work.\n3. [Global pattern contract](references/global-pattern-contract.md) for the\n   local-to-document audit, distribution map, scope limits, and whole-document\n   repair. Always load it for multi-sentence work.\n4. [Academic whitelist](references/whitelist-academic.md) for protected scholarly\n   forms in both languages.\n5. [Contrast logic](references/contrast-logic.md) for false-opposition triage in\n   English and Chinese. Always load it; this is a cross-language semantic rule.\n6. Route once by the majority language of editable prose, then read exactly one:\n   [English rules](references/rules-en.md) or\n   [Chinese rules](references/rules-zh.md).\n\nRead [worked examples](references/examples.md) on first use, after changing a\nrule, or whenever fact preservation, contrast, or over-correction is uncertain.\nRead [metrics specification](references/metrics-spec.md) before running\n`scripts/metrics.py`; its output is descriptive evidence only.\n\n## Supported operations\n\n- **generate**: draft from user-supplied claims, outline, data, and sources.\n- **detect**: identify high-confidence defects without rewriting.\n- **rewrite**: minimally revise supplied prose; this is the default when the user\n  asks to de-AI or humanize text.\n- **edit**: apply the same minimal revisions to a named file.\n\nDo not create another routing tree for paper section or discipline. Methods,\nResults, Discussion, reviewer responses, and grants use the same contracts; the\nwhitelist handles legitimate register differences. Ask one direct question only\nwhen the requested genre changes what counts as acceptable and context does not\nresolve it.\n\n## Language route\n\nRoute on editable prose, excluding fenced code, formulas, block quotations, and\na trailing reference list. Use orthographic tokens: each CJK character is one\ntoken and each contiguous Latin word is one token. This keeps embedded terms such\nas `Transformer` or `ImageNet` from outweighing the Chinese sentence around them:\n\n`r = CJK tokens / (CJK tokens + Latin word tokens)`\n\n- `r >= 0.5`: Chinese branch.\n- `r < 0.5`: English branch.\n- No countable prose: stop and ask for text or an intended output language.\n\nEnglish terms in Chinese prose and Chinese terms in English prose remain\nverbatim. If Python is available and the route is genuinely unclear, optionally\nrun `<python> \"<skill-dir>/scripts/metrics.py\" \"<input-file>\" --route`.\nRouting is internal and never appears in the clean artifact.\n\n## Single arbitration order\n\nEarlier rows win. References may elaborate this table but must not define a\nsecond priority order.\n\n| Priority | Constraint | Operational meaning |\n|---|---|---|\n| **C0** | Artifact boundary | Process instructions, editor narration, and tool residue never enter the artifact. C0 applies only to process-layer text; it never authorizes deletion of real content. |\n| **C1** | Semantic fidelity | Every output claim maps to the source bundle; every material source claim remains represented. No added facts, relations, examples, citations, motivations, or limitations. |\n| **C2** | Locked-span protection | Quotations, formulas, code, references, citation keys, statistical notation, proper nouns, and requested verbatim text remain unchanged. |\n| **C3** | Terminology identity | One scientific concept uses one canonical term across the editable manuscript. Preserve declared full-name/abbreviation pairs, necessary grammatical forms, and intentional distinctions; never infer identity from similarity alone. |\n| **C4** | Academic register | Preserve functional hedging, passive voice, nominalization, discourse markers, and Chinese scholarly morphology. |\n| **C5** | Argument structure | Preserve causal strength, contrast, concession, addition, chronology, scope, and paragraph-level reasoning. Surface connectives may change when the relation survives. |\n| **C6** | Document patterning | Audit recurrence, clustering, dispersion, positional regularity, sentence rhythm, and rhetorical-function saturation across the complete editable scope. A count is evidence, never a verdict. |\n| **C7** | Local style repair | Apply language-specific rules only to locally unsupported, vacuous, mechanical, or stacked defects. |\n\nExamples of conflict resolution:\n\n- A style rule suggests adding a number, mechanism, baseline, or limitation that\n  is absent from the source: C1 blocks the addition.\n- A leak and a result share one sentence: C0 removes only the process phrase;\n  C1 and C5 preserve the result and its relation to adjacent sentences.\n- A coined method name drifts across the abstract, body, and caption: C3 restores\n  the canonical term after C1 and C2 confirm that the referent and spans permit it.\n- A passive sentence is conventional in Methods: C4 blocks stylistic activation.\n- A contrast pattern is present but its two concrete claims lack surrounding\n  evidence: C1 blocks automatic deletion; mark it uncertain in diagnostic output.\n- One dash, triad, connective, or emphatic sentence has a clear function: C4-C6\n  protect it. Repeated functionless instances may activate C6 after a distribution\n  audit, while C1-C5 still constrain every repair.\n\n## Workflow\n\n### 1. Read the complete editable scope\n\nRead all supplied title, abstract, body sections, captions, tables, appendices,\nand supplementary prose before changing anything. Identify which parts are\neditable and which are evidence or protected context. Separate content\nrequirements from style/process instructions. For generation, treat only\nsupplied claims, data, citations, and explicitly marked hypotheticals as content.\n\n### 2. Lock spans and build the evidence and terminology ledgers\n\nApply the semantic and terminology contracts. Build the claim/evidence ledger\nwith source-to-output mappings and provenance status for:\n\n- numbers, units, entities, citations, datasets, methods, and study design;\n- negation, comparison direction and baseline;\n- association, causation, prediction, and attribution;\n- modality, uncertainty, limitations, population, time, and scope.\n\nThe editable draft establishes what the author currently says; it does not by\nitself prove that a cited paper, result, quotation, or factual premise exists.\nMark unsupported evidence assertions as `draft-only` and preserve or flag them\ninstead of silently treating them as verified or extending the argument from them.\n\nBuild a separate terminology ledger for scientific concepts, especially newly\ncoined methods, modules, losses, metrics, datasets, and task names. Record:\n\n- `concept_id`, `canonical_term`, and the span that defines or first formally\n  names the concept;\n- declared `allowed_forms`, including full-name/abbreviation pairs and necessary\n  grammatical or bilingual mappings;\n- `observed_variants`, `distinguish_from`, and resolution `status`.\n\nUse explicit user terminology first, then formal definitions, then the first\nunambiguous formal naming. Frequency alone never selects the canonical term.\nKeep both ledgers internal unless the user asks for an audit trail.\n\n### 3. Run the local candidate pass\n\n1. Find process leakage and tool residue.\n2. Audit terminology across the complete editable scope. Classify each apparent\n   variation as **declared form**, **same-concept drift**, **intentional\n   distinction**, **protected mention**, or **uncertain identity**.\n3. Triage contrast candidates as **protected**, **unsupported rhetorical**, or\n   **uncertain** using `contrast-logic.md`.\n4. Apply the routed language rules to identify candidates with three questions:\n   - **Load**: does the wording carry a claim or logical relation?\n   - **Support**: can each claim be traced to the source bundle?\n   - **Patterning**: is the defect mechanical, vacuous, or reinforced by other\n     signals in the same span?\n\nA lone word or sentence form is not enough to infer authorship or poor quality.\nIt can still be a local defect when it adds an unsupported claim, false relation,\nor empty evaluation. Multiple weak signals in one span form one finding, not\nseveral duplicate findings.\n\n### 4. Build the distribution map and run the global pass\n\nFor multi-sentence input, map candidates by section, paragraph, sentence,\nposition, and rhetorical function using `global-pattern-contract.md`. Inspect:\n\n- sentence-initial discourse markers and punctuation such as dashes;\n- contrast scaffolds, parallel triads, flat enumeration, and exhaustive listing;\n- repeated sentence/paragraph templates and recurring paragraph closures;\n- sentence-length sequence and rhythm within each functional section;\n- unsupported certainty, elevation, and aphoristic peak saturation.\n\nUse within-document evidence and section function; never apply a universal count\nor ratio. A distribution map supports findings only about the supplied editable\nscope; an excerpt cannot support a whole-manuscript judgment. Optional metrics\nproduce a distribution map, not an authorship or quality judgment.\n\n### 5. Classify before editing\n\nClassify each finding as **local defect**, **distributional defect**,\n**functional/protected**, or **uncertain**. A distributional defect requires both\nrepetition or positional regularity and redundant rhetorical function. Several\nvalid ablation contrasts, method steps, reported metrics, or theorem consequences\nremain protected even when their surface forms repeat.\n\n### 6. Make the smallest coherent edit\n\n- Remove process-layer text while retaining any content in the same sentence.\n- Normalize confirmed same-concept drift to the ledger's canonical term across\n  every editable occurrence, including captions and tables. Preserve declared\n  abbreviations and grammatical forms; do not replace protected mentions.\n- Keep terms separate when they name distinct concepts. If identity is uncertain,\n  preserve the text and ask or flag it outside the clean artifact.\n- Prefer subtraction or direct wording when a phrase carries no proposition.\n- Use concrete material only when it already exists in the source.\n- Preserve both claims in additive forms such as `not only X but also Y` when X\n  and Y are supported; removing the construction must not remove either claim.\n- Preserve or flag concrete negative claims when evidence is insufficient to\n  decide whether the contrast is real. Do not silently erase them.\n- Repair the document as a system: remove redundant scaffolding, retain each\n  supported proposition and relation, and vary syntax only when argument function\n  warrants it. Do not randomize sentence length or replace one repeated template\n  with another repeated template.\n- Reorganize flat enumeration only when the source already supplies a hierarchy.\n  Never invent categories merely to make a list appear elegant.\n- Preserve an unverified citation or evidence claim in rewrite/edit mode and flag\n  it outside the artifact; do not strengthen it or use it to generate new claims.\n- Leave already competent prose unchanged.\n\n### 7. Run the whole-manuscript terminology gate\n\nScan all editable sections together after revision. Every scientific concept\nmust use its canonical term or a declared allowed form. Verify that coined names\nare unchanged after their formal introduction, captions and tables match the\nbody, bilingual mappings are declared, and distinct concepts remain distinct.\nAny unresolved identity is a stop/flag result, not an automatic normalization.\n\n### 8. Run the whole-document pattern gate\n\nRebuild the distribution map after editing. Check that redundant clusters,\nmechanical paragraph templates, uniform rhetorical peaks, and unsupported\ncertainty were resolved without erasing functional repetition or creating a new\ndominant pattern. If the supplied scope is shorter than the claimed scope, report\nthe limitation and do not claim a whole-manuscript pass.\n\n### 9. Run the second-pass semantic and style gate\n\nRe-read source and output side by side. The output fails if any answer is no:\n\n1. Does every output claim map to the source bundle?\n2. Does every material source claim remain?\n3. Are numbers, negation, modality, causal strength, baseline, attribution, and\n   scope unchanged?\n4. Are locked spans byte-for-byte unchanged?\n5. Does the terminology ledger show one canonical term per concept, with only\n   declared forms and intentional distinctions remaining?\n6. Are cited evidence, quotations, and factual premises supported by supplied or\n   verified sources, or explicitly marked `draft-only` outside the artifact?\n7. Did the edit preserve academic register and logical relations?\n8. Did the whole-document pattern gate pass without threshold chasing?\n9. Is the artifact free of process labels, editor narration, placeholders filled\n   by guesswork, and tool residue?\n10. Would a zero-edit result have been more accurate? If yes, restore the source.\n\nRun metrics only as an optional residual scan. A metric never overrides this gate.\n\n## Output contract\n\n- **generate / rewrite**: return the clean artifact by default, with no routing\n  line, score, checklist, leak line, or editor preface.\n- **detect**: return findings grouped by severity and scope (`local` or\n  `distributional`). Each finding includes an exact source quote, rule ID,\n  location/distribution evidence, reason, and one of `change`, `keep`, or\n  `uncertain`.\n- **edit**: edit only the requested file, then summarize changes outside it.\n- Provide diagnostics after the artifact only when the user explicitly asks for\n  them. Clearly separate diagnostics from text intended for the manuscript.\n- Use verified counts only. Never invent a count or aesthetic grade.\n\n## Stop conditions\n\nStop and ask instead of guessing when:\n\n- the requested rewrite requires a missing fact, citation, comparison, or source;\n- a concrete contrast cannot be validated from the available context;\n- the requested generation, verification, or downstream conclusion depends on a\n  citation, result, quotation, or factual premise whose existence or provenance\n  cannot be established from the source bundle;\n- two labels may refer to the same scientific concept but the manuscript does\n  not establish their identity, or no canonical term can be grounded;\n- the input is mostly a protected quotation, formula, or reference list;\n- the user requests a whole-document judgment but supplies only an excerpt;\n- the requested language is neither English nor Chinese;\n- the request seeks detector evasion or circumvention of a disclosure policy.\n\nDo not invent specifics, personal experience, citations, data, mechanisms,\nbaselines, or limitations to make prose sound more human. Do not casualize\nacademic writing merely to make it look less generated.","author":"@dongshuyan","ownerProfile":null,"authorContacts":null,"sourceUrl":"https://github.com/dongshuyan/compass-skills/tree/master/skills/academic-humanizer","license":"MIT","category":"writing","lang":"en","tokens":3297,"stars":0,"calls30d":2,"claimed":false,"visibility":"public","origin":"crawler","version":"0.1.0","createdAt":"2026-08-22","updatedAt":"2026-08-22","files":[{"path":"agents/openai.yaml","size":325,"sha256":"77dcaf775bc80c4c7bd37341e085cbd3e293e2738c37328dd598b6db11c71f7c"},{"path":"references/contrast-logic.md","size":5314,"sha256":"df099dd5d319c741726fea2738eec02f1ad7d77c1e0d20cb2a0a851103c50ceb"},{"path":"references/examples.md","size":12353,"sha256":"e309c47f455f7809ea1759d24a57e2c4494a27fbb9227c0aec1f7483126de9db"},{"path":"references/global-pattern-contract.md","size":9087,"sha256":"4038e869c620229e9ea9d1ba883c943b3058e2d8aaf58000ce81ddfefbb1ca97"},{"path":"references/metrics-spec.md","size":5625,"sha256":"70b5acd0a9c6d4bfd38a706feba70e463fe06cd8ff985ff7a36e1b0476cb7919"},{"path":"references/rules-en.md","size":8114,"sha256":"11836a33681c8c533a1f820638df4629e1f3d43118f004cec853a84bde380b47"},{"path":"references/rules-zh.md","size":9233,"sha256":"65685d46c2c390ac41e43d00c74ce53a59d956271d600ae9cb5553dfc43c1ba4"},{"path":"references/semantic-contract.md","size":7111,"sha256":"589fba1bf3ac15971d913bfb78921e7294da68bbcbc2052f690391cc149a3f1c"},{"path":"references/terminology-contract.md","size":7081,"sha256":"0542aba867e7ca6620101a2fa5d0e9619eaaad5d2ff704d09fca54434e4a6db7"},{"path":"references/whitelist-academic.md","size":5929,"sha256":"36dec43caf436bacca3072b08cb310e368497bf0991b73773f43e1b055ebf9ad"},{"path":"scripts/metrics.py","size":27779,"sha256":"0553d1bac93335df8deee307b39a05e4e32ac4c024e706607c70082a3f0930b5"},{"path":"scripts/terminology_audit.py","size":5717,"sha256":"9461a3396ee9fdb73b4ba223b3a40f67ee89c346238119f2e5a5b569668daeb3"}],"requires":{"mcp":[],"tools":[]},"safety":{"flags":[],"scannedAt":"2026-08-22","hasScripts":true,"networkEndpoints":[]}}