arc-skills-deploy
v1.0.7
Published
CLI to deploy a11y skills and MCP servers across IDEs
Downloads
346
Maintainers
Readme
arc-skills-deploy
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.
Add new skills, MCP servers, or entire IDEs without writing code - just edit the JSON config and re-run.
Install
npm install -g arc-skills-deploy
# or
npx arc-skills-deploy@latestUsage
arc-skills-deployFlags
| Flag | Description |
|------|-------------|
| --skill <name> | Install a single skill by npm package name and prompt to wire its required MCPs. Bypasses the profile selector entirely. |
| --local / --global | Skip the scope prompt for skill installation. |
| --yes | Auto-confirm all prompts (local scope, all IDEs). |
| --uninstall | Remove skills and MCP entries installed by this tool. |
Note: MCP configs are always written globally (AppData/Application Support). The scope flag only affects skills.
Single-Skill Install
Use --skill to install exactly one skill without going through the full profile flow:
# Install the minimal accessibility tester for agent stacks
npx arc-skills-deploy@latest --skill a11y-tester-basic-skill
# Skip all prompts, auto-confirm
npx arc-skills-deploy@latest --skill a11y-tester-basic-skill --yes
# Invalid name → error listing all valid skill names
npx arc-skills-deploy@latest --skill fooThe CLI validates the skill name, prompts for host application selection, then asks whether to install the skill's required MCP servers. Invalid names print an error listing all available skills.
After Installation
Once installation completes, you'll find a comprehensive usage guide in your IDE's skills directory:
- Local install:
.claude/skills/a11y/arc-skills-README.md(or.cursor/skills/a11y/,.codex/skills/a11y/depending on your IDE) - Global install:
~/.claude/skills/a11y/arc-skills-README.md(or your IDE's global skills directory)
What's in the Guide
The bundled README includes:
- 70+ example prompts organized by complexity level (beginner to advanced)
- Quick reference cheat sheet for common tasks
- Skill descriptions explaining when to use each of the 7 skills
- MCP server guides with verification steps and example queries
- Combined workflows showing how to use skills and MCP servers together
- Complete audit examples using the orchestrator for end-to-end accessibility testing
Preview the Guide
You can preview the guide here: templates/deploy-README.md
Next Steps
- Open the README in your IDE's skills directory
- Try the "Getting Started" prompts to verify everything is working
- Explore the example prompts library to find workflows that match your needs
- Use the MCP verification section to test all 5 MCP servers
MCP Servers
All MCP servers are configured to run via npx, which means:
- No local installation or cloning required
- Automatically fetches the latest version when needed
- No disk space used for local copies
- Just restart your IDE and the servers will be available
What It Does
This CLI automates the setup of accessibility tooling by:
- Installing skills from npm - Downloads and installs accessibility skill packages (configurable in
config/settings.json) - Configuring MCP servers - Updates each IDE's MCP config to enable accessibility-focused MCP servers (also configurable)
Default configuration includes:
- 8 accessibility skills - Testing, remediation, validation, documentation, and orchestration
- 6 MCP servers:
- wcag - WCAG 2.2 guidelines, success criteria, and techniques
- aria - WAI-ARIA roles, states, properties, and patterns
- magentaa11y - Component accessibility acceptance criteria
- a11y-personas - Accessibility personas for diverse user needs
- arc-issues - Format AxeCore violations into standardized issue templates
Fully customizable - add/remove skills, MCP servers, or entire IDEs by editing the config file.
Why This Tool?
Zero Hardcoded Values - Every aspect of the tool is driven by config/settings.json:
- IDE paths and configuration files
- Skills to install
- MCP servers to configure
- Even the IDE list itself
Adding Support for a New IDE takes just 5 lines of JSON:
{
"id": "new-ide",
"displayName": "New IDE",
"mcpServerKey": "servers",
"skillsFolder": ".new-ide/skills",
"mcpConfigFile": ".new-ide/mcp.json"
}Safe by Default - Won't overwrite your existing:
- Custom MCP servers in your IDE configs
- Other skills in your skills directories
- Creates backups if it encounters JSON parsing errors
Skills Installed (Default)
The following skill packages are installed from npm by default. Add your own by editing config/settings.json:
| Skill | Package | Description |
|-------|---------|-------------|
| a11y-base-web | a11y-base-web-skill | Foundational accessibility patterns for web code |
| a11y-issue-writer | a11y-issue-writer-skill | Write clear accessibility issue reports |
| a11y-tester | a11y-tester-skill | Automated testing with axe-core and Playwright |
| a11y-tester-basic | a11y-tester-basic-skill | Lightweight tester for agent stacks — critical/serious only, Playwright + MagentaA11y only |
| a11y-remediator | a11y-remediator-skill | Fix accessibility issues in code |
| a11y-validator | a11y-validator-skill | Validate accessibility compliance |
| web-standards | web-standards-skill | Web standards and best practices |
| a11y-audit-fix-agent-orchestrator | a11y-audit-fix-agent-orchestrator-skill | Orchestrate full audit and fix workflows |
No Local MCP Installation Required!
MCP servers are configured to use npx, which means:
- No cloning of MCP server repositories
- No building or
npm installsteps - No disk space used for local copies
- Always up-to-date - npx fetches the latest version automatically
The generated MCP config looks like this:
{
"mcpServers": {
"wcag": {
"command": "npx",
"args": ["-y", "wcag-mcp"]
},
"aria": {
"command": "npx",
"args": ["-y", "aria-mcp"]
}
}
}Configuration
The entire tool is fully config-driven. Edit config/settings.json to customize everything without touching code.
Adding a New Skill
Simply add an object to the skills array with a name (npm package) and description:
{
"skills": [
{
"name": "a11y-tester-skill",
"description": "Run accessibility tests"
},
{
"name": "your-custom-skill",
"description": "Your custom skill description"
}
]
}Adding a New MCP Server
Add an object to the mcpServers array with name, description, command, and args:
{
"mcpServers": [
{
"name": "wcag",
"description": "WCAG guidelines reference",
"command": "npx",
"args": ["-y", "wcag-mcp"]
},
{
"name": "your-custom-mcp",
"description": "Your custom MCP server",
"command": "npx",
"args": ["-y", "your-mcp-package"]
}
]
}Adding a New Host Application
Add an object to the hostApplications array with the host application's configuration:
{
"hostApplications": [
{
"id": "windsurf",
"displayName": "Windsurf",
"mcpServerKey": "servers",
"skillsFolder": ".codeium/windsurf/skills",
"mcpConfigFile": ".codeium/windsurf/mcp_config.json"
},
{
"id": "vscode",
"displayName": "VSCode",
"mcpServerKey": "servers",
"skillsFolder": ".github/skills",
"mcpConfigFile": "Code/User/mcp.json"
}
]
}Host Application Configuration Properties:
id- Unique identifier for the host applicationdisplayName- Human-readable name shown in promptsmcpServerKey- MCP config key name ("servers","mcpServers", or"mcp_servers"for TOML)skillsFolder- Path to skills directory (relative to home/project root)mcpConfigFile- Path to MCP config file (relative to AppData/Application Support). Supports both JSON (.json) and TOML (.toml) formats. TOML format is auto-detected by file extension (used by Codex):- Windows:
%APPDATA%(e.g.,C:\Users\name\AppData\Roaming) - macOS:
~/Library/Application Support - Linux:
$XDG_CONFIG_HOMEor~/.config
- Windows:
Note: Codex uses TOML format for its MCP configuration (~/.codex/config.toml), which requires the mcpServerKey to be "mcp_servers" and generates config entries like:
[mcp_servers.magentaa11y]
command = "npx"
args = ["-y", "magentaa11y-mcp"]Config Structure
skillsFolder- Subfolder name to bundle skills under (e.g., "a11y")readmeTemplate- README template file to copy into skills directoriesskills- Array of skill objects withname(npm package) anddescriptionhostApplications- Array of host application configuration objectsmcpServers- MCP server definitions with name, description, command, and args
All changes take effect immediately - just re-run the CLI to deploy your updated config.
Safe Merging
The CLI safely merges with existing configurations:
- MCP configs - Adds/updates only the specified servers, preserves others
- Skills - Installs only the configured skills, preserves other skills in the directory
- Backups - Creates
.bakfiles if JSON parsing fails
Directory Structure
Local Install (Project-Specific)
your-project/
├── .claude/
│ └── skills/ # Claude Code skills
├── .cursor/
│ └── skills/ # Cursor skills
├── .codex/
│ └── skills/ # Codex skills
├── .github/
│ └── skills/ # VSCode skills
├── .codeium/windsurf/
│ └── skills/ # Windsurf skills
└── .factory/
└── skills/ # Factory skillsGlobal Install (User-Wide)
~/.claude/
└── skills/ # Claude Code global skills
~/.cursor/
└── skills/ # Cursor global skills
~/.codex/
└── skills/ # Codex global skills
~/.github/
└── skills/ # VSCode global skills
~/.codeium/windsurf/
└── skills/ # Windsurf global skills
~/.factory/
└── skills/ # Factory global skills
# MCP config files live in AppData/Application Support:
# Windows: %APPDATA%/.claude.json
# Windows: %APPDATA%/.cursor/mcp.json
# Windows: %APPDATA%/.codex/config.toml
# Windows: %APPDATA%/Code/User/mcp.json
# Windows: %APPDATA%/.codeium/windsurf/mcp_config.json
# Windows: %APPDATA%/.factory/mcp.json
# macOS: ~/Library/Application Support/<same paths as above>
# Linux: $XDG_CONFIG_HOME/<same paths as above> (or ~/.config)Note: Paths are fully customizable per IDE in config/settings.json
MCP Servers Included (Default)
Add your own by editing config/settings.json:
| Server | Package | Description |
|--------|---------|-------------|
| wcag | wcag-mcp | WCAG 2.2 guidelines, success criteria, techniques |
| aria | aria-mcp | WAI-ARIA roles, states, properties |
| magentaa11y | magentaa11y-mcp | Component accessibility acceptance criteria |
| a11y-personas | a11y-personas-mcp | Accessibility personas for diverse users |
| arc-issues | arc-issues-mcp | AxeCore violation formatting |
| playwright | @playwright/mcp | Browser automation for runtime accessibility testing |
Complete Config Example
Here's what a complete config/settings.json looks like:
{
"skillsFolder": "a11y",
"readmeTemplate": "deploy-README.md",
"skills": [
{
"name": "a11y-base-web-skill",
"description": "Core accessibility testing utilities"
},
{
"name": "a11y-tester-skill",
"description": "Run accessibility tests"
}
],
"hostApplications": [
{
"id": "claude",
"displayName": "Claude Code",
"mcpServerKey": "servers",
"skillsFolder": ".claude/skills",
"mcpConfigFile": ".claude/mcp.json"
},
{
"id": "cursor",
"displayName": "Cursor",
"mcpServerKey": "mcpServers",
"skillsFolder": ".cursor/skills",
"mcpConfigFile": ".cursor/mcp.json"
},
{
"id": "windsurf",
"displayName": "Windsurf",
"mcpServerKey": "servers",
"skillsFolder": ".codeium/windsurf/skills",
"mcpConfigFile": ".codeium/windsurf/mcp_config.json"
}
],
"mcpServers": [
{
"name": "wcag",
"description": "WCAG guidelines reference",
"command": "npx",
"args": ["-y", "wcag-mcp"]
},
{
"name": "aria",
"description": "ARIA specification reference",
"command": "npx",
"args": ["-y", "aria-mcp"]
}
]
}Everything is customizable - add, remove, or modify any section to match your needs.
