skillhub README

The project's README from github.com/iflytek/skillhub. As one markdown file: README.md.

SkillHub Logo

SkillHub

An enterprise-grade, open-source agent skill registry — publish, discover, and manage reusable skill packages across your organization.

DeepWiki Docs Discord License Build Docker Java React

GitHub Stars GitHub Watchers

iflytek%2Fskillhub | Trendshift  AAIF Associate Member

English | 中文


SkillHub Demo

SkillHub is a self-hosted platform that gives teams a private, governed place to share agent skills. Publish a skill package, push it to a namespace, and let others find it through search or install it via CLI. Built for on-premise deployment behind your firewall, with the same polish you'd expect from a public registry.

⭐ If SkillHub fits your team, star the repo to help other teams find it, and Watch → Custom → Releases to get notified when a new version ships.

Share Great Skills

Great Skills become more valuable when they are shared. If you have a Skill that has proved useful in real work or everyday life, share it with the SkillHub community and help grow an open, practical Skill ecosystem. We welcome Skills for daily life, office work, learning and research, travel and events, content creation, data analysis, and software development—not only engineering workflows.

High-quality community contributions may join the curated starter collection, making new SkillHub deployments useful from day one. You do not need to finish the full adaptation before joining in: open an issue with the Skill's source and the problem it solves, or submit a PR by following the Skill sharing guide.

Documentation

Governance and Safety

Highlights

Quick Start

Start the full local stack with:

rm -rf /tmp/skillhub-runtime
curl -fsSL https://imageless.oss-cn-beijing.aliyuncs.com/runtime.sh | sh -s -- up

The default command pulls the latest stable release images. Use --version edge if you want the newest build from main.

Configure public URL (recommended for production):

curl -fsSL https://imageless.oss-cn-beijing.aliyuncs.com/runtime.sh | sh -s -- up --public-url https://skillhub.your-company.com

The --public-url parameter sets the public access URL for your SkillHub instance. This ensures:

For users in China (Aliyun mirror):

curl -fsSL https://imageless.oss-cn-beijing.aliyuncs.com/runtime.sh | sh -s -- up --aliyun --public-url https://skillhub.your-company.com --version latest

If deployment runs into problems, clear the existing runtime home and retry.

SkillHub CLI

Install and manage Agent skills from the command line:

# Install CLI
npm install -g @astron-team/skillhub

# Or run directly
npx @astron-team/skillhub@latest version

# Login
skillhub login --token sk_xxx --registry https://skill.xfyun.cn

# Search and install skills
skillhub search pdf
skillhub install pdf-parser --agent codex

# List installed skills
skillhub list

📖 Full guide: docs/skillhub/en/guide/cli.md

Prerequisites

Local Development

make dev-all

For developers in China: If Maven dependency download times out, configure Aliyun mirror. See Local Development Guide for details.

Then open:

By default, make dev-all starts the backend with the local profile. In that mode, local development keeps the mock-auth users below and also creates a password-based bootstrap admin account by default:

Use them with the X-Mock-User-Id header in local development.

The local bootstrap admin is enabled by default in application-local.yml:

Stop everything with:

make dev-all-down

Reset local dependencies and start from a clean slate with:

make dev-all-reset

Run make help to see all available commands.

Useful backend commands:

make test
make test-backend-app
make build-backend-app

Do not run ./mvnw -pl skillhub-app clean test directly under server/. skillhub-app depends on sibling modules in the same repo, and a standalone clean build can fall back to stale artifacts from the local Maven repository, which surfaces misleading cannot find symbol and signature-mismatch errors. Use -am, or the make test-backend-app and make build-backend-app targets above.

For the full development workflow (local dev → staging → PR), see docs/dev-workflow.md.

API Contract Sync

OpenAPI types for the web client are checked into the repository. When backend API contracts change, regenerate the SDK and commit the updated generated file:

make generate-api

For a stricter end-to-end drift check, run:

./scripts/check-openapi-generated.sh

This starts local dependencies, boots the backend, regenerates the frontend schema, and fails if the checked-in SDK is stale.

Container Runtime

Published runtime images are built by GitHub Actions and pushed to GHCR. This is the supported path for anyone who wants a ready-to-use local environment without building the backend or frontend on their machine. Published server and web images target linux/amd64, linux/arm64, and linux/riscv64; the scanner image currently targets linux/amd64 and linux/arm64.

Quick deployment with curl:

# Default (GHCR images)
curl -fsSL https://imageless.oss-cn-beijing.aliyuncs.com/runtime.sh | sh -s -- up --public-url https://skillhub.your-company.com

# Aliyun mirror (recommended for users in China)
curl -fsSL https://imageless.oss-cn-beijing.aliyuncs.com/runtime.sh | sh -s -- up --aliyun --public-url https://skillhub.your-company.com --version latest

Deployment parameters:

Parameter Description Example
--public-url <url> Public access URL (recommended) --public-url https://skill.example.com
--version <tag> Specific image tag --version v0.2.0
--aliyun Use Aliyun mirror (China) --aliyun
--home <dir> Runtime directory --home /opt/skillhub
--no-scanner Disable security scanner --no-scanner

Important: Configure --public-url for production deployments to ensure CLI install commands and Agent setup instructions display the correct URLs.

For sub-path deployments, keep the public URL and runtime base path aligned in .env.release: set SKILLHUB_PUBLIC_BASE_URL=https://skill.example.com/skillhub, SKILLHUB_WEB_BASE_PATH=/skillhub/, and SKILLHUB_WEB_API_BASE_URL=/skillhub.

Manual deployment:

  1. Copy the runtime environment template.
  2. Pick an image tag.
  3. Start the stack with Docker Compose.
cp .env.release.example .env.release

Recommended image tags:

Start the runtime:

make validate-release-config
docker compose --env-file .env.release -f compose.release.yml up -d

Then open:

Stop it with:

docker compose --env-file .env.release -f compose.release.yml down

The runtime stack uses its own Compose project name, so it does not collide with containers from make dev-all.

The production Compose stack now defaults to the docker profile only. It does not enable local mock auth. The release template (.env.release.example) enables the bootstrap admin by default, so zero-config quickstart via runtime.sh works out of the box:

Recommended production baseline:

If the GHCR package remains private, run docker login ghcr.io before docker compose up -d.

Upload Allowlist Override

Skill package upload validation uses the default extension allowlist from SkillPackagePolicy.java. SkillPublishProperties uses that same list by default for skillhub.publish.allowed-file-extensions.

If you need to replace the default allowlist at runtime, set:

SKILLHUB_PUBLISH_ALLOWED_FILE_EXTENSIONS=.md,.json,.xsd,.xsl,.dtd,.docx,.xlsx,.pptx

Spring Boot binds this environment variable to skillhub.publish.allowed-file-extensions. When set, it replaces the default allowlist instead of appending to it.

Monitoring

A Prometheus + Grafana monitoring stack lives under monitoring/. It scrapes the backend's Actuator Prometheus endpoint.

Start it with:

cd monitoring
docker compose -f docker-compose.monitoring.yml up -d

Then open:

By default Prometheus scrapes http://host.docker.internal:8080/actuator/prometheus, so start the backend locally on port 8080 first.

Kubernetes

Basic Kubernetes manifests are available under deploy/k8s/:

For a configurable deployment with bundled PostgreSQL and Redis dependencies, use the Helm chart under charts/skillhub/:

helm dependency build ./charts/skillhub
helm upgrade --install skillhub ./charts/skillhub \
  --namespace skillhub \
  --create-namespace \
  -f values-production.yaml

See the Helm chart guide for required secrets, Ingress/TLS, external data services, storage migration, and upgrade constraints.

Apply them after creating your own secret:

kubectl apply -f deploy/k8s/configmap.yaml
kubectl apply -f deploy/k8s/secret.yaml
kubectl apply -f deploy/k8s/backend-deployment.yaml
kubectl apply -f deploy/k8s/frontend-deployment.yaml
kubectl apply -f deploy/k8s/services.yaml
kubectl apply -f deploy/k8s/ingress.yaml

Smoke Test

A lightweight smoke test script is available at scripts/smoke-test.sh.

Run it against a local backend:

./scripts/smoke-test.sh http://localhost:8080

Local Compose and staging runs can keep using one backend URL. For an ingress deployment where the public URL exposes application APIs but keeps Actuator on the backend service, set a separate Actuator target:

ACTUATOR_BASE_URL=http://skillhub-server:8080 \
  ./scripts/smoke-test.sh https://skillhub.example.com

The health check requires an Actuator JSON response, so an HTML SPA fallback is reported as a routing or target error instead of a successful health response.

Admin label-management smoke checks run only when current admin credentials are supplied explicitly:

SMOKE_ADMIN_USERNAME=admin SMOKE_ADMIN_PASSWORD='current-password' \
  ./scripts/smoke-test.sh http://localhost:8080

Use SMOKE_ADMIN_CHECKS=false for persistent environments where only non-admin smoke checks should run. The script no longer falls back to bootstrap admin password defaults.

Architecture

┌─────────────┐     ┌─────────────┐     ┌──────────────┐
│   Web UI    │     │  CLI Tools  │     │  REST API    │
│  (React 19) │     │             │     │              │
└──────┬──────┘     └──────┬──────┘     └──────┬───────┘
       │                   │                   │
       └───────────────────┼───────────────────┘
                           │
                    ┌──────▼──────┐
                    │   Nginx     │
                    └──────┬──────┘
                           │
                    ┌──────▼──────┐
                    │ Spring Boot │  Auth · RBAC · Core Services
                    │   (Java 21) │  OAuth2 · API Tokens · Audit
                    └──────┬──────┘
                           │
              ┌────────────┼────────────┐
              │            │            │
       ┌──────▼───┐  ┌─────▼────┐  ┌────▼────┐
       │PostgreSQL│  │  Redis   │  │ Storage │
       │    16    │  │    7     │  │ S3/MinIO│
       └──────────┘  └──────────┘  └─────────┘

Backend (Spring Boot 3.2.3, Java 21):

Frontend (React 19, TypeScript, Vite):

SkillHub and the Agent Skills Ecosystem

SkillHub is a registry and governance platform — not a skill collection. It is complementary to open skill catalogs such as anthropics/skills: that repository popularized the Agent Skill format (a SKILL.md with name / description frontmatter plus supporting files) and ships a curated set of example skills. SkillHub is where your organization hosts, versions, governs, and distributes those skills privately.

anthropics/skills SkillHub
What it is A curated collection of example Agent Skills + the format spec A self-hosted registry & governance platform for skills
Layer Content — the skills themselves Infrastructure — hosting, versioning, discovery, access control
Hosting Public GitHub repository Your own infrastructure, behind your firewall
V

skillhub (iflytek/skillhub)

Searching Database…

这是什么?SkillHub 是一个可自托管的开源智能体技能注册中心,企业可以在自己的防火墙后面发布、管理版本并治理可复用的智能体技能包。
这是像 anthropics/skills 那样的技能合集,还是别的东西?不是,SkillHub 提供的是基础设施,而不是内容:它是一个注册与治理平台,用于私有地托管、管理版本和分发 Agent Skill 技能包,与 'anthropics/skills' 这类精选技能合集互为补充。
我该怎么把它跑起来?用 `make dev-all` 运行完整的本地环境,或者拉取已发布的运行时镜像,再用提供的基于 curl 的安装脚本部署,生产环境使用时需传入 --public-url。
运行 SkillHub 前需要先安装什么?Docker 和 Docker Compose 是 CLI/注册中心环境的明确前置要求;如果要做本地后端开发,还需要 Maven 和 Java 21。
构建或部署时有什么需要注意的坑吗?直接在 server/ 目录下运行 `./mvnw -pl skillhub-app clean test` 可能会拉取到过期的构件,并产生误导性的报错,因此请改用 make 命令。另外,初始管理员账户自带默认密码(ChangeMe!2026),上线生产环境前必须修改。
SkillHub 是为谁打造的?面向希望拥有私有、受治理的智能体技能注册中心、而不是依赖公共技能仓库的企业和平台团队,并提供命名空间所有权、审核流程和审计日志功能。
我可以在 Kubernetes 上运行它,还是只能用 Docker?两者都可以:SkillHub 提供用于快速部署的 Docker Compose 环境,以及基础的 Kubernetes 清单文件,还有一个打包了 PostgreSQL/Redis 的 Helm chart,用于集群部署;已发布的镜像支持 linux/amd64、arm64 和 riscv64。
它能确保专有技能保持私密吗?能,它专为本地部署设计,具备完整的数据主权;另外,单独的治理文档涵盖了自托管实例的数据类别、保留期限、可移植性以及事件处理。
ClawHub 兼容层是做什么用的?它让现有的 ClawHub 风格注册中心客户端能够与 SkillHub 通信,而 SkillHub 原生的 REST API 和 CLI 今后仍是主要支持的接口。
后端和前端用的是什么技术栈?后端运行在 Java 21 上的 Spring Boot 3.2.3,搭配 PostgreSQL 16 和 Redis;前端使用 React 19 加 TypeScript、Vite、TanStack Router/Query 以及 Tailwind CSS/Radix UI。
技能包是如何存储的?开发环境下,技能包存储在本地文件系统中;生产环境下则存储在 S3 或 MinIO 中,通过配置即可切换,无需修改代码。
我能监控正在运行的部署吗?可以,内置的 Prometheus + Grafana 环境会抓取后端 Actuator 的指标端点,用于监控。
What are similar projects?casdoor, JeecgBoot, labtether, OpenBot, edict, clevis, paperclip, Clawith
Creator
iflytek
Size
65.9 MB
Stars
5.2K
Age
7mo
Commits · 90 Days