12 KiB
OpenClaw Integration Guide
This document explains how to configure the ClawHub CLI to connect to a private SkillHub registry for search, inspection, and installation. Use the first-party SkillHub CLI for publishing.
Not only applicable to Openclaw, but also compatible with other CLI Coding Agents (Claude Code, OpenCode, Qcoder, etc.) or Agent assistants (Nanobot, CoPaw, etc.) by specifying the installation directory.
Overview
SkillHub provides a ClawHub-compatible API for common read and install flows. With simple configuration, you can:
- 🔍 Search for private skills within your organization
- 📥 Download and install skill packages
- ⭐ Star skills
Current compatibility boundaries:
- ClawHub CLI
0.23.3uses/api/v1/whoami, which matches the SkillHub compatibility API. - ClawHub publishing depends on upload-ticket endpoints that SkillHub does not implement, so
clawhub publishandclawhub syncare not supported. - ClawHub CLI
0.23.3does not reliably prioritize the private Registry saved duringlogin; site discovery or the default can select another target. SetCLAWHUB_REGISTRYin each shell session or pass--registryexplicitly. - Canonical slugs use
--between namespace and skill. SkillHub rejects new namespace or skill slugs containing consecutive--, keeping new coordinates unambiguous. Rename invalid legacy or externally imported coordinates before using the ClawHub CLI.
Quick Start
1. Configure Registry URL
Set the SkillHub registry address for the current shell session:
# Do not depend on the registry resolution order of the login configuration
export CLAWHUB_REGISTRY=https://skillhub.your-company.com
2. Authentication (Optional)
For global namespace (@global) PUBLIC skills, no login is required to download. Authentication is required for:
- Team namespace skills (regardless of visibility)
- NAMESPACE_ONLY or PRIVATE skills
- Authenticated operations such as starring
# Log in with an API token
npx clawhub login --token YOUR_API_TOKEN
# If you have installed clawhub via npm i -g clawhub, you can use clawhub directly instead of npx clawhub for all commands in this document
# View current logged in user
npx clawhub whoami
# Log out current user
npx clawhub logout
# View help
npx clawhub --help
Obtaining an API Token
- Log in to SkillHub Web UI
- Navigate to Settings → API Tokens
- Click Create New Token
- Set token name and permissions
- Copy the generated token
3. Search/Explore/View Skills
# Search, display all matching skills
npx clawhub search <skill-name>
# Search, display first 5 results
npx clawhub search <skill-name> --limit 5
# Show skill details
npx clawhub inspect <skill-name>
# Explore latest skills
npx clawhub explore
npx clawhub explore --limit 20 # First 20
# Examples
npx clawhub search find-skills
npx clawhub search find-skills --limit 5
npx clawhub inspect find-skills
# Help
npx clawhub search --help
npx clawhub inspect --help
4. Install/Update/Uninstall Skills
# Install
npx clawhub install <skill-name>
npx clawhub install <skill-name> --version <version number> # Specific version
npx clawhub install <skill-name> --force # Overwrite existing
npx clawhub --dir <install-path> install <skill-name> # Specific directory
# Update
npx clawhub update <skill-name>
npx clawhub update --all
# Uninstall
npx clawhub uninstall <skill-name>
# View installed skills
npx clawhub list
# Claude Code Installation Skill Example
npx clawhub --dir ~/.claude/skills install find-skills
CLAWHUB_WORKDIR=~/.claude/skills npx clawhub install find-skills
# Help
npx clawhub install --help
npx clawhub update --help
npx clawhub uninstall --help
npx clawhub list --help
5. Publish with the SkillHub CLI
The ClawHub CLI 0.23.3 publishing protocol is not compatible with SkillHub. Use the first-party SkillHub CLI:
export SKILLHUB_REGISTRY=https://skillhub.your-company.com
export SKILLHUB_TOKEN=YOUR_API_TOKEN
npx @astron-team/skillhub@latest publish ./my-skill --namespace global
npx @astron-team/skillhub@latest publish ./my-skill --namespace my-space
Notes:
- Publishing requires an API Token with the
skill:publishscope and permission in the target namespace. clawhub loginand the SkillHub CLI do not share credentials; setSKILLHUB_TOKENseparately for the first-party CLI.- The first-party CLI uses a separate namespace option, but it still follows the server's slug validation rules.
API Endpoints
SkillHub compatibility layer provides the following endpoints:
| Endpoint | Method | Description | Auth Required |
|---|---|---|---|
/api/v1/whoami |
GET | Get current user info | Required |
/api/v1/search |
GET | Search skills | Optional |
/api/v1/resolve |
GET | Resolve skill version | Optional |
/api/v1/download/{slug} |
GET | Download skill (redirect) | Optional* |
/api/v1/download |
GET | Download skill (query params) | Optional* |
/api/v1/skills/{slug} |
GET | Get skill details | Optional |
/api/v1/stars/{slug} |
POST | Star a skill | Required |
/api/v1/stars/{slug} |
DELETE | Unstar a skill | Required |
/api/v1/publish |
POST | Legacy compatibility endpoint; not used by ClawHub CLI 0.23.3 |
Required |
Notes:
- The compatibility layer may still expose the term "latest" externally, but it must strictly mean "latest published version"
- Internally, compat responses should map from the unified lifecycle projection's
publishedVersionrather than inferring an ad hoc "current version"
* Download endpoint authentication requirements:
- Global namespace (@global) PUBLIC skills: No authentication required
- All team namespace skills: Authentication required
- NAMESPACE_ONLY and PRIVATE skills: Authentication required
Skill Visibility Levels
SkillHub supports three visibility levels with the following download permission rules:
PUBLIC
- ✅ Anyone can search and view
- ✅ Global namespace (@global): No login required to download
- 🔒 Team namespaces: Authentication required to download
- 📍 Suitable for organization-wide, publicly shareable skills
NAMESPACE_ONLY
- ✅ Namespace members can search and view
- 🔒 Login required and must be namespace member to download
- 📍 Suitable for team-internal skills
PRIVATE
- ✅ Only owner can view
- 🔒 Login required and must be owner to download
- 📍 Suitable for skills under personal development
Important Notes:
- Global namespace (
@global) PUBLIC skills support anonymous downloads for wide distribution within the organization - All team namespace skills (including PUBLIC) require authentication to ensure team boundary security
Canonical Slug Mapping
SkillHub internally uses @{namespace}/{skill} format, but the compatibility layer automatically converts to ClawHub-style canonical slugs:
| SkillHub Internal | Canonical Slug | Description |
|---|---|---|
@global/my-skill |
my-skill |
Global namespace skill |
@my-team/my-skill |
my-team--my-skill |
Team namespace skill |
OpenClaw CLI uses canonical slug format, and SkillHub handles the conversion automatically.
The canonical format has no escaping rule, so SkillHub rejects new namespace or skill slugs containing consecutive --. If legacy or externally imported data bypassed that validation, rename the coordinate first; the first-party CLI does not bypass server-side slug validation.
Configuration Examples
ClawHub CLI Environment Variables
ClawHub CLI is configured via environment variables:
# Registry configuration
export CLAWHUB_REGISTRY=https://skillhub.your-company.com
# Authenticate once if needed
clawhub login --token sk_your_api_token_here
Environment Variables
# Registry configuration
export CLAWHUB_REGISTRY=https://skillhub.your-company.com
# Optionally log in before running authenticated commands
clawhub login --token sk_your_api_token_here
FAQ
Q: How do I switch back to public ClawHub?
# Unset custom registry
unset CLAWHUB_REGISTRY
# ClawHub CLI will use the default public registry
Q: Getting 403 Forbidden when downloading?
Possible causes:
- Skill belongs to a team namespace, authentication required
- Skill is NAMESPACE_ONLY or PRIVATE, authentication required
- You're not a member of the namespace
- API Token has expired
Solution:
# Log in again with a new token
clawhub login --token YOUR_NEW_TOKEN
# Test connection
curl https://skillhub.your-company.com/api/v1/whoami \
-H "Authorization: Bearer YOUR_NEW_TOKEN"
Tip: Global namespace (@global) PUBLIC skills can be downloaded anonymously without authentication.
Q: How do I see all skills I have access to?
# Search all skills (filtered by permissions)
npx clawhub search ""
Q: Why does publishing with the ClawHub CLI fail?
ClawHub CLI 0.23.3 uses an upload-ticket protocol outside SkillHub's compatibility scope. This failure does not mean that the API Token was revoked; use the first-party SkillHub CLI instead.
If the first-party CLI reports insufficient permission:
- The publisher must be a member of the target namespace;
SUPER_ADMINis exempt - A regular member may submit a publication; visibility and review rules decide whether it is published immediately or enters review
- Contact a namespace administrator to join the target namespace
Q: Which OpenClaw versions are supported?
SkillHub compatibility layer is designed to work with tools using ClawHub CLI. ClawHub CLI is distributed via npm:
# Install ClawHub CLI
npm install -g clawhub
# Or use npx directly
npx clawhub install my-skill
If you encounter compatibility issues, please file an issue.
API Response Formats
Search Response Example
{
"results": [
{
"slug": "my-team--email-sender",
"name": "Email Sender",
"description": "Send emails via SMTP",
"author": {
"handle": "user123",
"displayName": "John Doe"
},
"version": "1.2.0",
"downloadCount": 150,
"starCount": 25,
"createdAt": "2026-01-15T10:00:00Z",
"updatedAt": "2026-03-10T14:30:00Z"
}
],
"total": 1,
"page": 1,
"limit": 20
}
Version Resolution Response Example
{
"slug": "my-skill",
"version": "1.2.0",
"downloadUrl": "/api/v1/skills/global/my-skill/versions/1.2.0/download"
}
Publish Response Example
{
"id": "12345",
"version": {
"id": "67890"
}
}
Security Recommendations
- Use HTTPS: Always use HTTPS in production
- Token Management:
- Rotate API tokens regularly
- Never hardcode tokens in code
- Use environment variables or secret management tools
- Least Privilege: Assign minimum required permissions to tokens
- Audit Logs: Regularly review SkillHub audit logs
Troubleshooting
Enable Debug Logging
# View detailed request logs
DEBUG=clawhub:* npx clawhub search my-skill
# Or use verbose mode
npx clawhub --verbose install my-skill
Test Connection
# Test registry connection
curl https://skillhub.your-company.com/api/v1/whoami \
-H "Authorization: Bearer YOUR_TOKEN"
# Test search
curl "https://skillhub.your-company.com/api/v1/search?q=test"
Further Reading
Support
For questions or suggestions:
- 📖 Full Documentation: https://zread.ai/iflytek/skillhub
- 💬 GitHub Discussions: https://github.com/iflytek/skillhub/discussions
- 🐛 Submit Issues: https://github.com/iflytek/skillhub/issues