Skip to content
Back to skills

Acprk Anonymize Check

ASecurity

Use before every double-blind submission, supplementary upload, anonymous artifact mirror or rebuttal attachment. Scans .tex/.bib/code/zip/PDF (text, metadata, embedded paths, compressed object streams) for author names, first-person self-citations, personal code-host URLs, e-mails, local paths, acknowledgements and funding lines, using a configurable deny-list.

  • 78 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 26, 2026
researchpythonbashgit

Works with

  • terminal

Security analysis

A100/100

Pro scans all 7 files and shows the line behind each finding

Scanned September 26, 2026

npx -y skills add jiayaoqijia/cryptoskill --skill acprk-anonymize-check --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Acprk Anonymize Check?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Acprk Anonymize Check
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/jiayaoqijia-acprk-anonymize-check/badge)](https://www.skillsdirectory.com/skills/jiayaoqijia-acprk-anonymize-check)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: anonymize-check
description: Use before every double-blind submission, supplementary upload, anonymous artifact mirror or rebuttal attachment. Scans .tex/.bib/code/zip/PDF (text, metadata, embedded paths, compressed object streams) for author names, first-person self-citations, personal code-host URLs, e-mails, local paths, acknowledgements and funding lines, using a configurable deny-list.
---

# Anonymize check

## Script

`scripts/anon_check.py` (standard library only; uses PyMuPDF or poppler if present).

```bash
# 1. keep a private deny-list (never commit a filled-in one publicly)
cp skills/anonymize-check/scripts/denylist.example.txt paper/.denylist.txt   # then edit

# 2. scan sources, the built PDF, the supplementary zip, the artifact directory
python3 skills/anonymize-check/scripts/anon_check.py paper/ paper/main.pdf \
        supplementary.zip artifact/ --deny-file paper/.denylist.txt \
        --allow-url 'github\.com/<third-party-org>/'

# 3. self-test (synthetic sample; must print PASS)
python3 skills/anonymize-check/scripts/anon_check.py --selftest
```

Exit status 1 if any HIGH finding. `--json` for machine-readable output,
`--min-severity MEDIUM` to reduce noise.

## What it flags

| severity | finding |
|---|---|
| HIGH | deny-list term in text/code/filename/PDF bytes; e-mail; local path (`/home/<u>`, `/Users/<u>`, `C:\Users\<u>`); non-anonymous `\author`/`\institute`/`\thanks`/`\email`; acknowledgements section; PDF Author metadata; embedded figure path (`PTEX.FileName`) containing a username or deny term; `.git` inside an archive; URL containing a deny term |
| MEDIUM | first-person self-citation ("our previous work", "we previously showed", "our paper~\cite"); personal code-host URL (github/gitlab/.github.io/...) not in the allow-list; funding statement; PDF Title/Subject/Keywords metadata; `.git` directory in an artifact folder; hits inside comments (downgraded one level) |
| LOW | deny term inside `.bib` (allowed: self-citations stay in the bibliography with real authors, referred to in the third person); "camera-ready"/"de-anonymised" wording; Creator/Producer metadata (informational) |

## Manual checks the script cannot do

- Self-citations are written in the third person ("Example et al. [12] showed")
  and critiqued like any other work; not omitted, not "anonymised" in the bib.
- No "blinded" citation that is obviously the authors' own when a third-person
  citation would do (follow the venue's policy; IACR generally prefers third person).
- Supplementary/artifact README avoids "our prior paper", "same codebase as",
  "inherited from our earlier implementation".
- Anonymous mirrors (e.g. anonymous.4open.science) are refreshed after the last
  push, and each file URL returns HTTP 200 (a private source repository can make the
  mirror return 403). Check with `curl -sI`.
- Figures: no screenshots with usernames, terminal prompts, or window titles.
- Experiment logs in the artifact: hostnames, IPs, usernames stripped.
- Overleaf/Git history is not shared with reviewers.
- Submission form fields (conflicts, abstract) are separate from the PDF; the PDF
  itself must be anonymous.

## Remediation snippets

```latex
% Empty PDF metadata (hyperref)
\hypersetup{pdfauthor={},pdftitle={},pdfsubject={},pdfkeywords={},pdfcreator={},pdfproducer={}}
% Avoid embedding figure source paths (pdfTeX)
\pdfsuppressptexinfo=-1   % place in the preamble (pdfTeX >= 1.40.15)
```

```bash
# strip metadata from a finished PDF (qpdf/exiftool if available)
exiftool -all:all= -overwrite_original main.pdf && qpdf --linearize main.pdf main_clean.pdf
# zip an artifact without VCS data
git archive --format=zip -o artifact.zip HEAD   # or: zip -r artifact.zip artifact -x '*.git*'
```

Record the final clean run (command + summary line + PDF sha256) in `SUBMISSION.md`.

Files in this skill

  • LICENSE1.1 KB
  • SKILL.md3.7 KB
  • SOURCE.md356 B
  • TRUST.auto.yaml2.2 KB
  • scripts/anon_check.py20.5 KB
  • scripts/denylist.example.txt494 B
  • tests/test_anon_check.py2.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…