telo3-ai 5.0.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/AI-CONTEXT.md +263 -0
- package/LICENSE +21 -0
- package/ONBOARDING-SKILL.md +728 -0
- package/README.md +801 -0
- package/SKILL-METADATA.json +237 -0
- package/SKILL.md +666 -0
- package/cli.js +84 -0
- package/index.js +65 -0
- package/package.json +97 -0
- package/references/accessibility-quality.md +278 -0
- package/references/ai-behavior.md +363 -0
- package/references/document-specification.md +425 -0
- package/references/legal-compliance.md +408 -0
- package/references/performance-quality.md +351 -0
- package/references/privacy-compliance.md +494 -0
- package/references/project-audit.md +468 -0
- package/references/security-quality.md +254 -0
- package/references/seo-quality.md +347 -0
- package/references/smart-skill-delegation.md +451 -0
- package/references/token-optimization.md +481 -0
- package/references/ui-quality.md +491 -0
- package/references/workflow.md +474 -0
- package/scripts/init-project-context.sh +139 -0
- package/scripts/validate-project-context.sh +164 -0
- package/templates/architecture.md +418 -0
- package/templates/design.md +654 -0
- package/templates/memory.md +368 -0
- package/templates/prd.md +320 -0
- package/templates/rules.md +619 -0
- package/templates/tasks.md +220 -0
package/cli.js
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Telo3 CLI
|
|
5
|
+
* Command-line interface for Telo3 project initialization
|
|
6
|
+
*
|
|
7
|
+
* @author Jeet (@jeet1511)
|
|
8
|
+
* @license MIT
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { fileURLToPath } from 'url';
|
|
12
|
+
import { dirname, join } from 'path';
|
|
13
|
+
import { spawn } from 'child_process';
|
|
14
|
+
|
|
15
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
16
|
+
const __dirname = dirname(__filename);
|
|
17
|
+
|
|
18
|
+
const args = process.argv.slice(2);
|
|
19
|
+
const command = args[0];
|
|
20
|
+
|
|
21
|
+
function showHelp() {
|
|
22
|
+
console.log(`
|
|
23
|
+
Telo3 - AI Development Framework
|
|
24
|
+
Usage: telo3 <command>
|
|
25
|
+
|
|
26
|
+
Commands:
|
|
27
|
+
init Initialize Telo3 project context
|
|
28
|
+
validate Validate existing project context
|
|
29
|
+
version Show Telo3 version
|
|
30
|
+
help Show this help message
|
|
31
|
+
|
|
32
|
+
Examples:
|
|
33
|
+
telo3 init Initialize project context
|
|
34
|
+
telo3 validate Validate project structure
|
|
35
|
+
telo3 version Show version
|
|
36
|
+
|
|
37
|
+
Documentation:
|
|
38
|
+
https://github.com/Jeet1511/telo3
|
|
39
|
+
|
|
40
|
+
Created by Jeet (@jeet1511)
|
|
41
|
+
`);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function showVersion() {
|
|
45
|
+
console.log('Telo3 v5.0.0');
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function runScript(scriptName) {
|
|
49
|
+
const scriptPath = join(__dirname, 'scripts', `${scriptName}.sh`);
|
|
50
|
+
|
|
51
|
+
const proc = spawn('bash', [scriptPath], {
|
|
52
|
+
stdio: 'inherit',
|
|
53
|
+
cwd: process.cwd()
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
proc.on('error', (err) => {
|
|
57
|
+
console.error(`Error running ${scriptName}:`, err.message);
|
|
58
|
+
process.exit(1);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
proc.on('exit', (code) => {
|
|
62
|
+
process.exit(code || 0);
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
switch (command) {
|
|
67
|
+
case 'init':
|
|
68
|
+
runScript('init-project-context');
|
|
69
|
+
break;
|
|
70
|
+
case 'validate':
|
|
71
|
+
runScript('validate-project-context');
|
|
72
|
+
break;
|
|
73
|
+
case 'version':
|
|
74
|
+
showVersion();
|
|
75
|
+
break;
|
|
76
|
+
case 'help':
|
|
77
|
+
case undefined:
|
|
78
|
+
showHelp();
|
|
79
|
+
break;
|
|
80
|
+
default:
|
|
81
|
+
console.error(`Unknown command: ${command}`);
|
|
82
|
+
console.error('Run "telo3 help" for usage information');
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
package/index.js
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Telo3 - AI Development Framework
|
|
5
|
+
* Project-context system for AI coding agents
|
|
6
|
+
*
|
|
7
|
+
* @author Jeet (@jeet1511)
|
|
8
|
+
* @license MIT
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
export const version = '5.0.0';
|
|
12
|
+
|
|
13
|
+
export const templates = {
|
|
14
|
+
prd: './templates/prd.md',
|
|
15
|
+
architecture: './templates/architecture.md',
|
|
16
|
+
rules: './templates/rules.md',
|
|
17
|
+
design: './templates/design.md',
|
|
18
|
+
tasks: './templates/tasks.md',
|
|
19
|
+
memory: './templates/memory.md'
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export const references = {
|
|
23
|
+
security: './references/security-quality.md',
|
|
24
|
+
privacy: './references/privacy-compliance.md',
|
|
25
|
+
legal: './references/legal-compliance.md',
|
|
26
|
+
accessibility: './references/accessibility-quality.md',
|
|
27
|
+
seo: './references/seo-quality.md',
|
|
28
|
+
performance: './references/performance-quality.md',
|
|
29
|
+
ui: './references/ui-quality.md',
|
|
30
|
+
tokens: './references/token-optimization.md',
|
|
31
|
+
delegation: './references/smart-skill-delegation.md',
|
|
32
|
+
specification: './references/document-specification.md',
|
|
33
|
+
workflow: './references/workflow.md',
|
|
34
|
+
behavior: './references/ai-behavior.md',
|
|
35
|
+
audit: './references/project-audit.md'
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export const skills = {
|
|
39
|
+
main: './SKILL.md',
|
|
40
|
+
onboarding: './ONBOARDING-SKILL.md',
|
|
41
|
+
quickStart: './QUICK-START-ONBOARDING.md',
|
|
42
|
+
context: './AI-CONTEXT.md'
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export function getTemplatePath(name) {
|
|
46
|
+
return templates[name] || null;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function getReferencePath(name) {
|
|
50
|
+
return references[name] || null;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export function getSkillPath(name) {
|
|
54
|
+
return skills[name] || null;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export default {
|
|
58
|
+
version,
|
|
59
|
+
templates,
|
|
60
|
+
references,
|
|
61
|
+
skills,
|
|
62
|
+
getTemplatePath,
|
|
63
|
+
getReferencePath,
|
|
64
|
+
getSkillPath
|
|
65
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "telo3-ai",
|
|
3
|
+
"version": "5.0.0",
|
|
4
|
+
"description": "AI development framework and project-context system for coding agents. Provides persistent memory, quality frameworks, and systematic engineering practices for AI assistants like Claude, ChatGPT, GitHub Copilot, and Cursor.",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"bin": {
|
|
8
|
+
"telo3": "./cli.js",
|
|
9
|
+
"telo3-init": "./scripts/init-project-context.sh"
|
|
10
|
+
},
|
|
11
|
+
"scripts": {
|
|
12
|
+
"init": "./scripts/init-project-context.sh",
|
|
13
|
+
"validate": "./scripts/validate-project-context.sh"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"telo3",
|
|
17
|
+
"ai-coding",
|
|
18
|
+
"ai-assistant",
|
|
19
|
+
"ai-development",
|
|
20
|
+
"claude",
|
|
21
|
+
"chatgpt",
|
|
22
|
+
"copilot",
|
|
23
|
+
"cursor",
|
|
24
|
+
"project-context",
|
|
25
|
+
"ai-memory",
|
|
26
|
+
"coding-agent",
|
|
27
|
+
"systematic-engineering",
|
|
28
|
+
"code-quality",
|
|
29
|
+
"ai-framework",
|
|
30
|
+
"developer-tools",
|
|
31
|
+
"project-management",
|
|
32
|
+
"documentation",
|
|
33
|
+
"context-management",
|
|
34
|
+
"ai-skills",
|
|
35
|
+
"smart-onboarding",
|
|
36
|
+
"token-optimization",
|
|
37
|
+
"quality-frameworks",
|
|
38
|
+
"security",
|
|
39
|
+
"accessibility",
|
|
40
|
+
"performance",
|
|
41
|
+
"seo",
|
|
42
|
+
"privacy",
|
|
43
|
+
"compliance",
|
|
44
|
+
"gdpr",
|
|
45
|
+
"wcag",
|
|
46
|
+
"anti-vibe-coding",
|
|
47
|
+
"architectural-patterns",
|
|
48
|
+
"design-system",
|
|
49
|
+
"persistent-memory",
|
|
50
|
+
"mcp-integration",
|
|
51
|
+
"skill-delegation",
|
|
52
|
+
"production-ready",
|
|
53
|
+
"framework-agnostic",
|
|
54
|
+
"nextjs",
|
|
55
|
+
"react",
|
|
56
|
+
"typescript",
|
|
57
|
+
"python",
|
|
58
|
+
"golang"
|
|
59
|
+
],
|
|
60
|
+
"author": {
|
|
61
|
+
"name": "Jeet",
|
|
62
|
+
"email": "contact@jeet1511.dev",
|
|
63
|
+
"url": "https://github.com/jeet1511"
|
|
64
|
+
},
|
|
65
|
+
"license": "MIT",
|
|
66
|
+
"repository": {
|
|
67
|
+
"type": "git",
|
|
68
|
+
"url": "git+https://github.com/Jeet1511/telo3.git"
|
|
69
|
+
},
|
|
70
|
+
"bugs": {
|
|
71
|
+
"url": "https://github.com/Jeet1511/telo3/issues"
|
|
72
|
+
},
|
|
73
|
+
"homepage": "https://github.com/Jeet1511/telo3#readme",
|
|
74
|
+
"files": [
|
|
75
|
+
"templates/",
|
|
76
|
+
"references/",
|
|
77
|
+
"scripts/",
|
|
78
|
+
"SKILL.md",
|
|
79
|
+
"AI-CONTEXT.md",
|
|
80
|
+
"ONBOARDING-SKILL.md",
|
|
81
|
+
"SKILL-METADATA.json",
|
|
82
|
+
"cli.js",
|
|
83
|
+
"index.js",
|
|
84
|
+
"LICENSE"
|
|
85
|
+
],
|
|
86
|
+
"engines": {
|
|
87
|
+
"node": ">=14.0.0"
|
|
88
|
+
},
|
|
89
|
+
"os": [
|
|
90
|
+
"darwin",
|
|
91
|
+
"linux",
|
|
92
|
+
"win32"
|
|
93
|
+
],
|
|
94
|
+
"publishConfig": {
|
|
95
|
+
"access": "public"
|
|
96
|
+
}
|
|
97
|
+
}
|
|
@@ -0,0 +1,278 @@
|
|
|
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
|
|
140
|
+
|
|
141
|
+
```css
|
|
142
|
+
@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
|
+
}
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
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.
|