Skillsmith
An agent skill discovery, recommendation, and management system for MCP-compatible AI tools, enabling search, install, validate, and compare skills from GitHub.
README
Skillsmith
Craft your agent skill workflow.
Skillsmith is an agent skill discovery, recommendation, and management system for MCP-compatible AI tools. Find the right skills for your projects, install them safely, and learn to use them effectively.
Features
- Discover - Search skills from GitHub with semantic search
- Recommend - Get personalized skill suggestions based on context
- Install - One-command installation to
~/.claude/skills/ - Validate - Quality scores and structure validation
- Trust - Four trust tiers from Official to Community (Security Guide)
- Compare - Side-by-side skill comparison
MCP Tools
| Tool | Description |
|---|---|
search |
Search skills with filters (query, category, trust tier, min score) |
get_skill |
Get detailed skill information including install command |
install_skill |
Install a skill to your local environment |
uninstall_skill |
Remove an installed skill |
recommend |
Get contextual skill recommendations |
validate |
Validate a skill's structure and quality |
compare |
Compare multiple skills side-by-side |
Local-first by design. Skillsmith caches the registry in a local SQLite database at ~/.skillsmith/skills.db, shared across the MCP server, the CLI, and the VS Code extension. Search is FTS5 (SQLite's built-in keyword search) by default; semantic search is opt-in (SKILLSMITH_USE_HNSW=true) and runs over local ONNX embeddings (an open ML model format that runs on CPU — no API call). Inside the Local Skill Database walks through the schema, the FTS5 / HNSW search paths, and how sync keeps the cache fresh.
Architecture
Skillsmith uses the Model Context Protocol (MCP):
┌─────────────────────────────────────────────────────┐
│ MCP Client (Claude Code, Cursor, etc.) │
│ ┌─────────────────────────────────────────────────┐│
│ │ Skillsmith MCP Server ││
│ │ └── @skillsmith/mcp-server ││
│ │ ├── search, get_skill, compare ││
│ │ ├── install_skill, uninstall_skill ││
│ │ └── recommend, validate ││
│ └─────────────────────────────────────────────────┘│
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────┐│
│ │ ~/.skillsmith/skills.db (SQLite + FTS5) ││
│ │ ~/.claude/skills/ (installed skills) ││
│ └─────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────┘
Installation
Quick Setup (MCP)
Skillsmith is MCP-compatible — pick the snippet for your agent.
SMI-4580: snippets sourced from packages/cli/src/templates/mcp-server.template.snippets.ts so this README and the website docs cannot drift.
<details> <summary><strong>Claude Code</strong> — <code>~/.claude/settings.json</code></summary>
{
"mcpServers": {
"@skillsmith/mcp-server": {
"command": "npx",
"args": ["-y", "@skillsmith/mcp-server"],
"env": {
"SKILLSMITH_API_KEY": "sk_live_..."
}
}
}
}
Restart Claude Code after editing settings.json.
</details>
<details> <summary><strong>Cursor</strong> — <code>~/.cursor/mcp.json</code></summary>
{
"mcpServers": {
"@skillsmith/mcp-server": {
"command": "npx",
"args": ["-y", "@skillsmith/mcp-server"],
"env": {
"SKILLSMITH_API_KEY": "sk_live_..."
}
}
}
}
Cursor 2.4+ required. Reload the window after saving.
</details>
<details> <summary><strong>GitHub Copilot (VS Code)</strong> — <code>.vscode/mcp.json</code> (workspace)</summary>
{
"mcpServers": {
"@skillsmith/mcp-server": {
"command": "npx",
"args": ["-y", "@skillsmith/mcp-server"],
"env": {
"SKILLSMITH_API_KEY": "sk_live_..."
}
}
}
}
VS Code 1.108+ required. Workspace-scoped (commit to repo if team-shared, or use user settings.json instead).
</details>
<details> <summary><strong>Windsurf</strong> — <code>~/.codeium/windsurf/mcp_config.json</code></summary>
{
"mcpServers": {
"@skillsmith/mcp-server": {
"command": "npx",
"args": ["-y", "@skillsmith/mcp-server"],
"env": {
"SKILLSMITH_API_KEY": "${env:SKILLSMITH_API_KEY}"
}
}
}
}
Supports ${env:VAR} interpolation; export SKILLSMITH_API_KEY in your shell instead of inlining the secret.
</details>
<details> <summary><strong>Codex CLI</strong> — <code>~/.codex/config.toml</code> (TOML, not JSON)</summary>
[mcp_servers.@skillsmith/mcp-server]
command = "npx"
args = ["-y", "@skillsmith/mcp-server"]
[mcp_servers.@skillsmith/mcp-server.env]
SKILLSMITH_API_KEY = "sk_live_..."
Codex reads ~/.agents/skills. When installing via CLI, pass --client agents.
</details>
<details> <summary><strong>Cross-agent (open standard)</strong> — <code>~/.agents/mcp.json</code></summary>
{
"mcpServers": {
"@skillsmith/mcp-server": {
"command": "npx",
"args": ["-y", "@skillsmith/mcp-server"],
"env": {
"SKILLSMITH_API_KEY": "sk_live_..."
}
}
}
}
Read by any agent honouring the cross-agent skill convention.
</details>
After adding to your MCP client settings and restarting, you can search for skills immediately.
API Key Configuration (Optional)
For higher rate limits and usage tracking, authenticate with your API key.
Easiest — CLI login (interactive):
npm install -g @skillsmith/cli
skillsmith login
This opens skillsmith.app/account/cli-token in your browser. Generate a key, copy it, and paste it when prompted. The key is stored securely in your OS keyring.
MCP server config — add the key to your settings:
The per-client snippets above already include the env.SKILLSMITH_API_KEY slot — replace the sk_live_... placeholder with the value from skillsmith login.
Get your API key at skillsmith.app/account/cli-token.
| Tier | Rate Limit | Cost |
|---|---|---|
| Trial | 100 total | Free |
| Community | 30/min | Free |
| Individual | 60/min | $9.99/mo |
| Team | 120/min | $25/user/mo |
| Enterprise | 300/min | $55/user/mo |
Note: Never paste API keys in chat. Configure via settings.json only.
CLI Installation (Development)
The CLI is available for local development:
# From the repository root
npm run build
node packages/cli/dist/index.js search "testing"
Usage
Once configured, your MCP client can use Skillsmith tools:
"Search for testing skills"
→ Uses search tool to find testing-related skills
"Show me details for community/jest-helper"
→ Uses get_skill tool to retrieve full skill information
"Install the jest-helper skill"
→ Uses install_skill tool to add it to ~/.claude/skills
"Compare jest-helper and vitest-helper"
→ Uses compare tool to show side-by-side comparison
CLI Usage (Development)
# From the repository, after building
node packages/cli/dist/index.js search "testing" --tier verified --min-score 80
node packages/cli/dist/index.js get community/jest-helper
node packages/cli/dist/index.js install community/jest-helper
Documentation
Public
- Security Guide - Understanding skill trust, safety, and protections
- 5-Minute Setup - Quick start guide
- Configuration Guide - Complete setup and usage
Internal
Internal documentation is in a private submodule at docs/internal/. Access requires repository membership. Run git submodule update --init after cloning.
- Engineering Standards - Code quality policies (requires repository access)
- ADR Index - Architecture Decision Records (requires repository access)
- Security Checklist - Security review guidelines (requires repository access)
- Phase Retrospectives - Phase learnings (requires repository access)
Development
Skillsmith uses Docker-first development. All commands run inside Docker to ensure consistent native module support across all platforms.
Prerequisites
- Docker Desktop (v24+) or Docker Engine with Docker Compose
- Git (for cloning the repository)
- Node.js (optional, only for local tooling outside Docker)
Quick Start
# 1. Clone the repository
git clone https://github.com/smith-horn/skillsmith.git
cd skillsmith
# 2. Create your local environment file
cp .env.example .env
# 3. Start the development container
docker compose --profile dev up -d
# 4. Install dependencies (first time only)
docker exec skillsmith-dev-1 npm install
# 5. Build and test
docker exec skillsmith-dev-1 npm run build
docker exec skillsmith-dev-1 npm test
Running Commands in Docker
All npm commands should be run inside the Docker container:
| Command | Docker Command |
|---|---|
| Build | docker exec skillsmith-dev-1 npm run build |
| Test | docker exec skillsmith-dev-1 npm test |
| Lint | docker exec skillsmith-dev-1 npm run lint |
| Typecheck | docker exec skillsmith-dev-1 npm run typecheck |
| Audit | docker exec skillsmith-dev-1 npm run audit:standards |
Container Management
# Start development container
docker compose --profile dev up -d
# Check container status
docker ps | grep skillsmith
# View container logs
docker logs skillsmith-dev-1
# Stop container
docker compose --profile dev down
# Restart after Dockerfile changes
docker compose --profile dev down
docker compose --profile dev build --no-cache
docker compose --profile dev up -d
After Pulling Changes
When you pull changes that modify package.json or package-lock.json:
docker exec skillsmith-dev-1 npm install
docker exec skillsmith-dev-1 npm run build
Troubleshooting
Container won't start
docker compose --profile dev down
docker volume rm skillsmith_node_modules
docker compose --profile dev up -d
docker exec skillsmith-dev-1 npm install
Native module errors (ERR_DLOPEN_FAILED)
Native modules like better-sqlite3 and onnxruntime-node may need rebuilding:
docker exec skillsmith-dev-1 npm rebuild
Tests fail with shared library errors
If you see errors about ld-linux-aarch64.so.1 or similar, ensure you're running inside Docker (not locally):
# Wrong - don't run locally
npm test
# Correct - run in Docker
docker exec skillsmith-dev-1 npm test
Why Docker?
Skillsmith uses native Node.js modules (better-sqlite3, onnxruntime-node) that require glibc. Docker provides a consistent Debian-based environment with glibc, avoiding compatibility issues on systems using musl libc (like Alpine Linux).
For the full technical decision, see ADR-002: Docker with glibc for Native Module Compatibility.
See CLAUDE.md for full development workflow and skill configuration.
Tech Stack
- Runtime: Node.js 20+ (Docker with glibc)
- Protocol: MCP (Model Context Protocol)
- Database: SQLite with FTS5
- Embeddings: all-MiniLM-L6-v2 via onnxruntime-node
- Testing: Vitest
- CI/CD: GitHub Actions
License
Skillsmith is source-available under the Elastic License 2.0.
You CAN:
- Use Skillsmith for personal or internal business purposes
- Modify the source code for your own use
- Self-host for your team
- Contribute bug fixes and improvements
You CANNOT:
- Offer Skillsmith as a managed service to third parties
- Circumvent license key enforcement features
For the full license text, see the LICENSE file.
Author
Smith Horn Group Ltd
Skillsmith is not affiliated with Anthropic. Claude and Claude Code are trademarks of Anthropic.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。