Back/How I AI
How I AI

How I AI: Building Custom AI Accessibility Tools for Slack with Joe McCormick & Claude Code

Visually impaired software engineer Joe McCormick joins me to share his inspiring workflows for building custom AI-powered Chrome extensions, including an image-to-text describer, an instant spell-checker, and a link summarizer he codes live using Claude Code.

Claire Vo's profile picture

Claire Vo

February 15, 2026·7 min read
Episode outline

In this episode of How I AI, Babylist principal software engineer Joe McCormick shows three accessibility tools he built for Slack and then creates a link-summarizing Chrome extension live with Claude Code in roughly 25 minutes.

Joe lost most of his central vision to a rare genetic disorder just before college. He now uses ChatGPT, Gemini, and small custom extensions to remove specific points of friction from software engineering and daily life.

His tools are narrow by design: describe an image, correct a typo without rewriting the sentence, or summarize links in the Slack message currently in focus.

The live build covers his full process, including dictating the product requirements in VS Code, generating the extension with Claude Code, testing it with a screen reader, and debugging the result from a screenshot.

Make images in Slack legible without sight

The Slack image-description workflow turns an image posted without alt text into an on-demand description in the conversation where Joe encounters it.

The important interface choice is on demand. Joe can request the description when an image matters instead of filling every channel with automatic bot replies. The output stays close to the source and can be compared with the surrounding conversation.

Images of strollers, car seats, and other products appear throughout Joe's work at Babylist. Zooming and panning with a screen magnifier takes time, so he built a Chrome extension that describes the selected image.

The extension works in four steps:

  1. Trigger the shortcut: Focus a Slack message with an image and press Ctrl+Shift+D.
  2. Analyze the image: The extension sends the image to a vision-capable model.
  3. Read the description: An accessible modal displays details such as the product type, canopy, and visible features.
  4. Ask a follow-up: Joe can ask a question such as "What age child is this for?" to get the specific context he needs.

The same pattern can support design work. Joe is adapting it for Figma so he can ask about component colors, states, and call-to-action styles without inspecting each element visually.

Correct dictated text without rewriting the speaker

The accessible AI spell-checker workflow preserves Joe's wording while fixing the transcription and spelling errors that make voice input harder to use across the web.

A generic rewrite would erase voice and introduce new meaning. Joe gives the tool the narrower job of correction, making the result faster to review with a screen reader and safer to paste back into the original field.

Joe wanted a spell checker that worked cleanly with his screen reader and required one shortcut instead of several controls.

His extension uses this sequence:

  1. Type the message: Write in any web input, including the typos.
  2. Trigger the shortcut: Press Ctrl+Shift+S.
  3. Constrain the correction: The extension sends the text with one instruction:
do not change any of the words, just fix typos.

The corrected text replaces the original without rewriting the wording. Joe's screen reader announces the processing and completion states.

Joe describes this as a shorter payback period for personal software. A tool that saves a few minutes each day can now take around 30 minutes to build instead of several days.

The Slack link summarizer workflow follows the full build from dictated requirements through the Chrome extension skill, testing, screenshot-assisted debugging, and keyboard-accessible result.

Joe built the third extension during the recording. It finds external links in the focused Slack message, opens them in hidden tabs, and returns enough detail for him to decide whether to read the full article.

He used this sequence:

Dictate the product requirements

Joe opened the Copilot audio input in VS Code with Ctrl+I and dictated the product requirements.

We want to build a simple PRD for a locally run Chrome extension. Whose job is it to exist in Slack alone? And when focused on a Slack message, you can hit the keyboard shortcut, control shift one, and it will search that message to find any external links. If there are external links found, it should open them up in hidden tabs, extract their content, and send it off to open ai. To summarize.

He added that the summary should include three to five takeaways and appear in a modal that works with a screen reader. Copilot turned the dictation into a PRD with goals, user stories, and functional requirements.

Build from the PRD and a reusable skill

Joe has a Claude Skill with the patterns and boilerplate he reuses across Chrome extensions.

In Claude Code, Ctrl+G opens the prompt in a regular text editor. Joe can navigate and edit the text there with his screen reader before sending it back to the terminal.

A Visual Studio Code screen showcasing a Product Requirements Document (PRD) for a Chrome extension designed to use OpenAI for summarizing Slack links, presented alongside a terminal session showing command-line activity.

His build prompt was:

@PRD.md
Use the Claude Skill for creating chrome extensions to build out this PRD.
Use my open AI key from my shared chrome extension config.

After he saves the file, its contents return to Claude Code as the prompt.

Move the plan into an accessible editor

Claude Code generated a development plan. Joe opened it with Ctrl+G and used Markdown folding to scan headings and expand only the sections he wanted to review. That is easier with a screen reader than moving through the entire file line by line.

A development plan generated by Claude AI is displayed within VS Code, detailing steps to build a Slack link summarizer Chrome extension, including bash commands for checking configuration files.

After approval, Claude Code created the extension and added a symbolic link to Joe's shared configuration so the API key remains in one place.

Test the actual interaction

Joe enabled Chrome developer mode, loaded the extension's local folder with Load unpacked, refreshed Slack, and pressed Ctrl+Shift+1 on a message with a link.

A developer's VS Code environment, showcasing a Slack summary extension project, terminal commands, and an interaction with an AI assistant named Claude. The file explorer displays various JavaScript, JSON, and Markdown files, while the terminal verifies a hard link and provides tips for resuming an AI conversation.

The modal opened, but it displayed raw JSON text instead of the formatted summary. The API had returned text that looked like JSON rather than a response object the extension could parse.

Give the coding agent the visual evidence

Joe runs Claude Code inside the Windows Subsystem for Linux (WSL), while screenshots land on the Windows clipboard. A normal paste does not move the image across that boundary.

His /pasteimage slash command calls PowerShell to retrieve the clipboard image and make it available to Claude Code.

The Google Chrome Extensions page, showing several AI-related and productivity extensions installed, including an 'Image Description for Accessibility' tool and 'OpenAI Spell Checker'.

Claude inspected the screenshot and changed the OpenAI request to return a JSON object that the extension could parse.

Verify with the assistive workflow

Joe reloaded the extension and ran Ctrl+Shift+1 again.

A developer's Visual Studio Code environment, showcasing an active terminal with Bash commands for file system checks and an Explorer pane detailing the project structure of a 'slack-summary-extension'. The workflow demonstrates a technical task within a web development context.

The modal now displayed the article title, link, and three to five takeaways. It used ARIA roles and managed focus so a screen reader could announce and navigate the result.

Accessibility changes the development loop

Joe cannot rely on a visual scan of a terminal plan or browser layout. He moves text into tools his screen reader handles well, listens for structure, and gives Claude screenshots when a sighted model can diagnose something he cannot inspect directly.

That is not a workaround at the edge of the workflow. It is a better division of labor. The agent handles visual interpretation and mechanical code changes; Joe defines the behavior, reviews the language, tests keyboard access, and decides whether the tool solves the original problem.

His examples also show why small personal utilities are worth building. Image descriptions, typo correction, and link summaries each remove a recurring accessibility tax. None needs to become a large product before it can improve the workday.

Joe starts with one repeated point of friction and gives the tool one job. The image describer, spell checker, and link summarizer each have a keyboard trigger, a bounded model task, and an accessible result.

The same approach helps outside work. Joe uses Gemini on his phone to read picture books with his children by pointing the camera at a page and asking for the next page as they turn it together.

Pick a task that is slow or inaccessible with the standard interface. Define the smallest shortcut and output that would remove that friction, then test the result with the assistive technology that will actually be used.

The strongest requirement in Joe's tools is restraint. Describe the image that was requested. Correct the typo without changing the message. Summarize the link without taking over the channel. A bounded tool is easier to understand with assistive technology and easier to trust.

Sponsors

Thanks for supporting How I AI

Tines

Start building intelligent workflows today

Build your next product with ChatPRD

Turn an idea into a PRD, user stories, and a plan.

Try ChatPRD free

Start shipping
better products.

Join 100,000+ product managers who use ChatPRD to write better docs, align teams faster, and build products users love.

Free to start
No credit card
SOC 2 certified
Enterprise ready