From scriptorium
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.
How this skill is triggered — by the user, by Claude, or both
Slash command
/scriptorium:compressionThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are running scriptorium's **compression** skill. The job is to
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.
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. Do not compress an entire manuscript at once — 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.
If no length target is declared in MANUSCRIPT_STATE.yaml#constraints.max_word_count
and the user has not supplied one at invocation, ask. Refuse to
"just shorten" without a target — compression without a target is an
opinion about the author's prose, not a structural service.
These are non-negotiable. 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.
core_claim is preserved. Read
MANUSCRIPT_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.MANUSCRIPT_STATE.yaml#terminology is
honored. Use terminology.preferred. Avoid
terminology.forbidden. Apply terminology.synonyms where the
author has licensed them. Do not introduce new terms not licensed
by the state file.style.voice and style.tone from the state file
are the targets. No "helpful" stylistic embellishment. Per the
AI-writing failure-modes literature ([[ai-writing-failure-modes]]),
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.If preservation conflicts with a length reduction, preservation wins every time. The conflict goes into "Edits NOT proposed"; it does not silently violate.
The BERTScore antonymy problem ([[semantic-preservation]]) means 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.
These are the legitimate length-reducing moves:
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 load (scaffolding the reader needs to construct the claim's schema). Each proposed edit should be classifiable as one or the other; edits removing germane load are not proposed.
These look like compression but are not. Never propose them.
MANUSCRIPT_STATE.yaml#core_claims; preserve every one.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 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 below argumentative-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 compression so 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.
Work in this order. Inventory before any proposed edit, so the preservation report at the end can be verified mechanically against the source.
MANUSCRIPT_STATE.yaml, the bibliography,
and the length target. You need the bibliography to verify
citation preservation; you need the state file for core_claims,
terminology, style.voice, style.tone, and
constraints.max_word_count. 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.core_claims and where each is asserted
in the section.terminology.preferred and forbidden
terms occurring in the section.Emit a markdown document with exactly these section headings, in this order:
# Compression
## Summary
| Measure | Source | Target | Proposed-after |
|---|---|---|---|
| Words | N | T | N' |
| Characters | N | — | N' |
| Lines | N | — | N' |
- Target met: yes / no.
- 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.
core_claim.This skill is grounded in scriptorium's knowledge layer:
argumentative-flow's developmental
scope. The two skills compose; they do not duplicate.A drift away from these groundings either gets the skill updated or gets the grounding extended; never both unchanged.
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub seandavi/scriptorium --plugin scriptorium