critic-panel produces the sheet and never applies anything; the author used to pick by hand, and the auto-application policy (operator, 2026-09-01) ran twice as throwaway scratchpad scripts. This skill is that policy as versioned code: the author never reads drivel because the rules decide, and the rules are arguable because they are deterministic.
Scanned 9/3/2026
Install to Claude Code
npx -y skills add petar-djukic/writing-skills --skill critic-apply --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Critic Apply?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/petar-djukic-critic-apply)More formats (shields.io, HTML) on the badges page.
<!-- Copyright (c) 2026 Petar Djukic. All rights reserved. SPDX-License-Identifier: MIT -->
---
name: critic-apply
description: >-
Rule-based application of a converged critic sheet: accept every
convergent target (2+ critics), skip split panels, decline
constitution-protected spans with cause, prefer the omission when
remedies conflict, and count reverse-outline cheap ranks as
convergence for single-critic deletions. Rewrites route through the
rewrite transport with a narrow one-sentence instruction and a
mechanical gate (numbers, citations, em-dash/colon budgets, size
band); deletions apply directly; rst markers round-trip. Reports
applied/kept/declined-by-rule for the generation: block. Triggers:
critic apply, apply the critic sheet, apply the panel, apply
suggestions by rule, converged sheet application.
argument-hint: '--article <draft.md> --sheet <stem>.critic-sheet.md'
---
# Critic Apply (rule-based sheet application)
critic-panel produces the sheet and never applies anything; the author
used to pick by hand, and the auto-application policy (operator,
2026-09-01) ran twice as throwaway scratchpad scripts. This skill is
that policy as versioned code: the author never reads drivel because the
rules decide, and the rules are arguable because they are deterministic.
## The rules
| rule | effect |
|---|---|
| convergent target (2+ distinct critics on one passage) | accepted |
| split panel (a proposal beside a KEEP/NO CHANGE dissent) | skipped — proposal + dissent is not convergence |
| constitution-protected span (`--protected` verbatim spans) | declined with cause, however many critics want it — the constitution outranks the panel |
| remedy conflict inside a convergence, one remedy a CUT | the omission wins — a deletion authors no prose |
| single-critic CUT on a paragraph reverse-outline ranked cheap (`--cheap-paragraphs`) | accepted — cross-instrument agreement counts as convergence for deletions |
| any other single-critic finding | skipped; the author picks those by hand |
## The mechanics (learned the hard way)
- **rst markers are stripped before the model call and reattached
after** — their digits fail the number gate (measured on the first
automated run). A deleted paragraph takes its marker line with it.
- **One narrow instruction per rewrite target**, built from the
critics' *why*, sent through the rewrite transport
(`CRITIC_APPLY_MODEL`, default `cohere:command-a-03-2025`) — persona
prose is never spliced; it is guidance at most.
- **The gate**: number multiset (citations masked first), citation
multiset (`[@key]` and `[n]`), em-dash and colon counts capped at the
original's, candidate length within 0.5–1.35× of the original. A
gated rejection keeps the original, recorded with its reason.
- **Deletions apply directly** with mechanical punctuation
normalization; omission is not authorship.
## Usage
```bash
python3 <skill>/scripts/critic_apply.py \
--article draft.md --sheet draft.critic-sheet.md \
[--protected constitution-spans.txt] \
[--cheap-paragraphs 3,7] \
[--dry-run]
```
Output: `<stem>.applied.md` plus `<out>.critic-apply.json` — per-target
records and the applied/kept/declined-by-rule summary the `generation:`
block wants. `--dry-run` decides and reports with no model calls and no
writes. Offline tests: `scripts/test_critic_apply.py`.
## Position
Caller's review phase (GH-208), directly after critic-panel's merge:
sheet → critic-apply → the applied text re-enters the humanize chain as
a new cycle (applied targets are unlaundered rewrite-transport prose).
cold-review and voice-critic read the result; this skill never runs
after the terminal stage of the same cycle.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!