Agent skill · Security

auditing-deidentification-runs

Produce a signed, reproducible, no-PHI audit trail for an OpenMed de-identification run via deidentify(audit=True). Use when the user needs compliance evidence, a tamper-evident record of what was redacted and why, to verify nothing was changed, to retain proof for HIPAA/GDPR audits, or to review de-id decisions without exposing plaintext PHI. Covers the AuditReport / AuditSignature / AuditSpan / DetectorInfo fields, why audits store offsets+hashes+provenance+residual-risk and never plaintext, signing with .sign(key), and verifying with .verify(key). Pairs with OpenMed deidentifying-clinical-t

maziyarpanahigithub.com/maziyarpanahiGitHub ↗
claude-codeApache-2.0
Install
npx skills add maziyarpanahi/openmed --skill auditing-deidentification-runs --agent claude-code

Same command for any agent — swap --agent for codex, cursor, copilot.

Facts
Files in the skill folder: 1
SKILL.md size: 7 KB
Bundled scripts: none
Version: 1.0
Path: skills/auditing-deidentification-runs/SKILL.md
Open the folder on GitHub →
Where it comes from
Stars: 4,851
Language: Python
Read our review of the source →

Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.

From the SKILL.md

# Auditing de-identification runs `deidentify(..., audit=True)` returns an `AuditReport` instead of the rewritten text: a deterministic, **PHI-free** record of every redaction decision — offsets, label, detector confidence and threshold, the action taken, content hashes, model provenance, and projected residual risk. Sign it to make it tamper-evident, retain it as compliance evidence, and verify it later without ever touching the original text. Runs **on-device**. ## When to use this skill Use it whenever a de-identification needs to be *defensible*: regulatory retention, internal review, reproducibility checks, or proving to an auditor that identifiers were detected and handled — all without storing or exposing the PHI itself. ## Quick start ```python import openmed note = "Patient John Doe (MRN 1234567) seen 2024-03-02. SSN 123-45-6789." # Returns an AuditReport, NOT a DeidentificationResult, when audit=True. report = openmed.deidentify(note, policy="hipaa_safe_harbor", audit=True) # Make it tamper-evident with a release HMAC key (keep the key in a vault). report.sign(b"my-release-hmac-key", key_id="release-2026") # Persist the no-PHI report (no plaintext identifiers inside). imp

What's inside
Steps it walks through
  1. When to use this skill
  2. Quick start
  3. What an AuditReport contains
  4. Why audits store offsets + hashes + provenance, never plaintext
  5. Workflow
  6. Hand-off to / from OpenMed
  7. Edge cases & gotchas
  8. Standards & references
More from openmed
All skills →
About this skill
What does the auditing-deidentification-runs skill do?

Produce a signed, reproducible, no-PHI audit trail for an OpenMed de-identification run via deidentify(audit=True). Use when the user needs compliance evidence, a tamper-evident record of what was redacted and why, to verify nothing was changed, to retain proof for HIPAA/GDPR audits, or to review de-id decisions without exposing plaintext PHI. Covers the AuditReport / AuditSignature / AuditSpan / DetectorInfo fields, why audits store offsets+hashes+provenance+residual-risk and never plaintext, signing with .sign(key), and verifying with .verify(key). Pairs with OpenMed deidentifying-clinical-t

How do I install it?

Run `npx skills add maziyarpanahi/openmed --skill auditing-deidentification-runs --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.

Where does this skill come from?

From maziyarpanahi/openmed, a repository with 4,851 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.

Is a popular skill a good skill?

Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.

Keep going