AgentStack
SKILL verified MIT Self-run

Rgaa Multimedia

skill-mteelokee-rgaa-accessibility-audit-rgaa-multimedia · by MTeelokee

Audit a web page for RGAA v4.1.2 Theme 4 – Multimedia accessibility compliance. Checks pre-recorded media for transcriptions, subtitles, audio descriptions, identification, alternatives for non-temporal media, auto-play sound control, keyboard controls, and assistive technology compatibility. Use this skill when someone asks to check video/audio/media accessibility, verify RGAA Theme 4, or audit…

No reviews yet
0 installs
15 views
0.0% view→install

Install

$ agentstack add skill-mteelokee-rgaa-accessibility-audit-rgaa-multimedia

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Rgaa Multimedia? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

RGAA Multimedia Accessibility Audit (Theme 4)

Audits a web page against the 13 criteria of RGAA v4.1.2 Theme 4: Multimedia.

Audit procedure

Step 1: Gather multimedia data

(() => {
  const media = { videos: [], audios: [], objects: [], embeds: [], iframes: [] };

  document.querySelectorAll('video').forEach(el => {
    const tracks = Array.from(el.querySelectorAll('track')).map(t => ({
      kind: t.kind, srclang: t.srclang, label: t.label, src: t.src?.substring(0, 100)
    }));
    media.videos.push({
      src: el.src?.substring(0, 100) || el.querySelector('source')?.src?.substring(0, 100),
      controls: el.controls,
      autoplay: el.autoplay,
      muted: el.muted,
      tracks: tracks,
      ariaLabel: el.getAttribute('aria-label'),
      title: el.getAttribute('title'),
      hasTranscriptLink: !!el.parentElement?.querySelector('a[href*="transcript"], a[href*="transcription"]')
    });
  });

  document.querySelectorAll('audio').forEach(el => {
    media.audios.push({
      src: el.src?.substring(0, 100) || el.querySelector('source')?.src?.substring(0, 100),
      controls: el.controls,
      autoplay: el.autoplay,
      ariaLabel: el.getAttribute('aria-label'),
      title: el.getAttribute('title')
    });
  });

  // Embedded media (YouTube, Vimeo, etc.)
  document.querySelectorAll('iframe').forEach(el => {
    const src = el.src || '';
    if (src.match(/youtube|vimeo|dailymotion|soundcloud|spotify/i)) {
      media.iframes.push({
        src: src.substring(0, 150),
        title: el.getAttribute('title'),
        ariaLabel: el.getAttribute('aria-label')
      });
    }
  });

  document.querySelectorAll('object[type^="video"], object[type^="audio"], embed[type^="video"], embed[type^="audio"]').forEach(el => {
    media.objects.push({
      tag: el.tagName.toLowerCase(),
      type: el.type,
      ariaLabel: el.getAttribute('aria-label')
    });
  });

  return JSON.stringify(media, null, 2);
})()

Step 2: Evaluate criteria

Criterion 4.1 – Pre-recorded temporal media has a text transcription (if needed). Check that videos and audio have a nearby transcription or link to one.

Criterion 4.2 – Transcription is relevant. If a transcription exists, it should accurately represent the content.

Criterion 4.3 – Pre-recorded synchronized media has subtitles. Check ` or ` on video elements.

Criterion 4.4 – Subtitles are relevant. Subtitles must be synchronized and accurately represent dialogue and important sounds.

Criterion 4.5 – Pre-recorded media has audio description (if needed). Check for `` or an alternative audio-described version.

Criterion 4.6 – Audio description is relevant. Must accurately describe important visual elements.

Criterion 4.7 – Temporal media is clearly identified. Media must have a title or label identifying its content.

Criterion 4.8 – Non-temporal media has an alternative. SVG animations, canvas animations, etc., must have text alternatives.

Criterion 4.9 – Non-temporal media alternative is relevant.

Criterion 4.10 – Auto-playing sound is controllable. Any sound playing automatically must have a mechanism to stop/pause or control volume, accessible within the first 3 elements of the page.

Criterion 4.11 – Temporal media is controllable by keyboard. Play, pause, volume, subtitles toggle, audio description toggle must be keyboard-accessible.

Criterion 4.12 – Non-temporal media is keyboard-controllable.

Criterion 4.13 – Media is compatible with assistive technologies. Media player controls must have accessible names and roles.

Step 3: Generate report

For each media element found, evaluate all applicable criteria. Many criteria (relevance of transcription, audio description content) require human review — flag these as requiring manual verification.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.