a11y-devkit-deploy 0.7.1 → 0.7.2

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 (2) hide show
  1. package/README.md +165 -25
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # A11y Devkit Deploy
2
2
 
3
- A **fully config-driven**, 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 multiple IDEs: Claude Code, Cursor, Codex, VSCode, Windsurf, and Factory.
4
4
 
5
- **Add new skills or MCP servers without writing code** - just edit the JSON config and re-run.
5
+ **Add new skills, MCP servers, or entire IDEs without writing code** - just edit the JSON config and re-run.
6
6
 
7
7
  ## Install
8
8
 
@@ -27,8 +27,8 @@ a11y-devkit-deploy
27
27
 
28
28
  Once installation completes, you'll find a comprehensive usage guide in your IDE's skills directory:
29
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)
30
+ - **Local install**: `.claude/skills/a11y/a11y-devkit-README.md` (or `.cursor/skills/a11y/`, `.codex/skills/a11y/` depending on your IDE)
31
+ - **Global install**: `~/.claude/skills/a11y/a11y-devkit-README.md` (or your IDE's global skills directory)
32
32
 
33
33
  ### What's in the Guide
34
34
 
@@ -42,7 +42,7 @@ The bundled README includes:
42
42
 
43
43
  ### Preview the Guide
44
44
 
45
- You can preview the guide here: [templates/skills-README.md](templates/skills-README.md)
45
+ You can preview the guide here: [templates/deploy-README.md](templates/deploy-README.md)
46
46
 
47
47
  ### Next Steps
48
48
 
@@ -75,7 +75,31 @@ This CLI automates the setup of accessibility tooling by:
75
75
  - **a11y-personas** - Accessibility personas for diverse user needs
76
76
  - **arc-issues** - Format AxeCore violations into standardized issue templates
77
77
 
78
- **Fully customizable** - add/remove skills or MCP servers by editing the config file.
78
+ **Fully customizable** - add/remove skills, MCP servers, or entire IDEs by editing the config file.
79
+
80
+ ## Why This Tool?
81
+
82
+ **Zero Hardcoded Values** - Every aspect of the tool is driven by `config/a11y.json`:
83
+ - IDE paths and configuration files
84
+ - Skills to install
85
+ - MCP servers to configure
86
+ - Even the IDE list itself
87
+
88
+ **Adding Support for a New IDE** takes just 5 lines of JSON:
89
+ ```json
90
+ {
91
+ "id": "new-ide",
92
+ "displayName": "New IDE",
93
+ "mcpServerKey": "servers",
94
+ "skillsFolder": ".new-ide/skills",
95
+ "mcpConfigFile": ".new-ide/mcp.json"
96
+ }
97
+ ```
98
+
99
+ **Safe by Default** - Won't overwrite your existing:
100
+ - Custom MCP servers in your IDE configs
101
+ - Other skills in your skills directories
102
+ - Creates backups if it encounters JSON parsing errors
79
103
 
80
104
  ### Skills Installed (Default)
81
105
 
@@ -118,9 +142,9 @@ The generated MCP config looks like this:
118
142
 
119
143
  ## Configuration
120
144
 
121
- The entire tool is **fully config-driven**. Edit `config/a11y.json` to customize everything without touching code:
145
+ The entire tool is **fully config-driven**. Edit `config/a11y.json` to customize everything without touching code.
122
146
 
123
- ### Example: Adding a New Skill
147
+ ### Adding a New Skill
124
148
 
125
149
  Simply add an object to the `skills` array with a `name` (npm package) and `description`:
126
150
 
@@ -139,7 +163,7 @@ Simply add an object to the `skills` array with a `name` (npm package) and `desc
139
163
  }
140
164
  ```
141
165
 
142
- ### Example: Adding a New MCP Server
166
+ ### Adding a New MCP Server
143
167
 
144
168
  Add an object to the `mcpServers` array with name, description, command, and args:
145
169
 
@@ -162,40 +186,96 @@ Add an object to the `mcpServers` array with name, description, command, and arg
162
186
  }
163
187
  ```
164
188
 
189
+ ### Adding a New IDE
190
+
191
+ Add an object to the `ides` array with the IDE's configuration:
192
+
193
+ ```json
194
+ {
195
+ "ides": [
196
+ {
197
+ "id": "windsurf",
198
+ "displayName": "Windsurf",
199
+ "mcpServerKey": "servers",
200
+ "skillsFolder": ".codeium/windsurf/skills",
201
+ "mcpConfigFile": ".codeium/windsurf/mcp_config.json"
202
+ }
203
+ ]
204
+ }
205
+ ```
206
+
207
+ **IDE Configuration Properties:**
208
+ - `id` - Unique identifier for the IDE
209
+ - `displayName` - Human-readable name shown in prompts
210
+ - `mcpServerKey` - MCP config key name (`"servers"` or `"mcpServers"`)
211
+ - `skillsFolder` - Path to skills directory (relative to home/project root)
212
+ - `mcpConfigFile` - Path to MCP config file (relative to home/project root)
213
+
165
214
  ### Config Structure
166
215
 
216
+ - `skillsFolder` - Subfolder name to bundle skills under (e.g., "a11y")
217
+ - `readmeTemplate` - README template file to copy into skills directories
167
218
  - `skills` - Array of skill objects with `name` (npm package) and `description`
168
- - `ideSkillsPaths` - IDE-specific skills directories (configurable per IDE)
169
- - `ideMcpPaths` - IDE-specific MCP config file paths
219
+ - `ides` - Array of IDE configuration objects
170
220
  - `mcpServers` - MCP server definitions with name, description, command, and args
171
221
 
172
222
  All changes take effect immediately - just re-run the CLI to deploy your updated config.
173
223
 
224
+ ### Safe Merging
225
+
226
+ The CLI **safely merges** with existing configurations:
227
+ - **MCP configs** - Adds/updates only the specified servers, preserves others
228
+ - **Skills** - Installs only the configured skills, preserves other skills in the directory
229
+ - **Backups** - Creates `.bak` files if JSON parsing fails
230
+
174
231
  ## Directory Structure
175
232
 
176
233
  ### Local Install (Project-Specific)
177
234
  ```
178
235
  your-project/
179
- ├── .claude/skills/ # Skills copied to Claude Code (if selected)
180
- ├── .cursor/skills/ # Skills copied to Cursor (if selected)
181
- ├── .codex/skills/ # Skills copied to Codex (if selected)
182
- └── .github/skills/ # Skills copied here for version control
236
+ ├── .claude/
237
+ ├── mcp.json # Claude Code MCP config
238
+ │ └── skills/ # Claude Code skills
239
+ ├── .cursor/
240
+ │ ├── mcp.json # Cursor MCP config
241
+ │ └── skills/ # Cursor skills
242
+ ├── .codex/
243
+ │ ├── mcp.json # Codex MCP config
244
+ │ └── skills/ # Codex skills
245
+ ├── .github/
246
+ │ ├── mcp.json # VSCode MCP config
247
+ │ └── skills/ # VSCode skills
248
+ ├── .codeium/windsurf/
249
+ │ ├── mcp_config.json # Windsurf MCP config
250
+ │ └── skills/ # Windsurf skills
251
+ └── .factory/
252
+ ├── mcp.json # Factory MCP config
253
+ └── skills/ # Factory skills
183
254
  ```
184
255
 
185
256
  ### Global Install (User-Wide)
186
257
  ```
187
- ~/.claude/skills/ # Claude Code skills
188
- ~/.cursor/skills/ # Cursor skills
189
- ~/.codex/skills/ # Codex skills
190
- ~/.vscode/skills/ # VSCode skills
258
+ ~/.claude/
259
+ ├── mcp.json # Claude Code global MCP config
260
+ └── skills/ # Claude Code global skills
261
+ ~/.cursor/
262
+ ├── mcp.json # Cursor global MCP config
263
+ └── skills/ # Cursor global skills
264
+ ~/.codex/
265
+ ├── mcp.json # Codex global MCP config
266
+ └── skills/ # Codex global skills
267
+ ~/.github/
268
+ ├── mcp.json # VSCode global MCP config
269
+ └── skills/ # VSCode global skills
270
+ ~/.codeium/windsurf/
271
+ ├── mcp_config.json # Windsurf global MCP config
272
+ └── skills/ # Windsurf global skills
273
+ ~/.factory/
274
+ ├── mcp.json # Factory global MCP config
275
+ └── skills/ # Factory global skills
191
276
  ```
192
277
 
193
- ### MCP Configuration Locations
194
-
195
- MCP configurations are written to each IDE's OS-specific config path:
196
- - **macOS**: `~/Library/Application Support/{IDE}/mcp.json`
197
- - **Windows**: `%APPDATA%\{IDE}\mcp.json`
198
- - **Linux**: `~/.config/{IDE}/mcp.json`
278
+ **Note:** Paths are fully customizable per IDE in `config/a11y.json`
199
279
 
200
280
  ## MCP Servers Included (Default)
201
281
 
@@ -208,3 +288,63 @@ MCP configurations are written to each IDE's OS-specific config path:
208
288
  | magentaa11y | `magentaa11y-mcp` | Component accessibility acceptance criteria |
209
289
  | a11y-personas | `a11y-personas-mcp` | Accessibility personas for diverse users |
210
290
  | arc-issues | `arc-issues-mcp` | AxeCore violation formatting |
291
+
292
+ ## Complete Config Example
293
+
294
+ Here's what a complete `config/a11y.json` looks like:
295
+
296
+ ```json
297
+ {
298
+ "skillsFolder": "a11y",
299
+ "readmeTemplate": "deploy-README.md",
300
+ "skills": [
301
+ {
302
+ "name": "a11y-base-web-skill",
303
+ "description": "Core accessibility testing utilities"
304
+ },
305
+ {
306
+ "name": "a11y-tester-skill",
307
+ "description": "Run accessibility tests"
308
+ }
309
+ ],
310
+ "ides": [
311
+ {
312
+ "id": "claude",
313
+ "displayName": "Claude Code",
314
+ "mcpServerKey": "servers",
315
+ "skillsFolder": ".claude/skills",
316
+ "mcpConfigFile": ".claude/mcp.json"
317
+ },
318
+ {
319
+ "id": "cursor",
320
+ "displayName": "Cursor",
321
+ "mcpServerKey": "mcpServers",
322
+ "skillsFolder": ".cursor/skills",
323
+ "mcpConfigFile": ".cursor/mcp.json"
324
+ },
325
+ {
326
+ "id": "windsurf",
327
+ "displayName": "Windsurf",
328
+ "mcpServerKey": "servers",
329
+ "skillsFolder": ".codeium/windsurf/skills",
330
+ "mcpConfigFile": ".codeium/windsurf/mcp_config.json"
331
+ }
332
+ ],
333
+ "mcpServers": [
334
+ {
335
+ "name": "wcag",
336
+ "description": "WCAG guidelines reference",
337
+ "command": "npx",
338
+ "args": ["-y", "wcag-mcp"]
339
+ },
340
+ {
341
+ "name": "aria",
342
+ "description": "ARIA specification reference",
343
+ "command": "npx",
344
+ "args": ["-y", "aria-mcp"]
345
+ }
346
+ ]
347
+ }
348
+ ```
349
+
350
+ Everything is customizable - add, remove, or modify any section to match your needs.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "a11y-devkit-deploy",
3
- "version": "0.7.1",
3
+ "version": "0.7.2",
4
4
  "description": "CLI to deploy a11y skills and MCP servers across IDEs",
5
5
  "license": "MIT",
6
6
  "type": "module",