Token导航 LogoToken导航TokenDH.com
研究检索需要联网github未标认证来源可访问许可证需确认审计通过

accessibility-wcag无障碍 WCAG

Agent Skill

用于辅助无障碍访问检查、页面可用性审计和前端可访问性改进。它适合让 Agent 检查语义标签、键盘操作、颜色对比、ARIA 属性和自动化检测结果。使用时需要结合真实页面和浏览器验证,不应只依赖静态文本判断;涉及修复建议时,应兼顾设计系统、组件复用和 WCAG 等通用无障碍规范。

总安装

559

周安装

24

GitHub Stars

6

下载量

196
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:accessibility-wcag(无障碍 WCAG)
来源仓库:https://github.com/hack23/homepage
仓库路径:skills/accessibility-wcag
安装命令:
npx skills add https://github.com/hack23/homepage --skill accessibility-wcag
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/hack23/homepage --skill accessibility-wcag

简介

无障碍 WCAG 技能辅助页面可用性审计和可访问性改进,支持语义标签与 ARIA 属性检查。

  • 适用于前端可访问性检测、键盘导航测试及颜色对比度分析等场景。
  • 通过浏览器实际验证检测结果,结合真实页面而非仅依赖静态文本判断。
  • 涉及修复建议时应遵循 WCAG 规范,兼顾设计系统与组件复用原则。
  • 安装前需确认权限范围,避免在生产环境中执行未经授权的操作。

SKILL.md

Accessibility WCAG Skill

Purpose

This skill ensures all web content meets WCAG 2.1 Level AA standards for accessibility, making websites usable by people with disabilities including visual, auditory, motor, and cognitive impairments.

Rules

WCAG 2.1 AA Requirements

WCAG is organized around four principles (POUR):

  1. Perceivable - Information must be presentable in ways users can perceive
  2. Operable - Interface must be operable by all users
  3. Understandable - Information and operation must be understandable
  4. Robust - Content must be robust enough for assistive technologies

Perceivable Requirements

Text Alternatives (1.1)

MUST:

  • Provide alt text for all meaningful images
  • Use empty alt="" for decorative images
  • Provide captions for audio/video content
  • Provide transcripts for audio-only content
  • Use descriptive link text (not "click here")

Examples:

<!-- GOOD: Meaningful alt text -->
<img src="security-audit.jpg" alt="Security professional reviewing network logs on dual monitors">

<!-- GOOD: Decorative image -->
<img src="divider.png" alt="" aria-hidden="true">

<!-- BAD: Missing alt -->
<img src="chart.png">

<!-- BAD: Useless alt text -->
<img src="photo.jpg" alt="Image">

Time-based Media (1.2)

MUST:

  • Provide captions for videos (prerecorded and live)
  • Provide audio descriptions for video content
  • Provide transcripts for audio content

Adaptable Content (1.3)

MUST:

  • Use semantic HTML (headings, lists, tables correctly)
  • Ensure content is accessible without CSS
  • Don't rely on sensory characteristics alone (color, shape, position)
  • Use proper reading order in DOM

Examples:

<!-- GOOD: Semantic markup -->
<nav aria-label="Main navigation">
  <ul>
    <li><a href="/">Home</a></li>
    <li><a href="/about">About</a></li>
  </ul>
</nav>

<!-- BAD: Div soup -->
<div class="nav">
  <div class="item"><a href="/">Home</a></div>
  <div class="item"><a href="/about">About</a></div>
</div>

Distinguishable Content (1.4)

MUST:

  • Maintain color contrast ratio of at least 4.5:1 for normal text
  • Maintain color contrast ratio of at least 3:1 for large text (18pt+ or 14pt+ bold)
  • Don't use color alone to convey information
  • Allow text resize up to 200% without loss of functionality
  • Avoid background audio that can't be paused/stopped
  • Ensure text can be selected and copied

Color Contrast Examples:

/* GOOD: High contrast (7:1) */
.text {
  color: #000000; /* Black */
  background-color: #FFFFFF; /* White */
}

/* GOOD: Sufficient contrast (4.6:1) */
.link {
  color: #0066CC; /* Blue */
  background-color: #FFFFFF; /* White */
}

/* BAD: Insufficient contrast (2.3:1) */
.subtle-text {
  color: #CCCCCC; /* Light gray */
  background-color: #FFFFFF; /* White */
}

Operable Requirements

Keyboard Accessible (2.1)

MUST:

  • Make all functionality available via keyboard
  • Provide visible focus indicators
  • Don't create keyboard traps
  • Ensure logical tab order
  • Provide keyboard shortcuts for complex interfaces

Examples:

<!-- GOOD: Button is keyboard accessible -->
<button onclick="submitForm()">Submit</button>

<!-- BAD: Div onClick is not keyboard accessible -->
<div onclick="submitForm()">Submit</div>

<!-- BETTER: If you must use div, add role and tabindex -->
<div role="button" tabindex="0" onclick="submitForm()" onkeypress="handleKeyPress(event)">
  Submit
</div>
/* GOOD: Visible focus indicator */
a:focus,
button:focus {
  outline: 2px solid #0066CC;
  outline-offset: 2px;
}

/* BAD: Removing focus outline without replacement */
*:focus {
  outline: none; /* Never do this without providing alternative! */
}

Enough Time (2.2)

MUST:

  • Allow users to turn off, adjust, or extend time limits
  • Provide pause, stop, hide for auto-updating content
  • No time limits unless essential (auctions, real-time games)

Seizures and Physical Reactions (2.3)

MUST NOT:

  • Use content that flashes more than 3 times per second
  • Create large flashing areas

Navigable (2.4)

MUST:

  • Provide skip links to bypass repeated content
  • Use descriptive page titles
  • Ensure logical focus order
  • Provide clear link purposes
  • Offer multiple ways to navigate (menu, search, sitemap)
  • Provide visible focus indicators
  • Use clear headings and labels

Examples:

<!-- GOOD: Skip link -->
<a href="#main-content" class="skip-link">Skip to main content</a>

<nav>...</nav>

<main id="main-content">...</main>

<!-- GOOD: Descriptive title -->
<title>Security Services - ISO 27001 Implementation | Hack23</title>

<!-- BAD: Generic title -->
<title>Services</title>

Input Modalities (2.5)

MUST:

  • Ensure touch targets are at least 44×44 pixels
  • Don't rely on device motion alone
  • Allow cancellation of pointer events
  • Make clickable label text match accessible name

Understandable Requirements

Readable (3.1)

MUST:

  • Specify language of page with lang attribute
  • Specify language of passages that differ from page language
  • Keep content at appropriate reading level (when possible)

Examples:

<!-- GOOD: Language specified -->
<html lang="en">

<!-- GOOD: Foreign language phrase -->
<p>The phrase <span lang="fr">je ne sais quoi</span> is French.</p>

Predictable (3.2)

MUST:

  • Don't change context on focus
  • Don't change context on input (without warning)
  • Use consistent navigation across pages
  • Use consistent identification of components

Input Assistance (3.3)

MUST:

  • Identify input errors clearly
  • Provide labels or instructions for user input
  • Provide error suggestions when possible
  • Prevent errors in legal/financial transactions
  • Allow review/confirmation before final submission

Examples:

<!-- GOOD: Clear label and error -->
<label for="email">Email Address *</label>
<input type="email" id="email" aria-required="true" aria-describedby="email-error">
<span id="email-error" class="error" role="alert">
  Please enter a valid email address (e.g., name@example.com)
</span>

<!-- GOOD: Required field indicator -->
<label for="password">
  Password *
  <span class="required-note">(required)</span>
</label>
<input type="password" id="password" aria-required="true">

Robust Requirements

Compatible (4.1)

MUST:

  • Ensure HTML is valid (no duplicate IDs, proper nesting)
  • Use ARIA correctly (roles, states, properties)
  • Provide name, role, value for all UI components
  • Ensure status messages can be programmatically determined

ARIA Examples:

<!-- GOOD: ARIA for custom component -->
<div role="tablist" aria-label="Account settings">
  <button role="tab" aria-selected="true" aria-controls="panel-1" id="tab-1">
    Profile
  </button>
  <button role="tab" aria-selected="false" aria-controls="panel-2" id="tab-2">
    Security
  </button>
</div>
<div role="tabpanel" id="panel-1" aria-labelledby="tab-1">
  <!-- Profile content -->
</div>
<div role="tabpanel" id="panel-2" aria-labelledby="tab-2" hidden>
  <!-- Security content -->
</div>

<!-- GOOD: Status message -->
<div role="status" aria-live="polite" aria-atomic="true">
  Changes saved successfully
</div>

ARIA Best Practices

Use ARIA When:

  • Native HTML element doesn't exist for your component
  • Need to enhance semantic meaning
  • Need to communicate state or property not available in HTML

ARIA Landmarks:

<header role="banner">
<nav role="navigation" aria-label="Main navigation">
<main role="main">
<aside role="complementary">
<footer role="contentinfo">

ARIA States and Properties:

  • aria-label - Provides accessible name
  • aria-labelledby - References element that labels this one
  • aria-describedby - References element that describes this one
  • aria-hidden - Hides element from screen readers
  • aria-live - Announces dynamic content changes
  • aria-expanded - Indicates if expandable element is open
  • aria-pressed - Indicates toggle button state
  • aria-current - Indicates current item in set

Testing Checklist

MUST TEST:

  1. Keyboard Navigation

- Tab through all interactive elements - Use Enter/Space to activate buttons/links - Verify visible focus indicators - Check for keyboard traps

  1. Screen Reader

- Test with NVDA (Windows), VoiceOver (Mac), or JAWS - Verify all content is announced - Check heading structure - Test form labels and error messages

  1. Color Contrast

- Use WebAIM Contrast Checker - Test all text/background combinations - Check focus indicators

  1. Zoom/Resize

- Zoom to 200% and verify functionality - Test with browser text-only zoom - Verify responsive design works

  1. Automated Tools

- WAVE (browser extension) - axe DevTools - Lighthouse accessibility audit - Pa11y

Common Accessibility Errors

1. Missing Alt Text

<!-- BAD -->
<img src="logo.png">

<!-- GOOD -->
<img src="logo.png" alt="Hack23 Cybersecurity">

2. Poor Color Contrast

/* BAD: 2.5:1 ratio */
color: #999999;
background: #FFFFFF;

/* GOOD: 7:1 ratio */
color: #333333;
background: #FFFFFF;

3. Missing Form Labels

<!-- BAD -->
<input type="text" placeholder="Email">

<!-- GOOD -->
<label for="email">Email</label>
<input type="text" id="email">

4. Empty Links

<!-- BAD -->
<a href="report.pdf">
  <img src="pdf-icon.png">
</a>

<!-- GOOD -->
<a href="report.pdf">
  <img src="pdf-icon.png" alt="Download Annual Report (PDF, 2MB)">
</a>

5. Non-descriptive Link Text

<!-- BAD -->
<a href="/services">Click here</a> for our services.

<!-- GOOD -->
<a href="/services">View our cybersecurity services</a>

Related ISMS Policies

Related Documentation

Resources

Accessibility Statement

Every website MUST include an accessibility statement at /accessibility-statement.html that includes:

  • Commitment to accessibility
  • WCAG 2.1 AA conformance claim
  • Known issues and limitations
  • Contact information for accessibility concerns
  • Date of last review

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

35.4%
按下载量换算69

Claude

28.04%
按下载量换算55

Cursor

19.25%
按下载量换算38

Gemini CLI

9.6%
按下载量换算19

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills