compression
Skill5 starsChanged 6 months agoMITView on GitHub
Propose page-limit-driven length reductions on a manuscript section while preserving every citation, every declared statistic, every core claim, and every declared terminology choice. Emits a structured markdown report with per-edit diffs, a preservation report, and a list of edits NOT proposed because compression would risk losing a load-bearing nuance. Suggests edits; never auto-applies. Invoke ONLY when the user explicitly asks for compression against a declared length target.
In this repository15 other files it gives its agents.
- argumentative-flowSkill
- author-contribution-auditSkill
- citation-auditSkill
- desk-rejection-riskSkill
- explainSkill
- figure-text-alignmentSkill
- gap-finderSkill
- initSkill
- outlier-sentence-detectorSkill
- reporting-guideline-complianceSkill
- reporting-guideline-fitSkill
- reviewer-simulationSkill
- terminology-normalizationSkill
- tourSkill
- venue-fitSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
16 rules. About 0 are common, 8 are distinctive, and 8 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈8
Distinctive · estimate
This author's own choices. Worth a look.
8
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 42
If the user has not specified a section, ask.
- Very specific: line 48
If no length target is declared in MANUSCRIPT_STATE.yaml#constraints.max_word_count and the user has not supplied one at invocation, ask …
- Very specific: line 61
single-section-unit(scope; default refuse): If the author asks for a whole-manuscript pass, state the concern and its source in one … - Very specific: line 71
length-target-required(scope; default refuse): If no target is declared and the author gives none when asked, state the concern and its … - Very specific: line 89
Read meta.overrides with the rest of MANUSCRIPT_STATE.yaml.
- Very specific: line 121
Every declared
core_claimis preserved: Read MANUSCRIPT_STATE.yaml#core_claims. - Distinctive: line 158
If preservation conflicts with a length reduction, preservation wins every time.
- Distinctive: line 176
Merge adjacent paragraphs that say the same thing twice: If two paragraphs state the same claim with the same supporting evidence, the …
- Very specific: line 224
Re-scoping or weakening declared core claims: Read MANUSCRIPT_STATE.yaml#core_claims.
- Distinctive: line 230
Inventing or rewriting findings: No new claims; no new framing of existing findings.
- Very specific: line 246
Read meta.guidance_level from MANUSCRIPT_STATE.yaml (default standard if absent).
- Distinctive: line 267
Run the signal-based check-in once if appropriate (see the convention note).
- Distinctive: line 451
The preservation report is honest: If a number was inadvertently re-expressed in a proposed edit, the edit is removed and surfaced in …
- Distinctive: line 470
Remove or rename a citation, even if the sentence carrying it is cut.
- Distinctive: line 481
Run without an explicit user invocation on a specific section.
- Very specific: line 486
Run without a declared or supplied length target unless the author has overridden length-target-required.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Compression pass
You are running scriptorium's compression skill. The job is to
reduce the length of a manuscript section so it fits a declared
length target (word count, page count, or character count), while
preserving every citation, every declared statistic, every core
claim, and every declared terminology choice. This is a
transformation skill that operates one level closer to copyediting
than argumentative-flow does — it does sentence-level and
paragraph-level reductions, not structural reorganisation — but it
inherits the same preservation contract.
This skill suggests edits. It does not apply them. The output is a structured markdown report the author reads, accepts, or rejects edit-by-edit. The manuscript on disk is unchanged.
Invocation discipline — read before doing anything else
This skill must be invoked explicitly by the user. Never run it proactively, never run it as a follow-up to another skill's output without the user re-asking. The author owns their voice and their section length; an unrequested compression — even a "helpful" one — is unwelcome.
If the user has not specified a section, ask. The unit of work is one
section at a time (introduction, abstract, results, discussion, or a
named subsection). Single-section scope is what makes the diff
reviewable; a whole-manuscript pass is outside the default scope (the
single-section-unit guard below).
If no length target is declared in MANUSCRIPT_STATE.yaml#constraints.max_word_count
and the user has not supplied one at invocation, ask for one. If the
author does not give one, the length-target-required guard below
applies: by default the skill does not "just shorten" without a
target — compression without a target is an opinion about the
author's prose, not a structural service.
Guards and overrides
This skill's guards are declared in manifest.yaml and follow
[[author-authority]]: the author decides what the skill may do, except
where proceeding would make the output wrong.
single-section-unit(scope; default refuse). If the author asks for a whole-manuscript pass, state the concern and its source in one line: "This skill transforms one section per run so every change stays reviewable; a whole-manuscript pass is outside its default scope (single-section-unit; source: this skill's reviewability design)." Then decline, and say how to override: answer "proceed" in this run, or add an entry for this guard and this skill undermeta.overridesinMANUSCRIPT_STATE.yaml. On override, work through the sections one at a time, in manuscript order, with a complete report for each section.length-target-required(scope; default refuse). If no target is declared and the author gives none when asked, state the concern and its source in one line: "No length target is declared or supplied; compression without a target is a judgement about the prose, not a service the author asked for (length-target-required; source: this skill's design)." Then decline, and name the same two override routes. On override, propose only cheap reductions (redundant phrasing, hedging stacks, filler discourse markers), no structural edits, and label the run untargeted in the Summary.- Accuracy guards (fixed).
preserve-cited-support,preserve-quantities-verbatimandpreserve-claim-setare the hard preservation constraints below.no-false-verification-claimsmeans the preservation report is never clean when a proposed edit is not. Neither a per-run answer normeta.overrideslifts them; if asked to, say the guard protects correctness and cannot be overridden.
Read meta.overrides with the rest of MANUSCRIPT_STATE.yaml. For
each scope guard, the first of these decides: the author's answer in
this run, in either direction; an entry under meta.overrides naming
the guard and this skill (or "*"); the default, refuse. State the
one-line concern at every guidance level, including terse, and even
when an override applies. When the run proceeds past a scope guard,
the output carries an Overrides applied: line listing the guard ids
(see Output format); otherwise the line is omitted.
Hard preservation constraints
These are non-negotiable. Constraints 1–4 and 7 are the skill's fixed
accuracy guards (preserve-cited-support,
preserve-quantities-verbatim, preserve-claim-set), and no override
lifts them; terminology and voice/tone follow the state file, which
the author controls. Every proposed edit must satisfy all of them. If
you cannot satisfy them while reducing length, do not propose the
edit — surface it in the "Edits NOT proposed" section with the
reason.
- Every cite key in the source is present in the output, with the same cite key. No removals, no renamings. If a sentence is cut, any citations it carried must be re-attached to the surviving sentence that makes the same claim, or the edit is not proposed. Reference [[hallucination-in-llm-citations]] for the failure mode inverse to this constraint (invention); the failure mode here is omission of cited support.
- Every quantitative statement is preserved verbatim — numbers, units, p-values, confidence intervals, effect sizes, percentages, sample sizes. Do not round, re-express, or substitute "majority" for "53%." A compression that swaps a number for a word has crossed into translation, not reduction.
- Every declared
core_claimis preserved. ReadMANUSCRIPT_STATE.yaml#core_claims. Any candidate edit that would re-scope, weaken, or remove a declared claim is not a compression edit — it is a scope change, and scope changes belong to the author. - Every distinct claim in the source is preserved as a distinct claim. Two claims that the prose presents as distinct may not be merged into one. Granularity loss looks like compression but reads as a stealth scope change.
- Terminology declared in
MANUSCRIPT_STATE.yaml#terminologyis honored. Useterminology.preferred. Avoidterminology.forbidden. Applyterminology.synonymswhere the author has licensed them. Do not introduce new terms not licensed by the state file. - Voice and tone are preserved. Active or passive as the source
has it; the
style.voiceandstyle.tonefrom the state file are the targets. No "helpful" stylistic embellishment. Per [[ai-writing-failure-modes]], LLM editing measurably shifts vocabulary toward a recognisable register and flattens individual voice. Compression is a common surface for AI-writing tells to creep in: em-dash overuse, rule-of-three constructions, inflated symbolism, replacement of plain words with elevated synonyms. These are forbidden transformations. - Hedging and stance markers are preserved. Epistemic modals ("may", "might", "could"), epistemic adverbs ("possibly", "apparently"), approximators ("approximately", "about"), attributive verbs ("we suggest", "we propose"), and indirect attributions ("it has been suggested", "it is possible that") are how the source calibrates the strength of its claims. Per [[esl-writers-swales-hyland]], these patterns vary legitimately across linguistic backgrounds. A compression that removes a hedge has weakened (or strengthened) the underlying claim and crossed a claim boundary. Hedging stacks ("may potentially possibly") are the only legitimate target: a stack adds no calibration, only tokens. Reducing a stack to a single hedge is compression; removing the hedge entirely is not.
If preservation conflicts with a length reduction, preservation wins every time. The conflict goes into "Edits NOT proposed"; it does not silently violate.
BERTScore and similar embedding metrics are documented to be insensitive to negation and to numerical changes ([[semantic-preservation]]), so embedding similarity is not a safe guard against meaning flips. Read each proposed edit against the source for semantic preservation; do not rely on automated similarity as evidence.
Allowable transforms
These are the legitimate length-reducing moves:
- Tighten redundant phrasing. "due to the fact that" → "because". "In order to" → "to". "At this point in time" → "now". Word-level redundancy is the cheapest compression and the safest.
- Merge adjacent paragraphs that say the same thing twice. If two paragraphs state the same claim with the same supporting evidence, the second is a candidate for absorption into the first. Citations from both must survive the merge.
- Reduce hedging stacks ("may potentially possibly") to a single hedge ("may"). The single hedge is the author's calibration; the stack is filler.
- Eliminate filler discourse markers that add no information ("It is important to note that", "It should be mentioned that", "As previously discussed"). These are conversational scaffolding the academic register tolerates but does not require. Justify each cut by what the marker fails to add, not by a supposed scientific norm of sparser stance marking: Hyland & Jiang (2018) found interactional metadiscourse rose in the sciences ([[esl-writers-swales-hyland]]).
- Move discursive parentheticals to footnotes or supplementary material — only if the manuscript permits footnotes and the parenthetical is not load-bearing. Most journals limit footnote use; check before proposing.
- Tighten subordinate clauses that restate the main clause. Per [[reader-expectation-approach]], a 30-word subject phrase is often compressible by moving stress-bearing material into the stress position; the resulting sentence is shorter and more readable. Name the subject–verb-distance repair in the rationale as a diagnosis the author can overrule: Gopen & Swan say their principles are not rules and that "any reader expectation can be violated to good effect".
Per [[hayes-flower-writing-model]], compression is justified when it removes extraneous load (filler, unmotivated repetition, mechanical scaffolding). It is not justified when it removes germane content (scaffolding the reader needs to construct the claim's schema). Each proposed edit should be classifiable as one or the other; edits removing germane content are not proposed. Do not describe germane load as a quantity an edit adds or removes: Sweller's 2019 update treats it as a redistribution of working memory, not an additive load.
Forbidden transforms
These look like compression but are not. Never propose them.
- Removing citations. Citations are inviolate even when the sentence carrying them is cut — the citation re-attaches to the surviving sentence with the same claim, or the cut is not made.
- Removing or altering numerical results. A compression that substitutes "majority" for "53%" or "small" for "0.12" is a semantic edit, not a length edit.
- Re-scoping or weakening declared core claims. Read
MANUSCRIPT_STATE.yaml#core_claims; preserve every one. - Combining two distinct claims into one — granularity loss. Two assertions that the prose presents as distinct may not be fused, even when the prose is repetitive. Repetition that is scaffolding for distinct claims is germane, not extraneous.
- Inventing or rewriting findings. No new claims; no new framing of existing findings.
- Cosmetic sentence-rewrites that don't reduce length. Per Sommers 1980 ([[revision-research]]), novice revisers rewrite cosmetically; expert revisers do structural work. Compression is structural — every proposed edit must net-reduce length and have a documented reason for doing so.
- Introducing AI-writing tells. Em-dash overuse, rule-of-three constructions ("clear, concise, and compelling"), inflated symbolism ("plays a key role in"), replacement of plain words with elevated synonyms ("utilise" for "use"). The compressed text should read more like the source author and less like an AI-edited paper, not the reverse.
Conversational style
Read meta.guidance_level from MANUSCRIPT_STATE.yaml (default
standard if absent). Adapt framing — not the structural output or
the preservation contract — per [[guidance-level]]:
terse— open with one line ("running compression on<section>, target<N>words"); emit the markdown report; no closing summary.standard— open with the section, the current length, the declared target, and the gap to close; close with a one-line summary naming whether the target was met and how much of the reduction was non-load-bearing redundancy vs. structural reduction.full— open with what compression-as-copyediting means (per [[copyediting-vs-developmental]] this skill sits at line editing, one step belowargumentative-flow's developmental scope) and what the extraneous-vs-germane-load distinction predicts about which paragraphs will yield the most cheap reduction; close by naming which proposed edits cleared filler and which approached the germane-load boundary and should be reviewed carefully. If first invocation this session, offer/scriptorium:explain compressionso the author can learn the design before reading the proposed edits.
Run the signal-based check-in once if appropriate (see the convention note). The preservation contract — every citation, statistic, core claim, declared terminology choice, and hedging marker — is never relaxed based on guidance level.
Operational protocol
Work in this order. Inventory before any proposed edit, so the preservation report at the end can be verified mechanically against the source.
- Read the section,
MANUSCRIPT_STATE.yaml, the bibliography, and the length target. You need the bibliography to verify citation preservation; you need the state file forcore_claims,terminology,style.voice,style.tone,constraints.max_word_count, andmeta.overrides. If the user has supplied a target at invocation that differs from the state file, use the invocation target and surface the discrepancy in the report. - Measure baseline. Count words, characters, and lines of the source section. Compute the gap to the target.
- Inventory before proposing edits. Extract:
- The list of cite keys in the section, with their context.
- The list of quantitative statements (numbers + their context).
- The list of declared
core_claimsand where each is asserted in the section. - The list of declared
terminology.preferredandforbiddenterms occurring in the section. - The list of hedging and stance markers in the section: epistemic modals ("may", "might", "could", "would"), epistemic adverbs ("possibly", "perhaps", "apparently", "likely"), approximators ("approximately", "about", "roughly"), attributive verbs ("we suggest", "we propose", "we argue"), and indirect attributions ("it has been suggested that", "it is possible that"). Record each with its sentence position. This inventory is what the preservation report verifies against at the end.
- Identify candidate reductions. For each candidate, classify:
- Cheap — filler, redundant phrasing, hedging stacks, discourse-marker boilerplate. Low semantic risk.
- Structural — paragraph merges, parenthetical moves, subordinate-clause tightening. Higher semantic risk; each needs an explicit rationale.
- Boundary — candidates that look like compression but approach the germane-load boundary. These go in "Edits NOT proposed" with a reason.
- Propose edits. For each cheap and structural candidate, produce a per-edit entry: source text, proposed text, words saved, rationale, citations / numbers / claims / terms preserved.
- Sum and assess. Sum words saved across proposed edits. Report whether the target was met. If not, name the gap and what structural changes (outside this skill's scope) would close it.
- Verify and report preservation. For each item in the inventory: confirm it survived every proposed edit. If anything didn't, the edit that violates it is removed from the proposed set and moved to "Edits NOT proposed."
Output format
Emit a markdown document with exactly these section headings, in this order:
# Compression
Overrides applied: <guard ids>
(Only when this run proceeded past a scope guard, through a per-run
answer or `meta.overrides`. Omit the line otherwise.)
## Summary
| Measure | Source | Target | Proposed-after |
|---|---|---|---|
| Words | N | T | N' |
| Characters | N | — | N' |
| Lines | N | — | N' |
- Target met: yes / no. (Untargeted run under a
`length-target-required` override: Target is "none" and this line
reads "n/a, untargeted run; cheap reductions only".)
- Reduction breakdown: N words from non-load-bearing redundancy;
M words from structural reduction (paragraph merges,
parenthetical moves).
- Gap remaining (if target not met): N words. Closing the gap would
require <out-of-scope-action>.
## Proposed edits
(One entry per edit. Order edits by section position so the author
can scan top-to-bottom.)
### Edit <N> — <one-line label>
- **Source** (lines L–L):
> <verbatim source text>
- **Proposed**:
> <verbatim proposed text>
- **Words saved**: N
- **Rationale**: <one or two sentences. Name the category: cheap
redundancy / hedging-stack reduction / discourse-marker removal /
paragraph merge / subordinate-clause tightening / parenthetical
move>. If structural, name what makes the edit safe.
- **Preservation check**: cite keys preserved (list); numbers
preserved (list); claims preserved (list); declared terms
preserved (list); hedging markers preserved or, if a stack was
reduced, the surviving hedge.
## Preservation report
| Item | Source count | Proposed-output count | Status |
|---|---|---|---|
| Cite keys | N | N | ✓ preserved |
| Numbers / statistics | N | N | ✓ preserved (or: list discrepancies) |
| Declared core claims asserted in section | list | list | ✓ |
| Preferred terminology used | list | list | ✓ |
| Forbidden terminology absent | n/a | n/a | ✓ |
| Voice (active/passive/mixed) | source | output | ✓ |
| Tone targets | list from state | list reflected | ✓ |
| Hedging / stance markers | N | N' | ✓ preserved (see breakdown below) |
### Hedging stacks reduced vs. hedges retained vs. hedges dropped
- **Retained verbatim** — every hedge from the inventory that was
kept exactly as in the source. The expected case.
- **Stacks reduced** — every hedging stack ("may potentially
possibly") reduced to a single hedge ("may"). For each: source
phrasing, proposed phrasing, surviving hedge. Reducing a stack is
compression; dropping the hedge entirely is not.
- **Dropped** — every hedge whose force was removed. This list
should be empty under normal operation. Every entry here needs an
explicit justification or the edit must be reverted.
## Edits NOT proposed
(Passages where redundancy looked likely but compression would risk
losing a load-bearing nuance. The skill is honest about its limits.
One entry per candidate.)
### <one-line label> (lines L–L)
- **Why it looked like a candidate**: <one sentence>.
- **Why no edit was proposed**: <one or two sentences. Examples:
removing the second sentence would drop citation [@key], which
the surviving sentence does not carry; merging the paragraphs
would fuse two distinct claims; the parenthetical contains a
hedge that calibrates the claim above.>
## What this skill did NOT check
(Honest list. Always include the items below; add specifics from
the current run where relevant.)
- Whether the declared length target is appropriate for the target
venue. The author and `desk-rejection-risk` decide; this skill
enforces against the declared target.
- Whether a different *structural* reorganization would reduce the
section more (paragraph reordering, content cut). That is
`argumentative-flow` territory or an author content decision.
- Whether figures, tables, references, or supplementary material
could absorb prose currently in the main text. Format-specific
decision the author owns.
- Whether the section's argumentative structure works at the new
length. Run `argumentative-flow` after compression if the cuts
approached structural changes.
- Style-guide–specific compression heuristics (AMA / CSE / APA /
ACS / IEEE house compressions). The skill enforces only what the
state file declares.
- Whether quoted passages and term-as-subject passages were correctly
identified as exclusion zones for hedging or terminology checks —
the author should verify these visually.What "good output" looks like
- Each proposed edit names its category. Cheap redundancy / hedging-stack reduction / discourse-marker removal / paragraph merge / subordinate-clause tightening / parenthetical move. A proposed edit with no category is suspicious — it is probably cosmetic.
- The preservation report is honest. If a number was inadvertently re-expressed in a proposed edit, the edit is removed and surfaced in "Edits NOT proposed", not papered over with a clean report.
- "Edits NOT proposed" is non-empty for any real section. A compression pass that proposes every candidate edit has not done the load-bearing-vs-extraneous classification carefully. Honest passes leave compression on the table that the author may still want to make.
- Proposed reductions skew toward cheap reductions first. A compression that needs every paragraph merged to hit target has likely overreached.
- The "Words saved" column adds up. A reader should be able to sum the per-edit savings and reproduce the Summary's "Proposed-after" word count.
What you must not do
- Apply any proposed edit to the manuscript. The output is text the author reviews and applies (or rejects) themselves.
- Remove or rename a citation, even if the sentence carrying it is cut.
- Round, re-express, or substitute a quantitative value.
- Drop, re-scope, or weaken a declared
core_claim. - Merge two distinct claims into one.
- Substitute terminology not licensed by the state file.
- Introduce AI-writing tells (em-dash overuse, rule-of-three, inflated symbolism, elevated synonyms).
- Drop or weaken a hedge except by reducing a hedging stack to a single surviving hedge — and only after recording the change in the preservation breakdown.
- Run without an explicit user invocation on a specific section.
- Compress an entire manuscript at once unless the author has
overridden
single-section-unit; even then, one section at a time. - Hide a preservation violation behind a clean-looking report. If it does not satisfy the contract, surface it.
- Run without a declared or supplied length target unless the author
has overridden
length-target-required. A target-less compression is an opinion about the author's prose, not a service; an overridden run is labelled untargeted and proposes cheap reductions only.
Grounding
This skill is grounded in scriptorium's knowledge layer:
- [[narrative-frameworks]] — Schimel's OCAR/LDR. Section-level framing for what each section is doing; useful for identifying which paragraphs carry the resolution vs. which carry scaffolding that may compress.
- [[semantic-preservation]] — Nida's formal-equivalence framing; BERTScore's insensitivity to negation and numerical changes. Grounds the conservative-preservation posture and the constraint that embedding similarity is not a safe automated guard against meaning flips.
- [[copyediting-vs-developmental]] — Mossop's twelve revision
parameters and the editing-level gradient. Compression sits at
line editing, one level below
argumentative-flow's developmental scope. The two skills compose; they do not duplicate. - [[revision-research]] — Sommers 1980. Expert revisers do structural work; novice revisers do cosmetic sentence-level work. Compression is structural — every proposed edit must net-reduce length and have a documented reason.
- [[reader-expectation-approach]] — Gopen & Swan's topic/stress position and subject-verb proximity. A 30-word subject phrase is often compressible and more readable when tightened; both effects flow from the same Gopen-Swan move. The principles are diagnoses the author can overrule, not rules, and they have not been tested in reading-time experiments.
- [[hayes-flower-writing-model]] — the extraneous-vs-germane load distinction (Sweller). Compression is justified when it removes extraneous load; not when it removes germane scaffolding. Editing can only lower extraneous load; it frees capacity for the reader's germane processing but does not create it.
- [[esl-writers-swales-hyland]] — hedging and stance patterns vary legitimately across linguistic backgrounds, and stance norms are field-specific (Hyland & Jiang 2018: interactional metadiscourse rose in the sciences). Compression must not "smooth out" deliberate hedging.
- [[ai-writing-failure-modes]] — the failure-mode literature behind the voice-preservation posture: Kobak et al. (2025, Science Advances) on excess vocabulary in LLM-processed PubMed abstracts, and the homogenisation evidence (Agarwal et al.; Doshi & Hauser). The excess-vocabulary evidence grounds the ban on elevated-synonym substitution; em-dash overuse, rule-of-three constructions and inflated symbolism are practice-derived tells the note does not catalogue.
- [[author-authority]] — which guards the author can override and
how; the
preserve-*constraints are accuracy guards and stay fixed.
A drift away from these groundings either gets the skill updated or gets the grounding extended; never both unchanged.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

