CLI Reference
The Loot Protocol CLI (loot) lets you discover, install, publish, and maintain extensions directly from your terminal.
Installation
The CLI is a single self-contained binary. Install it one of three ways:
# Homebrew (macOS / Linux)
brew install lootprotocol/tap/loot# Go install
go install github.com/lootprotocol/lootprotocol/cmd/loot@latestOr download a prebuilt binary for your platform from the GitHub Releases page.
Verify the installation:
loot --versionConfiguration
The CLI stores its configuration at ~/.lootprotocol/config.json. This file holds your authentication tokens and API URL. You should not need to edit it manually.
| Environment Variable | Description |
|---|---|
LOOTPROTOCOL_API_URL |
Override the API base URL |
COGNITO_DOMAIN |
Override the OAuth domain |
COGNITO_CLIENT_ID |
Set the OAuth client ID |
Default API URL: https://lootprotocol.com/api
Command Overview
| Command | Aliases | Purpose |
|---|---|---|
loot login |
— | Authenticate via GitHub |
loot logout |
— | Clear stored credentials |
loot search <query> |
— | Search the marketplace |
loot info <slug> |
— | Show details about an extension |
loot validate [path] |
— | Validate a package locally |
loot learn <slug> |
install |
Install an extension |
loot uninstall <slug> |
— | Remove an installed extension |
loot list |
ls |
List installed extensions |
loot publish [path] |
— | Publish a skill |
loot link-repo <slug> <repo> |
— | Link a GitHub repo for auto-publish |
loot sync <slug> |
— | Trigger a sync from the linked repo |
loot login
Authenticate with Loot Protocol using your GitHub account.
loot loginOpens your default browser and redirects you to the GitHub OAuth flow via Cognito. Once you authorize, the CLI stores your access and refresh tokens locally at ~/.lootprotocol/config.json. If you are already logged in, it prints your current identity and exits.
Notes:
- Authentication is required for
learn,publish,uninstall,link-repo, andsync searchandinfowork without authentication (the catalog is public)
loot logout
Clear your stored credentials.
loot logoutRemoves the tokens from ~/.lootprotocol/config.json. Run loot login again to re-authenticate.
loot search
Search for extensions on the marketplace.
loot search <query> [options]Arguments:
| Argument | Required | Description |
|---|---|---|
query |
Yes | Search term matched against extension names, descriptions, and tags |
Options:
| Option | Description |
|---|---|
-c, --category <category> |
Filter by category (e.g., development-tools) |
-t, --type <type> |
Filter by type. Today the marketplace contains skills (skill); the mcp_server value is reserved for upcoming MCP support |
-l, --limit <n> |
Maximum number of results (default: 20) |
Examples:
loot search "code review"
loot search "testing" --category testing-qa --limit 5Output:
┌──────────────────────┬─────────┬──────────────────────────────────────┬───────────┐
│ Name │ Type │ Description │ Downloads │
├──────────────────────┼─────────┼──────────────────────────────────────┼───────────┤
│ code-review │ skill │ Thorough code review with best... │ 1,204 │
│ test-author │ skill │ Writes behavior-focused tests for... │ 512 │
└──────────────────────┴─────────┴──────────────────────────────────────┴───────────┘
Showing 2 of 2 results.loot info
Show detailed information about a specific extension.
loot info <slug>Arguments:
| Argument | Required | Description |
|---|---|---|
slug |
Yes | The unique slug identifier of the extension |
Example:
loot info code-reviewDisplays the extension's name, type, publisher, version, download count, category, tags, description, and install command.
loot validate
Validate a skill package locally without publishing it. Runs the same validation logic the server uses, giving you fast feedback.
loot validate [path] [options]Arguments:
| Argument | Required | Description |
|---|---|---|
path |
No | Path to the extension directory or archive. Defaults to . (current directory) |
Options:
| Option | Description |
|---|---|
-t, --type <type> |
Extension type. Use skill (the only type available today). If omitted, the type is auto-detected from the presence of SKILL.md |
Examples:
# Validate current directory (auto-detect type)
loot validate
# Validate a specific directory
loot validate ./my-skill
# Validate with an explicit type
loot validate ./my-skill --type skillNotes:
- No authentication is required; validation runs entirely locally
- If a directory is provided, the CLI packages it as a
.tar.gzin memory before validating
loot learn
Download and install an extension. Aliased as loot install.
loot learn <slug> [options]Arguments:
| Argument | Required | Description |
|---|---|---|
slug |
Yes | The unique slug identifier of the extension to install |
Options:
| Option | Description |
|---|---|
--claude |
Install for Claude Code (default) |
--cursor |
Install for Cursor |
Examples:
loot learn code-review
loot learn @shamsheg/hello-world --cursorBehavior:
The CLI downloads the skill archive (via an authenticated S3 pre-signed URL) and extracts it to the skills directory:
- Claude Code:
~/.claude/skills/<slug> - Cursor:
~/.cursor/skills/<slug>
Notes:
- Authentication required. Run
loot loginfirst - Restart your Claude Code (or Cursor) session after installing so it picks up the new extension
loot uninstall
Remove an installed extension.
loot uninstall <slug> [options]Arguments:
| Argument | Required | Description |
|---|---|---|
slug |
Yes | The slug of the installed extension to remove |
Options:
| Option | Description |
|---|---|
--claude |
Target the Claude Code install (default) |
--cursor |
Target the Cursor install |
This deletes the installed skill directory.
loot list
List the extensions you've installed. Aliased as loot ls.
loot list [options]Options:
| Option | Description |
|---|---|
-t, --type <type> |
Filter by type (skill) |
--json |
Output as JSON (useful for scripting) |
--claude |
Show only Claude Code extensions |
--cursor |
Show only Cursor extensions |
Examples:
loot list
loot list --type skill
loot list --jsonloot publish
Package and publish a skill to the marketplace.
The CLI publishes skills. MCP server support is coming soon. See the Publishing Guide.
loot publish [path] [options]Arguments:
| Argument | Required | Description |
|---|---|---|
path |
No | Path to the skill directory or archive. Defaults to . |
Options:
| Option | Description |
|---|---|
-t, --type <type> |
Extension type. Auto-detected from SKILL.md if omitted |
--non-interactive |
Skip prompts; read metadata from lootprotocol.json (for CI) |
Behavior:
- If the path is a directory, packages it as a
.tar.gzarchive - Runs local validation (same rules as the server)
- If validation passes, prompts for metadata (display name, category, tags) -- unless
--non-interactiveis set - Uploads the archive and metadata to the API
- The server re-validates and stores the package
- Prints the extension URL and install command
Skip prompts with lootprotocol.json:
{
"type": "skill",
"displayName": "Code Review Assistant",
"category": "development-tools",
"tags": ["code-review", "quality", "best-practices"]
}Notes:
- Authentication required. Run
loot loginfirst - Any user who publishes automatically becomes a publisher
- Re-publishing from the same skill directory creates a new version; previous versions are retained
loot link-repo
Link a GitHub repository to an extension so new releases publish automatically.
loot link-repo <extension-slug> <github-repo-url>Example:
loot link-repo code-review https://github.com/janedev/code-reviewOnce linked, new releases in the repo are auto-published as new versions. Use loot sync to trigger a publish on demand.
Notes:
- Authentication required. You must own the extension.
loot sync
Manually trigger a sync from an extension's linked GitHub repo.
loot sync <extension-slug>Example:
loot sync code-reviewThe CLI kicks off the sync and polls until it completes, then prints the version that was published.
Notes:
- Authentication required. The extension must already be linked with
loot link-repo.
Global Options
These options are available on all commands:
| Option | Description |
|---|---|
-V, --version |
Print the CLI version and exit |
-h, --help |
Display help for a command |
loot --help
loot search --helpExit Codes
| Code | Meaning |
|---|---|
0 |
Success |
1 |
Error (validation failure, API error, auth failure, etc.) |