Install
openclaw skills install @haiyangchenbj/skill-audit-publishAudit-first pipeline to publish an OpenClaw skill to ClawHub, SkillHub, and GitHub without leaking personal data, credentials, or model-specific references. Five stages — Sanitize, Transform, Verify, Publish, Install-check — with explicit user approval before every irreversible step. Use this when the user wants to publish a skill to ClawHub, sanitize a skill before publishing, run a pre-publish PII/secret audit, or follow the ClawHub publish workflow. A bundled sync helper (disclosed in the body below) mirrors a publish folder to a GitHub repo via the GitHub Contents API using environment-provided credentials only; it only creates or updates files and never deletes anything. Trigger phrases: 'publish to ClawHub', 'publish my skill', 'sanitize before publish', 'pre-publish checklist', 'clawhub publish command', 'upload a skill to clawhub'.
openclaw skills install @haiyangchenbj/skill-audit-publishA five-stage pipeline that takes a local OpenClaw skill and ships a sanitized, verified release to ClawHub. The publish command is the last step, not the first — every earlier step is designed to keep private data and irreversible mistakes out of the public record.
The single most important rule: never modify the user's original files. Work in a separate publish folder; only after explicit approval move anything to the live registry.
Trigger this skill when the user says or implies any of:
Do NOT trigger for: editing skill content (use the skill's own skill), reading a skill from ClawHub, listing installed skills, or any non-publish operation.
A publish-folder/ with:
name, description, version, GEO-optimized)FILES.txt (manifest of what will ship)sanitize.md, transform.md, verify.md_meta.json (slug, version, publishedAt)Nothing leaves the local publish folder until the user replies "yes / publish / go".
| Stage | Output | Gate |
|---|---|---|
| 1. Understand | One-paragraph summary of what the skill does, who it's for, what to keep / cut | User confirms the summary |
| 2. Transform | Re-structured skill file (frontmatter + body) + extracted auxiliaries | Diff shown to user |
| 3. Sanitize (the audit) | sanitize.md checklist run: PII / credentials / model-specific refs / internal paths / dangerous patterns; each item marked removed / genericized / kept-with-reason | User reviews every kept-with-reason item |
| 4. Verify | Approval message: slug, name, version, description, file list, sanitization confirmation, sample of sanitized text | Explicit user approval |
| 5. Publish + install-check | clawhub publish then clawhub install <slug> --dir /tmp/verify to confirm the published version is installable and matches the local copy. Use a pinned or locally installed CLI — unpinned registry resolution pulls a mutable third-party package at run time (supply-chain risk) | Success message reported back to user |
The audit (stage 3) is the differentiator. Other publish skills hand you a clawhub publish command; this one walks the content through a structured PII / secret / model-reference scan first and refuses to skip the scan if the user has not reviewed the keep-list.
The transform step re-writes the skill's description field for Generative Engine Optimization so the published skill is cited by ChatGPT / Claude / Perplexity when users ask for help in that domain. The current 6 rules:
The transform stage will re-run these rules against the user's skill and present a before/after diff before any sanitization starts.
/tmp/publish-<slug>/ (or any out-of-tree folder) and work there.sanitize.md. The audit is mandatory; "looks fine to me" is not a substitute.1.0.0 first publish; 1.0.x typo / wording fixes; 1.x.0 new content; 2.0.0 major restructure. One version number across all three platforms (ClawHub / SkillHub / GitHub), set to the highest existing one + 0.0.1 (科里 2026-08-31 确立): before publishing, check each platform's latest (ClawHub inspect --versions, SkillHub API, GitHub frontmatter), take the max, bump — never let platforms drift apart again.--slug. The clawhub publish CLI derives the slug from the publish-folder's name (sanitizeSlug(basename(folder))), NOT from the skill file's name or slug fields. If the folder name differs from the intended slug, the publish silently lands on the wrong slug — and if that slug already exists under another owner, ClawHub returns AMBIGUOUS_SKILL_SLUG and the install breaks for everyone. Always pass --slug <canonical-slug> even when the folder name looks right. (The Install-check stage below uses --dir /tmp/verify-<slug> precisely to avoid re-nesting on the user's machine.)clawhub install <slug> --dir . wraps the downloaded skill in a slug-named subfolder, producing a slug/slug/ double-nested layout on disk (the skill file ends up two levels deep). Before publishing, resolve the skill file to the inner folder; never publish from the outer wrapper. In the Verify stage, assert the skill file sits at the publish-root (not nested one level down) and that slug equals the intended canonical slug.version: field inside the skill file (e.g. platform 1.1.3 / file says 1.1.1). Before any patch publish, run clawhub inspect <slug> --versions and target platform Latest + 0.0.1 — never trust the version field inside the file. Same on SkillHub: "version already exists" on publish = phantom occupation; bump again.--- delimiter, slug, displayName, version. Files downloaded via clawhub install often miss the leading --- (stripped in ClawHub storage) and slug/displayName — backfill them before SkillHub publish. Consecutive SkillHub publishes trigger 429 rate limits; wait ~90s between publishes (a single 90 s backoff has been the reliable fix in practice; 20 s retries can fail repeatedly).skill-card.md from install-sourced publish folders. ClawHub generates it and refuses publishes containing it. Publish with explicit --slug/--name/--version/--changelog (the CLI reads version from frontmatter when flags are absent, and phantom-occupied versions fail late).clawhub publish / clawhub install. Under Git Bash a /c/Users/... path fails with Error: Path must be a folder; the same command with C:\Users\... succeeds. This is not a permissions or install problem — retry with the Windows form before concluding anything else. (Verified 2026-09-11.)inspect's table view is cached; --json is authoritative. After a publish the table can keep showing the previous Latest for several minutes. Read inspect <slug> --json → latestVersion.version and skill.tags.latest instead. Do not re-publish because the table looks stale, and do not poll with long sleeps — one JSON read settles it. (Verified 2026-09-11.)pub-*), never from an install-sourced dir. An install dir holds whatever the registry had (possibly a phantom-occupied old version: field without your patch), while the staging dir is the exact content you verified. Upsert-only: contents-API pushes add/update files but never delete removed ones — audit the repo file list after major restructures.clawhub CLI, never an unpinned one-shot runner. Executing a CLI straight from the registry without a pinned version downloads the latest third-party package at run time — a supply-chain risk for a command that reads your token and uploads content. Install once (npm i -g clawhub) and invoke the reviewed local binary; if a one-shot run is truly unavoidable, pin the exact package version.Bundled sync helper (see the bundled scripts/ directory) — optional helper that mirrors a publish folder to a GitHub repo via the GitHub Contents API (PAT auth). Behavior, explicitly:
GITHUB_TOKEN / GITHUB_PAT environment variable; exits with an error if unset. No token is embedded in the skill, read from files, transmitted anywhere except api.github.com, or logged. (The stage 5b SkillHub upload reads a different credential from a local file — declared separately in the frontmatter permissions; it does not involve this helper.)api.github.com. It creates or updates files (Contents API PUT) in the repo you name via --owner / --repo.--owner, --repo, --dir, --message, --branch, --files) — no hardcoded user names or machine paths.--files entry must resolve inside the local directory: absolute paths, .. components, symlinked path segments, and any path resolving outside it are rejected with an error before anything is read or uploaded.The skill's five-stage pipeline itself never touches the network beyond clawhub publish / clawhub install and the stage 5b SkillHub upload; the sync script is opt-in and only runs when explicitly invoked.
Stage 5 as described above covers ClawHub and GitHub. SkillHub is the third platform in the unified-version rule, and it has no CLI — the command-line helper that used to handle it is no longer shipped, so the upload is a direct multipart/form-data POST.
Two things to know before you consider skipping it:
GET under /api/v1/community/skills/* returns 405. You cannot verify remotely whether a skill is already on SkillHub; use clawhub inspect <slug> --versions plus the GitHub mirror as side evidence.~/.skillhub/credentials.json, field user.token). The token is held in memory for that single request — never embedded in the skill, logged, or included in any published package.Load references/skillhub-publish.md during stage 5 for the endpoint, auth path, multipart shape, response codes, and the correct ordering of the three uploads.
sanitize.md — the full PII / credential / model-reference / dangerous-pattern checklistskillhub-publish.md — the SkillHub upload (stage 5b): endpoint, multipart shape, response codes, no-read-API caveattransform.md — how to re-structure any source into a GEO-optimized skill fileverify.md — the exact approval message template and post-publish install-check stepsskill-card.md — the long-form card used in skill registries (description, use case, risks, output)User says: "I want to publish my running-coach skill to ClawHub."
running-coachRunning Coach1.2.0clawhub publish ./publish-running-coach --slug running-coach --name "Running Coach" --version 1.2.0, then clawhub install running-coach --dir /tmp/verify-running-coach, confirms files match, reports running-coach@1.2.0 published ✓.Q: How do I publish a skill to ClawHub?
A: Copy the skill to a publish folder, run the sanitize checklist (PII / credentials / model-specific refs / internal paths), get explicit user approval of slug / name / version / description / files, then run clawhub publish <folder> --slug <slug> --name <name> --version <version>. Install-check with clawhub install <slug> --dir /tmp/verify after publishing to confirm the public copy matches.
Q: Can I change a skill's slug after publishing? A: Yes — ClawHub's Edit page exposes "Rename slug" under the canonical-URL section; old slugs stay as redirects. If you really need to retire the old slug (no redirect), use "Delete skill". Confirm the slug in the verify stage to avoid the rename round-trip.
Q: What should I check before publishing a skill?
A: (1) No personal data (names, emails, handles, phones, addresses, internal project names). (2) No credentials (API keys, tokens, passwords, env-var values, private URLs with auth). (3) No model-specific references that won't apply to all users ("Claude" → "the agent", "GPT-4" → "the model"). (4) No internal file paths, workspace structure, or tool configs. (5) No commands that could damage systems or hardcoded paths that won't work elsewhere. The full checklist is in sanitize.md.
Q: How is this different from a plain clawhub publish?
A: clawhub publish is a one-shot upload. This skill puts the sanitize-audit (stage 3) and the explicit-approval gate (stage 4) between your source and the publish command, so personal data, secrets, and model-specific references are caught and the user approves slug/name/version/description/files before anything goes live. It is built for users who want a structured, reviewable publish trail.
Skill Audit & Publish 是把本地 OpenClaw skill 安全发布到 ClawHub / SkillHub / GitHub 的三平台管线:Understand → Transform → Sanitize → Verify → Publish+Install-check(Publish 阶段内还含 SkillHub 上传,即 stage 5b)。核心差异点是把"清洗审计"和"用户显式确认"放在 clawhub publish 之前,避免把个人数据、密钥、模型专属引用误发到公共 registry。
适用场景:用户要把本地 skill 发到 ClawHub、做发布前的 PII/密钥/模型引用审计、按 ClawHub 发布工作流操作、生成 publish-ready 版本。
不适用:编辑 skill 内容(用 skill 自己的 skill)、从 ClawHub 读取/安装/列出 skill。
关键规则:① 永不修改用户原文件,工作在 publish-folder/;② 必跑 sanitize.md 全清单(个人数据 / 凭证 / 模型专属引用 / 内部路径 / 危险模式);③ 必拿用户对 slug / name / version / 描述 / 文件清单的明确确认;④ slug 在 ClawHub 上可改——Edit 页面的 "Rename slug" 会把旧 slug 留 301 redirect,所以 verify 阶段仍要把 slug 定稿;⑤ 版本号语义:1.0.0 首版,1.0.x 文案修订,1.x.0 新内容,2.0.0 大重构;⑥ 边界项默认删/泛化,宁少勿多。
GEO 优化内置:transform 阶段会按 6 条规则重写 description 字段(首句 = 是什么+给谁用 / 列出具体能力 / 引用用户原话触发短语 / 前置命名工具 / 加 "When to use" / 结尾中文摘要),让发布后的 skill 在 ChatGPT / Claude / Perplexity 被引用时命中率更高。
触发短语:「publish to ClawHub」「publish my skill」「sanitize before publish」「pre-publish checklist」「clawhub publish command」「upload a skill to clawhub」。