Skip to content
Testing
Skill

/kb-media-accessibility

Reference data, not a reviewer. Video/audio accessibility: WebVTT/SRT/TTML captions, audio descriptions, accessible media player ARIA, and WCAG 1.2.x compliance.

From plugin
accessibility-agents
431113 skills7 hooks

Claude Code

$ npx -y skills add Community-Access/accessibility-agents --skill kb-media-accessibility --agent claude-code

SKILL.md

kb-media-accessibility.SKILL.md
name: kb-media-accessibility
description: "Reference data, not a reviewer. Video/audio accessibility: WebVTT/SRT/TTML captions, audio descriptions, accessible media player ARIA, and WCAG 1.2.x compliance."
license: MIT
disable-model-invocation: true
user-invocable: false
metadata:
  tier: reference
  domain: cross-cutting
  output: none
  effort: low
  title: Media Accessibility

Media Accessibility Skill

Reference data for video, audio, and streaming media accessibility. Used by `media-accessibility` agent and any web agent encountering `<video>` or `<audio>` elements.

---

WCAG 1.2 Time-Based Media Criteria

Each SC, with its level, requirement and test.

| SC | Level | Requirement | Test | |----|-------|-------------|------| | 1.2.1 | A | Audio-only/video-only: provide text transcript or audio track | Transcript exists alongside media | | 1.2.2 | A | Captions for prerecorded audio in video | Synchronized captions present | | 1.2.3 | A | Audio description OR text alternative for prerecorded video | Description track or full transcript | | 1.2.4 | AA | Captions for live audio in video | Real-time captioning active | | 1.2.5 | AA | Audio description for prerecorded video | Description track present | | 1.2.6 | AAA | Sign language for prerecorded audio | Sign language interpretation video | | 1.2.7 | AAA | Extended audio description | Paused video for long descriptions | | 1.2.8 | AAA | Media alternative for prerecorded video | Full text alternative document | | 1.2.9 | AAA | Audio-only (live): text alternative | Real-time text transcript |

Caption File Formats

WebVTT (Web Video Text Tracks)

WEBVTT

00:00:01.000 --> 00:00:04.000
Welcome to the accessibility course.

00:00:04.500 --> 00:00:08.000
Today we'll cover caption best practices.

00:00:08.500 --> 00:00:12.000
<v Speaker 2>Let's start with file formats.

**Key rules:**

  • File must start with `WEBVTT` header
  • Timestamps: `HH:MM:SS.mmm --> HH:MM:SS.mmm`
  • Speaker identification: `<v Speaker Name>Text`
  • Style-guide values (for example the DCMP Captioning Key), not WCAG requirements: maximum 2 lines per caption, about 32 characters per line, display time roughly 1 to 7 seconds

SRT (SubRip Text)

1
00:00:01,000 --> 00:00:04,000
Welcome to the accessibility course.

2
00:00:04,500 --> 00:00:08,000
Today we'll cover caption best practices.

**Key rules:**

  • Sequential numbering starting at 1
  • Timestamps use comma for milliseconds (not period)
  • Blank line between entries
  • No styling support (unlike WebVTT)

TTML (Timed Text Markup Language)

  • XML-based, used in broadcast and streaming
  • Supports styling, positioning, and region layout
  • IMSC (Internet Media Subtitles and Captions) is the web profile

Caption Quality Guidelines

Each metric, with its target. These are caption style-guide and broadcast-practice targets; WCAG 1.2.2 and 1.2.4 require captions but set no numeric values.

| Metric | Target | |--------|------------| | Accuracy | 99%+ word accuracy | | Synchronization | Within 1 second of audio | | Speaker identification | Required when 2+ speakers | | Sound effects | Describe in brackets: `[applause]`, `[phone rings]` | | Music | Describe: `[upbeat music]`, `[dramatic orchestral score]` | | Caption rate | Maximum 200 words per minute (3 words/second) | | Line length | Maximum 32 characters per line | | Lines per caption | Maximum 2 lines | | Placement | Bottom center default; move for on-screen text |

Audio Description

Audio description narrates visual information during pauses in dialogue.

**Requirements:**

  • Describe: actions, scene changes, on-screen text, facial expressions relevant to plot
  • Don't describe: obvious audio cues, subjective interpretations
  • Timing: fit into natural pauses; for extended descriptions (1.2.7), video pauses automatically
  • Voice: distinct from program audio, clear and neutral

**HTML implementation:**

<video controls>
  <source src="video.mp4" type="video/mp4">
  <track kind="captions" src="captions-en.vtt" srclang="en" label="English" default>
  <track kind="descriptions" src="descriptions-en.vtt" srclang="en" label="English Audio Descriptions">
</video>

Browsers do not voice a `kind="descriptions"` text track, and screen reader support for it is limited. To meet 1.2.5 reliably, offer a version of the video with descriptions in the audio track (or a player that voices the text track), and keep the text track as a supplement.

Accessible Media Player ARIA Patterns

Minimum Controls

Every media player must have keyboard-accessible controls for the items below. Prefer native `<button>` and `<input type="range">`; the roles listed are for custom controls:

  • Play/Pause (`role="button"`, `aria-label="Play"` / `aria-label="Pause"`)
  • Volume (`role="slider"`, `aria-label="Volume"`, `aria-valuemin`, `aria-valuemax`, `aria-valuenow`)
  • Seek/Progress (`role="slider"`, `aria-label="Seek"`, `aria-valuetext="2 minutes 30 seconds"`)
  • Captions toggle (`role="button"`, `aria-pressed`, `aria-label="Toggle captions"`)
  • Fullscreen (`role="button"`, `aria-label="Enter fullscreen"` / `aria-label="Exit fullscreen"`)

Live Region Announcements

<div aria-live="polite" class="sr-only" id="player-status">
  <!-- Announce: "Playing", "Paused", "Video ended", "Captions on", "Captions off" -->
</div>

Keyboard Shortcuts (Media Player Convention)

Each key, with its action.

| Key | Action | |-----|--------| | Space / Enter | Play/Pause | | Left Arrow | Rewind 5 seconds | | Right Arrow | Forward 5 seconds | | Up Arrow | Volume up | | Down Arrow | Volume down | | M | Mute/Unmute | | C | Toggle captions | | F | Toggle fullscreen |

Single-letter shortcuts (M, C, F) must work only while the player has focus, or be possible to turn off or remap (2.1.4 Character Key Shortcuts, A).

Transcript Best Practices

  • Provide a full-text transcript adjacent to or linked from the media
  • Include speaker identificatio
Read more
@community-access
Ships withaccessibility-agents

WCAG 2.2 AA enforcement for agentic coding, as a set of Agent Skills. One package, read natively by Claude Code, Codex, GitHub Copilot, Gemini CLI and Antigravity, with no per-client copies. Models forget accessibility while generating code.

Stars on GitHub

Momentum

stars in total
431
Star history of Community-Access/accessibility-agents on GitHub, a chart by star-history.com

Other skills on accessibility-agents.

More skills from other plugins.

api-review

api-review

Produce the "Playwright 1.xx API Review" artifact for a range of commits - the public API additions and the breaking or behavior…

@microsoft@microsoftInstall Skill
add-e2e-selectors

add-e2e-selectors

Add reliable @grafana/e2e-selectors to interactive elements and key containers in the Grafana frontend. Use when adding e2e…

grafanatoday78k
@grafana@grafanaInstall Skill
promptfoo-evals

promptfoo-evals

Write, refine, run, and QA promptfoo evaluation suites: promptfooconfig.yaml, prompts, providers, vars, tests, assertions,…

@promptfoo@promptfooInstall Skill
deepeval

deepeval

DeepEval evaluation workflow for AI agents and LLM applications. TRIGGER when the user wants to evaluate or improve an AI agent,…

@confident-ai@confident-aiInstall Skill

Questions about kb-media-accessibility.

Which coding agents can use kb-media-accessibility?
kb-media-accessibility installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.