[NFBCS] From Taylor Arndt: I Got Fed Up With AI Forgetting Accessibility, So I Built a Team That Will Not

Humberto Avila Humberto_Avila.IT104 at outlook.com
Sun Feb 22 22:01:35 UTC 2026


Thank you Taylor for sharing this!
I am wondering, will this team of agents be deployed in other AI GPTs other thanClaude?
Do you need a paid Claude account to use Code projects and these different types of agents?
I have been recently getting intofibe-coding myself, just as a hobby. And I really like it, but I run into the same problem from time to time with non-accessible code, and I have to check the stuff manually.

Thanks!
Humberto

[JAWS Certified, 2025]<https://www.freedomscientific.com/Training/Certification>

From: NFBCS <nfbcs-bounces at nfbnet.org> On Behalf Of Ty Littlefield via NFBCS
Sent: Sunday, February 22, 2026 1:44 PM
To: NFB in Computer Science Mailing List <nfbcs at nfbnet.org>
Cc: Ty Littlefield <tyler at tysdomain.com>
Subject: Re: [NFBCS] From Taylor Arndt: I Got Fed Up With AI Forgetting Accessibility, So I Built a Team That Will Not


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
[https://substackcdn.com/image/fetch/$s_!RcQU!,f_auto,q_auto:best,fl_progressive:steep/https%3A%2F%2Ftaylorarndt.substack.com%2Ftwitter%2Fsubscribe-card.jpg%3Fv%3D-888026622%26version%3D9]

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<mailto: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/09b4bf96/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image001.png
Type: image/png
Size: 8834 bytes
Desc: image001.png
URL: <http://nfbnet.org/pipermail/nfbcs_nfbnet.org/attachments/20260222/09b4bf96/attachment.png>


More information about the NFBCS mailing list