[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-2055":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":14,"stars7d":16,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":18,"compositeScore":19,"rankGlobal":9,"rankLanguage":9,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":21,"hasPages":21,"topics":23,"createdAt":9,"pushedAt":9,"updatedAt":35,"readmeContent":36,"aiSummary":37,"trendingCount":15,"starSnapshotCount":15,"syncStatus":38,"lastSyncTime":39,"discoverSource":40},2055,"skill-manager","mode-io\u002Fskill-manager","mode-io","Manage skills across Codex CLI, Claude Code, Cursor, OpenCode, and OpenClaw from one local app.",null,"TypeScript",90,6,1,3,0,8,10,9,53.54,"MIT License",false,"main",[24,25,26,27,28,29,30,31,32,33,5,34],"agent-tools","claude-code","codex-cli","cursor","developer-tools","homebrew","macos","npm","openclaw","opencode","skills","2026-06-12 04:00:13","# skill-manager\n\n[中文说明](README.zh-CN.md)\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fskill_manager_logo.svg\" alt=\"Skill Manager\" width=\"520\" \u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>A local-first control center for AI extensions.\u003C\u002Fstrong>\u003Cbr \u002F>\n  Use, review, scan, and discover Skills, MCP servers, slash commands, and CLI tools across agent harnesses.\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"LICENSE\">\u003Cimg alt=\"License: MIT\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-111827?style=flat-square\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmode-io\u002Fskill-manager\u002Freleases\u002Flatest\">\u003Cimg alt=\"Latest release\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Fmode-io\u002Fskill-manager?style=flat-square&color=EA580C\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@mode-io\u002Fskill-manager\">\u003Cimg alt=\"npm version\" src=\"https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F%40mode-io%2Fskill-manager?style=flat-square&logo=npm&logoColor=white\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"#install\">\u003Cimg alt=\"Install with Homebrew\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Finstall-homebrew-FBBF24?style=flat-square&logo=homebrew&logoColor=111827\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"#install\">\u003Cimg alt=\"macOS ARM64\u002Fx64 and Linux x64\u002FARM64\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fplatform-macOS%20ARM64%2Fx64%20%2B%20Linux%20x64%2FARM64-111827?style=flat-square&logo=linux&logoColor=white\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"#local-first-safety\">\u003Cimg alt=\"Local-first\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdata-local--first-0F766E?style=flat-square\" \u002F>\u003C\u002Fa>\n\u003C\u002Fp>\n\n![skill-market-overview](.\u002Fassets\u002Fskill-manager-skill-unification.svg)\n\n## Why it exists\n\nAI extensions are scattered across harness-specific folders, MCP config files, slash command locations, and marketplace sources. Skill Manager gives those pieces one local control surface:\n\n| Product idea | What it means |\n|---|---|\n| **In use** | Skill Manager controls the item and can enable or disable it across harnesses. |\n| **Needs review** | Skill Manager found local state, config differences, or inventory issues that need a decision. |\n| **Scan** | Run LLM-backed security checks against Skills before trusting them. |\n| **Discover** | Browse marketplaces and preview external tools. |\n\n## What you can do\n\n- See what is in use, what needs review, and where extensions are active.\n- Adopt local Skills into one shared inventory, then enable or disable them per harness.\n- Scan Skills with a saved LLM provider configuration and review findings before use.\n- Install or adopt MCP server configs, resolve differences, and enable them where supported.\n- Manage reusable slash commands once, then sync them to supported harnesses.\n- Discover Skills, MCP servers, and preview-only CLI tools from marketplace sources.\n\n## Product tour\n\n### Overview\n\nStart with the whole extension portfolio: what is in use, what needs review, what can be discovered, and where extensions are active.\n\n![skill-market-overview](.\u002Fassets\u002Fskill-manager-overview.png)\n\n### Skills\n\nUse Skills as shared local packages instead of maintaining separate copies per harness.\n\nTypical flow:\n\n1. Review a Skill found in a harness or install one from the marketplace.\n2. Adopt it into the Skill Manager inventory.\n3. Enable it only where it should be available.\n4. Update, remove, or delete it from one place.\n\n![skill-market-skill-matrxi](.\u002Fassets\u002Fskill-manager-skill-matrix.png)\n\n### Skill scanning\n\nScan Skills with an LLM-backed security review before you rely on them.\n\nTypical flow:\n\n1. Add and validate an LLM scan configuration.\n2. Switch Skills in use to the Scan view.\n3. Run a scan for one Skill, selected Skills, or the full visible list.\n4. Review severity, findings, snippets, and remediation guidance.\n\n![skill-manager-scan-view](.\u002Fassets\u002Fskill-manager-scan-view.svg)\n\nScan configurations are managed separately so you can save multiple providers, choose one active configuration, and keep API keys masked in list views.\n\n![skill-manager-scan-config](.\u002Fassets\u002Fskill-manager-scan-config.svg)\n\n### MCP servers\n\nUse MCP servers as one normalized config that can be written into each harness shape.\n\nTypical flow:\n\n1. Review an MCP server found in a harness or install one from the marketplace.\n2. Adopt it into the Skill Manager inventory.\n3. Enable it where the server should be available.\n4. Resolve config differences, disable harness bindings, or uninstall it from one place.\n\n![skill-market-skill-matrxi](.\u002Fassets\u002Fskill-manager-mcp-matrix.png)\n\n### Slash commands\n\nUse slash commands as one shared prompt library instead of rewriting the same command in each harness-specific format.\n\nTypical flow:\n\n1. Create a slash command with a name, description, and prompt.\n2. Use `$ARGUMENTS` where runtime input should be inserted.\n3. Sync it to supported harnesses.\n4. Review existing harness command files and adopt them into the shared library when needed.\n\n![skill-market-slash-commands-matrix](.\u002Fassets\u002Fskill-manager-slash_commands-matrix.png)\n\n### Marketplace\n\nMarketplace is the discovery surface:\n\n- **Skills Marketplace**: browse and install Skills.\n- **MCP Marketplace**: browse and install MCP servers.\n- **CLI Marketplace**: preview external CLI tools from CLIs.dev. This is display-only; Skill Manager does not install or manage CLIs.\n\n![skill-market-skill-matrxi](.\u002Fassets\u002Fskill-manager-marketplace.png)\n\n## Install\n\n### Homebrew (macOS recommended)\n\n```bash\nbrew tap mode-io\u002Ftap\nbrew install skill-manager\nskill-manager start\n```\n\n### npm (macOS ARM64\u002Fx64 and Linux x64\u002FARM64)\n\n```bash\nnpm install -g @mode-io\u002Fskill-manager\nskill-manager start\n```\n\nThe npm wrapper downloads the native release artifact for the current platform and CPU architecture.\n\n## Supported harnesses\n\n\u003Ctable align=\"center\">\n  \u003Ctr>\n    \u003Ctd align=\"center\" valign=\"middle\">\n      \u003Cimg src=\"assets\u002Fharness-logos\u002Fcodex-logo.svg\" alt=\"Codex CLI\" height=\"56\" \u002F>\u003Cbr \u002F>\n      \u003Cstrong>Codex CLI\u003C\u002Fstrong>\u003Cbr \u002F>\n      \u003Ca href=\"https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fcli\">Docs\u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" valign=\"middle\">\n      \u003Cimg src=\"assets\u002Fharness-logos\u002Fclaude-code-logo.svg\" alt=\"Claude Code\" height=\"56\" \u002F>\u003Cbr \u002F>\n      \u003Cstrong>Claude Code\u003C\u002Fstrong>\u003Cbr \u002F>\n      \u003Ca href=\"https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Foverview\">Docs\u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" valign=\"middle\">\n      \u003Cimg src=\"assets\u002Fharness-logos\u002Fcursor-logo.svg\" alt=\"Cursor\" height=\"56\" \u002F>\u003Cbr \u002F>\n      \u003Cstrong>Cursor\u003C\u002Fstrong>\u003Cbr \u002F>\n      \u003Ca href=\"https:\u002F\u002Fcursor.com\u002Fdocs\">Docs\u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" valign=\"middle\">\n      \u003Cimg src=\"assets\u002Fharness-logos\u002Fopencode-logo.svg\" alt=\"OpenCode\" height=\"56\" \u002F>\u003Cbr \u002F>\n      \u003Cstrong>OpenCode\u003C\u002Fstrong>\u003Cbr \u002F>\n      \u003Ca href=\"https:\u002F\u002Fopencode.ai\u002Fdocs\">Docs\u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" valign=\"middle\">\n      \u003Cimg src=\"assets\u002Fharness-logos\u002Fopenclaw-logo.svg\" alt=\"OpenClaw\" height=\"56\" \u002F>\u003Cbr \u002F>\n      \u003Cstrong>OpenClaw\u003C\u002Fstrong>\u003Cbr \u002F>\n      \u003Ca href=\"https:\u002F\u002Fdocs.openclaw.ai\u002Fstart\u002Fgetting-started\">Docs\u003C\u002Fa>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n| Harness | Skills | MCP servers | Slash commands |\n|---|---:|---:|---:|\n| Codex CLI | Yes | Yes | Yes |\n| Claude Code | Yes | Yes | Yes |\n| Cursor | Yes | Yes | Yes |\n| OpenCode | Yes | Yes | Yes |\n| OpenClaw | Yes | Not Yet | Not Yet |\n\n## Local-first safety\n\nSkill Manager is a local configuration-management tool. It runs on your machine and reads or writes local harness extension state.\n\nActions that can change local state include:\n\n- adopting a local skill folder\n- enabling or disabling a skill for a harness\n- updating a source-backed skill\n- removing or deleting a skill\n- creating, updating, validating, activating, or deleting an LLM scan configuration\n- running a Skill scan, which sends selected Skill context to the configured LLM provider\n- installing an MCP server into a selected harness config\n- adopting an existing MCP config\n- enabling, disabling, resolving, or uninstalling an MCP server\n- creating, updating, syncing, importing, or deleting a slash command\n- changing harness support settings\n\nApp-owned files live under `~\u002FLibrary\u002FApplication Support\u002Fskill-manager` on macOS and XDG base directories on Linux.\n\n## How it works\n\n### Skills\n\nBefore 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.\n\n![skill-market-overview](.\u002Fassets\u002Fskill-manager-skill-unification.svg)\n\n### Skill scans\n\nSkill scans build a bounded prompt context from `SKILL.md`, manifest metadata, script and config files, and files referenced by the Skill instructions. Secret-bearing files such as `.env`, private keys, certificates, and credential files are excluded from the prompt context, and large files are skipped when they exceed scanner limits.\n\nThe scanner uses the active saved LLM configuration first. If none is active, it can fall back to supported environment variables such as `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, `OPENROUTER_API_KEY`, `GEMINI_API_KEY`, `GOOGLE_API_KEY`, `AZURE_OPENAI_API_KEY`, `AWS_BEDROCK_MODEL`, or `OLLAMA_HOST`.\n\nScan reports show whether the Skill is safe, the maximum severity, findings, locations, snippets, and remediation text. The frontend caches completed reports in browser local storage so recent results remain visible after navigation.\n\n### MCP servers\n\nMCP servers are stored as normalized Skill Manager records, then translated into the config shape each harness expects:\n\n- Codex uses TOML under `mcp_servers`.\n- Claude Code and Cursor use `mcpServers` JSON entries.\n- OpenCode uses typed local\u002Fremote MCP entries.\n- OpenClaw MCP writes are not yet supported.\n\nWhen Skill Manager finds different configs for the same MCP server, it asks you to resolve the source of truth first.\n\n![skill-market-overview](.\u002Fassets\u002Fskill-manager-mcp-translation.svg)\n\n### Slash commands\n\nSlash commands are stored as TOML records under Skill Manager app storage, then rendered into each supported harness format:\n\n- OpenCode writes Markdown command files under `~\u002F.config\u002Fopencode\u002Fcommands` and invokes them with `\u002F`.\n- Claude Code writes Markdown command files under `~\u002F.claude\u002Fcommands` and invokes them with `\u002F`.\n- Cursor writes plain text command files under `~\u002F.cursor\u002Fcommands` and invokes them with `\u002F`.\n- Codex writes prompt files under `~\u002F.codex\u002Fprompts` and invokes them with `\u002Fprompts:`.\n- OpenClaw slash command writes are not yet supported.\n\nSkill Manager tracks target ownership with sync state and content hashes. It will not overwrite an untracked command file automatically, and it reports managed files as changed or missing when the target no longer matches the last synced hash. Review actions let you adopt unmanaged commands, restore managed content, adopt a changed harness command as the new source, or remove a broken binding while leaving the harness file untouched.\n\n### CLIs\n\nCLI marketplace entries are preview-only.\n\n## Configuration\n\nOn macOS, app-owned files live under `~\u002FLibrary\u002FApplication Support\u002Fskill-manager`. On Linux, app-owned files use XDG base directories.\n\nUseful macOS paths:\n\n- shared skills store: `~\u002FLibrary\u002FApplication Support\u002Fskill-manager\u002Fshared`\n- MCP manifest: `~\u002FLibrary\u002FApplication Support\u002Fskill-manager\u002Fmcp\u002Fmanifest.json`\n- slash command library: `~\u002FLibrary\u002FApplication Support\u002Fskill-manager\u002Fslash-commands\u002Fcommands`\n- slash command sync state: `~\u002FLibrary\u002FApplication Support\u002Fskill-manager\u002Fslash-commands\u002Fsync-state.json`\n- marketplace cache: `~\u002FLibrary\u002FApplication Support\u002Fskill-manager\u002Fmarketplace`\n- app database and LLM scan configs: `~\u002FLibrary\u002FApplication Support\u002Fskill-manager\u002Fskill-manager.db`\n- app settings: `~\u002FLibrary\u002FApplication Support\u002Fskill-manager\u002Fsettings.json`\n\nUseful Linux paths:\n\n- shared skills store: `${XDG_DATA_HOME:-~\u002F.local\u002Fshare}\u002Fskill-manager\u002Fshared`\n- MCP manifest: `${XDG_DATA_HOME:-~\u002F.local\u002Fshare}\u002Fskill-manager\u002Fmcp\u002Fmanifest.json`\n- slash command library: `${XDG_DATA_HOME:-~\u002F.local\u002Fshare}\u002Fskill-manager\u002Fslash-commands\u002Fcommands`\n- slash command sync state: `${XDG_DATA_HOME:-~\u002F.local\u002Fshare}\u002Fskill-manager\u002Fslash-commands\u002Fsync-state.json`\n- marketplace cache: `${XDG_DATA_HOME:-~\u002F.local\u002Fshare}\u002Fskill-manager\u002Fmarketplace`\n- app database and LLM scan configs: `${XDG_DATA_HOME:-~\u002F.local\u002Fshare}\u002Fskill-manager\u002Fskill-manager.db`\n- app settings: `${XDG_CONFIG_HOME:-~\u002F.config}\u002Fskill-manager\u002Fsettings.json`\n\nMost 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.\n\n| Harness | Env var | Default Skill Manager skill root |\n|---|---|---|\n| Codex | `SKILL_MANAGER_CODEX_ROOT` | `~\u002F.agents\u002Fskills` |\n| Claude | `SKILL_MANAGER_CLAUDE_ROOT` | `~\u002F.claude\u002Fskills` |\n| Cursor | `SKILL_MANAGER_CURSOR_ROOT` | `~\u002F.cursor\u002Fskills` |\n| OpenCode | `SKILL_MANAGER_OPENCODE_ROOT` | `~\u002F.config\u002Fopencode\u002Fskills` |\n| OpenClaw | `n\u002Fa` | `~\u002F.openclaw\u002Fskills` |\n\nMCP config locations are harness-owned. Skill Manager writes only to verified config paths and skips unsupported harness writes.\n\n## From source\n\n### Requirements\n\n- Python 3.11+\n- Node.js 18+\n- npm\n\n`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.\n\n### Contributor setup\n\n```bash\nscripts\u002Finstall-dev.sh\n```\n\n### Run locally\n\n```bash\nscripts\u002Fstart-dev.sh\n```\n\nStop the managed local instance:\n\n```bash\nscripts\u002Fstop-dev.sh\n```\n\nThe split dev flow is available when you want Vite hot reload:\n\n```bash\nnpm run dev\nnpm run dev:backend\n```\n\nDefault local URLs:\n\n- Frontend: `http:\u002F\u002F127.0.0.1:5173`\n- Backend: `http:\u002F\u002F127.0.0.1:8000`\n- Health: `http:\u002F\u002F127.0.0.1:8000\u002Fapi\u002Fhealth`\n\nValidation:\n\n```bash\nscripts\u002Finstall-dev.sh\nnpm run typecheck\nbash scripts\u002Ftest_backend.sh\nnpm test\nnpm run build\n```\n\n## Troubleshooting\n\n- If Marketplace requests fail with `Marketplace is temporarily unavailable`, verify your network connection and try again.\n- On macOS, if `npm install -g @mode-io\u002Fskill-manager` reports that Homebrew already owns `skill-manager`, uninstall the Homebrew formula first. The inverse also applies: uninstall the npm package before switching back to Homebrew.\n- 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.\n\n## More to come\n\n### Extension families\n\n- [ ] Hook support\n- [x] Slash command support\n- [ ] Plugin support\n\n### Harness expansion\n\n- [ ] GitHub Copilot\n- [ ] Gemini CLI\n- [ ] Cline\n- [ ] Windsurf\n- [ ] Qwen Code\n- [ ] Kimi Code\n- [ ] Qoder\n\n## Community\n\n- See [CONTRIBUTING.md](CONTRIBUTING.md) for contribution guidelines.\n- See [SECURITY.md](SECURITY.md) to report vulnerabilities privately.\n","Skill Manager 是一个本地应用，用于统一管理Codex CLI、Claude Code、Cursor、OpenCode和OpenClaw等平台上的技能。其核心功能包括在一个控制中心内使用、审查、扫描和发现各种技能、MCP服务器、斜杠命令及CLI工具，支持跨多个代理框架启用或禁用这些组件。该工具采用TypeScript编写，并强调数据的本地优先存储原则，确保用户信息的安全性。它特别适合需要整合不同AI扩展资源的开发者或者团队，在macOS（ARM64\u002Fx64）及Linux（x64\u002FARM64）平台上均可运行，通过npm或Homebrew轻松安装。",2,"2026-06-11 02:47:50","CREATED_QUERY"]