本文へ移動
cccskills
無料GitHub で公開

accessibility-planning

Plan accessibility compliance - WCAG 2.2, Section 508, EN 301 549, inclusive design principles, audit planning, and remediation strategies.

インストール方法を見る

含まれるファイル(2)

  • SKILL.md15.7 KB
  • source.json783 B

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Accessibility Planning

Plan for inclusive design and WCAG compliance before development begins.

When to Use This Skill

Use this skill when:

  • Accessibility Planning tasks - Working on plan accessibility compliance - wcag 2.2, section 508, en 301 549, inclusive design principles, audit planning, and remediation strategies
  • Planning or design - Need guidance on Accessibility Planning approaches
  • Best practices - Want to follow established patterns and standards

MANDATORY: Skill Loading First

Before answering ANY accessibility question:

  1. Use official WCAG and accessibility standards
  2. Base all guidance on validated accessibility practices

Accessibility Standards

WCAG 2.2 Overview

LevelDescriptionTypical Requirement
AMinimumBasic accessibility barriers removed
AAStandardMost common barriers addressed
AAAEnhancedHighest level of accessibility

Target: Most organizations target WCAG 2.2 Level AA.

Compliance Frameworks

StandardRegionApplies To
WCAG 2.2GlobalWeb content
Section 508USAFederal agencies, contractors
EN 301 549EuropePublic sector, ICT products
ADAUSAPublic accommodations
AODAOntario, CanadaBusinesses, organizations

WCAG 2.2 Principles (POUR)

1. Perceivable

Users must be able to perceive content.

GuidelineKey Requirements
1.1 Text AlternativesAlt text for images, captions for audio
1.2 Time-based MediaCaptions, audio descriptions, transcripts
1.3 AdaptableStructure via semantic HTML, meaningful sequence
1.4 DistinguishableColor contrast, resize text, audio control

2. Operable

Users must be able to operate the interface.

GuidelineKey Requirements
2.1 Keyboard AccessibleAll functionality via keyboard
2.2 Enough TimeAdjustable timing, pause/stop content
2.3 SeizuresNo flashing content >3 times/second
2.4 NavigableSkip links, page titles, focus order
2.5 Input ModalitiesPointer gestures, target size, motion

3. Understandable

Content and operation must be understandable.

GuidelineKey Requirements
3.1 ReadableLanguage identification, abbreviations
3.2 PredictableConsistent navigation, no unexpected changes
3.3 Input AssistanceError identification, labels, suggestions

4. Robust

Content must work with assistive technologies.

GuidelineKey Requirements
4.1 CompatibleValid markup, name/role/value for components

WCAG 2.2 New Success Criteria

CriterionLevelDescription
2.4.11 Focus Not Obscured (Min)AAFocused element not entirely hidden
2.4.12 Focus Not Obscured (Enhanced)AAAFocused element not partially hidden
2.4.13 Focus AppearanceAAAVisible focus indicator requirements
2.5.7 Dragging MovementsAASingle-pointer alternative to dragging
2.5.8 Target Size (Minimum)AA24x24 CSS pixels minimum
3.2.6 Consistent HelpAHelp mechanisms in consistent location
3.3.7 Redundant EntryADon't require re-entering same info
3.3.8 Accessible Authentication (Min)AANo cognitive function tests for auth
3.3.9 Accessible Authentication (Enhanced)AAAExtended auth requirements

Accessibility Audit Planning

Audit Types

TypeScopeWhen
Quick AuditHigh-traffic pages, key flowsSprint review
Comprehensive AuditFull WCAG checklistBefore launch
Continuous MonitoringAutomated scansOngoing
User TestingWith assistive technology usersPeriodically

Audit Checklist Template

# Accessibility Audit Plan

## Scope
- **Product/Site:** [Name]
- **Pages/Components:** [List or "All"]
- **Standard:** WCAG 2.2 Level AA
- **Timeline:** [Dates]

## Testing Matrix

### Automated Testing
- [ ] axe DevTools scan
- [ ] WAVE evaluation
- [ ] Lighthouse accessibility audit
- [ ] Pa11y CI integration

### Manual Testing
- [ ] Keyboard-only navigation
- [ ] Screen reader testing (NVDA, VoiceOver, JAWS)
- [ ] High contrast mode
- [ ] Browser zoom (200%)
- [ ] Color blindness simulation

### Assistive Technology Matrix

| AT | Browser | OS | Tester |
|----|---------|----|----|
| NVDA | Chrome | Windows | [Name] |
| JAWS | Chrome | Windows | [Name] |
| VoiceOver | Safari | macOS | [Name] |
| VoiceOver | Safari | iOS | [Name] |
| TalkBack | Chrome | Android | [Name] |

## Pages/Components to Test

| Priority | Page/Component | URL/Location | Status |
|----------|----------------|--------------|--------|
| High | Homepage | / | Pending |
| High | Login | /login | Pending |
| High | Checkout | /checkout | Pending |
| Medium | Product listing | /products | Pending |
| Medium | Forms | /contact | Pending |

## Issue Tracking
- **Tool:** [Jira/GitHub Issues/etc.]
- **Label:** accessibility
- **Severity Levels:** Critical, Major, Minor, Enhancement

## Deliverables
- [ ] Issue log with WCAG mapping
- [ ] Prioritized remediation plan
- [ ] VPAT/ACR (if required)
- [ ] Executive summary

Common Accessibility Issues

Critical (Level A failures)

IssueWCAGFix
Missing alt text1.1.1Add descriptive alt attributes
No keyboard access2.1.1Ensure all interactive elements focusable
Missing form labels1.3.1Associate labels with inputs
Empty buttons/links4.1.2Add accessible names
Auto-playing media1.4.2Provide pause/stop controls

Major (Level AA failures)

IssueWCAGFix
Low color contrast1.4.34.5:1 for text, 3:1 for large text
No skip navigation2.4.1Add skip link to main content
Missing page titles2.4.2Unique, descriptive titles
Focus not visible2.4.7Visible focus indicator
Reflow issues1.4.10Responsive at 400% zoom

.NET/Blazor Accessibility Patterns

// Accessible button component
@code {
    [Parameter] public string AriaLabel { get; set; } = "";
    [Parameter] public bool IsDisabled { get; set; }
    [Parameter] public RenderFragment? ChildContent { get; set; }
    [Parameter] public EventCallback OnClick { get; set; }
}

<button
    type="button"
    aria-label="@AriaLabel"
    aria-disabled="@IsDisabled.ToString().ToLower()"
    disabled="@IsDisabled"
    @onclick="HandleClick"
    class="btn">
    @ChildContent
</button>

@code {
    private async Task HandleClick()
    {
        if (!IsDisabled)
        {
            await OnClick.InvokeAsync();
        }
    }
}
// Accessible form field
<div class="form-group">
    <label for="@Id" class="@(IsRequired ? "required" : "")">
        @Label
        @if (IsRequired)
        {
            <span aria-hidden="true">*</span>
            <span class="visually-hidden">(required)</span>
        }
    </label>

    <input
        id="@Id"
        name="@Name"
        type="@Type"
        @bind="Value"
        aria-required="@IsRequired.ToString().ToLower()"
        aria-invalid="@(!string.IsNullOrEmpty(ErrorMessage)).ToString().ToLower()"
        aria-describedby="@(HasError ? $"{Id}-error" : HintId)"
        class="@(HasError ? "input-error" : "")" />

    @if (!string.IsNullOrEmpty(Hint))
    {
        <span id="@HintId" class="hint">@Hint</span>
    }

    @if (HasError)
    {
        <span id="@($"{Id}-error")" class="error" role="alert">
            @ErrorMessage
        </span>
    }
</div>
// Skip link component
<a href="#main-content" class="skip-link">
    Skip to main content
</a>

<style>
    .skip-link {
        position: absolute;
        top: -40px;
        left: 0;
        background: #000;
        color: #fff;
        padding: 8px;
        z-index: 100;
    }

    .skip-link:focus {
        top: 0;
    }
</style>

Color Contrast Requirements

Contrast Ratios

Element TypeWCAG AAWCAG AAA
Normal text (<18pt)4.5:17:1
Large text (≥18pt or ≥14pt bold)3:14.5:1
UI components & graphics3:13:1

Contrast Checker

public class ContrastChecker
{
    public record ContrastResult(
        double Ratio,
        bool PassesAA,
        bool PassesAAA,
        bool PassesLargeTextAA,
        bool PassesLargeTextAAA
    );

    public ContrastResult Calculate(string foreground, string background)
    {
        var fgLuminance = GetRelativeLuminance(foreground);
        var bgLuminance = GetRelativeLuminance(background);

        var lighter = Math.Max(fgLuminance, bgLuminance);
        var darker = Math.Min(fgLuminance, bgLuminance);

        var ratio = (lighter + 0.05) / (darker + 0.05);
        ratio = Math.Round(ratio, 2);

        return new ContrastResult(
            Ratio: ratio,
            PassesAA: ratio >= 4.5,
            PassesAAA: ratio >= 7,
            PassesLargeTextAA: ratio >= 3,
            PassesLargeTextAAA: ratio >= 4.5
        );
    }

    private static double GetRelativeLuminance(string hex)
    {
        var rgb = ParseHex(hex);
        var r = GetLuminanceComponent(rgb.R);
        var g = GetLuminanceComponent(rgb.G);
        var b = GetLuminanceComponent(rgb.B);

        return 0.2126 * r + 0.7152 * g + 0.0722 * b;
    }

    private static double GetLuminanceComponent(byte value)
    {
        var sRGB = value / 255.0;
        return sRGB <= 0.03928
            ? sRGB / 12.92
            : Math.Pow((sRGB + 0.055) / 1.055, 2.4);
    }

    private static (byte R, byte G, byte B) ParseHex(string hex)
    {
        hex = hex.TrimStart('#');
        return (
            Convert.ToByte(hex[..2], 16),
            Convert.ToByte(hex[2..4], 16),
            Convert.ToByte(hex[4..6], 16)
        );
    }
}

Keyboard Navigation Requirements

Focus Order

// Tab order management
public class FocusManager
{
    private readonly IJSRuntime _js;

    public async Task SetFocusTo(string elementId)
    {
        await _js.InvokeVoidAsync("focusElement", elementId);
    }

    public async Task TrapFocusInModal(string modalId)
    {
        await _js.InvokeVoidAsync("trapFocus", modalId);
    }

    public async Task RestoreFocus(string previousElementId)
    {
        await _js.InvokeVoidAsync("focusElement", previousElementId);
    }
}
// Focus trap for modals
window.trapFocus = function(modalId) {
    const modal = document.getElementById(modalId);
    const focusableElements = modal.querySelectorAll(
        'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
    );

    const firstElement = focusableElements[0];
    const lastElement = focusableElements[focusableElements.length - 1];

    modal.addEventListener('keydown', function(e) {
        if (e.key === 'Tab') {
            if (e.shiftKey && document.activeElement === firstElement) {
                lastElement.focus();
                e.preventDefault();
            } else if (!e.shiftKey && document.activeElement === lastElement) {
                firstElement.focus();
                e.preventDefault();
            }
        }
    });

    firstElement.focus();
};

Required Keyboard Interactions

ComponentKeysAction
ButtonEnter, SpaceActivate
LinkEnterNavigate
CheckboxSpaceToggle
RadioArrow keysNavigate options
SelectArrow keys, EnterNavigate, select
Tab panelArrow keysSwitch tabs
MenuArrow keys, Enter, EscNavigate, select, close
ModalEscClose

VPAT (Voluntary Product Accessibility Template)

VPAT Structure

# [Product Name] Accessibility Conformance Report
## WCAG 2.2 Edition

**Report Date:** [Date]
**Product Version:** [Version]
**Contact:** [Email]

### Table 1: Success Criteria, Level A

| Criteria | Conformance Level | Remarks |
|----------|-------------------|---------|
| 1.1.1 Non-text Content | Supports | All images have alt text |
| 1.2.1 Audio-only and Video-only | Not Applicable | No pre-recorded media |
| 1.3.1 Info and Relationships | Partially Supports | [Explanation] |
| ... | ... | ... |

### Table 2: Success Criteria, Level AA
[Continue pattern]

### Conformance Levels
- **Supports:** Fully meets criterion
- **Partially Supports:** Some aspects don't meet criterion
- **Does Not Support:** Majority doesn't meet criterion
- **Not Applicable:** Criterion doesn't apply

Remediation Planning

Priority Matrix

PriorityCriteriaTimeline
P0 - CriticalLevel A failures, blocks functionalityImmediate
P1 - HighLevel AA failures, significant barriersSprint 1
P2 - MediumLevel AA improvements, minor barriersSprint 2-3
P3 - LowBest practices, enhancementsBacklog

Remediation Tracking

public class AccessibilityIssue
{
    public Guid Id { get; init; }
    public required string Title { get; init; }
    public required string Description { get; init; }
    public required WcagCriterion Criterion { get; init; }
    public required WcagLevel Level { get; init; }
    public required IssueStatus Status { get; init; }
    public required Priority Priority { get; init; }
    public required string AffectedComponent { get; init; }
    public string? Remediation { get; init; }
    public string? AssignedTo { get; init; }
    public DateOnly? TargetDate { get; init; }
}

public record WcagCriterion(string Number, string Name);

public enum WcagLevel { A, AA, AAA }

public enum Priority { Critical, High, Medium, Low }

public enum IssueStatus
{
    Open,
    InProgress,
    InReview,
    Closed,
    WontFix
}

Inclusive Design Principles

Microsoft Inclusive Design

  1. Recognize exclusion - Understand how exclusion happens
  2. Solve for one, extend to many - Design for edge cases first
  3. Learn from diversity - Include diverse perspectives

Permanent, Temporary, Situational

SensePermanentTemporarySituational
TouchOne armArm injuryHolding a baby
SeeBlindCataractBright sunlight
HearDeafEar infectionNoisy environment
SpeakNonverbalLaryngitisHeavy accent

Checklist: Accessibility Planning

Strategy

  • Target compliance level defined (AA recommended)
  • Legal requirements identified
  • Timeline established
  • Resources allocated

Design Phase

  • Color contrast verified
  • Touch targets sized (44x44px minimum)
  • Focus states designed
  • Error states accessible
  • Motion preferences considered

Development Phase

  • Semantic HTML used
  • ARIA used correctly (sparingly)
  • Keyboard navigation works
  • Focus management implemented
  • Skip links added

Testing Phase

  • Automated testing integrated
  • Manual testing completed
  • Screen reader testing done
  • Keyboard-only testing done
  • Zoom/reflow tested

Documentation

  • Accessibility statement published
  • VPAT completed (if required)
  • Known issues documented
  • Contact for feedback provided

Related Skills

  • usability-testing - Inclusive usability testing
  • design-system-planning - Accessible components
  • heuristic-evaluation - Accessibility heuristics
  • service-blueprinting - Accessible service touchpoints

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

007

無料

Security audit, hardening, threat modeling (STRIDE/PASTA), Red/Blue Team, OWASP checks, code review, incident response, and infrastructure security for any project.

日本語の概要は準備中です。原文の説明を表示しています。

aibot88/sec_skill_store42026年5月27日 更新

Guides the creation of agile user stories and Gherkin feature files. Use when the user wants to create a user story, write acceptance criteria, define Gherkin scenarios, or author BDD feature files. This should trigger for requests such as Create a user story; Write a user story; I need to write a user story. Part of cursor-rules-java project

日本語の概要は準備中です。原文の説明を表示しています。

aibot88/sec_skill_store42026年5月27日 更新

Facilitates conversational discovery to create Architectural Decision Records (ADRs) for non-functional requirements using the ISO/IEC 25010:2023 quality model. Use when the user wants to document quality attributes, NFR decisions, security/performance/scalability architecture, or design systems with measurable quality criteria. This should trigger for requests such as Create ADR for Non-functional requirements; Document Non-functional requirements; Capture Non-functional requirements; Generate Non-functional requirements in an ADR. Part of cursor-rules-java project

日本語の概要は準備中です。原文の説明を表示しています。

aibot88/sec_skill_store42026年5月27日 更新

Run a health check on an existing project: dependency audit, security scan, test runner detection, CI/CD evaluation, and missing configuration analysis. Maps the three execution gates (pre/in/post) from /10x-bootstrapper to an assessment framework for existing codebases. Reads optional context/foundation/stack-assessment.md from /10x-stack-assess to focus checks on identified gaps. Writes context/foundation/health-check.md with findings, prioritized fixes, and an agent-readiness verdict. Use when the user has an existing project and wants to verify its health before working with an agent. Trigger phrases: "health check", "check my project", "audit my project", "is my project healthy", "sprawdź projekt", "audyt projektu", "health-check", "project health". Use AFTER /10x-stack-assess (brownfield chain), BEFORE agent onboarding (m1-l4).

日本語の概要は準備中です。原文の説明を表示しています。

aibot88/sec_skill_store42026年5月27日 更新

10x-team

無料

You MUST use this when building projects end-to-end. Orchestrates all 12 team roles — automatically switches between CTO, architect, PM, engineers, SRE, security, DBA, QA, and EM based on the current phase of work. Starts with brainstorming before any implementation.

日本語の概要は準備中です。原文の説明を表示しています。

aibot88/sec_skill_store42026年5月27日 更新

Use when you need to add or configure Maven plugins in your pom.xml — including quality tools (enforcer, surefire, failsafe, jacoco, pitest, spotbugs, pmd), security scanning (OWASP), code formatting (Spotless), version management, container image build (Jib), build information tracking, and benchmarking (JMH) — through a consultative, modular step-by-step approach that only adds what you actually need. This should trigger for requests such as Add Maven plugins in pom.xml; Improve Maven plugins in pom.xml. Part of cursor-rules-java project

日本語の概要は準備中です。原文の説明を表示しています。

aibot88/sec_skill_store42026年5月27日 更新

aibot88 のスキルをすべて見る

このスキルの問題を報告する