<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<title>6 Agents on Friday. 47 by Monday</title>
<style><!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Aptos;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
font-size:12.0pt;
font-family:"Aptos",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
pre
{mso-style-priority:99;
mso-style-link:"HTML Preformatted Char";
margin:0in;
font-size:10.0pt;
font-family:"Courier New";}
span.HTMLPreformattedChar
{mso-style-name:"HTML Preformatted Char";
mso-style-priority:99;
mso-style-link:"HTML Preformatted";
font-family:Consolas;}
span.EmailStyle22
{mso-style-type:personal-reply;
font-family:"Aptos",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;
mso-ligatures:none;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:1363357817;
mso-list-template-ids:2077257136;}
@list l0:level1
{mso-level-number-format:bullet;
mso-level-text:\uf0b7;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l0:level3
{mso-level-number-format:bullet;
mso-level-text:\uf0a7;
mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level4
{mso-level-number-format:bullet;
mso-level-text:\uf0a7;
mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level5
{mso-level-number-format:bullet;
mso-level-text:\uf0a7;
mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level6
{mso-level-number-format:bullet;
mso-level-text:\uf0a7;
mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level7
{mso-level-number-format:bullet;
mso-level-text:\uf0a7;
mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level8
{mso-level-number-format:bullet;
mso-level-text:\uf0a7;
mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level9
{mso-level-number-format:bullet;
mso-level-text:\uf0a7;
mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
ol
{margin-bottom:0in;}
ul
{margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">It is a journey \u2026 We are building and learning together as a community. We are utilizing the latest information on agentic knowledge to ensure that we have good orchestration across the agents and subagents. This was purposeful in the design.
We are still testing, learning and evolving. Please consider joining us to make a difference. For example, we are already making a difference based on direct feedback from issue contributors and pull requests.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">We know that automated technology is not always accurate and we make no claims in it being 100% accurate, in fact, we talk a lot about the human factor \u2026 Humans are always involved and drive with purpose. It is about additional detail and
to give information as another data source. Tools like AXECore, Github Accessibility Scanner, Lighthouse and more are being utilized.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Jeff Bishop<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Ty Littlefield <tyler@tysdomain.com>
<br>
<b>Sent:</b> Wednesday, February 25, 2026 2:45 PM<br>
<b>To:</b> NFB in Computer Science Mailing List <nfbcs@nfbnet.org><br>
<b>Cc:</b> Jeff Bishop <jeff@jeffbishop.com><br>
<b>Subject:</b> Re: [NFBCS] 6 Agents on Friday. 47 by Monday<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p>This is a lot of agents, but my question from the other day still exists.<o:p></o:p></p>
<p>When Aria issues exist from AI code, it's not generally a context window issue for me. It's the fact that AI is outright incorrect about accessibility solutions. So, for example it might add an aria label of "main navigation" to a region with the nav tag,
meaning that a screen reader will read "main navigation navigation region."<o:p></o:p></p>
<p>I'm curious how this is being tackled. We can throw all the agents we like at accessibility, and in the case of context windows this will be helpful, as it is in any type of code work--not just accessibility--but, my problem is less that the context windows
slip and more that the information provided is incorrect.<o:p></o:p></p>
<p><o:p> </o:p></p>
<p>How has this project been tested, and of those tests, how does more agents with context windows change the output?<o:p></o:p></p>
<p>Thanks,<o:p></o:p></p>
<p><o:p> </o:p></p>
<p><o:p> </o:p></p>
<div>
<div>
<p><strong><span style="font-family:"Aptos",sans-serif">Ty Littlefield (he/him/his)</span></strong><o:p></o:p></p>
<ul type="disc">
<li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo1">
<a href="https://tysdomain.com" target="_blank">From Bytes to Bites</a>| <o:p></o:p></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo1">
<a href="https://www.linkedin.com/in/ty-lerlittlefield/">Linkedin</a>|<o:p></o:p></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo1">
<a href="https://github.com/tlfdev">Github</a><o:p></o:p></li></ul>
</div>
</div>
<div>
<p class="MsoNormal">On 2/25/2026 12:50 PM, Jeff Bishop via NFBCS wrote:<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal"><span style="font-size:11.0pt">Hello NFBCS Members,</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Taylor and I are so excited about what this project has turned out to be \u2026 Visit the community site on Github, learn about the GIT Going with Github course that is happening on March 7<sup>th</sup> and 8<sup>th</sup>
and get involved. We would love your input, engagement and most importantly your contributions.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Jeff Bishop</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">It is early Wednesday morning. February 26th. Something went so right over the past five days that my brain will not stop replaying it.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Let me take you back to Friday night.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">How a Frustrated Friday Night Became a Movement</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Friday Night on Discord</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">I was working on a project. I do not even remember what it was. Something with Claude Code, like most of my nights. And I was on a Discord call with some friends, just talking while I worked.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Then something happened in the code that just set me off.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">ARIA roles placed wherever the model felt like putting them. No logic. No structure. Just ARIA sprayed across the page like decoration. Inputs without labels. Modals with no focus trapping. Divs pretending
to be buttons. The same failures I have been correcting for months. Every single session.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">I had enough.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">I had enough of fixing ARIA by hand. I had enough of inaccessible code shipping as the default. I had enough of correcting these AIs over and over and getting the same broken output the next time I asked.
You know the feeling. It is too much. At some point you stop asking nicely and you start building.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">So that is what I did. I decided to build a team of AI agents. Not one model trying to remember everything. A team. Specialists. Each one responsible for one piece of accessibility that it cannot forget, because
that is the only thing it knows.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">I had no idea what I was getting into.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">I was just trying to solve a problem for myself. I wanted Claude to actually write accessible code without me having to babysit every line. That is it. I did not set out to build a forty-seven agent system
across three platforms with a GitHub organization and a website and a press release. I was just frustrated on a Friday night.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Of course, I tried other things first. I tried skills in Claude Code. They activate maybe 10 percent of the time without manual intervention. I tried writing detailed instructions in CLAUDE.md files. They
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. Every time.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">So, I built agents instead. Six of them. I published a preview post that night, shared the repo, and went to bed.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">By Saturday morning, this thing had already outgrown what I imagined. And it did not stop there.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">This Is Not Just Me</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">I need to say this up front because it matters more than anything else in this post.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">This is not my project anymore. It never should have been just mine. The moment it stopped being one person yelling into the void and became a team of people building together, everything changed. The scope
changed. The quality changed. The ambition changed. The whole thing became something I could not have built alone. And that is the point.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Accessibility has always been a community fight. One person cannot cover every screen reader, every browser, every framework, every assistive technology, every lived experience. That is why the project moved
to a GitHub organization called Community Access. That is why it is MIT licensed. That is why it costs nothing. Because the more people who touch this, the better it gets for the people who need it.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Jeff</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Jeff Bishop and I were talking on Friday night. That is how this started. I was venting about AI tools forgetting accessibility, and Jeff was right there with me. We were already in the same conversation when
I published the preview post and shared the repo.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">By Saturday morning, Jeff was not just talking anymore. He was building. I did not expect what happened next.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Jeff did not open an issue or send a message saying nice work. He started pushing code. Within hours he was deep in the codebase, moving faster than I could keep up. By the end of Saturday, he had more commits
than I did.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">That is not an exaggeration. Look at the git log. Forty-three commits from Jeff in five days. He saw what I was trying to do. He saw where it needed to go. And he went there.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Jeff is blind. Like me, he uses assistive technology every day. He is not reviewing accessibility as an abstract checklist. He is living it. When he builds an agent that enforces focus trapping in modals,
it is because he has been trapped in modals. When he writes rules for screen reader announcements, it is because he has sat in silence waiting for an announcement that never came.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">That shared experience is what made this work. We did not have to convince each other that accessibility matters. We just had to build.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">The Hooks Problem</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Now let me explain hooks, because if you read my preview post on Friday, I made hooks sound like the answer to everything. They were not.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">A hook in Claude Code is a script that fires every time you send a prompt. Think of it like a checkpoint. Before the AI starts working, the hook looks at what you asked and decides if extra rules should apply.
If the task involves UI code, the accessibility agents activate. If it does not, they stay out of the way. That was the idea. And on Friday night, it worked.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">The problem arose when we tried to make hooks work for everyone. Not just me on my Mac. Everyone. On every platform and different Claude Code version.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Hooks are fragile. They break across platforms. The JSON schema kept changing. PowerShell on Windows handled them differently than bash on Mac and Linux. Some hooks fired when they should not have. Others
did not fire when they should have. We spent hours debugging output formats, timeout issues, and schema mismatches.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Jeff and I merged pull requests fixing hooks. A pull request is how you propose a change to code on GitHub. Someone reviews it, approves it, and it gets merged into the main project. We merged pull requests
fixing hooks. Then more pull requests fixing the fixes. Then more fixing those. It was a cycle. Every time we thought we had it, something else broke.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">On Tuesday, Jeff made a decision I did not expect. He removed all of them. Every hook. Every hook file. Every hook reference in every documentation file. Gone.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">He replaced them with something better. Instead of hooks intercepting prompts, orchestrator agents now coordinate the team through explicit contracts. Each agent returns structured output with confidence levels
so the next agent knows exactly what it is getting. Nothing gets lost between steps because the contracts define exactly what goes in and what comes out.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">It is cleaner. It is more reliable. And it works on every platform without platform-specific debugging.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">That is the kind of decision that only happens when someone is deep enough in the code to see the real problem. Jeff was deep enough by Saturday afternoon.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">What It Was</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">On Friday, Accessibility Agents was six agents in a personal GitHub repo under my name. An accessibility lead, an ARIA specialist, a modal specialist, a contrast master, a keyboard navigator, and a live region
controller. It supported Claude Code. That was it.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">What It Is Now</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Forty-seven agents across four teams. Three platforms. Fourteen shared knowledge modules. Fifty-two pre-built prompts. A GitHub organization. A dedicated website. One command to install.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">The web accessibility team alone has sixteen agents. ARIA, modals, contrast, keyboard navigation, live regions, forms, alt text and headings, data tables, link text, cognitive accessibility, mobile accessibility,
design systems, guided audits, testing guidance, and WCAG reference.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">There is a document scanning team that covers Word, Excel, PowerPoint, PDF, and EPUB files. Forty-six built-in rules for Office documents. Fifty-six for PDFs. It generates VPAT compliance reports. It exports
findings to CSV with links to help documentation so people know exactly how to fix what it finds.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">There is a markdown documentation team that scans files across nine accessibility domains.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">There is a GitHub workflow team with eleven agents for PR review, issue triage, daily briefings, analytics, and repository management.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">It runs on Claude Code, GitHub Copilot, and Claude Desktop. It installs with one command on macOS, Linux, and Windows. It is free. It is MIT licensed. It costs nothing.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Before Anyone Asks, No, This Is Not an Overlay</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">I can already see the comment. Someone is going to read this post, see forty-seven AI agents and the word accessibility in the same sentence, and think: great, another magic fix. Another overlay. Another tool
that claims to solve accessibility so developers do not have to think about it.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">No. Absolutely not. If you have read my writing before, you know how I feel about overlays. One of them literally broke my rent portal so badly that I could not pay rent until the landlord removed it. I have
written an entire post about why overlays are harmful. I am not about to build one.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Let me be crystal clear about what Accessibility Agents is and what it is not.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">This is a developer tool. It runs inside your code editor while you are writing code. It helps the AI write more accessible code from the start. That is it. It does not touch your website. It does not add
a widget. It does not inject JavaScript into your pages. It does not promise compliance. There is no toolbar. There is no badge. There is no fee.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">And here is the part I really need you to hear. This does not replace testing with real assistive technology. It does not replace VoiceOver. It does not replace NVDA. It does not replace JAWS. It does not
replace a human being navigating your site with a keyboard and a screen reader and telling you what is broken.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">What it does is raise the floor. Code that comes out of an AI tool with these agents active is going to be more accessible than code that comes out without them. Labels will be there. Focus trapping will be
there. ARIA roles will make sense instead of being scattered like confetti. Contrast ratios will be checked before you ship, not after someone files a complaint.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">That is not a magic fix. That is a better starting point. You still need to test. You still need real users. You still need to care. But at least you are not starting from zero every single time.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">If anyone tries to sell you a tool that replaces accessibility testing, run. This is not that tool. This is the tool that makes the code better before testing even begins.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">It Moved</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">The project does not live under my personal GitHub account anymore. It is at the Community Access organization now.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">That was deliberate. This is not my project. It is not Jeff\u2019s project. It is a community project. The more perspectives and lived experiences that go into these agents, the better they serve the people who
need them.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Thirty Pull Requests in Five Days</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">I keep coming back to this number because it tells the story better than anything else I can say.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Thirty pull requests merged in five days. That means thirty separate changes were proposed, reviewed, and added to the project. Three hundred and sixty files changed. Seventy-three thousand lines of code added.
Thirty-four security vulnerabilities identified and resolved. Path traversal prevention. Injection protection. ZIP bomb limits. Input validation at every call site.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">This was not a casual weekend project. This was a sprint. Jeff and I were building in parallel, reviewing each other\u2019s code, catching issues, pushing fixes. The velocity was unlike anything I have experienced
on an open source project.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">And it happened because people who need accessible software decided to stop waiting for someone else to build it.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Why This Matters</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">AI coding tools 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.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Ninety-five point nine percent of the top one million websites already have detectable accessibility failures. That number has barely moved in years. AI tools risk making it worse by automating the same mistakes
at a scale no human team could match.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">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.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">But here is what I have learned over the past five days. I am not the only one who feels this way. Jeff feels it. The people who starred the repo and opened issues feel it. This is not one person\u2019s frustration.
It is a shared experience across an entire community that has been dealing with inaccessible software for decades.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">That is why this is not just me. That is why it cannot be just me. One person\u2019s agents catch one person\u2019s blind spots. A community\u2019s agents catch the patterns that none of us would find alone.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Version 2.0</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">On Tuesday, Jeff and I got on a call and decided it was time. We were going to release version 2.0.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Five days earlier I had six agents and a personal repo. Now we had forty-seven agents, three platforms, a GitHub organization, a website, and a community. It was not a preview anymore. It was a release.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">We published the official announcement yesterday. You can read the full press release on the Community Access website:</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><a href="https://community-access.github.io/news.html#post/accessibility-agents-v2-launch">https://community-access.github.io/news.html#post/accessibility-agents-v2-launch</a></span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">I am sharing it here because this community has followed this journey from the beginning. You read the preview post on Friday. You saw the Swift agent team launch. You have been here for the frustration and
the building and the breakthroughs. You deserve to see how it landed.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Forty-seven agents. Three platforms. One command to install. Zero cost. That is the headline. But the real story is that a community built this in five days because the tools we depend on every day were not
building it for us.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Be Part of This</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">So now I am promoting it. And I am hoping you will try it out.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">I want to make this as easy as possible. You do not need to be a developer to help. You do not need to write code. You do not need to know what ARIA stands for. If you care about accessible software, there
is something you can do right now.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Talk about it. Share the project with someone who builds software. Post about it. Mention it in a conversation. The biggest thing holding accessibility back is that not enough people know it is a problem.
Every time someone new hears about this project, that changes a little.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Try it. Install it with one command. Use it on your next project. See what it catches. See what it misses.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">If you find a bug, file it. Go to the GitHub repo, open an issue, and describe what happened. What you expected. What you got instead. That is it. A good bug report is one of the most valuable contributions
anyone can make. It does not take expertise. It takes honesty.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">If you want to contribute code, the agents are plain markdown files. You do not need special tooling. You do not need permission. Fork it, make a change, open a pull request. Jeff did exactly that on Saturday
morning and look where we are now.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Website: <a href="https://community-access.github.io/">
https://community-access.github.io/</a></span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">GitHub: <a href="https://github.com/Community-Access/accessibility-agents">
https://github.com/Community-Access/accessibility-agents</a></span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Thank You</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">To Jeff, for picking this up on Saturday morning and not putting it down. For removing the hooks when I was still trying to fix them. For writing forty-three commits in five days. For caring about this as
much as I do.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">To every contributor who showed up, opened a PR, filed an issue, or starred the repo. You turned a frustrated Friday night into something real.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">And to everyone reading this. If you build software, you have the power to make it accessible. These agents are one way to start. But they are not the finish line. They are the starting block.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">This is how it starts. Not with a company. Not with funding. With people who got tired of fighting the same fight every day and decided to build something that fights back.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">That is not just me. That is all of us.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><br>
<br>
<o:p></o:p></p>
<pre>_______________________________________________<o:p></o:p></pre>
<pre>NFBCS mailing list<o:p></o:p></pre>
<pre><a href="mailto:NFBCS@nfbnet.org">NFBCS@nfbnet.org</a><o:p></o:p></pre>
<pre><a href="http://nfbnet.org/mailman/listinfo/nfbcs_nfbnet.org">http://nfbnet.org/mailman/listinfo/nfbcs_nfbnet.org</a><o:p></o:p></pre>
<pre>To unsubscribe, change your list options or get your account info for NFBCS:<o:p></o:p></pre>
<pre><a href="http://nfbnet.org/mailman/options/nfbcs_nfbnet.org/tyler%40tysdomain.com">http://nfbnet.org/mailman/options/nfbcs_nfbnet.org/tyler%40tysdomain.com</a><o:p></o:p></pre>
</blockquote>
</div>
</body>
</html>