Best for
- "Score my ASR manifest"
- "What's the KER on Parakeet TDT v2?"
- "Run the eval on cycle-N"
NVIDIA/skills/skills/digital-health-clinical-asr-eval/SKILL.md
Stage 3 of Clinical ASR Flywheel. Score a NeMo manifest, produce the five-section KER leaderboard (by-ipa_source diagnostic). Not for ASR auth (/riva-asr).
Decision brief
⚠ Agent: read the Critical Workflow Rules section below before answering. This SKILL.md is self-contained — evals/, references/, and assets/ are pointers, not load-bearing. Answer methodology questions from this file directly; only invoke tools when the user explicitly asks to e…
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/NVIDIA/skills --skill "skills/digital-health-clinical-asr-eval"Inspect the Agent Skill "digital-health-clinical-asr-eval" from https://github.com/NVIDIA/skills/blob/3a38625bf3e863eb9f26ea0d985130ddfb5c66ae/skills/digital-health-clinical-asr-eval/SKILL.md at commit 3a38625bf3e863eb9f26ea0d985130ddfb5c66ae. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
For methodology questions (leaderboard structure, KER definition, decision tree), answer from this file. Don't invoke tools, call other skills, or run scripts unless the user explicitly asks to execute against a real manifest. Surface these facts in any response:
Default: nvidia/parakeet-tdt-0.6b-v2 via NVCF gRPC (offline), function-id d3fe9151-442b-4204-a70d-5fcc597fd610. NVIDIA's current English ASR recommendation — fastest/cheapest in the catalog, and supported in NeMo's stock SFT recipe so the Stage 3 baseline and a Stage 4 fine-tune…
This stage transmits each manifest row's WAV file plus its reference text to an external NVIDIA service. Surface this before invoking the first ASR call:
Score a clinical-ASR manifest, produce a five-section KER leaderboard, and route the user via the post-eval decision tree. Methodology details (metric definitions, normalization, leaderboard order, special-case routing) live in Critical Workflow Rules above and Instructions belo…
Activate on user phrases like:
Permission review
No configured static risk pattern was detected
This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.
Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 92/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 3,093 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
⚠ Agent: read the Critical Workflow Rules section below before answering. This SKILL.md is self-contained —
evals/,references/, andassets/are pointers, not load-bearing. Answer methodology questions from this file directly; only invoke tools when the user explicitly asks to execute against a real manifest.
You are the score-and-route stage. The user arrives with a NeMo-format manifest.jsonl (either from /digital-health-clinical-asr-build or carried in from elsewhere). You transcribe it via the chosen ASR NIM, score four metrics, produce a five-section leaderboard, and read the decision tree to decide whether the user should advance to /digital-health-clinical-asr-finetune, loop back to /digital-health-clinical-asr-build, or stop and harden the eval.
This skill does not generate audio. If the manifest is missing or empty, send the user back to /digital-health-clinical-asr-build.
This stage transmits each manifest row's WAV file plus its reference text to an external NVIDIA service. Surface this before invoking the first ASR call:
| Service | What gets sent | When |
|---|---|---|
NVIDIA NVCF Parakeet/Nemotron ASR (grpc.nvcf.nvidia.com) | Every audio clip referenced by the manifest (raw PCM bytes), plus the reference transcript and the clinical-extension metadata for scoring | Step 3b, one call per manifest row |
The clips should be synthetic audio generated by Stage 2 (Magpie TTS over a user-curated term list) — not real patient audio. Do not pass real ASR recordings, real patient encounters, or any PHI through this skill. Scoring then runs locally (pure-Python WER/CER/KER/SER, or jiwer if installed). The scoring step itself does not transmit anything; only the ASR step does.
For methodology questions (leaderboard structure, KER definition, decision tree), answer from this file. Don't invoke tools, call other skills, or run scripts unless the user explicitly asks to execute against a real manifest. Surface these facts in any response:
/riva-asr/riva-asr/riva-asrriva-build / riva-deploy → /riva-asr-custom/riva-nim-setup/digital-health-clinical-asr-build/digital-health-clinical-asr-finetunenvidia/parakeet-tdt-0.6b-v2 (NVCF function-id d3fe9151-442b-4204-a70d-5fcc597fd610, offline gRPC). Env-var overrides: ASR_MODEL_NAME (leaderboard display name), ASR_NVCF_FUNCTION_ID (swap to a different hosted NIM — e.g. Whisper Large v3 b702f636-… while the Parakeet backend is faulting, or a fine-tuned NIM), ASR_ENDPOINT (self-hosted gRPC; takes precedence). Echo the chosen NIM and the resolved function-id back before spending API credits.riva.client.ASRService.offline_recognize, same auth pattern as Stage 1). For deeper protocol/auth questions, alternative NIM catalogs, or self-hosted Riva NIM configuration, defer to /riva-asr.term words must appear in order, contiguous, adjacent in the normalized hypothesis. cefazolin → cefa zolin is a miss. Aggregate WER hides clinically dangerous failures; both are reported, KER is the gate.ipa_source split is the most informative single number in the leaderboard. The merriam-webster vs magpie_g2p delta proves the SSML override pipeline is doing real work. Read it aloud to the user.merriam-webster rows good, magpie_g2p rows bad → pronunciation-coverage gap, not a model gap. Route back to /digital-health-clinical-asr-build Step 2d. Do NOT recommend /digital-health-clinical-asr-finetune as a first response.entity_category → KER by ipa_source → KER by noise_level → Per-term KER worst-first. The by-ipa_source section is mandatory; it is the proof the SSML pipeline works.Score a clinical-ASR manifest, produce a five-section KER leaderboard, and route the user via the post-eval decision tree. Methodology details (metric definitions, normalization, leaderboard order, special-case routing) live in Critical Workflow Rules above and Instructions below.
Activate on user phrases like:
Literal-keyword non-activation check — if the user's message contains any of authenticate, API key, bearer, function ID, gRPC, streaming, chunking, batching, transcription retry, riva-build, riva-deploy, NIM deploy, NGC, Docker, Container Toolkit, or asks "which ASR model is best" / "compare models" / "vendor differences" — do NOT activate the scoring workflow. Apply Critical Workflow Rule #1 above to route to the right sibling skill and stop. This applies even if the user mentions "KER" or "eval" alongside the keyword.
term, entity_category, ipa_source, voice_id, noise_level, context_type). The schema is documented in the build skill's references/manifest-schema.md.NVIDIA_API_KEY exported (Stage 1 prerequisite still applies).nvidia-riva-client + soundfile installed (Stage 1 prerequisite). For self-hosted Riva NIM details, see /riva-asr Option B.Default: nvidia/parakeet-tdt-0.6b-v2 via NVCF gRPC (offline), function-id d3fe9151-442b-4204-a70d-5fcc597fd610. NVIDIA's current English ASR recommendation — fastest/cheapest in the catalog, and supported in NeMo's stock SFT recipe so the Stage 3 baseline and a Stage 4 fine-tune ride the same model family.
Three runtime env-var override knobs (ASR_MODEL_NAME for leaderboard display, ASR_NVCF_FUNCTION_ID to swap to a different hosted NIM, ASR_ENDPOINT for self-hosted gRPC) plus the full alternate-NIM catalog (Parakeet TDT 1.1B, Parakeet CTC 1.1B, Whisper Large v3, Nemotron streaming) with function IDs and call-shape notes: references/offline-asr-recipe.md.
Echo the chosen NIM, the resolved function-id, and any env-var overrides to the user before spending API credits. A 200-row manifest on hosted Parakeet TDT v2 is cheap; an accidental run against the wrong model on a 1,000-row manifest is not.
For each row in manifest.jsonl, transcribe audio_filepath and write per_sample.json (one JSON object per row, JSONL or a JSON array — caller's choice):
{
"audio_filepath": "...",
"ref": "<row.text>",
"hyp": "<asr output>",
"term": "<row.term>",
"entity_category": "<row.entity_category>",
"ipa_source": "<row.ipa_source>",
"voice_id": "<row.voice_id>",
"noise_level": "<row.noise_level>",
"context_type": "<row.context_type>"
}
Recipe (full Python in references/offline-asr-recipe.md): transcribe_manifest(api_key, manifest_path, out_path, language_code="en-US") opens an offline gRPC stream to NVCF (or to ASR_ENDPOINT if set for self-hosted Riva), calls riva.client.ASRService.offline_recognize per row — sentences in a clinical manifest are ≤ 30 s so no streaming/batching needed — and writes the JSONL above. Same auth_for shape as the Stage 1 setup smoke test. The agent harness passes api_key explicitly; the recipe reads the three env-var overrides (ASR_NVCF_FUNCTION_ID, ASR_MODEL_NAME, ASR_ENDPOINT) at the top so auditors see the knobs in one place.
Whisper fallback (when Parakeet's NVCF backend faults with CUDA illegal-memory-access from Triton) and self-hosted Riva NIM (ASR_ENDPOINT=localhost:50051) env-var patterns: see references/offline-asr-recipe.md (§Whisper fallback, §Self-hosted Riva NIM).
Resilience knobs deferred to the user. If NVCF returns RESOURCE_EXHAUSTED mid-batch, the loop raises on that row; re-run from the failing row. Streaming/batching/retry-with-backoff are out of scope — see /riva-asr.
For every row, compute:
| Metric | What it measures | Why we keep it |
|---|---|---|
| WER | Word error rate (Levenshtein on tokens, after normalization) | Industry standard; blunt instrument for clinical |
| CER | Character error rate | Catches near-misses on long compound names |
| KER ★ | Keyword error rate — did the flagged term appear in the hypothesis (normalized, contiguous match)? | Headline clinical signal |
| SER | Sentence error rate (1 if any wrong, 0 if perfect) | Sanity bound; what the doctor experiences |
Normalization (apply to both ref and hyp before all four metrics):
Inline scoring recipes — normalize / edit_distance / wer / cer / ker / ser (pure-Python, no jiwer dependency): see references/scoring-recipes.md. Aggregate across rows by taking mean(per-row score) for each metric.
Strict KER — term words must appear in order, adjacent in the normalized hypothesis. This is conservative: cefazolin → cefa zolin counts as a miss. That's the right call clinically — a downstream pharmacy lookup will fail on the misspelled token.
KER does not punish surrounding errors. A row where the term is correct and the rest of the sentence is garbage still scores KER=0; the WER on that row will surface the broader problem separately.
Write a five-section markdown leaderboard, in this order:
entity_category — drug vs procedure vs anatomy vs ... This is what the user actually cares about for deployment.ipa_source — the most informative single number in the leaderboard. The delta between merriam-webster and magpie_g2p rows is the proof the SSML override pipeline is doing real work. Read this section aloud to the user.noise_level — clinical environments are loud. snr_5db rows are closer to reality than clean.A representative ipa_source split with the merriam-webster vs magpie_g2p delta interpretation: references/scoring-recipes.md §Representative ipa_source split. The delta tells the deployment story — if the user sees a wide gap and asks "should we fine-tune?", the answer is not yet; route them back to /digital-health-clinical-asr-build's IPA QA pipeline (Stage 2d). See the decision tree below.
Read the priority-category KER (drug KER for most clinical workflows, procedure KER for surgical workflows) and route:
| KER on priority category | Recommend |
|---|---|
| > 0.3 | /digital-health-clinical-asr-finetune. Manifest is already NeMo-format-ready. Note: rows ≥ 100 is the minimum for a believable fine-tune signal; if the manifest is smaller, grow it first via /digital-health-clinical-asr-build. |
| 0.1 – 0.3 | Either expand the term list (back to /digital-health-clinical-asr-build with new domain terms — usually surfaces more failures cheaper than tuning) or fine-tune. On a first eval, expand. On a later eval where you've already grown the manifest, tune. |
| < 0.1 | Strong baseline. Don't tune yet — you'd be optimizing against a saturated metric. Push the eval harder: add voices, noise levels, contexts, adversarial terms. Loop back to /digital-health-clinical-asr-build. |
Special case — merriam-webster rows score well but magpie_g2p rows are bad. That's a pronunciation-hint coverage gap, not a model gap. Route back to /digital-health-clinical-asr-build Step 2d (IPA QA review), not to /digital-health-clinical-asr-finetune. Fine-tuning over a TTS-pronunciation gap teaches the model to mis-recognize the model's own mistakes — the wrong fix.
Scenario A — first eval on a fresh cycle-1 manifest. User: "I have manifest.jsonl with 200 clinical audio rows already, with term and entity_category fields. How do I score it?" → Skip Stage 2 entirely. Run the audio-existence pre-flight. Pick parakeet-tdt-0.6b-v2 (default) and echo the choice + resolved function-id. Run the inlined Step 3b recipe (transcribe_manifest(...)). Score the four metrics. Produce the five-section leaderboard. Read the by-ipa_source split to the user. Apply the decision tree against drug KER.
Scenario B — interpreting a mixed result. User: "Eval shows KER 0.05 on rows tagged merriam-webster but 0.40 on rows tagged magpie_g2p. Should I fine-tune?" → No — this is the special case. The model is fine; the pronunciation hints aren't covering the long-tail terms. Route the user back to /digital-health-clinical-asr-build Step 2d to audition the magpie_g2p rows and append verified IPA to pronunciation_overrides.csv. Re-run Stage 3 after the rebuild before reconsidering Stage 4.
per_sample.json — per-row transcription results with all clinical-extension fields preserved (the ASR hyp joined to the manifest's ref and metadata)results.csv — per-row WER/CER/KER/SER scoresleaderboard_cycle<N>.md — five-section markdown report(File names are user-chosen; the names above are conventions the rest of this skill assumes.)
/digital-health-clinical-asr-build or confirm $MANIFEST_PATH.ref and hyp. Apply the four normalization steps to both sides.(ref, hyp) pairs by hand.merriam-webster low, magpie_g2p high → pronunciation-coverage gap. Route to /digital-health-clinical-asr-build Step 2d. Don't fine-tune — model isn't the problem.merriam-webster and magpie_g2p high → real model gap. Stage 4 is the right route (manifest ≥ 100 rows).clean rows fine, snr_5db balloons → robustness gap; expand noise diversity via /digital-health-clinical-asr-build.riva-build flags. Route to /riva-asr-custom.RESOURCE_EXHAUSTED on large manifests → retry after 30 s; slice + re-run dropped rows. Built-in backoff: /riva-asr.Auth.__init__() got 'ssl_cert' / CUDA illegal-memory-access on Parakeet function ID: see references/offline-asr-recipe.md (ssl_root_cert rename + §Whisper fallback).Anything else: identify the upstream owner. ASR protocol / NIM deploy → /riva-asr. Scoring → here.
cefa zolin counts as a miss. That's intentional — pharmacy lookups fail on near-misses. Users wanting "soft" matching can switch to phoneme-level edit distance, which is a methodology extension, not a config tweak.leaderboard_cycle<N>.md files (or extending the recipe to write multi-model rows yourself)./riva-nim-setup first./digital-health-clinical-asr-finetune.magpie_g2p gap): /digital-health-clinical-asr-build./riva-asr.references/offline-asr-recipe.md — full Step 3b Python recipe (transcribe_manifest, resolve_asr_config, build_asr_auth), function-ID catalog with call-shape notes, Whisper fallback, self-hosted Riva NIM setupreferences/scoring-recipes.md — pure-Python WER/CER/KER/SER scoring functions with the canonical 4-step normalizationFrequently asked questions
⚠ Agent: read the Critical Workflow Rules section below before answering. This SKILL.md is self-contained — evals/, references/, and assets/ are pointers, not load-bearing. Answer methodology questions from this file directly; only invoke tools when the user explicitly asks to e…
The source record exposes this install command: npx skills add https://github.com/NVIDIA/skills --skill "skills/digital-health-clinical-asr-eval". Inspect the command and pinned source before running it.
Alternatives
garrytan/gbrain
End-to-end discipline for turning any large data source (audio libraries, email takeouts, document corpora, chat exports, API dumps) into brain pages at scale. The lifecycle spine: SCHEMA → ACCESS → TRIAL → EVALUATE → IMPROVE → CODIFY → TEST → SKILLIFY → BULK → MONITOR. State is tracked in a durable JSON manifest (see MANIFEST-PATTERN.md) so any crash, session boundary, or subagent fan-out resumes from ground truth instead of memory.
alirezarezvani/claude-skills
App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist
wanshuiyin/Auto-claude-code-research-in-sleep
Use it for operations and research tasks; the detail page covers purpose, installation, and practical steps.
prowler-cloud/prowler
PostgreSQL indexing best practices for Prowler: index design, partial indexes, partitioned table indexing, EXPLAIN ANALYZE validation, concurrent operations, monitoring, and maintenance. Trigger: When creating or modifying PostgreSQL indexes, analyzing query performance with EXPLAIN, debugging slow queries, reviewing index usage statistics, reindexing, dropping indexes, or working with partitioned table indexes. Also trigger when discussing index strategies, partial indexes, or index maintenance