Skill: bryant24hao/agent-skill-publisher (version 1.0.0)

--- 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 ```bash 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): ```bash 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 ```bash 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: - `name` — required, should be kebab-case - `description` — required, should be descriptive (used by search engines and skill discovery) - `version` — required, valid semver Optional but recommended: - `metadata.openclaw.emoji` - `metadata.openclaw.homepage` - `metadata.openclaw.os` - `metadata.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` exists - Both READMEs have language switcher links at the top - Both have consistent content (same sections, same install commands) ### 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 ```bash cd "$SKILL_DIR" git init git add -A git status # Review staged files ``` **Before committing**, scan staged files for: - Secrets (API keys, tokens, passwords) - User-specific absolute paths (`/Users/xxx/`) - Large binary files (> 1MB) ```bash 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: ```bash npx clawhub inspect <proposed-name> 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 ```bash gh repo create <owner>/<repo-name> \ --public \ --description "<skill description from SKILL.md>" \ --source . \ --push ``` ### 2.4 Add GitHub Topics Add discoverable topics for skills.sh indexing and general discoverability: ```bash gh repo edit <owner>/<repo-name> --add-topic agent-skill,claude-code-skill ``` Additional topic suggestions based on skill content: - Category topics: `productivity`, `devtools`, `security`, `health-check`, etc. - Platform topics: `macos`, `linux`, `openclaw` - Technology topics: `eventkit`, `calendar`, etc. ### 2.5 Update References After repo creation, update all files that reference the repo: - `README.md` — badge links, install commands, git clone URL - `README.zh-CN.md` — same - `SKILL.md` — `metadata.openclaw.homepage` - `docs/` — any user story or doc files with install commands - `LICENSE` — copyright holder ```bash # 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 ```bash npx clawhub whoami 2>&1 || npx clawhub login ``` ### 3.2 Check Slug Availability ```bash npx clawhub inspect <slug> 2>&1 ``` If slug is taken, suggest alternatives based on the skill name. ### 3.3 Publish ```bash 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 value ``` Fix by patching the local CLI: ```bash # 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 ```bash 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 ```bash 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: - The index request is reviewed by the vercel-labs/skills maintainers - It may take days to be processed - The `npx skills add <owner>/<repo>` install command works immediately (it clones from GitHub directly) - Only the `npx skills search` / `npx skills find` discovery requires indexing ## Phase 5: Installation Verification Test all three installation methods sequentially. Back up any existing installation first. ### 5.1 skills.sh ```bash 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 -y ``` ### 5.2 ClawdHub ```bash npx clawhub install <slug> # Verify ls ~/clawd/skills/<slug>/ # Cleanup npx clawhub uninstall <slug> --yes ``` ### 5.3 Manual Git Clone ```bash git clone https://github.com/<owner>/<repo>.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 <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 - **Slug consistency**: Try to use the same name on GitHub and ClawdHub. If ClawdHub slug is taken, rename the GitHub repo to match the available ClawdHub slug for consistency. - **README install commands**: Always update install commands in all README files after determining the final repo name and ClawdHub slug. - **Bilingual docs**: If the skill has docs (e.g., user stories), create bilingual versions with language switcher links. English docs should use internationally recognizable examples (Telegram, not Feishu). - **Pre-commit privacy check**: Before every git push, scan for real IP addresses, API keys, WiFi credentials, user-specific paths, and other PII. - **ClawdHub CLI bug**: The `acceptLicenseTerms` patch is needed as of CLI v0.7.0. Check if newer versions fix this before patching.

path: README.md
content: # skill-publisher

[English](README.md) | [中文](README.zh-CN.md)

[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
[![Platform: macOS | Linux | Windows (WSL)](https://img.shields.io/badge/Platform-macOS%20%7C%20Linux%20%7C%20Windows%20(WSL)-lightgrey.svg)](https://github.com/bryant24hao/skill-publisher)

> One command to publish your agent skill to GitHub, ClawdHub, and skills.sh.

A Claude Code skill that automates the entire skill publishing pipeline — from pre-flight validation to installation verification across all three platforms.

## Why

Publishing a skill should be simple, but the reality is:

- **GitHub** needs a repo, topics for discoverability, and correct badge links
- **ClawdHub** has a CLI with a known bug (`acceptLicenseTerms`), slug conflicts, and no auto-retry
- **skills.sh** doesn't auto-index — you must submit a GitHub issue to `vercel-labs/skills`
- Install commands in README must match the final repo name on all platforms
- Bilingual READMEs need consistent content and working language switchers

Miss one step and your skill is either unfindable or uninstallable.

**skill-publisher handles the full pipeline in one session.**

## What It Does

```
1. Pre-flight Check    → Validate SKILL.md, README, LICENSE, secrets scan
2. GitHub Publish      → Create repo, push, add discovery topics
3. ClawdHub Publish    → Login, check slug, publish (with bug workaround)
4. skills.sh Submit    → Auto-create index request issue
5. Install Verify      → Test all 3 install methods end-to-end
6. Post-publish        → Summary with all links and commands
```

## Quick Install

```bash
npx skills add bryant24hao/skill-publisher -g -y
```

**Manual**:

```bash
git clone https://github.com/bryant24hao/skill-publisher.git ~/.claude/skills/skill-publisher
```

## Usage

```
/skill-publisher
publish my skill
上架技能
发布 skill 到 clawhub 和 skills.sh
```

## Prerequisites

- **[gh](https://cli.github.com/)** — GitHub CLI (for repo creation and issue submission)
- **git** — version control

Optional:
- **clawhub CLI** — for ClawdHub publishing (`npx clawhub` works without global install)

## Known Issues

| Issue | Workaround |
|-------|------------|
| ClawdHub CLI v0.7.0 missing `acceptLicenseTerms` | Auto-patched during publish |
| skills.sh no auto-indexing | Auto-submits issue to vercel-labs/skills |
| ClawdHub slug conflicts | Pre-checks availability before GitHub repo creation |

## License

[MIT](LICENSE)


path: README.zh-CN.md
content: # skill-publisher

[English](README.md) | [中文](README.zh-CN.md)

[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
[![Platform: macOS | Linux | Windows (WSL)](https://img.shields.io/badge/Platform-macOS%20%7C%20Linux%20%7C%20Windows%20(WSL)-lightgrey.svg)](https://github.com/bryant24hao/skill-publisher)

> 一条命令，把你的 agent 技能发布到 GitHub、ClawdHub 和 skills.sh。

一个 Claude Code 技能，自动化整个技能发布流程——从发布前检查到三个平台的安装验证。

## 为什么需要它

发布一个技能本应很简单，但现实是：

- **GitHub** 需要建仓库、加 topic 标签确保可被发现、配置正确的 badge 链接
- **ClawdHub** 的 CLI 有已知 bug（`acceptLicenseTerms`），slug 冲突需要手动处理
- **skills.sh** 不会自动索引——你必须到 `vercel-labs/skills` 仓库提 issue 请求收录
- README 里的安装命令必须和最终的仓库名在所有平台上保持一致
- 双语 README 需要内容同步和正确的语言切换链接

漏掉任何一步，你的技能要么搜不到，要么装不上。

**skill-publisher 在一个会话里搞定全部流程。**

## 它做什么

```
1. 发布前检查    → 验证 SKILL.md、README、LICENSE、密钥扫描
2. GitHub 发布   → 创建仓库、推送、添加发现标签
3. ClawdHub 发布 → 登录、检查 slug、发布（含 bug 绕过）
4. skills.sh 提交 → 自动创建索引请求 issue
5. 安装验证      → 端到端测试 3 种安装方式
6. 发布总结      → 汇总所有链接和安装命令
```

## 快速安装

```bash
npx skills add bryant24hao/skill-publisher -g -y
```

**手动安装**：

```bash
git clone https://github.com/bryant24hao/skill-publisher.git ~/.claude/skills/skill-publisher
```

## 使用方法

```
/skill-publisher
publish my skill
上架技能
发布 skill 到 clawhub 和 skills.sh
```

## 前置要求

- **[gh](https://cli.github.com/)** — GitHub CLI（用于创建仓库和提交 issue）
- **git** — 版本控制

可选：
- **clawhub CLI** — 用于 ClawdHub 发布（`npx clawhub` 无需全局安装）

## 已知问题

| 问题 | 处理方式 |
|------|----------|
| ClawdHub CLI v0.7.0 缺少 `acceptLicenseTerms` | 发布时自动修补 |
| skills.sh 不自动索引 | 自动提交 issue 到 vercel-labs/skills |
| ClawdHub slug 冲突 | 创建 GitHub 仓库前预先检查可用性 |

## 许可证

[MIT](LICENSE)


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)