AgentStack
SKILL verified MIT Self-run

Rgaa Tables

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

Audit a web page for RGAA v4.1.2 Theme 5 – Tables accessibility compliance. Checks that complex data tables have summaries, layout tables linearize correctly, data tables have proper titles and headers, and header-cell associations are correct. Use this skill when someone asks to check table accessibility, verify RGAA Theme 5, audit data tables, or check table markup on a website.

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

Install

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

✓ 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 Tables? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

RGAA Tables Accessibility Audit (Theme 5)

Audits a web page against the 8 criteria of RGAA v4.1.2 Theme 5: Tables.

Audit procedure

Step 1: Gather table data

(() => {
  const tables = [];
  document.querySelectorAll('table').forEach((table, i) => {
    const ths = Array.from(table.querySelectorAll('th')).map(th => ({
      text: th.textContent.trim().substring(0, 50),
      scope: th.getAttribute('scope'),
      id: th.getAttribute('id'),
      headers: th.getAttribute('headers')
    }));
    const tds = Array.from(table.querySelectorAll('td')).map(td => ({
      headers: td.getAttribute('headers'),
      hasContent: !!td.textContent.trim()
    }));
    const caption = table.querySelector('caption');

    tables.push({
      index: i,
      role: table.getAttribute('role'),
      ariaLabel: table.getAttribute('aria-label'),
      ariaLabelledby: table.getAttribute('aria-labelledby'),
      ariaDescribedby: table.getAttribute('aria-describedby'),
      summary: table.getAttribute('summary'),
      hasCaption: !!caption,
      captionText: caption?.textContent.trim().substring(0, 100),
      rowCount: table.rows.length,
      colCount: table.rows[0]?.cells.length || 0,
      headerCount: ths.length,
      headers: ths.slice(0, 20),
      sampleCells: tds.slice(0, 10),
      isLayoutTable: table.getAttribute('role') === 'presentation' || table.getAttribute('role') === 'none',
      hasTheadTbodyTfoot: !!(table.querySelector('thead') || table.querySelector('tbody') || table.querySelector('tfoot'))
    });
  });
  return JSON.stringify(tables, null, 2);
})()

Step 2: Evaluate criteria

Criterion 5.1 – Complex data tables have a summary. A complex table (multiple header levels, spanning cells) must have a summary explaining its structure, via aria-describedby pointing to a description or a `` containing both title and summary.

Criterion 5.2 – Summary of complex data tables is relevant. The summary must help the user understand the table's organization.

Criterion 5.3 – Layout tables linearize correctly. Tables with role="presentation" or role="none" must make sense when read linearly (left to right, top to bottom). They must NOT use `, , , , , or scope/headers` attributes.

Criterion 5.4 – Data table titles are correctly associated. Title must use ` directly inside the , or aria-label, or aria-labelledby`.

Criterion 5.5 – Data table titles are relevant. Titles must describe the table's content or purpose.

Criterion 5.6 – Column and row headers use `. Every header cell must use , not styled `.

Criterion 5.7 – Header-cell association uses appropriate technique.

  • Simple tables: ` or `
  • Complex tables: headers attribute on ` referencing id values on ` elements

Criterion 5.8 – Layout tables must not use data table elements. Tables with role="presentation" must not contain: `, , , , , scope attribute, or headers` attribute.

Step 3: Generate report

Classify each table as data table, complex data table, or layout table. Then apply the relevant criteria.

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.