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.
Files changed (47) hide show
  1. package/README.md +32 -791
  2. package/SKILL.md +36 -657
  3. package/bootstrap/TELO3.md +17 -0
  4. package/cli.js +223 -42
  5. package/hooks/inject-contract.mjs +23 -0
  6. package/hooks/session-start.example.json +15 -0
  7. package/index.js +48 -14
  8. package/package.json +32 -69
  9. package/references/accessibility-quality.md +92 -272
  10. package/references/ai-behavior.md +70 -332
  11. package/references/anti-slop.md +71 -0
  12. package/references/document-specification.md +110 -419
  13. package/references/legal-compliance.md +90 -395
  14. package/references/performance-quality.md +100 -351
  15. package/references/privacy-compliance.md +88 -464
  16. package/references/project-audit.md +79 -440
  17. package/references/security-quality.md +68 -220
  18. package/references/seo-quality.md +83 -339
  19. package/references/smart-skill-delegation.md +73 -419
  20. package/references/token-optimization.md +83 -450
  21. package/references/ui-quality.md +106 -481
  22. package/references/workflow.md +91 -447
  23. package/scripts/postinstall.mjs +27 -0
  24. package/src/activate.js +159 -0
  25. package/src/context.js +72 -0
  26. package/src/find-context.js +41 -0
  27. package/src/init.js +38 -0
  28. package/src/install.js +128 -0
  29. package/src/paths.js +20 -0
  30. package/src/status.js +30 -0
  31. package/src/tokens.js +10 -0
  32. package/src/validate.js +220 -0
  33. package/src/version.js +12 -0
  34. package/templates/architecture.md +17 -398
  35. package/templates/design.md +22 -631
  36. package/templates/memory.md +13 -351
  37. package/templates/prd.md +15 -295
  38. package/templates/rules.md +20 -600
  39. package/templates/tasks.md +10 -210
  40. package/AI-CONTEXT.md +0 -272
  41. package/ONBOARDING-SKILL.md +0 -738
  42. package/SKILL-METADATA.json +0 -237
  43. package/scripts/init-project-context.sh +0 -139
  44. package/scripts/validate-project-context.sh +0 -164
  45. package/skills/telo3/SKILL.md +0 -315
  46. package/skills/telo3-context/SKILL.md +0 -272
  47. package/skills/telo3-onboarding/SKILL.md +0 -738
@@ -1,278 +1,98 @@
1
- # Accessibility Quality Standards
2
-
3
- > WCAG-based accessibility audit framework.
4
-
5
- ---
6
-
7
- ## Core Principles (POUR)
8
-
9
- 1. **Perceivable** — Information must be presentable to users
10
- 2. **Operable** — UI components must be operable
11
- 3. **Understandable** — Information and operation must be understandable
12
- 4. **Robust** — Content must work with assistive technologies
13
-
14
- ---
15
-
16
- ## Accessibility Audit Checklist
17
-
18
- ### 1. Semantic HTML
19
- - [ ] Use appropriate HTML elements (`<button>`, not `<div>` for buttons)
20
- - [ ] Use `<nav>` for navigation
21
- - [ ] Use `<main>` for main content
22
- - [ ] Use `<header>` and `<footer>`
23
- - [ ] Use `<article>`, `<section>`, `<aside>` appropriately
24
- - [ ] Use headings (`<h1>`-`<h6>`) for structure
25
- - [ ] Use `<ul>`/`<ol>` for lists
26
- - [ ] Use `<table>` only for tabular data
27
-
28
- ### 2. Keyboard Navigation
29
- - [ ] All interactive elements are keyboard accessible
30
- - [ ] Logical tab order (matches visual flow)
31
- - [ ] Visible focus indicators (not removed with `outline: none` without replacement)
32
- - [ ] No keyboard traps
33
- - [ ] Skip to main content link provided
34
- - [ ] Modal focus trapped appropriately
35
- - [ ] Escape closes dialogs/modals
36
-
37
- ### 3. Focus Management
38
- - [ ] Visible focus states on all interactive elements
39
- - [ ] Focus outline: minimum 2px, sufficient contrast
40
- - [ ] Focus moved appropriately (e.g., to modal when opened)
41
- - [ ] Focus returned after modal closes
42
- - [ ] No `:focus { outline: none }` without accessible alternative
43
-
44
- ### 4. Forms & Labels
45
- - [ ] All inputs have associated `<label>`
46
- - [ ] Use `<label for="id">` or wrap input in `<label>`
47
- - [ ] Required fields indicated (not just with color)
48
- - [ ] Error messages associated with inputs (`aria-describedby`)
49
- - [ ] Error messages are clear and actionable
50
- - [ ] Placeholder is not the only label
51
- - [ ] Form validation errors announced to screen readers
52
-
53
- ### 5. Images & Alt Text
54
- - [ ] All images have `alt` attribute
55
- - [ ] Informative images: Descriptive alt text
56
- - [ ] Decorative images: `alt=""` (empty)
57
- - [ ] Complex images: Longer description via `aria-describedby`
58
- - [ ] Icons have text alternatives (`aria-label` or sr-only text)
59
- - [ ] Image of text avoided (use actual text)
60
-
61
- ### 6. Color & Contrast
62
- - [ ] Text contrast ratio ≥ 4.5:1 (normal text, WCAG AA)
63
- - [ ] Large text contrast ratio ≥ 3:1 (18pt+ or 14pt+ bold, WCAG AA)
64
- - [ ] Interactive element contrast ≥ 3:1
65
- - [ ] Color is not the only way to convey information
66
- - [ ] Links distinguishable from surrounding text (underline or sufficient contrast)
67
-
68
- ### 7. Heading Hierarchy
69
- - [ ] One `<h1>` per page
70
- - [ ] Headings in logical order (h1 → h2 → h3, don't skip levels)
71
- - [ ] Headings describe content structure
72
- - [ ] Headings not used just for styling
73
-
74
- ### 8. Links
75
- - [ ] Link text is descriptive ("Read our guide" not "Click here")
76
- - [ ] Links are visually distinct from text
77
- - [ ] Link purpose clear from text or context
78
- - [ ] External links indicated if appropriate
79
- - [ ] Skip navigation link provided
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
- ### 17. Language
152
- - [ ] `<html lang="en">` or appropriate language
153
- - [ ] Language changes marked: `<span lang="es">Hola</span>`
154
-
155
- ### 18. Responsive & Zoom
156
- - [ ] Content reflows at 400% zoom without horizontal scrolling
157
- - [ ] No viewport meta tag disabling zoom
158
- - [ ] Text resizes without loss of functionality
159
- - [ ] Layout adapts to different screen sizes
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.