Docs / quickstart
Better tools for
the agent you use.
Chops searches a public index of Agent Skills and installs source-pinned, digest-verified contents into one shared local store, linked into every agent you use. No account, no global install — everything below works from a bare terminal.
Install the CLI
The CLI ships on npm as chops-sh and installs the chops command. No account required for public skills.
npm install -g chops-shPrefer not to install anything? Every command below also works as npx chops-sh <command> — that’s the form skill pages use, and the right one for agents and CI.
Find by intent
Describe the outcome you want — Chops combines semantic and keyword relevance, so “make my queries faster” finds a skill described as “database query optimization.” Returns the top 10 matches.
chops find "optimize postgres queries"Add the skill
Use the slug from a result (owner/repo@skill). Chops downloads the pinned package, checks its SHA-256 digest against the registry manifest, and only then links it into your agents. You’ll be asked to confirm first — pass --yes to skip.
chops add owner/repo@skillTeams & private skills
Some skills shouldn’t be public — deploy runbooks, internal APIs, house style. Chops hosts those privately: @me/<name> for just you, @<team>/<name> for your team. Private skills are encrypted at rest and never appear in the public index or search.
Sign in without leaving the terminal — a one-time email code, no password, no browser:
chops auth start you@company.comchops auth verify 123456Publish a skill directory privately (add --team to share it):
chops publish ./skills/deploy --team yourteamCreate a team and invite teammates by email. Invites can be accepted from the browser or entirely in-terminal with chops team join:
chops team create yourteamchops team invite dana@company.comTeammates install with the same verified flow as public skills — digest checked, linked into every agent:
chops add @yourteam/deployManage members, pending invites, and your team’s skill list at chops.sh/app/teams. Teams are free while in preview.
Commands & flags
The full surface — small on purpose.
| Command | What it does |
|---|---|
find "<query>" | Search the index by intent. Top 10 results, ranked by relevance. |
add <ref> | Verify, install, and link a skill — public (owner/repo@skill) or private (@me/name, @team/name). Confirms before writing unless --yes. |
list | Show everything installed, from the lockfile — public, private, and team. |
remove <ref> | Remove the store entry and its agent links. |
auth start|verify|status|logout | Passwordless sign-in with a one-time email code. Credentials live in ~/.chops/credentials.json (0600). |
team create|list|invite|join|members | Create teams, invite by email, accept invites, see who’s in. |
publish <path> [--team <slug>] | Publish a skill privately — to you by default, to a team with --team. Encrypted at rest. |
help · --version | Usage and CLI version. |
| Flag | Meaning |
|---|---|
--json | Machine-readable output. The right mode when an agent is driving. |
--yes, -y | Skip the install confirmation. Required when there’s no TTY. |
--agent <names> | Where to link, comma-separated: claude-code, cursor, codex (alias agents — the shared ~/.agents/skills). Default: ~/.agents/skills, plus ~/.claude/skills when it exists. |
--api-url <url> | Point at another registry (default https://api.chops.sh; env CHOPS_API_URL). |
How an install works
Five steps, each one inspectable afterwards:
- The registry returns a manifest: your slug, the pinned content SHA, and the package’s SHA-256 digest.
- The tarball is downloaded and rejected outright if its digest doesn’t match the manifest.
- Contents unpack once into
~/.chops/store/<owner>/<repo>/<skill>@<sha>/. - That store path is symlinked into each selected agent directory (junctions on Windows).
- The install is recorded in
~/.chops/chops.lock.
Published versions are immutable — packages are content-addressed and mirrored by the registry, so a force-pushed source repo can’t change what you already installed.
For coding agents
Chops is built to be driven by your agent, not just for it. Two rules: always --json, always --yes.
npx chops-sh find "your task" --jsonnpx chops-sh add owner/repo@skill --yes --jsonfind --json returns each result’s slug, description, publisher, agent compatibility, stars, installs, last-published date, and pinned SHA — everything needed to explain a choice before installing. add --json returns { ok, slug, sha, store, links }. Failures print a JSON error and exit non-zero.
Headless: curl only
The entire read path is plain HTTP — an LLM (or anyone) can find and install skills with nothing installed. Search, read the manifest, download the tarball, check the digest, unpack:
curl "https://api.chops.sh/skills/search?q=optimize+postgres+queries&limit=5"curl "https://api.chops.sh/manifest?slug=owner/repo@skill"curl -L -o skill.tgz "<tarball_url>" && shasum -a 256 skill.tgztar -xzf skill.tgz -C ~/.agents/skills/<skill-name>The digest must equal the manifest’s sha256 — discard the download if it doesn’t. Tarballs are immutable and content-addressed. The API also documents itself: curl api.chops.sh returns an endpoint map, and api.chops.sh/llms.txt serves this whole workflow as plain text an agent can read directly.
Public registry API
Everything the CLI uses is a plain, unauthenticated HTTP API at https://api.chops.sh — build on it directly if you prefer.
| Endpoint | Returns |
|---|---|
GET /skills/search?q=<query>&limit=<1-50> | Hybrid semantic + keyword search results. Optional owner and agent filters. |
GET /skills?sort=popular|recent&limit=<1-50>&offset=<n> | The browsable index with a total count. |
GET /manifest?slug=<owner/repo@skill> | Pinned version, tarball URL, SHA-256 digest, size. |
GET /tarballs/<sha256> | The immutable, content-addressed package. |
GET /health · GET /version | Service status and deployed version. |
Use it everywhere
Chops maintains one local copy and links it into supported agent directories — install once, available in every session.