Registry System¶
Sutras uses a federated Git-based registry system for skill distribution. This guide covers how registries work and how to use them.
Overview¶
The registry system provides:
Decentralized Distribution - Registries are Git repositories, no central server
Multiple Sources - Use official, company, and personal registries together
Offline Support - Cached indexes work without network access
Git Authentication - Private registries use existing Git credentials
How It Works¶
┌─────────────────────────────────────────────────────────────┐
│ Your Machine │
│ │
│ ~/.sutras/ │
│ ├── config.yaml # Registry configuration │
│ └── registry-cache/ # Cached registry indexes │
│ ├── official/ │
│ └── company/ │
│ │
│ ~/.claude/ │
│ ├── installed/ # Versioned skill installations │
│ │ └── user_skillname/ │
│ │ └── 1.0.0/ │
│ └── skills/ # Symlinks to active versions │
│ └── skillname -> ../installed/user_skillname/1.0.0 │
└─────────────────────────────────────────────────────────────┘
Setting Up Registries¶
Add a Registry¶
# Add with basic options
sutras registry add official https://github.com/anthropics/sutras-registry
# Add with options
sutras registry add company https://github.com/mycompany/skills-registry \
--priority 10 \
--namespace mycompany \
--default
Options:
Option |
Description |
|---|---|
|
Search order (higher = checked first) |
|
Default namespace for this registry |
|
Set as default for publishing |
List Registries¶
sutras registry list
Shows all configured registries with their URLs, priorities, and status.
Update Registry Indexes¶
# Update one registry
sutras registry update official
# Update all registries
sutras registry update --all
This pulls the latest index from the remote Git repository.
Remove a Registry¶
sutras registry remove old-registry
Installing Skills¶
From Registry¶
# Install latest version
sutras install @username/skill-name
# Install specific version
sutras install @username/skill-name --version 1.2.0
# Install from specific registry
sutras install @username/skill-name --registry company
From GitHub Releases¶
# Latest release
sutras install github:user/repo
# Specific version
sutras install github:user/repo@v1.0.0
From URL or File¶
# Direct URL
sutras install https://example.com/skills/my-skill-1.0.0.tar.gz
# Local file
sutras install ./dist/my-skill-1.0.0.tar.gz
Skill Naming¶
Registry skills use scoped names: @namespace/skill-name
namespace - Usually your username or organization
skill-name - The skill identifier
Examples:
@anthropic/code-review@mycompany/deploy-helper@username/my-awesome-skill
Local skills (development only) can use bare names like my-skill.
Version Constraints¶
When declaring dependencies, use npm-style constraints:
Constraint |
Matches |
|---|---|
|
Exactly 1.0.0 |
|
>=1.0.0 <2.0.0 |
|
>=1.2.3 <1.3.0 |
|
Explicit range |
|
Any 1.x version |
|
Any version |
Lock Files¶
When you install skills with dependencies, Sutras creates .sutras.lock:
version: 1
skills:
"@user/main-skill":
version: "1.0.0"
checksum: "abc123..."
registry: "official"
dependencies:
- "@utils/helper"
"@utils/helper":
version: "2.1.0"
checksum: "def456..."
registry: "official"
Best practices:
Commit
.sutras.lockto version controlRun
sutras installto restore exact versionsDelete the lock file to get fresh resolutions
Registry Index Format¶
Each registry has an index.yaml at its root:
skills:
"@namespace/skill-name":
version: "1.0.0"
description: "What this skill does"
tarball_url: "releases/skill-name-1.0.0.tar.gz"
checksum: "sha256:abc123..."
versions:
"1.0.0": "releases/skill-name-1.0.0.tar.gz"
"0.9.0": "releases/skill-name-0.9.0.tar.gz"
Build the index automatically:
sutras registry build-index ./my-registry
Troubleshooting¶
“Skill not found”¶
Update registry indexes:
sutras registry update --allCheck skill name spelling (case-sensitive)
Verify the registry contains the skill
“No matching version”¶
Check available versions:
sutras info @user/skillLoosen your version constraint
Update the registry index
“Authentication failed”¶
For private registries:
Ensure Git credentials are configured
Try cloning the repo manually to test access
Check SSH keys or HTTPS tokens
Next Steps¶
Publishing Guide - Share your skills
Private Registry Setup - Host your own registry