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:
- Map all input fields across all steps
- Flag any field that requests information already collected in an earlier step
- 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
- Identify any page or application state with session persistence (authenticated areas, multi-step forms with temporary state)
- Check for: activity monitoring, session expiry timers, auto-logout functionality
- Verify warning mechanism exists when found
Compliant Implementation Pattern
// 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
<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
1---2name: cognitive-accessibility3description: 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.4---5
6# Skill: Cognitive Accessibility
7
8**Domain:** Cognitive, learning, and neurological accessibility
9**WCAG scope:** WCAG 2.2 AA + key AAA, COGA W3C guidance
10**Agents that use this skill:** `cognitive-accessibility`, `web-accessibility-wizard`, `accessibility-lead`, `forms-specialist`
11
12---
13
14## Purpose
15
16This skill provides reference tables, scoring formulas, and evaluation patterns for cognitive accessibility review. It covers:
17
18- WCAG 2.2 success criteria with cognitive accessibility relevance
19- COGA (Cognitive Accessibility) W3C guidance mapping
20- Plain language analysis techniques
21- Reading level computation
22- Authentication pattern analysis (3.3.8 / 3.3.9)
23- Redundant entry detection (3.3.7)
24- Timeout and session management analysis
25
26---
27
28## WCAG 2.2 Cognitive Accessibility Criteria Reference
29
30### Level A
31
32| SC | Name | What to Check | Common Failures |
33|----|------|--------------|-----------------|
34| 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 |
35| 2.2.2 | Pause, Stop, Hide | Auto-moving/blinking content >5s has pause/stop control | Blinking backgrounds, marquee text, auto-scrolling feeds |
36| 2.3.1 | Three Flashes | No content flashes >3 Hz (absolute) | Transition animations that strobe |
37| 3.3.1 | Error Identification | Error identified in text, not just color | Red border with no error message |
38| 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 |
39| 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 |
40
41### Level AA
42
43| SC | Name | What to Check | Common Failures |
44|----|------|--------------|-----------------|
45| 2.4.6 | Headings and Labels | Headings describe content; labels describe input purpose | "Section 1", "Info", "Details" as heading text |
46| 3.2.3 | Consistent Navigation | Nav appears in same relative order across pages | Footer nav changes order on mobile vs desktop |
47| 3.2.4 | Consistent Identification | Same-function components have same accessible name across pages | "Search" button on one page, "Find" on another |
48| 3.3.3 | Error Suggestion | For detected errors, suggest correction when possible/safe | "Invalid email" with no example or format hint |
49| 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 |
50| 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 |
51
52### Level AAA (Advisory - Review and Report)
53
54| SC | Name | What to Check |
55|----|------|--------------|
56| 2.2.6 | Timeouts | Warn about data loss from inactivity at start of session |
57| 3.1.3 | Unusual Words | Jargon/idiom defined on first use |
58| 3.1.4 | Abbreviations | Abbreviations expanded on first use |
59| 3.1.5 | Reading Level | General content <= Grade 8; see formula below |
60| 3.3.9 | Accessible Authentication Enhanced *(2.2 new)* | No cognitive function test *at all* (removes the object-recognition exception) |
61
62---
63
64## Authentication Pattern Analysis (3.3.8 / 3.3.9)
65
66### Failing Patterns
67
68| Pattern | Failure | SC |
69|---------|---------|-----|
70| `autocomplete="off"` on `type="password"` | Blocks password manager paste | 3.3.8 |
71| JavaScript `onpaste="return false"` on password input | Blocks manual paste | 3.3.8 |
72| CAPTCHA with only distorted text option | No cognitive-free alternative | 3.3.8 |
73| Security question requiring exact recall | Pure memory test | 3.3.8 |
74| Re-entering full card number on the same session order flow | Redundant cognitive work | 3.3.7 |
75
76### Passing Patterns
77
78| Pattern | Why It Passes |
79|---------|--------------|
80| `<input type="password" autocomplete="current-password">` | Allows password manager autofill |
81| Passkey/biometric as login alternative | No cognitive function test |
82| "Same as shipping address" checkbox on billing form | Eliminates redundant entry |
83| CAPTCHA with audio alternative | Provides non-visual option |
84| Email magic link with no password required | Removes cognitive test entirely |
85
86---
87
88## Redundant Entry Patterns (3.3.7)
89
90### Detection Checklist
91
92In multi-step forms or wizards:
93
941. Map all input fields across all steps
952. Flag any field that requests information already collected in an earlier step
963. Exception: security confirmation (password confirm) and data that can become stale (current vs. new address)
97
98### Common Violations
99
100| Step 1 Collects | Step 3 Also Asks | Violation? |
101|----------------|-----------------|-----------|
102| Email address | Email for confirmation | Yes - unless security-essential |
103| Full name | Billing name | Yes - should pre-fill |
104| Shipping address | Billing address | Yes - should offer "same as shipping" |
105| Date of birth | DOB for age verification | Yes - same session, same data |
106| Password | Password confirm | No - security essential |
107| Current address | New address (for change) | No - intentionally different |
108
109---
110
111## Plain Language Analysis
112
113### Sentence Analysis
114
115Evaluate all instructional text, error messages, button labels, and tooltip copy.
116
117| Metric | Target | How to Measure |
118|--------|--------|----------------|
119| Sentence length | <= 25 words; aim for 15-20 | Count words between periods/question marks |
120| Voice | Active preferred | Flag: "was submitted", "is required to be", "will be shown" |
121| Double negatives | Zero tolerance | Flag: "not unable", "not required to not", "not without" |
122| Jargon | Flag or define | Unexpanded acronyms, technical terms, domain-specific language |
123| Consistent terminology | Same term for same concept | Flag: "sign in" + "log in" on same page/flow |
124
125### Error Message Quality Rubric
126
127Score each error message 0-3 on each dimension:
128
129| Dimension | 0 | 1 | 2 | 3 |
130|-----------|---|---|---|---|
131| **Identification** | No message | Generic ("Error occurred") | Names the field | Names the field and exact problem |
132| **Cause** | Absent | Vague | Partial | Full explanation |
133| **Solution** | Absent | Vague hint | General guidance | Specific example or format |
134| **Tone** | Blame ("You entered...wrong") | Neutral | Neutral + helpful | Supportive and constructive |
135
136**Minimum score to pass:** 2 on Identification, 1 on Solution.
137
138### Error Message Examples
139
140| Rating | Error Text |
141|--------|-----------|
142| Fail | "Invalid input." |
143| Fail | "You entered the wrong password." |
144| Marginal | "Password is incorrect." |
145| Pass | "The password doesn't match. Passwords are case-sensitive - check Caps Lock and try again." |
146| Pass | "Email must include @ - for example, <name@company.com>" |
147
148---
149
150## Reading Level Computation
151
152### Flesch-Kincaid Grade Level Formula
153
154$$GL = 0.39 \times \frac{W}{S} + 11.8 \times \frac{Sy}{W} - 15.59$$
155
156Where:
157
158- $W$ = total words
159- $S$ = total sentences
160- $Sy$ = total syllables
161
162**Syllable counting rules:**
163
164- Count each vowel cluster (a, e, i, o, u) as one syllable
165- Subtract one syllable for silent trailing *e* ("made" = 1, "make" = 1)
166- Each word has at least 1 syllable
167
168### Grade Level Targets
169
170| Content Type | Target GL | Rationale |
171|-------------|-----------|-----------|
172| Consumer web app (general) | <= 8 | ~50% of US adults read at Grade 8 or below |
173| Government / public services | <= 6 | Plain language mandate standard |
174| Healthcare patient-facing | <= 6 | Low health literacy is common |
175| Legal terms of service | <= 10 with plain-language summary | Complex by nature, but summary required |
176| Technical developer docs | <= 12 | Expert audience acceptable |
177
178### Quick-Estimate Method (when full computation is impractical)
179
180Flag content for reading level review when:
181
182- Any single sentence exceeds 35 words
183- More than 30% of words exceed 3 syllables in a paragraph
184- 3 or more Latin abbreviations in a single page ("i.e.", "e.g.", "et al.", "viz.")
185
186---
187
188## Timeout Warning Requirements (2.2.1)
189
190### Detection Pattern
191
1921. Identify any page or application state with session persistence (authenticated areas, multi-step forms with temporary state)
1932. Check for: activity monitoring, session expiry timers, auto-logout functionality
1943. Verify warning mechanism exists when found
195
196### Compliant Implementation Pattern
197
198```javascript
199// PASS: Session warning with extension option
200const SESSION_TIMEOUT_MS = 15 * 60 * 1000; // 15 minutes
201const WARNING_BEFORE_MS = 2 * 60 * 1000; // Warn 2 minutes before
202
203let warningShown = false;
204
205sessionTimer = setTimeout(() => {
206 if (!warningShown) {
207 warningShown = true;
208 showSessionWarning({
209 message: "Your session will expire in 2 minutes due to inactivity.",
210 extendLabel: "Stay signed in",
211 logoutLabel: "Sign out now",
212 onExtend: () => { resetTimer(); warningShown = false; },
213 onLogout: () => endSession()
214 });
215 }
216}, SESSION_TIMEOUT_MS - WARNING_BEFORE_MS);
217```
218
219### ARIA for Session Warning
220
221```html
222<div role="alertdialog" aria-modal="true" aria-labelledby="session-title" aria-describedby="session-desc">
223 <h2 id="session-title">Session expiring</h2>
224 <p id="session-desc">Your session will expire in <span id="session-countdown">2:00</span> minutes.</p>
225 <button type="button" id="extend-btn" autofocus>Stay signed in</button>
226 <button type="button">Sign out</button>
227</div>
228```
229
230---
231
232## COGA Guidance Mapping
233
234### Making Content Usable - Key Objectives
235
236From the W3C COGA "Making Content Usable for People with Cognitive and Learning Disabilities" guidance:
237
238| Objective | What to Check | Severity |
239|-----------|--------------|----------|
240| Use a clear and understandable writing style | Reading level, plain language, sentence structure | High |
241| Avoid creating excessive cognitive load | Step count in forms, memory demands, auto-advancing content | High |
242| Provide reminders and feedback | Confirmation messages, progress indicators ("Step 2 of 4"), success confirmation | Medium |
243| Help users avoid mistakes and recover from them | Validation before submit, undo capability, confirm destructive actions | High |
244| Make forms easy to fill out | Pre-populate known data, stepwise format, visible format hints | High |
245| Use a consistent and predictable layout | Navigation location, interactive element behavior, icon consistency | Medium |
246| Use familiar icons and symbols | Standard iconography, labeled icons, no icon-only navigation | Medium |
247| Avoid distorting a person's view of reality | No fake urgency timers, no dark patterns | High |
248
249### Severity Assessment for COGA Findings
250
251| Finding Type | Severity | Rationale |
252|-------------|----------|-----------|
253| 3.3.8 violation (paste disabled / CAPTCHA only) | Critical | Completely blocks authentication for many users |
254| 3.3.7 violation (required re-entry of existing data) | High | Significant burden; causes abandonment |
255| 2.2.1 violation (no timeout warning) | High | Data loss and user confusion |
256| Reading level > Grade 10 (non-technical) | High | Excludes ~20% of adults |
257| Error message with no correction guidance | High | Users cannot self-recover |
258| Poor error message tone (blame language) | Medium | Anxiety increase; may cause abandonment |
259| Inconsistent terminology across same flow | Medium | Confusion; increased cognitive load |
260| Missing progress indicator in multi-step | Medium | User cannot gauge effort remaining |
261| Reading level Grade 9-10 (general content) | Medium | Partial barrier |
262| Jargon without definition | Low-Medium | Depends on density |
263| Missing confirmation of success | Low | Uncertainty about whether action completed |
264
265---
266
267## Integration Notes
268
269### When Used by web-accessibility-wizard
270
271The wizard invokes `cognitive-accessibility` as part of Phase 3 (Forms and Input) and Phase 5 (Dynamic Content). Specifically:
272
273- Phase 3: delegates 3.3.7 and 3.3.8 detection + error message quality to this skill
274- Phase 5: delegates timeout warning detection to this skill
275
276### When Used Standalone
277
278`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.
279
280### Handoffs from this Skill
281
282- Form validation specifics -> `forms-specialist`
283- ARIA state for error announcements -> `aria-specialist`
284- Live region for timeout warnings -> `live-region-controller`
285- WCAG criterion explanations -> `wcag-guide`