Install
openclaw skills install @blueboyzx/skill-import-auditopenclaw skills install @blueboyzx/skill-import-auditAudit a downloaded or third-party skill before trusting it: verify what you actually received matches the registry, scan for security red flags, strip machine-specific residue so it works on this machine, and verify its claims against the live system. The four passes are ordered deliberately — provenance and security before execution, portability and correctness after. Running a skill's bundled scripts is only permitted after the security pass has cleared them.
skills/ dir.Provenance → Security → Portability → Correctness. The correctness pass executes the skill's bundled scripts — that is permitted only after the security pass has passed them. If the security pass fails, quarantine (Phase 5) and stop; do not run the scripts "to see what they do."
Before installing (or building) third-party audit/vetting skill tooling, check the registry for what exists and compare capabilities for real (search + inspect + full text) — several near-miss skills often exist, and the gap to fill may be small. See references/clawhub-search-and-compare.md for the search/compare recipe.
clawhub inspect <slug> --json — capture owner, latestVersion.version, and the structured moderation object (verdict — e.g. "clean" — plus isSuspicious, isMalwareBlocked, reasonCodes). Add --files for the file listing with names, sizes, and SHA-256 hashes (it is not in the plain JSON).skill.description AFTER normalizing line endings — the server stores every line with a \r\r\n terminator, so strip it first (server.replace('\r\r\n', '\n'), or collapse all CR runs). Without this, every import looks tampered.version vs latestVersion — a stale local copy is not a defect in the skill, but it sets the baseline for every later comparison; pin the version before quoting any defect.Grep every file — including scripts — for red flags:
.ssh, key material, wallet files, browser cookie stores, .env, vault/secret paths.eval/exec on fetched content, hidden characters (zero-width, homoglyphs).moderation object in the JSON, and the "Security" line in --files text output — observed on the same skill at the same check timestamp (JSON verdict: clean vs text line SUSPICIOUS). Treat the JSON moderation object as the structured record and the text line as display. Either way the verdict is advisory in BOTH directions: real, well-built audit skills have been flagged suspicious, and a clean flag is not proof. This pass always runs.Grep the whole skill for another machine's residue — this is what makes a downloaded skill useless or dangerous on yours:
C:\, M:\, /home/<user>, /c/Users/, full paths under a user home).C:/path/to/<proj>, "a Windows host"), orOnly after the security pass has cleared the scripts:
--version, install paths, config files).-s script using ClassDB) for defaults, full property lists, and — as important — what does NOT exist. Structure the probe as enumeration FIRST (dump full property/method lists before touching individual names): an invalid name aborts the enclosing function and silently skips every remaining check.scripts/ against real local inputs. A crash is an audit failure: fix in-place or quarantine — do not keep a skill whose shipped scanner crashes on every real file.skills/<name>/.skills/ dir (e.g. skills-quarantine/<name>-<date>), and tell the user exactly what failed and why. Do not delete unless the user says so; the registry copy remains for re-audit.
Report the verdict per phase with evidence (grep hits, probe output, compare results) — a pass without evidence is not a pass.\r\r\n) make every unnormalized compare fail — normalize first, or you will quarantine a clean skill as tampered. (Real case: a byte-identical publish looked like a mismatch for a full session.)latestVersion changes what "the skill says" — pin the version before quoting a defect.C:/... paths to it; MSYS /c/... fails with exit 1. Redirects to /tmp inside a mixed bash+native call also fail — use an explicit scratch path.inspect shows what the server STORED, not what the publisher intended — it is always the comparison baseline.