telo3-ai 5.0.7 → 6.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -791
- package/SKILL.md +36 -657
- package/bootstrap/TELO3.md +17 -0
- package/cli.js +223 -42
- package/hooks/inject-contract.mjs +23 -0
- package/hooks/session-start.example.json +15 -0
- package/index.js +48 -14
- package/package.json +32 -69
- package/references/accessibility-quality.md +92 -272
- package/references/ai-behavior.md +70 -332
- package/references/anti-slop.md +71 -0
- package/references/document-specification.md +110 -419
- package/references/legal-compliance.md +90 -395
- package/references/performance-quality.md +100 -351
- package/references/privacy-compliance.md +88 -464
- package/references/project-audit.md +79 -440
- package/references/security-quality.md +68 -220
- package/references/seo-quality.md +83 -339
- package/references/smart-skill-delegation.md +73 -419
- package/references/token-optimization.md +83 -450
- package/references/ui-quality.md +106 -481
- package/references/workflow.md +91 -447
- package/scripts/postinstall.mjs +27 -0
- package/src/activate.js +159 -0
- package/src/context.js +72 -0
- package/src/find-context.js +41 -0
- package/src/init.js +38 -0
- package/src/install.js +128 -0
- package/src/paths.js +20 -0
- package/src/status.js +30 -0
- package/src/tokens.js +10 -0
- package/src/validate.js +220 -0
- package/src/version.js +12 -0
- package/templates/architecture.md +17 -398
- package/templates/design.md +22 -631
- package/templates/memory.md +13 -351
- package/templates/prd.md +15 -295
- package/templates/rules.md +20 -600
- package/templates/tasks.md +10 -210
- package/AI-CONTEXT.md +0 -272
- package/ONBOARDING-SKILL.md +0 -738
- package/SKILL-METADATA.json +0 -237
- package/scripts/init-project-context.sh +0 -139
- package/scripts/validate-project-context.sh +0 -164
- package/skills/telo3/SKILL.md +0 -315
- package/skills/telo3-context/SKILL.md +0 -272
- package/skills/telo3-onboarding/SKILL.md +0 -738
|
@@ -1,278 +1,98 @@
|
|
|
1
|
-
# Accessibility Quality
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
-
|
|
55
|
-
-
|
|
56
|
-
-
|
|
57
|
-
-
|
|
58
|
-
-
|
|
59
|
-
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
-
|
|
78
|
-
-
|
|
79
|
-
-
|
|
80
|
-
|
|
81
|
-
### 9. Buttons
|
|
82
|
-
- [ ] Use `<button>` for actions (not `<div>` or `<span>`)
|
|
83
|
-
- [ ] Use `<a>` for navigation
|
|
84
|
-
- [ ] Button text is descriptive
|
|
85
|
-
- [ ] Icons-only buttons have `aria-label`
|
|
86
|
-
- [ ] Disabled buttons explained (not just greyed out)
|
|
87
|
-
|
|
88
|
-
### 10. ARIA Attributes
|
|
89
|
-
- [ ] Use ARIA when semantic HTML isn't sufficient
|
|
90
|
-
- [ ] `role` attribute where needed (e.g., `role="dialog"`)
|
|
91
|
-
- [ ] `aria-label` for unlabeled elements
|
|
92
|
-
- [ ] `aria-labelledby` for complex labels
|
|
93
|
-
- [ ] `aria-describedby` for descriptions
|
|
94
|
-
- [ ] `aria-hidden="true"` for decorative elements
|
|
95
|
-
- [ ] `aria-live` for dynamic content updates
|
|
96
|
-
- [ ] `aria-expanded`, `aria-pressed`, `aria-selected` for state
|
|
97
|
-
- [ ] Don't overuse ARIA (semantic HTML is better)
|
|
98
|
-
|
|
99
|
-
### 11. Dynamic Content
|
|
100
|
-
- [ ] Screen reader announcements for status messages
|
|
101
|
-
- [ ] Loading states announced
|
|
102
|
-
- [ ] Error messages announced
|
|
103
|
-
- [ ] Success messages announced
|
|
104
|
-
- [ ] Use `aria-live` for dynamic updates
|
|
105
|
-
- [ ] Use `role="alert"` for important messages
|
|
106
|
-
|
|
107
|
-
### 12. Modals & Dialogs
|
|
108
|
-
- [ ] Focus trapped inside modal
|
|
109
|
-
- [ ] Escape key closes modal
|
|
110
|
-
- [ ] Focus moved to modal when opened
|
|
111
|
-
- [ ] Focus returned to trigger when closed
|
|
112
|
-
- [ ] `role="dialog"` or `role="alertdialog"`
|
|
113
|
-
- [ ] `aria-modal="true"`
|
|
114
|
-
- [ ] `aria-labelledby` for modal title
|
|
115
|
-
- [ ] Background content inert when modal open
|
|
116
|
-
|
|
117
|
-
### 13. Tables
|
|
118
|
-
- [ ] Use `<table>` for tabular data (not layout)
|
|
119
|
-
- [ ] Use `<th>` for headers
|
|
120
|
-
- [ ] Use `<caption>` for table title
|
|
121
|
-
- [ ] Complex tables use `scope` attribute
|
|
122
|
-
- [ ] Data cells use `<td>`
|
|
123
|
-
|
|
124
|
-
### 14. Media
|
|
125
|
-
- [ ] Videos have captions
|
|
126
|
-
- [ ] Audio has transcripts
|
|
127
|
-
- [ ] No auto-play (or easily stopped)
|
|
128
|
-
- [ ] Media controls are keyboard accessible
|
|
129
|
-
|
|
130
|
-
### 15. Touch Targets
|
|
131
|
-
- [ ] Touch targets ≥ 44x44px on mobile (WCAG AAA: 44px, AA: 24px minimum)
|
|
132
|
-
- [ ] Adequate spacing between touch targets
|
|
133
|
-
- [ ] Buttons are easy to tap
|
|
134
|
-
|
|
135
|
-
### 16. Motion & Animation
|
|
136
|
-
- [ ] Respect `prefers-reduced-motion`
|
|
137
|
-
- [ ] Essential motion only
|
|
138
|
-
- [ ] No flashing content (seizure risk: <3 flashes/sec)
|
|
139
|
-
- [ ] Animations can be paused
|
|
1
|
+
# Accessibility Quality
|
|
2
|
+
**Load when:** building or reviewing any interactive UI, forms, or media, or auditing WCAG compliance.
|
|
3
|
+
|
|
4
|
+
Baseline: WCAG 2.1 Level AA (A = minimum, AA = recommended target, AAA = highest). POUR: Perceivable, Operable, Understandable, Robust (works with assistive tech). Build accessibility in from the start; it is not optional.
|
|
5
|
+
|
|
6
|
+
## Semantic HTML first (ARIA only when HTML is insufficient)
|
|
7
|
+
- `<button>` for actions; `<a>` for navigation.
|
|
8
|
+
- Never use `<div>`/`<span>` as buttons.
|
|
9
|
+
- `<nav>` for navigation; `<main>` for main content; `<header>` and `<footer>`.
|
|
10
|
+
- `<article>`, `<section>`, `<aside>` used appropriately.
|
|
11
|
+
- Headings `<h1>`-`<h6>` for structure; `<ul>`/`<ol>` for lists.
|
|
12
|
+
- `<table>` only for tabular data, never layout.
|
|
13
|
+
|
|
14
|
+
## Keyboard & Focus
|
|
15
|
+
- All interactive elements keyboard accessible.
|
|
16
|
+
- Logical tab order matching visual flow; no keyboard traps.
|
|
17
|
+
- Skip-to-main-content link provided.
|
|
18
|
+
- Visible focus on every interactive element; focus outline minimum 2px with sufficient contrast.
|
|
19
|
+
- Never `outline: none` / `:focus { outline: none }` without an accessible replacement.
|
|
20
|
+
- Modals: trap focus inside; move focus to modal on open.
|
|
21
|
+
- Return focus to trigger on close; Escape closes dialogs/modals.
|
|
22
|
+
|
|
23
|
+
## Forms & Labels
|
|
24
|
+
- Every input has an associated `<label>` (`for="id"` or wrapping).
|
|
25
|
+
- Placeholder is never the only label.
|
|
26
|
+
- Required fields indicated by more than color alone.
|
|
27
|
+
- Errors clear and actionable; associated with inputs via `aria-describedby`.
|
|
28
|
+
- Form validation errors announced to screen readers.
|
|
29
|
+
|
|
30
|
+
## Images & Alt Text
|
|
31
|
+
- Every image has `alt`: descriptive for informative images, `alt=""` for decorative.
|
|
32
|
+
- Complex images: longer description via `aria-describedby`.
|
|
33
|
+
- Icons/icon-only buttons: `aria-label` or sr-only text.
|
|
34
|
+
- Avoid images of text — use real text.
|
|
35
|
+
|
|
36
|
+
## Color & Contrast (WCAG AA)
|
|
37
|
+
| Element | Minimum ratio |
|
|
38
|
+
|---|---|
|
|
39
|
+
| Normal text | 4.5:1 |
|
|
40
|
+
| Large text (18pt+, or 14pt+ bold) | 3:1 |
|
|
41
|
+
| Interactive elements / UI components | 3:1 |
|
|
42
|
+
- Color is never the only way to convey information.
|
|
43
|
+
- Links distinguishable from surrounding text (underline or sufficient contrast).
|
|
44
|
+
|
|
45
|
+
## Headings, Links, Buttons
|
|
46
|
+
- One `<h1>` per page; logical order h1→h2→h3; no skipped levels.
|
|
47
|
+
- Headings describe content structure, not used just for styling.
|
|
48
|
+
- Descriptive link text ("Read our guide", not "Click here"); purpose clear from text or context.
|
|
49
|
+
- Links visually distinct from text; indicate external links when appropriate.
|
|
50
|
+
- Button text descriptive; icon-only buttons get `aria-label`.
|
|
51
|
+
- Explain disabled buttons (not just greyed out).
|
|
52
|
+
|
|
53
|
+
## ARIA (only when semantic HTML can't do it)
|
|
54
|
+
- `role` where needed (e.g. `role="dialog"`).
|
|
55
|
+
- `aria-label` for unlabeled elements; `aria-labelledby` for complex labels; `aria-describedby` for descriptions.
|
|
56
|
+
- `aria-hidden="true"` on decorative elements.
|
|
57
|
+
- `aria-live` for dynamic updates; `role="alert"` for important messages.
|
|
58
|
+
- State: `aria-expanded`, `aria-pressed`, `aria-selected`.
|
|
59
|
+
- Don't overuse ARIA — native semantics are better.
|
|
60
|
+
|
|
61
|
+
## Dynamic Content & Modals
|
|
62
|
+
- Announce status, loading, error, and success messages to screen readers (`aria-live`).
|
|
63
|
+
- `role="alert"` for urgent messages.
|
|
64
|
+
- Modals: `role="dialog"` or `"alertdialog"`, `aria-modal="true"`, `aria-labelledby` for the title.
|
|
65
|
+
- Background content inert while modal open.
|
|
66
|
+
|
|
67
|
+
## Tables & Media
|
|
68
|
+
- Tables: `<th>` headers, `<caption>` title, `<td>` data cells; `scope` attribute for complex tables.
|
|
69
|
+
- Videos have captions; audio has transcripts.
|
|
70
|
+
- No autoplay (or easily stopped); media controls keyboard accessible.
|
|
71
|
+
|
|
72
|
+
## Touch, Motion, Language, Zoom
|
|
73
|
+
- Touch targets ≥ 44x44px on mobile (WCAG AAA: 44px; AA minimum: 24px).
|
|
74
|
+
- Adequate spacing between targets; buttons easy to tap.
|
|
75
|
+
- Respect `prefers-reduced-motion`; essential motion only; animations can be paused.
|
|
76
|
+
- No flashing content (seizure risk: keep < 3 flashes/sec).
|
|
77
|
+
- `<html lang="...">` set; mark language changes (`<span lang="es">Hola</span>`).
|
|
78
|
+
- Content reflows at 400% zoom without horizontal scrolling.
|
|
79
|
+
- Never disable zoom via viewport meta; text resizes without loss of functionality.
|
|
80
|
+
- Layout adapts to different screen sizes.
|
|
140
81
|
|
|
141
82
|
```css
|
|
142
83
|
@media (prefers-reduced-motion: reduce) {
|
|
143
|
-
* {
|
|
144
|
-
animation-duration: 0.01ms !important;
|
|
145
|
-
animation-iteration-count: 1 !important;
|
|
146
|
-
transition-duration: 0.01ms !important;
|
|
147
|
-
}
|
|
84
|
+
* { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }
|
|
148
85
|
}
|
|
149
86
|
```
|
|
150
87
|
|
|
151
|
-
|
|
152
|
-
-
|
|
153
|
-
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
-
|
|
157
|
-
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
## WCAG Conformance Levels
|
|
164
|
-
|
|
165
|
-
- **Level A:** Minimum (must have)
|
|
166
|
-
- **Level AA:** Mid-range (should have) — **recommended target**
|
|
167
|
-
- **Level AAA:** Highest (nice to have)
|
|
168
|
-
|
|
169
|
-
**Aim for WCAG 2.1 Level AA compliance as a baseline.**
|
|
170
|
-
|
|
171
|
-
---
|
|
172
|
-
|
|
173
|
-
## Screen Reader Testing
|
|
174
|
-
|
|
175
|
-
### Test With:
|
|
176
|
-
- **NVDA** (Windows, free)
|
|
177
|
-
- **JAWS** (Windows, paid)
|
|
178
|
-
- **VoiceOver** (macOS, iOS, built-in)
|
|
179
|
-
- **TalkBack** (Android, built-in)
|
|
180
|
-
|
|
181
|
-
### What to Test:
|
|
182
|
-
- Navigation (headings, landmarks)
|
|
183
|
-
- Forms (labels, errors)
|
|
184
|
-
- Interactive elements (buttons, links)
|
|
185
|
-
- Dynamic content (announcements)
|
|
186
|
-
- Images (alt text)
|
|
187
|
-
|
|
188
|
-
---
|
|
189
|
-
|
|
190
|
-
## Common Accessibility Mistakes
|
|
191
|
-
|
|
192
|
-
❌ `<div>` or `<span>` used as buttons
|
|
193
|
-
❌ Missing alt text
|
|
194
|
-
❌ Poor color contrast
|
|
195
|
-
❌ Form inputs without labels
|
|
196
|
-
❌ Keyboard inaccessible controls
|
|
197
|
-
❌ No visible focus indicators
|
|
198
|
-
❌ Skipped heading levels
|
|
199
|
-
❌ "Click here" link text
|
|
200
|
-
❌ Color as only indicator
|
|
201
|
-
❌ Auto-playing media
|
|
202
|
-
❌ Removing `outline` without replacement
|
|
203
|
-
❌ Non-descriptive ARIA labels
|
|
204
|
-
|
|
205
|
-
---
|
|
206
|
-
|
|
207
|
-
## Accessibility Documentation Template
|
|
208
|
-
|
|
209
|
-
```markdown
|
|
210
|
-
## Accessibility
|
|
211
|
-
|
|
212
|
-
### WCAG Compliance
|
|
213
|
-
- **Target level:** WCAG 2.1 Level AA
|
|
214
|
-
- **Current status:** [In progress / Needs audit / Compliant]
|
|
215
|
-
- **Last audit:** [Date or "Not performed"]
|
|
216
|
-
|
|
217
|
-
### Semantic HTML
|
|
218
|
-
- **Status:** [Implemented / Partial]
|
|
219
|
-
|
|
220
|
-
### Keyboard Navigation
|
|
221
|
-
- **All interactive elements accessible:** [Yes/No]
|
|
222
|
-
- **Focus indicators:** [Visible]
|
|
223
|
-
- **Tab order:** [Logical]
|
|
224
|
-
|
|
225
|
-
### Forms
|
|
226
|
-
- **Labels:** [All inputs labeled]
|
|
227
|
-
- **Error handling:** [Accessible]
|
|
228
|
-
|
|
229
|
-
### Images
|
|
230
|
-
- **Alt text:** [Complete / Partial]
|
|
231
|
-
|
|
232
|
-
### Color Contrast
|
|
233
|
-
- **Status:** [WCAG AA compliant / Needs improvement]
|
|
234
|
-
|
|
235
|
-
### Screen Readers
|
|
236
|
-
- **Tested with:** [NVDA, VoiceOver, etc. or "Not tested"]
|
|
237
|
-
|
|
238
|
-
### Motion
|
|
239
|
-
- **Respects prefers-reduced-motion:** [Yes/No]
|
|
240
|
-
|
|
241
|
-
### Known Issues
|
|
242
|
-
- [List accessibility issues or "None known"]
|
|
243
|
-
|
|
244
|
-
### Next Steps
|
|
245
|
-
- [ ] [Accessibility task 1]
|
|
246
|
-
- [ ] [Accessibility task 2]
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
---
|
|
250
|
-
|
|
251
|
-
## Tools for Accessibility Audit
|
|
252
|
-
|
|
253
|
-
- **Lighthouse** (Chrome DevTools) — Automated audit
|
|
254
|
-
- **axe DevTools** (browser extension) — Comprehensive testing
|
|
255
|
-
- **WAVE** (browser extension) — Visual feedback
|
|
256
|
-
- **Color Contrast Analyzer** — Check contrast ratios
|
|
257
|
-
- **Screen readers** — Manual testing (NVDA, VoiceOver)
|
|
258
|
-
- **Keyboard only** — Test without mouse
|
|
259
|
-
|
|
260
|
-
---
|
|
261
|
-
|
|
262
|
-
## Quick Wins
|
|
263
|
-
|
|
264
|
-
1. Add alt text to all images
|
|
265
|
-
2. Ensure keyboard navigation works
|
|
266
|
-
3. Make focus visible
|
|
267
|
-
4. Use semantic HTML
|
|
268
|
-
5. Label all form inputs
|
|
269
|
-
6. Check color contrast
|
|
270
|
-
7. Add skip link
|
|
271
|
-
8. Test with keyboard only
|
|
272
|
-
9. Respect prefers-reduced-motion
|
|
273
|
-
|
|
274
|
-
---
|
|
275
|
-
|
|
276
|
-
**Summary:** Accessibility is not optional. Build it in from the start. Use semantic HTML, ensure keyboard navigation, maintain color contrast, provide text alternatives, and test with real users and assistive technologies.
|
|
277
|
-
|
|
278
|
-
**Remember:** Automated tools catch ~30% of issues. Manual testing and user testing with people using assistive technologies are essential for true accessibility.
|
|
88
|
+
## Testing
|
|
89
|
+
- Automated: Lighthouse (Chrome DevTools), axe DevTools, WAVE, Color Contrast Analyzer.
|
|
90
|
+
- Automated tools catch only ~30% of issues — manual testing is essential.
|
|
91
|
+
- Manual keyboard-only pass (no mouse): focus visibility, tab order, traps, Escape behavior, skip link.
|
|
92
|
+
- Screen readers: NVDA (Windows, free), JAWS (Windows, paid), VoiceOver (macOS/iOS, built-in), TalkBack (Android, built-in).
|
|
93
|
+
- SR test coverage: heading/landmark navigation, form labels/errors, buttons/links, dynamic announcements, alt text.
|
|
94
|
+
- Test with real users of assistive technologies.
|
|
95
|
+
|
|
96
|
+
## Record in project docs
|
|
97
|
+
- Target level and audit status/date; semantic HTML, keyboard, forms, alt text, contrast status.
|
|
98
|
+
- Screen readers tested; reduced-motion support; known issues; next steps.
|