github miqdadbadjuber/anti-slop v3.2.24
v3.2.24: accessibility and performance join the Hard Gate

4 hours ago

A page could pass every Hard Gate and still be unusable. The gate checked contrast and keyboard focus, and nothing else a person needs to perceive and operate the page. The performance side stopped at "no invented numbers" and never asked for the mechanisms that keep a page fast.

Two rules join the gate

  • R-39 Accessible Semantics & Interaction Affordances. Every enabled control gets cursor: pointer, a native element, an accessible name, and distinct hover, active, and disabled states. Every image gets alt, every field a visible label, and motion respects prefers-reduced-motion. Page-level semantics (lang, <title>, landmarks, one h1, no zoom ban) apply only when the task produces a whole document, never to a single component. The depth lives in antislop-human.
  • R-40 Performance Mechanisms. Media carries dimensions, the hero image is never lazy loaded and is marked fetchpriority="high", no third-party script blocks render in <head>, and no performance number is reported without a measurement. The depth lives in antislop-ui.

LCP, INP, and CLS thresholds are field data from real visits, which the agent writing the page does not have, so they stay out of the gate. They live in references/CORE-WEB-VITALS.md, read when a real measurement exists.

References, read on demand

antislop-human gains WCAG 2.2 and copy-ready accessibility patterns. antislop-ui gains Core Web Vitals and an optional page baseline: doctype, mixed content, client secrets, unpinned third-party scripts. Page basics and security were first proposed as a third gate rule. They ship as a checklist instead, run when the task asks for a production-ready page.

The reference material is adapted from the MIT-licensed web-quality-skills by Addy Osmani, and the license sits beside it in both skills. Nothing loads until a rule points at it, so the always-loaded files grow by about 3 KB in the core, 2.6 KB in antislop-ui, and 4.7 KB in antislop-human.

Also in this release

  • Every WCAG 2.2 success criterion is listed by level: 31 A, 24 AA, 31 AAA.
  • The modal, error-summary, and live-region snippets in the accessibility reference run as written. Each one defines what it uses.
  • The cursor base layer covers a label that wraps its checkbox or radio, not only label[for].
  • The picker hints, the skill catalogue in the guide, and the README skills table name the new depth.

Updating is unchanged:

npx antislop-ai --update

A plugin keeps its own copy, so update it through the agent that installed it. Skills load when a session starts, so start a new one afterwards. Full detail is in the ROADMAP. Thanks to @habibiahmada for #46, and to @fajarhide for the review that cut three rules to two and moved the field thresholds out of the gate.

Don't miss a new anti-slop release

NewReleases is sending notifications on new releases.