multimodel-editorial-review
A Claude Code plugin for multi-model editorial review of technical prose. Claude orchestrates, Codex provides an independent second opinion. Two phases (content, then style), severity-graded findings, mandatory post-patch verification, bias-aware filtering.
Built originally for editorial review of a math/CS textbook, generalized to any technical prose: books, manuals, lecture notes, long-form documentation.
Why multi-model
A single LLM reviewing its own (or another instance's) prose tends to either rubber-stamp it or hallucinate problems. Two different model families on the same text catch different things, especially when one is the author and the other is the reviewer.
This plugin sets up that dynamic explicitly:
- Claude orchestrates the review, reads the text independently, filters Codex's findings critically, applies patches.
- Codex (via the openai-codex plugin, which this plugin depends on) plays the read-only external reviewer: it analyzes the text and reports findings, never modifies files.
The methodology forces a real second opinion: Codex never writes; Claude reads independently before invoking Codex; findings are filtered, not rubber-stamped; a mandatory verification pass on the updated file closes each phase.
Workflow
┌─────────────────┐ ┌──────────────────────┐
│ /content <file> │ │ /style <file> │
└────────┬────────┘ └─────────┬────────────┘
│ │
▼ ▼
┌───────────────────┐ ┌──────────────────────┐
│ Read file (Claude)│ │ Read file (Claude) │
│ Invoke Codex │ │ Invoke Codex (fresh) │
│ Filter findings │ │ Filter findings │
│ Apply patches │ │ Apply patches │
│ Verify + filter │ │ Verify + filter │
│ Synthesis │ │ Synthesis │
└───────────────────┘ └──────────────────────┘
The two phases run separately. After the content phase, the user reads the synthesis and decides whether to proceed to style. Hard limit: 3 Codex invocations per phase including the verification pass.
The verification pass that closes each phase is also where the reviewer gets a chance to push back on the orchestrator's filtering: for each rejected finding, Codex is asked to confirm or counter-argue. Disagreements that don't converge end up as open questions for human supervision, not silently dropped.
Severity scale for findings
- blocking: factual error or ambiguity that compromises understanding.
- significant: imprecision, missing step, local opacity, terminology incoherence, stylistic choice that hurts the exposition.
- minor: polishing.
Slash commands
| Command | Purpose |
|---|
/multimodel-editorial-review:content <file> | Run the content-phase review (factual correctness, logical order, completeness, definitions). |
/multimodel-editorial-review:style <file> | Run the style-phase review (rhythm, register, flow, repetitions, calques). Run only after the content phase is closed. |
/multimodel-editorial-review:verify <file> | Standalone verification pass on the current state of the file. Read-only, no patches applied. |
Installation
This plugin depends on openai-codex, which provides the codex:codex-rescue subagent used as the bridge to Codex. Install it first if not already installed.
Local development
Clone the repo and load it directly:
git clone https://github.com/lornova/multimodel-editorial-review.git
claude --plugin-dir ./multimodel-editorial-review
Inside Claude Code, use /reload-plugins to pick up changes during development.
As an installed plugin
(Marketplace publication is not yet set up. Until then, --plugin-dir is the supported install path.)
Customization: project-specific focus texts
The default focus texts (in English, generic technical prose) can be overridden by placing custom files in the working repository:
<repo-root>/
└── .claude/
└── multimodel-editorial-review/
├── focus-content.md # Overrides the content-phase focus text
├── focus-style.md # Overrides the style-phase focus text
└── focus-verify.md # Overrides the verification focus text
Use this to:
- adapt the review to a specific language (Italian, French, German, etc.);
- target a specific domain (mathematics, software engineering, biology, history);
- enforce project-specific editorial conventions.
The orchestrator checks for these files on every invocation; no extra config is needed.