skillet

package module
v1.6.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 14, 2026 License: MIT Imports: 1 Imported by: 0

README

skillet - package manager for MCP servers and Agent Skills for Claude Code, Cursor, Codex, and more

skillet

A tiny, zero-dependency package manager for MCP servers, Agent Skills, and Claude Code commands and hooks.

Search a curated registry and install MCP servers, skills, slash commands, and hooks with one command - into Claude Code, Cursor, Codex, Gemini CLI, Copilot, and Cline.

CI PRs Welcome Go GitHub stars

skillet installs MCP servers (Model Context Protocol), Agent Skills (the open SKILL.md standard), and Claude Code slash commands and hooks into Claude Code, Cursor, OpenAI Codex, Gemini CLI, Copilot, and Cline - from a curated, verified registry of 130+ entries. One static Go binary, no Node or npm.

$ skillet search example
NAME         DESCRIPTION                                                   TAGS
hello-skill  Minimal example skill that ships with skillet - install i...  example,starter,docs

$ skillet add hello-skill
Installing hello-skill from https://github.com/Brattlof/skillet ...
Installed hello-skill -> ~/.claude/skills/hello-skill

$ skillet add hello-skill --target agents
Installed hello-skill -> ~/.agents/skills/hello-skill   # Cursor, Codex, Gemini, Copilot

$ skillet list
NAME         KIND   INSTALLED  SOURCE                       STATUS
hello-skill  skill  a1b2c3d    github.com/Brattlof/skillet  tracking

Why use skillet?

Copy-pasting skill folders by hand, hunting through random repos, never knowing what's worth installing. skillet fixes that: search a curated registry and install with one command.

  • One static binary, no dependencies. The registry ships embedded - no backend, no account.
  • Curated from official and widely-used sources, with every link and package verified. No dead-link slop. Contributed entries follow the one rule: you've actually used it.
  • Skills use the open Agent Skills SKILL.md format, so they work across tools. Install for Claude Code (default) or for the shared ~/.agents/skills directory with --target agents, which Cursor, Codex, Gemini CLI, and Copilot all read.

Supported tools

skillet installs for Claude Code by default (~/.claude/skills, plus its slash commands and hooks). Add --target agents and skills go to the shared ~/.agents/skills directory that Cursor, OpenAI Codex, Gemini CLI, and GitHub Copilot all read. MCP servers install into each client's own config (Claude Code, Cursor, Windsurf, Gemini CLI, and Cline). Slash commands and hooks are Claude Code specific; skills and MCP servers are the cross-tool part.

Install

# Go users
go install github.com/Brattlof/skillet/cmd/skillet@latest

# Or grab a binary from Releases
# https://github.com/Brattlof/skillet/releases

Building from source: git clone this repo, then go build -o skillet ./cmd/skillet.

Usage

skillet add <name>[@ref]   Install a skill, command, or hook (optionally pinned)
skillet install            Restore everything from skillet.lock
skillet install --frozen   Verify the install matches skillet.lock (no changes)
skillet lock               Write skillet.lock from what is installed
skillet update [name]      Update an installed item, or all of them
skillet doctor             Check installed items for problems
skillet remove <name>      Remove an installed item
skillet list               List installed items
skillet search <query>     Search the registry (ranked + fuzzy; --kind, --tag)
skillet info <name>        Show details of a registry entry
skillet registry           Show every registry entry
skillet publish            How to publish your own skill
skillet completion <sh>    Output a bash, zsh, or fish completion script
skillet self-update        Update the skillet binary to the latest release

Add --target agents to any command to use ~/.agents/skills instead of ~/.claude/skills, or set SKILLET_TARGET=agents.

Skills, commands, hooks, agents, output styles, and MCP servers

A registry entry has a kind: skill (the default), command, hook, agent, output-style, or mcp. skillet installs each into the place the tool reads:

  • a skill is a folder copied to ~/.claude/skills/<name>/ (or ~/.agents/skills/<name>/ with --target agents, the shared location Cursor, Codex, Gemini CLI, and Copilot read),
  • a command is a single .md file copied to ~/.claude/commands/<name>.md,
  • a hook is a script copied to ~/.claude/hooks/, and skillet registers it in ~/.claude/settings.json under the event from the entry's hook block (and un-registers it on remove),
  • an agent (subagent) is a single .md file copied to ~/.claude/agents/<name>.md,
  • an output style is a single .md file copied to ~/.claude/output-styles/<name>.md,
  • an MCP server is registered into a client's MCP config; --target picks the client.

Commands, hooks, agents, and output styles are Claude Code specific. Skills and MCP servers work across tools:

skillet add context7 --target cursor     # -> ~/.cursor/mcp.json
skillet add context7 --target windsurf   # -> ~/.codeium/windsurf/mcp_config.json
skillet add context7 --target claude     # -> ./.mcp.json (project scope)
skillet remove context7 --target cursor

Supported MCP clients: claude, cursor, windsurf, gemini, cline. skillet merges the server into the existing config and leaves every other entry untouched.

Shell completion
# bash (current shell)
source <(skillet completion bash)
# zsh
skillet completion zsh > "${fpath[1]}/_skillet"
# fish
skillet completion fish > ~/.config/fish/completions/skillet.fish

Completion suggests subcommands, the --target and --dir flags, and skill names pulled from the local index, so it stays instant and works offline.

Choose where skills install, per-command or globally:

skillet add hello-skill --target agents          # ~/.agents/skills (cross-tool)
export SKILLET_TARGET=agents                      # make it the default
skillet add hello-skill --dir ~/somewhere/else    # an exact directory

Reproducible installs

Pin an install to an exact version with skillet add <name>@<ref> (a commit SHA or tag). skillet lock writes a skillet.lock capturing every installed item at its resolved commit and checksum, and skillet install (no arguments) restores exactly that set. Restore prunes anything skillet installed that is no longer in the lockfile, so the result matches the lock; a hand-placed file is left alone. skillet install --frozen reports whether the install already matches the lockfile without changing anything, which is what you want in CI. Point the lockfile elsewhere with SKILLET_LOCKFILE.

Environment

  • SKILLET_REGISTRY_URL - override the registry index URL.
  • SKILLET_OFFLINE=1 - never hit the network; use the cached or embedded index.
  • SKILLET_TARGET - default install target (claude or agents).
  • SKILLET_SKILLS_DIR - override the skills directory (skills kind only).
  • SKILLET_CACHE_DIR - override where the fetched index is cached.
  • SKILLET_LOCKFILE - override the lockfile path (default: ./skillet.lock).

How it works

  1. Each entry is one file under the directory for its kind - skills/, commands/, or hooks/ - sharded by first letter (commands/c/changelog.json). The folder sets the kind. CI compiles them into an index published on the gh-pages branch. skillet fetches that index, caches it locally with ETag revalidation, and falls back to a copy embedded in the binary when it is offline.
  2. skillet add clones the entry's repo (pinned to its ref when set), copies just that artifact into the right directory, verifies its checksum when set, and cleans up. No .git.
  3. Contributing is a PR that adds one file under skills/, commands/, or hooks/ - see below.

Point skillet at a different index with SKILLET_REGISTRY_URL, or force the cached/embedded copy with SKILLET_OFFLINE=1.

Security

A skill runs with your agent's privileges, so only install skills you trust. skillet warns when you install an unpinned skill; pin to an exact version with skillet add <name>@<ref> and audit installs with skillet doctor. See SECURITY.md for the full trust model and how to report a vulnerability.

Compatibility

skillet follows semantic versioning; see COMPATIBILITY.md for what stays stable across the 1.x series.

Contributing

The registry is only as good as the people keeping it honest. The one rule: you've actually used the skill you're adding. See CONTRIBUTING.md. PRs welcome.

Roadmap

  • MCP servers for more clients (OpenAI Codex, VS Code, Continue)
  • A browsable web registry
  • Statusline support

License

MIT

Documentation

Index

Constants

This section is empty.

Variables

View Source
var SkillsFS embed.FS

SkillsFS embeds the registry metadata shards (one per-kind directory: skills, commands, hooks, mcp, agents, output-styles) so the binary always has a baseline index to fall back on when the remote registry and local cache are unavailable.

Functions

This section is empty.

Types

This section is empty.

Directories

Path Synopsis
cmd
buildindex command
Command buildindex compiles the per-kind shards (skills, commands, hooks) into a single index.json.
Command buildindex compiles the per-kind shards (skills, commands, hooks) into a single index.json.
skillet command
Command skillet is a small, zero-dependency package manager for AI-agent skills, slash commands, and hooks.
Command skillet is a small, zero-dependency package manager for AI-agent skills, slash commands, and hooks.
internal
cli
Package cli implements skillet's command dispatch.
Package cli implements skillet's command dispatch.
install
Package install fetches skills and manages the local skills directory.
Package install fetches skills and manages the local skills directory.
registry
Package registry loads and queries the skill index.
Package registry loads and queries the skill index.
selfupdate
Package selfupdate upgrades the running skillet binary from its GitHub releases.
Package selfupdate upgrades the running skillet binary from its GitHub releases.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL