Repository navigation
Home
editwright is an agent skill that edits writing the way a professional editor does, and never writes on the page. You ask your AI agent to edit a short story, a chapter, a script or an essay. You get back an editorial letter, notes anchored to quoted passages and a numbered list of suggestions (S-001, S-002 and so on). You then say which IDs you accept, and only those are applied, to a copy.
Four promises hold the design together:
- Your file is never modified. It is hashed at intake and checked again at the end of every run.
- Suggestions, not rewrites. Where a fix needs new wording, it is a question for you, not a sentence written for you.
- Every AI-written word is counted in a provenance ledger. By default fiction allows none and nonfiction allows 1% (at most 50 words).
- Only the IDs you accept are applied.
It is not a ghostwriter, a humanizer or a grammar checker that rewrites as you type. It runs in Claude Code, GitHub Copilot and other agents that read SKILL.md skills, and in Claude Desktop and claude.ai as an uploaded skill. The judgment is the agent's. The counting and bookkeeping are done by ew.py, one standard-library Python script.
In Claude Code:
/plugin marketplace add m4bwav/editwright
/plugin install editwright@editwright
Other agents and the claude.ai upload are on Getting started.
Ask your agent: "proofread my short story ./story.md". Behind the scenes it runs ew.py. Here a typo and a tense slip were found, both fixable with the author's own words, so the ledger counts no AI-written words when the author accepts them:
$ python3 ew.py --works works ledger the-salt-road --accept S-001,S-003
accepting S-001, S-003 would bring in 0 AI-written words (0.00%): within the limit (0 words / 0.0%)A suggestion that brings in new words is refused in a short story:
$ python3 ew.py --works works apply the-salt-road --accept S-004
refused: these changes bring in 3 AI-written words (2.26%), over the limit (0 words / 0.0% for short-story in human-authored mode). Carrying AI words: S-004. Ask the author to write those words (--author-text) or to drop them; nothing applied.The whole run, from intake to the edited copy, is on Commands.
- Getting started: read first. Every install route, what it needs, and a first job from start to finish.
- How it works: the five rules, and what the agent does at each step.
-
Commands: every
ew.pycommand with a real run and its output. -
Suggestion format: the JSON the agent writes for
ew.py suggest, field by field. - Provenance and AI-text rules: how AI-written words are counted, the limits, and the watermark and publishing rules behind them, with sources and dates.
-
Delivery formats:
suggestions.md,review.mdwith CriticMarkup, andreview.docxwith tracked changes. - Works store and privacy: where your manuscripts and notes are kept and how to point that elsewhere.
- FAQ: short answers, with links to the detail.
- Development: tests, the size budget, the eval suite and how a release is made.
Every command on these pages was run against the 0.1.1 release (tag v0.1.1) on 2026-10-09. They ran on Linux (Ubuntu under WSL, Python 3.14.4), in a folder named /tmp/demo with the works store at ./works. The story and essay are invented for the examples. On Windows the same commands print paths with \.
This wiki describes editwright 0.1.1 (tag v0.1.1, commit 8d9a0d5) and was last updated on 2026-10-09. The plugin is MIT licensed. Report problems in the issues.