@wowok/skills 1.2.7 → 1.3.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 CHANGED
@@ -1,19 +1,25 @@
1
1
  # WoWok Skills
2
2
 
3
- WoWok AI Skills for Claude Code, OpenAI Codex, Trae IDE, CodeBuddy, Cursor, and GitHub Copilot — Helping AI use WoWok MCP tools correctly.
3
+ WoWok AI Skills for Claude Code, OpenAI Codex, ChatGPT Desktop (Codex Mode), Trae IDE, CodeBuddy, Cursor, Windsurf, Qoder, Roo Code, and GitHub Copilot — Helping AI use WoWok MCP tools correctly.
4
4
 
5
5
  ## Supported AI Clients
6
6
 
7
- | Client | Skills Directory | Format |
8
- |--------|-----------------|--------|
9
- | **Claude Code** | `.claude/skills/` | SKILL.md (native) |
10
- | **OpenAI Codex** | `.codex/skills/` | SKILL.md (native) |
11
- | **Trae IDE** | `.agents/skills/` | SKILL.md (native) |
12
- | **CodeBuddy** | `.codebuddy/skills/` | SKILL.md (native) |
13
- | **Cursor IDE** | `.cursor/rules/` | `.mdc` (frontmatter adapted) |
14
- | **GitHub Copilot** | `.github/prompts/` | `.prompt.md` (plain markdown) |
7
+ | Client | Skills Directory | Format | MCP Support |
8
+ |--------|-----------------|--------|-------------|
9
+ | **Claude Code** | `.claude/skills/` | SKILL.md (native) | ✅ `~/.claude/settings.json` |
10
+ | **OpenAI Codex CLI** | `.codex/skills/` | SKILL.md (native) | ✅ `~/.codex/config.toml` |
11
+ | **ChatGPT Desktop (Codex Mode)** | `.codex/skills/` | SKILL.md (native) | ✅ Shares Codex CLI config (`~/.codex/config.toml`) |
12
+ | **Trae IDE** | `.agents/skills/` | SKILL.md (native) | ⚙️ IDE-managed via `~/.trae-cn/mcps/` |
13
+ | **CodeBuddy** | `.codebuddy/skills/` | SKILL.md (native) | ✅ `~/.codebuddy/mcp.json` |
14
+ | **Cursor IDE** | `.cursor/rules/` | `.mdc` (frontmatter adapted) | ✅ Project-level `.cursor/mcp.json` |
15
+ | **Windsurf** | `.windsurf/skills/` | SKILL.md (native) | ✅ `~/.codeium/windsurf/mcp_config.json` |
16
+ | **Qoder** | `.qoder/skills/` | SKILL.md (native) | ✅ `~/.qoder/mcp-settings.json` (project: `.qoder/mcp.json`) |
17
+ | **Roo Code** | `.roo/skills/` | SKILL.md (native) | ✅ `~/.roo/mcp_settings.json` (project: `.roo/mcp.json`) |
18
+ | **GitHub Copilot** | `.github/prompts/` | `.prompt.md` (plain markdown) | ✅ `~/.copilot/mcp-config.json` |
15
19
 
16
20
  > **Format notes**: For Cursor, the YAML frontmatter is adapted to `description` + `alwaysApply`. For Copilot, frontmatter is stripped — pure Markdown instructions. Codex follows the [Agent Skills](https://agentskills.io) open standard natively. All other clients use the native SKILL.md format directly.
21
+ >
22
+ > **ChatGPT Desktop (Chat Mode)** does **not** support local skills or stdio MCP. Only the **Codex Mode** (built into ChatGPT Desktop) inherits Codex CLI's skills and MCP configuration. Full MCP (write operations) in ChatGPT Desktop requires **Business, Enterprise, or Edu** plans (beta).
17
23
 
18
24
 
19
25
  ## How It Works
@@ -23,13 +29,17 @@ Each skill is a `SKILL.md` file with YAML frontmatter. AI clients discover them
23
29
  ```
24
30
  npm install -g @wowok/skills
25
31
 
26
- └── postinstall ──→ Copies SKILL.md to ~/.claude/skills/wowok-*/
27
- AI discovers them on next session ✅
32
+ ├── postinstall ──→ Copies SKILL.md to ~/.claude/skills/wowok-*/
33
+ └── auto MCP ──→ Installs/upgrades @wowok/agent-mcp
34
+ Registers MCP in client config
35
+ Restarts MCP server process
36
+ AI discovers on next session ✅
28
37
 
29
38
  # For other clients, set the WOWOK_SKILLS_TARGETS env var:
30
39
  WOWOK_SKILLS_TARGETS=claude,agents npm install -g @wowok/skills
31
40
 
32
- └── postinstall ──→ Copies to ~/.claude/skills/ AND ~/.agents/skills/
41
+ ├── postinstall ──→ Copies to ~/.claude/skills/ AND ~/.agents/skills/
42
+ └── auto MCP ──→ Same MCP install/register/restart for each client
33
43
  ```
34
44
 
35
45
  **Two loading modes:**
@@ -43,7 +53,9 @@ WOWOK_SKILLS_TARGETS=claude,agents npm install -g @wowok/skills
43
53
 
44
54
  ### 1. Prerequisites
45
55
 
46
- Setup WoWok Agent (MCP Server) in your Claude Code MCP configuration:
56
+ The `@wowok/skills` package will **automatically install and configure** the `@wowok/agent-mcp` MCP server for you. No manual setup needed.
57
+
58
+ To configure MCP manually for a specific client, see the [MCP Support](#supported-ai-clients) table above. The standard WoWok MCP server entry is:
47
59
 
48
60
  ```json
49
61
  {
@@ -68,7 +80,7 @@ npm install -g @wowok/skills
68
80
  WOWOK_SKILLS_TARGETS=claude,agents npm install -g @wowok/skills
69
81
 
70
82
  # All supported clients:
71
- WOWOK_SKILLS_TARGETS=claude,codex,agents,codebuddy,cursor,copilot npm install -g @wowok/skills
83
+ WOWOK_SKILLS_TARGETS=claude,codex,agents,codebuddy,cursor,windsurf,qoder,roo,copilot npm install -g @wowok/skills
72
84
  ```
73
85
 
74
86
  This copies skills to the respective `~/.*/skills/` directories. They will be available in your next session.
@@ -82,7 +94,7 @@ cd your-project
82
94
  # Claude Code (default):
83
95
  wowok-skills init
84
96
 
85
- # OpenAI Codex:
97
+ # OpenAI Codex / ChatGPT Desktop (Codex Mode):
86
98
  wowok-skills init --target codex
87
99
 
88
100
  # Trae IDE:
@@ -145,15 +157,20 @@ wowok-skills uninit
145
157
  | `wowok-skills role <role>` | — | List skills by role |
146
158
  | `wowok-skills recommend <intent>` | — | Recommend skills by intent |
147
159
  | `wowok-skills init` | Project | Install to `.claude/skills/` (default) |
148
- | `wowok-skills init --target codex` | Project | Install to `.codex/skills/` (Codex) |
160
+ | `wowok-skills init --target codex` | Project | Install to `.codex/skills/` (Codex / ChatGPT Desktop) |
149
161
  | `wowok-skills init --target agents` | Project | Install to `.agents/skills/` (Trae) |
150
162
  | `wowok-skills init --target cursor` | Project | Install to `.cursor/rules/` (Cursor) |
151
163
  | `wowok-skills init --target copilot` | Project | Install to `.github/prompts/` (Copilot) |
152
- | `wowok-skills init --target all` | Project | Install to all 6 clients |
164
+ | `wowok-skills init --target windsurf` | Project | Install to `.windsurf/skills/` (Windsurf) |
165
+ | `wowok-skills init --target qoder` | Project | Install to `.qoder/skills/` (Qoder) |
166
+ | `wowok-skills init --target roo` | Project | Install to `.roo/skills/` (Roo Code) |
167
+ | `wowok-skills init --target all` | Project | Install to all 10 clients |
153
168
  | `wowok-skills uninit` | Project | Remove from `.claude/skills/` (default) |
154
169
  | `wowok-skills uninit --target all` | Project | Remove from all clients |
155
170
 
156
171
  > **Note**: `init` / `uninit` require `@wowok/skills` to be globally installed first.
172
+ >
173
+ > **MCP auto-install**: `npm install -g @wowok/skills` (postinstall) and `wowok-skills init` automatically install/upgrade the `@wowok/agent-mcp` MCP server and register it in each client's config. Set `WOWOK_SKILLS_NO_MCP=1` to skip MCP management.
157
174
 
158
175
  ## Programmatic API
159
176
 
package/dist/cli.js CHANGED
@@ -36,6 +36,8 @@ var __importStar = (this && this.__importStar) || (function () {
36
36
  Object.defineProperty(exports, "__esModule", { value: true });
37
37
  const fs = __importStar(require("fs"));
38
38
  const path = __importStar(require("path"));
39
+ const child_process_1 = require("child_process");
40
+ const os = __importStar(require("os"));
39
41
  const skills_1 = require("./skills");
40
42
  const types_1 = require("./types");
41
43
  /**
@@ -166,6 +168,280 @@ function convertSkillContent(content, target, skillDir) {
166
168
  return convertToCopilot(content);
167
169
  return content;
168
170
  }
171
+ // =========================================================================
172
+ // MCP Server Management — shared by postinstall and `wowok-skills init`
173
+ // =========================================================================
174
+ const MCP_PACKAGE = '@wowok/agent-mcp';
175
+ const MCP_TARGET_CONFIGS = {
176
+ claude: {
177
+ configPath: path.join(os.homedir(), '.claude', 'settings.json'),
178
+ merge: (config) => {
179
+ config.mcpServers = config.mcpServers || {};
180
+ config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
181
+ return config;
182
+ },
183
+ },
184
+ codebuddy: {
185
+ configPath: path.join(os.homedir(), '.codebuddy', 'mcp.json'),
186
+ merge: (config) => {
187
+ config.mcpServers = config.mcpServers || {};
188
+ config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
189
+ return config;
190
+ },
191
+ },
192
+ windsurf: {
193
+ configPath: path.join(os.homedir(), '.codeium', 'windsurf', 'mcp_config.json'),
194
+ merge: (config) => {
195
+ config.mcpServers = config.mcpServers || {};
196
+ config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
197
+ return config;
198
+ },
199
+ },
200
+ qoder: {
201
+ configPath: process.platform === 'win32'
202
+ ? path.join(process.env.APPDATA || path.join(os.homedir(), 'AppData', 'Roaming'), 'Qoder', 'mcp-settings.json')
203
+ : path.join(os.homedir(), '.config', 'qoder', 'mcp-settings.json'),
204
+ merge: (config) => {
205
+ config.mcpServers = config.mcpServers || {};
206
+ config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
207
+ return config;
208
+ },
209
+ },
210
+ roo: {
211
+ configPath: path.join(os.homedir(), '.roo', 'mcp_settings.json'),
212
+ merge: (config) => {
213
+ config.mcpServers = config.mcpServers || {};
214
+ config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
215
+ return config;
216
+ },
217
+ },
218
+ // trae / agents: IDE-managed MCP via ~/.trae-cn/mcps/ directory structure
219
+ trae: null,
220
+ agents: null,
221
+ // cursor: project-level only
222
+ cursor: null,
223
+ // copilot: user-level MCP config (Copilot CLI)
224
+ copilot: {
225
+ configPath: path.join(os.homedir(), '.copilot', 'mcp-config.json'),
226
+ merge: (config) => {
227
+ config.mcpServers = config.mcpServers || {};
228
+ config.mcpServers.wowok = { type: 'local', command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
229
+ return config;
230
+ },
231
+ },
232
+ // codex: global TOML config (~/.codex/config.toml)
233
+ codex: {
234
+ configPath: path.join(os.homedir(), '.codex', 'config.toml'),
235
+ format: 'toml',
236
+ },
237
+ };
238
+ /** Project-level MCP configs (written relative to cwd). */
239
+ const MCP_PROJECT_CONFIGS = {
240
+ cursor: {
241
+ configPath: '.cursor/mcp.json',
242
+ merge: (config) => {
243
+ config.mcpServers = config.mcpServers || {};
244
+ config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
245
+ return config;
246
+ },
247
+ },
248
+ windsurf: {
249
+ configPath: '.windsurf/mcp.json',
250
+ merge: (config) => {
251
+ config.mcpServers = config.mcpServers || {};
252
+ config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
253
+ return config;
254
+ },
255
+ },
256
+ trae: {
257
+ configPath: '.trae/mcp.json',
258
+ merge: (config) => {
259
+ config.mcpServers = config.mcpServers || {};
260
+ config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
261
+ return config;
262
+ },
263
+ },
264
+ agents: {
265
+ configPath: '.trae/mcp.json',
266
+ merge: (config) => {
267
+ config.mcpServers = config.mcpServers || {};
268
+ config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
269
+ return config;
270
+ },
271
+ },
272
+ qoder: {
273
+ configPath: '.qoder/mcp.json',
274
+ merge: (config) => {
275
+ config.mcpServers = config.mcpServers || {};
276
+ config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
277
+ return config;
278
+ },
279
+ },
280
+ roo: {
281
+ configPath: '.roo/mcp.json',
282
+ merge: (config) => {
283
+ config.mcpServers = config.mcpServers || {};
284
+ config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
285
+ return config;
286
+ },
287
+ },
288
+ };
289
+ function getInstalledMcpVersion() {
290
+ try {
291
+ const output = (0, child_process_1.execSync)(`npm ls -g ${MCP_PACKAGE} --depth=0 --json`, {
292
+ encoding: 'utf-8',
293
+ stdio: 'pipe',
294
+ timeout: 15000,
295
+ });
296
+ const parsed = JSON.parse(output);
297
+ const pkg = parsed.dependencies?.[MCP_PACKAGE] || parsed[MCP_PACKAGE];
298
+ return pkg?.version || null;
299
+ }
300
+ catch {
301
+ return null;
302
+ }
303
+ }
304
+ function getLatestMcpVersion() {
305
+ try {
306
+ const output = (0, child_process_1.execSync)(`npm view ${MCP_PACKAGE} version`, {
307
+ encoding: 'utf-8',
308
+ stdio: 'pipe',
309
+ timeout: 15000,
310
+ });
311
+ return output.trim();
312
+ }
313
+ catch {
314
+ return null;
315
+ }
316
+ }
317
+ function semverMajor(version) {
318
+ if (!version)
319
+ return 0;
320
+ const parts = version.split('.');
321
+ return parseInt(parts[0], 10) || 0;
322
+ }
323
+ function npmInstallGlobal(pkg, retries = 2) {
324
+ for (let attempt = 1; attempt <= retries; attempt++) {
325
+ try {
326
+ (0, child_process_1.execSync)(`npm install -g ${pkg}`, { stdio: 'inherit', timeout: 120000 });
327
+ return true;
328
+ }
329
+ catch (err) {
330
+ if (attempt < retries) {
331
+ console.log(`[wowok-skills] npm install attempt ${attempt} failed, retrying...`);
332
+ const waitCmd = process.platform === 'win32'
333
+ ? 'ping -n 3 127.0.0.1 >nul'
334
+ : 'sleep 2';
335
+ (0, child_process_1.execSync)(waitCmd, { stdio: 'pipe', timeout: 5000 });
336
+ }
337
+ else {
338
+ console.error(`[wowok-skills] npm install failed after ${retries} attempts: ${err.message}`);
339
+ return false;
340
+ }
341
+ }
342
+ }
343
+ return false;
344
+ }
345
+ function ensureMcpServer() {
346
+ const currentVersion = getInstalledMcpVersion();
347
+ const latestVersion = getLatestMcpVersion();
348
+ if (currentVersion) {
349
+ console.log(`[wowok-skills] MCP server ${MCP_PACKAGE} v${currentVersion} found.`);
350
+ if (!latestVersion) {
351
+ console.log(`[wowok-skills] Cannot check latest version (offline or registry unreachable). Keeping v${currentVersion}.`);
352
+ return false;
353
+ }
354
+ if (currentVersion === latestVersion) {
355
+ console.log(`[wowok-skills] MCP server is up to date (v${currentVersion}).`);
356
+ return false;
357
+ }
358
+ const currentMajor = semverMajor(currentVersion);
359
+ const latestMajor = semverMajor(latestVersion);
360
+ if (latestMajor > currentMajor) {
361
+ console.warn(`[wowok-skills] ⚠ WARNING: Major version bump detected v${currentVersion} → v${latestVersion}.`);
362
+ console.warn(`[wowok-skills] Skipping auto-upgrade to avoid breaking changes.`);
363
+ console.warn(`[wowok-skills] To upgrade manually: npm install -g ${MCP_PACKAGE}@latest`);
364
+ return false;
365
+ }
366
+ console.log(`[wowok-skills] Upgrading MCP server v${currentVersion} → v${latestVersion}...`);
367
+ if (npmInstallGlobal(`${MCP_PACKAGE}@latest`)) {
368
+ console.log(`[wowok-skills] MCP server upgraded to v${latestVersion}.`);
369
+ return true;
370
+ }
371
+ console.error(`[wowok-skills] MCP server upgrade FAILED. Keeping v${currentVersion}.`);
372
+ return false;
373
+ }
374
+ console.log(`[wowok-skills] Installing MCP server ${MCP_PACKAGE}...`);
375
+ if (npmInstallGlobal(MCP_PACKAGE)) {
376
+ console.log(`[wowok-skills] MCP server installed.`);
377
+ return true;
378
+ }
379
+ console.error(`[wowok-skills] MCP server installation FAILED.`);
380
+ return false;
381
+ }
382
+ function writeMcpConfig(target, configMap, cwd) {
383
+ const cfg = configMap[target];
384
+ if (!cfg) {
385
+ console.log(`[wowok-skills] MCP config: ${target} does not support external MCP registration (skipped).`);
386
+ return false;
387
+ }
388
+ try {
389
+ const configPath = cwd ? path.join(cwd, cfg.configPath) : cfg.configPath;
390
+ // ── TOML format (Codex CLI uses ~/.codex/config.toml) ──────────────
391
+ if (cfg.format === 'toml') {
392
+ const tomlEntry = '\n[mcp_servers.wowok]\ncommand = "npx"\nargs = ["-y", "@wowok/agent-mcp"]\n';
393
+ let content = '';
394
+ if (fs.existsSync(configPath)) {
395
+ content = fs.readFileSync(configPath, 'utf-8');
396
+ }
397
+ if (content.includes('[mcp_servers.wowok]')) {
398
+ console.log(`[wowok-skills] MCP config already up to date: ${configPath}`);
399
+ return false;
400
+ }
401
+ fs.mkdirSync(path.dirname(configPath), { recursive: true });
402
+ fs.writeFileSync(configPath, content + tomlEntry, 'utf-8');
403
+ console.log(`[wowok-skills] MCP config written: ${configPath}`);
404
+ return true;
405
+ }
406
+ // ── JSON format (all other clients) ────────────────────────────────
407
+ let config = {};
408
+ if (fs.existsSync(configPath)) {
409
+ config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
410
+ }
411
+ const before = JSON.stringify(config);
412
+ config = cfg.merge(config);
413
+ const after = JSON.stringify(config);
414
+ if (before !== after) {
415
+ fs.mkdirSync(path.dirname(configPath), { recursive: true });
416
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');
417
+ console.log(`[wowok-skills] MCP config written: ${configPath}`);
418
+ return true;
419
+ }
420
+ console.log(`[wowok-skills] MCP config already up to date: ${configPath}`);
421
+ return false;
422
+ }
423
+ catch (err) {
424
+ console.error(`[wowok-skills] ERROR writing MCP config for ${target}: ${err.message}`);
425
+ return false;
426
+ }
427
+ }
428
+ function restartMcpServer() {
429
+ try {
430
+ if (process.platform === 'win32') {
431
+ const psScript = 'Get-CimInstance Win32_Process -Filter "Name=\'node.exe\' AND CommandLine LIKE \'%wowok%agent-mcp%\'" | ' +
432
+ 'ForEach-Object { Stop-Process -Id $_.ProcessId -Force -ErrorAction SilentlyContinue }';
433
+ const encoded = Buffer.from(psScript, 'utf16le').toString('base64');
434
+ (0, child_process_1.execSync)(`powershell -NoProfile -EncodedCommand ${encoded}`, { stdio: 'pipe', timeout: 10000 });
435
+ }
436
+ else {
437
+ (0, child_process_1.execSync)('pkill -f "wowok.*agent-mcp" 2>/dev/null || true', { stdio: 'pipe', timeout: 5000 });
438
+ }
439
+ console.log('[wowok-skills] MCP server process terminated (IDE will auto-restart).');
440
+ }
441
+ catch {
442
+ console.log('[wowok-skills] No running MCP server process found. Start your IDE to launch it.');
443
+ }
444
+ }
169
445
  function getTargets(targetArg) {
170
446
  if (!targetArg || targetArg === 'claude') {
171
447
  return ['claude'];
@@ -177,10 +453,10 @@ function getTargets(targetArg) {
177
453
  return [targetArg];
178
454
  }
179
455
  console.error(`Invalid target: ${targetArg}`);
180
- console.error(`Valid targets: claude, codex, agents, codebuddy, cursor, copilot, all`);
456
+ console.error(`Valid targets: claude, cursor, windsurf, codebuddy, codex, trae, qoder, roo, copilot, all`);
181
457
  process.exit(1);
182
458
  }
183
- function cmdInit(targetArg) {
459
+ function cmdInit(targetArg, withMcp) {
184
460
  const cwd = process.cwd();
185
461
  const pkgRoot = getPackageRoot();
186
462
  const targets = getTargets(targetArg);
@@ -215,6 +491,28 @@ function cmdInit(targetArg) {
215
491
  if (targets.length > 1) {
216
492
  console.log(`[wowok-skills] Total: ${totalCount} skills across ${targets.length} clients.`);
217
493
  }
494
+ // ─── MCP setup (default: enabled, use --no-mcp to skip) ────────────
495
+ if (withMcp) {
496
+ console.log('');
497
+ console.log('[wowok-skills] Setting up MCP server (use --no-mcp to skip)...');
498
+ const mcpChanged = ensureMcpServer();
499
+ console.log('[wowok-skills] Registering MCP server in client config...');
500
+ for (const target of targets) {
501
+ // Global-level config (Claude, CodeBuddy, Windsurf, Qoder, Roo)
502
+ writeMcpConfig(target, MCP_TARGET_CONFIGS);
503
+ // Project-level config (Cursor, Windsurf, Trae, Qoder, Roo)
504
+ writeMcpConfig(target, MCP_PROJECT_CONFIGS, cwd);
505
+ }
506
+ if (mcpChanged) {
507
+ console.log('[wowok-skills] Restarting MCP server...');
508
+ restartMcpServer();
509
+ }
510
+ console.log('[wowok-skills] MCP server setup complete.');
511
+ }
512
+ else {
513
+ console.log('');
514
+ console.log('[wowok-skills] --no-mcp: MCP server setup skipped (skills only).');
515
+ }
218
516
  }
219
517
  function cmdUninit(targetArg) {
220
518
  const cwd = process.cwd();
@@ -316,16 +614,20 @@ function printUsage() {
316
614
  console.log(' get <name> Show skill details');
317
615
  console.log(' role <role> List skills for a role (customer|provider|arbitrator|shared)');
318
616
  console.log(' recommend <intent> Recommend skills based on user intent');
319
- console.log(' init [--target <t>] Install skills to project (default: .claude/skills/)');
617
+ console.log(' init [--target <t>] [--no-mcp] Install skills to project (default: .claude/skills/ with MCP)');
618
+ console.log(' --no-mcp Skip MCP server setup (skills only)');
320
619
  console.log(' uninit [--target <t>] Remove skills from project');
321
620
  console.log('');
322
621
  console.log('Targets:');
323
- console.log(' claude .claude/skills/ (Claude Code, default)');
324
- console.log(' codex .codex/skills/ (OpenAI Codex)');
325
- console.log(' agents .agents/skills/ (Trae IDE)');
326
- console.log(' codebuddy .codebuddy/skills/ (CodeBuddy)');
622
+ console.log(' claude .claude/skills/ (Claude Code)');
327
623
  console.log(' cursor .cursor/rules/ (Cursor IDE)');
328
- console.log(' copilot .github/prompts/ (GitHub Copilot)');
624
+ console.log(' windsurf .windsurf/skills/ (Windsurf / Codeium)');
625
+ console.log(' codebuddy .codebuddy/skills/ (CodeBuddy)');
626
+ console.log(' codex .codex/skills/ (OpenAI Codex, no MCP)');
627
+ console.log(' trae .agents/skills/ (Trae CN & Trae Work)');
628
+ console.log(' qoder .qoder/skills/ (Qoder / Qoder CN)');
629
+ console.log(' roo .roo/skills/ (Roo Code)');
630
+ console.log(' copilot .github/prompts/ (GitHub Copilot, no MCP)');
329
631
  console.log(' all All of the above');
330
632
  console.log('');
331
633
  console.log('Examples:');
@@ -336,6 +638,8 @@ function printUsage() {
336
638
  console.log(' wowok-skills init');
337
639
  console.log(' wowok-skills init --target agents');
338
640
  console.log(' wowok-skills init --target all');
641
+ console.log(' wowok-skills init --no-mcp');
642
+ console.log(' wowok-skills init --target cursor --no-mcp');
339
643
  }
340
644
  function main() {
341
645
  const args = process.argv.slice(2);
@@ -369,9 +673,11 @@ function main() {
369
673
  }
370
674
  cmdRecommend(args.slice(1).join(' '));
371
675
  break;
372
- case 'init':
373
- cmdInit(parseTargetArg(args.slice(1)));
676
+ case 'init': {
677
+ const withMcp = !args.includes('--no-mcp');
678
+ cmdInit(parseTargetArg(args.slice(1)), withMcp);
374
679
  break;
680
+ }
375
681
  case 'uninit':
376
682
  cmdUninit(parseTargetArg(args.slice(1)));
377
683
  break;
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -8,7 +8,7 @@ export type SkillRole = 'customer' | 'provider' | 'arbitrator' | 'shared';
8
8
  * - 'on-demand': Loaded only when description matches task
9
9
  */
10
10
  export type LoadingMode = 'always' | 'on-demand';
11
- export type ClientTarget = 'claude' | 'codex' | 'agents' | 'codebuddy' | 'cursor' | 'copilot' | 'all';
11
+ export type ClientTarget = 'claude' | 'cursor' | 'windsurf' | 'codebuddy' | 'codex' | 'trae' | 'qoder' | 'roo' | 'agents' | 'copilot' | 'all';
12
12
  export declare const CLIENT_SKILL_DIRS: Record<Exclude<ClientTarget, 'all'>, string>;
13
13
  export declare const CLIENT_FILE_EXT: Record<Exclude<ClientTarget, 'all'>, string>;
14
14
  export declare const ALL_CLIENT_TARGETS: Exclude<ClientTarget, 'all'>[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,QAAQ,CAAC;AAE1E;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEjD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAC;AAEtG,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM,CAO1E,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM,CAOxE,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,EAAoE,CAAC;AAElI;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,IAAI,EAAE,SAAS,CAAC;IAChB,mBAAmB;IACnB,OAAO,EAAE,WAAW,CAAC;IACrB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,aAAa,GAAG,QAAQ,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,QAAQ,CAAC;AAE1E;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEjD,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,WAAW,GACX,OAAO,GACP,MAAM,GACN,OAAO,GACP,KAAK,GACL,QAAQ,GACR,SAAS,GACT,KAAK,CAAC;AAEV,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM,CAW1E,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM,CAWxE,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,EAE5D,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,IAAI,EAAE,SAAS,CAAC;IAChB,mBAAmB;IACnB,OAAO,EAAE,WAAW,CAAC;IACrB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,aAAa,GAAG,QAAQ,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB"}
package/dist/types.js CHANGED
@@ -3,19 +3,29 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ALL_CLIENT_TARGETS = exports.CLIENT_FILE_EXT = exports.CLIENT_SKILL_DIRS = void 0;
4
4
  exports.CLIENT_SKILL_DIRS = {
5
5
  claude: '.claude/skills',
6
+ cursor: '.cursor/rules',
7
+ windsurf: '.windsurf/skills',
8
+ codebuddy: '.codebuddy/skills',
6
9
  codex: '.codex/skills',
10
+ trae: '.agents/skills',
11
+ qoder: '.qoder/skills',
12
+ roo: '.roo/skills',
7
13
  agents: '.agents/skills',
8
- codebuddy: '.codebuddy/skills',
9
- cursor: '.cursor/rules',
10
14
  copilot: '.github/prompts',
11
15
  };
12
16
  exports.CLIENT_FILE_EXT = {
13
17
  claude: '.md',
18
+ cursor: '.mdc',
19
+ windsurf: '.md',
20
+ codebuddy: '.md',
14
21
  codex: '.md',
22
+ trae: '.md',
23
+ qoder: '.md',
24
+ roo: '.md',
15
25
  agents: '.md',
16
- codebuddy: '.md',
17
- cursor: '.mdc',
18
26
  copilot: '.prompt.md',
19
27
  };
20
- exports.ALL_CLIENT_TARGETS = ['claude', 'codex', 'agents', 'codebuddy', 'cursor', 'copilot'];
28
+ exports.ALL_CLIENT_TARGETS = [
29
+ 'claude', 'cursor', 'windsurf', 'codebuddy', 'codex', 'trae', 'qoder', 'roo', 'copilot',
30
+ ];
21
31
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAca,QAAA,iBAAiB,GAAiD;IAC7E,MAAM,EAAE,gBAAgB;IACxB,KAAK,EAAE,eAAe;IACtB,MAAM,EAAE,gBAAgB;IACxB,SAAS,EAAE,mBAAmB;IAC9B,MAAM,EAAE,eAAe;IACvB,OAAO,EAAE,iBAAiB;CAC3B,CAAC;AAEW,QAAA,eAAe,GAAiD;IAC3E,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,SAAS,EAAE,KAAK;IAChB,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,YAAY;CACtB,CAAC;AAEW,QAAA,kBAAkB,GAAmC,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAyBa,QAAA,iBAAiB,GAAiD;IAC7E,MAAM,EAAE,gBAAgB;IACxB,MAAM,EAAE,eAAe;IACvB,QAAQ,EAAE,kBAAkB;IAC5B,SAAS,EAAE,mBAAmB;IAC9B,KAAK,EAAE,eAAe;IACtB,IAAI,EAAE,gBAAgB;IACtB,KAAK,EAAE,eAAe;IACtB,GAAG,EAAE,aAAa;IAClB,MAAM,EAAE,gBAAgB;IACxB,OAAO,EAAE,iBAAiB;CAC3B,CAAC;AAEW,QAAA,eAAe,GAAiD;IAC3E,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,MAAM;IACd,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,KAAK;IAChB,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,KAAK;IACZ,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,YAAY;CACtB,CAAC;AAEW,QAAA,kBAAkB,GAAmC;IAChE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS;CACxF,CAAC"}
@@ -420,7 +420,7 @@ Create a Contact object to enable encrypted communication between customers and
420
420
  "tool": "messenger_operation",
421
421
  "data": {
422
422
  "messenger": {
423
- "m": "myshop_merchant_messenger",
423
+ "enabled": true,
424
424
  "name_or_account": "myshop_merchant"
425
425
  }
426
426
  }
@@ -1050,7 +1050,7 @@ After creating the order, the customer sends their shipping address and contact
1050
1050
  "tool": "messenger_operation",
1051
1051
  "data": {
1052
1052
  "messenger": {
1053
- "m": "customer_messenger",
1053
+ "enabled": true,
1054
1054
  "name_or_account": "myshop_customer"
1055
1055
  }
1056
1056
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wowok/skills",
3
- "version": "1.2.7",
3
+ "version": "1.3.0",
4
4
  "description": "WoWok AI Skills for Claude and other AI assistants - Helping AI use WoWok MCP tools correctly",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -6,13 +6,15 @@
6
6
  * preuninstall → remove SKILL.md folders from all installed client dirs
7
7
  *
8
8
  * Environment variables:
9
- * WOWOK_SKILLS_TARGETS Comma-separated client targets (claude,codex,agents,codebuddy,cursor,copilot)
10
- * Defaults to "claude". Example: "claude,agents,cursor"
9
+ * WOWOK_SKILLS_TARGETS Comma-separated client targets (claude,cursor,windsurf,codebuddy,codex,trae,qoder,roo,copilot)
10
+ * Defaults to "claude". Example: "claude,cursor,trae"
11
+ * WOWOK_SKILLS_NO_MCP Set to "1" or "true" to skip MCP server management (default: auto-install MCP)
11
12
  */
12
13
 
13
14
  const fs = require('fs');
14
15
  const path = require('path');
15
16
  const os = require('os');
17
+ const { execSync } = require('child_process');
16
18
 
17
19
  const SKILL_DIRS = [
18
20
  'wowok-provider',
@@ -32,10 +34,14 @@ const SKILL_DIRS = [
32
34
 
33
35
  const CLIENT_DIRS = {
34
36
  claude: path.join(os.homedir(), '.claude', 'skills'),
35
- codex: path.join(os.homedir(), '.codex', 'skills'),
36
- agents: path.join(os.homedir(), '.agents', 'skills'),
37
- codebuddy: path.join(os.homedir(), '.codebuddy', 'skills'),
38
37
  cursor: path.join(os.homedir(), '.cursor', 'rules'),
38
+ windsurf: path.join(os.homedir(), '.windsurf', 'skills'),
39
+ codebuddy: path.join(os.homedir(), '.codebuddy', 'skills'),
40
+ codex: path.join(os.homedir(), '.codex', 'skills'),
41
+ trae: path.join(os.homedir(), '.agents', 'skills'),
42
+ qoder: path.join(os.homedir(), '.qoder', 'skills'),
43
+ roo: path.join(os.homedir(), '.roo', 'skills'),
44
+ agents: path.join(os.homedir(), '.agents', 'skills'), // deprecated alias
39
45
  copilot: path.join(os.homedir(), '.github', 'prompts'),
40
46
  };
41
47
 
@@ -188,6 +194,7 @@ function getTargets() {
188
194
 
189
195
  function main() {
190
196
  const event = process.env.npm_lifecycle_event || '';
197
+ const skipMcp = process.env.WOWOK_SKILLS_NO_MCP === '1' || process.env.WOWOK_SKILLS_NO_MCP === 'true';
191
198
 
192
199
  if (event === 'postinstall') {
193
200
  const targets = getTargets();
@@ -202,6 +209,34 @@ function main() {
202
209
  }
203
210
 
204
211
  console.log(`[wowok-skills] Done — ${total} skills installed across ${targets.length} client(s).`);
212
+
213
+ // ─── MCP Server Management ───────────────────────────────────────
214
+ console.log('');
215
+
216
+ if (skipMcp) {
217
+ console.log('[wowok-skills] WOWOK_SKILLS_NO_MCP=1 — skipping MCP server management.');
218
+ } else {
219
+ console.log('[wowok-skills] Checking MCP server...');
220
+
221
+ // Step 1: Install or upgrade the MCP server
222
+ const mcpChanged = ensureMcpServer();
223
+
224
+ // Step 2: Write MCP config for each target client
225
+ console.log('[wowok-skills] Registering MCP server in client config...');
226
+ for (const target of targets) {
227
+ writeMcpConfig(target);
228
+ }
229
+
230
+ // Step 3: Restart MCP server so the new version takes effect
231
+ if (mcpChanged) {
232
+ console.log('[wowok-skills] Restarting MCP server (so IDE picks up the new version)...');
233
+ restartMcpServer();
234
+ } else {
235
+ console.log('[wowok-skills] MCP server unchanged — no restart needed.');
236
+ }
237
+
238
+ console.log('[wowok-skills] MCP server setup complete.');
239
+ }
205
240
  } else if (event === 'preuninstall') {
206
241
  const targets = Object.keys(CLIENT_DIRS);
207
242
  console.log('[wowok-skills] Removing skills from all client dirs...');
@@ -229,4 +264,306 @@ function countExisting(targetDir) {
229
264
  return count;
230
265
  }
231
266
 
267
+ // =========================================================================
268
+ // MCP Server Management — auto-install, upgrade, config, and restart
269
+ // =========================================================================
270
+
271
+ /** MCP server npm package name */
272
+ const MCP_PACKAGE = '@wowok/agent-mcp';
273
+
274
+ /**
275
+ * MCP config entries per client target.
276
+ * null means the client does not support MCP or manages it internally.
277
+ */
278
+ const MCP_TARGET_CONFIGS = {
279
+ claude: {
280
+ configPath: path.join(os.homedir(), '.claude', 'settings.json'),
281
+ merge: (config) => {
282
+ config.mcpServers = config.mcpServers || {};
283
+ config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
284
+ return config;
285
+ }
286
+ },
287
+ codebuddy: {
288
+ configPath: path.join(os.homedir(), '.codebuddy', 'mcp.json'),
289
+ merge: (config) => {
290
+ config.mcpServers = config.mcpServers || {};
291
+ config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
292
+ return config;
293
+ }
294
+ },
295
+ windsurf: {
296
+ configPath: path.join(os.homedir(), '.codeium', 'windsurf', 'mcp_config.json'),
297
+ merge: (config) => {
298
+ config.mcpServers = config.mcpServers || {};
299
+ config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
300
+ return config;
301
+ }
302
+ },
303
+ qoder: {
304
+ configPath: process.platform === 'win32'
305
+ ? path.join(process.env.APPDATA || path.join(os.homedir(), 'AppData', 'Roaming'), 'Qoder', 'mcp-settings.json')
306
+ : path.join(os.homedir(), '.config', 'qoder', 'mcp-settings.json'),
307
+ merge: (config) => {
308
+ config.mcpServers = config.mcpServers || {};
309
+ config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
310
+ return config;
311
+ }
312
+ },
313
+ roo: {
314
+ configPath: path.join(os.homedir(), '.roo', 'mcp_settings.json'),
315
+ merge: (config) => {
316
+ config.mcpServers = config.mcpServers || {};
317
+ config.mcpServers.wowok = { command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
318
+ return config;
319
+ }
320
+ },
321
+ // trae / agents: IDE-managed MCP via ~/.trae-cn/mcps/ directory structure — skip global config
322
+ trae: null,
323
+ agents: null,
324
+ // cursor: MCP config is project-level, handled by `wowok-skills init` in project dir
325
+ cursor: null,
326
+ // copilot: user-level MCP config (Copilot CLI)
327
+ copilot: {
328
+ configPath: path.join(os.homedir(), '.copilot', 'mcp-config.json'),
329
+ merge: (config) => {
330
+ config.mcpServers = config.mcpServers || {};
331
+ config.mcpServers.wowok = { type: 'local', command: 'npx', args: ['-y', '@wowok/agent-mcp'] };
332
+ return config;
333
+ }
334
+ },
335
+ // codex: global TOML config (~/.codex/config.toml)
336
+ codex: {
337
+ configPath: path.join(os.homedir(), '.codex', 'config.toml'),
338
+ format: 'toml',
339
+ },
340
+ };
341
+
342
+ /**
343
+ * Parse a semver string to its major version number.
344
+ * Returns 0 for invalid/missing versions.
345
+ */
346
+ function semverMajor(version) {
347
+ if (!version) return 0;
348
+ const parts = version.split('.');
349
+ return parseInt(parts[0], 10) || 0;
350
+ }
351
+
352
+ /**
353
+ * Get the currently installed global version of the MCP server.
354
+ * Uses `npm ls -g <package>` (targeted, no tree scan) for speed.
355
+ * Returns null if not installed.
356
+ */
357
+ function getInstalledMcpVersion() {
358
+ try {
359
+ // npm ls -g <pkg> is faster than npm list -g because it skips
360
+ // scanning unrelated packages in the global node_modules.
361
+ const output = execSync(`npm ls -g ${MCP_PACKAGE} --depth=0 --json`, {
362
+ encoding: 'utf-8',
363
+ stdio: 'pipe',
364
+ timeout: 15000,
365
+ });
366
+ const parsed = JSON.parse(output);
367
+ // npm ls output has the package as a top-level key, not under dependencies
368
+ const pkg = parsed.dependencies?.[MCP_PACKAGE] || parsed[MCP_PACKAGE];
369
+ return pkg?.version || null;
370
+ } catch {
371
+ return null;
372
+ }
373
+ }
374
+
375
+ /**
376
+ * Get the latest available version from the npm registry.
377
+ * Returns null on failure (offline, registry unreachable, etc.).
378
+ */
379
+ function getLatestMcpVersion() {
380
+ try {
381
+ const output = execSync(`npm view ${MCP_PACKAGE} version`, {
382
+ encoding: 'utf-8',
383
+ stdio: 'pipe',
384
+ timeout: 15000,
385
+ });
386
+ return output.trim();
387
+ } catch {
388
+ return null;
389
+ }
390
+ }
391
+
392
+ /**
393
+ * Install an npm package globally with retry logic.
394
+ * Retries up to 2 times on failure (covers transient network errors).
395
+ */
396
+ function npmInstallGlobal(pkg, retries = 2) {
397
+ for (let attempt = 1; attempt <= retries; attempt++) {
398
+ try {
399
+ execSync(`npm install -g ${pkg}`, { stdio: 'inherit', timeout: 120000 });
400
+ return true;
401
+ } catch (err) {
402
+ if (attempt < retries) {
403
+ console.log(`[wowok-skills] npm install attempt ${attempt} failed, retrying...`);
404
+ // Wait 2s before retry to let network recover
405
+ execSync('ping -n 3 127.0.0.1 >nul', { stdio: 'pipe', timeout: 5000 });
406
+ } else {
407
+ console.error(`[wowok-skills] npm install failed after ${retries} attempts: ${err.message}`);
408
+ return false;
409
+ }
410
+ }
411
+ }
412
+ return false;
413
+ }
414
+
415
+ /**
416
+ * Ensure the MCP server is installed and up to date.
417
+ *
418
+ * - Not installed → install latest
419
+ * - Outdated (same major) → upgrade to latest
420
+ * - Major version bump → warn user, skip auto-upgrade
421
+ * - Up to date → skip
422
+ *
423
+ * Returns true if the package was installed or upgraded (changed).
424
+ */
425
+ function ensureMcpServer() {
426
+ const currentVersion = getInstalledMcpVersion();
427
+ const latestVersion = getLatestMcpVersion();
428
+
429
+ if (currentVersion) {
430
+ console.log(`[wowok-skills] MCP server ${MCP_PACKAGE} v${currentVersion} found.`);
431
+
432
+ if (!latestVersion) {
433
+ console.log(`[wowok-skills] Cannot check latest version (offline or registry unreachable). Keeping v${currentVersion}.`);
434
+ return false;
435
+ }
436
+
437
+ if (currentVersion === latestVersion) {
438
+ console.log(`[wowok-skills] MCP server is up to date (v${currentVersion}).`);
439
+ return false;
440
+ }
441
+
442
+ // Major version guard: warn if the latest version has a different major
443
+ const currentMajor = semverMajor(currentVersion);
444
+ const latestMajor = semverMajor(latestVersion);
445
+
446
+ if (latestMajor > currentMajor) {
447
+ console.warn(`[wowok-skills] ⚠ WARNING: Major version bump detected v${currentVersion} → v${latestVersion}.`);
448
+ console.warn(`[wowok-skills] Skipping auto-upgrade to avoid breaking changes.`);
449
+ console.warn(`[wowok-skills] To upgrade manually: npm install -g ${MCP_PACKAGE}@latest`);
450
+ return false;
451
+ }
452
+
453
+ console.log(`[wowok-skills] Upgrading MCP server v${currentVersion} → v${latestVersion}...`);
454
+ if (npmInstallGlobal(`${MCP_PACKAGE}@latest`)) {
455
+ console.log(`[wowok-skills] MCP server upgraded to v${latestVersion}.`);
456
+ return true;
457
+ }
458
+ console.error(`[wowok-skills] MCP server upgrade FAILED. Keeping v${currentVersion}.`);
459
+ return false;
460
+ }
461
+
462
+ console.log(`[wowok-skills] Installing MCP server ${MCP_PACKAGE}...`);
463
+ if (npmInstallGlobal(MCP_PACKAGE)) {
464
+ console.log(`[wowok-skills] MCP server installed.`);
465
+ return true;
466
+ }
467
+ console.error(`[wowok-skills] MCP server installation FAILED.`);
468
+ return false;
469
+ }
470
+
471
+ /**
472
+ * Write MCP server config entry for a given client target.
473
+ * Safely merges with any existing MCP configuration.
474
+ * Supports JSON format (most clients) and TOML format (Codex).
475
+ */
476
+ function writeMcpConfig(target) {
477
+ const cfg = MCP_TARGET_CONFIGS[target];
478
+ if (!cfg) {
479
+ console.log(`[wowok-skills] MCP config: ${target} does not support external MCP registration (skipped).`);
480
+ return false;
481
+ }
482
+
483
+ // ── TOML format (Codex CLI uses ~/.codex/config.toml) ──────────────
484
+ if (cfg.format === 'toml') {
485
+ try {
486
+ const tomlEntry = '\n[mcp_servers.wowok]\ncommand = "npx"\nargs = ["-y", "@wowok/agent-mcp"]\n';
487
+ let content = '';
488
+ if (fs.existsSync(cfg.configPath)) {
489
+ content = fs.readFileSync(cfg.configPath, 'utf-8');
490
+ }
491
+ if (content.includes('[mcp_servers.wowok]')) {
492
+ console.log(`[wowok-skills] MCP config already up to date: ${cfg.configPath}`);
493
+ return false;
494
+ }
495
+ fs.mkdirSync(path.dirname(cfg.configPath), { recursive: true });
496
+ fs.writeFileSync(cfg.configPath, content + tomlEntry, 'utf-8');
497
+ console.log(`[wowok-skills] MCP config written: ${cfg.configPath}`);
498
+ return true;
499
+ } catch (err) {
500
+ console.error(`[wowok-skills] ERROR writing MCP config for ${target}: ${err.message}`);
501
+ return false;
502
+ }
503
+ }
504
+
505
+ // ── JSON format (all other clients) ────────────────────────────────
506
+ try {
507
+ let config = {};
508
+ const dir = path.dirname(cfg.configPath);
509
+ if (fs.existsSync(cfg.configPath)) {
510
+ config = JSON.parse(fs.readFileSync(cfg.configPath, 'utf-8'));
511
+ }
512
+
513
+ const before = JSON.stringify(config);
514
+ config = cfg.merge(config);
515
+ const after = JSON.stringify(config);
516
+
517
+ if (before !== after) {
518
+ fs.mkdirSync(dir, { recursive: true });
519
+ fs.writeFileSync(cfg.configPath, JSON.stringify(config, null, 2), 'utf-8');
520
+ console.log(`[wowok-skills] MCP config written: ${cfg.configPath}`);
521
+ return true;
522
+ }
523
+
524
+ console.log(`[wowok-skills] MCP config already up to date: ${cfg.configPath}`);
525
+ return false;
526
+ } catch (err) {
527
+ console.error(`[wowok-skills] ERROR writing MCP config for ${target}: ${err.message}`);
528
+ return false;
529
+ }
530
+ }
531
+
532
+ /**
533
+ * Attempt to restart the running MCP server process.
534
+ *
535
+ * The MCP server is a child process of the IDE (Claude Code, Trae, etc.).
536
+ * We cannot directly "start" it — only kill the existing process so the IDE
537
+ * detects the exit and auto-restarts it with the new version.
538
+ *
539
+ * Best-effort: if the kill fails (no process running), it's harmless.
540
+ */
541
+ function restartMcpServer() {
542
+ try {
543
+ if (process.platform === 'win32') {
544
+ // Windows: use PowerShell (via -EncodedCommand to avoid quoting hell)
545
+ const psScript =
546
+ 'Get-CimInstance Win32_Process -Filter "Name=\'node.exe\' AND CommandLine LIKE \'%wowok%agent-mcp%\'" | ' +
547
+ 'ForEach-Object { Stop-Process -Id $_.ProcessId -Force -ErrorAction SilentlyContinue }';
548
+ const encoded = Buffer.from(psScript, 'utf16le').toString('base64');
549
+ execSync(`powershell -NoProfile -EncodedCommand ${encoded}`, {
550
+ stdio: 'pipe',
551
+ timeout: 10000,
552
+ });
553
+ } else {
554
+ // Unix: pkill by command-line pattern
555
+ execSync('pkill -f "wowok.*agent-mcp" 2>/dev/null || true', {
556
+ stdio: 'pipe',
557
+ timeout: 5000,
558
+ shell: true,
559
+ });
560
+ }
561
+ console.log('[wowok-skills] MCP server process terminated (IDE will auto-restart).');
562
+ return true;
563
+ } catch (e) {
564
+ console.log('[wowok-skills] No running MCP server process found. Start your IDE to launch it.');
565
+ return false;
566
+ }
567
+ }
568
+
232
569
  main();
@@ -65,9 +65,9 @@ This Skill keeps the **workflow conversation guidance**, **business flow design
65
65
  | `permissionIndex` | Shared across ALL Progress instances | Internal staff (warehouse, admin, platform) — same for every order |
66
66
  | `namedOperator` | Per-Progress namespace | Roles that differ per order (delivery person, reviewer, agent) |
67
67
 
68
- - `namedOperator: ""` (empty string): grants **order owner and agents** the right to execute. Standard way to let customers operate.
69
- - `namedOperator: "<role_name>"`: role-based operators managed per Progress instance. Each Progress independently assigns addresses to role names.
70
- - **Both fields set**: executor needs EITHER permission — internal staff OR external roles.
68
+ - `namedOperator: ""` (empty string): grants **order owner and agents** the right to execute. Standard way to let customers operate. **⚠ Must be advanced via `order.progress`** (uses `order.has_op_permission`); direct `progress::next` aborts with Permission denied (code 5).
69
+ - `namedOperator: "<role_name>"`: role-based operators managed per Progress instance. Each Progress independently assigns addresses to role names. **Advanced via `progress.operate`** directly.
70
+ - **Both fields set**: executor needs EITHER permission — internal staff OR external roles. **Advanced via `progress.operate`** (the non-empty namedOperator takes precedence for routing).
71
71
  - **Design principle**: Use custom permissions (dedicated Permission object with custom indices), not built-in indices. Define workflow-specific roles, reference those indices in Forwards.
72
72
 
73
73
  ### Guard on Forwards
@@ -56,14 +56,14 @@ Every conversation between two addresses has a deterministic session. Messages a
56
56
  Before any communication:
57
57
 
58
58
  1. **Account must exist** → `account_operation` (gen)
59
- 2. **Enable messenger** → `account_operation` (messenger), set a messenger name
59
+ 2. **Enable messenger** → `account_operation` (messenger), set `enabled: true`
60
60
  3. **Get your address** → `account_operation` (get) — share this address with your counterparties
61
61
 
62
- > The messenger name is required for message delivery. Without it, your account has no messenger endpoint and cannot receive messages.
62
+ > Messenger must be enabled for message delivery. Without it, your account has no messenger endpoint and cannot receive messages. Account name is used for messenger identity lookup.
63
63
 
64
64
  ### Account Limit
65
65
 
66
- A single device supports up to 1000 messenger accounts. Exceeding this returns "Maximum 1000 messenger accounts allowed". Use `account_operation → messenger { m: null }` to disable unused accounts.
66
+ A single device supports up to 1000 messenger accounts. Exceeding this returns "Maximum 1000 messenger accounts allowed". Use `account_operation → messenger { enabled: false }` to disable unused accounts.
67
67
 
68
68
  ### Contact Object (On-Chain Bridge)
69
69
 
@@ -225,7 +225,7 @@ When a dispute requires evidence: (1) `generate_wts` → export messages by time
225
225
  ## Common Pitfalls
226
226
 
227
227
  - **One-message limit trap**: Sending a vague first message to a stranger wastes your only chance. Make the first message complete and actionable.
228
- - **Disabled messenger**: Without a messenger name set, your account has no endpoint — counterparties cannot find or message you.
228
+ - **Disabled messenger**: Without messenger enabled, your account has no endpoint — counterparties cannot find or message you.
229
229
  - **WTS range too narrow**: Selecting only favorable messages undermines evidence credibility. Include the full conversation.
230
230
  - **Guard list without strategy**: Adding a Guard to your list without testing it (`gen_passport`) means you don't know what conditions strangers must meet — you may be blocking legitimate contacts.
231
231
  - **`allowStrangerMessages: false` with no guard list and no friends**: Nobody can contact you. Always ensure at least one inbound path exists.
@@ -79,12 +79,14 @@ Use `wip_file` → `op: "verify"`, `wipFilePath: "<wip_url>"`, `hash_equal: "<wi
79
79
 
80
80
  **Step 3: Classify every forward**:
81
81
 
82
- | `namedOperator` | `guard` | User Can Execute? |
83
- |-----------------|---------|-------------------|
84
- | `Some("")` | `None` | ✅ Independently via `order.progress` |
85
- | `Some("")` | `Some({...})` | ⚠️ Need Guard passport — **no bypass** |
86
- | `None` | Any | ❌ Provider/permission-holder only |
87
- | `Some("<other>")` | Any | ❌ Named operator required |
82
+ | `namedOperator` | `guard` | User Can Execute? | Operation Path |
83
+ |-----------------|---------|-------------------|----------------|
84
+ | `Some("")` | `None` | ✅ Independently | **`order.progress`** (uses `order.has_op_permission`) |
85
+ | `Some("")` | `Some({...})` | ⚠️ Need Guard passport — **no bypass** | **`order.progress`** + Passport |
86
+ | `None` | Any | ❌ Provider/permission-holder only | `progress.operate` (provider path) |
87
+ | `Some("<other>")` | Any | ❌ Named operator required | `progress.operate` (named operator path) |
88
+
89
+ > **⚠ CRITICAL ROUTING RULE**: When `namedOperator=""` (empty string = OrderHolder), you MUST use `order.progress` (NOT `progress.operate`). Direct `progress::next` will abort with "Permission denied" (code 5) because the Progress-level permission check does not recognize the OrderHolder short-circuit. The empty-string `namedOperator` is set automatically by `service::buy` when an Order is created — the customer (order.builder) becomes the operator for the `""` namespace. In ALL other cases (non-empty `namedOperator` or `permissionIndex`-only), use `progress.operate` on the Progress object directly.
88
90
 
89
91
  **Step 4: Detect paths**:
90
92
  - Terminal nodes (no outgoing forwards) → order ends
@@ -311,6 +311,16 @@ Before forking, verify necessity via `get_project_detail` → `has_published_obj
311
311
  | Order | Fund escrow | Read-only |
312
312
  | **Progress** | Workflow state | **Operate this** — `hold: true` (lock) → work → `hold: false` (submit) |
313
313
 
314
+ **⚠ Progress Routing Rule** (critical):
315
+
316
+ | Forward `namedOperator` | Required Operation | Why |
317
+ |------------------------|--------------------|-----|
318
+ | `""` (empty = OrderHolder) | `order.progress` | Uses `order.has_op_permission` — order owner/agents authorized |
319
+ | `"<role_name>"` (non-empty) | `progress.operate` | Uses Progress named_operator namespace |
320
+ | `None` + `permissionIndex` | `progress.operate` | Uses Permission object entity table |
321
+
322
+ Wrong path → "Permission denied" (Move abort code 5). The empty-string `namedOperator` is set automatically by `service::buy` — the customer becomes the operator. Providers who need to act on a forward should either use a non-empty `namedOperator` (and `progress.operate`) or use `permissionIndex` (requiring a custom permission grant in the Service's Permission object).
323
+
314
324
  **AI Reminder**: When fulfilling, check `customer_required` fields. Missing → prompt via Messenger.
315
325
 
316
326
  ---
@@ -118,16 +118,19 @@ When users request complex systems without naming, propose this scheme:
118
118
 
119
119
  ### 4.1 `replaceExistName` Flag
120
120
 
121
- Controls name collision behavior:
121
+ Controls name collision behavior. **DISCOURAGED** — prefer versioned names (`_v1`, `_v2`).
122
122
 
123
123
  | Value | Effect |
124
124
  |-------|--------|
125
125
  | `false` (default) | Throws error if name is in use — safe default |
126
- | `true` | Steals name from existing object; old object becomes unnamed |
126
+ | `true` | Existing object/account with the same name is **suspended** (deactivated) to free the name |
127
127
 
128
- - Use `true` during development to reuse fixed names without cleanup
129
- - Default to `false` in production to prevent accidental name hijacking
130
- - Prefer versioned names (`_v1`, `_v2`) over `replaceExistName` for production
128
+ **Account-specific rules** (stricter than on-chain objects):
129
+ - `replaceExistName: true` on the **default account** (`name=''` or omitted) is **FORBIDDEN** throws error. The default account is unique and cannot be suspended by replacement; use `suspend()` explicitly if needed.
130
+ - On non-default account names, `replaceExistName: true` **suspends** the old account (moves to Suspended tab, clears name + messenger). The old account can be reactivated via `resume(address, new_name)`.
131
+ - This prevents the "orphan unnamed account" bug where old accounts leaked into the Active list without a name.
132
+
133
+ **On-chain objects** (NamedObjectSchema): `replaceExistName: true` steals the name; the old object becomes unnamed (address-only reference). Prefer versioned names for production.
131
134
 
132
135
  ---
133
136
 
@@ -152,11 +152,11 @@ Step 3: MODIFY reward { object: "reward_v1", guard_add: [...] } // bind guard
152
152
  |-----------------|----------------------------------|
153
153
  | `service` | `machine` must be **published**. Allocators: array order = priority (first-Guard-wins). Publish locks `machine`/`order_allocators`; `sales`/`discount`/`description` stay mutable. |
154
154
  | `machine` | Nodes immutable after publish. Forward needs ≥1 of `namedOperator`/`permissionIndex` (both empty = SDK error). `""` = entry node. → [wowok-machine](../wowok-machine/SKILL.md) |
155
- | `progress` | Two-phase: `hold:true` (lock) → `hold:false` (submit). `adminUnhold:true` force-releases. SDK auto-fetches Machine when resolving `object_address`. |
155
+ | `progress` | Two-phase: `hold:true` (lock) → `hold:false` (submit). `adminUnhold:true` force-releases. SDK auto-fetches Machine when resolving `object_address`. **⚠ Routing rule**: Use `progress.operate` ONLY for forwards with non-empty `namedOperator` or `permissionIndex`-only. For forwards with `namedOperator=""` (OrderHolder), use `order.progress` instead — direct `progress::next` aborts with Permission denied (code 5). |
156
156
  | `arbitration` | MAX 20 propositions, 520 voters. Verdict (2→3) **irreversible** — only customer can `order.arb_objection`. Non-Finished withdrawal = 30-day wait. → [wowok-arbitrator](../wowok-arbitrator/SKILL.md) |
157
157
  | `guard` | `root.type:"node"` (inline) or `"file"` (JSON/MD). MAX 4 `rely`. `rep:false` Guards excluded from others' `rely`. System addresses `0xaab`/`0xaaa` need table entries. → [wowok-guard](../wowok-guard/SKILL.md) |
158
158
  | `gen_passport` | MAX 20 Guards/call (AND-ed). Omit `info` to auto-fetch. Passport = frozen immutable credential. |
159
- | `order` | Agents can operate but **cannot withdraw** — only builder. `order.progress`+Guard requires Passport. Arb via `order.arb_confirm`/`arb_objection` (not `arbitration` directly). `arb_claim_compensation` once-only. → [wowok-order](../wowok-order/SKILL.md) |
159
+ | `order` | Agents can operate but **cannot withdraw** — only builder. `order.progress`+Guard requires Passport. **⚠ Routing rule**: `order.progress` works ONLY for forwards with `namedOperator=""` (OrderHolder) — uses `order.has_op_permission`. For non-empty `namedOperator` or `permissionIndex`-only forwards, use `progress.operate` on the Progress object directly. Arb via `order.arb_confirm`/`arb_objection` (not `arbitration` directly). `arb_claim_compensation` once-only. → [wowok-order](../wowok-order/SKILL.md) |
160
160
  | `payment` | `type_parameter` required. **Irreversible** — no refund. |
161
161
  | `personal` | **Permanently public** — warn users before writing sensitive data. |
162
162
  | `demand` | Guard-gated: `guards` filter presenters. Separate from Service. |
@@ -177,7 +177,7 @@ Step 3: MODIFY reward { object: "reward_v1", guard_add: [...] } // bind guard
177
177
  |------|----------------|
178
178
  | `query_toolkit` | `token_list` cached (first query populates). `account_balance`: `balance=true` for totals, `coin={cursor,limit}` for paginated. `onchain_objects` batches 50/req. `local_names` resolves accounts + marks. |
179
179
  | `onchain_table_data` | 12 types. Global (no `parent`): `entity_registrar`, `entity_linker`. `onchain_table_item_generic` = universal fallback. |
180
- | `account_operation` | `faucet` testnet/localnet only. Mainnet funding: `transfer` from existing account (1 WOW = 10^9 base units). `gen` with `m` enables Messenger. Private keys never leave device. |
180
+ | `account_operation` | `faucet` testnet/localnet only. Mainnet funding: `transfer` from existing account (1 WOW = 10^9 base units). `gen` with `messenger: true` enables Messenger. **Naming convention**: `<role>-<number>` (e.g. `shop-001`, `user-001`, `arb-001`) for easy filtering. `gen.replaceExistName:true` is DISCOURAGED — suspends old account; FORBIDDEN on default account (name=''). Private keys never leave device. |
181
181
  | `local_mark_operation` | Max 50 tags/entry (64 chars). `replaceExistName:true` steals names — prefer `_v1`/`_v2`. |
182
182
  | `local_info_operation` | Max 50 contents/entry, 300 chars each. |
183
183
  | `messenger_operation` | Stranger: 1 msg before reply (~480 chars). Guard block → rejection includes guard list; sender needs Passport. WTS: `generate` needs continuous sequences. → [wowok-messenger](../wowok-messenger/SKILL.md) |