A local-first control center for AI extensions.
Use, review, and discover Skills, MCP servers, and CLI tools across agent harnesses.
AI extensions are scattered across harness-specific folders, MCP config files, and marketplace sources. Skill Manager gives those pieces one local control surface:
| Product idea | What it means |
|---|---|
| In use | Skill Manager controls the item and can enable or disable it across harnesses. |
| Needs review | Skill Manager found local state, config differences, or inventory issues that need a decision. |
| Discover | Browse marketplaces and preview external tools. |
- See what is in use, what needs review, and where extensions are active.
- Adopt local Skills into one shared inventory, then enable or disable them per harness.
- Install or adopt MCP server configs, resolve differences, and enable them where supported.
- Discover Skills, MCP servers, and preview-only CLI tools from marketplace sources.
Start with the whole extension portfolio: what is in use, what needs review, what can be discovered, and where extensions are active.
Use Skills as shared local packages instead of maintaining separate copies per harness.
Typical flow:
- Review a Skill found in a harness or install one from the marketplace.
- Adopt it into the Skill Manager inventory.
- Enable it only where it should be available.
- Update, remove, or delete it from one place.
Use MCP servers as one normalized config that can be written into each harness shape.
Typical flow:
- Review an MCP server found in a harness or install one from the marketplace.
- Adopt it into the Skill Manager inventory.
- Enable it where the server should be available.
- Resolve config differences, disable harness bindings, or uninstall it from one place.
Marketplace is the discovery surface:
- Skills Marketplace: browse and install Skills.
- MCP Marketplace: browse and install MCP servers.
- CLI Marketplace: preview external CLI tools from CLIs.dev. This is display-only; Skill Manager does not install or manage CLIs.
brew tap mode-io/tap
brew install skill-manager
skill-manager startnpm install -g @mode-io/skill-manager
skill-manager start|
Codex CLI Docs |
Claude Code Docs |
Cursor Docs |
OpenCode Docs |
OpenClaw Docs |
| Harness | Skills | MCP servers |
|---|---|---|
| Codex CLI | Yes | Yes |
| Claude Code | Yes | Yes |
| Cursor | Yes | Yes |
| OpenCode | Yes | Yes |
| OpenClaw | Yes | Not Yet |
Skill Manager is a local configuration-management tool. It runs on your machine and reads or writes local harness extension state.
Actions that can change local state include:
- adopting a local skill folder
- enabling or disabling a skill for a harness
- updating a source-backed skill
- removing or deleting a skill
- installing an MCP server into a source harness
- adopting an existing MCP config
- enabling, disabling, resolving, or uninstalling an MCP server
- changing harness support settings
App-owned files live under ~/Library/Application Support/skill-manager on macOS.
Before adoption, each harness points at its own local skill folder. After adoption, Skill Manager keeps one canonical package in its shared local store and exposes it to selected harnesses with local links. Disabling a harness removes that harness binding without deleting the package.
MCP servers are stored as normalized Skill Manager records, then translated into the config shape each harness expects:
- Codex uses TOML under
mcp_servers. - Claude Code and Cursor use
mcpServersJSON entries. - OpenCode uses typed local/remote MCP entries.
- OpenClaw MCP writes are not yet supported.
When Skill Manager finds different configs for the same MCP server, it asks you to resolve the source of truth first.
CLI marketplace entries are preview-only.
On macOS, app-owned files live under ~/Library/Application Support/skill-manager.
Useful paths:
- shared skills store:
~/Library/Application Support/skill-manager/shared - MCP manifest:
~/Library/Application Support/skill-manager/mcp/manifest.json - marketplace cache:
~/Library/Application Support/skill-manager/marketplace - app settings:
~/Library/Application Support/skill-manager/settings.json
Most users do not need to change these locations. If you manage skills in a custom environment, you can override individual skill roots with environment variables.
| Harness | Env var | Default Skill Manager skill root |
|---|---|---|
| Codex | SKILL_MANAGER_CODEX_ROOT |
~/.agents/skills |
| Claude | SKILL_MANAGER_CLAUDE_ROOT |
~/.claude/skills |
| Cursor | SKILL_MANAGER_CURSOR_ROOT |
~/.cursor/skills |
| OpenCode | SKILL_MANAGER_OPENCODE_ROOT |
~/.config/opencode/skills |
| OpenClaw | n/a |
~/.openclaw/skills |
MCP config locations are harness-owned. Skill Manager writes only to verified config paths and skips unsupported harness writes.
- Python 3.11+
- Node.js 18+
- npm
skill-manager supports Python 3.11+. CI validates backend compatibility on Python 3.11 through 3.14, while packaging and release builds stay pinned to Python 3.11 for determinism.
scripts/install-dev.shscripts/start-dev.shStop the managed local instance:
scripts/stop-dev.shThe split dev flow is available when you want Vite hot reload:
npm run dev
npm run dev:backendDefault local URLs:
- Frontend:
http://127.0.0.1:5173 - Backend:
http://127.0.0.1:8000 - Health:
http://127.0.0.1:8000/api/health
Validation:
scripts/install-dev.sh
npm run typecheck
bash scripts/test_backend.sh
npm test
npm run build- If Marketplace requests fail with
Marketplace is temporarily unavailable, verify your network connection and try again. - If
npm install -g @mode-io/skill-managerreports that Homebrew already ownsskill-manager, uninstall the Homebrew formula first. The inverse also applies: uninstall the npm package before switching back to Homebrew. - If an MCP harness is shown as unavailable, Skill Manager has detected that the local client is missing or does not support the required config surface.
- Hook support
- Slash command support
- Plugin support
- GitHub Copilot
- Gemini CLI
- Cline
- Windsurf
- Qwen Code
- Kimi Code
- Qoder
- See CONTRIBUTING.md for contribution guidelines.
- See SECURITY.md to report vulnerabilities privately.



