An open API service indexing awesome lists of open source software.

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.

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)

![skillet demo โ€” search, install (SHA-pinned), scaffold and validate](https://raw.githubusercontent.com/jnMetaCode/skillet/main/docs/demo.gif)

---

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.)