Scrub PII from text
SkillCommunicationUse this to strip PII (emails, credit cards, SSNs, phone numbers, IPs, IBANs) out of text before it is logged to a tracing backend or sent to a third-party model. Trigger on "redact PII", "scrub sensitive data", "mask PII before logging", "don't send customer data to the tracing tool", especially for finance/healthcare/regulated apps. Ships a runnable, tested scrubber with a Luhn check to cut false positives.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Scrub PII from text skill
What this skill tells your AI
The instructions your AI receives, as published by contextjet-ai/awesome-llm-observability in skills/scrub-pii-from-text/SKILL.md and read by ahel’s review.
Observability captures prompts and completions, which in a regulated app can mean shipping account numbers or PII to a third-party backend. This skill ships a scrubber you can run in the export path so raw values never leave your process.
Use the bundled script
scripts/pii_scrub.py is pure Python, no install needed:
from pii_scrub import scrub, find_pii
scrub("email a@b.com, card 4111 1111 1111 1111") # -> "email <email>, card <card>"
find_pii(text) # [("email", "a@b.com"), ("card", ...)]
It masks emails, credit cards (Luhn-validated, so random 16-digit order ids are not flagged), US SSNs, phone numbers, IPv4 addresses, and IBANs. Run it directly: python scripts/pii_scrub.py.
How to apply it
- Redact before export, not after: call
scrub()in your span processor / logging hook so no path bypasses it (seeredact-pii-for-tracingfor where that hook goes). - Redact both directions: user input and model output (models echo PII back).
- Layer a real detector for high stakes: this is a strong default, but for finance/health, add Presidio or LLM Guard plus a domain ruleset. Regex alone misses context-dependent PII.
Validation
Run the tests: pytest skills/scrub-pii-from-text/tests/. They confirm emails/SSNs/valid cards are masked, that a Luhn-invalid number is left alone (false-positive guard), that clean text is untouched, and that find_pii reports entities.
Anti-patterns
- Regex-only redaction as your whole compliance story for high-stakes data.
- Masking input but not model output.
- Redacting after the SDK already exported the span (mask before export).
Signals
- GitHub stars
- 33
- Forks
- 18
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
scrub-pii-from-text- Source
- github.com/contextjet-ai/awesome-llm-observability