技能创建器
skill-creator
创建、改进和评估自定义技能,把专业流程转化为可重复使用的 AI 能力。
anti-defensive-writing【数据与研究】Remove audit, defensive, self-critical, developer-facing and commitment writing from manuscripts, Supplementary Information, legends, table notes, data/code statements and figure content. Preserve numbers, definitions, reproducibility facts, mandated statistics, null results and conditions that determine reported values. What is load-bearing depends …
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
A research paper argues from evidence. It does not keep an audit log of its own project, argue with an imagined reviewer, criticize itself, document its repository, or make promises. This skill removes those voices from every part of the paper, Supplementary Information included, and keeps everything a reader needs to understand, trust and reproduce the work.
The paper should feel controlled because the design is clear, not because the authors keep saying that it is controlled.
Read What stays before deleting anything, and Local integration for where this skill sits in
the paper-workflow chain.
Most audit and defensive text is added during editing, not during drafting: an edit fixes an ambiguity, answers a co-author or reviewer comment, or adds provenance "to be safe". While editing any text:
Each voice has recognition cues and one fix. A cue is a candidate, not a verdict; classify it with the procedure below before changing it.
The text reports how the work was run and checked instead of what it found. Typical cues:
Fix. State the design fact once, as a fact ("The evaluation split was held out from model selection"), in the section where the reader needs it. Move reproducibility detail to Methods or SI. Delete governance language outright.
The text negotiates with a critic who is not in the room. Typical cues:
Fix. Say what the object is and what the result shows: positive scope. If a limit changes a reported number or a reporting decision, keep it once, where it acts, in positive form. Split a reviewer-defence compound sentence into its claims.
The text evaluates its own shortcomings instead of reporting facts. Typical cues:
Fix. Report the fact neutrally, or drop it if no reader needs it ("All data were obtained from the X collection"). Describe what was used, not what was not. Recast a defended choice as the design decision it was ("A linear map is the reference estimator, so that supervision can be separated from capacity"). Where the evidence supports it, turn a defended weakness into a finding: a gap that richer models fail to close is evidence about what limits the task. Gather genuine limitations into one closing Discussion paragraph, stated as the scope of the research. A verdict column goes; the interval already shows what the verdict said. Keep a plain "Note" column only for facts needed to read a row ("pooled over three runs", "n counts conditions").
Fix. Replace the rhetoric with the factual statement it stood for, and check that it is literally true.
Turn a rhetorical question into a statement of what the analysis isolates. Delete a recap or forward
pointer, or keep its content once where it acts: a concrete next step goes in the closing scope
paragraph of the Discussion. These are among the tells listed in scientific-prose-style's
references/ai-tells.md.
The text addresses someone who runs the code or opens the files, not someone who reads the paper. It survives review because it is accurate, but no reader of the paper can act on it. Typical cues:
source_data/, results/, scripts/, "in the repository
root", "with larger row-level files in source_data/";Reactome_2022.gmt, scores.csv, "provided as CSV files", "an
index sheet in each workbook names the source file for every sheet";Fix. Name the scientific object in reader terms, or delete. "The Reactome 2022 gene-set collection
contained 1,818 terms", not the file name; "exactly k plates were selected per compound", not "a fixed
manifest selected"; "training used seeds 3407, 42 and 2025", not "the launcher fixed". Reader-facing
identifiers stay: accession numbers, public URLs, the repository named in the Code availability
statement, software names and versions, seeds, and the names of Supplementary Data files. \texttt is
formatting, not a licence: a path set in \texttt is still a path.
The text commits the authors to a future action, or describes an arrangement, instead of stating what exists. Typical cues: will be released, will be made available, will be deposited, a public release is planned before acceptance, upon publication, upon acceptance, access can be arranged through the corresponding author, we intend to, a future version will, will be addressed in future work.
Fix. State what exists now: the repository, accession or access route as it stands today, and delete the promise. At a double-blind venue, an anonymized link or a release statement is the convention (The venue decides what is load-bearing). If what exists does not meet the journal's policy (a private repository, no route for editors or reviewers), the author has to fix that before submission; report it, and do not cover it with a promise. A sentence about what future research should test is not a commitment ("Validation across sites will be important for ...") and may stay in the closing scope paragraph. A sentence about what the authors will do is a commitment.
A sentence is load-bearing, and is reshaped rather than deleted, when it does one of these:
Whether a sentence is load-bearing depends on what it states, not on which skill or reviewer put it there. An integrity audit can place a load-bearing statement ("n is five seeds") and an audit-voice one ("absent from the public record as checked") in the same pass.
Two more constraints. A positive rewrite must be literally true: "never became positive in any stratum" was false when one stratum reached a small positive mean with an interval spanning zero; the fix is a precise statement ("no stratum showed a reliable gain"), which is precision, not defence. And tone never outranks evidence: no number, interval, n, control or null result is traded for directness, and a posture pass cuts repetition, not content.
A sentence is reassurance only if no reader at the target venue needs it. Editors and reviewers at
different venues check different things, so the same sentence can be noise in a journal and required
at a conference. Before classifying, name the target venue and what its editors and reviewers check.
For Nature Portfolio journals, nature-portfolio-playbook lists the required statements. For ML
conferences, conference-paper-writing does (optional set, installed with --set all). The rules
below apply whether or not it is installed. The six voices above are calibrated for journal articles.
At ML conferences such as ICLR, NeurIPS and ICML, reviewers check three things: whether test data influenced model selection, whether the results can be reproduced (splits, hyperparameters, seeds, code), and how stable the conclusions are (how many runs, how wide the intervals). Four rules follow.
Two more journal rules turn around at ML conferences:
Process detail that a venue asks for, such as a reproducibility statement or a declaration of LLM use, goes in that statement and follows the venue's current guide. Internal governance, ledgers and file paths stay out of the paper at every venue.
| Part | Keeps | Removes or moves |
|---|---|---|
| Abstract | headline findings, effect sizes, the scale of the data or validation | test statistics, provenance, caveats unless the claim is false without them |
| Introduction | problem, gap, approach, findings | design controls ("no regime-specific tuning"), field commentary, rhetorical questions |
| Results | question, setup in one sentence, result, interpretation, next question | setup, safeguard, caveat, control, exception chains; provenance qualifiers; implementation checks |
| Figure legends | what is plotted, n, error bars, statistic | interpretation defences, "not selected by", "listed for completeness" |
| Table notes and columns | what each column, symbol and bold means; n; the statistic | verdict columns, "not significance" disclaimers, tolerance and gate language |
| Main figures | panels that answer a scientific question | compatibility, interface or eligibility matrices: SI table or one Methods sentence |
| Discussion | what the results mean; one closing scope paragraph | itemized self-criticism, limitations repeated from Results |
| Methods | definitions and every reproducibility fact | interpretation paragraphs, repeated artifact defences, sensitivity results and implementation checks (to SI) |
| Supplementary Information | the experimental record, in the same positive voice | self-criticism, audit commentary, unused items, reader instructions, build and format notes |
| Data, code, Supplementary Data | what exists now: repository or accession, what it contains, what was used | "not exposed", "could not be identified", unused datasets, columns identical in every row, folder paths, file and workbook mechanics, promised releases and arranged access |
manuscript-optimizer. While the claim
is moving, an unnecessary disclaimer and a real scope condition look alike. Name the target venue
and what its reviewers check (The venue decides what is load-bearing).references/worked-examples.md holds before-and-after pairs from past revisions, grouped by voice,
with a section of sentences that looked defensive and were kept. Read it before a whole-document pass.
Candidates only; classify before acting. On a LaTeX source, ignore comments, but scan \texttt{...}:
accession numbers belong there, and so do the folder paths and file names the developer-voice line
looks for.
F=manuscript.tex # repeat for the SI and for any generator that writes captions or table notes
# audit
grep -n -i -E "locked|frozen|hash|scored once|fixed in advance|verif|sanity|leak|post[- ]hoc|original (design|evaluation)|recomputation|\bgate\b|\bPASS\b|\bFAIL\b|numerical check|predeclared|preregist|criterion (was )?(not )?met|supported if|historical|legacy" "$F"
# defensive
grep -n -i -E "does not (establish|imply|mean|test|estimate|prove|relabel)|do not (claim|imply)|should not be (read|interpreted|taken)|is not an? |are not an? |not intended|rather than|instead of|for completeness|to be clear|should be noted|worth noting|visible rather than|so (that )?a reader|had .* been|specific to .*; it does not|without claiming|not (statistical )?significance" "$F"
# self-critical, including verdict columns in tables
grep -n -i -E "could not be (identified|determined|recovered)|not (exposed|identifiable|directly comparable)|unstable|\bonly (about |around )?[0-9]|remains? at null|failed to|unfortunately|we acknowledge|limitation|shortcoming|caveat|exploratory|qualification|within tolerance|interval crosses zero|positive interval" "$F"
# commentary
grep -n -i -E "headline|usually framed|none of this|edge case|the real task|\?\s*$|(together|taken together|collectively), these|motivat\w+ (future|further)|open\w* (new )?avenues|paves? the way" "$F"
# developer: paths, files, workbooks, build and pipeline internals
grep -n -i -E '\\texttt\{|[A-Za-z0-9_\\]+/[ }.,;)]|\.(csv|tsv|xlsx?|json|ya?ml|py|ipynb|gmt|h5ad|parquet|npz|pkl)\b|manifest|launcher|loader|run configuration|artifact|workbook|index sheet|editable latex|latex source|regenerat|\bscript\b|pipeline' "$F"
# commitment
grep -n -i -E "will be (made |publicly )?(available|released|deposited|provided|shared)|(is|are) planned|planned (before|for|to)|can be arranged|upon (acceptance|publication)|after acceptance|we (plan|intend) to|future (release|version)|forthcoming" "$F"
Report four lists: what was deleted or moved and why (by voice and class); every limitation kept and the reason it is load-bearing; every null or contradictory result, confirming that it is still stated; and every gap that needs the author rather than an edit (an access route that does not exist yet, a prespecified outcome reported nowhere, a stale panel reference). Then report the build and gate status. A pass that silently deletes a mandated statement or a result is a reporting failure, not a style improvement.
paper-workflow places this skill at layer 4, the rhetorical-posture layer:
manuscript-optimizer)scientific-writing)write-scientific-manuscript)scientific-prose-style), lastRun it after the claim hierarchy is stable and before scientific-prose-style, because removing
defensive scaffolding rewrites paragraph openers and sentence boundaries that the punctuation and
rhythm pass then has to settle. Moving an audit panel out of a main figure is a structural change:
hand it to figure-planner rather than editing the figure here.
stats-reporting-audit, claim-source-verification, citation-verifier, data-availability and
submission-audit add statements a paper needs: the unit of replication and n, no P values, access
routes, the count behind a reporting decision. Those are load-bearing by type (What stays), and the
edit they may need is a change of form, not deletion: move the statement out of a high-impact
position, state it once instead of at every mention, write it as positive scope, and drop the
instruction to the reader while keeping the fact. The same audits can also add audit voice ("as
checked", "not exposed", "could not be identified"); that wording is treated like any other.
submission-audit runs after this skill. Anything it adds is held to rule zero, and the detection
pass is rerun on the changed passages.
Worked example, from a Methods section:
Defensive:
This component is an operational residual and is not assumed to represent a noise-free biological or causal effect. It may contain measurement noise and other unmodelled variation.
Same information, stated as scope:
This component is an operational residual under the specified additive decomposition. It aggregates context-specific pharmacological variation, residual marginal structure and measurement noise.
scientific-prose-stylescientific-prose-style owns punctuation, rhythm, the em-dash budget and hedge calibration inside a
sentence. This skill owns authorial posture at the paragraph and document level: what a paragraph
leads with, where a caveat sits, whether a sentence advances the argument or pre-empts an objection,
and whether a passage belongs in the paper at all. They stack, in that order.
Adapted from Kiterlin/anti-defensive-writing (MIT, https://github.com/Kiterlin/anti-defensive-writing).
The core rule (advance the claim directly, keep necessary limitations, prefer positive scope) and the
three examples marked as upstream in references/worked-examples.md come from upstream. On 2026-09-30
the body was rewritten from this repository's manuscript-revision history, and later that day the
developer and commitment voices were added: rule zero, the six voices, What stays, the placement
table, the seven-way classification, the modes, the detection pass and the remaining worked examples
are local. See LICENSE and UPSTREAM.md.