a11y-devkit-deploy 0.8.5 → 0.8.8

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 CHANGED
@@ -199,17 +199,31 @@ Add an object to the `hostApplications` array with the host application's config
199
199
  "mcpServerKey": "servers",
200
200
  "skillsFolder": ".codeium/windsurf/skills",
201
201
  "mcpConfigFile": ".codeium/windsurf/mcp_config.json"
202
+ },
203
+ {
204
+ "id": "vscode",
205
+ "displayName": "VSCode",
206
+ "mcpServerKey": "servers",
207
+ "skillsFolder": ".github/skills",
208
+ "mcpConfigFile": ".github/mcp.json",
209
+ "globalMcpConfigFile": "Code/User/mcp.json"
202
210
  }
203
211
  ]
204
212
  }
205
213
  ```
206
214
 
215
+ **Note:** The `globalMcpConfigFile` property is optional. When specified, the global MCP config path is relative to the platform's app support directory (AppData on Windows, Application Support on macOS) instead of the home directory.
216
+
207
217
  **Host Application Configuration Properties:**
208
218
  - `id` - Unique identifier for the host application
209
219
  - `displayName` - Human-readable name shown in prompts
210
220
  - `mcpServerKey` - MCP config key name (`"servers"` or `"mcpServers"`)
211
221
  - `skillsFolder` - Path to skills directory (relative to home/project root)
212
222
  - `mcpConfigFile` - Path to MCP config file (relative to home/project root)
223
+ - `globalMcpConfigFile` - (Optional) Path to global MCP config relative to AppData/Application Support instead of home directory. Used for hosts like VSCode that store configs in platform-specific app directories:
224
+ - Windows: `%APPDATA%` (e.g., `C:\Users\name\AppData\Roaming`)
225
+ - macOS: `~/Library/Application Support`
226
+ - Linux: `$XDG_CONFIG_HOME` or `~/.config`
213
227
 
214
228
  ### Config Structure
215
229
 
@@ -265,7 +279,6 @@ your-project/
265
279
  ├── mcp.json # Codex global MCP config
266
280
  └── skills/ # Codex global skills
267
281
  ~/.github/
268
- ├── mcp.json # VSCode global MCP config
269
282
  └── skills/ # VSCode global skills
270
283
  ~/.codeium/windsurf/
271
284
  ├── mcp_config.json # Windsurf global MCP config
@@ -273,6 +286,10 @@ your-project/
273
286
  ~/.factory/
274
287
  ├── mcp.json # Factory global MCP config
275
288
  └── skills/ # Factory global skills
289
+
290
+ # VSCode MCP config lives in AppData/Application Support:
291
+ # Windows: %APPDATA%/Code/User/mcp.json
292
+ # macOS: ~/Library/Application Support/Code/User/mcp.json
276
293
  ```
277
294
 
278
295
  **Note:** Paths are fully customizable per IDE in `config/a11y.json`
package/config/a11y.json CHANGED
@@ -72,7 +72,8 @@
72
72
  "displayName": "VSCode",
73
73
  "mcpServerKey": "servers",
74
74
  "skillsFolder": ".github/skills",
75
- "mcpConfigFile": ".github/mcp.json"
75
+ "mcpConfigFile": ".github/mcp.json",
76
+ "globalMcpConfigFile": "Code/User/mcp.json"
76
77
  },
77
78
  {
78
79
  "id": "windsurf",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "a11y-devkit-deploy",
3
- "version": "0.8.5",
3
+ "version": "0.8.8",
4
4
  "description": "CLI to deploy a11y skills and MCP servers across IDEs",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/src/cli.js CHANGED
@@ -1,6 +1,26 @@
1
1
  import fs from "fs/promises";
2
2
  import path from "path";
3
3
  import { fileURLToPath } from "url";
4
+
5
+ // Override kleur's gray color to add italics for better readability
6
+ import kleur from "kleur";
7
+
8
+ // Use gray with italics (ANSI 90 for gray, 3 for italic, 23 to reset italic)
9
+ // This matches the subtitle color but with italic styling
10
+ const grayItalic = (text) => {
11
+ if (typeof text === 'string') {
12
+ return `\x1b[3m\x1b[90m${text}\x1b[39m\x1b[23m`;
13
+ }
14
+ // Return a function that applies both italic and gray
15
+ return (str) => `\x1b[3m\x1b[90m${str}\x1b[39m\x1b[23m`;
16
+ };
17
+
18
+ // Replace gray with italic gray for helper text
19
+ Object.defineProperty(kleur, 'gray', {
20
+ get() { return grayItalic; },
21
+ configurable: true
22
+ });
23
+
4
24
  import prompts from "prompts";
5
25
 
6
26
  import { header, info, warn, success, startSpinner, formatPath } from "./ui.js";
@@ -46,6 +66,9 @@ function formatOs(platformInfo) {
46
66
  }
47
67
 
48
68
  async function run() {
69
+ // Clear console for a cleaner start
70
+ console.clear();
71
+
49
72
  const projectRoot = process.cwd();
50
73
  const platformInfo = getPlatform();
51
74
  const config = await loadConfig();
package/src/paths.js CHANGED
@@ -32,19 +32,32 @@ function getAppSupportDir(platformInfo = getPlatform()) {
32
32
 
33
33
  function getHostApplicationPaths(projectRoot, platformInfo = getPlatform(), hostConfigs = []) {
34
34
  const home = os.homedir();
35
+ const appSupport = getAppSupportDir(platformInfo);
35
36
  const paths = {};
36
37
 
37
38
  for (const host of hostConfigs) {
38
- // Default paths for both local and global scope
39
+ // Default paths for local scope (relative to home or project)
39
40
  const skillsFolder = host.skillsFolder || `.${host.id}/skills`;
40
41
  const mcpConfigFile = host.mcpConfigFile || `.${host.id}/mcp.json`;
41
42
 
43
+ // MCP config: use AppData/Application Support if globalMcpConfigFile specified, otherwise home
44
+ // appSupport resolves to:
45
+ // - Windows: %APPDATA% (e.g., C:\Users\name\AppData\Roaming)
46
+ // - macOS: ~/Library/Application Support
47
+ // - Linux: $XDG_CONFIG_HOME or ~/.config
48
+ const globalMcpConfig = host.globalMcpConfigFile
49
+ ? path.join(appSupport, host.globalMcpConfigFile)
50
+ : path.join(home, mcpConfigFile);
51
+
52
+ // Skills always use home directory (skills live at project level, not in AppData)
53
+ const globalSkillsDir = path.join(home, skillsFolder);
54
+
42
55
  paths[host.id] = {
43
56
  name: host.displayName,
44
- mcpConfig: path.join(home, mcpConfigFile),
57
+ mcpConfig: globalMcpConfig,
45
58
  localMcpConfig: path.join(projectRoot, mcpConfigFile),
46
59
  mcpServerKey: host.mcpServerKey,
47
- skillsDir: path.join(home, skillsFolder),
60
+ skillsDir: globalSkillsDir,
48
61
  localSkillsDir: path.join(projectRoot, skillsFolder)
49
62
  };
50
63
  }
package/src/ui.js CHANGED
@@ -10,7 +10,7 @@ const bullets = {
10
10
  };
11
11
 
12
12
  function header(title, subtitle) {
13
- const line = subtitle ? `${pc.dim(subtitle)}` : "";
13
+ const line = subtitle ? `${pc.gray(subtitle)}` : "";
14
14
  const content = [pc.bold(title), line].filter(Boolean).join("\n");
15
15
  console.log(
16
16
  boxen(content, {
@@ -43,7 +43,7 @@ function startSpinner(text) {
43
43
  }
44
44
 
45
45
  function formatPath(value) {
46
- return pc.dim(value);
46
+ return pc.gray(value);
47
47
  }
48
48
 
49
49
  export {