Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

tangredtea/skill-registry

Repository files navigation

Skill Registry

English | 简体中文

CI Go Report Card License: MIT

A standalone skill registry server for OpenClaw-style skills. This is a complete Go application with embedded frontend that provides a web interface and REST API for managing skills.

Features

  • Web UI: Modern, responsive interface for browsing and searching skills
  • REST API: Full CRUD operations for skills
  • File Upload: Support for uploading skill packages (.zip, .tar.gz)
  • Download: Download skills as compressed archives
  • Search: Full-text search across skill names, descriptions, and tags
  • Pagination: Efficient handling of large skill collections

API Endpoints

Method Endpoint Description
GET /health Health check endpoint
GET /ready Readiness check endpoint
GET /api/search?q={query} Search skills
GET /api/skills List all skills (paginated)
POST /api/skills Create a new skill
GET /api/skills/{id} Get skill by ID
PUT /api/skills/{id} Update skill
DELETE /api/skills/{id} Delete skill
GET /api/skills/{id}/download Download skill package
GET /api/skills/slug/{slug} Get skill by slug

Creating a Skill

Multipart Form (with file):

curl -X POST http://localhost:8080/api/skills \
 -F "data={\"slug\":\"my-skill\",\"name\":\"My Skill\",\"version\":\"1.0.0\",\"description\":\"A great skill\",\"author\":\"John Doe\",\"tags\":[\"automation\"]}" \
 -F "file=@my-skill.zip"

JSON only:

curl -X POST http://localhost:8080/api/skills \
 -H "Content-Type: application/json" \
 -d '{
 "slug": "my-skill",
 "name": "My Skill",
 "version": "1.0.0",
 "description": "A great skill",
 "author": "John Doe",
 "tags": ["automation"]
 }'

Searching Skills

curl "http://localhost:8080/api/search?q=automation&page=1&per_page=20"

Downloading a Skill

curl -O -J http://localhost:8080/api/skills/{id}/download

Installation

Prerequisites

  • Go 1.21 or later
  • Docker (optional, for containerized deployment)

Quick Start with Docker

# Using Docker Compose
docker-compose up -d
# Or build and run manually
docker build -t skill-registry .
docker run -p 8080:8080 -v $(pwd)/data:/data skill-registry

Build from Source

# Clone or create the project
cd skill-registry
# Download dependencies
go mod tidy
# Build the binary
go build -o skill-registry
# Run the server
./skill-registry -port 8080 -data ./data

Run with Go

go run main.go -port 8080 -data ./data

Configuration

Command-line flags:

Flag Default Description
-port 8080 HTTP server port
-host 0.0.0.0 HTTP server host
-data ./data Data directory for persistence

Environment variables:

Variable Default Description
PORT 8080 HTTP server port
HOST 0.0.0.0 HTTP server host
DATA_DIR ./data Data directory for persistence

Environment variables take precedence over default values but are overridden by command-line flags.

Project Structure

skill-registry/
├── main.go # Entry point and HTTP handlers
├── go.mod # Go module definition
├── Dockerfile # Docker image definition
├── docker-compose.yml # Docker Compose configuration
├── Makefile # Build automation
├── README.md # This file
├── CONTRIBUTING.md # Contribution guidelines
├── LICENSE # MIT License
├── CHANGELOG.md # Version history
├── .github/
│ └── workflows/
│ └── ci.yml # GitHub Actions CI/CD
├── internal/
│ ├── config/
│ │ ├── config.go # Configuration management
│ │ └── config_test.go # Configuration tests
│ ├── models/
│ │ └── skill.go # Data models
│ ├── storage/
│ │ ├── storage.go # Storage interface
│ │ ├── memory.go # In-memory storage implementation
│ │ └── memory_test.go # Storage tests
│ └── handlers/
│ └── skill.go # Archive utilities
├── static/
│ └── index.html # Embedded web frontend
└── examples/
 └── sample-skill/ # Example skill package
 ├── SKILL.md
 └── README.md

Development

Running Tests

# Run all tests
make test
# Or use go test directly
go test -v ./...
# Run tests with coverage
go test -v -race -coverprofile=coverage.txt ./...

Building

# Build binary
make build
# Or use go build directly
go build -o skill-registry .

Code Quality

# Format code
make fmt
# Lint code (requires golangci-lint)
make lint

Skill Package Format

A skill package is a compressed archive containing:

my-skill/
├── SKILL.md # Skill metadata and documentation (required)
├── README.md # Additional documentation
├── config.json # Configuration schema
└── ... # Other supporting files

SKILL.md Format

---
name: My Skill
description: Does something useful
metadata:
 openclaw:
 requires:
 bins: ["curl", "jq"]
 install:
 - id: "brew"
 kind: "brew"
 formula: "my-formula"
---
# My Skill
Documentation here...

License

MIT License - feel free to use this for your own projects!

Contributing

Contributions welcome! Please feel free to submit issues or pull requests.

About

Self-hosted skill registry server with REST API, web UI, and Docker support. Manage, search, and distribute OpenClaw skills with built-in package management.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /