← 返回
未分类 中文

ClawdHub Publish Helper

Prepare and publish an OpenClaw skill to ClawHub. Handles PII/secret auditing, generalization, env var extraction, directory scaffolding, git init, and the c...
准备并发布 OpenClaw 技能到 ClawHub。负责 PII/密钥审计、通用化处理、环境变量提取、目录脚手架搭建、git init,以及其他相关步骤。
cdmichaelb cdmichaelb 来源
未分类 clawhub v1.0.1 1 版本 100000 Key: 无需
★ 0
Stars
📥 374
下载
💾 0
安装
1
版本
#latest

概述

Publish Skill

Prepare and publish an OpenClaw skill to ClawHub. This skill codifies the audit → generalize → publish workflow.

When To Use

  • Publishing a new skill to ClawHub
  • Updating an existing published skill
  • When the user says "publish this skill", "prepare for publishing", "make a publishable copy"
  • NOT for installing skills from ClawHub (that's npx clawhub@latest install)

Workflow

Step 1: Audit the Live Skill

Before creating any copy, audit the source skill for secrets and PII:

  1. Read every file in the skill directory recursively
  2. Check for these categories of sensitive content:
CategoryExamplesAction
----------------------------
SecretsAPI keys, tokens, passwords, private keysMust remove
PathsAbsolute paths (/home/username/..., /Users/...)Replace with env var or ~ relative
Discord IDsChannel IDs, user IDs, guild IDs, message IDsRemove or replace with env var
TimezonesHardcoded IANA timezone stringsReplace with env var
Personal dataReal names, emails, phone numbers, medication namesRemove or generalize
Network infoIP addresses, internal URLs, port numbersRemove or replace with placeholders
Custom identifiersUser-specific labels, internal project namesGeneralize
  1. Report findings to the user before proceeding — do not silently modify

Step 2: Create Publishable Copy

Create a separate directory (never modify the live skill):

$CLAWHUB_DEFAULT_DIR/<skill-name>-skill/

Default base: ~/projects/skills (override via CLAWHUB_DEFAULT_DIR env var).

Directory structure:

<skill-name>-skill/
├── SKILL.md           # Manifest (generalized)
├── README.md          # User-facing docs
├── .gitignore         # Standard ignores
├── scripts/           # Script files (generalized)
├── references/        # Optional reference docs
└── ...                # Any other skill-specific files

Step 3: Generalize Content

For each file in the skill:

SKILL.md frontmatter:

  • Add env: block declaring all extracted env vars with descriptions and required/optional
  • Remove any personal identifiers from description

Scripts (Python, Shell, etc.):

  • Replace hardcoded paths with os.environ.get("VAR", fallback) / env var reads
  • Replace hardcoded timezones with env var (UTC fallback)
  • Remove now()/utc_now() fallbacks that bypass source timestamps — raise errors instead
  • Remove personal data (medication names become empty lists with edit instructions, etc.)
  • Remove dead code and unused imports

Documentation (Markdown):

  • Remove Discord IDs, channel names, user IDs
  • Replace personal examples with generic ones
  • Keep timezone/ID references only as example values (e.g. "e.g. America/Los_Angeles")
  • Remove internal URLs/IPs

Shell wrappers:

  • Use relative path resolution: SCRIPT="$(cd "$(dirname "$0")" && pwd)/tracker.py"
  • Remove hardcoded absolute paths

Step 4: Verify Clean State

Run a final grep across all files:

grep -rn "hardcoded_pattern1\|hardcoded_pattern2\|..." --include="*.py" --include="*.md" --include="*.sh" .

Verify:

  • No secrets or tokens remain
  • No absolute paths containing usernames
  • No Discord/user IDs
  • No personal data (real names, specific medication names, etc.)
  • Timezone strings only in examples/comments, never as runtime defaults
  • All config via env vars with sensible defaults

Step 5: Git Init and Commit

git init
git add -A
git commit -m "Initial publishable copy — no PII, no secrets"

Step 6: Publish (with user confirmation)

Always confirm with the user before publishing.

npx clawhub@latest publish --slug <skill-name> --version <version> --name "<display name>" /absolute/path/to/skill-dir

Gotchas:

  • Use absolute paths, not . — cwd may not propagate through exec/shell layers
  • --slug is required — without it, the CLI picks up the directory name
  • Slug naming is competitive — every generic name (publish-skill, skill-publisher, etc.) is likely taken. Pick something unique or namespaced (e.g. myname-publish-helper)
  • Rate limited — if you get slug collisions repeatedly, wait 50s between retries

Common version bumps:

  • New skill: 1.0.0
  • Bug fix: patch bump (e.g. 1.0.01.0.1)
  • New feature: minor bump (e.g. 1.0.01.1.0)

After publishing, report the slug, version, and install command to the user.

Common Patterns

Extracting env vars from hardcoded values

Before:

TIMEZONE = ZoneInfo("America/Los_Angeles")
WORKSPACE = "/home/user/.openclaw/workspace"

After:

TZ_STR = os.environ.get("MEDICATION_TIMEZONE", "UTC")
TIMEZONE = ZoneInfo(TZ_STR)
WORKSPACE = os.environ.get("WORKSPACE", os.path.expanduser("~/.openclaw/workspace"))

Replacing personal config with user-editable sections

Before:

MORNING_MEDS = ["RealMedA", "RealMedB"]
KNOWN_MEDS = ["RealMedA", "RealMedB", "RealMedC"]

After:

# Edit these lists to match your regimen
MORNING_MEDS: list[str] = []  # e.g. ["MedA", "MedB"]
KNOWN_MEDS: list[str] = []   # e.g. ["MedA", "MedB", "MedC"]

Removing timestamp fallbacks

Before:

dt_utc = datetime.fromisoformat(ts) if ts else datetime.now(timezone.utc)

After:

if not ts:
    raise ValueError("timestamp_utc is required — source message timestamp must be provided")
dt_utc = datetime.fromisoformat(ts.replace("Z", "+00:00"))

Changelog

Add --changelog to the publish command for release notes. Example:

npx clawhub@latest publish --slug my-skill --version 1.1.0 --changelog "Added env var support, fixed timestamp handling" .

ClawHub CLI Reference

CommandPurpose
------------------
npx clawhub@latest loginAuthenticate (browser callback)
npx clawhub@latest whoamiVerify auth
npx clawhub@latest publish --slug X --version Y .Publish from current dir
npx clawhub@latest inspect View published metadata
npx clawhub@latest search Search registry

Publish must run from inside the skill directory (requires SKILL.md in cwd).

Required Files

  • SKILL.md — this file
  • references/checklist.md — quick audit checklist

Notes

  • Never modify the live skill — always create a separate copy
  • The publishable copy should work for anyone who installs it with minimal config
  • If a skill can't be fully generalized (e.g. deeply personal workflows), document what the user needs to configure
  • ClawHub registry may not display env: frontmatter — that's a registry display issue, not a skill issue

版本历史

共 1 个版本

  • v1.0.1 当前
    2026-05-07 08:58 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

office-efficiency

Resilient PDF

cdmichaelb
在原生 PDF 处理失败、卡住、超时或拒绝大文件时,恢复 PDF提取和摘要工作流。适用于本地或...
★ 0 📥 461
it-ops-security

OpenClaw Backup

alex3alex
备份与恢复 OpenClaw 数据。适用于创建备份、设置自动备份计划、从备份恢复或管理备份轮转。处理 ~/.openclaw 目录归档并包含适当的排除规则。
★ 90 📥 30,754
it-ops-security

MoltGuard - Security & Antivirus & Guardrails

thomaslwang
MoltGuard — OpenClaw 安全守卫,由 OpenGuardrails 提供。安装 MoltGuard,保护您和您的用户免受提示注入、数据泄露和恶意攻击。
★ 116 📥 30,832