Dicom Series Preflight
NVIDIAOfficialCreated by NVIDIA MedTech Team
- Skill
- Review and audit
- Science and research
- Apache-2.0
- Medium risk
- Has scripts
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
The DICOM Series Preflight skill provides a mechanism to inspect DICOM series directories by analyzing headers without decoding pixel data. It generates a structured JSON output containing an inventory of the series, orientation axcodes, potential PHI flags, and a verdict of pass, warn, or fail. This tool is intended for pre-processing validation to ensure data quality before conversion or inference tasks, and it is explicitly not designed for clinical clearance, de-identification, or production ingestion.
What it does
- Scans a single DICOM series directory for header-based validation.
- Generates a JSON report including inventory, orientation, and findings.
- Assigns a preflight verdict of pass, warn, or fail.
- Identifies potential PHI flags within the headers.
- Provides integration with trusted verifier workflows.
When to use it
- Before running inference or conversion on DICOM data.
- When you need to verify series orientation and header integrity.
- To perform rapid quality checks on medical imaging datasets.
- As a gatekeeper in automated medical imaging pipelines.
Advantages
- Fast execution due to header-only analysis without pixel decoding.
- Standardized output format for downstream automated processing.
- Helps identify potential issues early in the data pipeline.
- Integrates with existing workflow automation tools.
Usage examples
- “Run a preflight check on the DICOM series located in /data/dicom/series_01.”
- The agent executes the preflight script on the specified directory and returns a JSON report containing the series inventory, orientation axcodes, and a pass/warn/fail verdict.
- “Validate the DICOM series in /data/scan_01 using the trusted preflight verifier.”
- The agent runs the preflight script and pipes the output through the trusted verifier to confirm the data meets the required engineering invariants.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/nvidia/dicom-series-preflight/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip dicom-series-preflight.zip -d .agents/skills
Documentation by NVIDIA MedTech Team
DICOM Series Preflight
Purpose
Used for header-only preflight of one DICOM series folder before conversion or inference. Not for de-identification or clinical clearance.
Use the wrapper exactly as documented; do not replace the upstream entrypoint with a handwritten implementation.
Manifest I/O: inputs are
dicom_dir; outputs arepreflight_json.
Instructions
Read
skill_manifest.yamlbefore changing arguments, side effects, or validation gates.Run
scripts/preflight_series.pythrough the documented command below; keep outputs under a caller-provided run directory.If a host agent exposes
run_script, userun_script("scripts/preflight_series.py", args=[...]); otherwise run the Bash/Python command shown below.Check the emitted JSON and paired verifier guidance before treating the run as evidence.
Available Scripts
| Script | Purpose | Arguments |
|---|---|---|
scripts/preflight_series.py | Primary entrypoint declared by skill_manifest.yaml. | PATH_TO_DICOM_DIR |
Prerequisites
Runtime requirements: Python packages listed in
runtime.side_effects.pip_packages.NiBabel 5.4 or newer is required so extreme-oblique axes remain labeled consistently across reorientation.
Run commands from the repository root unless an existing section below says otherwise.
Limitations
Header-only; does not decode pixel data or detect burnt-in PHI.
Canonical orientation gate assumes LPS-derived CT axcodes L,P,S.
Compressed transfer syntax and multi-frame instances are warned, not decoded.
Single-directory scan; does not reconcile multiple studies in one tree.
Not for clinical deployment, regulatory de-identification, autonomous diagnosis, production ingestion without a vetted converter.
Troubleshooting
| Error | Cause | Fix |
|---|---|---|
| Missing dependency or import error | Runtime package drift from skill_manifest.yaml. | Install the packages declared in the manifest or use the documented setup command. |
| Empty or schema-invalid output | Wrong input path, unsupported modality, or upstream failure. | Re-run with a known fixture and inspect the wrapper JSON plus stderr. |
| Validation gate failure | Output violated a declared engineering invariant. | Keep the failed evidence pack and use the gate message to repair inputs or wrapper code. |
Scans a DICOM directory (one series per folder) without decoding pixels.
Emits JSON with inventory, orientation axcodes, PHI flags, findings, and a
preflight.verdict of pass, warn, or fail.
python scripts/preflight_series.py PATH_TO_DICOM_DIRPair with verifiers/dicom_preflight_quality_v1 for a trusted preflight pack:
make run-trusted SKILL=dicom_series_preflight \
FIXTURE=skills/dicom-series-preflight/fixtures/clean_no_phi \
OUT=runs/dicom_preflight_demoFlagship workflow:
make run-workflow \
WORKFLOW=examples/workflows/dicom_preflight_gate.yaml \
WORKFLOW_INPUT=skills/dicom-series-preflight/fixtures/clean_no_phi \
WORKFLOW_OUT=runs/dicom_preflight_gateNot for de-identification, private-tag review, or clinical clearance.
Files
- ATTRIBUTION.mdAdded by AutoGineer937 B
- BENCHMARK.md7.4 KiB
- LICENSELicence file added by AutoGineer11.2 KiB
- SKILL.md3.4 KiB
- evals/evals.json2.5 KiB
- fixtures/generate_fixtures.pyScript2.0 KiB
- scripts/preflight_series.pyScript12.6 KiB
- skill-card.md4.1 KiB
- skill.oms.sig5.7 KiB
- skill_manifest.yaml3.6 KiB
- tests/test_preflight_series.pyScript2.0 KiB
- validators/output_schema.json1.5 KiB
BENCHMARK.md
Skill Benchmark: dicom-series-preflight
✅ Overall verdict: PASS — Recommended for publication
Publication Recommendation
Recommended for publication based on the completed evaluation evidence in this report.
Evaluation Metadata
Skill:
dicom-series-preflightEvaluation date: 2026-09-14
Evaluator version:
1.5.6Agents: Claude Code (
aws/anthropic/bedrock-claude-opus-4-8), Codex (openai/openai/gpt-5.5)Tasks: 3 evaluation tasks (3 positive)
Dataset digest:
sha256:62a39511ef1fe2d4954937d2a8a22b8e447484afd22c4b0ef6cf8e2f26b337ff(skill-evaluator-dataset-snapshot/1)Attempts per task: 3
Environment:
k8s-sandboxTier 2 evidence: required for publication
Tier 3 evidence: required for publication
Each task attempt ran in its own isolated sandbox pod.
What This Report Answers
The three-tier evaluation checks whether the skill:
is safe to use;
produces correct answers;
is discovered and activated when needed;
helps the agent complete the user's goal and expected workflow; and
avoids wasted skill and tool usage.
Results at a Glance
| Measure | Claude Code (Baseline → Skill Uplift) | Codex (Baseline → Skill Uplift) |
|---|---|---|
| Overall | 75.3% — baseline ran, but no comparable score was available; uplift unavailable | 71.6% — baseline ran, but no comparable score was available; uplift unavailable |
| Security | 100.0% → 66.7% (-33.3 points) | 100.0% → 66.7% (-33.3 points) |
| Correctness | 2.9% → 80.0% (+77.1 points) | 2.5% → 80.0% (+77.5 points) |
| Discoverability | 88.3% — baseline ran, but no comparable score was available; uplift unavailable | 81.7% — baseline ran, but no comparable score was available; uplift unavailable |
| Effectiveness | 13.6% → 56.1% (+42.5 points) | 17.5% → 49.7% (+32.2 points) |
| Efficiency | 85.2% — baseline ran, but no comparable score was available; uplift unavailable | 79.8% — baseline ran, but no comparable score was available; uplift unavailable |
How to read this table: baseline is the same task attempted without the target skill. Scores are rounded to one decimal; threshold-adjacent values use additional precision so their displayed band matches the verdict. Uplift is derived from those displayed scores and shown in percentage points.
Example: 47.0% → 92.0% (+45.0 points) means the skill-assisted run scored 92.0%, 45.0 percentage points above its 47.0% no-skill baseline.
Token Usage
Actual Tier 3 execution usage is reported for every observed agent/case pair and both conditions.
| Agent | Dataset case | With skill | Without skill | Delta | Change | Coverage |
|---|---|---|---|---|---|---|
| claude-code | All cases | 1,398,058 | 1,184,793 | N/A | N/A | skill 3/3; base 7/7 |
| claude-code | preflight-clean-axial-flags-phi | 634,914 | 510,580 | N/A | N/A | skill 1/1; base 3/3 |
| claude-code | preflight-clean-no-phi-greenlights | 458,381 | 483,512 | N/A | N/A | skill 1/1; base 3/3 |
| claude-code | preflight-flipped-lr-blocks-segmentation | 304,763 | 190,701 | +114,062 | +59.81% | skill 1/1; base 1/1 |
| codex | All cases | 1,156,112 | 813,778 | N/A | N/A | skill 3/3; base 8/8 |
| codex | preflight-clean-axial-flags-phi | 389,303 | 264,463 | N/A | N/A | skill 1/1; base 3/3 |
| codex | preflight-clean-no-phi-greenlights | 319,585 | 341,802 | N/A | N/A | skill 1/1; base 3/3 |
| codex | preflight-flipped-lr-blocks-segmentation | 447,224 | 207,513 | N/A | N/A | skill 1/1; base 2/2 |
| ALL AGENTS | Dataset aggregate | 2,554,170 | 1,998,571 | N/A | N/A | skill 6/6; base 15/15 |
Prompt tokens include cached reads, so total tokens are prompt + completion (cached is not added twice). The Efficiency score uses (prompt - cached) + completion. N/A means the relevant trajectory counters were not available; coverage is never estimated.
Tier Status
| Tier | Purpose | Status | Evidence |
|---|---|---|---|
| Tier 1 | Static validation | PASSED WITH OBSERVATIONS | 11 validator(s); 12 finding(s) |
| Tier 2 | Semantic deduplication | PASSED | 2 validator(s); 0 finding(s) |
| Tier 3 | Live agent evaluation | PASS | 2 agent(s); 3 task(s) |
Findings and Observations
<details> <summary>Show detailed findings and successful checks</summary>
MEDIUM SCHEMA/body_recommended_section: Missing recommended section: '## Examples' (
skills/dicom-series-preflight/SKILL.md)MEDIUM SECURITY/subprocess module call (AST4): Dangerous Code Execution: subprocess.run( [sys.executable, str(FIXTURES / "generate_fixtures.py")], check=True, cwd=REPO, ) (
tests/test_preflight_series.py:37)LOW QUALITY/quality_reliability: Inputs are used but no dedicated Inputs section is documented (
skills/dicom-series-preflight/SKILL.md)LOW QUALITY/quality_reliability: Structured output is used but no dedicated Output Format section is documented (
skills/dicom-series-preflight/SKILL.md)LOW SCHEMA/unexpected_file: Unexpected 'fixtures' in skill root (
skills/dicom-series-preflight/fixtures)7 additional finding(s) are available in the full evaluation artifacts.
</details>
Scoring Methodology
<details> <summary>Show dimension definitions, source signals, and thresholds</summary>
| Dimension | Question | Scored signals |
|---|---|---|
| Security | Is it safe to use? | security (100%) |
| Correctness | Is the answer correct? | accuracy (100%) |
| Discoverability | Was the right skill loaded when needed? | skill_execution (100%) |
| Effectiveness | Did the skill help complete the task? | goal_accuracy (50%) + behavior_check (50%) |
| Efficiency | Did it avoid wasted tool calls and token usage? | skill_efficiency (50%) + token_efficiency (50%) |
Dimension bands: PASS at 50% or above; NEUTRAL from 40% to below 50%; FAIL below 40%.
Overall Tier 3 lift: PASS at +5 points or more; FAIL at -10 points or less; values between those bands are NEUTRAL.
Overall verdict: PASS only when every configured dimension passes for at least one supported agent. Lift is reported as diagnostic evidence and does not override this gate.
The 50% attempt pass threshold is a separate per-task gate; it is not the dimension pass threshold.
Effectiveness is the equal-weight mean of goal completion (
goal_accuracy) and expected workflow adherence (behavior_check).Efficiency is 50% tool-call productivity (the backward-compatible
skill_efficiencywire id) and 50%token_efficiency. Positive-case skill routing is scored under Discoverability, not Efficiency; a negative case without a routing target is N/A. N/A sources are omitted, remaining weights are renormalized, and the dimension is marked partial.
Signals present in this run:
security(Security): unsafe operations, secret leakage, and unauthorized access.skill_execution(Skill Execution): whether the expected skill was selected, decoys were avoided, and the workflow executed.skill_efficiency(Tool Productivity): tool-call productivity (legacy wire id; routing is scored under Discoverability).accuracy(Accuracy): final-answer correctness against the reference answer.goal_accuracy(Goal Accuracy): whether the user's goal was achieved.behavior_check(Behavior Check): whether the expected workflow behavior was followed.token_efficiency(Token Efficiency): actual uncached prompt plus completion usage (50% of Efficiency).
</details>
Freshness
Regenerate this benchmark when the skill, evaluation dataset, target agent/model, evaluator version, environment, or scoring policy changes.
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Declares allowed tools, Needs Python
Security
What our scanner noticed· Medium risk
- Large base64-encoded blobs
- Scripts that your agent may run
This skill includes scripts that your agent may run. Read them before you use it.
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- NVIDIA MedTech Team
- Publisher
- NVIDIA (Official)
- Source
- NVIDIA/skills · skills/dicom-series-preflight · commit fce3cca
- Licence
- Apache License 2.0 (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE-APACHE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by NVIDIA MedTech Team or NVIDIA.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download dicom-series-preflight.zip