https://github.com/jnmetacode/skillet
skillet โ a package manager for AI agent skills (SKILL.md). Find, install, version & share skills from a Git-backed registry. Zero infra, MCP-native, reproducible.
https://github.com/jnmetacode/skillet
agent-skills agents ai claude cli llm local-first mcp package-manager registry skill
Last synced: about 1 month ago
JSON representation
skillet โ a package manager for AI agent skills (SKILL.md). Find, install, version & share skills from a Git-backed registry. Zero infra, MCP-native, reproducible.
- Host: GitHub
- URL: https://github.com/jnmetacode/skillet
- Owner: jnMetaCode
- License: mit
- Created: 2026-06-10T00:59:45.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-06-10T12:04:10.000Z (about 2 months ago)
- Last Synced: 2026-06-10T12:15:07.816Z (about 2 months ago)
- Topics: agent-skills, agents, ai, claude, cli, llm, local-first, mcp, package-manager, registry, skill
- Language: JavaScript
- Homepage: https://github.com/jnMetaCode/local-agent-toolkit
- Size: 50.8 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# ๐ณ skillet
### A package manager for AI agent skills
**Find, install, version and share `SKILL.md` skills โ from a Git-backed registry.**
No server, no account, no lock-in. Just `npx @jnmetacode/skillet add `.
```bash
npx @jnmetacode/skillet add pdf
```
English | [็ฎไฝไธญๆ](https://github.com/jnMetaCode/skillet/blob/main/README.zh-CN.md)

---
Agent **Skills** are taking over โ a `SKILL.md` folder that teaches an agent a new
capability (read PDFs, build slide decks, scrape the webโฆ). But sharing them is a
mess: you copy-paste from random repos, pin nothing, and have no way to discover
what exists.
**skillet** is `npm`/`brew` for skills. One command to install a skill into your
project, a lockfile so it's reproducible, and a registry that's just a JSON file
in a Git repo โ so there's nothing to host and anyone can contribute with a PR.
```bash
npx @jnmetacode/skillet search pdf # discover
npx @jnmetacode/skillet add pdf # install into .claude/skills/
npx @jnmetacode/skillet list # see what's installed
npx @jnmetacode/skillet new my-skill # scaffold your own
```
## Why skillet
- **Skills are files, not dependencies.** Like [shadcn/ui](https://ui.shadcn.com),
skillet *copies the skill into your repo* (`.claude/skills//`) where you
can read and tweak it โ not into an opaque `node_modules`.
- **Reproducible.** Every install records the exact commit SHA in
`skillet.lock.json`. Commit it, and your whole team gets byte-identical skills
with `skillet install` (the `npm ci` of skills). Pin a single install with
`add owner/repo#`; `skillet update` re-resolves a branch/tag to its latest.
- **Zero infrastructure.** The registry is a JSON index in a Git repo, served
over raw GitHub. No backend, no database, no API keys. Adding a skill is a PR.
- **Install from anywhere.** A registry name, any `owner/repo[/path][#ref]`, or a
local folder.
- **Zero dependencies.** Pure Node built-ins + your system `git`. The whole CLI
is a few hundred readable lines.
## Install targets
```bash
npx @jnmetacode/skillet add pdf # from the registry
npx @jnmetacode/skillet add anthropics/skills/skills/pptx # any GitHub repo + subpath
npx @jnmetacode/skillet add owner/repo#v2.1.0 # a tag/branch
npx @jnmetacode/skillet add owner/repo# # pin to an exact commit
npx @jnmetacode/skillet add ./skills/my-local-skill # a local folder
```
Skills install into `.claude/skills/` by default (the common 2026 convention).
Change it per-project with `skillet init` or `--dir`.
## Use it from Claude (MCP)
skillet speaks the [Model Context Protocol](https://modelcontextprotocol.io), so
Claude Desktop / Claude Code can search and install skills for you โ "find a PDF
skill and install it" just works. Add to `claude_desktop_config.json` (or a
project `.mcp.json`):
```json
{
"mcpServers": {
"skillet": {
"command": "npx",
"args": ["-y", "@jnmetacode/skillet", "mcp"]
}
}
}
```
Works in **any MCP client** โ same JSON, different config file:
| Client | Where the config lives |
| --- | --- |
| Claude Desktop | `claude_desktop_config.json` |
| Claude Code | project `.mcp.json` (or the plugin: `/plugin marketplace add jnMetaCode/local-agent-toolkit`) |
| Cursor | `.cursor/mcp.json` (project) or `~/.cursor/mcp.json` |
| Windsurf | `~/.codeium/windsurf/mcp_config.json` |
| Cline | `cline_mcp_settings.json` |
| Zed | `settings.json` โ `context_servers` |
(Check your client's MCP docs for the exact key names โ the `command`/`args` pair above is the same everywhere.)
Tools exposed: `skillet_search`, `skillet_install` (registry-only, name-validated),
`skillet_list`. Zero dependencies โ a few hundred lines of JSON-RPC over stdio.
## Browse the registry
```bash
npx @jnmetacode/skillet gallery # builds a static, searchable HTML gallery โ site/
```
`skillet gallery` renders [`registry/index.json`](registry/index.json) into a
single self-contained page (search, copy-to-install, links) โ zero backend. The
included GitHub Pages workflow rebuilds and publishes it automatically whenever
the registry changes, so the registry has a shareable home.
## Authoring a skill
```bash
npx @jnmetacode/skillet new web-scraper # creates web-scraper/SKILL.md from a template
# edit itโฆ
npx @jnmetacode/skillet validate ./web-scraper
```
A skill is just a folder with a `SKILL.md`:
```markdown
---
name: web-scraper
description: Scrape pages and extract structured data; use when the user wants web content.
version: 0.1.0
license: MIT
keywords: [scrape, http]
---
# web-scraper
Instructions the agent readsโฆ plus any supporting scripts in the same folder.
```
Push it to GitHub, then open a PR adding one entry to
[`registry/index.json`](registry/index.json) โ see [docs/SPEC.md](docs/SPEC.md).
## Commands
| | |
| --- | --- |
| `skillet search [query]` | search the registry |
| `skillet add ` | install a skill (registry name / `owner/repo[/path][#ref]` / `./local`) |
| `skillet install` | install all locked skills at their pinned commits (`npm ci`-style) |
| `skillet list` | list installed skills |
| `skillet remove ` | uninstall |
| `skillet update [name]` | re-install tracked skill(s) at the latest ref |
| `skillet new ` | scaffold a new skill |
| `skillet validate [path]` | validate a `SKILL.md` |
| `skillet gallery` | build a static, searchable registry gallery |
| `skillet mcp` | run as an MCP server (stdio) for Claude/agents |
| `skillet init` | write `skillet.json` config |
Flags: `--force`, `--dir `, `--registry `, `--json`.
## How it works
```
skillet add pdf
โ resolve name in registry index (raw GitHub JSON)
โผ
git clone --depth 1 anthropics/skills โ your system git, partial clone
โ copy skills/pdf/ โ .claude/skills/pdf/
โผ
pin commit SHA in skillet.lock.json
```
The "registry" is [one JSON file](registry/index.json). That's the whole backend.
## Compatibility
Works with anything that reads `SKILL.md` skill folders (Claude Code / Claude
Agent Skills and compatible runtimes). skillet is just discovery + install +
versioning around the open `SKILL.md` format โ it doesn't lock you to a runtime.
## Status
Early MVP โ discovery, install (registry / GitHub / local), lockfile pinning,
authoring and validation all work today. Star/watch to follow along; PRs and new
registry entries are the most useful contribution right now.
## Sibling projects
Part of a small, local-first, zero-dependency toolkit for building AI agents โ see the [toolkit overview & end-to-end recipe](https://github.com/jnMetaCode/local-agent-toolkit):
- ๐ณ **skillet** โ a package manager for agent skills *(this repo)*
- ๐ญ **[tracelet](https://github.com/jnMetaCode/tracelet)** โ local DevTools to debug agent runs
- ๐ง **[engram](https://github.com/jnMetaCode/engram)** โ a local, private memory layer for agents (and you)
## License
MIT โ see [LICENSE](LICENSE). (Skills installed *through* skillet keep their own
licenses.)