[NFBCS] From Taylor Arndt: I Got Fed Up With AI Forgetting Accessibility, So I Built a Team That Will Not
Ty Littlefield
tyler at tysdomain.com
Sun Feb 22 21:44:10 UTC 2026
This is awesome; thank you for doing it. How much of a difference have
you found?
My problem does tend to be context windows as you mentioned with the
drifting, but the secondary issue is that AI was trained on a load of
horrible data, so it tends to make terrible accessibility decisions. One
of the more fun vibe-coded accessibility issues I'm stumbling on lately
is adding aria-haspopup to everything.
*Ty Littlefield (he/him/his)*
* From Bytes to Bites <https://tysdomain.com>|
* Linkedin <https://www.linkedin.com/in/ty-lerlittlefield/>
On 2/22/2026 1:54 PM, dandrews920--- via NFBCS wrote:
>
> Taylor’s Substack - Friday, February 20, 2026 at 8:39 PM
>
>
> I Got Fed Up With AI Forgetting Accessibility, So I Built a Team
> That Will Not
>
> It is Friday night. I had a long day at work coding with Claude, and I
> am talking to some friends of mine. I have had it.
>
> AI tools do not care about accessibility. And I finally did something
> about it.
>
> Taylor’s Substack is a reader-supported publication. To receive new
> posts and support my work, consider becoming a free or paid subscriber.
>
>
> The Frustration
>
> I use AI coding tools every day. Claude Code is a core part of how I
> work. I have written about this before. AI helps me stay organized,
> keep context, and build things faster than my brain would allow on its
> own. It is genuinely one of the most important tools in my workflow.
>
> But there is a problem. A big one.
>
> AI tools are terrible at accessibility.
>
> I do not mean they are bad sometimes. I mean they are consistently,
> reliably, predictably bad at it. Every single time I ask an AI to
> build a component, I have to fight for the basics. Label your inputs.
> Trap focus in the modal. Do not use a div when a button exists. Make
> sure this contrast ratio actually passes. Add a live region so the
> screen reader knows something changed.
>
> These are not advanced requirements. These are the fundamentals. And
> AI drops them constantly.
>
>
> Why This Hits Different for Me
>
> I am a screen reader user. When AI generates a modal without focus
> trapping, I am the person who gets stuck. When it skips live regions
> on search results, I am the person who hears nothing. When it uses a
> div with an onClick instead of a button, I am the person who cannot
> activate it with my keyboard.
>
> I am not reviewing accessibility as an abstract checklist. I am living
> it. Every failure that ships is a wall I personally hit.
>
> And the worst part is that I know better. I am an accessibility
> specialist. I have the knowledge to catch these issues. But I should
> not have to catch them every single time. The tools should know this
> already.
>
>
> What I Tried First
>
> I tried the obvious things. I wrote detailed instructions in CLAUDE.md
> files. I created skills with accessibility rules. I added reminders to
> my prompts.
>
> None of it stuck.
>
> Skills in Claude Code activate maybe twenty percent of the time
> without manual intervention. Instructions in context files work at
> first, but as the conversation grows, they drift. The model
> deprioritizes them. It decides other things matter more. Accessibility
> gets quietly dropped from the plan.
>
> That is the pattern. Not malicious. Not intentional. Just gone. Every
> time.
>
>
> So I Built a Team
>
> I stopped trying to remind one model to care about accessibility.
> Instead, I built six specialized agents, each with a single focused
> job they cannot ignore.
>
> There is an Accessibility Lead that orchestrates the team and decides
> which specialists are needed. There is an ARIA Specialist that
> enforces correct roles, states, and properties. There is a Modal
> Specialist that owns focus trapping, focus return, and escape
> behavior. There is a Contrast Master that checks every color
> combination against WCAG AA ratios. There is a Keyboard Navigator that
> ensures everything can be reached and operated without a mouse. And
> there is a Live Region Controller that bridges the gap between visual
> updates and screen reader awareness.
>
> Each agent has its own context window. Its own system prompt. Its own
> identity. The ARIA specialist cannot forget about ARIA because ARIA is
> who it is. The contrast master cannot skip contrast checks because
> that is its entire purpose.
>
> A hook fires on every prompt I send to Claude Code. If the task
> involves UI code, the Accessibility Lead activates and coordinates the
> right specialists. If it does not involve UI, the hook is ignored and
> Claude works normally.
>
>
> Why Agents Instead of Everything Else
>
> I tried skills. They get ignored.
>
> I tried MCP servers. They add tool calls but do not change how the
> model reasons about code.
>
> I tried detailed instructions. They drift out of context.
>
> Agents are different. They run in their own window with their own
> rules. The rules are not suggestions. They are the agent’s entire
> identity. That is the difference. A suggestion can be deprioritized.
> An identity cannot.
>
>
> What It Covers
>
> The team enforces WCAG 2.1 Level AA compliance. That includes screen
> reader compatibility across VoiceOver, NVDA, and JAWS. Keyboard-only
> navigation. Focus management for single-page apps, modals, and dynamic
> content. Color contrast verification with actual ratio calculation.
> Live region implementation for toasts, search results, loading states,
> and form feedback. Semantic HTML enforcement. And common framework
> pitfalls like React conditional rendering breaking live regions and
> Tailwind color classes failing contrast.
>
> That is a lot. And it should be. Because accessibility is a lot.
>
>
> It Is Open Source
>
> I built this for the community. It is free. It is MIT licensed. Anyone
> using Claude Code can install it in about thirty seconds.
>
> The installer asks if you want it at the project level or globally. It
> works on macOS, Linux, and Windows. It even has an auto-update system
> that checks GitHub daily for improvements.
>
> Here is the repo: https://github.com/taylorarndt/a11y-agent-team
>
>
> This Is a Preview
>
> I am still testing. I am still refining the agents. I am still finding
> gaps and fixing them. This is not a finished product announcement.
> This is a preview. I wanted to share it early because accessibility
> should not wait for a polished launch.
>
> If you try it and something is missing, open an issue. If a pattern
> gets overlooked, tell me. If you work with a framework that has
> specific gotchas, contribute. This is a community project and it will
> get better with more eyes on it.
>
>
> Why I Care This Much
>
> I use assistive technology every day. Accessibility is not a feature I
> advocate for. It is how I experience the internet. Every inaccessible
> component is a door that does not open for me. Every missing label is
> a form I cannot fill out. Every broken modal is a trap I have to
> escape from.
>
> AI tools should make the web more accessible, not less. They generate
> code at a speed and scale that humans never could. If that code is
> inaccessible by default, the problem is not getting smaller. It is
> getting bigger. Fast.
>
> That is why I built this. Not because it is a cool project. Because I
> need it. And I am not the only one.
>
> If you want to support this, star the repo and watch it for updates.
> If you find gaps, open an issue. If you have ideas or
> framework-specific patterns to add, feel free to contribute. This is a
> community project. The more people involved, the better it gets.
>
> Here is the repo one more time:
> https://github.com/taylorarndt/a11y-agent-team
>
> Thank you for reading. More updates coming as the agents improve.
>
> Taylor’s Substack is a reader-supported publication. To receive new
> posts and support my work, consider becoming a free or paid subscriber.
>
> https://taylorarndt.substack.com/p/i-got-fed-up-with-ai-forgetting-accessibility
>
>
> _______________________________________________
> NFBCS mailing list
> NFBCS at nfbnet.org
> http://nfbnet.org/mailman/listinfo/nfbcs_nfbnet.org
> To unsubscribe, change your list options or get your account info for NFBCS:
> http://nfbnet.org/mailman/options/nfbcs_nfbnet.org/tyler%40tysdomain.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nfbnet.org/pipermail/nfbcs_nfbnet.org/attachments/20260222/dbf9707b/attachment.htm>
More information about the NFBCS
mailing list