Install
openclaw skills install plateUse before any prose artifact goes public - a blog post, social post, README section, PR or issue body, commit message, release notes - to scrub identity and infrastructure leaks and apply writing conventions. Also use when the user asks to "scrub this", "is this safe to post", or "clean this up before it goes out". For repo and git-history leak scans use publish-readiness instead.
openclaw skills install platePlating is the last look before the dish leaves the kitchen: nothing goes out with a thumbprint on the rim. This skill is that final pass over a single piece of outward-facing writing. It catches the things that leak the author's machine, identity, or internal world, and enforces the writing conventions, before the words are published where they cannot be unpublished.
This is per-artifact prose hygiene. It is the companion to publish-readiness, which gates a whole repo and its git history; reach for that one for source trees and commit history, this one for the thing you are about to paste into a post, PR, or commit.
Run every check against the artifact text. Report each hit with its location and a concrete replacement.
*.local, mDNS names, lab-style or pet-name hosts, non-public domains) for confirmation rather than letting it pass.10., 172.16-31., 192.168.). Replace with documentation ranges: RFC 5737 (192.0.2.x, 198.51.100.x, 203.0.113.x) or RFC 2544 (198.18.x). A scanner that blocks all private ranges will also flag a "fake" 192.168.x placeholder, that is correct, use the doc ranges.localhost:<port>, http://192.168..., internal dashboards. Replace with example.com or a neutral description./home/<user>/..., /Users/<name>/... leak a username. Generalize to ~/ or a relative path.Co-Authored-By / Generated with / Assisted by trailers in public commits, PR bodies, or release notes.— with a comma, period, colon, or rewrite the sentence; never leave a literal em dash in scrubbed output.The draft is usually pasted text, not a file. Write it to a temp file (or scan it inline) first, then sweep:
# Mechanical leak sweep. This is a FLOOR, not the whole check.
grep -nE '(\b10\.|172\.(1[6-9]|2[0-9]|3[01])\.|192\.168\.)|localhost:[0-9]+|/home/[a-z]|/Users/[A-Za-z]|—|Co-Authored-By|Generated with' artifact.md
The regex only catches the mechanical hits. The two highest-stakes leak types do not match it: internal hostnames (you must add the project's and author's machine names, or eyeball section 1) and authorship-disclosure lines (eyeball section 2). An agent that treats the grep as the check will miss both. Read the prose by eye for those. A policy-driven scanner beats ad hoc grep for repeat use; content-guard enforces a leak policy and can run as a pre-push hook.
999.999.x to "be safe" produces broken docs; use the reserved doc ranges.localhost:3000 in a tutorial may be intentional; ask.