@skilljack/mcp 0.5.0 → 0.6.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 +117 -4
- package/package.json +12 -4
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
An MCP server that jacks [Agent Skills](https://agentskills.io) directly into your LLM's brain.
|
|
4
4
|
|
|
5
|
-
> **Recommended:** For best results, use an MCP client that supports `tools/listChanged` notifications (e.g., Claude Code). This enables dynamic skill discovery - when skills are added or modified, the client automatically refreshes its understanding of available skills.
|
|
5
|
+
> **Recommended:** For best results, use an MCP client that supports `tools/listChanged` notifications (e.g., Claude Code). This enables dynamic skill discovery - when skills are added or modified, the client automatically refreshes its understanding of available skills. Alternatively, use `--static` mode for predictable behavior with a fixed skill set.
|
|
6
6
|
|
|
7
7
|
## Features
|
|
8
8
|
|
|
@@ -12,6 +12,7 @@ An MCP server that jacks [Agent Skills](https://agentskills.io) directly into yo
|
|
|
12
12
|
- **MCP Prompts** - Load skills via `/skill` prompt with auto-completion or per-skill prompts
|
|
13
13
|
- **MCP Resources** - Access skills via `skill://` URIs with batch collection support
|
|
14
14
|
- **Resource Subscriptions** - Real-time file watching with `notifications/resources/updated`
|
|
15
|
+
- **Configuration UI** - Manage skill directories through an [interactive UI](https://blog.modelcontextprotocol.io/posts/2026-01-26-mcp-apps/) in supported clients
|
|
15
16
|
|
|
16
17
|
## Motivation
|
|
17
18
|
|
|
@@ -65,11 +66,66 @@ SKILLS_DIR=/path/to/skills,/path/to/more/skills skilljack-mcp
|
|
|
65
66
|
|
|
66
67
|
Each directory is scanned along with its `.claude/skills/` and `skills/` subdirectories for skills. Duplicate skill names are handled by keeping the first occurrence.
|
|
67
68
|
|
|
69
|
+
### Static Mode
|
|
70
|
+
|
|
71
|
+
By default, Skilljack MCP watches skill directories for changes and notifies clients when skills are added, modified, or removed.
|
|
72
|
+
|
|
73
|
+
Enable **static mode** to freeze the skills list at startup:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
skilljack-mcp --static /path/to/skills
|
|
77
|
+
# or
|
|
78
|
+
SKILLJACK_STATIC=true skilljack-mcp /path/to/skills
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
In static mode:
|
|
82
|
+
- Skills are discovered once at startup and never refreshed
|
|
83
|
+
- No file watchers are set up for skill directories
|
|
84
|
+
- `tools.listChanged` and `prompts.listChanged` capabilities are `false`
|
|
85
|
+
- Resource subscriptions remain fully dynamic (individual skill files can still be watched)
|
|
86
|
+
|
|
87
|
+
Use static mode when you need predictable behavior or have a fixed set of skills that won't change during the session.
|
|
88
|
+
|
|
68
89
|
**Windows note**: Use forward slashes in paths when using with MCP Inspector:
|
|
69
90
|
```bash
|
|
70
91
|
skilljack-mcp "C:/Users/you/skills"
|
|
71
92
|
```
|
|
72
93
|
|
|
94
|
+
## Configuration UI
|
|
95
|
+
|
|
96
|
+
In MCP clients that support [MCP Apps](https://blog.modelcontextprotocol.io/posts/2026-01-26-mcp-apps/) (like Claude Desktop), you can manage skill directories through an interactive UI.
|
|
97
|
+
|
|
98
|
+
**To open the configuration UI**, ask your assistant to show the skilljack config:
|
|
99
|
+
|
|
100
|
+
> "show me the skilljack config"
|
|
101
|
+
|
|
102
|
+
The UI displays:
|
|
103
|
+
- Current skill directories with skill counts
|
|
104
|
+
- Status indicators showing which directories are from config vs command-line
|
|
105
|
+
- Options to add new directories or remove existing ones
|
|
106
|
+
|
|
107
|
+

|
|
108
|
+
|
|
109
|
+
Changes made through the UI are persisted to the server's configuration. Clients that support `tools/listChanged` notifications will see updates immediately; others may require reconnection.
|
|
110
|
+
|
|
111
|
+
## Skill Display UI
|
|
112
|
+
|
|
113
|
+
View all available skills and customize their invocation settings through the skill display UI.
|
|
114
|
+
|
|
115
|
+
**To open the skill display UI**, ask your assistant:
|
|
116
|
+
|
|
117
|
+
> "what skills are configured in skilljack?"
|
|
118
|
+
|
|
119
|
+
The UI displays:
|
|
120
|
+
- All discovered skills with name, description, and file path
|
|
121
|
+
- **Source indicators** showing whether each skill is from a local directory or GitHub repository
|
|
122
|
+
- **Invocation toggles** to enable/disable Assistant (model auto-invoke) and User (prompts menu) visibility
|
|
123
|
+
- **Customized badge** when settings differ from frontmatter defaults
|
|
124
|
+
|
|
125
|
+

|
|
126
|
+
|
|
127
|
+
Skills from GitHub repositories show the org/repo name (e.g., `modelcontextprotocol/ext-apps`), making it easy to identify where each skill originates.
|
|
128
|
+
|
|
73
129
|
## How It Works
|
|
74
130
|
|
|
75
131
|
The server implements the [Agent Skills](https://agentskills.io) progressive disclosure pattern with dynamic updates:
|
|
@@ -321,16 +377,73 @@ Skills are discovered at startup from the configured directories. For each direc
|
|
|
321
377
|
|
|
322
378
|
Each skill subdirectory must contain a `SKILL.md` file with YAML frontmatter including `name` and `description` fields.
|
|
323
379
|
|
|
380
|
+
## Skill Visibility Control
|
|
381
|
+
|
|
382
|
+
Control which skills appear in tools vs prompts using optional frontmatter fields:
|
|
383
|
+
|
|
384
|
+
| Frontmatter | In Tool Description | In Prompts Menu | Use Case |
|
|
385
|
+
|-------------|---------------------|-----------------|----------|
|
|
386
|
+
| (default) | Yes | Yes | Normal skills |
|
|
387
|
+
| `disable-model-invocation: true` | No | Yes | User-triggered workflows (deploy, commit) |
|
|
388
|
+
| `user-invocable: false` | Yes | No | Background context (model auto-loads when relevant) |
|
|
389
|
+
|
|
390
|
+
### Example: User-Only Skill
|
|
391
|
+
|
|
392
|
+
Hide from model auto-discovery, require explicit user invocation via `/skill-name` prompt:
|
|
393
|
+
|
|
394
|
+
```yaml
|
|
395
|
+
---
|
|
396
|
+
name: deploy
|
|
397
|
+
description: Deploy to production
|
|
398
|
+
disable-model-invocation: true
|
|
399
|
+
---
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
### Example: Model-Only Skill
|
|
403
|
+
|
|
404
|
+
Hide from prompts menu, model uses automatically when relevant:
|
|
405
|
+
|
|
406
|
+
```yaml
|
|
407
|
+
---
|
|
408
|
+
name: codebase-context
|
|
409
|
+
description: Background information about this codebase
|
|
410
|
+
user-invocable: false
|
|
411
|
+
---
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
Note: Resources (`skill://` URIs) always include all skills regardless of these settings, allowing explicit access when needed.
|
|
415
|
+
|
|
324
416
|
## Testing
|
|
325
417
|
|
|
418
|
+
### Manual Testing with MCP Inspector
|
|
419
|
+
|
|
326
420
|
```bash
|
|
327
|
-
# Build first
|
|
328
421
|
npm run build
|
|
422
|
+
npm run inspector -- /path/to/skills
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
### Automated Evals (Development Only)
|
|
426
|
+
|
|
427
|
+
The `evals/` directory contains an evaluation framework for testing skill activation across different delivery modes. Evals are only available when developing from source (not included in the npm package).
|
|
329
428
|
|
|
330
|
-
|
|
331
|
-
|
|
429
|
+
```bash
|
|
430
|
+
# Clone the repo first
|
|
431
|
+
git clone https://github.com/olaservo/skilljack-mcp.git
|
|
432
|
+
cd skilljack-mcp
|
|
433
|
+
|
|
434
|
+
# Install dev dependencies (includes claude-agent-sdk for evals)
|
|
435
|
+
npm install
|
|
436
|
+
|
|
437
|
+
# Build and run evals
|
|
438
|
+
npm run build
|
|
439
|
+
npm run eval # Default: greeting task, MCP mode
|
|
440
|
+
npm run eval -- --task=xlsx-openpyxl # Specific task
|
|
441
|
+
npm run eval -- --mode=native # Native skill mode
|
|
442
|
+
npm run eval -- --mode=mcp+native # Both MCP and native enabled
|
|
332
443
|
```
|
|
333
444
|
|
|
445
|
+
See [evals/README.md](evals/README.md) for details on available tasks, modes, and findings about activation behavior differences.
|
|
446
|
+
|
|
334
447
|
## Related
|
|
335
448
|
|
|
336
449
|
- [Agent Skills Specification](https://agentskills.io)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skilljack/mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "MCP server that discovers and serves Agent Skills. I know kung fu.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
"types": "dist/index.d.ts",
|
|
14
14
|
"files": [
|
|
15
15
|
"dist",
|
|
16
|
+
"dist/ui",
|
|
16
17
|
"README.md",
|
|
17
18
|
"LICENSE"
|
|
18
19
|
],
|
|
@@ -35,7 +36,9 @@
|
|
|
35
36
|
"node": ">=18.0.0"
|
|
36
37
|
},
|
|
37
38
|
"scripts": {
|
|
38
|
-
"build": "tsc",
|
|
39
|
+
"build": "npm run build:ui && npm run build:ui:display && tsc",
|
|
40
|
+
"build:ui": "vite build",
|
|
41
|
+
"build:ui:display": "cross-env INPUT=skill-display.html vite build --emptyOutDir false",
|
|
39
42
|
"start": "node dist/index.js",
|
|
40
43
|
"dev": "tsx watch src/index.ts",
|
|
41
44
|
"inspector": "npx @modelcontextprotocol/inspector@latest node dist/index.js",
|
|
@@ -49,15 +52,20 @@
|
|
|
49
52
|
"eval:xlsx-verify": "tsx evals/eval.ts --task=xlsx-verify"
|
|
50
53
|
},
|
|
51
54
|
"dependencies": {
|
|
52
|
-
"@modelcontextprotocol/
|
|
55
|
+
"@modelcontextprotocol/ext-apps": "^1.0.0",
|
|
56
|
+
"@modelcontextprotocol/sdk": "^1.25.3",
|
|
53
57
|
"chokidar": "^5.0.0",
|
|
58
|
+
"simple-git": "^3.27.0",
|
|
54
59
|
"yaml": "^2.7.0",
|
|
55
60
|
"zod": "^3.25.0"
|
|
56
61
|
},
|
|
57
62
|
"devDependencies": {
|
|
58
63
|
"@anthropic-ai/claude-agent-sdk": "^0.1.42",
|
|
59
64
|
"@types/node": "^22.10.0",
|
|
65
|
+
"cross-env": "^7.0.3",
|
|
60
66
|
"tsx": "^4.19.2",
|
|
61
|
-
"typescript": "^5.7.2"
|
|
67
|
+
"typescript": "^5.7.2",
|
|
68
|
+
"vite": "^6.0.0",
|
|
69
|
+
"vite-plugin-singlefile": "^2.0.0"
|
|
62
70
|
}
|
|
63
71
|
}
|