CtrlK
BlogDocsLog inGet started
Tessl Logo

extracting-clinical-entities

Run clinical and biomedical named-entity recognition on medical text with OpenMed's analyze_text. Use when the user wants to extract diseases, drugs, anatomy, genes, or other biomedical entities from notes; needs NER output as dict/json/html/csv; wants to filter by confidence, group entities, toggle sentence detection, or save spans to JSONL; or wants the openmed analyze CLI. Pairs with loading-openmed-models and choosing-openmed-models, and runs after deidentifying-clinical-text in a privacy-first pipeline.

72

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

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.

A high-quality, actionable reference for OpenMed NER: executable examples throughout, clear parameter guidance, and a sensible privacy-first pipeline hand-off. The skill is held back only by mild redundancy in the examples and the absence of any progressive split or explicit validation checkpoints.

Suggestions

De-duplicate the output-formats example so it reuses the `note` from Quick start instead of re-importing openmed and redefining the variable.

Add one explicit verification checkpoint for the batch/JSONL path (e.g., confirm each JSONL line is valid JSON and offsets stay within `result.text` before downstream use) to lift workflow_clarity.

If the Edge cases or Key parameters sections grow further, move the parameter reference and gotchas into a references/ file and link to it from SKILL.md to deepen progressive disclosure.

DimensionReasoningScore

Conciseness

Lean and assumes Claude's competence — no basic NER/library explanations — but the output-format example re-imports openmed and redefines `note`, and the Key parameters block repeats the full call signature before re-explaining three params, minor redundancy that could be trimmed.

4 / 5

Actionability

Fully executable, copy-paste-ready code for quick start, every output format, JSONL saving, the CLI, and the deidentify→NER hand-off, with the common cases (dict/json/html/csv, batch JSONL, file input) all concretely covered.

5 / 5

Workflow Clarity

The single analyze_text action is unambiguous and the Hand-off section sequences deidentify→NER→grounding→batch clearly, but there are no explicit validation checkpoints; this is acceptable for read-only NER yet keeps it just short of a 5.

4 / 5

Progressive Disclosure

Well-organized into clearly headed sections (When to use, Quick start, Output formats, Key parameters, CLI, Hand-off, Edge cases, Standards & references) with one-level-deep external links, but with no bundle files everything lives inline in ~190 lines, above the 50-line simple-skill threshold that would justify a 5.

4 / 5

Total

17

/

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 dense, well-constructed description that concretely states capabilities, gives explicit 'Use when' triggers, and clearly delineates its niche and pipeline relationships. The only weak spot is a few parameter-oriented triggers that read more like capability enumeration than natural user language.

Suggestions

Reframe parameter-level triggers ('toggle sentence detection', 'group entities') into user-facing phrasing such as 'merge adjacent entity spans' or 'split long notes into sentences before extraction'.

Consider leading with the single most common user phrase ('extract diseases, drugs, and other biomedical entities from clinical notes') before the parameter list so the primary trigger is unambiguous.

DimensionReasoningScore

Specificity

Lists multiple concrete actions — NER via analyze_text plus dict/json/html/csv output, confidence filtering, entity grouping, sentence detection, JSONL span saving, and the analyze CLI — giving comprehensive coverage rather than vague abstractions.

5 / 5

Completeness

Explicitly answers both 'what' ('Run clinical and biomedical named-entity recognition… with OpenMed's analyze_text') and 'when' ('Use when the user wants to extract…') with concrete trigger phrases.

5 / 5

Trigger Term Quality

Strong natural triggers ('extract diseases, drugs, anatomy, genes… biomedical entities from notes') with format extensions, but several triggers are parameter-level ('toggle sentence detection', 'group entities') rather than phrases a user would naturally say, leaving a few natural variations implied.

4 / 5

Distinctiveness Conflict Risk

Occupies a clear niche (OpenMed clinical/biomedical NER), names its pairing skills (loading-openmed-models, choosing-openmed-models) and pipeline position (after deidentifying-clinical-text), minimizing overlap with other skills.

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.

Validation16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository
maziyarpanahi/openmed
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.