Chapter 36

Publishing to ClawHub and the Skill Marketplace

Chapter 36: Publishing to ClawHub / Plugin Marketplace

ClawHub is the official Skill marketplace for the Hermes Agent ecosystemโ€”analogous to PyPI for Python or npm for Node.js, but purpose-built for AI Agent Skills. A high-quality Skill that only lives on your local machine is like a brilliant invention locked in a drawer. This chapter walks through the complete publishing journey from account creation to marketplace listing, with in-depth coverage of SEO optimization to help users discover your Skill.


36.1 ClawHub Ecosystem Overview

ClawHub's Role

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                  ClawHub Ecosystem                   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚   For Skill Developers โ”‚    For Hermes Users          โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ โ€ข Publish and distributeโ”‚ โ€ข Search and install        โ”‚
โ”‚ โ€ข Version management   โ”‚ โ€ข Browse docs and examples  โ”‚
โ”‚ โ€ข Collect user feedbackโ”‚ โ€ข Rate and review           โ”‚
โ”‚ โ€ข Analyze download dataโ”‚ โ€ข Report bugs               โ”‚
โ”‚ โ€ข Monetize paid Skills โ”‚ โ€ข Request features          โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ClawHub and the OpenClaw Ecosystem

OpenClaw Ecosystem
โ”œโ”€โ”€ ClawHub (official marketplace) โ€” publish, review, distribute
โ”œโ”€โ”€ OpenClaw SDK (toolchain)       โ€” develop, test, package
โ”œโ”€โ”€ ClawHub CLI (command line)     โ€” automated publishing
โ””โ”€โ”€ ClawHub API (REST)             โ€” programmatic management

36.2 Pre-publish: Package Structure

Standard Skill Package Layout

my-awesome-skill/
โ”œโ”€โ”€ skill.yaml              # Required: Skill manifest
โ”œโ”€โ”€ README.md               # Required: Documentation (Markdown)
โ”œโ”€โ”€ LICENSE                 # Required: License file
โ”œโ”€โ”€ CHANGELOG.md            # Recommended: Change history
โ”‚
โ”œโ”€โ”€ src/
โ”‚   โ””โ”€โ”€ my_awesome_skill/
โ”‚       โ”œโ”€โ”€ __init__.py
โ”‚       โ”œโ”€โ”€ skill.py        # Main Skill implementation
โ”‚       โ”œโ”€โ”€ tools.py        # Tool implementations
โ”‚       โ””โ”€โ”€ schemas.py      # Input/output schemas
โ”‚
โ”œโ”€โ”€ tests/
โ”‚   โ”œโ”€โ”€ test_skill.py
โ”‚   โ””โ”€โ”€ fixtures/
โ”‚
โ”œโ”€โ”€ examples/
โ”‚   โ”œโ”€โ”€ basic_usage.py
โ”‚   โ””โ”€โ”€ advanced_usage.py
โ”‚
โ””โ”€โ”€ .clawhubignore

Complete skill.yaml Manifest

name: smart-summarizer-skill
version: "1.2.0"
description: |
  Generates high-quality bilingual (English/Chinese) summaries using a
  multi-model fusion strategy. Supports documents up to 100k words in
  PDF, Word, Markdown, and HTML formats. Automatically detects document
  type (academic / news / technical / business) and applies type-specific
  summarization strategies.

author:
  name: "Zhang Wei"
  email: "[email protected]"

license: "Apache-2.0"
repository: "https://github.com/zhangwei/smart-summarizer-skill"

categories:
  - "text-processing"
  - "summarization"
  - "nlp"

keywords:
  - "summarize"
  - "abstract"
  - "text summary"
  - "document processing"
  - "NLP"

hermes_runtime: ">=1.5.0"
python: ">=3.10"

dependencies:
  core-nlp-skill: "^2.0.0"
  pdf-reader-skill: "^1.3.0"

mcp_tools:
  - name: "summarize_text"
    description: "Generate a summary of the provided text"
  - name: "summarize_document"
    description: "Generate a summary of a document at the given path"
  - name: "extract_keywords"
    description: "Extract a keyword list from text"

36.3 Publishing Workflow: Account to Listing

Step 1: Create Account and Initialize

# Install ClawHub CLI
pip install clawhub-cli

# Login (browser OAuth)
clawhub login

# Verify login
clawhub whoami
# Output: Logged in as zhangwei ([email protected])

# Create API token for CI/CD
clawhub token create --name "github-actions" --scope "publish"
# Output: Token: chub_tok_xxxxxxxxxxxx

Step 2: Validate the Package

cd smart-summarizer-skill/
clawhub validate
ClawHub Skill Validation Report
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”

โœ“ skill.yaml format is valid
โœ“ All required fields are present
โœ“ Version follows SemVer
โœ“ README.md exists and is not empty (2847 words)
โœ“ LICENSE file present (Apache-2.0)
โœ“ All tests pass (23/23)
โœ“ Dependencies resolve successfully
โœ“ Package size within limit (4.2 MB / 50 MB)
โœ“ No known security vulnerabilities

โš  Warnings:
  - CHANGELOG.md not found (recommended)
  - Test coverage 72% (recommended >80%)

โœ— Errors (must fix before publishing):
  None

Validation passed. Ready to publish.

Step 3: Build the Package

clawhub build

clawhub build --list
# smart-summarizer-skill-1.2.0.skill
#   skill.yaml    2.1 KB
#   README.md     8.3 KB
#   src/         42.1 KB
# Total: 52.5 KB

Step 4: Publish

# Publish to ClawHub
clawhub publish

# Publish a pre-release (hidden from default search)
clawhub publish --tag beta

# With release notes
clawhub publish --release-notes "Fix memory overflow on large PDFs"

Step 5: Post-publish Verification

clawhub info smart-summarizer-skill
# Version 1.2.0 published โ€” under review...

clawhub status [email protected]
# Status: Under review (estimated 24-48 hours)

hermes skill install [email protected]

36.4 Review Standards and Common Rejection Reasons

ClawHub runs automated review (immediate) and human review (1โ€“3 business days) on every submission.

Review Dimensions

Dimension Checks
Technical compliance Skill installs and runs correctly; all declared tools work; no malicious code; no high-severity CVEs
Content quality README clearly explains function and usage; at least one runnable example; features match description
Legal compliance Clear open-source or commercial license; no IP infringement; data collection disclosed
Ecosystem norms Name not confusing with existing Skills; no keyword stuffing; no bundled unrelated software

Common Rejection Reasons

Reason Frequency Fix
README too brief (<500 words) 35% Add feature overview, quick-start, API reference
No code examples 28% Add examples to README and examples/
Dependency has high-severity CVE 15% Run clawhub audit --fix
Skill fails to run after install 12% Test with hermes skill test locally
Description mismatches functionality 6% Be accurate; remove exaggerations
Name too similar to existing Skill 4% Choose a more distinctive name

36.5 SEO Optimization: Getting Discovered

ClawHub's search algorithm weights the following signals:

Search Ranking Weights (approximate)
โ”œโ”€โ”€ Text relevance (35%)
โ”‚   โ”œโ”€โ”€ Skill name match
โ”‚   โ”œโ”€โ”€ description keywords
โ”‚   โ””โ”€โ”€ keywords field
โ”œโ”€โ”€ Quality signals (25%)
โ”‚   โ”œโ”€โ”€ Download count
โ”‚   โ”œโ”€โ”€ User rating (1โ€“5 stars)
โ”‚   โ””โ”€โ”€ Active maintenance (last updated)
โ”œโ”€โ”€ Documentation quality (20%)
โ”‚   โ”œโ”€โ”€ README length and structure
โ”‚   โ”œโ”€โ”€ Code examples present
โ”‚   โ””โ”€โ”€ Screenshots present
โ””โ”€โ”€ Community signals (20%)
    โ”œโ”€โ”€ GitHub star count
    โ”œโ”€โ”€ Issue response time
    โ””โ”€โ”€ Community discussion activity

High-Quality README Template

# Smart Summarizer Skill

> Multi-model fusion summarization for PDFs, Word docs, and web pages

Generate high-quality bilingual summaries in seconds. Automatically
detects document type and applies specialized strategiesโ€”delivering
40% better ROUGE scores than single-model approaches.

## Quick Start

\```python
import asyncio
from hermes import Agent

async def main():
    agent = Agent()
    result = await agent.run_skill(
        "smart-summarizer-skill",
        action="summarize_text",
        text="Your long document text here...",
        max_length=200,
        language="en"
    )
    print(result.summary)

asyncio.run(main())
\```

## Features

- **Multi-format**: PDF, Word, Markdown, HTML, plain text
- **Bilingual**: English and Chinese output simultaneously
- **Length control**: 50โ€“500 words, adjustable
- **Type detection**: Academic / news / technical / business

## Installation

\```bash
hermes skill install smart-summarizer-skill
\```

## API Reference

### `summarize_text`

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| text | string | Yes | Text to summarize |
| max_length | integer | No | Max summary length (default: 200) |
| language | string | No | Output language: en / zh / auto |

**Returns:**
\```json
{
  "summary": "Summary text",
  "keywords": ["keyword1", "keyword2"],
  "document_type": "academic",
  "confidence": 0.92
}
\```

## Benchmarks

| Document Size | Processing Time | ROUGE-L Score |
|--------------|----------------|---------------|
| 1,000 words  | ~2s            | 0.68          |
| 10,000 words | ~8s            | 0.72          |
| 50,000 words | ~25s           | 0.71          |

## License

Apache 2.0 โ€” see [LICENSE](LICENSE)

Keyword Strategy

keywords:
  # Functional (most-searched)
  - "text summarization"
  - "document summary"
  - "abstract generation"
  - "tldr"
  
  # Technical
  - "NLP"
  - "natural language processing"
  - "extractive summarization"
  - "abstractive summarization"
  
  # Chinese keywords
  - "ๆ–‡ๆœฌๆ‘˜่ฆ"
  - "่‡ชๅŠจๆ‘˜่ฆ"
  - "ๆ–‡ๆกฃๆ€ป็ป“"
  
  # Scenario-based
  - "research paper"
  - "PDF processing"
  - "content creation"
  - "knowledge management"

36.6 Version Update Workflow

# 1. Update version in skill.yaml
# Bug fix:    1.2.0 โ†’ 1.2.1
# New feature: 1.2.0 โ†’ 1.3.0
# Breaking:   1.2.0 โ†’ 2.0.0

# 2. Update CHANGELOG.md
cat >> CHANGELOG.md << 'EOF'
## [1.2.1] - 2024-11-20

### Fixed
- Memory overflow on PDFs >100MB (#42)
- Incorrect summary for RTL text (#38)

### Improved
- Large document processing 20% faster
EOF

# 3. Validate and publish
clawhub validate && clawhub publish --release-notes "Fix memory overflow and RTL text issues"

Automated Publishing with GitHub Actions

# .github/workflows/publish.yml
name: Publish to ClawHub

on:
  push:
    tags: ['v*']

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - uses: actions/setup-python@v5
        with:
          python-version: "3.11"
      
      - run: pip install clawhub-cli
      
      - name: Run tests
        run: |
          pip install -e ".[dev]"
          pytest tests/ --tb=short
      
      - name: Validate & Publish
        env:
          CLAWHUB_TOKEN: ${{ secrets.CLAWHUB_TOKEN }}
        run: |
          clawhub login --token $CLAWHUB_TOKEN
          clawhub validate
          clawhub build
          clawhub publish --release-notes "$(git log -1 --pretty=%B)"

36.7 Handling User Feedback

# scripts/process_feedback.py
from clawhub_sdk import ClawHubClient
import asyncio

async def process_feedback():
    client = ClawHubClient(token="your_token")
    
    feedback_list = await client.get_feedback(
        skill="smart-summarizer-skill",
        status="open",
        since_days=7
    )
    
    for feedback in feedback_list:
        if feedback.type == "bug" and feedback.severity == "critical":
            await create_github_issue(feedback)
            await client.reply_feedback(
                feedback.id,
                "Thank you for the report! This is a critical bug. "
                "A fix will be released within 24 hours."
            )
        elif feedback.type == "feature_request":
            await add_to_roadmap(feedback)

RESPONSE_TEMPLATES = {
    "bug_ack": (
        "Thank you for reporting this! I've reproduced the issue. "
        "A fix is planned for {next_version} (ETA: {eta}). "
        "As a workaround: {workaround}"
    ),
    "cannot_reproduce": (
        "Thank you for the report. I'm unable to reproduce this. "
        "Could you share: (1) Hermes version, (2) Python version, "
        "(3) Full error traceback, (4) Minimal reproducing input?"
    ),
}

Chapter Summary

Publishing to ClawHub is not merely "uploading code"โ€”it's a complete productization process:

  1. Package structure: A standardized layout, manifest, and documentation streamline review
  2. Five-step workflow: Account โ†’ Validate โ†’ Build โ†’ Submit โ†’ Post-publish verification
  3. Review standards: Technical compliance, content quality, legal compliance, ecosystem norms
  4. SEO optimization: Keyword strategy + high-quality README + community activity drive search ranking
  5. Automated publishing: GitHub Actions enables zero-manual-effort releases on tag push
  6. Feedback loop: Systematic user feedback handling continuously improves Skill quality

Review Questions

  1. If your Skill requires third-party API keys, how should users configure them at install time? How do you communicate this clearly on the ClawHub page?
  2. After publishing, you discover a critical security vulnerability and need to immediately delist the Skill. Should ClawHub offer an "emergency takedown" feature? How should already-installed versions be handled?
  3. How would you design a "Skill recommendation algorithm" that gives newly published high-quality Skills meaningful exposure rather than always being dominated by established ones?
  4. What monetization models exist for paid Skills (one-time purchase / subscription / pay-per-use), and how should Hermes support these at the technical level?
Rate this chapter
4.6  / 5  (3 ratings)

๐Ÿ’ฌ Comments