Nv Segment Ctmr
NVIDIAOfficialCreated by NVIDIA MedTech Team
- Skill
- Tool integration
- 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 nv-segment-ctmr skill provides a standardized interface for executing the NV-Segment-CTMR segmentation bundle on medical imaging volumes. It acts as a thin wrapper around the upstream MONAI-based model, facilitating inference for CT_BODY, MRI_BODY, and MRI_BRAIN modalities. The skill handles the execution of the segmentation process and records detailed evidence, including label-map metadata, voxel counts, and physical volume calculations, while explicitly excluding clinical or diagnostic use cases.
What it does
- Executes 3D segmentation on NIfTI CT or MRI volumes using the NV-Segment-CTMR foundation model.
- Supports automatic segmentation for CT_BODY, MRI_BODY, and MRI_BRAIN modalities.
- Allows for targeted segmentation by passing specific upstream class IDs via label prompts.
- Records comprehensive evidence including runtime, model inventory, and per-class physical volumes.
- Integrates with external verifiers to check anatomy plausibility and segmentation quality.
- Provides a consistent command-line interface for running inference in research environments.
When to use it
- When you need to perform automated segmentation on CT or MRI NIfTI volumes for research purposes.
- When you require a structured output of segmentation evidence, such as voxel counts and label-map metadata.
- When you need to integrate NV-Segment-CTMR inference into a larger research or data-processing pipeline.
- When you are working with preprocessed MRI brain data that requires segmentation.
Advantages
- Standardizes the execution of the complex NV-Segment-CTMR bundle.
- Provides detailed, machine-readable evidence of the segmentation process.
- Maintains compatibility with standard MONAI bundle workflows.
- Enables easy integration with automated quality verification tools.
Usage examples
- “Run CT body segmentation on my scan located at /data/patient_01.nii.gz and save the results to the runs directory.”
- The agent executes the run_ctmr.py script with the specified input path and modality, generating a label map and a result JSON file in the designated output directory.
- “Perform segmentation for specific label IDs 3 and 14 on the MRI scan at /data/mri_scan.nii.gz.”
- The agent runs the segmentation tool with the --label-prompts "3,14" argument, restricting the output to the requested anatomical classes.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/nvidia/nv-segment-ctmr/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip nv-segment-ctmr.zip -d .agents/skills
Documentation by NVIDIA MedTech Team
NV-Segment-CTMR
Purpose
Used for running NV-Segment-CTMR on CT or MRI NIfTI volumes and recording label-map evidence. Not for clinical interpretation.
Use the wrapper exactly as documented; do not replace the upstream entrypoint with a handwritten implementation.
Manifest I/O: inputs are
ct_or_mr_volume; outputs arelabel_mapandresult_json.
Instructions
Read
skill_manifest.yamlbefore changing arguments, side effects, or validation gates.Run
scripts/run_ctmr.pythrough the documented command below; keep outputs under a caller-provided run directory.If a host agent exposes
run_script, userun_script("scripts/run_ctmr.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/run_ctmr.py | Primary entrypoint declared by skill_manifest.yaml. | PATH_TO_IMAGE.nii.gz --output-dir OUT_DIR --modality CT_BODY [--label-prompts IDS] |
Prerequisites
Runtime requirements: GPU/CUDA when declared by the manifest; Python packages listed in
runtime.side_effects.pip_packages.Optional environment variables:
NV_SEGMENT_CTMR_ROOTselects the trusted upstream checkout;CUDA_VISIBLE_DEVICESrestricts visible GPUs;MONAI_DATA_DIRECTORYandPYTORCH_CUDA_ALLOC_CONFoverride the wrapper's output-local cache and allocator defaults when needed.Side effects: writes segmentation outputs under the caller's
--output-dir, may cache model assets under~/.cache/huggingface/, and may contacthttps://github.comorhttps://huggingface.coduring setup.Run commands from the repository root unless an existing section below says otherwise.
Limitations
This is a thin wrapper. Inference, preprocessing, and postprocessing are delegated entirely to the upstream MONAI bundle under $NV_SEGMENT_CTMR_ROOT or the repo-local fallback at .workbench_data/upstreams/NV-Segment-CTMR/NV-Segment-CTMR.
The default wrapper path runs automatic "segment everything" inference for CT_BODY, MRI_BODY, or MRI_BRAIN. MRI_BRAIN inputs must already follow the upstream brain preprocessing requirements.
Label names are loaded from upstream configs when available. If a label dictionary is absent, the wrapper still records label IDs and marks only negative IDs as invalid.
No clinical, diagnostic, regulatory, or treatment-planning claims.
Not for clinical deployment, clinical interpretation, autonomous diagnosis, regulatory submission.
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. |
Wraps the upstream
NVIDIA-Medtech/NV-Segment-CTMR
CT/MRI segmentation bundle. The wrapper does not reimplement VISTA3D
inference. It shells out to the documented python -m monai.bundle run
entry point, then inspects the produced NIfTI label map.
Exact Runnable Surface
For CT body segmentation user runs and benchmark answers, use this fresh-environment-safe repo-root command shape exactly:
export NV_SEGMENT_CTMR_ROOT="${NV_SEGMENT_CTMR_ROOT:-$HOME/.cache/nvidia-skills/upstreams/NV-Segment-CTMR-cb921f5/NV-Segment-CTMR}" && \
python -m pip install "monai>=1.5,<1.6" "numpy<2" nibabel scipy typer PyYAML fire huggingface_hub pytorch-ignite einops && \
python skills/nv-segment-ctmr/scripts/run_ctmr.py PATH_TO_IMAGE.nii.gz --modality CT_BODY --output-dir OUT_DIRDo not invent python -m nv_segment_ctmr, infer.py, or Medical AI Skills run commands. PATH_TO_IMAGE.nii.gz must be the user's supplied input path.
For benchmark/user run answers, the bash block is invalid if it includes
mkdir -p .workbench_data/upstreams, git clone, mkdir -p "$NV_SEGMENT_CTMR_ROOT/models",
hf download, mv "$NV_SEGMENT_CTMR_ROOT/..., or any other command that
creates, downloads into, or moves files inside the shared upstream checkout.
Preconditions
One-time maintainer setup only; do not include these commands in user answers or benchmark commands. The benchmark environment already provides the repo-local upstream cache and model files.
If NV_SEGMENT_CTMR_ROOT already names a local bundle checkout, the wrapper
uses it and records its current commit in the result. Otherwise, clone the
recommended pinned default once:
if [ -z "${NV_SEGMENT_CTMR_ROOT:-}" ]; then
export NV_SEGMENT_CTMR_COMMIT=cb921f5c58837c0f42a713855d68b32af88e1cdd
export NV_SEGMENT_CTMR_CHECKOUT="$HOME/.cache/nvidia-skills/upstreams/NV-Segment-CTMR-cb921f5"
if [ ! -d "$NV_SEGMENT_CTMR_CHECKOUT/.git" ]; then
git clone https://github.com/NVIDIA-Medtech/NV-Segment-CTMR.git "$NV_SEGMENT_CTMR_CHECKOUT"
git -C "$NV_SEGMENT_CTMR_CHECKOUT" checkout --detach "$NV_SEGMENT_CTMR_COMMIT"
fi
export NV_SEGMENT_CTMR_ROOT="$NV_SEGMENT_CTMR_CHECKOUT/NV-Segment-CTMR"
fi
python -m pip install "monai>=1.5,<1.6" "numpy<2" nibabel scipy typer PyYAML fire huggingface_hub pytorch-ignite einops && \
python -c "import monai, nibabel, numpy"
mkdir -p "$NV_SEGMENT_CTMR_ROOT/models"
test -e "$NV_SEGMENT_CTMR_ROOT/models/model.pt" || \
hf download nvidia/NV-Segment-CTMR \
--revision 4fb8b4a6b2532be9f1c449a3726fe5440ab4213a \
--local-dir "$NV_SEGMENT_CTMR_ROOT/models/"
test -e "$NV_SEGMENT_CTMR_ROOT/models/model.pt" || \
mv "$NV_SEGMENT_CTMR_ROOT/models/vista3d_pretrained_model/model.pt" \
"$NV_SEGMENT_CTMR_ROOT/models/model.pt"The wrapper also searches .workbench_data/upstreams/NV-Segment-CTMR/NV-Segment-CTMR
if NV_SEGMENT_CTMR_ROOT is unset or does not have the required bundle layout.
For agent-generated user run commands, use the command in Usage. Do not copy
the one-time Preconditions block into the answer: do not create or write under
$NV_SEGMENT_CTMR_ROOT, do not run hf download, and do not move files in the
shared upstream checkout during a benchmark or user run. Do not prepend
pip install -r "$NV_SEGMENT_CTMR_ROOT/requirements.txt" in a Python 3.12
environment; the upstream requirements pin NumPy 1.24.4, which does not build
cleanly there. In a fresh Python environment, install the minimal compatible
runtime shown above (monai>=1.5,<1.6, numpy<2, nibabel, scipy, typer,
PyYAML, fire, huggingface_hub, pytorch-ignite, einops) before the
wrapper. Cached models do not imply cached Python packages.
Runtime needs an NVIDIA GPU with CUDA. The upstream bundle may import on CPU-only hosts, but this skill is declared as CUDA-required because the published workflow is a 3D CT/MRI foundation model inference path.
Usage
From Medical AI Skills repo root:
export NV_SEGMENT_CTMR_ROOT="${NV_SEGMENT_CTMR_ROOT:-$HOME/.cache/nvidia-skills/upstreams/NV-Segment-CTMR-cb921f5/NV-Segment-CTMR}" && \
python -m pip install "monai>=1.5,<1.6" "numpy<2" nibabel scipy typer PyYAML fire huggingface_hub pytorch-ignite einops && \
python skills/nv-segment-ctmr/scripts/run_ctmr.py PATH_TO_IMAGE.nii.gz \
--modality CT_BODY \
--output-dir runs/nv_segment_ctmr_demoReplace PATH_TO_IMAGE.nii.gz with the user's actual input path. Do not copy
the example fixture path into a user run. If the user provides an explicit
input path under runs/, that path must be the first positional argument to
scripts/run_ctmr.py.
Supported automatic segmentation modalities are CT_BODY, MRI_BODY, and
MRI_BRAIN. For MRI_BRAIN, the upstream README requires brain-specific
preprocessing before bundle inference; pass an already preprocessed image to
this wrapper.
Pass --label-prompts "3,14" to request specific upstream class IDs instead
of only the modality-level "segment everything" set. The evidence output
records input geometry, output mask path, observed label IDs, unexpected
labels, per-class voxel counts, per-class physical volumes from the mask
header spacing, runtime, upstream command, model inventory, and geometry
checks.
Pass --ground-truth PATH to record a reference label-map path under
input.ground_truth_path. The skill does not compute Dice; that is the
paired verifier's job.
Anatomy plausibility and optional per-class Dice/IoU against the recorded
ground truth can be checked by verifiers/ct_segmentation_quality_v1 for
CT-body outputs.
Not for clinical interpretation, production deployment, autonomous diagnosis, or regulatory submission.
Files
- ATTRIBUTION.mdAdded by AutoGineer916 B
- BENCHMARK.md7.7 KiB
- LICENSELicence file added by AutoGineer11.2 KiB
- SKILL.md9.1 KiB
- evals/evals.json1.2 KiB
- fixtures/README.md575 B
- scripts/run_ctmr.pyScript21.5 KiB
- skill-card.md4.1 KiB
- skill.oms.sig5.6 KiB
- skill_manifest.yaml7.0 KiB
- tests/test_run_ctmr.pyScript4.4 KiB
- validators/output_schema.json4.6 KiB
BENCHMARK.md
Skill Benchmark: nv-segment-ctmr
✅ Overall verdict: PASS — Recommended for publication
Publication Recommendation
Recommended for publication based on the completed evaluation evidence in this report.
Evaluation Metadata
Skill:
nv-segment-ctmrEvaluation 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: 2 evaluation tasks (2 positive)
Dataset digest:
sha256:d9381987f6fd5c438605f95aa26c4d59861ee8ddca4c7510f334009092399308(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 | 88.7% — baseline ran, but no comparable score was available; uplift unavailable | 79.7% — baseline ran, but no comparable score was available; uplift unavailable |
| Security | 100.0% → 100.0% (±0.0 points) | 100.0% → 50.0% (-50.0 points) |
| Correctness | 30.0% → 100.0% (+70.0 points) | 80.0% → 100.0% (+20.0 points) |
| Discoverability | 95.0% — baseline ran, but no comparable score was available; uplift unavailable | 85.0% — baseline ran, but no comparable score was available; uplift unavailable |
| Effectiveness | 26.0% → 66.7% (+40.7 points) | 27.1% → 95.0% (+67.9 points) |
| Efficiency | 81.6% — baseline ran, but no comparable score was available; uplift unavailable | 68.7% — 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 | 453,658 | 1,073,166 | N/A | N/A | skill 2/2; base 4/4 |
| claude-code | mri-brain-preprocessing-caveat | 186,926 | 253,730 | -66,804 | -26.33% | skill 1/1; base 1/1 |
| claude-code | run-ct-body-segmentation | 266,732 | 819,436 | N/A | N/A | skill 1/1; base 3/3 |
| codex | All cases | 726,469 | 556,735 | +169,734 | +30.49% | skill 2/2; base 2/2 |
| codex | mri-brain-preprocessing-caveat | 98,028 | 88,299 | +9,729 | +11.02% | skill 1/1; base 1/1 |
| codex | run-ct-body-segmentation | 628,441 | 468,436 | +160,005 | +34.16% | skill 1/1; base 1/1 |
| ALL AGENTS | Dataset aggregate | 1,180,127 | 1,629,901 | N/A | N/A | skill 4/4; base 6/6 |
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); 11 finding(s) |
| Tier 2 | Semantic deduplication | PASSED | 2 validator(s); 0 finding(s) |
| Tier 3 | Live agent evaluation | PASS | 2 agent(s); 2 task(s) |
Findings and Observations
<details> <summary>Show detailed findings and successful checks</summary>
MEDIUM SCHEMA/body_recommended_section: Missing recommended section: '## Examples' (
skills/nv-segment-ctmr/SKILL.md)MEDIUM SECURITY/subprocess module call (AST4): Dangerous Code Execution: proc = subprocess.run( ["git", "rev-parse", "HEAD"], cwd=str(root), env=_child_process_env(), capture_output=True, text=True, (
scripts/run_ctmr.py:111)MEDIUM SECURITY/subprocess module call (AST4): Dangerous Code Execution: proc = subprocess.run( cmd, cwd=str(resolved_root), env=run_env, capture_output=True, text=True, timeout=timeout_seconds (
scripts/run_ctmr.py:590)MEDIUM SECURITY/Tainted flow: 'resolved_root' from os.environ.get (line 539, credential/environment) → subprocess.run (code execution) (TT2): Data Flow: proc = subprocess.run( cmd, cwd=str(resolved_root), env=run_env, capture_output=True, text=True, timeout=timeout_seconds (
scripts/run_ctmr.py:590)LOW QUALITY/quality_reliability: Inputs are used but no dedicated Inputs section is documented (
skills/nv-segment-ctmr/SKILL.md)6 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 a command-line tool, Needs Python
Security
What our scanner noticed· Medium risk
- Large base64-encoded blobs
- Instructions that use the network
- 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/nv-segment-ctmr · 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 nv-segment-ctmr.zip