[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81310":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":15,"stars7d":15,"stars30d":15,"stars90d":16,"forks30d":16,"starsTrendScore":17,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":20,"hasPages":20,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":16,"starSnapshotCount":16,"syncStatus":15,"lastSyncTime":29,"discoverSource":30},81310,"agent-install","millionco\u002Fagent-install","millionco","Install agent skills and MCPs with one API","https:\u002F\u002Fagent-install.com",null,"TypeScript",47,3,45,2,0,6,47.01,"MIT License",false,"main",[23,24,25],"agent","mcps","skills","2026-06-12 04:01:32","# \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fmillionco\u002Fagent-install\u002Fblob\u002Fmain\u002F.github\u002Fassets\u002Flogo.svg?raw=true\" width=\"40\" align=\"center\" \u002F> agent-install\n\n[![version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fagent-install?style=flat&colorA=000000&colorB=000000)](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fagent-install)\n[![downloads](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdt\u002Fagent-install.svg?style=flat&colorA=000000&colorB=000000)](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fagent-install)\n\nInstall agent skills and MCPs with one API.\n\nWorks with Claude Code, Cursor, Codex, OpenCode, and 40+ other coding agents. Writes to each one's native config (skills directory, MCP JSON\u002FJSONC\u002FYAML\u002FTOML, AGENTS.md) so your CLI or build script doesn't have to learn ten different formats. A small `agent-install` CLI is also included for one-off use.\n\n## Install\n\nAs a library:\n\n```bash\nnpm install agent-install\n```\n\nOr use the CLI directly without installing:\n\n```bash\nnpx agent-install@latest --help\n```\n\n## Quick start\n\n```bash\nnpx agent-install@latest skill add owner\u002Frepo -a cursor\nnpx agent-install@latest mcp add https:\u002F\u002Fmcp.context7.com\u002Fmcp -a cursor\nnpx agent-install@latest agents-md set-section \"Testing\" --body \"Run pnpm test\"\n```\n\nSame three actions from the Node API:\n\n```ts\nimport { skill, mcp, agentsMd } from \"agent-install\";\n\nawait skill.add({ source: \"owner\u002Frepo\", agents: [\"cursor\"] });\nmcp.add({ source: \"https:\u002F\u002Fmcp.context7.com\u002Fmcp\", agents: [\"cursor\"], name: \"context7\" });\nagentsMd.setSection({ heading: \"Testing\", body: \"Run pnpm test\" });\n```\n\nThe Node API is namespaced by surface (`skill`, `mcp`, `agentsMd`) using verbs that match the CLI (`add`, `list`, `remove`, `setSection`, `removeSection`, `read`).\n\n## CLI\n\nA thin wrapper around the Node API for one-off installs, scripts, and CI.\n\n### Skills\n\n```bash\nnpx agent-install@latest skill add .\u002Fskills\u002Freact-grab\nnpx agent-install@latest skill add owner\u002Frepo\nnpx agent-install@latest skill add https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo\u002Ftree\u002Fmain\u002Fskills\u002Ffoo\n\nnpx agent-install@latest skill init [name]      # create a new SKILL.md\nnpx agent-install@latest skill list             # list installed skills\nnpx agent-install@latest skill remove [skills]  # remove installed skills\n```\n\n### MCP servers\n\n```bash\nnpx agent-install@latest mcp add https:\u002F\u002Fmcp.context7.com\u002Fmcp -a cursor\nnpx agent-install@latest mcp add @modelcontextprotocol\u002Fserver-postgres -a claude-code --env \"DATABASE_URL=...\"\n\nnpx agent-install@latest mcp list           # list installed MCP servers\nnpx agent-install@latest mcp remove \u003Cname>  # remove by server name\n```\n\n### AGENTS.md\n\n```bash\nnpx agent-install@latest agents-md init\nnpx agent-install@latest agents-md set-section \"Testing\" --body \"Run pnpm test\"\nnpx agent-install@latest agents-md remove-section \"Testing\"\nnpx agent-install@latest agents-md symlink-claude\nnpx agent-install@latest agents-md read\n```\n\n## Node API\n\nYou can also import each surface from its own subpath:\n\n```ts\nimport * as skill from \"agent-install\u002Fskill\";\nimport * as mcp from \"agent-install\u002Fmcp\";\nimport * as agentsMd from \"agent-install\u002Fagents-md\";\n```\n\n### Skills\n\nA skill is a `SKILL.md` file that an agent picks up to trigger behavior. `skill.add` parses a source (local path, GitHub repo, or URL), fetches it, and installs every discovered `SKILL.md` into each selected agent.\n\n```ts\nimport { skill } from \"agent-install\";\n\nconst result = await skill.add({\n  source: \".\u002Fskills\u002Freact-grab\",\n  agents: [\"claude-code\", \"cursor\"],\n});\n\nresult.installed; \u002F\u002F InstalledSkillRecord[]\nresult.failed; \u002F\u002F FailedSkillRecord[]\n```\n\nOther useful exports:\n\n```ts\nskill.discover(dir); \u002F\u002F find SKILL.md files in a directory\nskill.parseSource(spec); \u002F\u002F parse a source string into a ParsedSkillSource\nskill.detectInstalledSkillAgents();\nskill.installSkillForAgent(skill, agent, opts);\n```\n\n### MCP servers\n\n`mcp.add` parses a source (remote URL, npm package, or raw command), builds an `McpServerConfig`, and writes it into each selected agent's native config file (JSON, JSONC, YAML, or TOML). JSONC writes preserve existing comments.\n\n```ts\nimport { mcp } from \"agent-install\";\n\nmcp.add({\n  source: \"https:\u002F\u002Fmcp.context7.com\u002Fmcp\",\n  agents: [\"cursor\", \"claude-code\"],\n  name: \"context7\",\n});\n\nmcp.add({\n  source: \"@modelcontextprotocol\u002Fserver-postgres\",\n  agents: [\"claude-code\"],\n  name: \"postgres\",\n  env: { DATABASE_URL: process.env.DATABASE_URL ?? \"\" },\n});\n\nmcp.list({ agents: [\"cursor\"] });\nmcp.remove({ name: \"context7\", agents: [\"cursor\"] });\n```\n\nOther useful exports:\n\n```ts\nmcp.parseSource(spec);\nmcp.buildMcpServerConfig(parsed, opts);\nmcp.installMcpServerForAgent(name, config, agent, opts);\n```\n\n### AGENTS.md\n\n`agentsMd` reads, upserts, and removes sections in [AGENTS.md](https:\u002F\u002Fagents.md\u002F) and its per-agent variants (`CLAUDE.md`, `GEMINI.md`, `.cursor\u002Frules\u002F`, `.windsurfrules`, etc.) without losing surrounding content.\n\n```ts\nimport { agentsMd } from \"agent-install\";\n\nagentsMd.setSection({\n  heading: \"React Grab\",\n  body: \"Run `npx grab@latest` to set up React Grab.\",\n  placement: \"append\",\n});\n\nagentsMd.removeSection({ heading: \"Old section\" });\nawait agentsMd.symlinkClaude();\n```\n\nOther useful exports:\n\n```ts\nagentsMd.read({ agent: \"cursor\" });\nagentsMd.write({ content: \"...\" });\nagentsMd.parseSections(content);\nagentsMd.findSection(sections, \"Testing\");\nagentsMd.resolveAgentsMdFilePath({ agent: \"claude-code\" });\n```\n\n### Subpath exports\n\n| Import                    | Surface                                                                            |\n| ------------------------- | ---------------------------------------------------------------------------------- |\n| `agent-install`           | All three surfaces as `skill`, `mcp`, `agentsMd` namespaces (+ flat skill exports) |\n| `agent-install\u002Fskill`     | Skill surface only                                                                 |\n| `agent-install\u002Fmcp`       | MCP surface only                                                                   |\n| `agent-install\u002Fagents-md` | AGENTS.md surface (kebab-case path, import as `agentsMd`)                          |\n\nEvery short-name verb has a long-form alias if you prefer it: `skill.add` is `skill.installSkillsFromSource`, `mcp.add` is `mcp.installMcpServer`, `agentsMd.setSection` is `agentsMd.upsertAgentsMdSection`, and so on.\n\n## Source formats\n\n### Skill sources\n\n`skill.add` accepts a wide range of sources. Anything that resolves to a git URL is shallow-cloned into a temp directory, scanned for `SKILL.md` files, and installed.\n\n```\n# Local\n.\u002Fskills\u002Fmy-skill                             # local path\n\u002Fabs\u002Fpath\u002Fto\u002Fskill                            # absolute path\n\n# GitHub\nowner\u002Frepo                                    # shorthand\nowner\u002Frepo\u002Fpath\u002Fto\u002Fskill                      # with subpath\nowner\u002Frepo@skill-name                         # with skill filter\nowner\u002Frepo#branch                             # with git ref\ngithub:owner\u002Frepo                             # explicit prefix\nhttps:\u002F\u002Fgithub.com\u002Fowner\u002Frepo                 # full URL\nhttps:\u002F\u002Fgithub.com\u002Fowner\u002Frepo\u002Ftree\u002Fmain\u002Fskills\u002Ffoo\n\n# GitLab\ngitlab:owner\u002Frepo                             # shorthand\ngitlab:owner\u002Frepo\u002Fpath\u002Fto\u002Fskill               # with subpath\nhttps:\u002F\u002Fgitlab.com\u002Fowner\u002Frepo                 # full URL\nhttps:\u002F\u002Fgitlab.com\u002Fowner\u002Frepo\u002F-\u002Ftree\u002Fmain\u002Fskills\u002Ffoo\n\n# SSH (preserves SSH URL for clone, useful for private repos)\ngit@github.com:owner\u002Frepo.git\ngit@gitlab.com:owner\u002Frepo.git\ngit@github.com:owner\u002Frepo.git#main@my-skill   # with ref + skill filter\n\n# Any other git remote (Bitbucket, self-hosted, etc.)\nhttps:\u002F\u002Fgit.example.com\u002Fowner\u002Frepo.git\ngit@bitbucket.org:owner\u002Frepo.git\n\n# Direct SKILL.md URL\nhttps:\u002F\u002Fexample.com\u002Fpath\u002FSKILL.md\n\n# Well-known skills endpoint (RFC 8615)\n# Auto-discovers \u002F.well-known\u002Fagent-skills\u002Findex.json (or \u002F.well-known\u002Fskills\u002F as fallback)\nhttps:\u002F\u002Fdocs.example.com\nhttps:\u002F\u002Fdocs.example.com\u002F.well-known\u002Fagent-skills\u002Fmy-skill   # specific skill\n```\n\n`skill.add` also reads `.claude-plugin\u002Fmarketplace.json` and `.claude-plugin\u002Fplugin.json` from any cloned source, so skills declared by Claude Code plugin manifests are picked up automatically and tagged with their parent plugin name.\n\n### MCP sources\n\n```\nhttps:\u002F\u002Fmcp.context7.com\u002Fmcp                  # remote HTTP\nhttps:\u002F\u002Fmcp.example.com\u002Fsse (+ transport: \"sse\")\n@modelcontextprotocol\u002Fserver-postgres         # npm package (wrapped in npx -y)\n\"node \u002Fpath\u002Fto\u002Fserver.js --port 3000\"         # raw command\n```\n\n## Supported agents\n\n| Surface   | Agents                                                                                                                                                                                                                                         |\n| --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Skills    | 52 agents incl. Claude Code, Cursor, Codex, OpenCode, Gemini CLI, GitHub Copilot, Amp, Antigravity, Augment, Cline, Continue, Crush, Factory Droid, Goose, Junie, Kilo, Kiro CLI, OpenClaw, Pi, Roo, Trae, Warp, Windsurf, Zencoder, universal |\n| MCP       | Claude Code, Claude Desktop, Cursor, Codex, Cline (ext + CLI), VS Code, GitHub Copilot CLI, Gemini CLI, Goose, OpenCode, Zed, Antigravity, MCPorter                                                                                            |\n| AGENTS.md | Universal, Claude Code (CLAUDE.md), Gemini CLI (GEMINI.md), Cursor (.cursor\u002Frules), Windsurf (.windsurfrules), Codex, OpenCode, Aider                                                                                                          |\n\nThe full list of skill agents lives in [`packages\u002Fagent-install\u002Fsrc\u002Fskill\u002Fagents.ts`](.\u002Fpackages\u002Fagent-install\u002Fsrc\u002Fskill\u002Fagents.ts). Pass `-a \u003Cname>` to target specific agents (or `-a '*'` for all).\n\n## Development\n\n```bash\npnpm install\npnpm build\npnpm test\npnpm lint\npnpm typecheck\n```\n\nSingle package at [`packages\u002Fagent-install`](.\u002Fpackages\u002Fagent-install).\n\n## Resources\n\nFound a bug? Open an issue on the [issue tracker](https:\u002F\u002Fgithub.com\u002Faidenybai\u002Fskill-install\u002Fissues). Pull requests welcome.\n\n### License\n\nagent-install is MIT-licensed open-source software.\n\n## Acknowledgements\n\nPrior work that inspired and informed `agent-install`:\n\n- [vercel-labs\u002Fskills](https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fskills) - the Agent Skills specification and reference skills.\n- [neondatabase\u002Fadd-mcp](https:\u002F\u002Fgithub.com\u002Fneondatabase\u002Fadd-mcp) - one-shot MCP server installer across coding agents.\n- [supermemoryai\u002Finstall-mcp](https:\u002F\u002Fgithub.com\u002Fsupermemoryai\u002Finstall-mcp) - MCP installer CLI with OAuth and multi-client support.\n- [ahmadawais\u002Fadd-skill](https:\u002F\u002Fgithub.com\u002Fahmadawais\u002Fadd-skill) - installing agent skills from any git repository.\n","agent-install 是一个用于通过单一API安装代理技能和MCPs的工具。它支持Claude Code、Cursor、Codex等40多种编码代理，能够将配置写入每个代理的原生配置文件中（如技能目录、MCP JSON\u002FJSONC\u002FYAML\u002FTOML, AGENTS.md），简化了CLI或构建脚本的学习成本。此外，该项目还提供了一个轻量级的CLI工具以供一次性使用。该工具适合需要跨多个不同代理平台统一管理技能和MCP配置的开发者或团队，在开发流程自动化、持续集成等场景下特别有用。","2026-06-11 04:04:34","CREATED_QUERY"]