--- name: kb-cognitive-accessibility description: Reference data, not a reviewer. 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. license: MIT disable-model-invocation: true user-invocable: false metadata: tier: reference domain: cross-cutting output: none effort: low title: Cognitive Accessibility --- ## 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 Each SC, with name, what to check and common failures. | 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 Each SC, with name, what to check and common failures. | 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) Each SC, with name and what to check. | 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 Each pattern, with its failure and SC. | 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 Each pattern, with why it passes. | Pattern | Why It Passes | |---------|--------------| | `` | 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 Each step 1 collect, with its step 3 also asks and violation. | 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 Each rating, with its error text. | 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, " | --- ## 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 Each content type, with its target GL and rationale. | 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

Session expiring

Your session will expire in 2:00 minutes.

``` --- ## 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 Each finding type, with its severity and rationale. | 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`