skill-publisher
by @bryant24hao
End-to-end workflow for publishing agent skills to GitHub, ClawdHub, and skills.sh. Handles repo creation, topic tagging, ClawdHub publish, skills.sh index r...
clawhub install agent-skill-publisherπ About This Skill
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 commands
Run 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="" # Ask user or infer from contextRequired
[ -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:
name β required, should be kebab-casedescription β required, should be descriptive (used by search engines and skill discovery)version β required, valid semverOptional but recommended:
metadata.openclaw.emojimetadata.openclaw.homepagemetadata.openclaw.osmetadata.openclaw.requires.bins (list of required CLI tools)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:
README.zh-CN.md exists1.5 Report
Present findings:
# Pre-flight ReportRequired 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:
/Users/xxx/)git commit -m "Initial release: v"
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 2>&1
If 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 / \
--public \
--description "" \
--source . \
--push
2.4 Add GitHub Topics
Add discoverable topics for skills.sh indexing and general discoverability:
gh repo edit / --add-topic agent-skill,claude-code-skill
Additional topic suggestions based on skill content:
productivity, devtools, security, health-check, etc.macos, linux, openclaweventkit, calendar, etc.2.5 Update References
After repo creation, update all files that reference the repo:
README.md β badge links, install commands, git clone URLREADME.zh-CN.md β sameSKILL.md β metadata.openclaw.homepagedocs/ β any user story or doc files with install commandsLICENSE β copyright holder# 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 login
3.2 Check Slug Availability
npx clawhub inspect 2>&1
If slug is taken, suggest alternatives based on the skill name.
3.3 Publish
npx clawhub publish "$SKILL_DIR" \
--slug \
--name "" \
--version \
--changelog ""
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 value
Fix 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
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: /" \
--body "$(cat <<'ISSUE_EOF'
Skill Information
Repository: https://github.com//
Skill name:
Install: \npx skills add /\
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:
npx skills add / install command works immediately (it clones from GitHub directly)npx skills search / npx skills find discovery requires indexingPhase 5: Installation Verification
Test all three installation methods sequentially. Back up any existing installation first.
5.1 skills.sh
npx skills add / -g -y
Verify: check installation path and file completeness
ls ~/.agents/skills// || ls ~/.claude/skills//
Cleanup
npx skills remove -g -y
5.2 ClawdHub
npx clawhub install
Verify
ls ~/clawd/skills//
Cleanup
npx clawhub uninstall --yes
5.3 Manual Git Clone
git clone https://github.com//.git /tmp/test-skill-install
Verify
ls /tmp/test-skill-install/
Cleanup
rm -rf /tmp/test-skill-install
5.4 Report
# Installation Verification| Method | Command | Result |
|--------|---------|--------|
| skills.sh | npx skills add / -g -y | OK / FAIL |
| ClawdHub | clawhub install | OK / FAIL |
| Manual | git clone ... | OK / FAIL |
Phase 6: Post-publish Summary
Present a final summary with all links and commands:
# Published: vLinks
GitHub: https://github.com//
ClawdHub: https://clawhub.ai// (if published)
skills.sh: pending indexing (issue #NNN) Install Commands
skills.sh (recommended)
npx skills add / -g -yClawdHub
clawhub install Manual
git clone https://github.com//.git ~/.claude/skills/Next Steps
[ ] Wait for skills.sh indexing (issue #NNN)
[ ] Share the GitHub link
[ ] Consider creating a GitHub Release with tag v
Important Notes
acceptLicenseTerms patch is needed as of CLI v0.7.0. Check if newer versions fix this before patching.βοΈ Configuration
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"