Self-hosted, open-source agent skill registry for enterprises. Publish & version skill packages, govern with RBAC and audit logs, deploy on-premise with Docker or Kubernetes.
5,082
stars
1,134
commits
Java
primary language
Sep 11, 2026
updated
An enterprise-grade, open-source agent skill registry — publish, discover, and manage reusable skill packages across your organization.
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.
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.
make dev-all command to get running locally.beta, stable), and automatic
latest tracking.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.
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
make dev-all
For developers in China: If Maven dependency download times out, configure Aliyun mirror. See Local Development Guide for details.
Then open:
http://localhost:3000http://localhost:8080By 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:
local-user for normal publishing and namespace operationslocal-admin with SUPER_ADMIN for review and admin flowsUse them with the X-Mock-User-Id header in local development.
The local bootstrap admin is enabled by default in application-local.yml:
adminChangeMe!2026BOOTSTRAP_ADMIN_ENABLED=false before starting the backend.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.
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.
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-urlfor 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:
cp .env.release.example .env.release
Recommended image tags:
SKILLHUB_VERSION=latest for the latest stable release (default)SKILLHUB_VERSION=edge for the latest main buildSKILLHUB_VERSION=vX.Y.Z for a fixed releaseStart the runtime:
make validate-release-config
docker compose --env-file .env.release -f compose.release.yml up -d
Then open:
SKILLHUB_PUBLIC_BASE_URL 对应的地址http://localhost:8080Stop 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:
adminChangeMe!2026Recommended production baseline:
SKILLHUB_PUBLIC_BASE_URL to the final HTTPS entrypoint/skillhub/, set
SKILLHUB_WEB_BASE_PATH=/skillhub/ and SKILLHUB_WEB_API_BASE_URL=/skillhub
as well127.0.0.1SKILLHUB_STORAGE_S3_*BOOTSTRAP_ADMIN_PASSWORD to a strong password (validate-release-config.sh rejects the default ChangeMe!2026)make validate-release-config before docker compose up -dIf the GHCR package remains private, run docker login ghcr.io before
docker compose up -d.
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.
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:
http://localhost:9090http://localhost:3001 (admin / admin)By default Prometheus scrapes http://host.docker.internal:8080/actuator/prometheus,
so start the backend locally on port 8080 first.
Basic Kubernetes manifests are available under deploy/k8s/:
configmap.yamlsecret.yaml.examplebackend-deployment.yamlfrontend-deployment.yamlservices.yamlingress.yamlFor 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
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.
┌─────────────┐ ┌─────────────┐ ┌──────────────┐
│ 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 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 |
| Versioning | Git history | Semantic versions, tags (beta / stable), latest tracking |
| Access control | Public | Namespaces, RBAC, review & audit logging |
| Distribution | Clone / copy files | Full-text search + CLI install |
Because SkillHub speaks the same SKILL.md format, skills from anthropics/skills
— or any Agent Skill folder — publish straight into your registry:
# Grab a skill from an open collection...
git clone https://github.com/anthropics/skills
# ...and publish it into your private SkillHub registry
export CLAWHUB_REGISTRY=https://skillhub.your-company.com
npx clawhub publish ./skills/<category>/<skill-name>
⚖️ Licensing: honor each skill's own license when republishing. Most skills in
anthropics/skillsare Apache 2.0, but the document skills (DOCX/PDF/PPTX/XLSX) are source-available rather than open source — check the skill'sLICENSEbefore redistributing.
In short: use collections like anthropics/skills for content, and SkillHub to
distribute it across your organization under governance.
SkillHub works as a skill registry backend for several agent platforms. Point any of the clients below at your SkillHub instance to publish, discover, and install skills.
OpenClaw is an open-source agent skill CLI. Configure it to use your SkillHub endpoint as the registry:
# Configure registry URL
export CLAWHUB_REGISTRY=https://skillhub.your-company.com
# Authenticate once if needed
clawhub login --token YOUR_API_TOKEN
# Search and install skills
npx clawhub search email
npx clawhub install my-skill
npx clawhub install my-namespace--my-skill
# Publish to global namespace
npx clawhub publish ./my-skill --slug my-skill --version 1.0.0
# Publish to a team namespace such as my-space
npx clawhub publish ./my-skill --slug my-space--my-skill --version 1.0.0
my-space--my-skill is the canonical compat slug. SkillHub parses it as
namespace my-space plus skill slug my-skill.
💡 Tip: The above commands are not only applicable to OpenClaw, but also to other CLI Coding Agents or Agent assistants by specifying the installation directory (
--dir). For example:npx clawhub --dir ~/.claude/skills install my-skill
📖 Complete OpenClaw Integration Guide →
Hermes Agent uses the standard SKILL.md format and recursively discovers skills under $HERMES_HOME/skills/. Use SkillHub CLI's explicit --dir option to install a complete SkillHub package into Hermes without a registry adapter, then verify it with hermes skills list.
📖 Complete Hermes Agent Integration Guide →
HarnessClaw Engine is a Go LLM programming assistant engine that exposes its capabilities over WebSocket. It loads skills from SKILL.md files with YAML frontmatter and parameter substitution, scanning each configured directory for skill-name/SKILL.md (default ~/.harnessclaw/workspace/skills/, with earlier directories taking priority on name conflicts). Install a SkillHub package straight into that directory with the CLI's --dir option, no registry adapter required:
npx clawhub --dir ~/.harnessclaw/workspace/skills install my-skill
AstronClaw is a cloud AI assistant built on OpenClaw's core capabilities, providing 24/7 online service through enterprise platforms like WeChat Work, DingTalk, and Feishu. It features a built-in skill system with over 130 official skills. You can connect it to a self-hosted SkillHub registry to enable one-click skill installation, search repository, dialogue-based automatic installation, and even custom skills management within your organization.
Loomy is a desktop AI work partner focusing on real office scenarios. It integrates deeply with local files and system tools to build efficient automated workflows for individuals and small teams. By connecting Loomy to your SkillHub registry, you can easily discover and install organization-specific skills to enhance your local desktop automation and productivity.
astron-agent is the iFlytek Astron agent framework. Skills stored in SkillHub can be referenced and loaded by astron-agent, enabling a governed, versioned skill lifecycle from development to production.
SkillHub is part of the iFlytek Astron open-source ecosystem. If SkillHub is useful to you, these sibling projects may be too:
🌟 Show & Tell — Have you built something with SkillHub? We'd love to hear about it! Share your use case, integration, or deployment story in the Discussions → Show and Tell category.
Contributions are welcome. Please open an issue first to discuss what you'd like to change.
CONTRIBUTING.mdCODE_OF_CONDUCT.md💬 Community Discussion: GitHub Discussions
🐛 Bug Reports: Issues
👾 Discord: Join our Server
👥 WeChat Work Group:

Apache License 2.0
(top 30 of 34)
Java
56.9%
TypeScript
32.0%
HTML
5.8%
Shell
3.4%
Self-hosted, open-source agent skill registry for enterprises. Publish & version skill packages, govern with RBAC and audit logs, deploy on-premise with Docker or Kubernetes.
5,082
stars
1,134
commits
Java
primary language
Sep 11, 2026
updated
An enterprise-grade, open-source agent skill registry — publish, discover, and manage reusable skill packages across your organization.
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.
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.
make dev-all command to get running locally.beta, stable), and automatic
latest tracking.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.
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
make dev-all
For developers in China: If Maven dependency download times out, configure Aliyun mirror. See Local Development Guide for details.
Then open:
http://localhost:3000http://localhost:8080By 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:
local-user for normal publishing and namespace operationslocal-admin with SUPER_ADMIN for review and admin flowsUse them with the X-Mock-User-Id header in local development.
The local bootstrap admin is enabled by default in application-local.yml:
adminChangeMe!2026BOOTSTRAP_ADMIN_ENABLED=false before starting the backend.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.
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.
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-urlfor 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:
cp .env.release.example .env.release
Recommended image tags:
SKILLHUB_VERSION=latest for the latest stable release (default)SKILLHUB_VERSION=edge for the latest main buildSKILLHUB_VERSION=vX.Y.Z for a fixed releaseStart the runtime:
make validate-release-config
docker compose --env-file .env.release -f compose.release.yml up -d
Then open:
SKILLHUB_PUBLIC_BASE_URL 对应的地址http://localhost:8080Stop 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:
adminChangeMe!2026Recommended production baseline:
SKILLHUB_PUBLIC_BASE_URL to the final HTTPS entrypoint/skillhub/, set
SKILLHUB_WEB_BASE_PATH=/skillhub/ and SKILLHUB_WEB_API_BASE_URL=/skillhub
as well127.0.0.1SKILLHUB_STORAGE_S3_*BOOTSTRAP_ADMIN_PASSWORD to a strong password (validate-release-config.sh rejects the default ChangeMe!2026)make validate-release-config before docker compose up -dIf the GHCR package remains private, run docker login ghcr.io before
docker compose up -d.
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.
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:
http://localhost:9090http://localhost:3001 (admin / admin)By default Prometheus scrapes http://host.docker.internal:8080/actuator/prometheus,
so start the backend locally on port 8080 first.
Basic Kubernetes manifests are available under deploy/k8s/:
configmap.yamlsecret.yaml.examplebackend-deployment.yamlfrontend-deployment.yamlservices.yamlingress.yamlFor 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
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.
┌─────────────┐ ┌─────────────┐ ┌──────────────┐
│ 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 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 |
| Versioning | Git history | Semantic versions, tags (beta / stable), latest tracking |
| Access control | Public | Namespaces, RBAC, review & audit logging |
| Distribution | Clone / copy files | Full-text search + CLI install |
Because SkillHub speaks the same SKILL.md format, skills from anthropics/skills
— or any Agent Skill folder — publish straight into your registry:
# Grab a skill from an open collection...
git clone https://github.com/anthropics/skills
# ...and publish it into your private SkillHub registry
export CLAWHUB_REGISTRY=https://skillhub.your-company.com
npx clawhub publish ./skills/<category>/<skill-name>
⚖️ Licensing: honor each skill's own license when republishing. Most skills in
anthropics/skillsare Apache 2.0, but the document skills (DOCX/PDF/PPTX/XLSX) are source-available rather than open source — check the skill'sLICENSEbefore redistributing.
In short: use collections like anthropics/skills for content, and SkillHub to
distribute it across your organization under governance.
SkillHub works as a skill registry backend for several agent platforms. Point any of the clients below at your SkillHub instance to publish, discover, and install skills.
OpenClaw is an open-source agent skill CLI. Configure it to use your SkillHub endpoint as the registry:
# Configure registry URL
export CLAWHUB_REGISTRY=https://skillhub.your-company.com
# Authenticate once if needed
clawhub login --token YOUR_API_TOKEN
# Search and install skills
npx clawhub search email
npx clawhub install my-skill
npx clawhub install my-namespace--my-skill
# Publish to global namespace
npx clawhub publish ./my-skill --slug my-skill --version 1.0.0
# Publish to a team namespace such as my-space
npx clawhub publish ./my-skill --slug my-space--my-skill --version 1.0.0
my-space--my-skill is the canonical compat slug. SkillHub parses it as
namespace my-space plus skill slug my-skill.
💡 Tip: The above commands are not only applicable to OpenClaw, but also to other CLI Coding Agents or Agent assistants by specifying the installation directory (
--dir). For example:npx clawhub --dir ~/.claude/skills install my-skill
📖 Complete OpenClaw Integration Guide →
Hermes Agent uses the standard SKILL.md format and recursively discovers skills under $HERMES_HOME/skills/. Use SkillHub CLI's explicit --dir option to install a complete SkillHub package into Hermes without a registry adapter, then verify it with hermes skills list.
📖 Complete Hermes Agent Integration Guide →
HarnessClaw Engine is a Go LLM programming assistant engine that exposes its capabilities over WebSocket. It loads skills from SKILL.md files with YAML frontmatter and parameter substitution, scanning each configured directory for skill-name/SKILL.md (default ~/.harnessclaw/workspace/skills/, with earlier directories taking priority on name conflicts). Install a SkillHub package straight into that directory with the CLI's --dir option, no registry adapter required:
npx clawhub --dir ~/.harnessclaw/workspace/skills install my-skill
AstronClaw is a cloud AI assistant built on OpenClaw's core capabilities, providing 24/7 online service through enterprise platforms like WeChat Work, DingTalk, and Feishu. It features a built-in skill system with over 130 official skills. You can connect it to a self-hosted SkillHub registry to enable one-click skill installation, search repository, dialogue-based automatic installation, and even custom skills management within your organization.
Loomy is a desktop AI work partner focusing on real office scenarios. It integrates deeply with local files and system tools to build efficient automated workflows for individuals and small teams. By connecting Loomy to your SkillHub registry, you can easily discover and install organization-specific skills to enhance your local desktop automation and productivity.
astron-agent is the iFlytek Astron agent framework. Skills stored in SkillHub can be referenced and loaded by astron-agent, enabling a governed, versioned skill lifecycle from development to production.
SkillHub is part of the iFlytek Astron open-source ecosystem. If SkillHub is useful to you, these sibling projects may be too:
🌟 Show & Tell — Have you built something with SkillHub? We'd love to hear about it! Share your use case, integration, or deployment story in the Discussions → Show and Tell category.
Contributions are welcome. Please open an issue first to discuss what you'd like to change.
CONTRIBUTING.mdCODE_OF_CONDUCT.md💬 Community Discussion: GitHub Discussions
🐛 Bug Reports: Issues
👾 Discord: Join our Server
👥 WeChat Work Group:

Apache License 2.0
(top 30 of 34)
Java
56.9%
TypeScript
32.0%
HTML
5.8%
Shell
3.4%