SimpleEnglish, an agent skill that pushes LLM output toward the discipline of ASD-STE100 Simplified Technical English, reports 81.3% fewer linter violations across 9 Claude models. A 2026-09-02 audit concluded that the number measured rule obedience rather than what a reader sees, and the project placed visible reply-defect counts above its linter history. The audit shows how the project separates rule checks from visible output.
A linter score is not a reading experience
The earlier evaluation scored 144 generations with an STE linter. The README is direct about the linter's limits: evals/ste_lint.py measures the mechanical rules and cannot see word choice. The audit went further. Those counts track whether the model obeys the rules, not what shows up on the page in front of a person.
Version 2.0.1 also reports visible defects in replies. The test set is 8 chat questions, each with a jargon term, run twice, for 16 replies. The defects are concrete: over-cap sentences, em-dashes, bold, headers, and bullets. With no skill loaded, claude-sonnet-4-6 produced 406 of them. With 2.0.1 it produced 58, which the README reports as 86% fewer. The table underneath breaks that down. Em-dashes fell from 62 to 5. Bold fell from 79 to 2. Headers went from 25 to 0.
The README says the older linter numbers reproduce, and it still links them. They measure rule obedience.
The report says what it does not show
The benchmark section is worth reading for its caveats as much as its results. Judges are Claude models grading Claude text, and the README says family bias is possible. The document tasks ran once per cell, and one run moves by about 0.5 on this model, so the README asks you to read those rows "as parity or better, not as a ranking." The five-sentence cap, one of the reply rules, holds in only 5 of 16 sonnet replies. That line appears beside the other benchmark results, not in a footnote.
There is also a guard on the numbers themselves. python3 evals/check_numbers.py recomputes every number in the benchmark section from committed raw files, and CI runs it on every push. The contributing notes add that a change that moves a published number ships the raw files with it.
Rules written as specs
The FAQ makes the case for this approach in a few short lines. "Clearly" is an opinion. "No sentence over 20 words" is a spec. Agents follow specs.
The skill splits its rules into two registers inside a SKILL.md of about 1,700 tokens. The reply register covers every chat answer: prose only, five sentences maximum with list items counted, a first sentence that answers, no em-dashes, and no contractions, openers, or closers. The document register covers docs, READMEs, runbooks, error messages, and release notes. It caps instructions at 20 words and descriptions at 25, puts the condition before the command, drops should, would, may, and might, and holds one word to one meaning across the whole document.
That last rule targets what the README calls "check/verify/confirm/validate roulette." The condition-before-command rule targets the trailing "if the flag is set" that readers execute too late. Each rule in the tables comes paired with a column labeled "What it kills," which names the failure it targets.
There are two modes. Plain is the default. Strict adds STE dictionary discipline when you name STE, ASD-STE100, or compliance, while replies stay Plain in every mode. The FAQ is blunt that none of this makes output STE-certified, because ASD certifies no tool.
Where it runs
The skill is one folder with no dependencies, under MIT, and the README lists Claude Code, Cursor, and OpenAI Codex among the agents that read the Agent Skills standard. You can install it with npx skills add AminBlg/SimpleEnglish. The Claude Code and Codex plugins add a session hook, and those hooks need Node.js. If your agent has no skill support, prompts/system-prompt.md holds a rule block to paste into a system prompt, AGENTS.md, or .cursorrules, and the page ends with a 60-token version for tight budgets.
One detail is easy to miss. In Claude Code the output style is named simple-english:simple-english, and the short name does not resolve.
Word choice is the part the linter cannot measure. An extractor in tools/ste-dictionary/ builds word lists from your own copy of the free Issue 9 PDF. The repository ships the tool and no dictionary content, because the standard forbids reproduction without written authority from ASD.
GitHub: https://github.com/AminBlg/SimpleEnglish
Curated by Agent Palisade — practical AI for small and mid-sized businesses.
Top comments (0)