Vibeleaderboard
Index / tool
Visit github.com
Category
AI Agents
Rank
No. 2084Tools index

Previous survey · No. 2091 ·

Pricing
Open Source
Type
TOOL
Use case
Productivity & Collaboration
Interfaces
Agent Skill / Plugin
Builder
AminBlg
Latest release
v2.1.1
Date

About

An agent skill that makes LLMs write documentation in ASD-STE100 Simplified Technical English, the controlled language the aerospace industry has used since 1983 to keep instructions unambiguous. The repository ships the skill as a single dependency-free folder along with evals, examples, prompts, and output styles, and works in any harness that implements the Agent Skills standard, including Claude Code, Cursor, VS Code Copilot, OpenAI Codex, Gemini CLI, Goose, and OpenCode.

What it does

A rule set you load into a coding agent so its prose stops reading like generated filler. It splits writing into two registers. Documents get hard limits: 20 words per instruction sentence, 25 per description, the condition before the command, active voice, only can, will and must as modals, and one fixed word per meaning. Chat replies get prose only, the answer in the first sentence, no em dashes, bold, headers or bullets. A stricter mode adds the official controlled vocabulary when you ask for compliance. As a Claude Code plugin it also lints each Markdown file the agent writes and flags replies that break the reply rules.

Why it's ranked here

The case rests on measurement that is unusually honest. The author publishes a script that recomputes every headline number from committed raw files, and CI runs it on every push. On 16 replies from one Claude model, visible formatting defects fell from 218 to 11. More telling, the author committed an audit admitting the earlier 81% linter win measured rule obedience, not readability, and that an eight-line prompt beat the old skill on what readers see. The skill was rebuilt around that finding. MIT licensed, with a changelog that states the measured effect, or its absence, for each release.

What's good

The rules are specs, not adjectives: a word ceiling per sentence, a banned-modal list, a fixed verb for checking. That makes them testable, and the bundled linter does test them. The file check is advisory and never blocks, and it skips the agent's own memory and configuration files, including through symlinks, so it does not burn tokens on notes nobody reads. The repository ships no text from the standard itself and explains that the dictionary must be built locally from your own copy of the free official PDF. The before and after examples cover READMEs, runbooks, error messages, incident reports and release notes.

Tradeoffs

The published reply figures come from release 2.0.1. The changelog says no benchmark has run on 2.1.0 or later. All runs use one Claude model at low effort with Claude judges, and the authors flag family bias themselves. The short 60-token prompt variant still says five sentences maximum, a cap the 2.1.0 changelog says was removed everywhere. The bundled linter is a regex pass with no passive-voice or part-of-speech detection. The full plugin needs both Node.js and Python 3, and Codex runs only the session-start hook, not the writing checks. The rules strip persuasion, so the skill itself says not to use it on marketing copy.

How to use it well

Install it as the Claude Code plugin if you want the automatic checks. The plain skills installer adds only the rules, and the output style setting does nothing without the plugin. Use it for documentation, runbooks, error text and release notes, where a misread instruction costs something. Ask for strict mode only when you need the controlled vocabulary, and build the word lists from your own copy of the standard. If the file check is noisy on notes or changelogs, exclude those paths with the documented environment variable. It does not certify compliance with the standard, and it is the wrong tool for blog posts or brand copy.

Technical notes+

.claude-plugin/plugin.json wires three hooks: SessionStart runs a Node.js activation script (5s timeout), and both PostToolUse (matcher Write|Edit) and Stop run src/hooks/lint_hook.py under python3 (10s). Per src/hooks/README.md, the SessionStart hook emits the fenced rule block of prompts/system-prompt.md, about 3,500 characters, to stay under Claude Code's 10,000-character hook output cap. lint_hook.py calls ste_lint.lint() on .md writes, prints up to MAX_HOOK_HITS = 12 hits to stderr and exits 2; on Stop it reads last_assistant_message, runs reader_check(), and returns a systemMessage, always exiting 0. excluded() tests both the written and symlink-resolved path against CLAUDE_CONFIG_DIR and SIMPLE_ENGLISH_LINT_EXCLUDE globs. evals/ste_lint.py is regex only: sentence limits of 20 procedural and 25 descriptive, banned modals, "has been" tense forms, contractions, dash and slop-word patterns, plus a synonym-rotation counter. Note the word-budget block in prompts/system-prompt.md still says "five sentences max" although CHANGELOG.md 2.1.0 says the cap was removed. evals/results/WHY-USELESS-2026-09-02.md records the audit that drove the 2.0.1 rebuild.

Observed

License
MIT (LICENSE file and plugin manifest)
Packaging
Agent skill folder plus Claude Code and Codex plugin manifests
Install surface
npx skills add, claude plugin install, codex plugin add, or paste-in system prompt
Hook runtimes
Node.js for the session-start hook, Python 3 for the lint hooks (.claude-plugin/plugin.json)
Codex hook coverage
SessionStart only; PostToolUse and Stop checks are Claude Code only (src/hooks/README.md)
Linter method
Regex pass with no passive-voice or part-of-speech detection (evals/ste_lint.py)
Hook behavior
Advisory: Stop always exits 0, PostToolUse exits 2 after the write (src/hooks/lint_hook.py)
Benchmark scope
Published reply figures cover release 2.0.1 on one Claude model at low effort (CHANGELOG.md)
Standard content
No STE dictionary text shipped; word lists built locally from the user's own copy (README.md)

Read from README.md, LICENSE, CHANGELOG.md, .claude-plugin/plugin.json, skills/simple-english/SKILL.md, prompts/system-prompt.md, src/hooks/README.md, src/hooks/lint_hook.py, evals/ste_lint.py, evals/results/RESULTS.md, evals/results/WHY-USELESS-2026-09-02.md, examples/before-after.md.

Tags

documentationwritingagent-skilltechnical-writingllmstyle-guide

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.