AI project - 01

The Accessibility Agent

The Accessibility Agent

Scans a Figma frame, audits it against WCAG 2.1/2.2 AA, hands back developer-ready annotations, automatically.

Status

In active use

stack

Claude Code, Figma MCP, Figma REST API

type

Personal AI tooling

the problem

Accessibility review of design files is usually manual, slow, and inconsistent — someone has to click through every frame, judge tab order, guess at screen reader labels, and check contrast, then write it up in a way developers can actually act on. That's easy to skip under deadline pressure, and easy to do inconsistently across reviewers.

why i rebuilt it

This started as an agent inside EPAM's internal AI Smart Toolset. I've since rebuilt it as a standalone Claude Code project — a multi-agent pipeline with its own skills and slash commands — so the workflow isn't locked to one company's tooling and can point at any Figma file directly.

how it works

Scan

Pulls the frame's full layer, component, and style tree via Figma's MCP server, with a REST API fallback.

Audit

Applies a dedicated WCAG 2.1/2.2 AA skill — flagging only what actually needs it, never fabricating findings.

Package

Turns the audit into structured JSON, a spreadsheet-ready CSV, and a plain-English summary.

Handoff

Optionally posts each annotation as a native Figma comment for Designers, pinned to its node — always opt-in, never automatic.

Built to say “I'm not sure” rather than guess: if a scan comes back structurally sparse, the pipeline explicitly flags where it fell back to reading a screenshot instead of silently inventing structure.

Scan

Pulls the frame's full layer, component, and style tree via Figma's MCP server, with a REST API fallback.

Audit

Applies a dedicated WCAG 2.1/2.2 AA skill — flagging only what actually needs it, never fabricating findings.

Package

Documented, accessible, dev-ready - and aligned across product, eng. and leadership.

Handoff

Optionally posts each annotation as a native Figma comment for Designers, pinned to its node — always opt-in, never automatic.

output, illustrative example

{

"elements": [

{

"element_name": "Alert Bar",

"node_id": "115:9387",

"element_type": "Alert / Status Message",

"navigation_order": null,

"screen_reader_label": "Alert: Some of the items were not deleted because they are already in submission. The remaining items were deleted.",

"aria_role": "alert",

"alt_text": null,

"wcag_reference": "4.1.3 Status Messages, 1.3.1 Info and Relationships",

"severity": "High",

"recommended_fix": "Mark the container with role=\"alert\" (or aria-live=\"assertive\") so assistive tech announces it automatically on render without requiring focus to move there. Do not steal keyboard focus when it appears."

},

}

Shown as JSON here, also produced as CSV, and a plain-English summary per run.

status and impact

90%+

less manual annotations effort

70%+

improvement in design-dev deployment readiness

From the original deployment inside EPAM's AI Enablement Program. The rebuilt, portable pipeline above is in active personal use — results being revalidated on new client projects.

relevant tags

accessibility

WCAG 2.1/2.2 AA

claude code

figma rest api

Multi-agent pipeline

Want to see it work?

Happy to walk through the pipeline, the prompts, and a live run on a real Figma file. Drop your email and I'll connect with you shortly.

Your info will only be used to follow-up on this. No spam, no lists.