[NFBCS] From Taylor Arndt: I Got Fed Up With AI Forgetting Accessibility, So I Built a Team That Will Not
Taylor Arndt
taylorarndt99 at gmail.com
Mon Feb 23 01:07:31 UTC 2026
I’m actually on this list and yes, we’ve got a big announcement and it’s
coming to GitHub copilot
Taylor
On Sun, Feb 22, 2026 at 7:05 PM dandrews920--- via NFBCS <nfbcs at nfbnet.org>
wrote:
> He is not necessarily on this list – as I forwarded the message.
>
>
>
> Dave
>
>
>
>
>
>
>
> *From:* NFBCS <nfbcs-bounces at nfbnet.org> *On Behalf Of *Humberto Avila
> via NFBCS
> *Sent:* Sunday, February 22, 2026 4:02 PM
> *To:* NFB in Computer Science Mailing List <nfbcs at nfbnet.org>
> *Cc:* Humberto Avila <Humberto_Avila.IT104 at outlook.com>
> *Subject:* Re: [NFBCS] From Taylor Arndt: I Got Fed Up With AI Forgetting
> Accessibility, So I Built a Team That Will Not
>
>
>
> 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
>
>
>
>
>
> [image: 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
>
> 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/taylorarndt99%40gmail.com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nfbnet.org/pipermail/nfbcs_nfbnet.org/attachments/20260222/e94cdc10/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image001.png
Type: image/png
Size: 8834 bytes
Desc: not available
URL: <http://nfbnet.org/pipermail/nfbcs_nfbnet.org/attachments/20260222/e94cdc10/attachment.png>
More information about the NFBCS
mailing list