A command-line tool that queries a skill registry (like the Loaditout MCP Discovery Server) for compatible agent skills based on a project's skill manifest, then downloads and installs them into the local environment with proper versioning and MCP server configuration.
Quick Start • Features • Examples • Contributing
SkillSync CLI streamlines the setup of agent skills by reading a project's skill manifest, locating matching versions in a local skill registry, and installing them with correct MCP configuration. It is aimed at developer experience engineers and teams who want a single‑command workflow similar to npm install for agent capabilities.
$ skill-sync install --manifest skill.yaml
Installed 3 skills to ./skill_sync/install/
Developers waste time manually searching for MCP servers, copying installation instructions, and matching versions, especially when working across multiple agent frameworks.
| Feature | Description |
|---|---|
| Parse Skill Manifest | Reads and validates a YAML manifest (skill.yaml) extracting skill IDs and version constraints. |
| Query Local Skill Registry | Looks up each requirement in a local SQLite registry and returns the highest satisfying version. |
| Download and Install Skills | Copies skill files to ./skill_sync/install/ and generates an MCP config file. |
| Version Constraint Handling | Supports semantic versioning operators (==, >=, >, <=, <). |
| MCP Config Generation | Produces mcp-config.yaml listing installed skills and their versions. |
| Clear Error Reporting | Exits with distinct codes (2‑4) and helpful messages for manifest, resolution, or copy failures. |
- Clone the repository:
git clone https://github.com/yourorg/skill-sync-cli.git
cd skill-sync-cli - Install dependencies:
pip install -r requirements.txt - Ensure a local skill registry exists (set
SKILL_REGISTRY_PATHif needed).
By default it expects~/.skill_sync/registry.db. - Run the parser to see what skills are required:
skill-sync parse --manifest skill.yaml
Sample output:
Found 3 skill requirements: [Skill(id='skill-a', version='>=1.0.0'), Skill(id='skill-b', version='==2.5.1'), Skill(id='skill-c', version='<3.0.0')]
Parsing a manifest
$ skill-sync parse --manifest samples/good.yaml
Found 3 skill requirements: [Skill(id='skill-a', version='>=1.0.0'), Skill(id='skill-b', version='==2.5.1'), Skill(id='skill-c', version='<3.0.0')]
Resolving skills against the registry
$ skill-sync resolve --manifest samples/good.yaml
Resolved: skill-a→1.4.2 at /tmp/skills/skill-a, skill-b→2.5.1 at /tmp/skills/skill-b, skill-c→2.9.0 at /tmp/skills/skill-c
Installing skills locally
$ skill-sync install --manifest samples/good.yaml
Installed 3 skills to ./skill_sync/install/
The generated ./skill_sync/install/mcp-config.yaml contains:
skills:
- id: skill-a
version: 1.4.2
- id: skill-b
version: 2.5.1
- id: skill-c
version: 2.9.0
SkillSync CLI/
skill_sync/ # Core source code
__init__.py
main.py # CLI entry point (click)
manifest_parser.py # Parse YAML manifest
skill_registry.py # SQLite lookup helpers
installer.py # File copy and MCP config generation
models.py # Pydantic data models
tests/ # Test suite
test_cli.py
test_installer.py
test_manifest_parser.py
test_skill_registry.py
assets/ # Infographic used in banner
requirements.txt # Pinned dependencies
README.md
LICENSE
spec.md # Detailed specification
| Technology | Purpose |
|---|---|
| Python 3.11+ | Core language |
| Click 8.1.7 | CLI framework |
| Pydantic 2.7.0 | Data validation and settings |
| SQLite (stdlib) | Local skill registry storage |
| Pytest 8.2.2 | Testing framework |
Fork the repo, make changes, run tests, and submit a pull request.
MIT
Matthew Snow -- M2AI | @m2ai-portfolio
