CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

deidentifying-multilingual-text

De-identify non-English clinical text on-device with OpenMed by passing lang= and locale= to deidentify(). Use when the user has Spanish, German, French, Italian, Portuguese, Dutch, Hindi, Telugu, Arabic, Japanese, or Turkish medical notes, needs locale-aware fake surrogates, must handle language-specific national IDs (DNI, NIR, Steuer-ID, codice fiscale, BSN, CPF, TCKN, Aadhaar), or asks which languages OpenMed PII supports. Covers SUPPORTED_LANGUAGES, get_pii_models_by_language, get_patterns_for_language, LANG_TO_LOCALE, and accent normalization. Pairs with OpenMed deidentifying-clinical-text and generating-synthetic-surrogates.

74

Quality

93%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

82%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

The body is a strong, dense skill file: fully executable quick starts in two languages, a clear five-step workflow with a confirm-supported checkpoint, a concrete validator table, and genuinely useful gotchas (lang vs locale, te→en_IN fallback, date order). The only weaknesses are mild: a trimmable intro and standards section, verification relegated to edge cases instead of the workflow, and no use of reference files for the inline table.

Suggestions

Trim the opening paragraph and the 'Standards & references' section (or collapse the HIPAA URL to a bare link) — the code and sections already establish scope without the prose.

Promote verification into the workflow as an explicit step (e.g. '6. Verify residual risk with audit=True, especially for mixed-language notes') so the feedback loop is part of the sequence rather than a footnote.

Consider moving the national-ID validator table and standards links into a references/ file (e.g. references/national-ids.md) to keep SKILL.md a lean overview with one-level-deep references.

DimensionReasoningScore

Conciseness

Quotes: the intro paragraph 'OpenMed de-identifies clinical text in many languages, each with a dedicated PII model, language-specific regex patterns...' and the '## Standards & references' section with a full HIPAA URL. The body is mostly lean (code, table, gotchas) but these passages are minor over-explanation that could be trimmed — anchor 4. Not 5: not every token earns its place; not 3: only isolated instances, no pervasive padding.

4 / 5

Actionability

Quotes: 'result = openmed.deidentify(nota, lang="es", method="replace", locale="es_ES")' with expected output shown, the German variant 'result = openmed.deidentify(befund, lang="de", method="replace")', and the runtime discovery snippet querying SUPPORTED_LANGUAGES. Fully executable, copy-paste-ready code covering the common cases — anchor 5.

5 / 5

Workflow Clarity

Quotes: '1. **Confirm the language is supported** by checking SUPPORTED_LANGUAGES' through '5. **Keep surrogates stable** across a document with consistent=True, seed=...'. The five-step sequence is clear with a front-loaded checkpoint, but the verification step ('verify residual risk with audit=True') appears only under 'Edge cases & gotchas' rather than as an explicit workflow step — anchor 4: most checkpoints present with a minor gap. Not 5: no explicit validate/verify step in the workflow itself; not 3: checkpoints are present and the sequence is unambiguous.

4 / 5

Progressive Disclosure

The body has well-organized sections ('When to use this skill', 'Quick start', 'Workflow', 'Language-specific national IDs', 'Hand-off to / from OpenMed', 'Edge cases & gotchas', 'Standards & references') with no nested references and a clear hand-off map to sibling skills. However, the ~130-line file inlines the validator table and standards links that could sit in a reference file, so the <50-line exception for a top score does not apply — anchor 4: good structure, minor organization gaps. Not 5: it is not the lean overview-plus-one-level-references pattern.

4 / 5

Total

17

/

20

Passed

Description

100%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

The description is exemplary: it states a concrete what (on-device de-identification via lang=/locale=), an explicit and multi-trigger when (eleven languages, locale-aware surrogates, national IDs), and clear boundaries against paired skills. All four dimensions sit at the top anchors.

DimensionReasoningScore

Specificity

Quotes: 'De-identify non-English clinical text on-device with OpenMed by passing lang= and locale= to deidentify()' plus named API surfaces ('SUPPORTED_LANGUAGES, get_pii_models_by_language, get_patterns_for_language, LANG_TO_LOCALE') and concrete national IDs (DNI, NIR, Steuer-ID, codice fiscale, BSN, CPF, TCKN, Aadhaar). This matches the anchor-5 'multiple specific concrete actions; comprehensive coverage'; a 4 would require coverage gaps, and the mechanism, parameters, and API surfaces are all explicitly named.

5 / 5

Completeness

The first sentence explicitly answers 'what' ('De-identify non-English clinical text on-device with OpenMed by passing lang= and locale= to deidentify()') and the second gives an explicit 'Use when...' clause with concrete triggers (language list, locale-aware surrogates, national IDs, support questions). This is the anchor-5 pattern; not 4, since the 'when' is fully explicit rather than improvable.

5 / 5

Trigger Term Quality

Quotes: 'Spanish, German, French, Italian, Portuguese, Dutch, Hindi, Telugu, Arabic, Japanese, or Turkish medical notes' and 'asks which languages OpenMed PII supports'. These are exactly the natural words a user would say (language names, 'medical notes', specific ID names), matching the anchor-5 comprehensive coverage including synonyms; score 4 would mean missing common natural terms, which is not the case.

5 / 5

Distinctiveness Conflict Risk

The 'non-English' scope and enumerated languages carve a clear niche, and 'Pairs with OpenMed deidentifying-clinical-text and generating-synthetic-surrogates' explicitly delineates sibling-skill boundaries. Minimal conflict risk — anchor 5; a 4 would require real overlap risk, which the explicit pairing prevents.

5 / 5

Total

20

/

20

Passed

Validation

100%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository

maziyarpanahi/openmed

Path

skills/deidentifying-multilingual-text/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.