pre-publish-scanlisted
Install: claude install-skill Bubble-invest/bubble-ops-loop
# pre-publish-scan — the systematic leak gate
{{OPERATOR}} (2026-06-22): "make the security scan systematic at each step." Before ANY
Bubble repo goes public — or at each step of an open-sourcing push — run this.
## Run it
```bash
# working tree only (fast):
deploy/bin/pre-publish-scan.sh <repo-dir>
# working tree + ALL git history (a value purged from HEAD can still be public in history):
deploy/bin/pre-publish-scan.sh <repo-dir> --history
```
Exit 0 = CLEAN (safe to publish). Exit 2 = findings (BLOCK publish).
## What it catches (the VOIE3 leak taxonomy)
- operator Telegram IDs ({{OPERATOR}}/{{OPERATOR_2}} — the specific IDs live in the scanner patterns, not here)
- internal Tailscale FQDN + CGNAT 100.64/10 IPs
- personal paths / usernames (operator home dirs, personal SSH targets)
- internal Notion DB/page UUIDs
- raw secret prefixes (sk-ant, ghp_/ghs_, AKIA, BEGIN PRIVATE KEY, age1…)
- secret-MAP docs (any doc that enumerates where secrets live)
**PII controls (client/personal data)** — structured PII a public repo must never carry,
reusing Bubble Shield's recognizers: emails, IBAN, ISIN, SIRET/SIREN, FR numéro de sécu,
FR phone, credit-card numbers. Allowlist synthetic fixtures via `BUBBLE_PII_ALLOW` (pipe-
separated literals). NOTE: names & postal addresses are the hard low-recall part — grep can't
catch them reliably; for a hard pre-publish name/address check, run the repo's text through
**bubble-shield** (the NER PII anonymizer) as a complementary gate.
Values ar