Install
openclaw skills install @geoffrey-xiao/safe-clawhub-publisherSafely validate, dry-run, publish, and verify ClawHub skills and OpenClaw plugins. Use for versioning, changelogs, secret scans, fingerprint checks, authentication, and post-release verification; do not use to design a package.
openclaw skills install @geoffrey-xiao/safe-clawhub-publisherMove an existing local package from release candidate to verified ClawHub release. Treat local inspection and dry-runs as reversible; treat login, publication, tag changes, and remote replacement as external mutations.
python3 scripts/validate_release_inputs.py <path> --format json from this skill directory, or use its absolute path.skill: read references/skill-release.md.plugin-package: read references/plugin-release.md. Let the current ClawHub CLI determine whether it is a code or bundle package when local metadata is not explicit.ambiguous or unknown: stop and explain which markers conflict or are missing. Do not guess a publish command.clawhub executable and capture its resolved path, version, and the relevant command's --help. Use the version flag shown by the installed help rather than assuming --version; the installed CLI help is authoritative when examples in this skill differ.
clawhub is missing, tell the user that the release cannot proceed without it. Verify the official package identity, query an exact current version from an official source, and show the package manager, installation scope, and pinned install command.command -v clawhub, capture the installed version and help output, and check for conflicting binaries on PATH. If installation is declined or unavailable, stop before dry-run and publication and report the missing CLI as the blocker.clawhub skill publish command, ClawHub dry-run, account check, and remote verification. For any non-zero exit, stderr error, rate-limit notice, unexpected empty output, or missing machine-readable response from these commands, show the user the sanitized error text, exit status when available, command phase, and whether the state is rejected, unavailable, or unknown. Ordinary local helper commands may be summarized unless their failure affects the release decision. Never hide a release-critical error with || true, discard stderr, or report only a generic failure. Redact credentials and token-like values, but preserve actionable server messages such as reserved topics and topic-count limits.Retry-After delay, capped at two minutes. When machine-readable inspection remains unavailable or stale, give the user the canonical package page https://clawhub.ai/<owner>/skills/<slug> and stop automated work. Record user-visible confirmation separately from CLI/API verification.clawhub whoami before starting a login flow. Do not log in again when the existing authenticated account matches the intended owner. If the user has not supplied an owner, present the authenticated handle only as a candidate and obtain confirmation before targeting a dry-run or publication.clawhub login --no-browser, show the verification URL and one-time code to the user, and keep the process alive while authorization is pending.clawhub whoami and show the authenticated handle. If it does not match the intended owner, stop; do not switch accounts, transfer ownership, or change the release target by inference.Immediately before publishing, without editing or rebuilding the package:
--expect-fingerprint <confirmed-fingerprint> and repeat the exact ClawHub dry-run.clawhub whoami and require the authenticated handle to match the confirmed owner.Use assets/release-report.md for a reusable report. For CI-only dry-runs, adapt assets/github-actions.yml; keep publication in an explicitly dispatched job with protected secrets.
npx to fetch an unpinned ClawHub CLI during a release. Prefer an already installed, identified executable.user-confirmed in ClawHub UI rather than CLI/API-verified.Read references/troubleshooting.md for pre-publication network failures, authentication failures, duplicate versions, type ambiguity, rejected manifests, pending scans, and uncertain publish outcomes. Stop when the next action would require different credentials, a changed target, destructive cleanup, or a broader release scope.