/install skill-publisher-universal
Skill Publisher
A generic publishing workflow for any Claude Code skill. Package, validate, and publish to ClawHub (OpenClaw), Hermes Agent, and anthropics/skills (Claude Code).
When to Use
- User wants to publish a skill they've built to one or more marketplaces
- User needs a bilingual (EN/ZH) README for their skill
- User wants to validate SKILL.md format before publishing
- User needs help with
clawhub publishor GitHub PR submission
Prerequisites
Before using this skill, check for the following in the environment (or ask the user):
Authentication
These tokens are pre-configured in ~/.env and shell environment. Read them automatically — do not ask the user:
| Token | Env Var | Source |
|---|---|---|
| GitHub PAT | GITHUB_TOKEN |
~/.env or env |
| GitHub user | GITHUB_USER |
~/.env or env |
| ClawHub token | CLAWHUB_TOKEN |
~/.env or env |
If a variable is missing, read ~/.env first, then ask the user.
Network Connectivity
Before any GitHub API call, test connectivity first:
curl -s -m 5 https://api.github.com/repos/NousResearch/hermes-agent > /dev/null 2>&1 && echo "direct OK" || echo "direct FAIL"
If direct access fails (common in restricted networks), load proxy from ~/.env:
source ~/.env
# ~/.env may contain (possibly commented-out):
# https_proxy=http://192.168.28.92:7897
# http_proxy=http://192.168.28.92:7897
# Export the proxy ONLY if direct access failed:
export https_proxy=http://192.168.28.92:7897
export http_proxy=http://192.168.28.92:7897
# Re-test with proxy:
https_proxy=$https_proxy curl -s -m 10 https://api.github.com/ > /dev/null 2>&1 && echo "proxy OK" || echo "proxy FAIL"
Fallback strategy (ordered by priority):
- Direct HTTPS access — works in unrestricted networks
- Proxy from
~/.env— readhttps_proxy/http_proxyvalues; if commented out, uncomment and export them for this session only - SSH on port 22 —
[email protected]:...works without proxy in most environments; use forgit clone/push, but NOT for GitHub REST API (curl/gh api)
When proxy is also down: skip GitHub API PR creation. Push branch via SSH and instruct user to create PR manually via browser.
Workflow
Step 1: Validate Source Skill
python3 ~/.skills/skill-publisher/scripts/validate_skill.py \x3Cskill-path>
Checks: SKILL.md exists, valid YAML frontmatter, required fields (name, description), name format (lowercase, hyphens), description \x3C= 1024 chars, no hardcoded secrets, file size \x3C= 100,000 chars.
Step 2: Generate Publish Package
python3 ~/.skills/skill-publisher/scripts/generate_package.py \
--source ~/.skills/\x3Cskill-name> \
--output /tmp/publish-\x3Cskill-name> \
--platforms clawhub hermes anthropics
Produces:
/tmp/publish-\x3Cskill-name>/
├── SKILL.md # Copied from source
├── README.md # Bilingual (EN/ZH) README with examples
├── examples/ # Copied from source skill
└── .clawhub.json # ClawHub manifest
Step 3: Platform-Specific Publishing
ClawHub (OpenClaw)
CRITICAL: Always pass --slug \x3Cskill-name> to prevent ClawHub from using the directory name as the slug. Without --slug, a publish from /tmp/publish-my-skill/ would create a duplicate entry named publish-my-skill instead of my-skill.
clawhub publish /tmp/publish-\x3Cskill-name> --version \x3Cversion> --slug \x3Cskill-name>
If CLI unavailable: install npm i -g clawhub or upload via clawhub.ai.
Hermes Agent (GitHub PR)
Target: NousResearch/hermes-agent → skills/creative/\x3Cskill-name>/SKILL.md
- Fork repo on GitHub
- Clone fork, copy SKILL.md to
skills/creative/\x3Cskill-name>/ - Commit, push, create PR
anthropics/skills (GitHub PR)
Target: anthropics/skills → skills/\x3Cskill-name>/SKILL.md
Same process as Hermes, different repo.
Step 4: Verify
# ClawHub
curl -s "https://clawhub.ai/api/v1/skills?slug=\x3Cskill-name>"
# Hermes / anthropics — check raw GitHub URLs
Helper Scripts
| Script | Purpose |
|---|---|
scripts/validate_skill.py |
Validate SKILL.md format |
scripts/generate_package.py |
Generate publish package with bilingual README |
scripts/gen_clawhub_manifest.py |
Generate .clawhub.json |
scripts/create_pr.py |
Create GitHub PR via API |
Common Pitfalls
- SKILL.md first bytes must be
---— no BOM, no blank line - ClawHub rejects hardcoded secrets — scan scripts/ before publishing
- Hermes requires metadata —
metadata.hermes.tagsandrelated_skills - Network issues — always test connectivity first. If direct HTTPS fails, load proxy from
~/.envand re-test. If proxy also fails, use SSH ([email protected]:...) for git operations and tell user to create PR manually via browser - ClawHub slug mismatch — always pass
--slug \x3Cskill-name>when publishing; otherwise the directory name becomes the slug, creating a wrong/duplicate entry (e.g.publish-my-skillinstead ofmy-skill)
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install skill-publisher-universal - After installation, invoke the skill by name or use
/skill-publisher-universal - Provide required inputs per the skill's parameter spec and get structured output
What is Publish Skill Publisher?
Generic publishing tool for Claude Code skills. Validates, packages, and publishes to ClawHub, Hermes Agent, and anthropics/skills with bilingual README supp... It is an AI Agent Skill for Claude Code / OpenClaw, with 34 downloads so far.
How do I install Publish Skill Publisher?
Run "/install skill-publisher-universal" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is Publish Skill Publisher free?
Yes, Publish Skill Publisher is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does Publish Skill Publisher support?
Publish Skill Publisher is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created Publish Skill Publisher?
It is built and maintained by Walle (@zhangyanbo2007); the current version is v1.1.0.