원클릭으로
accessibility
Implement web accessibility (a11y) best practices following WCAG guidelines. Ensure inclusive design for users with disabilities.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Implement web accessibility (a11y) best practices following WCAG guidelines. Ensure inclusive design for users with disabilities.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Interactive onboarding workflow that interviews users to understand their coding goals and generates PR-ready implementation plans. Use when starting a new development task to ensure clear requirements and structured execution.
Implement security best practices for Gamma integration. Use when securing API keys, implementing access controls, or auditing Gamma security configuration. Trigger with phrases like "gamma security", "gamma API key security", "gamma secure", "gamma credentials", "gamma access control".
Write effective technical documentation including READMEs, API docs, architecture decisions, and inline code documentation.
Build and manage CI/CD pipelines with Azure DevOps. Configure builds, releases, and automate software delivery workflows.
Develop, deploy, and manage Azure Functions for serverless computing. Supports HTTP triggers, timers, queues, and event-driven architectures.
Manage Azure resources effectively using CLI, Portal, Bicep, and ARM templates. Use for provisioning, organizing, and maintaining cloud infrastructure.
| name | accessibility |
| description | Implement web accessibility (a11y) best practices following WCAG guidelines. Ensure inclusive design for users with disabilities. |
| triggers | ["/a11y","/accessibility"] |
This skill guides you through implementing web accessibility best practices following WCAG guidelines to create inclusive experiences for users with disabilities.
Use this skill when you need to:
Perceivable
Operable
Understandable
Robust
Structure
<!-- ✅ Good: Semantic structure -->
<header>
<nav aria-label="Main">
<ul>
<li><a href="/" aria-current="page">Home</a></li>
<li><a href="/about">About</a></li>
</ul>
</nav>
</header>
<main>
<h1>Page Title</h1>
<section aria-labelledby="products-heading">
<h2 id="products-heading">Products</h2>
<!-- content -->
</section>
</main>
<footer>
<p>© 2024 Company</p>
</footer>
<!-- ❌ Bad: Div soup -->
<div class="header">
<div class="nav">
<div class="nav-item">Home</div>
</div>
</div>
Form Labels
<!-- ✅ Good: Associated labels -->
<label for="email">Email Address</label>
<input type="email" id="email" name="email" required>
<!-- Or using aria-label -->
<input type="search" aria-label="Search products" placeholder="Search...">
<!-- Or using aria-labelledby -->
<span id="username-label">Username</span>
<input type="text" aria-labelledby="username-label">
<!-- ❌ Bad: No label association -->
<input type="email" placeholder="Enter email">
Focus Management
/* Visible focus indicators */
:focus {
outline: 2px solid #005fcc;
outline-offset: 2px;
}
/* Skip links */
.skip-link {
position: absolute;
top: -40px;
left: 0;
background: #000;
color: #fff;
padding: 8px;
}
.skip-link:focus {
top: 0;
}
<!-- Skip navigation link -->
<a href="#main-content" class="skip-link">Skip to main content</a>
<main id="main-content">
<!-- Page content -->
</main>
Focus Trap in Modals
// Manage focus within modal
function openModal() {
modal.show();
firstFocusableElement.focus();
document.addEventListener('keydown', trapFocus);
}
function trapFocus(e) {
if (e.key === 'Tab') {
if (e.shiftKey && document.activeElement === firstFocusableElement) {
e.preventDefault();
lastFocusableElement.focus();
} else if (!e.shiftKey && document.activeElement === lastFocusableElement) {
e.preventDefault();
firstFocusableElement.focus();
}
}
if (e.key === 'Escape') {
closeModal();
}
}
Landmarks
<header role="banner">...</header>
<nav role="navigation">...</nav>
<main role="main">...</main>
<aside role="complementary">...</aside>
<footer role="contentinfo">...</footer>
Dynamic Content
<!-- Live regions for announcements -->
<div aria-live="polite" aria-atomic="true" id="status-region">
<!-- Status messages inserted here -->
</div>
<!-- Progress indication -->
<div role="progressbar" aria-valuenow="50" aria-valuemin="0"
aria-valuemax="100" aria-label="Upload progress">
50%
</div>
Accessible Components
<!-- Button vs Link -->
<button type="button" onclick="submitForm()">Submit</button>
<a href="/page">Navigate to Page</a>
<!-- Tabs -->
<div role="tablist">
<button role="tab" aria-selected="true" id="tab-1"
aria-controls="panel-1">Tab 1</button>
<button role="tab" aria-selected="false" id="tab-2"
aria-controls="panel-2">Tab 2</button>
</div>
<div role="tabpanel" id="panel-1" aria-labelledby="tab-1">...</div>
Alt Text Guidelines
<!-- Decorative image: empty alt -->
<img src="decorative-border.png" alt="">
<!-- Informative image: descriptive alt -->
<img src="chart.png" alt="Sales increased 50% from January to June">
<!-- Complex image: long description -->
<img src="complex-diagram.png" alt="Workflow diagram"
aria-describedby="diagram-desc">
<div id="diagram-desc" class="sr-only">
Detailed description of the workflow...
</div>
<!-- SVG icons -->
<svg role="img" aria-label="Close">
<use href="#icon-close">
</svg>
Media
<!-- Video with captions -->
<video controls>
<source src="video.mp4" type="video/mp4">
<track kind="captions" src="captions.vtt" srclang="en" label="English">
<track kind="descriptions" src="descriptions.vtt" srclang="en">
</video>
<!-- Audio with transcript -->
<audio controls>
<source src="podcast.mp3" type="audio/mpeg">
</audio>
<a href="transcript.html">Read transcript</a>
Contrast Requirements
/* ✅ Good: Sufficient contrast */
.text {
color: #333; /* Dark gray on white: 12.6:1 */
}
.button {
background: #0066cc;
color: #ffffff; /* 4.6:1 */
}
/* Don't rely on color alone */
.error {
color: #d32f2f;
}
.error::before {
content: "✕ "; /* Visual indicator */
}
Automated Testing
# axe-core CLI
axe https://example.com
# Lighthouse CI
lighthouse https://example.com --only-categories=accessibility
# Pa11y
pa11y https://example.com
Manual Testing
See the examples/ directory for:
accessible-components/ - ARIA-compliant componentsform-patterns/ - Accessible form implementationsfocus-management/ - Focus handling utilitiestesting-checklist.md - Accessibility testing checklist