audit
Full fleet audit in an isolated agent — one prioritised report with a ready repair line under every finding Arguments: [selector] [--focus auth|versions|memory|cron|secrets|security|shared|all].
SKILL.mdopenclaw-ops/skills/audit/SKILL.md
GitHubOpenClaw fleet audit
Read-only, end to end. Nothing here changes an instance.
Parse [selector] (default: managed) and [--focus …] (default all) from "$ARGUMENTS".
It runs in an agent for cost, not subject: minutes of probes, fetches and intermediate output that
would be noise here. /openclaw-ops:status stays in the conversation. The full contract the agent
works under is agents/openclaw-fleet-auditor.md.
Process
Load the model —
Skillfleet-modelfor the selector grammar and the four states, thenfleet-diagnosticsfor the catalog that every finding must resolve to.Resolve the target set (reads may use
all):python3 "${CLAUDE_PLUGIN_ROOT}/scripts/fleet.py" resolve "<selector>" --tableExit 2 = no usable config, run
/openclaw-ops:initfirst. Exit 4 = nothing matched; stop.Collect the deterministic evidence yourself, so the agent interprets rather than gathers:
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/healthcheck.py" "<selector>" --snapshot --json > /tmp/oc-health.json python3 "${CLAUDE_PLUGIN_ROOT}/scripts/versions.py" "<selector>" --json > /tmp/oc-versions.json python3 "${CLAUDE_PLUGIN_ROOT}/scripts/report.py" --input /tmp/oc-health.json \ --versions /tmp/oc-versions.json --compare-with auto --format md > /tmp/oc-report.mdExit 5 means a
criticalorhighfinding exists, 6 meanswarnonly — that is the payload, not a failure. Skip the versions call only when--focusexcludes it; skip nothing else, because a focus narrows attention and never the evidence.Dispatch the auditor —
Taskwithsubagent_type: openclaw-fleet-auditor, handing it the selector, the focus, and the three artefact paths. Restate the contract it already carries: read-only, every finding on a catalog id or a verbatim upstreamcheckId, anything else cited.Present what comes back, unchanged in substance and ordered by severity, then by
criticalityof the instance carrying it. Under each finding print the exact line:/openclaw-ops:repair <instance> --issue <finding-id>. A finding with no catalog row is printed as not repairable yet with what its row would need — never with an improvised fix.Name what the delta says: findings new since the last snapshot, findings resolved, and findings nobody has moved on for weeks. The last group is the most useful section of the report and the easiest to skip.
Constraints
- The audit proposes;
/openclaw-ops:repairand/openclaw-ops:updatedispose. Never apply a fix from inside this command, and never add--yesto a line you just printed. - The report is the most-copied artefact this plugin produces: it carries fingerprints, presence and expiry dates, never a secret value.
- An unreachable or alien instance appears in the report as a row with its reason. Silent omission is the one failure mode an inventory tool is not allowed to have.