skillhub-local
v0.2.21
Published
Local web app for managing AI agent skills across your PC
Readme
SkillHub Local
One local dashboard for all your AI coding agents.
Skills · Memories · Instructions · Plugins · MCP Servers Claude Code · Codex · Cursor · OpenCode · Pi · DeepSeek Harness · Gemini CLI · Copilot · Windsurf · Cline and more
Using Claude + Codex + Cursor? Your agent context is probably scattered across a dozen hidden folders. SkillHub Local puts all of it — skills, memories, instructions, plugins, and MCP servers — in one place you can actually see and manage.
Install
Requires Node.js (v18+).
SkillHub uses the skills CLI under the hood for install/remove/update/search. It prefers a globally installed binary and falls back to npx skills (or npx skills@<version> via SKILLHUB_SKILLS_VERSION):
npm install -g skillsThen install SkillHub:
npm install -g skillhub-local
skillhub-localOpen http://localhost:3742. That's it.
What you can do
See everything
What skills, memories, and instructions does Claude Code have right now? What MCP servers are configured in Cursor? SkillHub scans your filesystem and shows it all in one dashboard — no more grepping through ~/.claude, ~/.codex, and ~/.cursor.
Move context between agents
Found a useful skill in Claude but want it in Codex? Copy or symlink it with one click. The agent matrix shows which skills live where, and fills the gaps directly.
Clean up the mess
Surf stale memories, duplicate skills, and instruction files spread across projects. Spot what's global vs. project-scoped, what's installed where, and tidy it up from a single view.
Features
- Agent detection — auto-detects 18 agents (Claude Code, Codex, OpenCode, Pi, DeepSeek Harness, Cursor, Gemini CLI, GitHub Copilot, Windsurf, Cline, Amp, Continue, Roo Code, Goose, Antigravity, Hermes, Zed, Warp), showing install status plus skill and plugin counts per agent
- Projects — point SkillHub at your code folders (Settings → Project Directories); each subdirectory becomes a project showing its skills, AGENTS.md files, memories, and MCP servers in one view
- Skill management — scan global and per-project skills (
.claude/skills,.agents/skills,.roo/skills, … parsed fromSKILL.md), install, remove, update, copy/symlink between agents, with per-agent install status and raw content editing - Skill store — browse and search the skills.sh registry, one-click install to all detected agents
- MCP servers — scan server configs (JSON/JSONC/TOML) across 11 agents, including newer Pi releases, live tool discovery, OAuth flow, and per-server header/env credential overrides
- Memories — scan AI-learned context from Codex, Claude Code, Windsurf, Cline, and Gemini CLI; global and project-scoped, with inline editing and re-scan
- Instructions — scan user-authored rules across 12+ agents and
AGENTS.md, with YAML frontmatter badges, inline editing, and configurable project directories - Plugins — detect plugins in agent cache directories (Cursor, Codex), browse skills inside each plugin, and configure custom plugins via
skillhub.config.json - Dashboard — stat cards, per-agent and per-project context breakdowns, and a real-time activity feed over WebSocket
- Settings — default scope, install method (symlink/copy), theme, telemetry, and project directories with a native OS folder picker
Pi and DeepSeek Harness
Both harnesses appear in the existing Agents, Skills, Matrix, Store, Projects, and Instructions views. Shared skill directories alone do not mark a harness as installed; its native home or a native project skill must exist.
| Harness | Native global skills | Native project skills | Shared skills |
| --- | --- | --- | --- |
| Pi | ~/.pi/agent/skills | .pi/skills | ~/.agents/skills, project .agents/skills |
| DeepSeek Harness | ~/.dsh/skills | .dsh/skills | ~/.agents/skills, project .agents/skills |
PI_CODING_AGENT_DIRoverrides Pi's global agent root;DSH_HOMEoverrides DeepSeek's global root;DSH_AGENTS_HOMEoverrides DeepSeek's shared global agent root. Set these in the environment when starting SkillHub, just as when starting the harness.- Scanning follows directory symlinks/junctions and counts the same physical skill only once per agent and scope. Separate copies remain visible. As with other agents, project scanning covers configured project roots, not a running session's full ancestor/touched-file discovery.
- Pi store installs use the upstream
skillsCLI'spitarget (shared Agent Skills directories). DeepSeek store installs stage the download with the CLI'suniversaltarget, then copy into DeepSeek's native skill directory; no unsupporteddeepseek-harnessCLI argument is sent. DeepSeek installs use durable copies even when symlink mode is selected, so temporary downloads can be safely cleaned up. Copy/symlink between agents continues to use native directories for both harnesses. - Pi global instructions are
AGENTS.mdwithCLAUDE.mdas a fallback in its global root, and the same fallback order applies to project roots. Newer Pi'sAGENTS.override.mdtakes precedence when present. DeepSeek reads globalAGENTS.mdfrom its home, plus projectAGENTS.md,CLAUDE.md, and their.local.mdoverlays. - Newer Pi releases have native MCP configs in their global root's
mcp.jsonand project.pi/mcp.json. Legacy Pi versions use extensions instead. DeepSeek configures MCP through Cordis YAML plugin patches, which this scanner does not currently parse; it does not invent a DeepSeekmcp.jsonpath. - Native DeepSeek copies are not tracked by the upstream CLI's update lock; their Update action is disabled. Reinstall after removing the native copy, or edit it directly. Updating another agent's shared copy does not update a separate DeepSeek native copy.
- Pi extension/package management, DeepSeek bundled skills/Cordis plugin management, standalone flat Markdown skills, and harness-specific memory providers are not managed by this integration; skill management uses directory bundles containing
SKILL.md.
Focused regression checks (isolated temporary homes, mocked CLI downloads):
npm run build
node scripts/test-harnesses.mjsConventions are based on Pi's skills documentation, Pi's MCP documentation, and the installed DeepSeek Harness filesystem/instruction plugins.
Setup details
Development from source:
git clone https://github.com/mjalalimanesh/skillhub-local.git
cd skillhub-local
npm install
npm run devFrontend on :5173, backend on :3742; Vite proxies /api and /ws.
Security note: Installing a skill runs its code on your machine. Only install skills from sources you trust.
Authentication
SkillHub binds to 127.0.0.1 and protects every API endpoint with a token generated on first run and stored at ~/.skillhub/token (mode 0600).
- Every
/api/*request (except/api/auth/tokenand/api/health) requires the headerx-skillhub-token: <token> - WebSocket connections pass the token in the query string:
/ws?token=<token> - The token is logged to stdout on startup
This guards against malicious sites reaching the local server, since CORS does not block raw WebSocket or non-browser requests.
Configuration
| Variable | Default | Description |
| --- | --- | --- |
| PORT | 3742 | Backend listen port |
| HOST | 127.0.0.1 | Backend bind address |
| SKILLHUB_FRONTEND_DIST | ../../frontend/dist | Override the production frontend build path |
| SKILLHUB_SKILLS_VERSION | — | Pin the skills CLI version used via npx |
| SKILLHUB_LOG | off | Enable request logging (1 for info, or a pino level) |
Tech Stack
- Frontend: Vite 6 + React 19 + TypeScript + Tailwind CSS v4 + Radix UI + Zustand + React Query
- Backend: Fastify 5 + WebSocket (ws) + gray-matter + smol-toml + marked
- MCP:
@modelcontextprotocol/sdk(live tool discovery, OAuth flow) - CLI:
npx skills(non-interactive flags for install/remove/update/copy) - Store: skills.sh registry via CLI search + HTTP API
Project Structure
packages/
├── frontend/ # Vite + React SPA
│ └── src/
│ ├── components/
│ │ ├── dashboard/ # DashboardPage (stats, activity feed)
│ │ ├── skills/ # SkillsPage, SkillDetailPage, MatrixPage, CopyToAgentsDialog
│ │ ├── agents/ # AgentsPage (agent cards with skill/plugin counts)
│ │ ├── projects/ # ProjectsPage, ProjectDetailPage (per-project context)
│ │ ├── store/ # StorePage (search, trending, install)
│ │ ├── mcp/ # McpPage, McpDetailPage (servers, tool discovery, OAuth)
│ │ ├── plugins/ # PluginsPage (detected + custom plugins, expandable)
│ │ ├── memories/ # MemoriesPage, AgentMemoriesPage, MemoryDetailPage
│ │ ├── instructions/# InstructionsPage, ProjectInstructionsPage, InstructionDetailPage
│ │ ├── settings/ # SettingsPage (scope, method, theme, telemetry, project dirs)
│ │ ├── layout/ # Layout, Sidebar, PageHeader
│ │ └── ui/ # Radix-based primitives (button, card, badge, dialog, etc.)
│ ├── hooks/ # useWebSocket
│ ├── stores/ # Zustand state (agents, skills, progress)
│ └── lib/ # API client, types, utils
└── backend/ # Fastify server (also the skillhub-local CLI entrypoint)
└── src/
├── routes/ # REST endpoints (agents, skills, projects, config, memories, instructions, browse, mcp, auth, health)
└── services/ # Scanner, CLI executor, store API, plugins, memory/instruction/mcp scanners, mcp client + OAuth