Agent skill

OpenMed Model Card Writer

by maziyarpanahi in maziyarpanahi/openmed

Fills in a model card for an OpenMed clinical NER or de-identification model from its evaluation reports: intended use, metrics, subgroups and limitations.

Apache-2.0Auto-check passedAI & LLM Engineering

Install OpenMed Model Card Writer

skills CLI
$ npx skills add maziyarpanahi/openmed --skill authoring-model-cards -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install maziyarpanahi/openmed authoring-model-cards --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/maziyarpanahi/openmed.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/authoring-model-cards .claude/skills/authoring-model-cards && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
authoring-model-cards
GitHub stars
5.5k
Token cost
~1.8k tokens
SKILL.md length
634 words
Files
2 (incl. references)
Skills in repo
74
Repo updated
First seen
Licence
Apache-2.0

At a glance

Fills in a model card for an OpenMed clinical NER or de-identification model from its evaluation reports: intended use, metrics, subgroups and limitations.

  • Works in 7 steps: Gather artifacts. Gate report, fairness… → Fill model details from the GateReport… → Write intended use narrowly. Name the… → …
  • Publishing or updating an OpenMed model that needs a card
  • SKILL.md covers When to use this skill, Card sections (Mitchell et…, Quick start — fill the card… and Workflow, plus 3 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

A model card here is built from evaluation artifacts rather than written from memory, so every number can be traced. The skill takes OpenMed's gate report, `fairness_report` and `error_report` and maps them to card sections: model details, intended use, out-of-scope use, metrics, subgroup analysis, limitations, and caveats that include a medical-device disclaimer.

Metrics cover entity-level precision, recall and F1 and, for de-identification, residual leakage with per-label recall floors and the gate decision. The fairness and error reports hold offsets and hashes instead of plaintext patient data, so their output is described as safe to paste into a public card. The evaluations must be run first with the companion skills; this one only documents their results. A reference file maps each section to its source.

When your agent uses it

  • Publishing or updating an OpenMed model that needs a card
  • Turning eval artifacts into intended-use, metrics and limitations sections
  • Preparing a transparency document for a clinical AI governance review

Example prompts

  • “Write the model card for our de-identification model from the latest gate, fairness and error reports.”
  • “Update the limitations section of the card using the new error_report output.”
  • “Add the subgroup recall table from fairness_report to the model card and flag groups with no data.”

Requirements

  • OpenMed evaluation outputs: a gate report, a fairness report and an error report
  • The `openmed.eval` Python package

Workflow steps

7 steps, taken from the first numbered list in SKILL.md.

  1. Gather artifacts. Gate report, fairness report, error report — all from a
  2. Fill model details from the GateReport identity fields so the card,
  3. Write intended use narrowly. Name the clinical task, language(s), and the
  4. State out-of-scope and the disclaimer plainly (see template below).
  5. Report metrics with their floors. For de-id, lead with leakage and the
  6. Report subgroups honestly, including the documentation gap: if race/
  7. List limitations from real errors, not boilerplate — cite the confusion

What it can do on your machine

Read from SKILL.md and the folder at commit 34d7b8c. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are python).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • arxiv.org
    • huggingface.co
    • doi.org
    • fda.gov

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

OpenMed Model Card Writer loads about 1.8k tokens when it runs, and up to ~2.5k if it reads all its reference files. Until then it costs about 162 tokens; SKILL.md has 634 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~162
When it runs · the whole SKILL.md, loaded when a task matches
~1.8k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~2.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from maziyarpanahi/openmed at commit 34d7b8c, republished under its Apache-2.0 licence (© maziyarpanahi). 634 words, ~1,821 tokens.

Download SKILL.mdSave it as .claude/skills/authoring-model-cards/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
authoring-model-cards
description
Generate a model card for an OpenMed clinical NER or de-identification model documenting intended use, quantitative metrics, subgroup performance, limitations, and a medical-device disclaimer for clinical AI governance. Use when the user wants to write or update a model card, a README model section, or governance documentation, or to turn OpenMed eval outputs (release gate report, fairness_report, error_report) into the card's metrics and limitations sections. Trigger on "model card", "intended use", "model documentation", "governance", "limitations section", "datasheet", or "FDA/ONC transparency" for an OpenMed model.
license
Apache-2.0
metadata.project
OpenMed
metadata.category
evaluation-quality
metadata.pairs
after
metadata.version
1.0

Authoring Model Cards

A model card is the honest spec sheet for a model: what it's for, how well it works, where it breaks, and who it might fail. For clinical models this is governance-critical — an undocumented de-id model is one nobody can sign off on. This skill fills a model card directly from OpenMed eval outputs so the numbers are reproducible, not aspirational.

When to use this skill

  • You're publishing or updating an OpenMed model and need its card.
  • You have eval artifacts (GateReport, fairness_report, error_report) and need to turn them into intended-use, metrics, and limitations sections.
  • A clinical AI governance / model-risk review needs a transparency document.

Run the evals first (see evaluating-with-leakage-gates, benchmarking-clinical-ner, auditing-subgroup-fairness); this skill documents their results — it does not generate the numbers.

Card sections (Mitchell et al., + clinical extensions)

See references/model-card-sections.md for the full section-to-source map. The load-bearing sections for an OpenMed model:

  • Model details — repo id, family, tier, format, params, milestone, license (Apache-2.0). Pull from the GateReport identity fields.
  • Intended use — the clinical task and the deployment envelope.
  • Out-of-scope / misuse — explicitly: not a medical device; not for autonomous clinical decisions; de-id is verified, not assumed.
  • Metrics — entity-level P/R/F1 and, for de-id, residual leakage + per-label recall floors and the gate decision.
  • Quantitative analysis (subgroups) — per-group leakage/recall from fairness_report, including which groups lack data.
  • Limitations — error patterns from error_report; calibration assumptions.
  • Caveats & disclaimer — the medical-device disclaimer.

Quick start — fill the card from eval outputs

python
from openmed.eval import (
    run_suite, ReleaseGate, fairness_report, error_report,
)

report = run_suite("eval/gold/test.json", suite="golden",
                   model_name="OpenMed/Privacy-PII-Detection", device="cpu",
                   metadata={"family": "PII", "tier": "base",
                             "policy": "hipaa_safe_harbor"})

gate = ReleaseGate(milestone="v1.6", policy="hipaa_safe_harbor").evaluate(report)
fair = fairness_report("OpenMed/Privacy-PII-Detection", "golden")
errs = error_report("OpenMed/Privacy-PII-Detection", "eval/gold/test.json")

card = {
    "model_details": {
        "repo_id": gate.repo_id, "family": gate.family, "tier": gate.tier,
        "format": gate.format, "license": "Apache-2.0",
    },
    "metrics": {
        "exact_span_f1": report.metrics["exact_span_f1"]["f1"],
        "residual_leakage_rate": gate.residual_leakage_rate,
        "critical_leakage_count": gate.critical_leakage_count,
        "per_label_recall": dict(gate.per_label_recall),
        "release_decision": gate.decision,            # RELEASABLE / QUARANTINED
    },
    "subgroup_analysis": fair.to_dict(),              # per-group leakage/recall
    "limitations": errs.to_dict()["confusion_matrix"],
}
# Render `card` into Markdown front matter + body (or the HF card template).

error_report and fairness_report carry no plaintext PHI (offsets + hashes), so their output is safe to paste into a public card.

Workflow

  1. Gather artifacts. Gate report, fairness report, error report — all from a pinned model + synthetic eval set.
  2. Fill model details from the GateReport identity fields so the card, models.jsonl, and the README cannot drift (the gate's manifest_coherence and model_card checks enforce this).
  3. Write intended use narrowly. Name the clinical task, language(s), and the deployment envelope. Over-broad intended-use is the most common card failure.
  4. State out-of-scope and the disclaimer plainly (see template below).
  5. Report metrics with their floors. For de-id, lead with leakage and the gate decision, not F1.
  6. Report subgroups honestly, including the documentation gap: if race/ ethnicity isn't available, say so rather than implying parity.
  7. List limitations from real errors, not boilerplate — cite the confusion matrix's worst cells.
Show full SKILL.md (250 more words)Show less
Disclaimer block (paste & adapt)

This model assists clinical text processing and is not a medical device. It does not make autonomous clinical decisions. De-identification output must be independently verified before any data is shared; residual PHI risk is never zero. Validate on your own population before deployment.

Hand-off to / from OpenMed

  • From evaluating-with-leakage-gates (GateReport), benchmarking-clinical-ner (error_report), and auditing-subgroup-fairness (fairness_report): these are the card's evidence.
  • To building-with-openmed / models.jsonl: keep card front matter (license, task, languages) coherent with the manifest — the gate checks it.
  • Pairs with gating-deid-leakage: cite the green gate as the card's release evidence.

Edge cases & gotchas

  • Don't claim numbers you can't reproduce. Every metric in the card should trace to an eval artifact and a pinned eval-set hash.
  • Intended use ≠ capability. Document the supported envelope; mark everything else out-of-scope.
  • Subgroup silence is a finding. Omitting race because it wasn't collected is itself a limitation to state — don't let absence read as equity.
  • Card/manifest drift fails the gate. License/task/language mismatches between the card and models.jsonl trip manifest_coherence.
  • No raw PHI examples. Use the offset/hash examples from error_report; never paste real patient strings as "qualitative examples".
  • Quantized variants need their own line. Report INT8/INT4 recall deltas (G4) per format; don't reuse the fp32 numbers.

Standards & references

© maziyarpanahi, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in skills/authoring-model-cards of maziyarpanahi/openmed.

  • SKILL.md
  • references/model-card-sections.md

Open the folder on GitHubat commit 34d7b8c

Compare with similar skills

OpenMed Model Card Writer next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

OpenMed Model Card Writer compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
OpenMed Model Card Writer this skillmaziyarpanahi/openmed5.5k—~1.8kAutomated safety check: PassApache-2.0
Hugging Face TokenizersOrchestra-Research/AI-Research-SKILLs13k6 repos~3.4kAutomated safety check: PassMIT
Sentence Transformers EmbeddingsOrchestra-Research/AI-Research-SKILLs13k2 repos~1.6kAutomated safety check: PassMIT
SentencePiece TokenizerOrchestra-Research/AI-Research-SKILLs13k2 repos~1.4kAutomated safety check: NotesMIT
Hugging Face Transformers Usagedavila7/claude-code-templates33k11 repos~1.2kAutomated safety check: PassMIT
Cohere V2 Pythonaiskillstore/marketplace433—~4.2kAutomated safety check: PassNone

Similar skills

  • Hugging Face Tokenizers

    Orchestra-Research/AI-Research-SKILLs

    Shows how to load, train and use fast Hugging Face tokenizers, with BPE, WordPiece and Unigram models, padding, truncation and alignment tracking.

    13k GitHub starsUsed in 6 repos~3.4k tokens
    AI & LLM EngineeringAuto-check passed
  • Sentence Transformers Embeddings

    Orchestra-Research/AI-Research-SKILLs

    Generates text embeddings locally with the sentence-transformers library for RAG, semantic search, clustering and similarity, with model picks for general, multilingual and legal text.

    13k GitHub starsUsed in 2 repos~1.6k tokens
    AI & LLM EngineeringAuto-check passed
  • SentencePiece Tokenizer

    Orchestra-Research/AI-Research-SKILLs

    Trains and uses SentencePiece tokenizers on raw text, with BPE or Unigram models, for multilingual and CJK projects that need a reproducible vocabulary.

    13k GitHub starsUsed in 2 repos~1.4k tokens
    AI & LLM EngineeringAuto-check: notes
  • Hugging Face Transformers Usage

    davila7/claude-code-templates

    Loads pre-trained Hugging Face Transformers models for text, vision and audio tasks, runs inference with pipelines and fine-tunes on custom datasets.

    33k GitHub starsUsed in 11 repos~1.2k tokens
    AI & LLM EngineeringAuto-check passed
  • Cohere V2 Python

    aiskillstore/marketplace

    Master Cohere v2 Chat API with Python, specializing in entity extraction using JSON Schema mode for structured outputs.

    433 GitHub stars~4.2k tokensUpdated yesterday
    AI & LLM EngineeringAuto-check passed
  • Deepgram Text Intelligence

    deepgram/deepgram-python-sdk

    Uses the Deepgram Python SDK's Read API to analyze text for sentiment, summaries, topics and intents with client.read.v1.text.analyze, from raw text or a hosted URL.

    469 GitHub stars~1.4k tokensUpdated 2 days ago
    AI & LLM EngineeringAuto-check passed

More from maziyarpanahi/openmed

All 74 skills in this repo
  • Checks OpenMed de-identified clinical text against the 18 HIPAA Safe Harbor identifier categories and reports gaps and residual re-identification risk.

    5.5k GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • Walks a data pipeline against the HIPAA Privacy and Security Rule checklist and produces a gap report before it processes patient data.

    5.5k GitHub stars~2k tokensUpdated today
    Auto-check passed
  • ICD-10 Coding Assistant

    maziyarpanahi/openmed

    Suggests candidate ICD-10-CM diagnosis and ICD-10-PCS procedure codes for clinical text extracted by OpenMed, with rationale for a certified coder to review.

    5.5k GitHub stars~2k tokensUpdated today
    Auto-check passed
  • OpenMed ETL to OMOP CDM

    maziyarpanahi/openmed

    Maps OpenMed-extracted, terminology-coded conditions, drugs and measurements into OMOP CDM v5.4 tables for OHDSI and ATLAS analytics.

    5.5k GitHub stars~1.9k tokensUpdated today
    Auto-check passed
  • Extracting SDOH and Z-Codes

    maziyarpanahi/openmed

    Finds social risks such as housing instability or food insecurity in clinical notes and proposes matching ICD-10-CM Z-codes for a coder to confirm.

    5.5k GitHub stars~1.9k tokensUpdated today
    Auto-check passed
  • Clinical Document Ingestion

    maziyarpanahi/openmed

    Converts scanned faxes, images, CSV/TSV exports and C-CDA XML into clean text on-device, ready for OpenMed de-identification and named-entity recognition.

    5.5k GitHub stars~2k tokensUpdated today
    Auto-check passed

Works with

Questions about OpenMed Model Card Writer

What does OpenMed Model Card Writer do?

Fills in a model card for an OpenMed clinical NER or de-identification model from its evaluation reports: intended use, metrics, subgroups and limitations. A model card here is built from evaluation artifacts rather than written from memory, so every number can be traced. The skill takes OpenMed's gate report, `fairness_report` and `error_report` and maps them to card sections: model details, intended use, out-of-scope use, metrics, subgroup analysis, limitations, and caveats that include a medical-device disclaimer.

When should I use OpenMed Model Card Writer?

OpenMed Model Card Writer fits situations like: publishing or updating an OpenMed model that needs a card; turning eval artifacts into intended-use, metrics and limitations sections; preparing a transparency document for a clinical AI governance review.

How do I install OpenMed Model Card Writer in Claude Code?

Run `npx skills add maziyarpanahi/openmed --skill authoring-model-cards -a claude-code`. Or copy the skill folder (skills/authoring-model-cards in maziyarpanahi/openmed) into .claude/skills/authoring-model-cards in your project. Claude Code loads it when a task matches its description.

How do I install OpenMed Model Card Writer in Codex?

Run `npx skills add maziyarpanahi/openmed --skill authoring-model-cards -a codex`. Or copy the skill folder (skills/authoring-model-cards in maziyarpanahi/openmed) into .agents/skills/authoring-model-cards in your project. Codex loads it when a task matches its description.

Can I use OpenMed Model Card Writer in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add maziyarpanahi/openmed --skill authoring-model-cards -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/authoring-model-cards, .gemini/skills/authoring-model-cards, .github/skills/authoring-model-cards and .opencode/skills/authoring-model-cards in your project.

What does OpenMed Model Card Writer need to run?

SKILL.md names no scripts, command-line tools or credentials: OpenMed Model Card Writer is instructions for the agent only. Our summary lists: OpenMed evaluation outputs: a gate report, a fairness report and an error report; The `openmed.eval` Python package.

Does OpenMed Model Card Writer access the network?

SKILL.md names 4 domains. As links in the text: arxiv.org, huggingface.co, doi.org and fda.gov. This is read from the text; nothing was executed.

Is OpenMed Model Card Writer safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does OpenMed Model Card Writer use?

OpenMed Model Card Writer is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does OpenMed Model Card Writer use?

About 1.8k tokens (SKILL.md is roughly 7.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 647 tokens, read only when the agent opens those files.

What are the alternatives to OpenMed Model Card Writer?

Skills that share tags, products or a category with OpenMed Model Card Writer: Hugging Face Tokenizers (Orchestra-Research/AI-Research-SKILLs, 13k stars), Sentence Transformers Embeddings (Orchestra-Research/AI-Research-SKILLs, 13k stars), SentencePiece Tokenizer (Orchestra-Research/AI-Research-SKILLs, 13k stars) and Hugging Face Transformers Usage (davila7/claude-code-templates, 33k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains OpenMed Model Card Writer?

maziyarpanahi (a GitHub user) maintains it in maziyarpanahi/openmed, which has 5,506 GitHub stars. The repository holds 74 skills in this directory. The repository was last updated on October 11, 2026.

Source: maziyarpanahi/openmed on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.