{"_id":"@agiflowai/openskill","_rev":"4-33a1327a06a8e40890d386380262529c","name":"@agiflowai/openskill","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"name":"@agiflowai/openskill","version":"0.1.0","keywords":["mcp","model-context-protocol","typescript"],"license":"AGPL-3.0","_id":"@agiflowai/openskill@0.1.0","maintainers":[{"name":"agiflow-ai","email":"agiflow.ai@gmail.com"}],"bin":{"openskill":"dist/cli.cjs"},"dist":{"shasum":"ad0cab59cf45004960c49cf2710b03b9a82c095c","tarball":"https://registry.npmjs.org/@agiflowai/openskill/-/openskill-0.1.0.tgz","fileCount":20,"integrity":"sha512-DIS0nNoXTHWu2EPKhdc/UT1YkQ/z0JMarqI+iGRnGE45H8mJnOJ42Yw5Jp0i4ySmMicvQva0XGTM616d96R/WQ==","signatures":[{"sig":"MEYCIQDKOtnSx3eN7yczwQ8vJCzVBBjwMthmf1lUdN8G09AQ/gIhANyYt7dYTJcgi+S4C+f2IbRRAaNZqntxwvT1HuZC9vGz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1938880},"main":"./dist/index.cjs","type":"module","_from":"file:agiflowai-openskill-0.1.0.tgz","types":"./dist/index.d.cts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"import":"./dist/cli.js","require":"./dist/cli.cjs"},"./package.json":"./package.json","./proxy-server":{"import":"./dist/proxy-server.js","require":"./dist/proxy-server.cjs"}},"scripts":{"dev":"node --loader ts-node/esm src/cli.ts mcp-serve","test":"vitest --run","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"agiflow-ai","email":"agiflow.ai@gmail.com"},"_resolved":"/private/var/folders/rz/yh7vg59x3jb9fcf8xv4y_6g40000gn/T/c9eb9f0255fb75156f7be360bf239f69/agiflowai-openskill-0.1.0.tgz","_integrity":"sha512-DIS0nNoXTHWu2EPKhdc/UT1YkQ/z0JMarqI+iGRnGE45H8mJnOJ42Yw5Jp0i4ySmMicvQva0XGTM616d96R/WQ==","_npmVersion":"11.4.2","description":"Model Context Protocol server for OpenSkill rating system integration","directories":{},"_nodeVersion":"24.4.1","dependencies":{"hono":"^4.10.1","chalk":"5.6.2","commander":"14.0.1","gray-matter":"^4.0.3","@hono/node-server":"^1.19.5","@modelcontextprotocol/sdk":"1.19.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","@nx/js":"^21.6.5","tsdown":"^0.15.6","vitest":"^2.1.8","typescript":"5.9.3","@types/node":"^22.0.0","@commitlint/cli":"^20.1.0","@commitlint/config-conventional":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openskill_0.1.0_1760952661259_0.3673857025185481","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@agiflowai/openskill","version":"0.1.1","keywords":["mcp","model-context-protocol","typescript"],"license":"AGPL-3.0","_id":"@agiflowai/openskill@0.1.1","maintainers":[{"name":"agiflow-ai","email":"agiflow.ai@gmail.com"}],"bin":{"openskill":"dist/cli.cjs"},"dist":{"shasum":"4ebcae528d48ee5dc137717700e3ec6dfaee8e3f","tarball":"https://registry.npmjs.org/@agiflowai/openskill/-/openskill-0.1.1.tgz","fileCount":20,"integrity":"sha512-06pgS4sbel7ZeMSne+SdGpyhJgw1yUEa6BvtYBIBJRbJM8BHd4qLkVk69bzy+eqgjdSdFRrzd0Rk34/n6swh+g==","signatures":[{"sig":"MEYCIQD25OECrty9WS57sgEjoYtv0+9ntK0TDVmXxfVZ6/BwxAIhAJ5eTm6RoVGnhjTifxzIdvNiCvFESJOw/2pGJI9oAph3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1946479},"main":"./dist/index.cjs","type":"module","_from":"file:agiflowai-openskill-0.1.1.tgz","types":"./dist/index.d.cts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"import":"./dist/cli.js","require":"./dist/cli.cjs"},"./package.json":"./package.json","./proxy-server":{"import":"./dist/proxy-server.js","require":"./dist/proxy-server.cjs"}},"scripts":{"dev":"node --loader ts-node/esm src/cli.ts mcp-serve","test":"vitest --run","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"agiflow-ai","email":"agiflow.ai@gmail.com"},"_resolved":"/private/var/folders/rz/yh7vg59x3jb9fcf8xv4y_6g40000gn/T/bf4cfb6dc178ac05b68c12d84c519125/agiflowai-openskill-0.1.1.tgz","_integrity":"sha512-06pgS4sbel7ZeMSne+SdGpyhJgw1yUEa6BvtYBIBJRbJM8BHd4qLkVk69bzy+eqgjdSdFRrzd0Rk34/n6swh+g==","_npmVersion":"11.4.2","description":"Model Context Protocol server for OpenSkill rating system integration","directories":{},"_nodeVersion":"24.4.1","dependencies":{"hono":"^4.10.1","chalk":"5.6.2","commander":"14.0.1","gray-matter":"^4.0.3","@hono/node-server":"^1.19.5","@modelcontextprotocol/sdk":"1.19.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","@nx/js":"^21.6.5","tsdown":"^0.15.6","vitest":"^2.1.8","typescript":"5.9.3","@types/node":"^22.0.0","@commitlint/cli":"^20.1.0","@commitlint/config-conventional":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openskill_0.1.1_1760959012275_0.4507959353723816","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@agiflowai/openskill","version":"0.1.2","keywords":["mcp","model-context-protocol","typescript"],"license":"AGPL-3.0","_id":"@agiflowai/openskill@0.1.2","maintainers":[{"name":"agiflow-ai","email":"agiflow.ai@gmail.com"}],"bin":{"openskill":"dist/cli.cjs"},"dist":{"shasum":"6df5fe5fceafca643bef5b2c2a60b0c65ab6aafc","tarball":"https://registry.npmjs.org/@agiflowai/openskill/-/openskill-0.1.2.tgz","fileCount":20,"integrity":"sha512-cUD3tqsZB+oIygmTuwAlmGns5MpJmXwmw7BswRUmTtWbFBNbALaCxWlNrPz5aHapVJSoqXQko73hWZuFOCt8Aw==","signatures":[{"sig":"MEYCIQDsv3lrdKi28B2Tr/zU7no4P7UgU6+0UpgEforx+x/fGAIhALap+rpY7GuPQirooJNclHdbIOXUU22a/yu1vexuIAHQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1947123},"main":"./dist/index.cjs","type":"module","_from":"file:agiflowai-openskill-0.1.2.tgz","types":"./dist/index.d.cts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"import":"./dist/cli.js","require":"./dist/cli.cjs"},"./package.json":"./package.json","./proxy-server":{"import":"./dist/proxy-server.js","require":"./dist/proxy-server.cjs"}},"scripts":{"dev":"node --loader ts-node/esm src/cli.ts mcp-serve","test":"vitest --run","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"agiflow-ai","email":"agiflow.ai@gmail.com"},"_resolved":"/private/var/folders/rz/yh7vg59x3jb9fcf8xv4y_6g40000gn/T/9cdc631513cc8ac929e32e55de308bda/agiflowai-openskill-0.1.2.tgz","_integrity":"sha512-cUD3tqsZB+oIygmTuwAlmGns5MpJmXwmw7BswRUmTtWbFBNbALaCxWlNrPz5aHapVJSoqXQko73hWZuFOCt8Aw==","_npmVersion":"11.4.2","description":"Model Context Protocol server for OpenSkill rating system integration","directories":{},"_nodeVersion":"24.4.1","dependencies":{"hono":"^4.10.1","chalk":"5.6.2","commander":"14.0.1","gray-matter":"^4.0.3","@hono/node-server":"^1.19.5","@modelcontextprotocol/sdk":"1.19.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","@nx/js":"^21.6.5","tsdown":"^0.15.6","vitest":"^2.1.8","typescript":"5.9.3","@types/node":"^22.0.0","@commitlint/cli":"^20.1.0","@commitlint/config-conventional":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openskill_0.1.2_1762062044936_0.38847290138411417","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@agiflowai/openskill","description":"Model Context Protocol server for OpenSkill rating system integration","version":"0.1.3","license":"AGPL-3.0","keywords":["mcp","model-context-protocol","typescript"],"bin":{"openskill":"dist/cli.cjs"},"main":"./dist/index.cjs","types":"./dist/index.d.cts","module":"./dist/index.js","dependencies":{"@hono/node-server":"^1.19.5","@modelcontextprotocol/sdk":"1.19.1","chalk":"5.6.2","commander":"14.0.1","gray-matter":"^4.0.3","hono":"^4.10.1"},"devDependencies":{"@commitlint/cli":"^20.1.0","@commitlint/config-conventional":"^20.0.0","@nx/js":"^21.6.5","@types/node":"^22.0.0","husky":"^9.1.7","tsdown":"^0.15.6","typescript":"5.9.3","vitest":"^2.1.8"},"type":"module","publishConfig":{"access":"public"},"exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"import":"./dist/cli.js","require":"./dist/cli.cjs"},"./proxy-server":{"import":"./dist/proxy-server.js","require":"./dist/proxy-server.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"node --loader ts-node/esm src/cli.ts mcp-serve","build":"tsdown","test":"vitest --run","typecheck":"tsc --noEmit"},"_id":"@agiflowai/openskill@0.1.3","_integrity":"sha512-g5wAy3qpwtbc+ZRlD0CY66lrGIqYfaWAKxxPDvGxnnWDlMOsBbHhq731CkQFJmG5NCf2agUe39X8VvG3ViOYDg==","_resolved":"/private/var/folders/rz/yh7vg59x3jb9fcf8xv4y_6g40000gn/T/2645a48f64911c2583c24b612c60ad3d/agiflowai-openskill-0.1.3.tgz","_from":"file:agiflowai-openskill-0.1.3.tgz","_nodeVersion":"24.4.1","_npmVersion":"11.4.2","dist":{"integrity":"sha512-g5wAy3qpwtbc+ZRlD0CY66lrGIqYfaWAKxxPDvGxnnWDlMOsBbHhq731CkQFJmG5NCf2agUe39X8VvG3ViOYDg==","shasum":"cd1d23a0843c2b1e1cb6b2a7d051ecf6ab31f635","tarball":"https://registry.npmjs.org/@agiflowai/openskill/-/openskill-0.1.3.tgz","fileCount":20,"unpackedSize":1947123,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDnZIDmxtzoEqcUUQ9xFnGUSSirefPGXL+PidqnmInIeAIgepZOFUYFeTf66SJccT/mfaYj70mdlRN24m+2wFhbVy0="}]},"_npmUser":{"name":"agiflow-ai","email":"agiflow.ai@gmail.com"},"directories":{},"maintainers":[{"name":"agiflow-ai","email":"agiflow.ai@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openskill_0.1.3_1763552591183_0.6917756411797225"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-20T09:31:01.175Z","modified":"2025-11-19T11:43:11.619Z","0.1.0":"2025-10-20T09:31:01.509Z","0.1.1":"2025-10-20T11:16:52.497Z","0.1.2":"2025-11-02T05:40:45.176Z","0.1.3":"2025-11-19T11:43:11.403Z"},"license":"AGPL-3.0","keywords":["mcp","model-context-protocol","typescript"],"description":"Model Context Protocol server for OpenSkill rating system integration","maintainers":[{"name":"agiflow-ai","email":"agiflow.ai@gmail.com"}],"readme":"# @agiflowai/openskill\n\n[![npm version](https://img.shields.io/npm/v/@agiflowai/openskill.svg?style=flat-square)](https://www.npmjs.com/package/@agiflowai/openskill)\n[![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL%203.0-blue.svg?style=flat-square)](https://opensource.org/licenses/AGPL-3.0)\n[![Discord](https://dcbadge.limes.pink/api/server/https://discord.gg/NsB6q9Vas9?style=flat-square)](https://discord.gg/NsB6q9Vas9)\n\nModel Context Protocol (MCP) server that enables [Anthropic Skills](https://www.anthropic.com/news/skills) to work with any coding agent and client that supports MCP servers. Provides skill management and sandboxed execution capabilities.\n\n## Features\n\n- **Universal Compatibility**: Makes Anthropic Skills work with any MCP-compatible AI coding agent (Cline, Roo Code, Continue, Zed, etc.)\n- **Skill Management**: Read and execute skills from `.claude/skills/` directory\n- **Sandboxed Execution**: Execute bash commands in isolated Docker containers for security\n- **Volume Mounting**: Mount host directories into containers for file access\n- **MCP Tools**: `get-skill` and `use-skill` tools for seamless integration\n- **CLI Commands**: Direct command-line access to all functionality\n- **Custom Images**: Support for custom Docker images tailored to your needs\n- **Pre-configured Environment**: Python (uv, pip, poetry, pipenv, Pillow) and Node.js tooling out of the box\n\n## MCP Tools\n\n### get-skill\n\nRetrieves skill information from the skills directory. You can use anthopic's skills in github and put that in .claude/skills or your custom skill folder and that should work.\n\n**Input:**\n- `command` (string): Name of the skill to retrieve\n\n**Example:**\n```json\n{\n  \"command\": \"canvas-design\"\n}\n```\n\n### use-skill\n\nExecutes bash commands in a sandboxed Docker environment for a specific skill.\n\n**Input:**\n- `skillName` (string): Name of the skill to execute\n- `bash` (string): Bash command to execute\n\n**Example:**\n```json\n{\n  \"skillName\": \"canvas-design\",\n  \"bash\": \"python generate.py output.pdf\"\n}\n```\n\n## CLI Commands\n\n### mcp-serve\n\nStart the MCP server with stdio transport.\n\n```bash\nnode dist/cli.js mcp-serve [options]\n```\n\n**Options:**\n- `-t, --type <type>`: Transport type (default: \"stdio\")\n- `--timeout <ms>`: Default timeout for use-skill command (default: 30000)\n- `--workdir <path>`: Default working directory in container (default: \"/workspace\")\n- `--mount <path>`: Host path to mount into container /workspace\n- `--skills-path <path>`: Path to skills directory (default: \".claude/skills\")\n- `--container-name <name>`: Custom Docker container name (allows reusing one container for multiple skills)\n- `--image <name>`: Custom Docker image name to use instead of building default openskill-http image\n- `--disable-tools <tools>`: Comma-separated list of tools to disable\n- `--no-prewarm`: Disable Docker image prewarming on server startup\n\n**Example:**\n```bash\n# Start with custom skills path\nnode dist/cli.js mcp-serve --skills-path ./my-skills\n\n# Start with custom Docker image\nnode dist/cli.js mcp-serve --image my-custom-image:latest\n\n# Start with custom container name (reuse same container for all skills)\nnode dist/cli.js mcp-serve --container-name shared-skill-container\n```\n\n### use-skill\n\nExecute a skill directly from the command line.\n\n```bash\nnode dist/cli.js use-skill <skill-name> <bash-command> [options]\n```\n\n**Options:**\n- `-t, --timeout <ms>`: Command timeout (default: 30000)\n- `-w, --workdir <path>`: Working directory (default: \"/workspace\")\n- `-m, --mount <path>`: Host path to mount into container\n\n**Example:**\n```bash\n# Execute Python script in canvas-design skill\nnode dist/cli.js use-skill canvas-design \"python generate.py output.pdf\" \\\n  --mount /Users/username/projects\n```\n\n### doctor\n\nCheck if Docker is installed and accessible. Validates your environment for running OpenSkill.\n\n```bash\nnode dist/cli.js doctor\n```\n\n**Checks:**\n- Docker installation and version\n- Docker daemon status\n\n**Example Output:**\n```\nRunning OpenSkill environment checks...\n\nChecking Docker installation...\n✓ Docker is installed: Docker version 28.3.2, build 578ccf6\n\nChecking Docker daemon...\n✓ Docker daemon is running\n\n✓ All checks passed!\n  Your environment is ready to use OpenSkill.\n```\n\n### http-serve\n\nStart the HTTP server (used by Docker containers). When you create your own dockerfile, simply use `npx @agiflowai/openskill http-serve` as your entry point.\n\n```bash\nnode dist/cli.js http-serve [options]\n```\n\n**Options:**\n- `-p, --port <port>`: Port to listen on (default: 3000)\n- `-h, --host <host>`: Host to bind to (default: \"localhost\")\n\n## Usage with MCP Clients\n\nOpenSkill can be used with any MCP-compatible client. Below are basic configuration examples for popular tools.\n\n### Cline\n\n```json\n{\n  \"mcpServers\": {\n    \"openskill-mcp\": {\n      \"disabled\": false,\n      \"command\": \"openskill\",\n      \"args\": [\"mcp-serve\"]\n    }\n  }\n}\n```\n\n### Cursor\n\nAdd to `~/.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"openskill-mcp\": {\n      \"command\": \"openskill\",\n      \"args\": [\"mcp-serve\"]\n    }\n  }\n}\n```\n\n### Windsurf\n\n```json\n{\n  \"mcpServers\": {\n    \"openskill-mcp\": {\n      \"command\": \"openskill\",\n      \"args\": [\"mcp-serve\"]\n    }\n  }\n}\n```\n\n### VS Code\n\n```json\n\"mcp\": {\n  \"servers\": {\n    \"openskill-mcp\": {\n      \"type\": \"stdio\",\n      \"command\": \"openskill\",\n      \"args\": [\"mcp-serve\"]\n    }\n  }\n}\n```\n\n### Zed\n\n```json\n{\n  \"context_servers\": {\n    \"openskill-mcp\": {\n      \"source\": \"custom\",\n      \"command\": \"openskill\",\n      \"args\": [\"mcp-serve\"]\n    }\n  }\n}\n```\n\n### Roo Code\n\n```json\n{\n  \"mcpServers\": {\n    \"openskill-mcp\": {\n      \"command\": \"openskill\",\n      \"args\": [\"mcp-serve\"]\n    }\n  }\n}\n```\n\n### Continue\n\n```json\n{\n  \"mcpServers\": {\n    \"openskill-mcp\": {\n      \"command\": \"openskill\",\n      \"args\": [\"mcp-serve\"]\n    }\n  }\n}\n```\n\n### Claude Code\n\n```json\n{\n  \"mcpServers\": {\n    \"openskill-mcp\": {\n      \"command\": \"openskill\",\n      \"args\": [\"mcp-serve\", \"--disable-tools\", \"get-skill\"]\n    }\n  }\n}\n```\n\n**Note:** For advanced configuration options (mount paths, container names, custom Docker images, skills paths, timeouts, etc.), see the [CLI Commands](#cli-commands) section above.\n\n## Docker Environment\n\nThe sandbox Docker image includes:\n\n**Node.js/JavaScript:**\n- Node.js v20\n- npm\n\n**Python:**\n- Python 3.12\n- pip\n- uv (fast package installer)\n- poetry (dependency management)\n- pipenv (virtual environment manager)\n- Pillow (PIL - image processing library)\n\n**System Tools:**\n- bash\n- git\n- curl, wget\n- Build tools (gcc, g++, make)\n\n### Building the Docker Image\n\n```bash\ncd packages/openskill\ndocker build -t openskill-http .\n```\n\n## Development\n\n```bash\n# Install dependencies\npnpm install\n\n# Build the project\npnpm build\n\n# Run type checking\npnpm typecheck\n\n# Run tests\npnpm test\n\n# Development mode (watch)\npnpm dev\n```\n\n## Skill Structure\n\nSkills should be organized in the skills directory (default: `.claude/skills/`):\n\n```\n.claude/skills/\n├── canvas-design/\n│   ├── SKILL.md          # Skill definition with frontmatter\n│   ├── generate.py       # Skill implementation\n│   └── templates/        # Additional resources\n└── another-skill/\n    └── SKILL.md\n```\n\n**SKILL.md Format:**\n\n```markdown\n---\nname: canvas-design\ndescription: Create beautiful visual art in .png and .pdf documents\nlicense: user\n---\n\n# Canvas Design Skill\n\nInstructions for the AI on how to use this skill...\n```\n\n## Architecture\n\n- **src/tools/**: MCP tool implementations (GetSkillTool, UseSkillTool)\n- **src/services/**: Business logic (SkillService, SandboxService)\n- **src/commands/**: CLI commands (mcp-serve, use-skill, http-serve)\n- **src/server/**: MCP server setup and configuration\n- **src/transports/**: MCP transport handlers (stdio)\n- **Dockerfile**: Docker image with Python and Node.js tooling\n\n## License\n\nMIT\n","readmeFilename":"README.md"}