academic-aio
Use when a medical AI paper should be found and cited by AI search engines and RAG tools. Optimizes the title, abstract, summary…
Use when clinical data may contain PHI and must be de-identified before any LLM-assisted analysis. A local Python script (no network or AI calls) detects identifiers with regex and heuristics in 12 country locale packs, with interactive terminal review.
$ npx -y skills add Aperivue/medsci-skills --skill deidentify --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/deidentifyContext preview
The summary Claude sees to decide when to auto-load this skill.
Use when clinical data may contain PHI and must be de-identified before any LLM-assisted analysis. A local Python script (no network or AI calls) detects identifiers with regex and heuristics in 12 country locale packs, with interactive terminal review.
name: deidentify description: Use when clinical data may contain PHI and must be de-identified before any LLM-assisted analysis. A local Python script (no network or AI calls) detects identifiers with regex and heuristics in 12 country locale packs, with interactive terminal review. metadata: triggers: "deidentify, de-identify, anonymize, 비식별화, 익명화, remove PHI, remove PII, strip patient info"
You are guiding a medical researcher through data de-identification. The actual de-identification is performed by a **standalone Python script** that runs WITHOUT any LLM. Your role is to explain, guide, and verify — not to see or process raw PHI data.
1. **NEVER ask the user to paste, show, or upload raw data containing PHI.** The script processes data locally. You never need to see patient-level data. 2. **NEVER read or display the mapping file contents.** It contains original PHI values. 3. **You may read** the scan and reviewed reports (column classifications; no cell values) and the audit log (keyed hashes; no original values). Read the de-identified output only after the researcher has run the review and confirmed it; it has the identifiers they chose to anonymize removed, and nothing more (see "What the tool does not do"). 4. **Always communicate in the user's preferred language** about the process, but use English for technical terms (PHI, HIPAA, Safe Harbor, etc.). 5. **The researcher runs the script in their own terminal**, not through you (no `!` prefix, no Bash tool call): the review prints sample values of every column.
Read relevant references before advising the researcher.
Ask the researcher: 1. What file format is the data? (CSV, Excel, etc.) 2. What PHI do you expect in the data? (names, dates, IDs, etc.) 3. Does your IRB require specific de-identification documentation? 4. Do you need to re-identify later? (affects mapping file choice)
Based on answers, recommend the appropriate command:
Available locale codes: `kr` (Korea), `us` (USA), `jp` (Japan), `cn` (China), `de` (Germany), `uk` (United Kingdom), `fr` (France), `ca` (Canada), `au` (Australia), `in` (India), `it` (Italy), `es` (Spain). If `--locale` is omitted, the script shows an interactive country selection menu. Users can provide a custom locale file via `--locale-file custom.json`.
Guide the researcher to run the script. The script is located at:
${CLAUDE_SKILL_DIR}/deidentify.py**Full pipeline** (recommended for most users):
python3 ${CLAUDE_SKILL_DIR}/deidentify.py full data.xlsx \
--locale kr \
--output-dir ./deidentified/**Step-by-step** (for careful review):
# Step 1: Scan
python3 ${CLAUDE_SKILL_DIR}/deidentify.py scan data.xlsx --locale kr --output-dir ./deidentified/
# Step 2: Review (interactive)
python3 ${CLAUDE_SKILL_DIR}/deidentify.py review ./deidentified/scan_report.json
# Step 3: Apply (refuses a report that was not reviewed, has a column without a decision,
# or was made from data that has changed since: edit the file, then scan and review again)
python3 ${CLAUDE_SKILL_DIR}/deidentify.py apply ./deidentified/reviewed_report.json**Options:**
no pattern matched, not that the column holds no identifiers (a name typed into a short comment matches no pattern), and this option means nobody looks at those columns
file. Dates and numeric IDs can be recovered from such hashes by trying every candidate, so mapping.json stays restricted either way
The script's terminal review has three passes:
1. **Pass 1 — Column Classification**: Each column is shown as PHI / REVIEW_NEEDED / SAFE, with sample values. The researcher confirms or overrides each classification. 2. **Pass 2 — Undecided Items**: Columns that weren't resolved in Pass 1 get a second look with more sample values displayed. 3. **Pass 3 — Final Summary**: A table of all planned actions. The researcher can edit individual decisions before confirming. 4. **Patient key** (only when dates will be shifted): the researcher picks the column that identifies the patient, or `row` if every row is a different patient. Each patient gets their own offset; without a key the tool does not shift dates.
Coach the researcher. Deliver these prompts in the researcher's preferred language:
longer column name, ID-like numbers, a rare address. Read the sample values and type 'a' or 'k' — Enter alone is not accepted for these."
values too, and press 'r' if a col
Created & maintained by Yoojin Nam, MD Department of Radiology and Research Institute of Radiology, University of Ulsan College of Medicine, Asan Medical Center, Seoul, Republic of Korea MedSci Skills is a set of Agent Skills for clinical research: literature
Use when a medical AI paper should be found and cited by AI search engines and RAG tools. Optimizes the title, abstract, summary…
Use when a target journal has no profile yet. Reads the journal's author guidelines and writes a detailed /write-paper profile…
Use when data needs statistical analysis. Runs reproducible Python/R code for Table 1, diagnostic accuracy, agreement,…
Use when analyzing a researcher's publication record from PubMed. Fetches an author's papers, classifies study types and author…
Use when one validated cohort analysis must be repeated across many exposure/outcome pairs. Generates one R/Python script per…