| name | bridge-leak-check |
| description | Content-leak scanner with categorized classification. Different from a raw blocklist grep: each hit is sorted into legitimate-self-reference, legitimate-sister-repo, personal-PII (always leak), or internal-vocabulary hardcoded (OSS-strict only). Use after a sync to verify the destination is actually clean โ catches pre-existing leaks the source-side scan won't see. Also runs OSS-strictness vocabulary checks (e.g. "scope: bks" hardcoded in OSS-shipped skill docs that should use "scope: org" placeholder). Trigger: "/bridge-leak-check", "leak scan", "leak check", "OSS readiness", "pre-existing leaks", "cleanliness check", "is this OSS clean". |
| metadata | {"scope":"core"} |
Bridge Leak Check โ Categorized Content Scan
bridge-leak-check runs over a current repo state (not a diff), greps
the configured blocklists, and categorizes every hit into one of four
buckets so you don't drown in false positives. It complements
rules/promote-safety.md (which scans a diff per-destination at promote
time) by running on the post-merge state.
Read the referenced file ONLY when triggered.
Why both scans exist
| Scan | When | Scope | Strength |
|---|
rules/promote-safety.md | At promote time | Diff only | Catches leaks introduced by the current commit |
bridge-leak-check | Anytime | Whole repo state | Catches pre-existing leaks (from prior promotes, seedings, manual commits) |
The session that birthed this skill discovered that a clean source-side
scan does not guarantee a clean destination โ open-bridge had three
pre-existing leaks (<your-username>-bks.yaml examples, com.bks.my-service,
bks wordmark) that no single promote scan caught because they predated
the per-repo blocklist.
Arguments
| Argument | Effect | Default |
|---|
(none) | Scan current repo with the matching blocklist (auto-detected from .git/config origin) | โ |
--repo <name> | Force which blocklist to apply (open-bridge / org-overlay / your-bridge / fallback) | auto |
--strict-oss | Also flag internal-vocabulary hardcoding (uses vocabulary_renames from bridge-audit/data/renames.yaml) | false |
--report-only | Only show categorized report; don't suggest fixes | false |
--target-dir <path> | Scan a different working tree (e.g. /tmp/cloned-upstream) | . |
Categories
Every hit lands in exactly one bucket:
| Category | Marker | Example | Action |
|---|
| Legitimate โ self-reference | โ
โ | bks-lab/open-bridge inside the open-bridge repo, schema $id URLs that point at this repo's published schemas | Skip โ this is correct |
| Legitimate โ sister-repo | โ
โ | {org}/bridge-deck cross-link in same OSS family | Skip โ this is correct |
| Leak โ personal PII | ๐ด | <your-username>, <your-username>, ~/, personal hostnames | Always fix โ replace with <your-username> placeholder |
| Leak โ internal vocabulary (OSS-strict) | ๐ก | an org-shortname scope value (e.g. scope: acme) in shipped skill docs, a hardcoded org-bridge overlay slug as the only "internal overlay" example | Generalize โ see vocabulary_renames in bridge-audit/data/renames.yaml |
Decision Tree
User wants to...
โโโ Verify a fresh clone is OSS-clean โ references/classification.md ยง standard scan
โโโ Categorize hits in current repo โ references/classification.md ยง standard scan
โโโ Run on a temp clone (post-merge verify) โ --target-dir <path>
โโโ Add a new self-reference exception โ edit references/classification.md ยง exceptions
โโโ Add an internal-vocabulary rename โ edit bridge-audit/data/renames.yaml ยง vocabulary_renames
Output Shape
Bridge Leak Check โ <repo>:<branch> (<timestamp>)
Blocklist: open-bridge (strict)
โ
Legitimate self-reference (5 hits, no action needed)
bks-lab/open-bridge schema $id URLs โ 5 files
โ
Legitimate sister-repo (1 hit, no action needed)
docs/calendar.md:110 โ github.com/{org}/bridge-deck
๐ด Personal PII leaks (0 hits)
None โ clean โ
๐ก Internal-vocabulary hardcoded (3 hits โ strict-OSS mode)
skills/bridge-promote/SKILL.md:24 โ "scope: org" should be "scope: org"
skills/bridge-onboard/SKILL.md:31 โ "internal org-bridge" should be "<your-org>/<your-bridge>"
infra/channels/_schema.yaml:101 โ "com.bks.*" should be "com.example.*"
Verdict: 3 OSS-strict findings (yellow). No personal PII. No customer codenames.
See also
bridge-audit โ drift detection (sibling skill; uses the same data/renames.yaml)
bridge-sync โ uses this skill in Step 11 (post-merge verification)
rules/promote-safety.md โ diff-time content scan (different layer, complementary)