All downloads

Open source · MIT · v1.1.1

Accessibility Devkit

Accessibility belongs in the build while the interface is still easy to change. It makes the path from intention to outcome shorter and more forgiving.

Start in a minute

Choose the shortest path to the outcome you need. Each route stands on its own.

01

Run a check

Check contrast, scan local HTML, review readability, or assess a timing policy from the command line.

Copy a command

02

Import a utility

Add one portable function or one focused browser package. No overlay and no hosted service.

See examples

03

Add the review workflow

Give a compatible coding tool the evidence and verification guidance behind the packages.

Install the workflow

Run a useful check

The Node and Python commands share the same interface, JSON contract, findings, and exit codes. Manual checks never fail CI.

Node 22+

npx @accessibility-devkit/cli contrast '#595959' '#ffffff'
npx @accessibility-devkit/cli scan ./index.html --profile all

Python 3.11+

pipx run accessibility-devkit contrast '#595959' '#ffffff'
pipx run accessibility-devkit scan ./index.html --profile cvi --format json

Live URL? Use Deque's maintained browser runner: npx @axe-core/cli https://example.com.

A clean scan means the covered checks found nothing. It does not mean the interface is accessible.

Import a utility

The portable core has no runtime dependencies. Browser packages stay focused, so a project can install only the behavior it needs.

JavaScript

npm install @accessibility-devkit/core
import { getContrastRatio, meetsContrastThreshold } from '@accessibility-devkit/core';

const ratio = getContrastRatio('#595959', '#ffffff');
const passes = meetsContrastThreshold('#595959', '#ffffff', 'AA', 'normal');

TypeScript

import { assessTimeLimit, type TimeLimitPolicy } from '@accessibility-devkit/core';

const policy: TimeLimitPolicy = { adjustmentMultiplier: 10 };
console.log(assessTimeLimit(policy));

Python

from accessibility_devkit import get_contrast_ratio

ratio = get_contrast_ratio("#595959", "#ffffff")

Profiles that need more than a scan

Specialized profiles preserve the difficult questions instead of squeezing them into a score or a universal preset.

What the tools can inspect and what still needs a browser, assistive technology, or a person.
Profile or needUseful automationStill verify
Switch accessFocus-order risks, pointer-only clues, and timing-policy boundariesSystem Switch Control, scan speed, dwell, repeat filtering, and task completion
CVIExact WCAG checks when the source supplies measurable evidenceThe individual's profile, complexity, salience, clutter, fatigue, motion, and multisensory alternatives
Color visionFour simulation modes and exact contrast mathMeaning beyond color, real states, and individual perception
Motion and flashReduced-motion handling and flash-frequency screeningLuminance, affected area, saturated red, vestibular comfort, and context
Cognitive accessTiming policies, blocked paste, repeated entry, undo, and English readability cluesComprehension, recovery, pacing, attention, fatigue, and real task completion

CVI, color-vision deficiency, low vision, and photophobia describe different needs. The Devkit keeps their language and verification separate.

Package map

Ten npm packages ship ECMAScript modules, CommonJS, TypeScript declarations, source maps, a README, and the MIT license.

Portable core and command line

core

Contrast, English readability analysis, flash-frequency screening, and timing-policy assessment.

getContrastRatioassessTimeLimitanalyzeReadableText

cli

Conservative static scans and the shared runtime-neutral report contract.

scancontrastreadabilitytiming

Focused browser packages

audit

axe-core browser audits and jsx-a11y's maintained flat configuration.

components

Focus traps, roving tabindex, dialogs, menus, skip links, and live announcements.

accommodations

Typography preferences, text-spacing override tests, contrast, and color-vision simulation.

motor

Target measurement, pointer cancellation, drag alternatives, dwell, and repeat filtering.

cognitive

Timing policy, session helpers, repeated-entry memory, authentication, and undo.

language

English readability clues, long-sentence flags, complex words, and abbreviations.

media

Captions, transcripts, autoplay-audio review, and media controls.

motion

Reduced-motion behavior, safe scrolling, and flash-frequency screening.

Add the review workflow

The review source is plain Markdown in skills/accessibility/. Load that folder with any compatible skill loader. Tool-specific marketplaces are shortcuts, not requirements.

Portable source

git clone https://github.com/actually-useful-ai/accessibility-devkit.git

Keep SKILL.md beside its references/ folder. Start with the general review, then add a specialist only when the product calls for one.

accessibilityaccessibility-gamingaccessibility-businessaccessibility-designaccessibility-mobile

Marketplace shortcuts

Claude Code

/plugin marketplace add actually-useful-ai/accessibility-devkit
/plugin install accessibility@accessibility-devkit

Codex

Import .claude-plugin/marketplace.json in the Plugins Directory, choose Accessibility, and start a fresh task.

Evidence before claims

Reports separate detected findings from manual checks. They carry severity, certainty, evidence level, WCAG references where applicable, remediation, and a verification step. There is no synthetic accessibility score.

Automation

Use source checks and browser automation to find barriers. Preserve incomplete results and review the separate manualChecks collection.

Interaction

Complete the task with keyboard-only navigation, visible focus, supported screen readers, zoom and reflow, forced colors, and reduced motion.

Specialized input

Use real Switch Control for switch-critical paths. Choose dwell and repeat timing with the person, not a universal default.

Human review

Test comprehension, comfort, recovery, and task completion with the people the work is meant to serve whenever practical.

Moving from v1.0

v1.1 uses names that describe what each function can prove.

Public API changes in v1.1.
v1.0v1.1
meetsWCAGmeetsContrastThreshold
findAccessibleColorfindNearestPassingColor
simulateColorBlindnesssimulateColorVisionDeficiency
applyDyslexiaFriendlyFontapplyTypographyPreference with caller-supplied values
applyTextSpacingapplyTextSpacingTest, including paragraph spacing and restore
meetsTextSpacingRemoved. Author values alone cannot establish WCAG 1.4.12 conformance.
isUnsafeFlashRateexceedsFlashFrequencyLimit; frequency is one part of flash review

Release and security

Accessibility Devkit v1.1.1 is MIT licensed and maintained by Luke Steuber. Review the source, report a vulnerability privately, or read the complete runtime notices.