mcp-config-manager 2.1.1 → 2.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 +198 -0
- package/package.json +1 -1
- package/public/index.html +98 -2
- package/public/js/clientView.js +437 -3
- package/public/js/main.js +2 -2
- package/public/js/skillsApi.js +135 -0
- package/public/style.css +877 -26
- package/src/commands-manager.js +268 -0
- package/src/server.js +300 -0
- package/src/skills-manager.js +555 -0
- package/src/skills-scopes.js +809 -0
package/README.md
CHANGED
|
@@ -24,6 +24,29 @@ Simple CLI and web UI tool to manage Model Context Protocol (MCP) configurations
|
|
|
24
24
|
- **Cross-platform**: Works on macOS, Windows, and Linux
|
|
25
25
|
- **Import/Export**: Share configurations between clients and users
|
|
26
26
|
- **Environment variables**: Easily manage API keys and settings
|
|
27
|
+
- **Per-Client Skills/Prompts/Rules**: Manage AI assistant customizations for 25+ clients
|
|
28
|
+
- **Claude Code/Desktop**: Skills, Commands, and Agents (`~/.claude/skills/`, `commands/`, `agents/`)
|
|
29
|
+
- **Cursor**: Rules (`~/.cursor/rules/`) in MDC format
|
|
30
|
+
- **Continue.dev**: Prompts (`~/.continue/prompts/`) and Rules (`~/.continue/rules/`)
|
|
31
|
+
- **Windsurf**: Rules (`~/.codeium/windsurf/memories/global_rules.md`)
|
|
32
|
+
- **GitHub Copilot**: Instructions and Skills (`~/.github/copilot-instructions.md`, `~/.copilot/skills/`)
|
|
33
|
+
- **Amazon Q**: Rules (`~/.aws/amazonq/rules/`)
|
|
34
|
+
- **Cline**: Rules (`~/Documents/Cline/Rules/`)
|
|
35
|
+
- **Roo Code**: Rules (`~/.roo/rules/`)
|
|
36
|
+
- **Gemini CLI**: Context, Commands, and Skills (`~/.gemini/GEMINI.md`, `commands/`, `skills/`)
|
|
37
|
+
- **Codex**: Agents (`~/.codex/AGENTS.md`) and Skills (`~/.codex/skills/`)
|
|
38
|
+
- **Mistral Vibe**: Skills and Agents (`~/.vibe/skills/`, `~/.vibe/agents/`)
|
|
39
|
+
- **Amp**: Skills (`~/.config/agents/skills/`)
|
|
40
|
+
- **Goose**: Skills (`~/.config/goose/skills/`)
|
|
41
|
+
- **OpenCode**: Skills (`~/.config/opencode/skills/`)
|
|
42
|
+
- **Firebender**: Rules (`~/.firebender/rules/`)
|
|
43
|
+
- **Autohand Code CLI**: Skills (`~/.autohand/skills/`)
|
|
44
|
+
- **pi**: Skills (`~/.pi/agent/skills/`)
|
|
45
|
+
- **Augment Code**: Commands and Rules (`~/.augment/commands/`, `rules/`)
|
|
46
|
+
- **Aider**: Config (`~/.aider.conf.yml`)
|
|
47
|
+
- And more: JetBrains AI, Tabnine, Piebald, TRAE, Letta, Qodo, VT Code, and others
|
|
48
|
+
- **Simple & Complex Skills**: Single-file skills and directory-based skills with workflows, references
|
|
49
|
+
- **Tab-Based UI**: Each client shows relevant tabs (Servers, Skills, Commands, Rules, Agents, etc.)
|
|
27
50
|
|
|
28
51
|
## Screenshots
|
|
29
52
|
|
|
@@ -107,6 +130,8 @@ npm run web
|
|
|
107
130
|
|
|
108
131
|
**Note:** `mcp-manager` also works as a shorter alias for `mcp-config-manager`.
|
|
109
132
|
|
|
133
|
+
**Note:** Skills and commands management is available through the web UI. Use `mcp-config-manager web` to access the skills and commands management interface.
|
|
134
|
+
|
|
110
135
|
### Web UI
|
|
111
136
|
|
|
112
137
|
**Start the web server:**
|
|
@@ -177,23 +202,105 @@ The web UI provides:
|
|
|
177
202
|
- Add/edit/delete servers
|
|
178
203
|
- Import/export configurations
|
|
179
204
|
- Environment variable management
|
|
205
|
+
- **Per-Client Skills/Rules Mode**: Each client shows relevant tabs for its customization types
|
|
206
|
+
- Create, edit, and delete skills, rules, commands, prompts, and more
|
|
207
|
+
- Manage per-client customizations (skills for Claude, rules for Cursor, etc.)
|
|
208
|
+
- View and manage directory-based skill file trees
|
|
209
|
+
|
|
210
|
+
## Skills & Customization Management
|
|
211
|
+
|
|
212
|
+
The tool includes full support for managing per-client AI assistant customizations alongside MCP server configurations. Each client has its own tabs for managing skills, commands, rules, prompts, or other customization types.
|
|
213
|
+
|
|
214
|
+
### Per-Client Tabs
|
|
215
|
+
|
|
216
|
+
Different clients support different types of customizations:
|
|
217
|
+
|
|
218
|
+
| Client | Tabs |
|
|
219
|
+
|--------|------|
|
|
220
|
+
| Claude Code/Desktop | Skills, Commands, Agents |
|
|
221
|
+
| Cursor | Rules (MDC format) |
|
|
222
|
+
| Continue.dev | Prompts, Rules |
|
|
223
|
+
| Windsurf | Rules |
|
|
224
|
+
| GitHub Copilot | Instructions, Skills |
|
|
225
|
+
| Amazon Q | Rules |
|
|
226
|
+
| Cline | Rules |
|
|
227
|
+
| Roo Code | Rules |
|
|
228
|
+
| Gemini CLI | Context, Commands, Skills |
|
|
229
|
+
| Codex | Agents, Skills |
|
|
230
|
+
| Mistral Vibe | Skills, Agents |
|
|
231
|
+
| Amp (Sourcegraph) | Skills |
|
|
232
|
+
| Goose (Block) | Skills |
|
|
233
|
+
| OpenCode | Skills |
|
|
234
|
+
| Firebender | Rules (MDC format) |
|
|
235
|
+
| Autohand Code CLI | Skills |
|
|
236
|
+
| pi | Skills |
|
|
237
|
+
| Piebald | Skills, Agents |
|
|
238
|
+
| JetBrains AI | Rules |
|
|
239
|
+
| Augment Code | Commands, Rules |
|
|
240
|
+
| Tabnine | Guidelines |
|
|
241
|
+
| Aider | Config |
|
|
242
|
+
|
|
243
|
+
### Using the Web UI
|
|
244
|
+
|
|
245
|
+
1. **Select a client**: Each client card shows its available tabs (Servers, Skills, Commands, Rules, etc.)
|
|
246
|
+
2. **Switch tabs**: Click a tab to view and manage that type of content
|
|
247
|
+
3. **Create new items**: Click "Add" to create new skills, rules, commands, etc.
|
|
248
|
+
4. **Edit existing**: Click on any item card to edit its content
|
|
249
|
+
5. **Manage files**: For complex/directory-based skills, view and manage associated file trees
|
|
250
|
+
6. **Copy items**: Duplicate items within the same tab
|
|
251
|
+
|
|
252
|
+
### Skill File Structure (Claude Code)
|
|
253
|
+
|
|
254
|
+
```markdown
|
|
255
|
+
---
|
|
256
|
+
name: my-skill
|
|
257
|
+
description: A helpful skill description
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
# My Skill
|
|
261
|
+
|
|
262
|
+
Instructions and content for the skill...
|
|
263
|
+
```
|
|
180
264
|
|
|
181
265
|
## Supported Clients
|
|
182
266
|
|
|
183
267
|
This tool supports auto-detection of any client that follows the Model Context Protocol specification. The following is a non-exhaustive list of clients that have been tested and are known to work:
|
|
184
268
|
|
|
269
|
+
- **Aider**: Config management (`~/.aider.conf.yml`)
|
|
270
|
+
- **Agentman**: Registered (no confirmed global paths)
|
|
185
271
|
- **Amazon Q Developer**: `~/.aws/amazonq/mcp.json`
|
|
272
|
+
- **Amp** (Sourcegraph): Skills (`~/.config/agents/skills/`)
|
|
273
|
+
- **Augment Code**: Commands (`~/.augment/commands/`) and Rules (`~/.augment/rules/`)
|
|
274
|
+
- **Autohand Code CLI**: Skills (`~/.autohand/skills/`)
|
|
186
275
|
- **Claude Desktop**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
187
276
|
- **Claude Code**: `~/.claude.json` (global settings and MCP servers)
|
|
188
277
|
- **Cline**: `~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json`
|
|
189
278
|
- **Codex**: `~/.codex/config.toml` (TOML with `[mcp_servers.<name>]` tables)
|
|
279
|
+
- **Command Code**: Registered (no confirmed global paths)
|
|
190
280
|
- **Cursor**: `.cursor/mcp.json` (project-specific) or `~/.cursor/mcp.json` (global)
|
|
281
|
+
- **Databricks**: Workspace-level skills support
|
|
191
282
|
- **Factory Bridge**: `~/Library/Application Support/Factory Bridge/mcp.json`
|
|
283
|
+
- **Firebender**: Rules (`~/.firebender/rules/*.mdc`)
|
|
192
284
|
- **Gemini**: `~/.gemini/settings.json`
|
|
193
285
|
- **Google AntiGravity**: `~/.gemini/antigravity/mcp_config.json`
|
|
286
|
+
- **Goose** (Block): Skills (`~/.config/goose/skills/`)
|
|
287
|
+
- **JetBrains AI Assistant**: `~/.aiassistant/rules/` (rules management)
|
|
288
|
+
- **Letta Code**: Project-level skills support
|
|
289
|
+
- **Mistral Vibe**: Skills (`~/.vibe/skills/`) and Agents (`~/.vibe/agents/`)
|
|
290
|
+
- **Mux**: Registered (no confirmed global paths)
|
|
291
|
+
- **Ona**: Cloud-based AI software engineers
|
|
292
|
+
- **OpenCode**: Skills (`~/.config/opencode/skills/`)
|
|
293
|
+
- **pi**: Skills (`~/.pi/agent/skills/`)
|
|
294
|
+
- **Piebald**: Uses Claude Code paths (desktop app wrapper)
|
|
295
|
+
- **Qodo**: Registered (TOML-based agent configs)
|
|
194
296
|
- **Roo Code**: `~/Library/Application Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json`
|
|
297
|
+
- **Spring AI**: Library-level skills integration
|
|
298
|
+
- **Tabnine**: `~/.tabnine/guidelines/` (guidelines management)
|
|
299
|
+
- **TRAE** (ByteDance): Project-level rules support
|
|
195
300
|
- **VS Code**: `.vscode/mcp.json`
|
|
301
|
+
- **VT Code**: Follows Agent Skills standard
|
|
196
302
|
- **Windsurf**: `~/.codeium/windsurf/mcp_config.json` or `~/AppData/Roaming/WindSurf/mcp_settings.json` (Windows)
|
|
303
|
+
- **Zed AI**: Project-root `.rules` file for per-project configuration
|
|
197
304
|
|
|
198
305
|
*Note: Paths may vary based on your operating system. The tool will attempt to find the correct path automatically.*
|
|
199
306
|
|
|
@@ -244,6 +351,51 @@ url = "https://mcp.figma.com/mcp"
|
|
|
244
351
|
bearer_token_env_var = "FIGMA_OAUTH_TOKEN"
|
|
245
352
|
```
|
|
246
353
|
|
|
354
|
+
## API Reference
|
|
355
|
+
|
|
356
|
+
The web UI communicates with the server via REST API endpoints. These can also be used for automation and integration.
|
|
357
|
+
|
|
358
|
+
### MCP Server Endpoints
|
|
359
|
+
|
|
360
|
+
| Method | Endpoint | Description |
|
|
361
|
+
|--------|----------|-------------|
|
|
362
|
+
| GET | `/api/clients` | List all detected clients |
|
|
363
|
+
| GET | `/api/clients/:client/servers` | List servers for a client |
|
|
364
|
+
| POST | `/api/clients/:client/servers/:server` | Create a server |
|
|
365
|
+
| PUT | `/api/clients/:client/servers/:server` | Update a server |
|
|
366
|
+
| DELETE | `/api/clients/:client/servers/:server` | Delete a server |
|
|
367
|
+
| POST | `/api/clients/:client/servers/:server/copy` | Copy server to other clients |
|
|
368
|
+
| POST | `/api/clients/:client/import` | Import configuration |
|
|
369
|
+
| GET | `/api/clients/:client/export` | Export configuration |
|
|
370
|
+
|
|
371
|
+
### Per-Client Skills/Prompts/Rules Endpoints
|
|
372
|
+
|
|
373
|
+
| Method | Endpoint | Description |
|
|
374
|
+
|--------|----------|-------------|
|
|
375
|
+
| GET | `/api/clients/:client/tabs` | List skill tabs for client |
|
|
376
|
+
| GET | `/api/clients/:client/has-skills` | Check if client supports skills |
|
|
377
|
+
| GET | `/api/clients/:client/tabs/:tab/items` | List items in tab |
|
|
378
|
+
| GET | `/api/clients/:client/tabs/:tab/items/:name` | Read item |
|
|
379
|
+
| POST | `/api/clients/:client/tabs/:tab/items/:name` | Create item |
|
|
380
|
+
| PUT | `/api/clients/:client/tabs/:tab/items/:name` | Update item |
|
|
381
|
+
| DELETE | `/api/clients/:client/tabs/:tab/items/:name` | Delete item |
|
|
382
|
+
| GET | `/api/clients/:client/tabs/:tab/items/:name/files` | List files in complex item |
|
|
383
|
+
| GET | `/api/clients/:client/tabs/:tab/items/:name/files/*path` | Read file |
|
|
384
|
+
| PUT | `/api/clients/:client/tabs/:tab/items/:name/files/*path` | Write file |
|
|
385
|
+
| POST | `/api/clients/:client/tabs/:tab/items/:name/copy` | Copy item |
|
|
386
|
+
|
|
387
|
+
### Commands Endpoints
|
|
388
|
+
|
|
389
|
+
| Method | Endpoint | Description |
|
|
390
|
+
|--------|----------|-------------|
|
|
391
|
+
| GET | `/api/commands` | List all commands |
|
|
392
|
+
| GET | `/api/commands/:name` | Read command |
|
|
393
|
+
| POST | `/api/commands/:name` | Create command |
|
|
394
|
+
| PUT | `/api/commands/:name` | Update command |
|
|
395
|
+
| DELETE | `/api/commands/:name` | Delete command |
|
|
396
|
+
| POST | `/api/commands/:name/rename` | Rename command |
|
|
397
|
+
| POST | `/api/commands/:name/duplicate` | Duplicate command |
|
|
398
|
+
|
|
247
399
|
## Security Note
|
|
248
400
|
|
|
249
401
|
Environment variables may contain sensitive data like API keys. The tool masks values containing "KEY" or "SECRET" in the display but stores them in plain text in config files.
|
|
@@ -336,6 +488,52 @@ npm run web
|
|
|
336
488
|
|
|
337
489
|
This allows testing functionality without affecting real MCP client configurations.
|
|
338
490
|
|
|
491
|
+
## What's New in v2.3.0
|
|
492
|
+
|
|
493
|
+
### 20 New Clients with Skills Support
|
|
494
|
+
- **Firebender**: Rules in MDC format (`~/.firebender/rules/`)
|
|
495
|
+
- **Goose** (Block): Skills (`~/.config/goose/skills/`)
|
|
496
|
+
- **Amp** (Sourcegraph): Skills (`~/.config/agents/skills/`)
|
|
497
|
+
- **OpenCode**: Skills (`~/.config/opencode/skills/`)
|
|
498
|
+
- **Mistral Vibe**: Skills and Agents (`~/.vibe/skills/`, `~/.vibe/agents/`)
|
|
499
|
+
- **pi**: Skills (`~/.pi/agent/skills/`)
|
|
500
|
+
- **Autohand Code CLI**: Skills (`~/.autohand/skills/`)
|
|
501
|
+
- **Piebald**: Uses Claude Code paths
|
|
502
|
+
- **TRAE, Letta, Qodo, VT Code, Command Code, Ona, Agentman, Mux, Spring AI, Databricks**: Registered with placeholder support
|
|
503
|
+
|
|
504
|
+
### New Tabs for Existing Clients
|
|
505
|
+
- **Claude Code/Desktop**: Added Agents tab (`~/.claude/agents/`)
|
|
506
|
+
- **Gemini CLI/AntiGravity**: Added Skills tab (`~/.gemini/skills/`)
|
|
507
|
+
- **GitHub Copilot**: Added Skills tab (`~/.copilot/skills/`)
|
|
508
|
+
- **Augment Code**: Added Commands tab (`~/.augment/commands/`)
|
|
509
|
+
- **Aider**: Added Config tab (`~/.aider.conf.yml`)
|
|
510
|
+
|
|
511
|
+
### UI Improvements
|
|
512
|
+
- Widened Edit Skill modal from 900px to 1200px for better file tree + editor layout
|
|
513
|
+
- Fixed dead CSS selector for skill modal content
|
|
514
|
+
|
|
515
|
+
### Total: 38 clients registered, 25 with active skills/rules support
|
|
516
|
+
|
|
517
|
+
---
|
|
518
|
+
|
|
519
|
+
## What's New in v2.2.0
|
|
520
|
+
|
|
521
|
+
### Per-Client Skills/Prompts/Rules Management
|
|
522
|
+
- **Per-client architecture**: Each client now has its own skills, prompts, rules, or commands tabs based on what it supports
|
|
523
|
+
- **Tab-based UI**: Client cards show relevant tabs (Servers, Skills, Commands, Rules, etc.) depending on the client
|
|
524
|
+
- **Complex skills**: Full support for directory-based skills with file trees and multiple associated files
|
|
525
|
+
- **New API endpoints**: Complete REST API for per-client tab items and file management
|
|
526
|
+
|
|
527
|
+
### Security Hardening
|
|
528
|
+
- Input validation and path traversal protection for skills/rules file operations
|
|
529
|
+
- Sanitized file names and directory paths
|
|
530
|
+
|
|
531
|
+
### CSS Fixes
|
|
532
|
+
- Improved dark mode styling for skills/rules tabs
|
|
533
|
+
- Fixed tab layout and spacing across views
|
|
534
|
+
|
|
535
|
+
---
|
|
536
|
+
|
|
339
537
|
## What's New in v2.1.1
|
|
340
538
|
|
|
341
539
|
### Bug Fix
|
package/package.json
CHANGED
package/public/index.html
CHANGED
|
@@ -97,6 +97,7 @@
|
|
|
97
97
|
</div>
|
|
98
98
|
<div class="server-list-all" id="allServersList"></div>
|
|
99
99
|
</div>
|
|
100
|
+
|
|
100
101
|
</div>
|
|
101
102
|
|
|
102
103
|
<!-- Add/Edit Server Modal -->
|
|
@@ -411,13 +412,108 @@
|
|
|
411
412
|
</div>
|
|
412
413
|
</div>
|
|
413
414
|
|
|
415
|
+
<!-- Skill/Item Edit Modal -->
|
|
416
|
+
<div id="skill-modal" class="modal" style="display: none;">
|
|
417
|
+
<div class="modal-content modal-large" id="skill-modal-content">
|
|
418
|
+
<h3 id="skill-modal-title">Edit Item</h3>
|
|
419
|
+
|
|
420
|
+
<!-- Simple skill view: metadata + content in one pane -->
|
|
421
|
+
<div id="skill-simple-view">
|
|
422
|
+
<form id="skill-form-simple">
|
|
423
|
+
<div class="skill-metadata-row">
|
|
424
|
+
<div class="form-group form-group-name">
|
|
425
|
+
<label for="skill-name">Name</label>
|
|
426
|
+
<input type="text" id="skill-name" name="name" required placeholder="my-skill">
|
|
427
|
+
</div>
|
|
428
|
+
<div class="form-group form-group-model">
|
|
429
|
+
<label for="skill-model">Model</label>
|
|
430
|
+
<input type="text" id="skill-model" name="model" placeholder="claude-3-opus">
|
|
431
|
+
</div>
|
|
432
|
+
</div>
|
|
433
|
+
<div class="form-group">
|
|
434
|
+
<label for="skill-description">Description</label>
|
|
435
|
+
<input type="text" id="skill-description" name="description" placeholder="What this skill does">
|
|
436
|
+
</div>
|
|
437
|
+
<div class="form-group">
|
|
438
|
+
<label for="skill-content">Content</label>
|
|
439
|
+
<textarea id="skill-content" name="content" rows="16" class="skill-content-editor" placeholder="Your skill instructions here..."></textarea>
|
|
440
|
+
</div>
|
|
441
|
+
<div class="modal-actions">
|
|
442
|
+
<button type="button" id="skill-cancel-btn" class="btn btn-secondary">Cancel</button>
|
|
443
|
+
<button type="submit" class="btn btn-primary">Save</button>
|
|
444
|
+
</div>
|
|
445
|
+
</form>
|
|
446
|
+
</div>
|
|
447
|
+
|
|
448
|
+
<!-- Complex skill view: file tree + editor -->
|
|
449
|
+
<div id="skill-complex-view" style="display: none;">
|
|
450
|
+
<div class="skill-complex-layout">
|
|
451
|
+
<div class="skill-file-tree">
|
|
452
|
+
<div class="file-tree-header">
|
|
453
|
+
<span class="file-tree-title">Files</span>
|
|
454
|
+
</div>
|
|
455
|
+
<div id="skill-file-list" class="file-list"></div>
|
|
456
|
+
</div>
|
|
457
|
+
<div class="skill-editor-pane">
|
|
458
|
+
<div class="editor-header">
|
|
459
|
+
<span id="skill-current-file">SKILL.md</span>
|
|
460
|
+
<button type="button" id="skill-save-file-btn" class="btn btn-small btn-primary">Save File</button>
|
|
461
|
+
</div>
|
|
462
|
+
<textarea id="skill-file-editor" class="skill-content-editor" rows="20"></textarea>
|
|
463
|
+
</div>
|
|
464
|
+
</div>
|
|
465
|
+
<div class="modal-actions">
|
|
466
|
+
<button type="button" id="skill-complex-cancel-btn" class="btn btn-secondary">Close</button>
|
|
467
|
+
</div>
|
|
468
|
+
</div>
|
|
469
|
+
</div>
|
|
470
|
+
</div>
|
|
471
|
+
|
|
472
|
+
<!-- Command Modal -->
|
|
473
|
+
<div id="command-modal" class="modal" style="display: none;">
|
|
474
|
+
<div class="modal-content">
|
|
475
|
+
<div class="modal-header">
|
|
476
|
+
<h2 id="command-modal-title">Add Command</h2>
|
|
477
|
+
<button class="close-btn" onclick="document.getElementById('command-modal').style.display='none'">×</button>
|
|
478
|
+
</div>
|
|
479
|
+
<form id="command-form">
|
|
480
|
+
<div class="form-group">
|
|
481
|
+
<label for="command-name">Command Name</label>
|
|
482
|
+
<input type="text" id="command-name" name="name" required placeholder="my-command" pattern="[a-z0-9-]+" title="Lowercase letters, numbers, and hyphens only">
|
|
483
|
+
<small class="form-hint">Will be invoked as /command-name</small>
|
|
484
|
+
</div>
|
|
485
|
+
<div class="form-group">
|
|
486
|
+
<label for="command-description">Description</label>
|
|
487
|
+
<input type="text" id="command-description" name="description" placeholder="What this command does">
|
|
488
|
+
</div>
|
|
489
|
+
<div class="form-group">
|
|
490
|
+
<label for="command-tools">Tools (comma-separated)</label>
|
|
491
|
+
<input type="text" id="command-tools" name="tools" placeholder="git, Read, Bash">
|
|
492
|
+
</div>
|
|
493
|
+
<div class="form-group">
|
|
494
|
+
<label for="command-content">Prompt Content</label>
|
|
495
|
+
<textarea id="command-content" name="content" rows="12" placeholder="The prompt expansion for this command..."></textarea>
|
|
496
|
+
</div>
|
|
497
|
+
<div class="form-actions">
|
|
498
|
+
<button type="button" id="command-cancel-btn" class="btn-secondary">Cancel</button>
|
|
499
|
+
<button type="submit" class="btn-primary">Save Command</button>
|
|
500
|
+
</div>
|
|
501
|
+
</form>
|
|
502
|
+
<div id="command-loading" class="loading-overlay" style="display: none;">
|
|
503
|
+
<div class="spinner"></div>
|
|
504
|
+
</div>
|
|
505
|
+
</div>
|
|
506
|
+
</div>
|
|
507
|
+
|
|
414
508
|
<script type="module" src="js/utils.js?v=4"></script>
|
|
415
509
|
<script type="module" src="js/api.js?v=4"></script>
|
|
416
510
|
<script type="module" src="js/modals.js?v=4"></script>
|
|
417
|
-
<script type="module" src="js/clientView.js?v=
|
|
511
|
+
<script type="module" src="js/clientView.js?v=6"></script>
|
|
418
512
|
<script type="module" src="js/kanbanView.js?v=4"></script>
|
|
419
513
|
<script type="module" src="js/serverView.js?v=4"></script>
|
|
420
514
|
<script type="module" src="js/popularMcps.js?v=4"></script>
|
|
421
|
-
<script type="module" src="js/
|
|
515
|
+
<script type="module" src="js/skillsApi.js?v=7"></script>
|
|
516
|
+
<script type="module" src="js/main.js?v=6"></script>
|
|
517
|
+
<div class="version-tag">v2.3.0</div>
|
|
422
518
|
</body>
|
|
423
519
|
</html>
|