audit-data-exposure
Skill0 starsChanged 3 months agoMITView on GitHub
Perform read-only, redacted reviews of repositories, Git changes or ranges, paths, and subsystems for personal data, private records, credentials, developer-machine metadata, re-identifiable samples, anonymization failures, and disposable one-time migrations or conversions. Use only when the user explicitly requests a personal-data, privacy, anonymization, repository-leak, sensitive-data exposure, or disposable-migration review. Do not invoke merely because code is being committed, released, published, or open-sourced, and do not use for ordinary code audits, dependency reviews, performing dataset anonymization, legal-compliance opinions, or implementation work.
In this repository20 other files it gives its agents.
- AGENTS.mdAGENTS.md
- audit-dependenciesSkill
- audit-testsSkill
- build-verification-harnessSkill
- chatgpt-researchSkill
- comment-healthSkill
- deep-code-auditSkill
- deep-planningSkill
- diagnose-bugsSkill
- docs-auditSkill
- maui-blazor-browserSkill
- prune-codebaseSkill
- reduce-code-slopSkill
- retrospectiveSkill
- steering-reviewSkill
- task-handoffSkill
- ui-design-and-polishSkill
- verification-contextSkill
- verify-changeSkill
- write-clearlySkill
The file
We split this skill into the rules it gives an agent
10 rules. About 0 are common, 10 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈10
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 14
Keep repository content, detected values, private paths, manifests, history, and reports local.
- Distinctive: line 15
Never print, quote, hash, or include surrounding text for a detected value.
- Distinctive: line 17
Use only repository-provided or already-installed read-only tools.
- Distinctive: line 18
Do not claim legal compliance, regulatory certification, penetration testing, irreversible anonymization, or a guarantee that no personal …
- Distinctive: line 22
Read data-classification-and-signals.md before classifying personal/private data, public attribution, synthetic examples, re-identification …
- Distinctive: line 23
Read scope-history-and-response.md before selecting Git scope, interpreting coverage gaps, reporting committed exposure, or recommending …
- Distinctive: line 27
Read all applicable repository instructions.
- Distinctive: line 40
Never fetch missing refs automatically.
- Distinctive: line 44
Run the bundled scanner from the target repository with the appropriate scope:
- Distinctive: line 56
Use already-installed secret, PII, metadata, archive, OCR, or database inspection tools only when their execution is demonstrably local, …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Repository Data Exposure Review
Audit repository exposure without transmitting, reproducing, changing, or deleting the data under review. Treat automation as candidate discovery, not proof that data is safe or anonymous.
Preserve the review boundary
- Remain read-only. Do not sanitize files, rotate credentials, rewrite Git history, delete artifacts, contact third parties, or save a report unless separately authorized.
- Keep repository content, detected values, private paths, manifests, history, and reports local. Do not submit them to websites, hosted scanners, models, registries, or other external services.
- Never print, quote, hash, or include surrounding text for a detected value. Report only the repository-relative location, category, confidence, exposure state, and remediation direction.
- Record
git status --shortbefore and after the review. Stop and report any unexpected tracked-file mutation caused by a command. - Use only repository-provided or already-installed read-only tools. Do not install detectors, dependencies, models, OCR packages, or Git history-rewrite utilities.
- Do not claim legal compliance, regulatory certification, penetration testing, irreversible anonymization, or a guarantee that no personal data exists.
Read the focused references
- Read data-classification-and-signals.md before classifying personal/private data, public attribution, synthetic examples, re-identification risk, or migration artifacts.
- Read scope-history-and-response.md before selecting Git scope, interpreting coverage gaps, reporting committed exposure, or recommending remediation.
Establish scope and repository truth
- Read all applicable repository instructions.
- Record Git status, repository root, remotes without embedded credentials, shallow-clone state, local branches, remote-tracking refs, tags, submodules, Git LFS use, and ignored/generated directory conventions.
- Establish intentional public identities from repository evidence: repository owner or organization, manifest authors, public support contacts, license attribution, project URLs, and ordinary contributor metadata. Do not infer that unrelated details are permitted merely because they appear online.
- Inventory source, documentation, configuration, tests, fixtures, examples, logs, dumps, databases, notebooks, archives, Office documents, PDFs, images, media metadata, generated artifacts, CI artifacts, and data-shaped ignored files.
- Identify product-maintained schema migrations and supported import/export paths separately from apparently disposable migrations, converters, backfills, repair scripts, and temporary data tools.
Select the review scope
- Whole repository: inspect current tracked content, index state, unstaged content, untracked files, relevant non-generated ignored files, commit messages, annotated tags, and unique blobs reachable from every local branch, remote-tracking ref, and tag.
- Current Git changes: inspect staged, unstaged, and untracked content relative to
HEAD, including previous content for changed or removed files. Use an explicit base when supplied. - Git range: inspect every unique blob and commit message introduced by the explicit range plus both sides of changed content needed to judge removal or persistence.
- Path or subsystem: inspect current selected paths, their reachable history and renames, and relevant producers, consumers, fixtures, documentation, and migration utilities.
Never fetch missing refs automatically. Mark a shallow clone, unavailable LFS object, uninitialized or unscanned submodule, unsupported archive, missing remote ref, or unavailable historical object as a coverage gap.
Run deterministic candidate discovery
Run the bundled scanner from the target repository with the appropriate scope:
python <skill-path>/scripts/scan_repository_data_exposure.py --root . --scope full
python <skill-path>/scripts/scan_repository_data_exposure.py --root . --scope changes
python <skill-path>/scripts/scan_repository_data_exposure.py --root . --scope changes --base <ref>
python <skill-path>/scripts/scan_repository_data_exposure.py --root . --scope history --range <range>
python <skill-path>/scripts/scan_repository_data_exposure.py --root . --scope path --path <path>The scanner uses standard-library code and read-only Git commands. It emits JSON containing detector categories and locations, never values or snippets. Preserve its complete coverage and gap summary. Do not pass private search terms on a command line.
Use already-installed secret, PII, metadata, archive, OCR, or database inspection tools only when their execution is demonstrably local, read-only, non-uploading, and non-executing. Record tool version and configuration. A clean result covers only that tool's recognizers and supported formats.
Validate candidates locally
- Inspect each candidate at its local source without copying its value into notes, commands, prompts, or the final report.
- Distinguish intentionally public attribution, clearly reserved synthetic examples, and product-supported generic migrations from actual exposure.
- Evaluate combinations of quasi-identifiers and external linkage. Pseudonyms, hashes, tokens, truncated values, or removed direct identifiers do not establish irreversible anonymization.
- Validate lifecycle signals before confirming a disposable one-time migration or conversion. Every verified disposable artifact is a policy finding, even without private values; its lifecycle alone does not demonstrate exposure. Do not classify a maintained repeatable schema migration, supported upgrade path, reusable import/export tool, or fixture generator as disposable solely because it transforms data. Maintained lifecycle does not excuse independently verified exposure.
- Determine whether a finding exists only in current uncommitted content, in the index, in
HEAD, or in reachable history and which refs preserve it. - Classify unsupported binaries, images, PDFs, databases, encrypted archives, missing LFS objects, and unscanned submodules as gaps rather than silent passes.
Decide the outcome
Assess exposure and disposable-migration policy separately using the existing outcomes. Exposure fails for confirmed unauthorized personal/private data, credential exposure, or re-identifiable data presented as anonymous. Policy fails for every verified disposable one-time migration or conversion. The latter is this skill's strict retirement policy, not proof of a privacy leak or a legal requirement.
Use local ownership and provenance evidence to establish confidentiality. When that evidence confirms confidential material is included without authorization, untested credential usability does not make the exposure unresolved. Report usability and impact limits separately; do not authenticate to resolve them. A pattern or confidentiality label without adequate provenance still requires validation.
For each assessment, and then the overall result, apply this precedence:
FAILwhen a finding is verified. A known failure remains a failure even when other required evidence is blocked.- Otherwise
BLOCKEDwhen critical scope cannot be inspected safely or a high-confidence candidate cannot be resolved. - Otherwise
PASS_WITH_WARNINGSwhen lower-confidence candidates or non-critical gaps remain. - Otherwise
PASSwithin the demonstrated scope and methods.
Name the supported reason for the overall result and retain each assessment's gaps. For example, a harmless disposable converter can fail policy while no exposure is verified; an uninspectable required archive leaves exposure blocked without overriding that policy failure. Completing review actions does not mean the subject passed, coverage is complete, or release is approved. Never turn a bounded PASS into a guarantee.
Report without leaking
Lead with the coverage ledger, then the overall result and the two assessments. Separate exposure findings from disposable-migration policy findings; no fixed report syntax is required. For each finding include:
- stable ID, category, severity, confidence, and disposition;
- repository-relative path plus line, commit, ref, or archive-member location as applicable;
- current, index, untracked, ignored, or historical location state;
- exposure evidence and why public/synthetic exceptions do not apply, or lifecycle evidence establishing the policy violation, as appropriate;
- introduction/removal evidence and whether reachable history still contains it;
- remediation direction and a verification method, without reproducing the value.
Also report excluded and blocked surfaces, scanner/tool commands, unexpected mutations, and the final Git status comparison. If no finding survives validation, say so while preserving coverage limitations.
Link findings when an artifact supports both reasons independently. Do not invent leaked records, compromised credentials, or disclosure impact for a policy-only artifact. Recommend retirement for the lifecycle finding; recommend exposure containment only when supported by exposure evidence. Neither recommendation authorizes edits.
For committed exposure, recommend containment and coordinated cleanup but do not execute it. For credentials, recommend revocation or rotation before history cleanup. Explain that clones, forks, pull-request refs, cached commit views, LFS storage, release artifacts, and mirrors may retain data after current files change.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

