@skilljack/mcp
Advanced tools
+12
-4
| { | ||
| "name": "@skilljack/mcp", | ||
| "version": "0.5.1", | ||
| "version": "0.6.0", | ||
| "description": "MCP server that discovers and serves Agent Skills. I know kung fu.", | ||
@@ -16,2 +16,3 @@ "type": "module", | ||
| "dist", | ||
| "dist/ui", | ||
| "README.md", | ||
@@ -39,3 +40,5 @@ "LICENSE" | ||
| "scripts": { | ||
| "build": "tsc", | ||
| "build": "npm run build:ui && npm run build:ui:display && tsc", | ||
| "build:ui": "vite build", | ||
| "build:ui:display": "cross-env INPUT=skill-display.html vite build --emptyOutDir false", | ||
| "start": "node dist/index.js", | ||
@@ -54,4 +57,6 @@ "dev": "tsx watch src/index.ts", | ||
| "dependencies": { | ||
| "@modelcontextprotocol/sdk": "^1.25.1", | ||
| "@modelcontextprotocol/ext-apps": "^1.0.0", | ||
| "@modelcontextprotocol/sdk": "^1.25.3", | ||
| "chokidar": "^5.0.0", | ||
| "simple-git": "^3.27.0", | ||
| "yaml": "^2.7.0", | ||
@@ -63,5 +68,8 @@ "zod": "^3.25.0" | ||
| "@types/node": "^22.10.0", | ||
| "cross-env": "^7.0.3", | ||
| "tsx": "^4.19.2", | ||
| "typescript": "^5.7.2" | ||
| "typescript": "^5.7.2", | ||
| "vite": "^6.0.0", | ||
| "vite-plugin-singlefile": "^2.0.0" | ||
| } | ||
| } |
+93
-1
@@ -5,3 +5,3 @@ # Skilljack MCP | ||
| > **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. | ||
| > **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. | ||
@@ -16,2 +16,3 @@ ## Features | ||
| - **Resource Subscriptions** - Real-time file watching with `notifications/resources/updated` | ||
| - **Configuration UI** - Manage skill directories through an [interactive UI](https://blog.modelcontextprotocol.io/posts/2026-01-26-mcp-apps/) in supported clients | ||
@@ -70,2 +71,22 @@ ## Motivation | ||
| ### Static Mode | ||
| By default, Skilljack MCP watches skill directories for changes and notifies clients when skills are added, modified, or removed. | ||
| Enable **static mode** to freeze the skills list at startup: | ||
| ```bash | ||
| skilljack-mcp --static /path/to/skills | ||
| # or | ||
| SKILLJACK_STATIC=true skilljack-mcp /path/to/skills | ||
| ``` | ||
| In static mode: | ||
| - Skills are discovered once at startup and never refreshed | ||
| - No file watchers are set up for skill directories | ||
| - `tools.listChanged` and `prompts.listChanged` capabilities are `false` | ||
| - Resource subscriptions remain fully dynamic (individual skill files can still be watched) | ||
| Use static mode when you need predictable behavior or have a fixed set of skills that won't change during the session. | ||
| **Windows note**: Use forward slashes in paths when using with MCP Inspector: | ||
@@ -76,2 +97,37 @@ ```bash | ||
| ## Configuration UI | ||
| 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. | ||
| **To open the configuration UI**, ask your assistant to show the skilljack config: | ||
| > "show me the skilljack config" | ||
| The UI displays: | ||
| - Current skill directories with skill counts | ||
| - Status indicators showing which directories are from config vs command-line | ||
| - Options to add new directories or remove existing ones | ||
|  | ||
| 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. | ||
| ## Skill Display UI | ||
| View all available skills and customize their invocation settings through the skill display UI. | ||
| **To open the skill display UI**, ask your assistant: | ||
| > "what skills are configured in skilljack?" | ||
| The UI displays: | ||
| - All discovered skills with name, description, and file path | ||
| - **Source indicators** showing whether each skill is from a local directory or GitHub repository | ||
| - **Invocation toggles** to enable/disable Assistant (model auto-invoke) and User (prompts menu) visibility | ||
| - **Customized badge** when settings differ from frontmatter defaults | ||
|  | ||
| Skills from GitHub repositories show the org/repo name (e.g., `modelcontextprotocol/ext-apps`), making it easy to identify where each skill originates. | ||
| ## How It Works | ||
@@ -328,2 +384,38 @@ | ||
| ## Skill Visibility Control | ||
| Control which skills appear in tools vs prompts using optional frontmatter fields: | ||
| | Frontmatter | In Tool Description | In Prompts Menu | Use Case | | ||
| |-------------|---------------------|-----------------|----------| | ||
| | (default) | Yes | Yes | Normal skills | | ||
| | `disable-model-invocation: true` | No | Yes | User-triggered workflows (deploy, commit) | | ||
| | `user-invocable: false` | Yes | No | Background context (model auto-loads when relevant) | | ||
| ### Example: User-Only Skill | ||
| Hide from model auto-discovery, require explicit user invocation via `/skill-name` prompt: | ||
| ```yaml | ||
| --- | ||
| name: deploy | ||
| description: Deploy to production | ||
| disable-model-invocation: true | ||
| --- | ||
| ``` | ||
| ### Example: Model-Only Skill | ||
| Hide from prompts menu, model uses automatically when relevant: | ||
| ```yaml | ||
| --- | ||
| name: codebase-context | ||
| description: Background information about this codebase | ||
| user-invocable: false | ||
| --- | ||
| ``` | ||
| Note: Resources (`skill://` URIs) always include all skills regardless of these settings, allowing explicit access when needed. | ||
| ## Testing | ||
@@ -330,0 +422,0 @@ |
92252
4.58%452
25.56%6
50%7
75%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added