CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

generating-synthetic-surrogates

Replace detected PHI with realistic, type-matched fake values in OpenMed so clinical notes stay readable and parseable instead of full of [REDACTED] markers. Use when the user wants surrogate names, MRNs, addresses, or dates rather than opaque masks, needs consistent fake identities across a document, must keep notes natural for downstream NLP, or wants to register a custom surrogate generator or provider. Covers deidentify(method="replace", consistent=True, seed=..., locale=...), register_label_generator, register_clinical_provider, and Anonymizer/AnonymizerConfig. Pairs with OpenMed deidentifying-clinical-text and configuring-privacy-policies.

69

Quality

87%

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

75%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.

A well-built, dense skill body: executable quick start with output, a genuinely useful decision table, non-obvious gotchas (surrogate collision with real ID space, global registry mutation, licensing restrictions), and clear cross-skill navigation. It falls just short of top marks on each dimension due to repeated keep_mapping guidance, a placeholder provider class in the advanced example, a verification step that defers to another skill rather than stating a concrete check, and all content living inline.

Suggestions

State the keep_mapping/reversibility guidance once (e.g., in the workflow step) and reference it from the table and edge cases, cutting ~3 repeated explanations.

Make the verification step concrete: give an inline check (e.g., assert generated surrogate values don't match live keys or openmed.CANONICAL_LABELS validation) instead of only pointing to auditing-deidentification-runs, and note what to do when it fails.

Document the Anonymizer.surrogate signature (argument order and types) next to the example, and either define a minimal MyClinicalProvider stub or explicitly note that it is user-supplied, so the advanced block is runnable as written.

DimensionReasoningScore

Conciseness

Efficient and dense: no explaining of concepts Claude already knows (what PHI or Faker is), and the mask-vs-replace comparison table earns its tokens. Minor trimming possible: reversibility via keep_mapping is explained three to four times (table row, workflow step 5, edge case, hand-off section) and the opening paragraph restates the frontmatter description, keeping it just below the 'every token earns its place' bar.

4 / 5

Actionability

The quick start is fully executable and shows expected output, and the custom-label generator example is complete. Minor gaps keep it from a 5: the advanced block calls register_clinical_provider(MyClinicalProvider) with an undefined class justified only by an inline comment, and anon.surrogate("1234567", "ID_NUM") argument order is asserted rather than documented.

4 / 5

Workflow Clarity

A clear six-step sequence (choose method, enable consistency/seed, set locale, register custom generators, keep mapping, verify) with most checkpoints present. Not a 5: the final 'Verify' step delegates to the auditing-deidentification-runs skill rather than giving an explicit, concrete validation command with a fix-and-retry feedback loop.

4 / 5

Progressive Disclosure

Good structure as a standalone single-file skill: well-organized sections (when to use, quick start, comparison, custom providers, workflow, hand-off, edge cases, standards) with sibling-skill references clearly signaled in a dedicated hand-off section. Not a 5: all content is inline — the edge cases/gotchas and standards sections are natural candidates for a one-level-deep reference file to keep SKILL.md leaner, and there are no bundle files organizing the material.

4 / 5

Total

16

/

20

Passed

Description

92%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.

A strong description: third-person, concrete about both the core replacement behavior and the extension APIs, with an explicit multi-condition 'Use when' clause and explicit boundaries against sibling skills. The only weakness is a handful of missing natural synonyms (anonymize, de-identify, pseudonymize) that would broaden trigger coverage.

DimensionReasoningScore

Specificity

Lists multiple concrete actions with comprehensive coverage: 'Replace detected PHI with realistic, type-matched fake values', surrogate 'names, MRNs, addresses, or dates', 'register a custom surrogate generator or provider', plus the specific APIs covered (deidentify(method="replace"...), register_label_generator, register_clinical_provider, Anonymizer/AnonymizerConfig). Coverage of both core replacement and extension surfaces is complete, exceeding the 'minor gaps' of a 4.

5 / 5

Completeness

Clearly answers both questions: the 'what' ('Replace detected PHI with realistic, type-matched fake values... so clinical notes stay readable and parseable') and an explicit 'Use when...' clause with four concrete trigger conditions ('wants surrogate names, MRNs, addresses, or dates rather than opaque masks', 'needs consistent fake identities across a document', 'must keep notes natural for downstream NLP', 'wants to register a custom surrogate generator').

5 / 5

Trigger Term Quality

Good natural-keyword coverage: 'surrogate', 'fake values', 'MRNs', 'opaque masks', 'PHI', 'downstream NLP', 'consistent fake identities'. A few natural terms users would plausibly say are missing — 'anonymize', 'de-identify', 'pseudonymize' — so it falls just short of comprehensive synonym coverage.

4 / 5

Distinctiveness Conflict Risk

Clear niche with minimal conflict risk: it explicitly positions surrogates 'rather than opaque masks' and delineates the boundary with sibling skills via 'Pairs with OpenMed deidentifying-clinical-text and configuring-privacy-policies'. A user asking for readable fake values vs. plain masking would reliably land here.

5 / 5

Total

19

/

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/generating-synthetic-surrogates/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.