The cure for AI slop is a 1986 aircraft manual/kit

asd-ste100/README.md

5 KB·Raw on GitHub ↗

The skill's own front page — the page skills.sh/woosal1337/blog/asd-ste100 renders, read straight from this repo

asd-ste100

skills.sh

Listed at skills.sh/woosal1337/blog/asd-ste100.

An agent skill that removes AI slop with a writing system, not a banned-word list. Layer 1 rewrites the words into ASD-STE100 Simplified Technical English, the controlled language built in the 1980s so an aircraft mechanic could never misread a repair manual. Layer 2 shapes the reply for a reader with ADHD: the next action first, numbered steps, real time estimates, no preamble and no closer.

The claim behind it was tested: six engineering writing tasks, four conditions, two model families, scored as violations per 100 words.

ConditionClaude sonnetgpt-5.5
baseline4.363.54
banned-words list4.21 (-3%)2.14 (-40%)
Orwell's six rules2.48 (-43%)1.69 (-52%)
this skill1.12 (-74%)1.76 (-50%)

The full experiment, the data, and the 17-minute episode: chele.bi/videos/the-cure-for-ai-slop

Install#

Pick one route. Do not stack them - two routes double the hooks.

Claude Code, as a plugin. This folder is a standard plugin: the skill at the root, the hooks declared in hooks/hooks.json. They self-register on install, no settings edit:

/plugin marketplace add woosal1337/blog
/plugin install asd-ste100@chele-bi

Any agent the skills CLI supports. This installs the skill files. On Claude Code, install.py then arms the hooks and the output style through settings:

bunx skills add woosal1337/blog
python3 ~/.claude/skills/asd-ste100/install.py

The registry page for that command is the listing above. It reads this repo directly, so the page and the folder never drift apart.

No tooling at all. Paste SKILL.md into the system prompt. The skill works without the linter. The linter closes the loop.

Layout#

The folder follows the Agent Skills spec and the Claude Code plugin format at the same time:

SKILL.md                     the skill - name, description, the two layers
scripts/ste-lint.py          executable code, per the spec convention
references/ste-recurring-errors.md   docs loaded on demand
hooks/hooks.json             the plugin's hook declarations
hooks/ste-*.py               the four hook programs
.claude-plugin/plugin.json   the plugin manifest
install.py, output-style.md  the settings route, for non-plugin installs

What the enforcement stack adds#

A skill is advisory. The model can forget it on a long turn. install.py therefore arms every deterministic layer Claude Code offers. It symlinks the skill and the output style, adds four hook entries to ~/.claude/settings.json, and backs the old file up first. A second run repairs the install. --uninstall removes exactly what it added.

LayerFileWhen it firesWhat it guarantees
styleoutput-style.mdevery requestthe rule sits in the system prompt
cardhooks/ste-inject.pyevery user turnthe rule enters context, with the last score
refreshhooks/ste-refresh.pyevery 12 tool callsthe rule stays near the reply on a long turn
pre-sendhooks/ste-pregate.pybefore a commit runsa sloppy commit message never lands
file checkhooks/ste-refresh.pyafter a Write of an md filea written doc gets its score in the same turn
gatehooks/ste-gate.pywhen the reply endsevery finished reply is linted

The gate keeps three bands. A clean reply passes in silence. A reply over the target gets its score shown on the next turn. Only a reply over a hard ceiling forces one rewrite, one time per turn.

The linter#

python3 scripts/ste-lint.py draft.md            # flavored: general prose, target under 2.5
python3 scripts/ste-lint.py --strict draft.md   # strict: procedures and error messages
python3 scripts/ste-lint.py --shape draft.md    # add the Layer 2 reply-shape counts

The score is violations per 100 words. --json gives machine-readable output. --fail-over N exits 1 over the threshold, for CI gates and hooks. Python 3 standard library only, no dependencies.

Scope#

Layer 1 governs every word a human reads: docs, commit messages, PR text, comments, error messages. Layer 2 governs a reply to a person. Neither layer touches code, identifiers, or command syntax. Writing that needs a voice — a blog post, an essay, marketing copy — is out of scope on purpose. STE is deliberately flat.

The hooks and the installer are Claude Code only. The skill file itself works with every agent the skills CLI supports.

License#

MIT, see LICENSE. This project is unofficial and not affiliated with ASD. ASD-STE100 is a registered EU trademark (No. 017966390). The specification is free from asd-ste100.org.

Provenance#

Built for the episode "The cure for AI slop is a 1986 aircraft manual". This folder lives in the blog repo at videos/ep01-the-cure-for-ai-slop/asd-ste100/ and is the canonical source. The skills CLI installs it straight from there — no mirror, no second repo.

← Back to the episode