clawhub-skill-guide

Create, structure, and publish OpenClaw skills to ClawHub that pass the security scanner with clean ratings. Covers frontmatter schema, env var declarations, script safety, config change patterns, and the full publish workflow. Use when: creating a new skill, publishing to ClawHub, fixing security scan warnings, structuring skill files, writing SKILL.md frontmatter, declaring environment variables, understanding scanner categories, preparing scripts for publication.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "clawhub-skill-guide" with this command: npx skills add tdavis009/clawhub-skill-guide

ClawHub Skill Guide

Publish OpenClaw skills to ClawHub with clean security scanner ratings. This guide supplements the built-in skill-creator skill with ClawHub-specific publishing knowledge — especially frontmatter schema and scanner compliance.

Note: The built-in skill-creator says "Do not include any other fields in YAML frontmatter." That guidance is outdated. ClawHub supports and the scanner requires additional fields like env, metadata, requires, etc. This guide documents the complete frontmatter schema.


Quick Reference

Skill Anatomy

my-skill/
├── SKILL.md              # Core instructions (required, under 500 lines)
├── scripts/              # Executable code (optional)
├── references/           # Docs loaded on demand (optional)
└── assets/               # Templates, images, non-context files (optional)

Frontmatter Fields

FieldRequiredPurpose
nameLowercase, hyphens, under 64 chars
descriptionTrigger text with keywords
envWhen credentials neededArray of env var declarations
metadataAlternative env formatOpenClaw-specific metadata
requiresWhen dependencies existHuman-readable requirement list
homepageOptionalSource/docs URL
categoryOptionalSkill category
emojiOptionalDisplay emoji
versionOptionalSemver (can also set via CLI)

→ Full schema: references/frontmatter-schema.md

Scanner Categories

#CategoryKey Requirement
1PURPOSE & CAPABILITYDescription matches functionality; credentials declared
2INSTRUCTION SCOPEInstructions on-topic; no auto-config language
3INSTALL MECHANISMNo external downloads; scripts write within workspace
4CREDENTIALSAll env vars declared in frontmatter; sensitive marked
5PERSISTENCE & PRIVILEGENo always:true; config as templates for manual review

→ Deep dive: references/scanner-compliance.md


Creating a Skill

Step 1: Plan Structure

Decide what goes where:

Content TypeLocation
Core workflow, key instructionsSKILL.md body
Detailed reference materialreferences/
Executable automationscripts/
Templates, images, boilerplateassets/

Keep SKILL.md under 500 lines. Move detailed docs to references.

Step 2: Write Frontmatter

This is where most scanner issues originate. Get frontmatter right first.

Important: The local packager (package_skill.py) only allows these top-level frontmatter keys: name, description, license, metadata, allowed-tools. The env: key works on ClawHub's registry but fails local validation. Use the metadata.openclaw format for compatibility with both.

Minimal frontmatter (no credentials needed):

---
name: my-skill
description: >
  What this skill does. Include trigger keywords so the agent
  knows when to activate it. Use when: scenario1, scenario2.
---

With credentials (packager-compatible format):

---
name: my-api-skill
description: >
  Integrates with Example API for data retrieval and analysis.
  Use when: querying example data, generating reports from Example API.
metadata:
  openclaw:
    requires:
      env:
        - EXAMPLE_API_KEY
      bins:
        - curl
    primaryEnv: EXAMPLE_API_KEY
    env:
      - name: EXAMPLE_API_KEY
        description: "API key for Example service"
        required: true
      - name: EXAMPLE_BASE_URL
        description: "Base URL for Example API (default: https://api.example.com)"
        required: false
---

Note: If you skip the local packager and publish directly with npx clawhub publish, the direct env: top-level array also works (some published skills use this). But the metadata.openclaw format works everywhere.

→ All supported fields and formats: references/frontmatter-schema.md

Step 3: Write Body

Structure the body for progressive disclosure:

  1. Quick Start — Minimal steps to use the skill
  2. Prerequisites — Table of requirements (if any)
  3. Security Notes — Script safety, credential handling (if applicable)
  4. How It Works — Core instructions
  5. File Reference — List bundled resources with descriptions

Keep instructions imperative. Challenge every paragraph: "Does the agent really need this?"

Step 4: Add Scripts (If Needed)

Follow safe patterns to pass the scanner:

  • Only write within the skill workspace
  • No network calls unless explicitly declared and justified
  • No obfuscated code
  • Document line count and purpose in SKILL.md
  • Include "inspect before running" warning

→ Full patterns: references/script-safety.md

Step 5: Validate and Package

# Validate structure
python3 ~/.npm-global/lib/node_modules/openclaw/skills/skill-creator/scripts/package_skill.py ./my-skill

# Check manually:
# - Frontmatter has name + description
# - env declarations match actual credential usage
# - No personal data or test artifacts
# - SKILL.md under 500 lines

Step 6: Publish and Check Scanner

# Verify auth
npx clawhub whoami

# Publish
npx clawhub publish ./my-skill \
  --slug my-skill \
  --name "My Skill" \
  --version 1.0.0 \
  --changelog "Initial release" \
  --tags latest

# Check scanner results
npx clawhub inspect my-skill

→ Full workflow: references/publish-workflow.md


Frontmatter Quick Guide

The Three Env Declaration Formats

ClawHub supports three ways to declare environment variables. All are valid; the metadata.openclaw format is recommended for compatibility with both the local packager and the ClawHub scanner.

Format 1 — Direct env: array (richest data, but fails local packager):

env:
  - name: MY_API_KEY
    description: "API key for the service"
    required: true
    sensitive: true

Works with npx clawhub publish but NOT with package_skill.py validation.

Format 2 — metadata.openclaw.env (recommended — works everywhere):

metadata:
  openclaw:
    env:
      - name: MY_API_KEY
        description: "API key for the service"
        required: false

Format 3 — metadata.openclaw.requires:

metadata:
  openclaw:
    requires:
      env:
        - MY_API_KEY
      bins:
        - curl
    primaryEnv: MY_API_KEY

Format 1 gives the scanner the most information (including sensitive flag) and produces the cleanest scan results.

Description Best Practices

The description is the primary trigger mechanism. Include:

  • What the skill does (concrete actions)
  • Keywords matching user queries
  • "Use when:" clause listing activation scenarios

Bad: "Helps with APIs."

Good:

description: >
  Query and manage Example API resources including users, projects,
  and billing data. Generates reports, monitors usage, and handles
  authentication. Use when: querying Example API, generating usage
  reports, managing API resources, checking billing status.

Scanner Compliance Quick Guide

1. PURPOSE & CAPABILITY ✓

  • Description accurately reflects what the skill does
  • All credentials declared in frontmatter env or metadata
  • No undeclared external service dependencies

2. INSTRUCTION SCOPE ✓

  • Instructions stay on-topic for the skill's stated purpose
  • No language about automatically applying config changes
  • Privileged operations marked as "requires manual review"
  • If using requireMention:false, document data exposure implications

3. INSTALL MECHANISM ✓

  • No curl, wget, or network downloads in scripts
  • Scripts only write within the skill workspace directory
  • Include "inspect before running" notes for all scripts
  • No obfuscated or minified executable code

4. CREDENTIALS ✓

  • Every env var the skill uses is declared in frontmatter
  • Sensitive credentials marked sensitive: true
  • No requests for credentials unrelated to the skill's purpose
  • Prerequisites table lists all required accounts/keys

5. PERSISTENCE & PRIVILEGE ✓

  • No always:true in config recommendations
  • Config changes presented as templates for manual review
  • Multi-user skills recommend agent isolation (separate OpenClaw agent)
  • No persistent background processes or daemons

→ Deep dive with case study: references/scanner-compliance.md


Publishing

Command Reference

# Publish a skill
npx clawhub publish ./skill-dir \
  --slug my-skill \
  --name "Display Name" \
  --version 1.0.0 \
  --changelog "What changed" \
  --tags latest

# Inspect published skill
npx clawhub inspect my-skill
npx clawhub inspect my-skill --files
npx clawhub inspect my-skill --file SKILL.md

# Browse and search
npx clawhub explore
npx clawhub search "keyword"

# Auth
npx clawhub whoami

Version Bumping

When fixing scanner warnings, bump the version and republish:

npx clawhub publish ./skill-dir \
  --slug my-skill \
  --version 1.1.0 \
  --changelog "Fix: declared env vars in frontmatter for clean scan" \
  --tags latest

Common Pitfalls

MistakeScanner ImpactFix
No env declarations when skill uses credentials! CREDENTIALSAdd env vars via metadata.openclaw.env in frontmatter
"Agent automatically applies config" language! INSTRUCTION SCOPEChange to "manual review required"
Scripts without inspection warningℹ INSTALL MECHANISMAdd "inspect before running" note
No agent isolation for multi-user skillsℹ PERSISTENCEAdd security model section
requireMention:false without data exposure docsℹ INSTRUCTION SCOPEDocument what data the skill sees
Description too short / missing keywordsPoor discoverabilityExpand with trigger scenarios
Shipping test DBs or generated filesBloatClean before publishing
Personal data in examplesPrivacy riskUse generic examples

Templates

Ready-to-use SKILL.md templates:

Copy, fill in the placeholders, publish.


File Reference

FilePurpose
references/frontmatter-schema.mdComplete YAML frontmatter field documentation
references/scanner-compliance.mdScanner categories deep dive with case study
references/script-safety.mdSafe script patterns for publication
references/publish-workflow.mdStep-by-step publish and iterate workflow
assets/templates/basic-skill.mdMinimal SKILL.md template
assets/templates/skill-with-scripts.mdTemplate with scripts and env vars
assets/templates/skill-with-config.mdTemplate for config-changing skills

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Security

agent-bom

Security scanner for AI infrastructure and supply chain — discovers MCP clients and servers, scans for CVEs, maps blast radius, generates SBOMs, runs CIS ben...

Registry SourceRecently Updated
Security

Skill Guard

Skill Security Scanner - Scan for risks before download/use. Check: code execution, file ops, network requests, command injection, vulnerabilities, permissio...

Registry SourceRecently Updated
014
Profile unavailable
Security

aig-scanner

Comprehensive OpenClaw security scanning powered by Tencent Zhuque Lab A.I.G (AI-Infra-Guard). Use when the user asks to start a security health check or sec...

Registry SourceRecently Updated
0142
Profile unavailable