a11y-devkit-deploy 0.6.4 → 0.7.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 +107 -14
- package/config/a11y.json +42 -30
- package/package.json +2 -1
- package/src/cli.js +17 -22
- package/src/installers/skills.js +59 -20
- package/templates/deploy-README.md +644 -0
package/README.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# A11y Devkit Deploy
|
|
2
2
|
|
|
3
|
-
A cross-platform CLI for deploying accessibility skills and MCP servers across Claude Code, Cursor, Codex, and VSCode.
|
|
3
|
+
A **fully config-driven**, cross-platform CLI for deploying accessibility skills and MCP servers across Claude Code, Cursor, Codex, and VSCode.
|
|
4
|
+
|
|
5
|
+
**Add new skills or MCP servers without writing code** - just edit the JSON config and re-run.
|
|
4
6
|
|
|
5
7
|
## Install
|
|
6
8
|
|
|
@@ -21,21 +23,63 @@ a11y-devkit-deploy
|
|
|
21
23
|
- `--local` / `--global`: Skip the scope prompt.
|
|
22
24
|
- `--yes`: Use defaults (local scope, all IDEs, install skills).
|
|
23
25
|
|
|
26
|
+
## After Installation
|
|
27
|
+
|
|
28
|
+
Once installation completes, you'll find a comprehensive usage guide in your IDE's skills directory:
|
|
29
|
+
|
|
30
|
+
- **Local install**: `.claude/skills/README.md` (or `.cursor/skills/`, `.codex/skills/` depending on your IDE)
|
|
31
|
+
- **Global install**: `~/.claude/skills/README.md` (or your IDE's global skills directory)
|
|
32
|
+
|
|
33
|
+
### What's in the Guide
|
|
34
|
+
|
|
35
|
+
The bundled README includes:
|
|
36
|
+
- **70+ example prompts** organized by complexity level (beginner to advanced)
|
|
37
|
+
- **Quick reference cheat sheet** for common tasks
|
|
38
|
+
- **Skill descriptions** explaining when to use each of the 7 skills
|
|
39
|
+
- **MCP server guides** with verification steps and example queries
|
|
40
|
+
- **Combined workflows** showing how to use skills and MCP servers together
|
|
41
|
+
- **Complete audit examples** using the orchestrator for end-to-end accessibility testing
|
|
42
|
+
|
|
43
|
+
### Preview the Guide
|
|
44
|
+
|
|
45
|
+
You can preview the guide here: [templates/skills-README.md](templates/skills-README.md)
|
|
46
|
+
|
|
47
|
+
### Next Steps
|
|
48
|
+
|
|
49
|
+
1. Open the README in your IDE's skills directory
|
|
50
|
+
2. Try the "Getting Started" prompts to verify everything is working
|
|
51
|
+
3. Explore the example prompts library to find workflows that match your needs
|
|
52
|
+
4. Use the MCP verification section to test all 5 MCP servers
|
|
53
|
+
|
|
54
|
+
### MCP Servers
|
|
55
|
+
|
|
56
|
+
All MCP servers are configured to run via `npx`, which means:
|
|
57
|
+
- No local installation or cloning required
|
|
58
|
+
- Automatically fetches the latest version when needed
|
|
59
|
+
- No disk space used for local copies
|
|
60
|
+
- Just restart your IDE and the servers will be available
|
|
61
|
+
|
|
24
62
|
## What It Does
|
|
25
63
|
|
|
26
64
|
This CLI automates the setup of accessibility tooling by:
|
|
27
65
|
|
|
28
|
-
1. **Installing skills from npm** - Downloads and installs
|
|
29
|
-
2. **Configuring MCP servers** - Updates each IDE's MCP config to enable
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
- **
|
|
33
|
-
- **
|
|
34
|
-
|
|
66
|
+
1. **Installing skills from npm** - Downloads and installs accessibility skill packages (configurable in `config/a11y.json`)
|
|
67
|
+
2. **Configuring MCP servers** - Updates each IDE's MCP config to enable accessibility-focused MCP servers (also configurable)
|
|
68
|
+
|
|
69
|
+
**Default configuration includes:**
|
|
70
|
+
- **7 accessibility skills** - Testing, remediation, validation, documentation, and orchestration
|
|
71
|
+
- **5 MCP servers**:
|
|
72
|
+
- **wcag** - WCAG 2.2 guidelines, success criteria, and techniques
|
|
73
|
+
- **aria** - WAI-ARIA roles, states, properties, and patterns
|
|
74
|
+
- **magentaa11y** - Component accessibility acceptance criteria
|
|
75
|
+
- **a11y-personas** - Accessibility personas for diverse user needs
|
|
76
|
+
- **arc-issues** - Format AxeCore violations into standardized issue templates
|
|
35
77
|
|
|
36
|
-
|
|
78
|
+
**Fully customizable** - add/remove skills or MCP servers by editing the config file.
|
|
37
79
|
|
|
38
|
-
|
|
80
|
+
### Skills Installed (Default)
|
|
81
|
+
|
|
82
|
+
The following skill packages are installed from npm by default. **Add your own by editing `config/a11y.json`**:
|
|
39
83
|
|
|
40
84
|
| Skill | Package | Description |
|
|
41
85
|
|-------|---------|-------------|
|
|
@@ -74,11 +118,58 @@ The generated MCP config looks like this:
|
|
|
74
118
|
|
|
75
119
|
## Configuration
|
|
76
120
|
|
|
77
|
-
Edit `config/a11y.json` to customize
|
|
121
|
+
The entire tool is **fully config-driven**. Edit `config/a11y.json` to customize everything without touching code:
|
|
122
|
+
|
|
123
|
+
### Example: Adding a New Skill
|
|
124
|
+
|
|
125
|
+
Simply add an object to the `skills` array with a `name` (npm package) and `description`:
|
|
126
|
+
|
|
127
|
+
```json
|
|
128
|
+
{
|
|
129
|
+
"skills": [
|
|
130
|
+
{
|
|
131
|
+
"name": "a11y-tester-skill",
|
|
132
|
+
"description": "Run accessibility tests"
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"name": "your-custom-skill",
|
|
136
|
+
"description": "Your custom skill description"
|
|
137
|
+
}
|
|
138
|
+
]
|
|
139
|
+
}
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Example: Adding a New MCP Server
|
|
78
143
|
|
|
79
|
-
|
|
144
|
+
Add an object to the `mcpServers` array with name, description, command, and args:
|
|
145
|
+
|
|
146
|
+
```json
|
|
147
|
+
{
|
|
148
|
+
"mcpServers": [
|
|
149
|
+
{
|
|
150
|
+
"name": "wcag",
|
|
151
|
+
"description": "WCAG guidelines reference",
|
|
152
|
+
"command": "npx",
|
|
153
|
+
"args": ["-y", "wcag-mcp"]
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"name": "your-custom-mcp",
|
|
157
|
+
"description": "Your custom MCP server",
|
|
158
|
+
"command": "npx",
|
|
159
|
+
"args": ["-y", "your-mcp-package"]
|
|
160
|
+
}
|
|
161
|
+
]
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Config Structure
|
|
166
|
+
|
|
167
|
+
- `skills` - Array of skill objects with `name` (npm package) and `description`
|
|
80
168
|
- `ideSkillsPaths` - IDE-specific skills directories (configurable per IDE)
|
|
81
|
-
- `
|
|
169
|
+
- `ideMcpPaths` - IDE-specific MCP config file paths
|
|
170
|
+
- `mcpServers` - MCP server definitions with name, description, command, and args
|
|
171
|
+
|
|
172
|
+
All changes take effect immediately - just re-run the CLI to deploy your updated config.
|
|
82
173
|
|
|
83
174
|
## Directory Structure
|
|
84
175
|
|
|
@@ -106,7 +197,9 @@ MCP configurations are written to each IDE's OS-specific config path:
|
|
|
106
197
|
- **Windows**: `%APPDATA%\{IDE}\mcp.json`
|
|
107
198
|
- **Linux**: `~/.config/{IDE}/mcp.json`
|
|
108
199
|
|
|
109
|
-
## MCP Servers Included
|
|
200
|
+
## MCP Servers Included (Default)
|
|
201
|
+
|
|
202
|
+
**Add your own by editing `config/a11y.json`**:
|
|
110
203
|
|
|
111
204
|
| Server | Package | Description |
|
|
112
205
|
|--------|---------|-------------|
|
package/config/a11y.json
CHANGED
|
@@ -1,19 +1,41 @@
|
|
|
1
1
|
{
|
|
2
|
+
"skillsFolder": "a11y",
|
|
3
|
+
"readmeTemplate": "deploy-README.md",
|
|
2
4
|
"skills": [
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
{
|
|
6
|
+
"name": "a11y-base-web-skill",
|
|
7
|
+
"description": "Core accessibility testing utilities"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"name": "a11y-issue-writer-skill",
|
|
11
|
+
"description": "Document accessibility issues"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"name": "a11y-tester-skill",
|
|
15
|
+
"description": "Run accessibility tests"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "a11y-remediator-skill",
|
|
19
|
+
"description": "Fix accessibility issues"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"name": "a11y-validator-skill",
|
|
23
|
+
"description": "Validate accessibility compliance"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"name": "web-standards-skill",
|
|
27
|
+
"description": "Web standards reference"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"name": "a11y-audit-fix-agent-orchestrator-skill",
|
|
31
|
+
"description": "Orchestrate accessibility audits"
|
|
32
|
+
}
|
|
10
33
|
],
|
|
11
34
|
"ideSkillsPaths": {
|
|
12
35
|
"claude": ".claude/skills",
|
|
13
36
|
"cursor": ".cursor/skills",
|
|
14
37
|
"codex": ".codex/skills",
|
|
15
|
-
"vscode": ".github/skills"
|
|
16
|
-
"local": ".github/skills"
|
|
38
|
+
"vscode": ".github/skills"
|
|
17
39
|
},
|
|
18
40
|
"ideMcpPaths": {
|
|
19
41
|
"claude": ".claude/mcp.json",
|
|
@@ -24,43 +46,33 @@
|
|
|
24
46
|
"mcpServers": [
|
|
25
47
|
{
|
|
26
48
|
"name": "wcag",
|
|
49
|
+
"description": "WCAG guidelines reference",
|
|
27
50
|
"command": "npx",
|
|
28
|
-
"args": [
|
|
29
|
-
"-y",
|
|
30
|
-
"wcag-mcp"
|
|
31
|
-
]
|
|
51
|
+
"args": ["-y", "wcag-mcp"]
|
|
32
52
|
},
|
|
33
53
|
{
|
|
34
54
|
"name": "aria",
|
|
55
|
+
"description": "ARIA specification reference",
|
|
35
56
|
"command": "npx",
|
|
36
|
-
"args": [
|
|
37
|
-
"-y",
|
|
38
|
-
"aria-mcp"
|
|
39
|
-
]
|
|
57
|
+
"args": ["-y", "aria-mcp"]
|
|
40
58
|
},
|
|
41
59
|
{
|
|
42
60
|
"name": "magentaa11y",
|
|
61
|
+
"description": "MagentaA11y accessibility acceptance criteria tool",
|
|
43
62
|
"command": "npx",
|
|
44
|
-
"args": [
|
|
45
|
-
"-y",
|
|
46
|
-
"magentaa11y-mcp"
|
|
47
|
-
]
|
|
63
|
+
"args": ["-y", "magentaa11y-mcp"]
|
|
48
64
|
},
|
|
49
65
|
{
|
|
50
66
|
"name": "a11y-personas",
|
|
67
|
+
"description": "Accessibility personas and user scenarios",
|
|
51
68
|
"command": "npx",
|
|
52
|
-
"args": [
|
|
53
|
-
"-y",
|
|
54
|
-
"a11y-personas-mcp"
|
|
55
|
-
]
|
|
69
|
+
"args": ["-y", "a11y-personas-mcp"]
|
|
56
70
|
},
|
|
57
71
|
{
|
|
58
72
|
"name": "arc-issues",
|
|
73
|
+
"description": "Pre-formatted a11y issue templates",
|
|
59
74
|
"command": "npx",
|
|
60
|
-
"args": [
|
|
61
|
-
"-y",
|
|
62
|
-
"arc-issues-mcp"
|
|
63
|
-
]
|
|
75
|
+
"args": ["-y", "arc-issues-mcp"]
|
|
64
76
|
}
|
|
65
77
|
]
|
|
66
|
-
}
|
|
78
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "a11y-devkit-deploy",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "CLI to deploy a11y skills and MCP servers across IDEs",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
"bin",
|
|
13
13
|
"src",
|
|
14
14
|
"config",
|
|
15
|
+
"templates",
|
|
15
16
|
"README.md"
|
|
16
17
|
],
|
|
17
18
|
"keywords": [
|
package/src/cli.js
CHANGED
|
@@ -23,24 +23,6 @@ async function loadPackageJson() {
|
|
|
23
23
|
return JSON.parse(raw);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
const skillDescriptions = {
|
|
27
|
-
"a11y-base-web-skill": "Core accessibility testing utilities",
|
|
28
|
-
"a11y-issue-writer-skill": "Document accessibility issues",
|
|
29
|
-
"a11y-tester-skill": "Run accessibility tests",
|
|
30
|
-
"a11y-remediator-skill": "Fix accessibility issues",
|
|
31
|
-
"a11y-validator-skill": "Validate accessibility compliance",
|
|
32
|
-
"web-standards-skill": "Web standards reference",
|
|
33
|
-
"a11y-audit-fix-agent-orchestrator-skill": "Orchestrate accessibility audits"
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
const mcpDescriptions = {
|
|
37
|
-
"wcag": "WCAG guidelines reference",
|
|
38
|
-
"aria": "ARIA specification reference",
|
|
39
|
-
"magentaa11y": "MagentaA11y accessibility acceptance criteria tool",
|
|
40
|
-
"a11y-personas": "Accessibility personas and user scenarios",
|
|
41
|
-
"arc-issues": "Pre-formatted a11y issue templates"
|
|
42
|
-
};
|
|
43
|
-
|
|
44
26
|
function parseArgs(argv) {
|
|
45
27
|
const args = new Set(argv.slice(2));
|
|
46
28
|
return {
|
|
@@ -69,13 +51,14 @@ async function run() {
|
|
|
69
51
|
|
|
70
52
|
console.log("\nSkills to install:");
|
|
71
53
|
config.skills.forEach((skill) => {
|
|
72
|
-
const
|
|
73
|
-
|
|
54
|
+
const name = typeof skill === "string" ? skill : skill.name;
|
|
55
|
+
const description = typeof skill === "string" ? "No description" : (skill.description || "No description");
|
|
56
|
+
console.log(`${name} - ${description}`);
|
|
74
57
|
});
|
|
75
58
|
|
|
76
59
|
console.log("\nMCP Servers to install:");
|
|
77
60
|
config.mcpServers.forEach((server) => {
|
|
78
|
-
const description =
|
|
61
|
+
const description = server.description || "No description";
|
|
79
62
|
console.log(`${server.name} - ${description}`);
|
|
80
63
|
});
|
|
81
64
|
console.log("");
|
|
@@ -179,7 +162,8 @@ async function run() {
|
|
|
179
162
|
? ideSelection.map((ide) => idePaths[ide].localSkillsDir)
|
|
180
163
|
: ideSelection.map((ide) => idePaths[ide].skillsDir);
|
|
181
164
|
|
|
182
|
-
const
|
|
165
|
+
const skillNames = config.skills.map((skill) => typeof skill === "string" ? skill : skill.name);
|
|
166
|
+
const result = await installSkillsFromNpm(skillNames, skillTargets, tempDir, config.skillsFolder, config.readmeTemplate);
|
|
183
167
|
skillsSpinner.succeed(`${result.installed} skills installed to ${skillTargets.length} IDE location(s).`);
|
|
184
168
|
} catch (error) {
|
|
185
169
|
skillsSpinner.fail(`Failed to install skills: ${error.message}`);
|
|
@@ -212,7 +196,18 @@ async function run() {
|
|
|
212
196
|
success("All done. Your skills and MCP servers are ready.");
|
|
213
197
|
info("Skills installed from npm packages.");
|
|
214
198
|
info("MCP servers use npx - no local installation needed!");
|
|
199
|
+
console.log("");
|
|
200
|
+
success("Next Steps:");
|
|
201
|
+
const skillsFolderPath = config.skillsFolder ? `${config.skillsFolder}/` : "";
|
|
202
|
+
const skillsPath = scope === "local"
|
|
203
|
+
? `.claude/skills/${skillsFolderPath}README.md (or your IDE's equivalent)`
|
|
204
|
+
: `~/.claude/skills/${skillsFolderPath}README.md (or your IDE's global skills directory)`;
|
|
205
|
+
info(`📖 Check ${skillsPath} for comprehensive usage guide`);
|
|
206
|
+
info("✨ Includes 70+ example prompts for all skills and MCP servers");
|
|
207
|
+
info("🚀 Start with the 'Getting Started' section for your first accessibility check");
|
|
208
|
+
console.log("");
|
|
215
209
|
info("You can re-run this CLI any time to update skills and configs.");
|
|
210
|
+
info("Documentation: https://github.com/joe-watkins/a11y-devkit#readme");
|
|
216
211
|
}
|
|
217
212
|
|
|
218
213
|
export {
|
package/src/installers/skills.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import fs from "fs/promises";
|
|
2
2
|
import path from "path";
|
|
3
3
|
import { spawn } from "child_process";
|
|
4
|
+
import { fileURLToPath } from "url";
|
|
5
|
+
|
|
6
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
+
const __dirname = path.dirname(__filename);
|
|
4
8
|
|
|
5
9
|
async function pathExists(target) {
|
|
6
10
|
try {
|
|
@@ -13,20 +17,32 @@ async function pathExists(target) {
|
|
|
13
17
|
|
|
14
18
|
function run(command, args, options = {}) {
|
|
15
19
|
return new Promise((resolve, reject) => {
|
|
16
|
-
const child = spawn(command, args, {
|
|
20
|
+
const child = spawn(command, args, {
|
|
21
|
+
stdio: "pipe",
|
|
22
|
+
shell: true,
|
|
23
|
+
...options,
|
|
24
|
+
});
|
|
17
25
|
let stdout = "";
|
|
18
26
|
let stderr = "";
|
|
19
|
-
|
|
20
|
-
child.stdout?.on("data", (data) => {
|
|
21
|
-
|
|
22
|
-
|
|
27
|
+
|
|
28
|
+
child.stdout?.on("data", (data) => {
|
|
29
|
+
stdout += data;
|
|
30
|
+
});
|
|
31
|
+
child.stderr?.on("data", (data) => {
|
|
32
|
+
stderr += data;
|
|
33
|
+
});
|
|
34
|
+
|
|
23
35
|
child.on("error", reject);
|
|
24
36
|
child.on("close", (code) => {
|
|
25
37
|
if (code === 0) {
|
|
26
38
|
resolve({ stdout, stderr });
|
|
27
39
|
return;
|
|
28
40
|
}
|
|
29
|
-
reject(
|
|
41
|
+
reject(
|
|
42
|
+
new Error(
|
|
43
|
+
`${command} ${args.join(" ")} failed with code ${code}: ${stderr}`,
|
|
44
|
+
),
|
|
45
|
+
);
|
|
30
46
|
});
|
|
31
47
|
});
|
|
32
48
|
}
|
|
@@ -39,18 +55,26 @@ async function cleanupTemp(tempDir) {
|
|
|
39
55
|
|
|
40
56
|
/**
|
|
41
57
|
* Install skills from npm packages into IDE skills directories.
|
|
42
|
-
*
|
|
58
|
+
*
|
|
43
59
|
* 1. Creates temp directory with package.json listing skills as dependencies
|
|
44
60
|
* 2. Runs npm install in temp directory
|
|
45
61
|
* 3. Copies installed skill packages (SKILL.md files) to target directories
|
|
46
62
|
* 4. Returns temp directory path for cleanup
|
|
47
|
-
*
|
|
63
|
+
*
|
|
48
64
|
* @param {string[]} skills - Array of npm package names
|
|
49
65
|
* @param {string[]} targetDirs - Array of target directories to install skills to
|
|
50
66
|
* @param {string} tempDir - Temporary directory for npm install
|
|
67
|
+
* @param {string} skillsFolder - Optional subfolder name to bundle skills (e.g., "a11y")
|
|
68
|
+
* @param {string} readmeTemplate - README template filename from templates folder
|
|
51
69
|
* @returns {Promise<{installed: number, tempDir: string}>}
|
|
52
70
|
*/
|
|
53
|
-
async function installSkillsFromNpm(
|
|
71
|
+
async function installSkillsFromNpm(
|
|
72
|
+
skills,
|
|
73
|
+
targetDirs,
|
|
74
|
+
tempDir,
|
|
75
|
+
skillsFolder = null,
|
|
76
|
+
readmeTemplate = "deploy-README.md",
|
|
77
|
+
) {
|
|
54
78
|
// Create temp directory
|
|
55
79
|
await fs.mkdir(tempDir, { recursive: true });
|
|
56
80
|
|
|
@@ -59,7 +83,7 @@ async function installSkillsFromNpm(skills, targetDirs, tempDir) {
|
|
|
59
83
|
name: "a11y-skills-temp",
|
|
60
84
|
version: "1.0.0",
|
|
61
85
|
private: true,
|
|
62
|
-
dependencies: {}
|
|
86
|
+
dependencies: {},
|
|
63
87
|
};
|
|
64
88
|
|
|
65
89
|
for (const skill of skills) {
|
|
@@ -68,7 +92,7 @@ async function installSkillsFromNpm(skills, targetDirs, tempDir) {
|
|
|
68
92
|
|
|
69
93
|
await fs.writeFile(
|
|
70
94
|
path.join(tempDir, "package.json"),
|
|
71
|
-
JSON.stringify(packageJson, null, 2)
|
|
95
|
+
JSON.stringify(packageJson, null, 2),
|
|
72
96
|
);
|
|
73
97
|
|
|
74
98
|
// Run npm install
|
|
@@ -79,7 +103,12 @@ async function installSkillsFromNpm(skills, targetDirs, tempDir) {
|
|
|
79
103
|
let installedCount = 0;
|
|
80
104
|
|
|
81
105
|
for (const targetDir of targetDirs) {
|
|
82
|
-
|
|
106
|
+
// Determine the actual skills directory (with or without bundle folder)
|
|
107
|
+
const skillsDir = skillsFolder
|
|
108
|
+
? path.join(targetDir, skillsFolder)
|
|
109
|
+
: targetDir;
|
|
110
|
+
|
|
111
|
+
await fs.mkdir(skillsDir, { recursive: true });
|
|
83
112
|
|
|
84
113
|
for (const skill of skills) {
|
|
85
114
|
const skillPackageDir = path.join(nodeModulesDir, skill);
|
|
@@ -88,7 +117,7 @@ async function installSkillsFromNpm(skills, targetDirs, tempDir) {
|
|
|
88
117
|
if (await pathExists(skillMdPath)) {
|
|
89
118
|
// Create skill directory in target (use package name without -skill suffix)
|
|
90
119
|
const skillDirName = skill.replace(/-skill$/, "");
|
|
91
|
-
const targetSkillDir = path.join(
|
|
120
|
+
const targetSkillDir = path.join(skillsDir, skillDirName);
|
|
92
121
|
await fs.mkdir(targetSkillDir, { recursive: true });
|
|
93
122
|
|
|
94
123
|
// Copy SKILL.md
|
|
@@ -96,15 +125,25 @@ async function installSkillsFromNpm(skills, targetDirs, tempDir) {
|
|
|
96
125
|
installedCount++;
|
|
97
126
|
}
|
|
98
127
|
}
|
|
128
|
+
|
|
129
|
+
// Copy the comprehensive README template to the skills directory
|
|
130
|
+
const readmeTemplatePath = path.join(
|
|
131
|
+
__dirname,
|
|
132
|
+
"..",
|
|
133
|
+
"..",
|
|
134
|
+
"templates",
|
|
135
|
+
readmeTemplate,
|
|
136
|
+
);
|
|
137
|
+
const targetReadmePath = path.join(skillsDir, "a11y-devkit-README.md");
|
|
138
|
+
if (await pathExists(readmeTemplatePath)) {
|
|
139
|
+
await fs.copyFile(readmeTemplatePath, targetReadmePath);
|
|
140
|
+
}
|
|
99
141
|
}
|
|
100
142
|
|
|
101
|
-
return {
|
|
102
|
-
installed: installedCount / targetDirs.length,
|
|
103
|
-
tempDir
|
|
143
|
+
return {
|
|
144
|
+
installed: installedCount / targetDirs.length,
|
|
145
|
+
tempDir,
|
|
104
146
|
};
|
|
105
147
|
}
|
|
106
148
|
|
|
107
|
-
export {
|
|
108
|
-
installSkillsFromNpm,
|
|
109
|
-
cleanupTemp
|
|
110
|
-
};
|
|
149
|
+
export { installSkillsFromNpm, cleanupTemp };
|
|
@@ -0,0 +1,644 @@
|
|
|
1
|
+
# A11y DevKit - Skills & MCP Guide
|
|
2
|
+
|
|
3
|
+
Welcome to your comprehensive accessibility testing and remediation toolkit! You now have access to 7 specialized skills and 5 knowledge-rich MCP servers designed to help you build, test, and maintain accessible web applications.
|
|
4
|
+
|
|
5
|
+
## What Was Installed
|
|
6
|
+
|
|
7
|
+
### 7 Accessibility Skills
|
|
8
|
+
Your AI assistant can now leverage these specialized capabilities:
|
|
9
|
+
- **a11y-base-web** - Core accessibility patterns and foundational web code
|
|
10
|
+
- **a11y-issue-writer** - Document accessibility violations in standardized formats
|
|
11
|
+
- **a11y-tester** - Automated testing with axe-core and Playwright
|
|
12
|
+
- **a11y-remediator** - Fix accessibility issues in your codebase
|
|
13
|
+
- **a11y-validator** - Validate WCAG compliance and best practices
|
|
14
|
+
- **web-standards** - Reference web standards and specifications
|
|
15
|
+
- **a11y-audit-fix-agent-orchestrator** - Coordinate full accessibility audits
|
|
16
|
+
|
|
17
|
+
### 5 MCP Knowledge Servers
|
|
18
|
+
These servers provide instant access to accessibility guidelines and specifications:
|
|
19
|
+
- **wcag** - WCAG 2.2 guidelines, success criteria, and techniques
|
|
20
|
+
- **aria** - WAI-ARIA roles, states, properties, and patterns
|
|
21
|
+
- **magentaa11y** - Component accessibility acceptance criteria
|
|
22
|
+
- **a11y-personas** - User personas representing diverse accessibility needs
|
|
23
|
+
- **arc-issues** - Pre-formatted AxeCore violation issue templates
|
|
24
|
+
|
|
25
|
+
## Quick Start
|
|
26
|
+
|
|
27
|
+
### Verify Your Installation
|
|
28
|
+
|
|
29
|
+
Check if everything is working:
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
Can you verify all accessibility skills and MCP servers are available?
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Your First Accessibility Check
|
|
36
|
+
|
|
37
|
+
Try this simple example to get started:
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
Using the a11y-tester skill, scan the homepage at https://example.com for accessibility issues and summarize the findings.
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Understanding the Workflow
|
|
44
|
+
|
|
45
|
+
1. **Test** - Use a11y-tester to identify issues
|
|
46
|
+
2. **Research** - Query MCP servers (wcag, aria, magentaa11y) for guidance
|
|
47
|
+
3. **Fix** - Use a11y-remediator to implement solutions
|
|
48
|
+
4. **Document** - Use a11y-issue-writer to create issue reports
|
|
49
|
+
5. **Validate** - Use a11y-validator to confirm compliance
|
|
50
|
+
6. **Orchestrate** - Use the orchestrator for comprehensive audits
|
|
51
|
+
|
|
52
|
+
## Understanding the Tools
|
|
53
|
+
|
|
54
|
+
### Skills (The Doers)
|
|
55
|
+
|
|
56
|
+
| Skill | Purpose | When to Use |
|
|
57
|
+
|-------|---------|-------------|
|
|
58
|
+
| **a11y-base-web** | Foundational accessibility code patterns | Building new components with accessibility built-in |
|
|
59
|
+
| **a11y-issue-writer** | Create standardized accessibility reports | Documenting violations for teams or issue trackers |
|
|
60
|
+
| **a11y-tester** | Run automated accessibility scans | Testing pages or components for WCAG violations |
|
|
61
|
+
| **a11y-remediator** | Fix accessibility issues in code | Implementing solutions for identified problems |
|
|
62
|
+
| **a11y-validator** | Validate WCAG compliance | Verifying fixes meet accessibility standards |
|
|
63
|
+
| **web-standards** | Reference web specifications | Understanding semantic HTML and best practices |
|
|
64
|
+
| **a11y-audit-fix-agent-orchestrator** | Coordinate end-to-end audits | Running comprehensive accessibility assessments |
|
|
65
|
+
|
|
66
|
+
### MCP Servers (The Knowledge Base)
|
|
67
|
+
|
|
68
|
+
| Server | Provides | Example Query |
|
|
69
|
+
|--------|----------|---------------|
|
|
70
|
+
| **wcag** | WCAG 2.2 guidelines and success criteria | "What are the requirements for WCAG 2.2 Level AA color contrast?" |
|
|
71
|
+
| **aria** | WAI-ARIA specification details | "What attributes are required for the dialog role?" |
|
|
72
|
+
| **magentaa11y** | Component acceptance criteria | "What are the accessibility requirements for a dropdown menu?" |
|
|
73
|
+
| **a11y-personas** | User scenarios and needs | "Show me personas who rely on keyboard navigation" |
|
|
74
|
+
| **arc-issues** | Formatted AxeCore violation templates | "Format this color contrast violation as a GitHub issue" |
|
|
75
|
+
|
|
76
|
+
## Example Prompts Library
|
|
77
|
+
|
|
78
|
+
### Getting Started (Beginner)
|
|
79
|
+
|
|
80
|
+
#### 1. Simple Page Scan
|
|
81
|
+
```
|
|
82
|
+
Use a11y-tester to scan https://mywebsite.com and list the top 5 most critical accessibility issues.
|
|
83
|
+
```
|
|
84
|
+
**Uses**: a11y-tester skill
|
|
85
|
+
**Outcome**: Quick overview of major violations
|
|
86
|
+
|
|
87
|
+
#### 2. Check WCAG Requirements
|
|
88
|
+
```
|
|
89
|
+
Query the wcag MCP server: What are the Level AA requirements for keyboard accessibility?
|
|
90
|
+
```
|
|
91
|
+
**Uses**: wcag MCP server
|
|
92
|
+
**Outcome**: Specific WCAG 2.2 success criteria and techniques
|
|
93
|
+
|
|
94
|
+
#### 3. Fix a Specific Issue
|
|
95
|
+
```
|
|
96
|
+
Using a11y-remediator, fix the missing alt text on images in src/components/Gallery.tsx
|
|
97
|
+
```
|
|
98
|
+
**Uses**: a11y-remediator skill
|
|
99
|
+
**Outcome**: Code updated with proper alt attributes
|
|
100
|
+
|
|
101
|
+
#### 4. Understand ARIA Roles
|
|
102
|
+
```
|
|
103
|
+
Ask the aria MCP server: What's the difference between role="button" and a native button element?
|
|
104
|
+
```
|
|
105
|
+
**Uses**: aria MCP server
|
|
106
|
+
**Outcome**: Explanation of semantic differences and best practices
|
|
107
|
+
|
|
108
|
+
#### 5. Document an Issue
|
|
109
|
+
```
|
|
110
|
+
Use a11y-issue-writer to create a GitHub issue for the form label violations found in our checkout page.
|
|
111
|
+
```
|
|
112
|
+
**Uses**: a11y-issue-writer skill
|
|
113
|
+
**Outcome**: Formatted issue ready to post
|
|
114
|
+
|
|
115
|
+
#### 6. Validate a Component
|
|
116
|
+
```
|
|
117
|
+
Use a11y-validator to check if the modal dialog in src/Modal.tsx meets WCAG 2.2 Level AA standards.
|
|
118
|
+
```
|
|
119
|
+
**Uses**: a11y-validator skill
|
|
120
|
+
**Outcome**: Compliance report with pass/fail status
|
|
121
|
+
|
|
122
|
+
#### 7. Learn Component Patterns
|
|
123
|
+
```
|
|
124
|
+
Query magentaa11y MCP: What are the acceptance criteria for an accessible tabs component?
|
|
125
|
+
```
|
|
126
|
+
**Uses**: magentaa11y MCP server
|
|
127
|
+
**Outcome**: Comprehensive accessibility requirements checklist
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
### Skills-Based Workflows (Intermediate)
|
|
132
|
+
|
|
133
|
+
#### a11y-base-web Skill
|
|
134
|
+
|
|
135
|
+
**1. Build an Accessible Form**
|
|
136
|
+
```
|
|
137
|
+
Using a11y-base-web, create a contact form component with proper labels, error messages, and ARIA attributes.
|
|
138
|
+
```
|
|
139
|
+
**Outcome**: Form component with accessibility best practices built-in
|
|
140
|
+
|
|
141
|
+
**2. Implement Skip Links**
|
|
142
|
+
```
|
|
143
|
+
Use a11y-base-web to add skip navigation links to our main layout component in src/Layout.tsx
|
|
144
|
+
```
|
|
145
|
+
**Outcome**: Skip links added with proper focus management
|
|
146
|
+
|
|
147
|
+
**3. Create Accessible Tables**
|
|
148
|
+
```
|
|
149
|
+
With a11y-base-web, refactor the data table in src/DataGrid.tsx to use proper table semantics and ARIA where needed.
|
|
150
|
+
```
|
|
151
|
+
**Outcome**: Table with proper headers, scope, and ARIA attributes
|
|
152
|
+
|
|
153
|
+
#### a11y-issue-writer Skill
|
|
154
|
+
|
|
155
|
+
**1. Generate Batch Issue Reports**
|
|
156
|
+
```
|
|
157
|
+
Use a11y-issue-writer to create separate GitHub issues for each unique violation type found in our latest accessibility scan.
|
|
158
|
+
```
|
|
159
|
+
**Outcome**: Multiple formatted issues ready for tracking
|
|
160
|
+
|
|
161
|
+
**2. Document Color Contrast Failures**
|
|
162
|
+
```
|
|
163
|
+
With a11y-issue-writer, create a detailed report of all color contrast violations on our marketing pages, including screenshots and WCAG references.
|
|
164
|
+
```
|
|
165
|
+
**Outcome**: Comprehensive report with remediation guidance
|
|
166
|
+
|
|
167
|
+
**3. Create Sprint Planning Documentation**
|
|
168
|
+
```
|
|
169
|
+
Use a11y-issue-writer to generate a prioritized list of accessibility fixes for our next sprint, organized by WCAG level and impact.
|
|
170
|
+
```
|
|
171
|
+
**Outcome**: Prioritized backlog items for team planning
|
|
172
|
+
|
|
173
|
+
#### a11y-tester Skill
|
|
174
|
+
|
|
175
|
+
**1. Test Component Library**
|
|
176
|
+
```
|
|
177
|
+
Use a11y-tester to scan all components in our Storybook at http://localhost:6006 and generate a summary report.
|
|
178
|
+
```
|
|
179
|
+
**Outcome**: Component-by-component accessibility assessment
|
|
180
|
+
|
|
181
|
+
**2. Regression Testing**
|
|
182
|
+
```
|
|
183
|
+
With a11y-tester, scan our production site and compare results to the baseline from last week to identify new violations.
|
|
184
|
+
```
|
|
185
|
+
**Outcome**: Diff report showing newly introduced issues
|
|
186
|
+
|
|
187
|
+
**3. Test User Flows**
|
|
188
|
+
```
|
|
189
|
+
Use a11y-tester to test the complete checkout flow from cart to confirmation, checking each step for accessibility issues.
|
|
190
|
+
```
|
|
191
|
+
**Outcome**: Multi-page accessibility audit of critical path
|
|
192
|
+
|
|
193
|
+
#### a11y-remediator Skill
|
|
194
|
+
|
|
195
|
+
**1. Fix Form Validation**
|
|
196
|
+
```
|
|
197
|
+
Using a11y-remediator, update our form validation in src/forms/ to provide accessible error messages with proper ARIA attributes.
|
|
198
|
+
```
|
|
199
|
+
**Outcome**: Forms with screen reader-friendly error handling
|
|
200
|
+
|
|
201
|
+
**2. Remediate Focus Management**
|
|
202
|
+
```
|
|
203
|
+
Use a11y-remediator to fix focus issues in our modal dialogs, ensuring focus is trapped and returned properly.
|
|
204
|
+
```
|
|
205
|
+
**Outcome**: Modals with proper keyboard trap and focus restoration
|
|
206
|
+
|
|
207
|
+
**3. Update Images for Accessibility**
|
|
208
|
+
```
|
|
209
|
+
With a11y-remediator, audit and fix all images in src/components/ to have appropriate alt text or aria-hidden.
|
|
210
|
+
```
|
|
211
|
+
**Outcome**: Images properly labeled or marked as decorative
|
|
212
|
+
|
|
213
|
+
#### a11y-validator Skill
|
|
214
|
+
|
|
215
|
+
**1. Pre-deployment Validation**
|
|
216
|
+
```
|
|
217
|
+
Use a11y-validator to verify our staging environment at https://staging.mysite.com meets WCAG 2.2 Level AA before we deploy to production.
|
|
218
|
+
```
|
|
219
|
+
**Outcome**: Go/no-go compliance report
|
|
220
|
+
|
|
221
|
+
**2. Component Certification**
|
|
222
|
+
```
|
|
223
|
+
With a11y-validator, check if our new autocomplete component meets all WCAG success criteria and ARIA authoring practices.
|
|
224
|
+
```
|
|
225
|
+
**Outcome**: Detailed compliance checklist for component
|
|
226
|
+
|
|
227
|
+
**3. Validate Fixes**
|
|
228
|
+
```
|
|
229
|
+
Use a11y-validator to confirm that the color contrast issues we fixed in PR #123 now meet WCAG requirements.
|
|
230
|
+
```
|
|
231
|
+
**Outcome**: Verification that remediation was successful
|
|
232
|
+
|
|
233
|
+
#### web-standards Skill
|
|
234
|
+
|
|
235
|
+
**1. Semantic HTML Review**
|
|
236
|
+
```
|
|
237
|
+
Using web-standards, review src/pages/About.tsx and suggest improvements for proper semantic HTML structure.
|
|
238
|
+
```
|
|
239
|
+
**Outcome**: Recommendations for header hierarchy, landmarks, etc.
|
|
240
|
+
|
|
241
|
+
**2. Best Practices Audit**
|
|
242
|
+
```
|
|
243
|
+
With web-standards, analyze our navigation component and suggest improvements based on HTML5 and ARIA best practices.
|
|
244
|
+
```
|
|
245
|
+
**Outcome**: Specific recommendations with standards references
|
|
246
|
+
|
|
247
|
+
**3. Progressive Enhancement Check**
|
|
248
|
+
```
|
|
249
|
+
Use web-standards to evaluate if our interactive components work without JavaScript and follow progressive enhancement principles.
|
|
250
|
+
```
|
|
251
|
+
**Outcome**: Assessment of baseline functionality and enhancement layers
|
|
252
|
+
|
|
253
|
+
#### a11y-audit-fix-agent-orchestrator Skill
|
|
254
|
+
|
|
255
|
+
**1. Full Site Audit**
|
|
256
|
+
```
|
|
257
|
+
Using a11y-audit-fix-agent-orchestrator, perform a complete accessibility audit of https://mysite.com and create a remediation plan.
|
|
258
|
+
```
|
|
259
|
+
**Outcome**: Comprehensive audit report with prioritized fix recommendations
|
|
260
|
+
|
|
261
|
+
**2. Automated Fix Pipeline**
|
|
262
|
+
```
|
|
263
|
+
With a11y-audit-fix-agent-orchestrator, scan our codebase, identify issues, attempt automated fixes, and report what requires manual intervention.
|
|
264
|
+
```
|
|
265
|
+
**Outcome**: Batch of automated fixes plus list of manual tasks
|
|
266
|
+
|
|
267
|
+
**3. Continuous Monitoring Setup**
|
|
268
|
+
```
|
|
269
|
+
Use a11y-audit-fix-agent-orchestrator to set up a weekly accessibility audit workflow that tests, reports, and suggests fixes.
|
|
270
|
+
```
|
|
271
|
+
**Outcome**: Automated monitoring configuration
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
### MCP-Enhanced Workflows (Intermediate)
|
|
276
|
+
|
|
277
|
+
#### wcag MCP Server
|
|
278
|
+
|
|
279
|
+
**1. Research Success Criteria**
|
|
280
|
+
```
|
|
281
|
+
Query wcag MCP: What are all Level AA success criteria related to keyboard accessibility in WCAG 2.2?
|
|
282
|
+
```
|
|
283
|
+
**Outcome**: Complete list of relevant success criteria with descriptions
|
|
284
|
+
|
|
285
|
+
**2. Understand Techniques**
|
|
286
|
+
```
|
|
287
|
+
Ask wcag MCP: What techniques can I use to meet success criterion 1.4.3 Contrast (Minimum)?
|
|
288
|
+
```
|
|
289
|
+
**Outcome**: List of sufficient techniques and advisory techniques
|
|
290
|
+
|
|
291
|
+
**3. Compare WCAG Versions**
|
|
292
|
+
```
|
|
293
|
+
Query wcag MCP: What new success criteria were added in WCAG 2.2 compared to 2.1?
|
|
294
|
+
```
|
|
295
|
+
**Outcome**: Changelog of new requirements
|
|
296
|
+
|
|
297
|
+
#### aria MCP Server
|
|
298
|
+
|
|
299
|
+
**1. Role Requirements**
|
|
300
|
+
```
|
|
301
|
+
Ask aria MCP: What states and properties are required vs. supported for the combobox role?
|
|
302
|
+
```
|
|
303
|
+
**Outcome**: Complete list of required and optional ARIA attributes
|
|
304
|
+
|
|
305
|
+
**2. Pattern Implementation**
|
|
306
|
+
```
|
|
307
|
+
Query aria MCP: Show me the keyboard interaction pattern for an accordion widget.
|
|
308
|
+
```
|
|
309
|
+
**Outcome**: Detailed keyboard navigation requirements
|
|
310
|
+
|
|
311
|
+
**3. Attribute Values**
|
|
312
|
+
```
|
|
313
|
+
Ask aria MCP: What are the valid values for aria-live and when should I use each?
|
|
314
|
+
```
|
|
315
|
+
**Outcome**: Explanation of polite, assertive, and off values with use cases
|
|
316
|
+
|
|
317
|
+
#### magentaa11y MCP Server
|
|
318
|
+
|
|
319
|
+
**1. Component Acceptance Criteria**
|
|
320
|
+
```
|
|
321
|
+
Query magentaa11y MCP: What are the accessibility acceptance criteria for a date picker component?
|
|
322
|
+
```
|
|
323
|
+
**Outcome**: Comprehensive checklist of requirements
|
|
324
|
+
|
|
325
|
+
**2. Testing Scenarios**
|
|
326
|
+
```
|
|
327
|
+
Ask magentaa11y MCP: What should I test when validating an accessible navigation menu?
|
|
328
|
+
```
|
|
329
|
+
**Outcome**: List of test scenarios and expected behaviors
|
|
330
|
+
|
|
331
|
+
**3. Implementation Guidance**
|
|
332
|
+
```
|
|
333
|
+
Query magentaa11y MCP: What are the developer notes for implementing an accessible tooltip?
|
|
334
|
+
```
|
|
335
|
+
**Outcome**: Code examples and implementation guidance
|
|
336
|
+
|
|
337
|
+
#### a11y-personas MCP Server
|
|
338
|
+
|
|
339
|
+
**1. Understand User Needs**
|
|
340
|
+
```
|
|
341
|
+
Query a11y-personas MCP: Show me personas who use screen readers and their primary challenges.
|
|
342
|
+
```
|
|
343
|
+
**Outcome**: Detailed persona profiles with assistive tech usage
|
|
344
|
+
|
|
345
|
+
**2. Test Perspective**
|
|
346
|
+
```
|
|
347
|
+
Ask a11y-personas MCP: What would a user with motor disabilities experience when using our navigation?
|
|
348
|
+
```
|
|
349
|
+
**Outcome**: User scenario highlighting potential issues
|
|
350
|
+
|
|
351
|
+
**3. Design Validation**
|
|
352
|
+
```
|
|
353
|
+
Query a11y-personas MCP: Which personas would be affected by small click targets and how?
|
|
354
|
+
```
|
|
355
|
+
**Outcome**: Impact analysis across different disability types
|
|
356
|
+
|
|
357
|
+
#### arc-issues MCP Server
|
|
358
|
+
|
|
359
|
+
**1. Format Violations**
|
|
360
|
+
```
|
|
361
|
+
Query arc-issues MCP: Format this AxeCore color-contrast violation as a GitHub issue with all details.
|
|
362
|
+
```
|
|
363
|
+
**Outcome**: Ready-to-post issue with title, description, and remediation steps
|
|
364
|
+
|
|
365
|
+
**2. Batch Issue Creation**
|
|
366
|
+
```
|
|
367
|
+
Ask arc-issues MCP: Convert these 5 AxeCore violations into separate Jira tickets with appropriate labels.
|
|
368
|
+
```
|
|
369
|
+
**Outcome**: Multiple formatted tickets for issue tracking
|
|
370
|
+
|
|
371
|
+
**3. Standardized Reporting**
|
|
372
|
+
```
|
|
373
|
+
Query arc-issues MCP: Create a markdown report from this AxeCore scan result that I can add to our PR.
|
|
374
|
+
```
|
|
375
|
+
**Outcome**: Formatted report suitable for version control
|
|
376
|
+
|
|
377
|
+
---
|
|
378
|
+
|
|
379
|
+
### Combined Workflows (Advanced)
|
|
380
|
+
|
|
381
|
+
#### 1. Research-Driven Remediation
|
|
382
|
+
```
|
|
383
|
+
First, query wcag MCP for the requirements of success criterion 4.1.2. Then use a11y-remediator to fix the name/role/value issues in src/components/CustomButton.tsx based on those requirements.
|
|
384
|
+
```
|
|
385
|
+
**Uses**: wcag MCP + a11y-remediator
|
|
386
|
+
**Outcome**: Standards-compliant fix with proper justification
|
|
387
|
+
|
|
388
|
+
#### 2. Persona-Based Testing
|
|
389
|
+
```
|
|
390
|
+
Query a11y-personas MCP to understand keyboard-only users' needs, then use a11y-tester to specifically test keyboard navigation on our dashboard, documenting findings with a11y-issue-writer.
|
|
391
|
+
```
|
|
392
|
+
**Uses**: a11y-personas MCP + a11y-tester + a11y-issue-writer
|
|
393
|
+
**Outcome**: User-centered test results with documented issues
|
|
394
|
+
|
|
395
|
+
#### 3. Pattern-Based Development
|
|
396
|
+
```
|
|
397
|
+
Ask magentaa11y MCP for the acceptance criteria for an accessible carousel, then use a11y-base-web to implement it, and a11y-validator to confirm compliance.
|
|
398
|
+
```
|
|
399
|
+
**Uses**: magentaa11y MCP + a11y-base-web + a11y-validator
|
|
400
|
+
**Outcome**: Fully accessible component built to specification
|
|
401
|
+
|
|
402
|
+
#### 4. Standards-Based Audit
|
|
403
|
+
```
|
|
404
|
+
Use web-standards to review our semantic HTML, query aria MCP for proper ARIA usage, then use a11y-validator to confirm everything meets WCAG 2.2 Level AA.
|
|
405
|
+
```
|
|
406
|
+
**Uses**: web-standards + aria MCP + a11y-validator
|
|
407
|
+
**Outcome**: Multi-faceted standards compliance check
|
|
408
|
+
|
|
409
|
+
#### 5. Comprehensive Issue Documentation
|
|
410
|
+
```
|
|
411
|
+
Use a11y-tester to scan our site, query wcag MCP to get the relevant success criteria for each violation, then use a11y-issue-writer to create detailed GitHub issues with WCAG references.
|
|
412
|
+
```
|
|
413
|
+
**Uses**: a11y-tester + wcag MCP + a11y-issue-writer
|
|
414
|
+
**Outcome**: Well-documented issues with standards citations
|
|
415
|
+
|
|
416
|
+
#### 6. Component Library Validation
|
|
417
|
+
```
|
|
418
|
+
For each component in src/components/, query magentaa11y MCP for acceptance criteria, use a11y-validator to test against those criteria, and generate a compliance matrix.
|
|
419
|
+
```
|
|
420
|
+
**Uses**: magentaa11y MCP + a11y-validator
|
|
421
|
+
**Outcome**: Component library accessibility certification report
|
|
422
|
+
|
|
423
|
+
#### 7. Fix Verification Workflow
|
|
424
|
+
```
|
|
425
|
+
Use a11y-tester to identify issues, a11y-remediator to fix them, then a11y-validator to confirm the fixes meet requirements, documenting the changes with a11y-issue-writer.
|
|
426
|
+
```
|
|
427
|
+
**Uses**: a11y-tester + a11y-remediator + a11y-validator + a11y-issue-writer
|
|
428
|
+
**Outcome**: Complete test-fix-verify-document cycle
|
|
429
|
+
|
|
430
|
+
#### 8. ARIA Pattern Implementation
|
|
431
|
+
```
|
|
432
|
+
Query aria MCP for the disclosure widget pattern requirements, use a11y-base-web to implement it, test with a11y-tester, and validate with a11y-validator.
|
|
433
|
+
```
|
|
434
|
+
**Uses**: aria MCP + a11y-base-web + a11y-tester + a11y-validator
|
|
435
|
+
**Outcome**: Spec-compliant ARIA widget with test verification
|
|
436
|
+
|
|
437
|
+
#### 9. User-Centered Design Review
|
|
438
|
+
```
|
|
439
|
+
Query a11y-personas MCP for diverse user needs, use web-standards to ensure semantic HTML foundation, then a11y-remediator to enhance with proper ARIA where semantics fall short.
|
|
440
|
+
```
|
|
441
|
+
**Uses**: a11y-personas MCP + web-standards + a11y-remediator
|
|
442
|
+
**Outcome**: User-focused accessible implementation
|
|
443
|
+
|
|
444
|
+
#### 10. Regression Prevention
|
|
445
|
+
```
|
|
446
|
+
Use a11y-tester to scan before merging PR, query wcag MCP for any new violations' requirements, use a11y-remediator to fix them, then a11y-validator to confirm before deployment.
|
|
447
|
+
```
|
|
448
|
+
**Uses**: a11y-tester + wcag MCP + a11y-remediator + a11y-validator
|
|
449
|
+
**Outcome**: Automated accessibility gate in CI/CD
|
|
450
|
+
|
|
451
|
+
#### 11. Documentation-First Development
|
|
452
|
+
```
|
|
453
|
+
Query magentaa11y MCP for component requirements, use a11y-base-web to scaffold the component, document expected behavior with a11y-issue-writer, then validate with a11y-validator.
|
|
454
|
+
```
|
|
455
|
+
**Uses**: magentaa11y MCP + a11y-base-web + a11y-issue-writer + a11y-validator
|
|
456
|
+
**Outcome**: Well-documented, specification-driven component
|
|
457
|
+
|
|
458
|
+
#### 12. Cross-Reference Validation
|
|
459
|
+
```
|
|
460
|
+
Use a11y-tester to find violations, query both wcag MCP and aria MCP to understand the requirements, then use a11y-remediator to implement fixes that satisfy both specifications.
|
|
461
|
+
```
|
|
462
|
+
**Uses**: a11y-tester + wcag MCP + aria MCP + a11y-remediator
|
|
463
|
+
**Outcome**: Fixes validated against multiple standards
|
|
464
|
+
|
|
465
|
+
#### 13. Issue Triage Pipeline
|
|
466
|
+
```
|
|
467
|
+
Use a11y-tester to scan multiple pages, query wcag MCP to determine WCAG level for each issue, use arc-issues MCP to format them, then a11y-issue-writer to add prioritization and assignment.
|
|
468
|
+
```
|
|
469
|
+
**Uses**: a11y-tester + wcag MCP + arc-issues MCP + a11y-issue-writer
|
|
470
|
+
**Outcome**: Prioritized, formatted issue backlog
|
|
471
|
+
|
|
472
|
+
#### 14. Accessibility Training Material
|
|
473
|
+
```
|
|
474
|
+
Query a11y-personas MCP for user scenarios, wcag MCP for requirements, magentaa11y MCP for component patterns, and use a11y-issue-writer to create training documentation.
|
|
475
|
+
```
|
|
476
|
+
**Uses**: a11y-personas MCP + wcag MCP + magentaa11y MCP + a11y-issue-writer
|
|
477
|
+
**Outcome**: Educational materials for team onboarding
|
|
478
|
+
|
|
479
|
+
#### 15. Third-Party Component Audit
|
|
480
|
+
```
|
|
481
|
+
Use web-standards to evaluate semantic foundation of a library component, query aria MCP for proper ARIA usage, use a11y-tester to scan it, and a11y-validator to certify compliance.
|
|
482
|
+
```
|
|
483
|
+
**Uses**: web-standards + aria MCP + a11y-tester + a11y-validator
|
|
484
|
+
**Outcome**: Vendor component accessibility assessment
|
|
485
|
+
|
|
486
|
+
---
|
|
487
|
+
|
|
488
|
+
### Complete Audit Workflows (Advanced)
|
|
489
|
+
|
|
490
|
+
#### 1. Full Site Accessibility Audit
|
|
491
|
+
```
|
|
492
|
+
Using a11y-audit-fix-agent-orchestrator, perform a comprehensive audit of https://mysite.com, querying wcag MCP for requirements, aria MCP for patterns, and generating a complete remediation roadmap with prioritized issues documented via a11y-issue-writer.
|
|
493
|
+
```
|
|
494
|
+
**Outcome**: End-to-end audit report with actionable remediation plan
|
|
495
|
+
|
|
496
|
+
#### 2. Pre-Launch Compliance Check
|
|
497
|
+
```
|
|
498
|
+
Use the orchestrator to scan our staging environment, validate against WCAG 2.2 Level AA with a11y-validator, cross-reference findings with magentaa11y MCP acceptance criteria, and create a go/no-go report with all issues documented.
|
|
499
|
+
```
|
|
500
|
+
**Outcome**: Deployment readiness assessment with compliance status
|
|
501
|
+
|
|
502
|
+
#### 3. Automated Remediation Pipeline
|
|
503
|
+
```
|
|
504
|
+
Run the orchestrator to scan the codebase with a11y-tester, automatically fix common issues with a11y-remediator, validate fixes with a11y-validator, document remaining issues with a11y-issue-writer, and create PRs for manual review.
|
|
505
|
+
```
|
|
506
|
+
**Outcome**: Batch fixes applied, remaining work itemized and tracked
|
|
507
|
+
|
|
508
|
+
#### 4. Component Library Certification
|
|
509
|
+
```
|
|
510
|
+
Use the orchestrator to audit every component in src/components/, query magentaa11y MCP for each component type's requirements, validate with a11y-validator, and generate a comprehensive certification report showing compliance status.
|
|
511
|
+
```
|
|
512
|
+
**Outcome**: Component library accessibility certification matrix
|
|
513
|
+
|
|
514
|
+
#### 5. Continuous Accessibility Monitoring
|
|
515
|
+
```
|
|
516
|
+
Set up the orchestrator to run weekly scans with a11y-tester, compare results to previous baselines, query wcag MCP for any new violation types, automatically create issues via a11y-issue-writer for regressions, and alert the team.
|
|
517
|
+
```
|
|
518
|
+
**Outcome**: Automated accessibility monitoring and regression detection
|
|
519
|
+
|
|
520
|
+
---
|
|
521
|
+
|
|
522
|
+
## Quick Reference Cheat Sheet
|
|
523
|
+
|
|
524
|
+
| Task | Tool to Use | Example |
|
|
525
|
+
|------|-------------|---------|
|
|
526
|
+
| Scan a page for issues | a11y-tester | `Scan https://example.com with a11y-tester` |
|
|
527
|
+
| Fix missing alt text | a11y-remediator | `Fix alt text in src/Gallery.tsx` |
|
|
528
|
+
| Document violations | a11y-issue-writer | `Create GitHub issue for form errors` |
|
|
529
|
+
| Check WCAG requirements | wcag MCP | `Query wcag: color contrast requirements` |
|
|
530
|
+
| Understand ARIA roles | aria MCP | `Query aria: button role requirements` |
|
|
531
|
+
| Get component patterns | magentaa11y MCP | `Query magentaa11y: tabs acceptance criteria` |
|
|
532
|
+
| Validate compliance | a11y-validator | `Validate modal meets WCAG 2.2 AA` |
|
|
533
|
+
| Review semantics | web-standards | `Review HTML structure in src/Nav.tsx` |
|
|
534
|
+
| Understand user needs | a11y-personas MCP | `Query a11y-personas: screen reader users` |
|
|
535
|
+
| Format AxeCore violations | arc-issues MCP | `Format this violation as Jira ticket` |
|
|
536
|
+
| Run full audit | orchestrator | `Audit https://mysite.com with orchestrator` |
|
|
537
|
+
|
|
538
|
+
---
|
|
539
|
+
|
|
540
|
+
## MCP Setup Verification
|
|
541
|
+
|
|
542
|
+
### How to Verify MCP Servers Are Working
|
|
543
|
+
|
|
544
|
+
Your MCP servers run via `npx`, which means they're fetched on-demand and don't require local installation. To verify they're working, try these test prompts:
|
|
545
|
+
|
|
546
|
+
#### Test wcag MCP
|
|
547
|
+
```
|
|
548
|
+
Query the wcag MCP server: What is success criterion 2.1.1?
|
|
549
|
+
```
|
|
550
|
+
**Expected**: Details about keyboard accessibility requirements
|
|
551
|
+
|
|
552
|
+
#### Test aria MCP
|
|
553
|
+
```
|
|
554
|
+
Query the aria MCP server: What attributes does the button role support?
|
|
555
|
+
```
|
|
556
|
+
**Expected**: List of ARIA attributes applicable to buttons
|
|
557
|
+
|
|
558
|
+
#### Test magentaa11y MCP
|
|
559
|
+
```
|
|
560
|
+
Query the magentaa11y MCP server: List all available component types.
|
|
561
|
+
```
|
|
562
|
+
**Expected**: List of components with acceptance criteria
|
|
563
|
+
|
|
564
|
+
#### Test a11y-personas MCP
|
|
565
|
+
```
|
|
566
|
+
Query the a11y-personas MCP server: Show me all available personas.
|
|
567
|
+
```
|
|
568
|
+
**Expected**: List of user personas with disabilities
|
|
569
|
+
|
|
570
|
+
#### Test arc-issues MCP
|
|
571
|
+
```
|
|
572
|
+
Query the arc-issues MCP server: What issue formats are available?
|
|
573
|
+
```
|
|
574
|
+
**Expected**: List of supported formats (GitHub, Jira, etc.)
|
|
575
|
+
|
|
576
|
+
### Basic Troubleshooting
|
|
577
|
+
|
|
578
|
+
If MCP servers aren't responding:
|
|
579
|
+
|
|
580
|
+
1. **Restart your IDE** - MCP servers initialize when the IDE starts
|
|
581
|
+
2. **Check npx connectivity** - Run `npx --version` in your terminal to ensure npx is working
|
|
582
|
+
3. **Verify MCP configuration** - Check that your IDE's `mcp.json` file exists and includes the 5 servers
|
|
583
|
+
4. **Check network** - MCP servers using npx need internet access for first-time package downloads
|
|
584
|
+
5. **Look for errors** - Check your IDE's output panel for MCP-related error messages
|
|
585
|
+
|
|
586
|
+
### MCP Configuration Locations
|
|
587
|
+
|
|
588
|
+
Your MCP configuration was written to one of these locations (depending on your OS and IDE):
|
|
589
|
+
|
|
590
|
+
- **macOS**: `~/Library/Application Support/{IDE}/mcp.json`
|
|
591
|
+
- **Windows**: `%APPDATA%\{IDE}\mcp.json`
|
|
592
|
+
- **Linux**: `~/.config/{IDE}/mcp.json`
|
|
593
|
+
|
|
594
|
+
Where `{IDE}` is one of: `Claude`, `Cursor`, `Codex`, or `Code` (for VSCode)
|
|
595
|
+
|
|
596
|
+
---
|
|
597
|
+
|
|
598
|
+
## Getting Help
|
|
599
|
+
|
|
600
|
+
### Resources
|
|
601
|
+
|
|
602
|
+
- **Report Issues**: [GitHub Issues](https://github.com/joe-watkins/a11y-devkit/issues)
|
|
603
|
+
- **Full Documentation**: Check the main README.md in the parent directory
|
|
604
|
+
- **Community**: Share your prompts and workflows with the community
|
|
605
|
+
|
|
606
|
+
### Common Issues
|
|
607
|
+
|
|
608
|
+
**"Skill not found"**
|
|
609
|
+
- Verify skills are installed in your IDE's skills directory
|
|
610
|
+
- Check that the skill name matches exactly (e.g., `a11y-tester`, not `a11y-testing`)
|
|
611
|
+
- Restart your IDE to reload skills
|
|
612
|
+
|
|
613
|
+
**"MCP server not responding"**
|
|
614
|
+
- Ensure you're querying the MCP server explicitly (e.g., "Query wcag MCP:")
|
|
615
|
+
- Restart your IDE to reinitialize MCP servers
|
|
616
|
+
- Check that npx is installed and working
|
|
617
|
+
|
|
618
|
+
**"Permission denied"**
|
|
619
|
+
- MCP servers run via npx and may need permission to execute
|
|
620
|
+
- Check your system's security settings for CLI tool execution
|
|
621
|
+
|
|
622
|
+
### Tips for Best Results
|
|
623
|
+
|
|
624
|
+
1. **Be specific** - Instead of "check accessibility", try "Use a11y-tester to scan the login form for WCAG violations"
|
|
625
|
+
2. **Combine tools** - Leverage both skills and MCP servers together for comprehensive workflows
|
|
626
|
+
3. **Reference files** - Provide specific file paths when asking for fixes or reviews
|
|
627
|
+
4. **Iterate** - Start with testing, then research, then fix, then validate
|
|
628
|
+
5. **Document** - Use a11y-issue-writer to track what you find and fix
|
|
629
|
+
|
|
630
|
+
---
|
|
631
|
+
|
|
632
|
+
## Next Steps
|
|
633
|
+
|
|
634
|
+
Now that you have this powerful toolkit, here are some suggested next steps:
|
|
635
|
+
|
|
636
|
+
1. **Run your first scan** - Use a11y-tester on your main page
|
|
637
|
+
2. **Explore the MCP servers** - Query wcag, aria, and magentaa11y to learn what they offer
|
|
638
|
+
3. **Try a combined workflow** - Pick one from the Advanced section and adapt it to your project
|
|
639
|
+
4. **Set up monitoring** - Use the orchestrator to establish regular accessibility checks
|
|
640
|
+
5. **Train your team** - Share example prompts with teammates to build accessibility into your workflow
|
|
641
|
+
|
|
642
|
+
**Remember**: Accessibility is a journey, not a destination. These tools help you continuously improve your web applications for all users.
|
|
643
|
+
|
|
644
|
+
Happy building!
|