Install
openclaw skills install @jumpunder/publish-safe-prsSanitize and verify public GitHub contributions
openclaw skills install @jumpunder/publish-safe-prsPublic contribution is a one-way boundary. Preserve the technical fact. Leave the private story behind.
The skill may read the candidate contribution and user-supplied deny terms. It must not search unrelated private files merely to make the deny list broader.
Confirm the repository, visibility, contribution rules, issue templates, and target branch. Search for an existing issue or PR with the same failure mode. Add evidence to the canonical report when that is more useful than a duplicate.
Separate the evidence before writing:
Create a local deny-term list from private proper nouns and distinctive phrases. Keep the list private. Do not paste it into the contribution.
Preserve causality, not autobiography.
| Private source | Public replacement |
|---|---|
| Person or agent name | User or Agent A |
| Project, product, or client | Project A |
| Partner or venue | external partner |
| Account or channel | direct-message session |
| Local path | <workspace>/path or omit it |
| ID or dedupe key | example-id-001 |
| Private URL | https://example.invalid/path |
| Exact private timestamp | relative ordering such as before restart |
| Conversation quote | synthetic paraphrase preserving the failure |
Do not publish a redacted transcript when a synthetic example proves the same behavior. A unique combination of harmless details can still identify the source.
Review more than the prose:
Remove irrelevant evidence. Replace necessary identifiers with obviously synthetic values.
python3 scripts/publication_preflight.py \
--deny-term "Private Project" \
--deny-term "Distinctive Partner" \
draft.md
For a longer private list:
python3 scripts/publication_preflight.py \
--deny-file private-deny-terms.txt \
draft.md
Exit codes:
0: no configured pattern matched;1: likely private material found;2: the scan could not complete.A passing scan is necessary, not decisive. Read the final draft as a public artifact after the scanner passes.
After explicit authorization, publish through the intended identity. Fetch the public artifact immediately and verify:
Run the preflight against the fetched public body. Report the public URL.
If private information reaches a public surface:
Never claim complete erasure from the internet.
Before any public write, require every answer to be yes: