Install
openclaw skills install skill-publish-vetterPre-publish privacy scan for ClawHub skills. Detects tokens, keys, credentials, .env secrets, personal info, and internal IPs before publishing.
openclaw skills install skill-publish-vetterPre-publish privacy scan for ClawHub skills.
Every skill must pass this scan before publishing to ClawHub.
Publishing to ClawHub = publicly visible. Any leaked secret is exposed to the world.
Better safe than sorry. Even if the scan passes, always ask for user confirmation before publishing.
When the user requests a publish/upload/update to ClawHub, follow these steps strictly:
The scan script lives in this skill's scripts/publish-check.sh. Run it from this skill's directory:
bash scripts/publish-check.sh <target-skill-directory>
It scans for:
| Category | Detection Pattern | Example |
|---|---|---|
| Tokens / Keys | sk-, ghp_, github_pat_, gpg_, xoxb-, glpat-, JWT tokens | sk-abc123... |
| API Keys | api_key, apikey, API_KEY, access_token with actual values | API_KEY=abc123 |
| Passwords | password, passwd, pwd with non-placeholder values | password=mysecret123 |
| Private Keys | BEGIN.*PRIVATE KEY | PEM private key |
| Public Keys | BEGIN.*PUBLIC KEY, ssh-rsa long strings | SSH public key |
.env Values | .env files with actual (non-placeholder) assignments | .env: DB_PASS=real_password |
| Hardcoded Creds | Authorization: Bearer with real tokens | curl -H "Authorization: Bearer sk-xxx" |
| Personal Emails | Non-placeholder, non-org emails | zhangsan@gmail.com |
| Personal Paths | /home/username/, /Users/username/ absolute paths | /Users/weidongkl/.ssh/id_rsa |
| Internal IPs | 192.168.x.x, 10.x.x.x, 172.16-31.x.x | https://192.168.1.100:8080 |
Output the complete scan report to the chat. Do not summarize or omit anything.
Always ask for confirmation before publishing — even if the scan is clean.
Confirmation message must include:
Template:
📋 Publish Confirmation
Skill: <name>
Path: <directory>
Version: <version>
Scan Result: <PASS / ISSUES FOUND>
[Full report here]
Reply "yes" or "confirm" to proceed with publishing, or "cancel" to abort.
Never skip confirmation. Never auto-publish.
After confirmation:
clawhub publish <skill-directory> --slug <slug> --name "<name>" --version "<version>" --changelog "<changelog>"
Ask the user for slug, name, version, and changelog if not provided.
Tell the user whether publishing succeeded or failed.
| Level | Meaning | Action |
|---|---|---|
| 🚨 CRITICAL | Token, key, password, private key with actual values | Block publish. User must fix first. |
| ⚠️ WARNING | Personal email, personal path, internal IP | Recommend fixing before publishing. |
| 💬 INFO | author, repository identity fields, metadata env exposure | Ask user if intentionally public. |
If any of these are found, refuse to publish by default:
.env files with actual configuration valuesIf the user explicitly says "publish anyway despite risks", re-confirm once before proceeding.
Use these placeholders when fixing issues:
| Type | Placeholder |
|---|---|
| Token | your-api-token / <YOUR_TOKEN> |
| API Key | your-api-key / <API_KEY> |
| Password | your-password / <PASSWORD> |
you@example.com / <YOUR_EMAIL> | |
| Username | your-username / <USERNAME> |
| URL | https://your-server.example.com |
| IP | your-server-ip |
The script is at scripts/publish-check.sh relative to this skill's directory. It uses no absolute paths and works in any installation location.
bash scripts/publish-check.sh <target-skill-directory>
Safety first, publishing second. Never publish without confirmation. 🛡️