Skill Publisher
name: skill-publisher
by bryant24hao · published 2026-03-22
$ claw add gh:bryant24hao/bryant24hao-agent-skill-publisher---
name: skill-publisher
description: >
End-to-end workflow for publishing agent skills to GitHub, ClawdHub, and skills.sh.
Handles repo creation, topic tagging, ClawdHub publish, skills.sh index request,
and installation verification. Use when: "publish skill", "上架 skill", "发布技能",
"submit to skills.sh", "submit to clawhub", "skill 上架流程".
version: 1.0.0
metadata:
openclaw:
emoji: "rocket"
homepage: https://github.com/bryant24hao/skill-publisher
os:
- macos
- linux
---
# Skill Publisher
End-to-end publishing workflow for agent skills. Covers GitHub, ClawdHub, and skills.sh — from pre-flight checks to installation verification.
Language
Respond in the same language the user used to invoke this skill. Fall back to English if no language signal is found.
Prerequisites
command -v gh >/dev/null || echo "CRITICAL: gh (GitHub CLI) not found — install with: brew install gh"
command -v git >/dev/null || echo "CRITICAL: git not found"Optional (for ClawdHub publishing):
npx clawhub --help >/dev/null 2>&1 || echo "INFO: clawhub CLI not installed — needed for ClawdHub publishing"Workflow Overview
The full publishing pipeline has 6 phases:
1. Pre-flight Check → Validate skill structure and content
2. GitHub Publish → Create repo, push, add topics
3. ClawdHub Publish → Publish to ClawdHub registry
4. skills.sh Submit → Submit index request via GitHub issue
5. Install Verify → Test all installation methods
6. Post-publish → Summary with all links and install commandsRun phases sequentially. If the user only wants a specific phase (e.g., "just submit to skills.sh"), skip to that phase.
Phase 1: Pre-flight Check
Validate the skill directory before publishing. Check ALL of the following:
1.1 Required Files
SKILL_DIR="<path-to-skill>" # Ask user or infer from context
# Required
[ -f "$SKILL_DIR/SKILL.md" ] || echo "FAIL: SKILL.md missing"
[ -f "$SKILL_DIR/LICENSE" ] || echo "FAIL: LICENSE missing"
[ -f "$SKILL_DIR/README.md" ] || echo "FAIL: README.md missing"1.2 SKILL.md Frontmatter
Read `SKILL.md` and verify YAML frontmatter contains:
Optional but recommended:
1.3 README Quality
Check README.md for:
1. **Badges** — at least License badge. Platform badge recommended.
2. **Description** — clear one-liner explaining what the skill does.
3. **Install section** — should have placeholder install commands (will be updated after publishing).
4. **No broken links** — scan for URLs pointing to non-existent repos or placeholder orgs.
5. **No hardcoded user paths** — scan for `/Users/xxx/` or `/home/xxx/` patterns.
6. **Secret redaction** — no API keys, tokens, or passwords in plain text.
1.4 Bilingual README (Optional)
If the skill targets both Chinese and English users, check for:
1.5 Report
Present findings:
# Pre-flight Report
## Required Files
- [x] SKILL.md
- [x] LICENSE (MIT)
- [x] README.md
- [ ] README.zh-CN.md (optional, not found)
## SKILL.md Frontmatter
- name: my-skill
- version: 1.0.0
- description: OK (127 chars)
## Issues Found
- WARNING: README contains placeholder org "nicepkg" — update before publishing
- INFO: No .gitignore found (optional but recommended)
## Ready to publish? YES / NO (with blockers listed)Phase 2: GitHub Publish
2.1 Initialize Git Repo
cd "$SKILL_DIR"
git init
git add -A
git status # Review staged files**Before committing**, scan staged files for:
git commit -m "Initial release: <skill-name> v<version>"2.2 Determine Repo Name
Ask the user for their preferred GitHub repo name. Default: same as the skill's `name` field in SKILL.md frontmatter.
**Important**: Check if the name is already taken on ClawdHub before creating the GitHub repo, so they can be consistent:
npx clawhub inspect <proposed-name> 2>&1If taken on ClawdHub, suggest alternatives and let the user choose a name that works on both platforms.
2.3 Create GitHub Repo
gh repo create <owner>/<repo-name> \
--public \
--description "<skill description from SKILL.md>" \
--source . \
--push2.4 Add GitHub Topics
Add discoverable topics for skills.sh indexing and general discoverability:
gh repo edit <owner>/<repo-name> --add-topic agent-skill,claude-code-skillAdditional topic suggestions based on skill content:
2.5 Update References
After repo creation, update all files that reference the repo:
# Verify no stale references remain
grep -r "placeholder-org\|nicepkg\|example-user" "$SKILL_DIR" --include="*.md"Commit and push the updates.
Phase 3: ClawdHub Publish
3.1 Login
npx clawhub whoami 2>&1 || npx clawhub login3.2 Check Slug Availability
npx clawhub inspect <slug> 2>&1If slug is taken, suggest alternatives based on the skill name.
3.3 Publish
npx clawhub publish "$SKILL_DIR" \
--slug <slug> \
--name "<display-name>" \
--version <version> \
--changelog "<changelog text>"**Known issue (as of clawhub CLI v0.7.0)**: The server requires `acceptLicenseTerms: true` in the publish payload, but the CLI doesn't include it. If you get:
Error: Publish payload: acceptLicenseTerms: invalid valueFix by patching the local CLI:
# Find the publish.js file
PUBLISH_JS="$(find ~/.npm/_npx -name 'publish.js' -path '*/clawhub/dist/cli/commands/*' 2>/dev/null | head -1)"
# Add acceptLicenseTerms to the payload
# In the JSON.stringify block, add: acceptLicenseTerms: true,Then retry the publish command.
3.4 Verify
npx clawhub inspect <slug>Phase 4: skills.sh Index Request
skills.sh does **NOT** auto-index skills. You must submit a request via GitHub issue.
4.1 Submit Index Request
gh issue create --repo vercel-labs/skills \
--title "Request to index skill: <owner>/<repo>" \
--body "$(cat <<'ISSUE_EOF'
## Skill Information
- **Repository:** https://github.com/<owner>/<repo>
- **Skill name:** <skill-name>
- **Install:** \`npx skills add <owner>/<repo>\`
- **License:** MIT
## Description
<2-3 sentence description of what the skill does and its key features>
ISSUE_EOF
)"4.2 Note to User
Explain that:
Phase 5: Installation Verification
Test all three installation methods sequentially. Back up any existing installation first.
5.1 skills.sh
npx skills add <owner>/<repo> -g -y
# Verify: check installation path and file completeness
ls ~/.agents/skills/<skill-name>/ || ls ~/.claude/skills/<skill-name>/
# Cleanup
npx skills remove <skill-name> -g -y5.2 ClawdHub
npx clawhub install <slug>
# Verify
ls ~/clawd/skills/<slug>/
# Cleanup
npx clawhub uninstall <slug> --yes5.3 Manual Git Clone
git clone https://github.com/<owner>/<repo>.git /tmp/test-skill-install
# Verify
ls /tmp/test-skill-install/
# Cleanup
rm -rf /tmp/test-skill-install5.4 Report
# Installation Verification
| Method | Command | Result |
|--------|---------|--------|
| skills.sh | npx skills add <owner>/<repo> -g -y | OK / FAIL |
| ClawdHub | clawhub install <slug> | OK / FAIL |
| Manual | git clone ... | OK / FAIL |Phase 6: Post-publish Summary
Present a final summary with all links and commands:
# Published: <skill-name> v<version>
## Links
- GitHub: https://github.com/<owner>/<repo>
- ClawdHub: https://clawhub.ai/<owner>/<slug> (if published)
- skills.sh: pending indexing (issue #NNN)
## Install Commands
# skills.sh (recommended)
npx skills add <owner>/<repo> -g -y
# ClawdHub
clawhub install <slug>
# Manual
git clone https://github.com/<owner>/<repo>.git ~/.claude/skills/<skill-name>
## Next Steps
- [ ] Wait for skills.sh indexing (issue #NNN)
- [ ] Share the GitHub link
- [ ] Consider creating a GitHub Release with tag v<version>Important Notes
More tools from the same signal band
Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).
Sign plugins, rotate agent credentials without losing identity, and publicly attest to plugin behavior with verifiable claims and authenticated transfers.
The philosophical layer for AI agents. Maps behavior to Spinoza's 48 affects, calculates persistence scores, and generates geometric self-reports. Give your...