Sandbox
@lynnzc/skify

Self-hosted skill registry for AI coding agents

skify gives you a private place to publish and manage agent skills instead of keeping them in public repos. The CLI can add, remove, list, update, search, read, publish, and sync skills into AGENTS.md, while the registry stores versions and the web UI lets you browse them.

41 stars7 forksTypeScriptUpdated 6mo ago
Who it's for

Builders who want their agent skills, templates, and workflows to stay in their own infrastructure.

What it delivers

You can publish reusable skills once and install them across projects without re-explaining the same workflow to every agent.

What it does

Private skill registry

Stores skills in your own Cloudflare or Docker deployment instead of a public repository.

Skill publish and install flow

Supports `skify publish`, `skify add`, `skify remove`, `skify update`, and `skify read` for managing skills.

AGENTS.md sync

Generates an `AGENTS.md` skill manifest with `skify sync` so agents can discover available skills.

Web browsing and search

Provides a web UI to browse, search, and preview skills.

Role-based tokens

Creates `read`, `publish`, and `admin` tokens for controlled access to the registry.

Cloudflare and Docker deployment

Includes deployment scripts for Cloudflare Workers or self-hosted Docker setups.

How to get it

  1. 1Run
    # Run directly with npx
    npx skify <command>
    
    # Or install globally
    npm install -g @skify/cli
  2. 2Run
    git clone https://github.com/lynnzc/skify.git
    cd skify
    pnpm install
    pnpm build

README

skify

Self-Hosted Agent Skills Registry
Deploy your own private skill management platform for AI coding agents

npm version License Node.js


skify is a private skill registry you can deploy in minutes. Host your own skill packages for AI coding agents — keep proprietary workflows private, ensure team consistency, and maintain full control.

# Deploy to Cloudflare (personal profile, default)
cd deploy/cloudflare && bash deploy.sh all personal

# Or self-host with Docker (team profile)
cd deploy/docker && bash deploy.sh team

Why skify?

AI coding agents need domain-specific knowledge. Skills provide reusable instructions, templates, and workflows — but public repositories aren't always an option.

skify gives you:

🔒 Private by defaultYour skills stay in your infrastructure
⚡ One-click deployCloudflare Workers (free) or Docker
📦 Full registryPublish, version, search, and install skills
🛠️ CLI includednpx skify add/publish/sync
🌐 Web UIBrowse and search skills visually

Table of Contents

Quick Deploy

Option 1: Cloudflare Workers (Recommended)

Free tier, global edge, zero server management.

cd deploy/cloudflare
bash deploy.sh all personal
# or strict team profile:
# bash deploy.sh all team

The script will:

  1. Create D1 database and R2 storage
  2. Deploy the Worker
  3. Generate and display your API token
✓ Deployed to https://skify-api.your-account.workers.dev
✓ API Token: sk_xxxxxxxxxxxx

Option 2: Docker (Self-Hosted)

Full control, runs anywhere, air-gapped support.

cd deploy/docker
bash deploy.sh personal
# or strict team profile:
# bash deploy.sh team

Or with docker-compose:

cd deploy/docker
docker-compose up -d

Configure CLI

After deployment, point the CLI to your registry:

skify config set registry https://your-registry-url
skify config set token <your-api-token>

Post-Deploy Checklist (1 minute)

# 1) API health
curl -sS https://your-registry-url/api/health
# expected: {"status":"ok"}

# 2) list skills (default onboarding mode)
curl -sS https://your-registry-url/api/skills

# 3) CLI connectivity
skify config set registry https://your-registry-url
skify config set token <admin-token>
skify browse

If you run team profile (ALLOW_ANONYMOUS_READ=false), step 2 should include a read/admin token:

curl -sS https://your-registry-url/api/skills \
  -H "Authorization: Bearer <read-or-admin-token>"

RBAC Tokens

skify supports role-based API tokens:

  • read: browse/search/download/install
  • publish: includes read, plus publish/update skill content
  • admin: includes publish, plus delete/sync/token management

Access behavior:

  • personal profile: anonymous read enabled (smooth onboarding)
  • team profile: anonymous read disabled (ALLOW_ANONYMOUS_READ=false)

Quick start (personal):

# set registry/admin token for CLI
skify config set registry https://your-registry-url
skify config set token <admin-token>

# publish then browse immediately (web/cli read works without extra token)
skify publish ./my-skill

Strict mode (team):

# deploy with team profile
cd deploy/cloudflare && bash deploy.sh all team
# or
cd deploy/docker && bash deploy.sh team

# create a read-only token for users/services
skify token create team-read --permissions read
# list existing tokens (admin token required)
skify token list

# create publish token
skify token create ci-publisher --permissions publish

# create read token for Web UI
skify token create web-read --permissions read

# revoke token by id
skify token revoke <token-id>

CLI Usage

Install CLI

# Run directly with npx
npx skify <command>

# Or install globally
npm install -g @skify/cli

Commands

CommandDescription
skify add <skill>Install a skill
skify remove <name>Remove a skill
skify listList installed skills
skify update [name]Update skills
skify syncGenerate AGENTS.md
skify publish <dir>Publish skill to registry
skify search <query>Search for skills
skify read <name>Output skill content
skify token ...Manage registry RBAC tokens
skify configManage configuration

Examples

# Publish a skill to your registry
skify publish ./my-skill

# Install from your registry
skify add my-skill

# Install from GitHub (public or private with token)
skify add owner/repo/skill-name
skify add owner/repo/skill-name --token ghp_xxx

# Install to specific agent directory
skify add my-skill --agent cursor   # .cursor/skills/
skify add my-skill --agent claude   # .claude/skills/

# Generate AGENTS.md for AI agents
skify sync

How It Works

┌─────────────────────────────────────────────────────────────────────┐
│  1. DEPLOY                                                          │
│                                                                     │
│     bash deploy.sh  ──►  Your Private Registry                     │
│                          (Cloudflare or Docker)                     │
└─────────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────────┐
│  2. PUBLISH                                                         │
│                                                                     │
│     skify publish ./my-skill  ──►  Registry stores skill           │
│                                    with version tracking            │
└─────────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────────┐
│  3. INSTALL                                                         │
│                                                                     │
│     skify add my-skill  ──►  Downloads to .agent/skills/           │
│     skify sync          ──►  Generates AGENTS.md                   │
└─────────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────────┐
│  4. USE                                                             │
│                                                                     │
│     AI Agent reads AGENTS.md                                        │
│     ↓                                                               │
│     Sees available skills                                           │
│     ↓                                                               │
│     Runs: npx skify read my-skill                                  │
│     ↓                                                               │
│     Receives instructions and executes                              │
└─────────────────────────────────────────────────────────────────────┘

Project Structure After Install

your-project/
├── .agent/
│   ├── skills/
│   │   ├── my-skill/
│   │   │   ├── SKILL.md
│   │   │   └── templates/
│   │   └── another-skill/
│   │       └── SKILL.md
│   └── skify.lock.json
├── AGENTS.md              # Auto-generated skill manifest
└── ...

AGENTS.md Format

<skills_system priority="1">
<usage>
Invoke skills: `npx skify read <skill-name>`
</usage>

<available_skills>
<skill>
  <name>my-skill</name>
  <description>What this skill does</description>
</skill>
</available_skills>
</skills_system>

Creating Skills

Skill Structure

my-skill/
├── SKILL.md           # Required: Instructions for the agent
├── templates/         # Optional: Template files
├── examples/          # Optional: Example code
└── resources/         # Optional: Other resources

SKILL.md Format

---
name: my-skill
description: Brief description of what this skill does
version: 1.0.0
---

# My Skill

Instructions for the AI agent.

## When to Use

Describe when this skill applies.

## How to Use

Step-by-step instructions.

Publish to Your Registry

# Set up registry (one time)
skify config set registry https://your-registry
skify config set token <token>

# Publish
cd my-skill
skify publish .

# Version updates
# Edit SKILL.md, bump version, publish again
skify publish .

Architecture

┌─────────────────────────────────────────────────────────────────────┐
│                         skify Registry                              │
│                                                                     │
│  ┌─────────────┐    ┌─────────────┐    ┌─────────────┐            │
│  │   REST API  │    │   Storage   │    │  Database   │            │
│  │             │    │             │    │             │            │
│  │ - publish   │    │ Cloudflare: │    │ Cloudflare: │            │
│  │ - download  │    │   R2        │    │   D1        │            │
│  │ - search    │    │             │    │             │            │
│  │ - list      │    │ Docker:     │    │ Docker:     │            │
│  │             │    │   Filesystem│    │   SQLite    │            │
│  └─────────────┘    └─────────────┘    └─────────────┘            │
└─────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────┐
│                         skify CLI                                   │
│                                                                     │
│  @skify/cli                                                         │
│  ├── add/remove/update     # Manage installed skills               │
│  ├── publish               # Upload to registry                    │
│  ├── search/list           # Discover skills                       │
│  ├── sync                  # Generate AGENTS.md                    │
│  └── read                  # Output skill for agent                │
│                                                                     │
│  @skify/core                                                        │
│  ├── GitHub API            # Fetch from GitHub repos               │
│  └── Parser                # Parse SKILL.md files                  │
└─────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────┐
│                         skify Web UI                                │
│                                                                     │
│  Browse, search, and preview skills in your browser                │
│  Deploy alongside registry or standalone                            │
└─────────────────────────────────────────────────────────────────────┘

Deployment Comparison

CloudflareDocker
SetupOne scriptOne script
CostFree tier (100k req/day)Your infrastructure
ScalingAutomatic, global edgeManual
StorageR2 (S3-compatible)Filesystem
DatabaseD1 (SQLite)SQLite
Best forMost usersAir-gapped, on-premise

Development

Prerequisites

  • Node.js >= 20.6.0
  • pnpm >= 9.0.0

Setup

git clone https://github.com/lynnzc/skify.git
cd skify
pnpm install
pnpm build

Project Structure

skify/
├── packages/
│   ├── core/       # Shared library
│   ├── cli/        # CLI tool
│   ├── web/        # Web UI
│   └── worker/     # Cloudflare Worker
├── deploy/
│   ├── cloudflare/ # CF deployment script
│   └── docker/     # Docker deployment
└── scripts/

Local Development

# CLI
cd packages/cli && npm link
skify --help

# Web UI
pnpm --filter @skify/web dev
# http://localhost:5173

# Worker (local)
pnpm --filter @skify/worker dev

Compatible Agents

Works with any AI coding agent that can read markdown and run shell commands:

  • Cursor
  • Claude Code
  • GitHub Copilot
  • Codex
  • Windsurf
  • And more...

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Submit a Pull Request

License

Apache License 2.0 — see LICENSE

Files in the repo

Repository payload10 top-level entries
  • deploy
  • packages
  • scripts
  • .gitignore
  • LICENSE
  • package.json
  • pnpm-lock.yaml
  • pnpm-workspace.yaml
  • README.md
  • turbo.json

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More tools

JuliusBrussee/
caveman

🪨 why use many token when few token do trick — Claude Code skill that cuts 65% of tokens by talking like caveman

105k
1 add
MemPalace/
mempalace

The best-benchmarked open-source AI memory system. And it's free.

59k
stablyai/
orca

Orca is the ADE for working with a fleet of parallel agents. Run any coding agent with your own subscription. Available on desktop, mobile and remote runtime.

66k

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

132k

Never stop coding. Free MIT AI gateway: one endpoint, 352 providers (150+ free), 1200+ models Kimi, Claude, GPT, Gemini, GLM, DeepSeek, MiniMax. Works with Claude Code, Codex, Cursor, OpenCode, Cline & Copilot. Quota-aware auto-fallback, RTK+Caveman compression saves 15-95% tokens, MCP/A2A, Desktop/PWA. Built by 550+ contributors

64k
headroomlabs-ai/
headroom

Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.

71k