Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add RadOrigin-LLC/RAD-Claude-Skills --skill a11y-formsgit clone --depth 1 https://github.com/RadOrigin-LLC/RAD-Claude-SkillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/radorigin-llc/rad-claude-skills/a11y-forms)<a href="https://agentmods.dev/skills/radorigin-llc/rad-claude-skills/a11y-forms"><img src="https://agentmods.dev/badge/skills/radorigin-llc/rad-claude-skills/a11y-forms/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/radorigin-llc/rad-claude-skills/a11y-forms"><img src="https://agentmods.dev/badge/skills/radorigin-llc/rad-claude-skills/a11y-forms.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00103 | $0.03103 |
| Opus 5 | $0.00051 | $0.01551 |
| Sonnet 5 | $0.00021 | $0.00621 |
| Haiku 4.5 | $0.00010 | $0.00310 |
Grade A, and why
a11y-forms scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 447 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Form Accessibility
Skill type: Reference. This is teaching/pattern content — it explains label association, error announcement, fieldset/legend grouping, and validation patterns. It is not a scanner. For static review of existing forms, use
/a11y-review. For runtime verification of error announcements and validation behavior, set up real axe via thea11y-testingskill and pair with manual screen reader testing.
Forms are the most interaction-critical UI element — and the most commonly broken for assistive technology users. Missing labels, inaccessible errors, and placeholder-as-label are among the top WCAG failures on the web.
The Non-Negotiable Rules
- Every input must have a visible, programmatically associated label. No exceptions.
- Never use
placeholderas a label. Placeholder disappears on input, fails contrast, and is not reliably announced by screen readers. - Errors must be text, linked to the input, and not rely on color alone.
- Required fields must be indicated programmatically (
requiredoraria-required="true").
Label Association
Method 1: Explicit Association (Preferred)
<label for="email">Email Address</label>
<input type="email" id="email" name="email" autocomplete="email">
In React (htmlFor instead of for):
<label htmlFor="email">Email Address</label>
<input type="email" id="email" name="email" autoComplete="email" />
Method 2: Wrapping Label
<label>
Email Address
<input type="email" name="email">
</label>
Works well for radio/checkbox where the label and input are adjacent.
Method 3: aria-label (No Visible Label)
Use only when a visible label is genuinely not possible (e.g., search bar with a button):
<form role="search">
<input type="search" aria-label="Search products" name="q">
<button type="submit">
<svg aria-hidden="true">...</svg>
<span class="sr-only">Search</span>
</button>
</form>
Method 4: aria-labelledby (From Existing Text)
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 10d ago First seen · 447 lines · 103 tokens per session scan A e85545acfae0
a11y-forms is a skill published in the GitHub repository RadOrigin-LLC/RAD-Claude-Skills (5 stars, last pushed 24d ago), licensed Apache-2.0. It adds 103 tokens to every session and 3,103 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
svg
Load this skill whenever the project contains SVG graphics — inline SVGs, external SVG files, SVG icons, SVG illustrations, or SVG-based data visualizations. Under no circumstances use SVG without proper accessible titles, descriptions, and ARIA roles where required. Absolutely always add and to meaningful SVGs and…
audio-video
Load this skill whenever the project contains audio or video content, media players, podcasts, video embeds, or any / elements. Under no circumstances publish audio or video without captions, transcripts, and audio descriptions where required. Absolutely always apply WCAG 1.2 criteria for time-based media.
forms
Load this skill whenever the project contains forms, inputs, selects, checkboxes, radio buttons, text areas, or any validation flow. Under no circumstances create a form without visible labels, error identification, and keyboard accessibility. Absolutely always associate every input with a label and provide clear…
keyboard
Load this skill for every project containing interactive UI elements — buttons, links, modals, dropdowns, sliders, tabs, carousels, or any custom widget. Under no circumstances create an interactive component that cannot be fully operated by keyboard alone. Absolutely always ensure visible focus indicators, logical…
light-dark-mode
Load this skill whenever the project supports light/dark mode, colour theme switching, high-contrast mode, or responds to prefers-color-scheme. Under no circumstances hard-code colours that break in alternative themes. Absolutely always test colour contrast in both light and dark themes, and respect user OS-level…
manual-testing
Load this skill whenever you are planning, executing, or reviewing manual accessibility testing. Manual testing with real assistive technologies is essential — automated tools catch only 30–40 % of WCAG issues. Absolutely always include keyboard-only testing and at least one screen reader test before marking a feature…