Unified skill manager for AI coding tools. Install skills from the registry, sync them to Claude Code, Cursor, Windsurf, OpenCode, and OpenClaw with a single command.
npm install -g @harness.farm/skillctlA skill is a SKILL.md file that extends what an AI coding tool can do. Skills follow the open AgentSkills standard and work across all supported clients.
my-skill/
├── SKILL.md # instructions + frontmatter (required)
├── examples/ # optional supporting files
└── scripts/
# SKILL.md
---
name: my-skill
version: 1.0.0
description: What this skill does and when to use it
---
Your instructions here...skillctl list # list installed skills
skillctl enable <name> # enable a skill
skillctl disable <name> # disable a skill
skillctl sync # sync skills to all enabled clientsskillctl clients # show all clients and their status
skillctl clients enable <id> # enable a client
skillctl clients disable <id> # disable a clientClient IDs: claude-code, cursor, windsurf, opencode, openclaw
skillctl search # browse all skills
skillctl search <query> # search by name or description
skillctl install <name> # install latest version
skillctl install <name>@<ver> # install specific version
skillctl publish [dir] # publish current dir (or specified dir)skillctl cli # list registered CLI toolsSkills are stored in ~/.skillctl/skills/. When you run skillctl sync, each enabled skill is symlinked into the skills directory of every enabled client:
| Client | Skills directory |
|---|---|
| Claude Code | ~/.claude/skills/ |
| Cursor | ~/.cursor/skills/ |
| Windsurf | ~/.codeium/windsurf/skills/ |
| OpenCode | ~/.config/opencode/skills/ |
| OpenClaw | ~/.openclaw/skills/ |
Sync uses a merge strategy: skillctl only writes its own skills and never removes skills you created manually in those directories.
Set your publish token, then run publish from a skill directory:
export SKILLCTL_TOKEN=your_token
skillctl publish ./my-skillThe skill directory must contain a SKILL.md with name and version in the frontmatter. Once published, anyone can install it:
skillctl install my-skillBrowse published skills at skillctl.dev/marketplace.
Skills and registry state are stored in ~/.skillctl/:
~/.skillctl/
├── skills/ # installed skills
├── cli/ # registered CLI tools
└── registry.yaml # enabled/disabled state per skill and client
# Find and install a skill
skillctl search design
skillctl install next-variant
# Sync to all your AI tools
skillctl sync
# Check what's installed
skillctl list
# Disable for a specific client by editing ~/.skillctl/registry.yaml
# or disable the client entirely
skillctl clients disable windsurf