Free SKILL.md scraped from GitHub. Clone the repo or copy the file directly into your Claude Code skills directory.
npx versuz@latest install community-access-accessibility-agents-github-skills-cognitive-accessibilitygit clone https://github.com/Community-Access/accessibility-agents.gitcp accessibility-agents/SKILL.MD ~/.claude/skills/community-access-accessibility-agents-github-skills-cognitive-accessibility/SKILL.md---
name: cognitive-accessibility
description: Review UI for cognitive load, plain language clarity, and WCAG 2.2 cognitive SC (3.3.7, 3.3.8, 3.3.9). Includes COGA guidance, reading level, auth patterns, and timeout warnings.
---
# Skill: Cognitive Accessibility
**Domain:** Cognitive, learning, and neurological accessibility
**WCAG scope:** WCAG 2.2 AA + key AAA, COGA W3C guidance
**Agents that use this skill:** `cognitive-accessibility`, `web-accessibility-wizard`, `accessibility-lead`, `forms-specialist`
---
## Purpose
This skill provides reference tables, scoring formulas, and evaluation patterns for cognitive accessibility review. It covers:
- WCAG 2.2 success criteria with cognitive accessibility relevance
- COGA (Cognitive Accessibility) W3C guidance mapping
- Plain language analysis techniques
- Reading level computation
- Authentication pattern analysis (3.3.8 / 3.3.9)
- Redundant entry detection (3.3.7)
- Timeout and session management analysis
---
## WCAG 2.2 Cognitive Accessibility Criteria Reference
### Level A
| SC | Name | What to Check | Common Failures |
|----|------|--------------|-----------------|
| 2.2.1 | Timing Adjustable | Session timeouts warn >=20s before expiry; user can extend >=10x or disable | Redirect without warning; extension UI exists but does nothing |
| 2.2.2 | Pause, Stop, Hide | Auto-moving/blinking content >5s has pause/stop control | Blinking backgrounds, marquee text, auto-scrolling feeds |
| 2.3.1 | Three Flashes | No content flashes >3 Hz (absolute) | Transition animations that strobe |
| 3.3.1 | Error Identification | Error identified in text, not just color | Red border with no error message |
| 3.3.2 | Labels or Instructions | Format requirements shown *before* error, required fields identified upfront | Format hint only in error state; asterisks with no legend |
| 3.3.7 | Redundant Entry *(2.2 new)* | Previously-entered info not re-requested in same session unless security-essential or stale | Email re-entered on step 3; billing address not pre-filled from shipping |
### Level AA
| SC | Name | What to Check | Common Failures |
|----|------|--------------|-----------------|
| 2.4.6 | Headings and Labels | Headings describe content; labels describe input purpose | "Section 1", "Info", "Details" as heading text |
| 3.2.3 | Consistent Navigation | Nav appears in same relative order across pages | Footer nav changes order on mobile vs desktop |
| 3.2.4 | Consistent Identification | Same-function components have same accessible name across pages | "Search" button on one page, "Find" on another |
| 3.3.3 | Error Suggestion | For detected errors, suggest correction when possible/safe | "Invalid email" with no example or format hint |
| 3.3.4 | Error Prevention (Legal, Financial) | Review step before irreversible submission; allow reversal or confirmation | One-click purchase with no review screen; no undo for account deletion |
| 3.3.8 | Accessible Authentication Min. *(2.2 new)* | Authentication must not require cognitive function test unless an alternative exists | `autocomplete="off"` on login forms; paste disabled in password fields; transcription-only CAPTCHA |
### Level AAA (Advisory - Review and Report)
| SC | Name | What to Check |
|----|------|--------------|
| 2.2.6 | Timeouts | Warn about data loss from inactivity at start of session |
| 3.1.3 | Unusual Words | Jargon/idiom defined on first use |
| 3.1.4 | Abbreviations | Abbreviations expanded on first use |
| 3.1.5 | Reading Level | General content <= Grade 8; see formula below |
| 3.3.9 | Accessible Authentication Enhanced *(2.2 new)* | No cognitive function test *at all* (removes the object-recognition exception) |
---
## Authentication Pattern Analysis (3.3.8 / 3.3.9)
### Failing Patterns
| Pattern | Failure | SC |
|---------|---------|-----|
| `autocomplete="off"` on `type="password"` | Blocks password manager paste | 3.3.8 |
| JavaScript `onpaste="return false"` on password input | Blocks manual paste | 3.3.8 |
| CAPTCHA with only distorted text option | No cognitive-free alternative | 3.3.8 |
| Security question requiring exact recall | Pure memory test | 3.3.8 |
| Re-entering full card number on the same session order flow | Redundant cognitive work | 3.3.7 |
### Passing Patterns
| Pattern | Why It Passes |
|---------|--------------|
| `<input type="password" autocomplete="current-password">` | Allows password manager autofill |
| Passkey/biometric as login alternative | No cognitive function test |
| "Same as shipping address" checkbox on billing form | Eliminates redundant entry |
| CAPTCHA with audio alternative | Provides non-visual option |
| Email magic link with no password required | Removes cognitive test entirely |
---
## Redundant Entry Patterns (3.3.7)
### Detection Checklist
In multi-step forms or wizards:
1. Map all input fields across all steps
2. Flag any field that requests information already collected in an earlier step
3. Exception: security confirmation (password confirm) and data that can become stale (current vs. new address)
### Common Violations
| Step 1 Collects | Step 3 Also Asks | Violation? |
|----------------|-----------------|-----------|
| Email address | Email for confirmation | Yes - unless security-essential |
| Full name | Billing name | Yes - should pre-fill |
| Shipping address | Billing address | Yes - should offer "same as shipping" |
| Date of birth | DOB for age verification | Yes - same session, same data |
| Password | Password confirm | No - security essential |
| Current address | New address (for change) | No - intentionally different |
---
## Plain Language Analysis
### Sentence Analysis
Evaluate all instructional text, error messages, button labels, and tooltip copy.
| Metric | Target | How to Measure |
|--------|--------|----------------|
| Sentence length | <= 25 words; aim for 15-20 | Count words between periods/question marks |
| Voice | Active preferred | Flag: "was submitted", "is required to be", "will be shown" |
| Double negatives | Zero tolerance | Flag: "not unable", "not required to not", "not without" |
| Jargon | Flag or define | Unexpanded acronyms, technical terms, domain-specific language |
| Consistent terminology | Same term for same concept | Flag: "sign in" + "log in" on same page/flow |
### Error Message Quality Rubric
Score each error message 0-3 on each dimension:
| Dimension | 0 | 1 | 2 | 3 |
|-----------|---|---|---|---|
| **Identification** | No message | Generic ("Error occurred") | Names the field | Names the field and exact problem |
| **Cause** | Absent | Vague | Partial | Full explanation |
| **Solution** | Absent | Vague hint | General guidance | Specific example or format |
| **Tone** | Blame ("You entered...wrong") | Neutral | Neutral + helpful | Supportive and constructive |
**Minimum score to pass:** 2 on Identification, 1 on Solution.
### Error Message Examples
| Rating | Error Text |
|--------|-----------|
| Fail | "Invalid input." |
| Fail | "You entered the wrong password." |
| Marginal | "Password is incorrect." |
| Pass | "The password doesn't match. Passwords are case-sensitive - check Caps Lock and try again." |
| Pass | "Email must include @ - for example, <name@company.com>" |
---
## Reading Level Computation
### Flesch-Kincaid Grade Level Formula
$$GL = 0.39 \times \frac{W}{S} + 11.8 \times \frac{Sy}{W} - 15.59$$
Where:
- $W$ = total words
- $S$ = total sentences
- $Sy$ = total syllables
**Syllable counting rules:**
- Count each vowel cluster (a, e, i, o, u) as one syllable
- Subtract one syllable for silent trailing *e* ("made" = 1, "make" = 1)
- Each word has at least 1 syllable
### Grade Level Targets
| Content Type | Target GL | Rationale |
|-------------|-----------|-----------|
| Consumer web app (general) | <= 8 | ~50% of US adults read at Grade 8 or below |
| Government / public services | <= 6 | Plain language mandate standard |
| Healthcare patient-facing | <= 6 | Low health literacy is common |
| Legal terms of service | <= 10 with plain-language summary | Complex by nature, but summary required |
| Technical developer docs | <= 12 | Expert audience acceptable |
### Quick-Estimate Method (when full computation is impractical)
Flag content for reading level review when:
- Any single sentence exceeds 35 words
- More than 30% of words exceed 3 syllables in a paragraph
- 3 or more Latin abbreviations in a single page ("i.e.", "e.g.", "et al.", "viz.")
---
## Timeout Warning Requirements (2.2.1)
### Detection Pattern
1. Identify any page or application state with session persistence (authenticated areas, multi-step forms with temporary state)
2. Check for: activity monitoring, session expiry timers, auto-logout functionality
3. Verify warning mechanism exists when found
### Compliant Implementation Pattern
```javascript
// PASS: Session warning with extension option
const SESSION_TIMEOUT_MS = 15 * 60 * 1000; // 15 minutes
const WARNING_BEFORE_MS = 2 * 60 * 1000; // Warn 2 minutes before
let warningShown = false;
sessionTimer = setTimeout(() => {
if (!warningShown) {
warningShown = true;
showSessionWarning({
message: "Your session will expire in 2 minutes due to inactivity.",
extendLabel: "Stay signed in",
logoutLabel: "Sign out now",
onExtend: () => { resetTimer(); warningShown = false; },
onLogout: () => endSession()
});
}
}, SESSION_TIMEOUT_MS - WARNING_BEFORE_MS);
```
### ARIA for Session Warning
```html
<div role="alertdialog" aria-modal="true" aria-labelledby="session-title" aria-describedby="session-desc">
<h2 id="session-title">Session expiring</h2>
<p id="session-desc">Your session will expire in <span id="session-countdown">2:00</span> minutes.</p>
<button type="button" id="extend-btn" autofocus>Stay signed in</button>
<button type="button">Sign out</button>
</div>
```
---
## COGA Guidance Mapping
### Making Content Usable - Key Objectives
From the W3C COGA "Making Content Usable for People with Cognitive and Learning Disabilities" guidance:
| Objective | What to Check | Severity |
|-----------|--------------|----------|
| Use a clear and understandable writing style | Reading level, plain language, sentence structure | High |
| Avoid creating excessive cognitive load | Step count in forms, memory demands, auto-advancing content | High |
| Provide reminders and feedback | Confirmation messages, progress indicators ("Step 2 of 4"), success confirmation | Medium |
| Help users avoid mistakes and recover from them | Validation before submit, undo capability, confirm destructive actions | High |
| Make forms easy to fill out | Pre-populate known data, stepwise format, visible format hints | High |
| Use a consistent and predictable layout | Navigation location, interactive element behavior, icon consistency | Medium |
| Use familiar icons and symbols | Standard iconography, labeled icons, no icon-only navigation | Medium |
| Avoid distorting a person's view of reality | No fake urgency timers, no dark patterns | High |
### Severity Assessment for COGA Findings
| Finding Type | Severity | Rationale |
|-------------|----------|-----------|
| 3.3.8 violation (paste disabled / CAPTCHA only) | Critical | Completely blocks authentication for many users |
| 3.3.7 violation (required re-entry of existing data) | High | Significant burden; causes abandonment |
| 2.2.1 violation (no timeout warning) | High | Data loss and user confusion |
| Reading level > Grade 10 (non-technical) | High | Excludes ~20% of adults |
| Error message with no correction guidance | High | Users cannot self-recover |
| Poor error message tone (blame language) | Medium | Anxiety increase; may cause abandonment |
| Inconsistent terminology across same flow | Medium | Confusion; increased cognitive load |
| Missing progress indicator in multi-step | Medium | User cannot gauge effort remaining |
| Reading level Grade 9-10 (general content) | Medium | Partial barrier |
| Jargon without definition | Low-Medium | Depends on density |
| Missing confirmation of success | Low | Uncertainty about whether action completed |
---
## Integration Notes
### When Used by web-accessibility-wizard
The wizard invokes `cognitive-accessibility` as part of Phase 3 (Forms and Input) and Phase 5 (Dynamic Content). Specifically:
- Phase 3: delegates 3.3.7 and 3.3.8 detection + error message quality to this skill
- Phase 5: delegates timeout warning detection to this skill
### When Used Standalone
`cognitive-accessibility` agent loads this skill and applies the full Phase 2 + Phase 3 assessment independently. It accepts page URLs, component files, or plain text content blocks.
### Handoffs from this Skill
- Form validation specifics -> `forms-specialist`
- ARIA state for error announcements -> `aria-specialist`
- Live region for timeout warnings -> `live-region-controller`
- WCAG criterion explanations -> `wcag-guide`