Agent skill

Accessibility Wcag Patterns

by Hack23 in Hack23/cia

WCAG 2.1 AA compliance, ARIA attributes, keyboard navigation, screen reader optimization for accessible political data platforms

Apache-2.0Auto-check passedFrontend & Design

Install Accessibility Wcag Patterns

skills CLI
$ npx skills add Hack23/cia --skill accessibility-wcag-patterns -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Hack23/cia accessibility-wcag-patterns --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Hack23/cia.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/accessibility-wcag-patterns .claude/skills/accessibility-wcag-patterns && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
accessibility-wcag-patterns
GitHub stars
239
Token cost
~2.7k tokens
SKILL.md length
359 words
Files
1
Skills in repo
78
Repo updated
First seen
Licence
Apache-2.0

At a glance

WCAG 2.1 AA compliance, ARIA attributes, keyboard navigation, screen reader optimization for accessible political data platforms

  • Tasks that involve Accessibility
  • SKILL.md covers Purpose, When to Use, Patterns & Examples and ISMS Compliance Mapping, plus 3 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Accessibility Wcag Patterns is an agent skill from Hack23/cia. WCAG 2.1 AA compliance, ARIA attributes, keyboard navigation, screen reader optimization for accessible political data platforms

Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Frontend & Design, covering Accessibility. The repository describes itself as: Citizen Intelligence Agency. Open-source intelligence platform analyzing Swedish political activities using AI and data visualization. Tracks politicians, government… The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve Accessibility

Example prompts

  • “/accessibility-wcag-patterns”

What it can do on your machine

Read from SKILL.md and the folder at commit 6a9797b. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are java, css, html and javascript).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • w3.org
    • github.com
    • webaim.org
    • deque.com
    • wave.webaim.org
    • pa11y.org

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Accessibility Wcag Patterns loads about 2.7k tokens when it runs. Until then it costs about 39 tokens; SKILL.md has 359 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~39
When it runs · the whole SKILL.md, loaded when a task matches
~2.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Hack23/cia at commit 6a9797b, republished under its Apache-2.0 licence (© Hack23). 359 words, ~2,749 tokens.

Download SKILL.mdSave it as .claude/skills/accessibility-wcag-patterns/SKILL.md (or your agent's skills folder).
name
accessibility-wcag-patterns
description
WCAG 2.1 AA compliance, ARIA attributes, keyboard navigation, screen reader optimization for accessible political data platforms
license
Apache-2.0

Accessibility WCAG Patterns

Purpose

This skill provides guidance for implementing WCAG 2.1 Level AA accessibility standards in the CIA platform, ensuring political transparency data is accessible to all users including those with disabilities. Covers ARIA attributes, keyboard navigation, screen reader optimization, and automated accessibility testing.

When to Use

✅ Use this skill when:
  • Designing new UI components
  • Implementing forms and interactive elements
  • Creating data visualizations and charts
  • Building responsive layouts
  • Reviewing UI for accessibility compliance
  • Fixing accessibility violations
  • Writing automated accessibility tests
  • Conducting accessibility audits
❌ Don't use this skill for:
  • General UI design patterns (use vaadin-component-design)
  • Performance optimization (use code-quality-checks)
  • Security (use input-validation, secure-code-review)
  • Backend implementation (use spring-framework-patterns)

Patterns & Examples

WCAG 2.1 Compliance Checklist

Level A (Must Have):

  • 1.1.1: Non-text content has text alternatives
  • 2.1.1: All functionality available via keyboard
  • 2.4.1: Bypass blocks (skip navigation)
  • 3.1.1: Language of page identified
  • 4.1.2: Name, role, value for UI components

Level AA (Target):

  • 1.4.3: Contrast ratio at least 4.5:1 for normal text
  • 1.4.5: Images of text avoided (use actual text)
  • 2.4.6: Headings and labels describe topic/purpose
  • 2.4.7: Visible focus indicator
  • 3.2.4: Consistent identification of components
Vaadin Accessibility Patterns
java
// Accessible form with proper labels and ARIA
@Route("politician/edit")
public class PoliticianEditView extends VerticalLayout {
    
    public PoliticianEditView() {
        // Page title for screen readers
        getElement().setAttribute("role", "main");
        getElement().setAttribute("aria-label", "Edit Politician Profile");
        
        H1 title = new H1("Edit Politician Profile");
        add(title);
        
        // Accessible form fields
        TextField nameField = new TextField("Full Name");
        nameField.setRequired(true);
        nameField.setErrorMessage("Name is required");
        nameField.setAriaLabel("Politician full name");
        
        TextArea bioField = new TextArea("Biography");
        bioField.setMaxLength(1000);
        bioField.setHelperText("Maximum 1000 characters");
        bioField.setAriaLabel("Politician biography");
        
        // Accessible select with clear labels
        Select<String> partySelect = new Select<>();
        partySelect.setLabel("Political Party");
        partySelect.setItems("Social Democrats", "Moderates", "Sweden Democrats");
        partySelect.setRequiredIndicatorVisible(true);
        
        // Accessible buttons with clear labels
        Button saveButton = new Button("Save Changes");
        saveButton.addThemeVariants(ButtonVariant.LUMO_PRIMARY);
        saveButton.setAriaLabel("Save politician profile changes");
        saveButton.setIcon(new Icon(VaadinIcon.CHECK));
        
        Button cancelButton = new Button("Cancel");
        cancelButton.setAriaLabel("Cancel editing and return to profile");
        cancelButton.setIcon(new Icon(VaadinIcon.CLOSE));
        
        // Accessible button group
        HorizontalLayout buttons = new HorizontalLayout(saveButton, cancelButton);
        buttons.getElement().setAttribute("role", "group");
        buttons.getElement().setAttribute("aria-label", "Form actions");
        
        add(nameField, bioField, partySelect, buttons);
    }
}
Accessible Data Table
java
// Accessible grid with ARIA labels
Grid<Politician> grid = new Grid<>(Politician.class, false);
grid.setAriaLabel("Politicians List");

// Column headers with sort indicators
grid.addColumn(Politician::getName)
    .setHeader("Name")
    .setSortable(true)
    .setAriaLabel("Politician name, sortable");

grid.addColumn(Politician::getParty)
    .setHeader("Party")
    .setSortable(true);

grid.addColumn(politician -> {
    Span badge = new Span(String.format("%.0f", politician.getRiskScore()));
    badge.getElement().getThemeList().add(
        politician.getRiskScore() > 70 ? "badge error" : "badge success"
    );
    // ARIA label for screen readers
    badge.getElement().setAttribute("aria-label", 
        String.format("Risk score %d out of 100", 
            Math.round(politician.getRiskScore())));
    return badge;
})
.setHeader("Risk Score")
.setAriaLabel("Risk assessment score");

// Keyboard navigation
grid.setSelectionMode(Grid.SelectionMode.SINGLE);
grid.addFocusListener(e -> {
    // Announce selection to screen readers
    Notification.show("Use arrow keys to navigate, Enter to select");
});
Color Contrast Compliance
css
/* WCAG AA Contrast Ratios */
:root {
  /* Text on white background (4.5:1 minimum) */
  --text-primary: #212121;        /* 16.1:1 - Excellent */
  --text-secondary: #616161;      /* 5.9:1 - Good */
  
  /* Text on colored backgrounds */
  --risk-high-bg: #c62828;        /* Red */
  --risk-high-text: #ffffff;      /* 6.3:1 - Pass */
  
  --risk-medium-bg: #f57c00;      /* Orange */
  --risk-medium-text: #000000;    /* 6.7:1 - Pass */
  
  --risk-low-bg: #2e7d32;         /* Green */
  --risk-low-text: #ffffff;       /* 4.5:1 - Pass */
  
  /* Interactive elements (focus indicators) */
  --focus-outline: 3px solid #1976d2;
  --focus-outline-offset: 2px;
}

/* Visible focus indicators */
button:focus,
a:focus,
input:focus,
select:focus,
textarea:focus {
  outline: var(--focus-outline);
  outline-offset: var(--focus-outline-offset);
}

/* Skip navigation link */
.skip-link {
  position: absolute;
  top: -40px;
  left: 0;
  background: #000;
  color: #fff;
  padding: 8px;
  text-decoration: none;
  z-index: 100;
}

.skip-link:focus {
  top: 0;
}
Screen Reader Optimization
html
<!-- Landmark regions -->
<header role="banner">
  <h1>Citizen Intelligence Agency</h1>
  <nav role="navigation" aria-label="Main navigation">
    <!-- Navigation items -->
  </nav>
</header>

<main role="main" aria-labelledby="page-title">
  <h1 id="page-title">Politician Risk Dashboard</h1>
  
  <!-- Live region for dynamic updates -->
  <div aria-live="polite" aria-atomic="true" class="sr-only">
    <!-- Announcements for screen readers -->
  </div>
  
  <!-- Search form -->
  <form role="search" aria-label="Search politicians">
    <label for="search-input">Search by name or party</label>
    <input 
      id="search-input" 
      type="search" 
      aria-describedby="search-help"
    />
    <span id="search-help" class="helper-text">
      Enter at least 3 characters to search
    </span>
  </form>
  
  <!-- Data visualization -->
  <figure role="img" aria-labelledby="chart-title">
    <h2 id="chart-title">Risk Score Distribution</h2>
    <canvas id="risk-chart" aria-describedby="chart-desc"></canvas>
    <figcaption id="chart-desc">
      Bar chart showing risk score distribution across 349 politicians.
      Highest concentration in 40-60 range.
    </figcaption>
  </figure>
</main>

<footer role="contentinfo">
  <!-- Footer content -->
</footer>
Keyboard Navigation Patterns
javascript
// Custom keyboard navigation for complex widgets
class AccessibleRiskSlider {
  constructor(element) {
    this.element = element;
    this.value = 50;
    this.min = 0;
    this.max = 100;
    
    // ARIA attributes
    element.setAttribute('role', 'slider');
    element.setAttribute('aria-valuemin', this.min);
    element.setAttribute('aria-valuemax', this.max);
    element.setAttribute('aria-valuenow', this.value);
    element.setAttribute('aria-label', 'Filter by risk score');
    element.setAttribute('tabindex', '0');
    
    // Keyboard event handlers
    element.addEventListener('keydown', this.handleKeyDown.bind(this));
  }
  
  handleKeyDown(event) {
    let newValue = this.value;
    
    switch(event.key) {
      case 'ArrowRight':
      case 'ArrowUp':
        newValue = Math.min(this.value + 1, this.max);
        event.preventDefault();
        break;
      case 'ArrowLeft':
      case 'ArrowDown':
        newValue = Math.max(this.value - 1, this.min);
        event.preventDefault();
        break;
      case 'Home':
        newValue = this.min;
        event.preventDefault();
        break;
      case 'End':
        newValue = this.max;
        event.preventDefault();
        break;
      case 'PageUp':
        newValue = Math.min(this.value + 10, this.max);
        event.preventDefault();
        break;
      case 'PageDown':
        newValue = Math.max(this.value - 10, this.min);
        event.preventDefault();
        break;
    }
    
    if (newValue !== this.value) {
      this.setValue(newValue);
    }
  }
  
  setValue(value) {
    this.value = value;
    this.element.setAttribute('aria-valuenow', value);
    // Update visual representation
    this.updateVisual();
    // Trigger change event
    this.element.dispatchEvent(new CustomEvent('change', { detail: value }));
  }
}

ISMS Compliance Mapping

ISO 27001:2022 Annex A Controls

A.7.1 - Physical and environmental security

  • Digital accessibility ensures equal access to information

A.5.1 - Policies for information security

  • Accessibility policy as part of information security
Show full SKILL.md (131 more words)Show less
GDPR Considerations

Article 9 - Processing of special categories

  • Accessibility features must not discriminate
  • Equal access to personal data for data subjects with disabilities

EU Web Accessibility Directive

  • Public sector websites must meet WCAG 2.1 Level AA
  • Accessibility statements required
  • Compliance monitoring and reporting

Hack23 ISMS Policy References

References

Standards & Guidelines
Testing Tools

Remember

  • Accessibility is not optional: WCAG 2.1 AA is the baseline
  • Test with real users: Include users with disabilities in testing
  • Keyboard-first design: All functionality via keyboard
  • Semantic HTML: Use proper elements for structure
  • Progressive enhancement: Core content accessible without JavaScript
  • Automated testing: Integrate accessibility checks in CI/CD

© Hack23, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .github/skills/accessibility-wcag-patterns of Hack23/cia.

Open the folder on GitHubat commit 6a9797b

Compare with similar skills

Accessibility Wcag Patterns next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Accessibility Wcag Patterns compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Accessibility Wcag Patterns this skillHack23/cia239—~2.7kAutomated safety check: PassApache-2.0
Web Interface Guidelines Reviewervercel-labs/openreview1.7k98 repos~308Automated safety check: PassNone
Accessibility Reviewmarkmead/hyperui12k1 repos~1.1kAutomated safety check: PassMIT
Web Animation DesignbaptisteArno/typebot.io11k2 repos~2.7kAutomated safety check: PassCustom licence
Accessibility Fixeribelick/ui-skills9.4k4 repos~1.2kAutomated safety check: PassMIT
Wcag Audit PatternsvmDeshpande/ai-agent-automation17810 repos~610Automated safety check: PassApache-2.0

Similar skills

  • Web Interface Guidelines Reviewer

    vercel-labs/openreview

    Official

    Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my…

    1.7k GitHub starsUsed in 98 repos~308 tokens
    Frontend & DesignAuto-check passed
  • Accessibility Review

    markmead/hyperui

    Run a WCAG 2.1 AA accessibility audit on a design or page. An agent skill from markmead/hyperui.

    12k GitHub starsUsed in 1 repo~1.1k tokens
    Frontend & DesignAuto-check passed
  • Web Animation Design

    baptisteArno/typebot.io

    Guides easing, timing and animation choices for UI motion, based on a web animation course, and reviews existing animations in a before-and-after table.

    11k GitHub starsUsed in 2 repos~2.7k tokens
    Frontend & DesignAuto-check passed
  • Accessibility Fixer

    ibelick/ui-skills

    Audits and fixes HTML accessibility problems such as ARIA labels, keyboard navigation, focus management, contrast and form errors with minimal changes.

    9.4k GitHub starsUsed in 4 repos~1.2k tokens
    Frontend & DesignAuto-check passed
  • Wcag Audit Patterns

    vmDeshpande/ai-agent-automation

    Conduct WCAG 2.2 accessibility audits with automated testing, manual verification, and remediation guidance.

    178 GitHub starsUsed in 10 repos~610 tokens
    Frontend & DesignAuto-check passed
  • Baseline UI

    ibelick/ui-skills

    Applies a fixed set of UI rules for stack, components, interaction, animation, typography and layout, or reviews a file against them with concrete fixes.

    9.4k GitHub starsUsed in 8 repos~855 tokens
    Frontend & DesignAuto-check passed

More from Hack23/cia

All 78 skills in this repo
  • Advanced chart types, D3.js/Vaadin Charts patterns, political data visualization, time series analysis

    239 GitHub stars~1.5k tokensUpdated today
    Auto-check passed
  • AI Governance

    Hack23/cia

    AI governance, EU AI Act compliance, OWASP LLM security, responsible AI practices for GitHub Copilot agents

    239 GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • API Integration

    Hack23/cia

    External API integration patterns, retry logic, circuit breakers, caching, rate limiting for government data APIs

    239 GitHub stars~1.9k tokensUpdated today
    Auto-check passed
  • AWS CloudWatch metrics, alarms, dashboards, log insights, and application monitoring for the CIA platform

    239 GitHub stars~1.9k tokensUpdated today
    Auto-check passed
  • AWS security best practices, VPC security, IAM, KMS, CloudTrail, GuardDuty for CIA platform deployment

    239 GitHub stars~2.3k tokensUpdated today
    Auto-check passed
  • Business continuity and disaster recovery: 30-day retention, quarterly restore tests, RTO/RPO targets per ISO 27001 A.17

    239 GitHub stars~4.7k tokensUpdated today
    Auto-check passed

Questions about Accessibility Wcag Patterns

What does Accessibility Wcag Patterns do?

WCAG 2.1 AA compliance, ARIA attributes, keyboard navigation, screen reader optimization for accessible political data platforms. Accessibility Wcag Patterns is an agent skill from Hack23/cia.

When should I use Accessibility Wcag Patterns?

Accessibility Wcag Patterns fits situations like: tasks that involve Accessibility.

How do I install Accessibility Wcag Patterns in Claude Code?

Run `npx skills add Hack23/cia --skill accessibility-wcag-patterns -a claude-code`. Or copy the skill folder (.github/skills/accessibility-wcag-patterns in Hack23/cia) into .claude/skills/accessibility-wcag-patterns in your project. Claude Code loads it when a task matches its description.

How do I install Accessibility Wcag Patterns in Codex?

Run `npx skills add Hack23/cia --skill accessibility-wcag-patterns -a codex`. Or copy the skill folder (.github/skills/accessibility-wcag-patterns in Hack23/cia) into .agents/skills/accessibility-wcag-patterns in your project. Codex loads it when a task matches its description.

Can I use Accessibility Wcag Patterns in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Hack23/cia --skill accessibility-wcag-patterns -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/accessibility-wcag-patterns, .gemini/skills/accessibility-wcag-patterns, .github/skills/accessibility-wcag-patterns and .opencode/skills/accessibility-wcag-patterns in your project.

What does Accessibility Wcag Patterns need to run?

SKILL.md names no scripts, command-line tools or credentials: Accessibility Wcag Patterns is instructions for the agent only.

Does Accessibility Wcag Patterns access the network?

SKILL.md names 6 domains. As links in the text: w3.org, github.com, webaim.org, deque.com, wave.webaim.org and pa11y.org. This is read from the text; nothing was executed.

Is Accessibility Wcag Patterns safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Accessibility Wcag Patterns use?

Accessibility Wcag Patterns is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Accessibility Wcag Patterns use?

About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Accessibility Wcag Patterns?

Skills that share tags, products or a category with Accessibility Wcag Patterns: Web Interface Guidelines Reviewer (vercel-labs/openreview, 1.7k stars), Accessibility Review (markmead/hyperui, 12k stars), Web Animation Design (baptisteArno/typebot.io, 11k stars) and Accessibility Fixer (ibelick/ui-skills, 9.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Accessibility Wcag Patterns?

Hack23 (a GitHub organization) maintains it in Hack23/cia, which has 239 GitHub stars. The repository holds 78 skills in this directory. The repository was last updated on October 6, 2026.

Source: Hack23/cia on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.