skill-depot
by Ruhal-Doshi
README.md
# skill-depot
> RAG-based skill retrieval system for AI agents. Scalable long-term storage with semantic search via MCP.
**skill-depot** replaces the "dump all skill frontmatter into context" approach with selective, semantic retrieval. Agent skills are stored as Markdown files and indexed with vector embeddings ā only the relevant skills are loaded when needed, keeping context lean.
## ⨠Features
- **š Semantic Search** ā Find skills by meaning, not just keywords, using embedded vector search
- **š Fully Local** ā No API keys, no cloud. Uses SQLite + sqlite-vec for storage and a local transformer model for embeddings
- **š¤ Agent-Agnostic** ā Works with Claude Code, Codex, OpenClaw, Gemini, and any MCP-compatible agent
- **š Two-Scope Storage** ā Global skills (`~/.skill-depot/`) available everywhere, project skills (`.skill-depot/`) synced via git
- **ā” Auto-Discovery** ā Finds existing skills from your AI agents during setup
- **š MCP Protocol** ā Integrates seamlessly as an MCP server with 9 tools for skill management
- **š Tiered Detail Levels** ā Three levels of detail (snippet ā overview ā full content) to minimize token usage
- **š Activity Scoring** ā Frequently used skills rank higher in search results automatically
- **š Relation Tracking** ā Link related skills together so agents can discover connected knowledge
## š Quick Start
### 1. Initialize
```bash
npx skill-depot init
```
This will:
- Create the `~/.skill-depot/` global directory
- Scan for existing skills in Claude Code, Codex, OpenClaw directories
- Let you select which skills to import via an interactive checklist
- Download the embedding model (~80MB, one-time)
- Index all imported skills
### 2. Configure Your Agent
Add skill-depot to your agent's MCP configuration:
**Claude Code** (`~/.claude/mcp.json`):
```json
{
"mcpServers": {
"skill-depot": {
"command": "npx",
"args": ["skill-depot", "serve"]
}
}
}
```
**Codex / OpenClaw / Cursor**: Add the same MCP server config in your agent's settings.
### 3. Use
Your agent now has access to these tools:
| Tool | Description |
|------|-------------|
| `skill_search` | Semantic search ā accepts optional `context` for better relevance |
| `skill_preview` | Get a structured overview (headings + first sentences) without loading full content |
| `skill_read` | Load the full content of a skill |
| `skill_learn` | Learn something new ā creates or appends to a skill (upsert) |
| `skill_save` | Save a new skill and index it |
| `skill_update` | Update an existing skill |
| `skill_delete` | Remove a skill |
| `skill_reindex` | Rebuild the search index |
| `skill_list` | List all indexed skills |
## š How It Works
### The Problem
Traditional agent skill systems load **all** skill file frontmatter into the agent's context window every session. With a large skill library, this wastes precious context on irrelevant information.
### The Solution
skill-depot acts as a **RAG layer** for agent skills:
1. Skills are stored as Markdown files with YAML frontmatter
2. Each skill is embedded into a 384-dimensional vector using a local transformer model
3. When an agent needs a skill, it searches by meaning ā only the most relevant skills are returned
4. Results include a `hasOverview` flag ā agents can load a structured overview (`skill_preview`) or the full content (`skill_read`)
### Tiered Detail Levels
skill-depot serves context at three levels of detail to minimize token usage:
| Level | Tool | What You Get | Typical Size |
|-------|------|-------------|-------------|
| **L0 ā Snippet** | `skill_search` | 200-char preview + metadata | ~200 chars |
| **L1 ā Overview** | `skill_preview` | Headings + first sentence per section | ~500-2000 chars |
| **L2 ā Full** | `skill_read` | Complete raw markdown | Unbounded |
Agents can progressively load detail ā check the snippet, preview the outline, and only load full content when needed:
```
Agent ā skill_search("deploy nextjs to vercel")
ā [{ name: "deploy-vercel", score: 0.92, snippet: "...", hasOverview: true }, ...]
Agent ā skill_preview("deploy-vercel")
ā { overview: "## Steps\nInstall the Vercel CLI.\n\n## Configuration\nSet environment variables." }
Agent ā skill_read("deploy-vercel")
ā Full markdown content of the skill
```
### Context-Aware Search
Pass an optional `context` parameter to `skill_search` for more relevant results. The context is combined with the query before generating the search embedding:
```
Agent ā skill_search({ query: "deploy", context: "Next.js app with Vercel, fixing CI pipeline" })
ā deploy-vercel ranks higher than deploy-aws because the context narrows the search
```
### Agent Learning
Agents can save knowledge on the fly using `skill_learn`. If the skill doesn't exist, it's created. If it does, the new content is appended with a `---` separator, and tags/keywords are merged automatically.
```
Agent ā skill_learn({ name: "nextjs-gotchas", content: "API routes cache by default...", tags: ["nextjs"] })
ā { action: "created" }
Agent ā skill_learn({ name: "nextjs-gotchas", content: "Image optimization requires sharp...", tags: ["images"] })
ā { action: "appended" } // tags merged: ["nextjs", "images"]
```
### Storage Architecture
```
~/.skill-depot/ # Global (all projects)
āāā config.json
āāā models/ # Embedding model cache
āāā skills/ # Global skill files
āāā index.db # SQLite + vector index
<project>/.skill-depot/ # Project-level (git-synced)
āāā skills/ # Project-specific skills
āāā index.db # Project vector index (gitignored)
```
## š ļø CLI Reference
```bash
# Setup
skill-depot init # Interactive setup + agent discovery
skill-depot init --auto # Non-interactive, import everything
# Server
skill-depot serve --project . # Start MCP server (foreground/stdio)
skill-depot start --project . # Start as background daemon
skill-depot stop # Stop daemon
skill-depot status # Check daemon status
skill-depot restart # Restart daemon
# Skill Management
skill-depot add <file> # Add a skill file (project scope)
skill-depot add <file> --global # Add as global skill
skill-depot remove <name> # Remove a skill
skill-depot list # List all skills
skill-depot list --global # List global skills only
skill-depot search <query> # Search skills from CLI
# Maintenance
skill-depot reindex # Rebuild all indexes
skill-depot doctor # Health check
```
## š Skill Format
Skills use standard YAML frontmatter + Markdown ā the same format used by Claude Code, Codex, and other agents:
```markdown
---
name: deploy-to-vercel
description: How to deploy a Next.js application to Vercel
tags: [deployment, vercel, nextjs]
keywords: [vercel cli, production build, environment variables]
related: [setup-env-vars, vercel-domains]
---
## Steps
1. Install the Vercel CLI: `npm i -g vercel`
2. Run `vercel` in the project root
3. Follow the prompts to link your project
...
```
## šļø Tech Stack
| Component | Technology |
|-----------|-----------|
| Language | TypeScript (ESM) |
| Database | SQLite via `better-sqlite3` |
| Vector Search | `sqlite-vec` extension |
| Embeddings | `@xenova/transformers` (`all-MiniLM-L6-v2`) |
| Fallback | BM25 term-frequency hashing |
| Protocol | MCP via `@modelcontextprotocol/sdk` |
| CLI | `commander` + `inquirer` + `chalk` + `ora` |
## š¤ Contributing
Contributions are welcome! This is an open-source project.
```bash
# Clone and install
git clone https://github.com/your-username/skill-depot.git
cd skill-depot
pnpm install
# Development
pnpm dev # Watch mode build
pnpm test # Run tests
pnpm lint # Type check
pnpm build # Production build
```
## š License
MIT
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues