Bring Agent Skills to Cursor / Copilot / Codex & more — via CLI or MCP. Manage once, serve anywhere.
Project description
⚓ SkillPort
🚢 All Your Agent Skills in One Place - Manage once, serve anywhere ⚓
Agent Skills → Cursor · Copilot · Codex & more - via CLI or MCP
Why SkillPort?
Claude Agent Skills are great - but they only work in Claude. What about Cursor, Copilot, Codex? With dozens of skills loaded upfront, there's less context and agent performance suffers.
Context Engineering for Expert Knowledge - SkillPort brings expertise into context-only when needed.
| When you... | SkillPort helps by... | |
|---|---|---|
| Switching to Cursor with 20+ Agent skills | Add one line to config - all skills work instantly | MCP Server → |
| Team using Cursor, Copilot, and Codex | Share one folder, filter by category per tool | Organize → |
| 50+ skills, "which one was for PR reviews?" | Search by keyword - finds it in milliseconds | Scale → |
| Long debugging session, context running low | Skills load on-demand - not all upfront | Scale → |
| Found an awesome skill on GitHub | skillport add <url> - ready to use in seconds |
CLI → |
| Don't want to set up MCP | CLI works standalone - init, add, doc to AGENTS.md |
CLI Mode → |
🔄 Compatible with Claude Agent Skills - Write skills once, use everywhere. Skills that work with Claude Code work with SkillPort, and vice versa.
Quick Start (5 min)
Choose your setup:
| Mode | Best for | Per-project setup |
|---|---|---|
| MCP Mode | Multi-project, per-client filtering | Not required |
| CLI Mode | Quick Setup, single project | Required (skillport init) |
Tip: Start with MCP Mode for the full experience. CLI Mode is simpler but requires setup in each project.
MCP Mode
1. Install
Skip this step if you only want to serve an existing skills directory via MCP.
Install to manage skills and use them without MCP:
uv tool install skillport
# or: pip install skillport
# Update to latest version
uv tool upgrade skillport
Enables add, update, remove, validate, search, show, and doc (generate AGENTS.md for non-MCP agents).
2. Add Skills
Skip this step if you already have skills (e.g., in
.claude/skills/). Just pointSKILLPORT_SKILLS_DIRto it in step 3.
# Add a sample skill
skillport add hello-world
# Or add from GitHub (shorthand format)
skillport add anthropics/skills skills # specific path
skillport add anthropics/skills skills examples # multiple paths (1 download)
# Or add from GitHub (full URL)
skillport add https://github.com/anthropics/skills/tree/main/skills
# With custom skills directory (Claude Code, Codex)
skillport --skills-dir .claude/skills add anthropics/skills skills
skillport --skills-dir ~/.codex/skills add anthropics/skills skills/frontend-design
3. Add to Your MCP Client
To customize environment variables, use manual configuration below instead of one-click install.
Cursor (one-click)
VS Code / GitHub Copilot (one-click)
Kiro (one-click)
CLI Agents
# Codex
codex mcp add skillport -- uvx skillport
# With custom skills in the project directory
codex mcp add skillport --env SKILLPORT_SKILLS_DIR=./.agent/skills -- uvx skillport
# Claude Code
claude mcp add skillport -- uvx skillport
# With custom skills directory
claude mcp add skillport --env SKILLPORT_SKILLS_DIR=~/.claude/skills -- uvx skillport
Other MCP Clients (Windsurf, Cline, Roo Code, Antigravity, etc.)
Add to your client's MCP config file:
{
"mcpServers": {
"skillport": {
"command": "uvx",
"args": ["skillport"],
"env": { "SKILLPORT_SKILLS_DIR": "~/.skillport/skills" }
}
}
}
| Client | Config file |
|---|---|
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
| Cline | VS Code settings or .cline/mcp_settings.json |
| Roo Code | .roo/mcp.json (project) or VS Code settings |
Claude Desktop (Not Recommended, Use the official Agent Skills)
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"skillport": {
"command": "uvx",
"args": ["skillport"],
"env": { "SKILLPORT_SKILLS_DIR": "~/.skillport/skills" }
}
}
}
4. Use It
Ask your AI: "Search for hello-world and run it"
The agent will:
search_skills("hello-world")- find matching skillsload_skill("hello-world")- get instructions + path- Follow the instructions using its tools
CLI Mode
For: Coding agents with shell commands (Cursor, Windsurf, Cline, Copilot, Codex, etc.)
Skills are documented in AGENTS.md and load via skillport show. No MCP configuration needed.
# 1. Install
uv tool install skillport
# 2. Initialize your project (in your project directory)
skillport init
# → Select skills directory and instruction files interactively
# → Creates .skillportrc, generates skills to AGENTS.md
# 3. Add skills (uses skills_dir from .skillportrc)
skillport add hello-world
skillport add anthropics/skills skills # shorthand format
skillport add anthropics/skills skills examples # multiple paths
skillport add https://github.com/anthropics/skills/tree/main/skills/frontend-design
How it works: Your agent reads the skills table in AGENTS.md, then runs skillport show <id> to load full instructions.
Note: CLI mode requires
skillport initin each project. Skills are added to the directory configured in.skillportrc. For multi-project use, consider MCP Mode.
Key Features
Deliver: MCP Server
Tools for progressive skill loading:
| Tool | Transport | Purpose |
|---|---|---|
search_skills(query) |
stdio, HTTP | Find skills by task description |
load_skill(skill_id) |
stdio, HTTP | Get full instructions and filesystem path |
read_skill_file(skill_id, file_path) |
HTTP only | Read files (experimental) |
stdio (default): The
pathfromload_skillis accessible in the agent's execution environment-agents can read files and run scripts directly.Streamable HTTP (experimental): For remote agents without filesystem access. Adds
read_skill_filebut is not fully tested yet.
Manage: CLI
Project Setup:
skillport init # Initialize project (.skillportrc, AGENTS.md)
skillport doc # Update AGENTS.md when skills change
skillport doc --all # Update all instruction files in .skillportrc
Skill Management:
skillport add <source> # GitHub URL, local path, zip file, or built-in name
skillport update [id] # Update skills from original sources
skillport list # See installed skills
skillport remove <id> # Uninstall a skill
skillport validate [target] # Validate skills (ID, path, or directory)
# Override paths per run (CLI > env > default)
skillport --skills-dir ./skills add hello-world
# Place global flags before the subcommand (e.g., skillport --skills-dir ... add ...)
Search & Load:
skillport search <query> # Find skills by description
skillport show <id> # View skill details and instructions
Install from GitHub:
One command to install skills from any GitHub URL-no cloning required. Supports shorthand format, branches, and subdirectories:
# Shorthand format (owner/repo [paths...])
skillport add anthropics/skills skills # specific path
skillport add anthropics/skills skills examples # multiple paths (1 download)
skillport add owner/repo # repo root
# Full URL format
skillport add https://github.com/anthropics/skills/tree/main/skills
skillport add https://github.com/wshobson/agents/tree/main/plugins/developer-essentials/skills
# Private repos work automatically if you use GitHub CLI
gh auth login # one-time setup
skillport add your-org/private-skills skills
Discover more:
| Skills | Features | Target | URL |
|---|---|---|---|
| Anthropic Official | Document skills (docx, pdf, pptx, xlsx), design, MCP builder | All users | GitHub |
| Awesome Claude Skills | Curated community collection, 2.5k+ stars | Discovery | GitHub |
| Hugging Face Skills | Dataset creation, model evaluation, LLM training, paper publishing | ML/AI engineers | GitHub |
| Claude Scientific Skills | 128+ scientific skills (bio, chem, ML), 26+ databases | Researchers | GitHub |
| ClaudeKit Skills | 30+ skills, auth, multimodal, problem-solving frameworks | Full-stack devs | GitHub |
| Superpowers | TDD, debugging, parallel agents, code review workflows | Quality-focused devs | GitHub |
| Kubernetes Operations | K8s deployment, monitoring, troubleshooting | DevOps/SRE | GitHub |
| Notion Skills | Meeting notes, research docs, knowledge capture | Notion users | GitHub |
Organize: Categories & Namespaces
Use metadata.skillport to:
- Search -
categoryandtagsimprove discoverability - Filtering - Control which skills each client sees
- Core Skills -
alwaysApply: truefor always-available skills
# SKILL.md frontmatter
metadata:
skillport:
category: development
tags: [testing, quality]
alwaysApply: true # Core Skills - always available
Client-Based Skill Filtering:
Expose different skills to different AI agents:
{
"mcpServers": {
"skillport-development": {
"command": "uvx",
"args": ["skillport"],
"env": { "SKILLPORT_ENABLED_CATEGORIES": "development,testing" }
}
}
}
{
"mcpServers": {
"writing-skills": {
"command": "uvx",
"args": ["skillport"],
"env": { "SKILLPORT_ENABLED_CATEGORIES": "writing,research" }
}
}
}
Filter options:
SKILLPORT_ENABLED_SKILLS- Specific skill IDsSKILLPORT_ENABLED_CATEGORIES- By categorySKILLPORT_ENABLED_NAMESPACES- By directory prefixSKILLPORT_CORE_SKILLS_MODE- Skills visible to agent without searching (auto/explicit/none)
Scale: Progressive Disclosure
The Problem:
System Prompt (every conversation):
├── Company guidelines (2,000 tokens)
├── Coding standards (3,000 tokens)
├── Review checklist (1,500 tokens)
├── 50 more instructions...
└── Total: 30,000+ tokens before you say "hello"
The Solution: Skills load progressively - metadata first, full instructions on demand:
| Stage | Tokens | When |
|---|---|---|
| Metadata | ~100/skill | Always (searchable) |
| Instructions | ~5,000 | On load_skill() |
100 skills = ~15K tokens (vs 300K+ if all loaded upfront)
SkillPort enhances this with:
- BM25 search - Find the right skill without loading all metadata
- Per-client filtering - Expose only relevant skills to each agent
- Fallback chain - FTS → substring (always returns results)
Design: Path-Based Execution
SkillPort provides knowledge, not a runtime. Instead of executing code, it returns filesystem paths:
# load_skill returns:
{
"instructions": "How to extract text from PDFs...",
"path": "/Users/me/.skillport/skills/pdf-extractor"
}
The agent executes scripts directly:
python {path}/scripts/extract.py input.pdf -o result.txt
Context Engineering: Executing code doesn't require reading code.
| Approach | Context Cost |
|---|---|
| Read script → execute | ~2,000 tokens |
| Execute via path | ~20 tokens |
This keeps SkillPort simple and secure-it's a harbor, not a runtime.
Configuration
| Variable | Description | Default |
|---|---|---|
SKILLPORT_SKILLS_DIR |
Skills directory | ~/.skillport/skills |
SKILLPORT_ENABLED_CATEGORIES |
Filter by category (comma-separated) | all |
SKILLPORT_ENABLED_SKILLS |
Filter by skill ID (comma-separated) | all |
SKILLPORT_ENABLED_NAMESPACES |
Filter by namespace (comma-separated) | all |
SKILLPORT_CORE_SKILLS_MODE |
Core Skills behavior (auto/explicit/none) |
auto |
SKILLPORT_CORE_SKILLS |
Core Skill IDs for explicit mode (comma-separated) |
none |
Creating Skills
Create a SKILL.md file with YAML frontmatter. name and description are required:
---
name: my-skill
description: What this skill does
metadata:
skillport:
category: development
tags: [example]
---
# My Skill
Instructions for the AI agent.
Learn More
- Configuration Guide - Filtering, search options, multi-client setup
- Creating Skills - SKILL.md format and best practices
- CLI Reference - Full command documentation
- Design Philosophy - Why skills work this way
Development
git clone https://github.com/gotalab/skillport.git
cd skillport
uv sync
SKILLPORT_SKILLS_DIR=.agent/skills uv run skillport serve
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file skillport-0.6.0.tar.gz.
File metadata
- Download URL: skillport-0.6.0.tar.gz
- Upload date:
- Size: 351.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d120805ddbd30d2c42cd1a8a9f7599afaa5e8792465d0d1f5db031d9503cf44c
|
|
| MD5 |
7218a3638339465b3a025c87be02d66b
|
|
| BLAKE2b-256 |
66ede0d31fa61ef55506f960a41304d33c9e7bf1ea0ba15407cc270cf563e2da
|
Provenance
The following attestation bundles were made for skillport-0.6.0.tar.gz:
Publisher:
release.yml on gotalab/skillport
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
skillport-0.6.0.tar.gz -
Subject digest:
d120805ddbd30d2c42cd1a8a9f7599afaa5e8792465d0d1f5db031d9503cf44c - Sigstore transparency entry: 774178760
- Sigstore integration time:
-
Permalink:
gotalab/skillport@9ac677906ef80107dd35dcfef69433fa29c9e90a -
Branch / Tag:
refs/heads/main - Owner: https://github.com/gotalab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9ac677906ef80107dd35dcfef69433fa29c9e90a -
Trigger Event:
push
-
Statement type:
File details
Details for the file skillport-0.6.0-py3-none-any.whl.
File metadata
- Download URL: skillport-0.6.0-py3-none-any.whl
- Upload date:
- Size: 95.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
990bc725bcd3c73c53496689ce16c09652dd2a6e1d4abdbc23c10b9b73173171
|
|
| MD5 |
04f86da1b84c8e2e7af328b2395fe692
|
|
| BLAKE2b-256 |
cd1ae1d8541a52fa55d838a1c49da37347f2d01eca90eefae0c395c304af54d4
|
Provenance
The following attestation bundles were made for skillport-0.6.0-py3-none-any.whl:
Publisher:
release.yml on gotalab/skillport
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
skillport-0.6.0-py3-none-any.whl -
Subject digest:
990bc725bcd3c73c53496689ce16c09652dd2a6e1d4abdbc23c10b9b73173171 - Sigstore transparency entry: 774178761
- Sigstore integration time:
-
Permalink:
gotalab/skillport@9ac677906ef80107dd35dcfef69433fa29c9e90a -
Branch / Tag:
refs/heads/main - Owner: https://github.com/gotalab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9ac677906ef80107dd35dcfef69433fa29c9e90a -
Trigger Event:
push
-
Statement type: