Agent skill

pydicom DICOM Toolkit

by davila7 in davila7/claude-code-templates

Reads, edits, anonymizes and converts DICOM medical imaging files with pydicom, including pixel data extraction and compressed transfer syntaxes.

MITAuto-check passedResearch & Science

Install pydicom DICOM Toolkit

skills CLI
$ npx skills add davila7/claude-code-templates --skill pydicom -a claude-code

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

GitHub CLI
$ gh skill install davila7/claude-code-templates pydicom --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/davila7/claude-code-templates.git skills-src && mkdir -p .claude/skills && cp -r skills-src/cli-tool/components/skills/scientific/pydicom .claude/skills/pydicom && 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
pydicom
GitHub stars
32k
Used in
11 other repos
Token cost
~3.3k tokens
SKILL.md length
565 words
Files
6 (incl. scripts, references)
Skills in repo
478
Repo updated
First seen
Licence
MIT

At a glance

Reads, edits, anonymizes and converts DICOM medical imaging files with pydicom, including pixel data extraction and compressed transfer syntaxes.

  • Works in 8 steps: Always check for required attributes… → Preserve file metadata when modifying… → Use Transfer Syntax UIDs to understand… → …
  • Reading or editing metadata in DICOM files
  • SKILL.md covers Overview, When to Use This Skill, Installation and Core Workflows, plus 5 more sections
  • Runs Python scripts from its folder; calls uv and python

What it does

pydicom is a pure Python package for DICOM, the standard format for medical imaging data. The skill covers reading files with `dcmread()` into a `Dataset`, reaching data elements by attribute name or numeric tag, checking `file_meta` for the transfer syntax, and handling attributes that are missing. It then moves to pixel data: pulling arrays from CT, MRI, X-ray and ultrasound files, treating RGB images and multi-frame series, and converting to ordinary image formats.

Compressed files may need extra decoders such as `pylibjpeg` or `python-gdcm`, and `pillow` and `numpy` are suggested for conversion and array work. Bundled scripts anonymize files, convert DICOM to images and extract metadata, and reference notes list common tags and transfer syntaxes. The listed use cases also include DICOM sequences, structured reports, multi-slice volumes and PACS integration.

When your agent uses it

  • Reading or editing metadata in DICOM files
  • Extracting pixel data from CT, MRI, X-ray or ultrasound scans
  • Anonymizing DICOM files before research use or sharing
  • Opening compressed DICOM files that fail to decode

Example prompts

  • “Read chest_ct.dcm and list the patient, modality and study date tags.”
  • “Anonymize every DICOM file in ./study and write the copies to ./study_anon.”
  • “Convert the MRI series in ./mri to standard image files I can view.”
  • “Why does pixel_array fail on this JPEG-compressed DICOM file?”

Requirements

  • Python with `pydicom`
  • Pillow and NumPy for image conversion and pixel arrays
  • `pylibjpeg` or `python-gdcm` for compressed files

Workflow steps

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

  1. Always check for required attributes before accessing them using hasattr() or get()
  2. Preserve file metadata when modifying files by using save_as() with write_like_original=True
  3. Use Transfer Syntax UIDs to understand compression format before processing pixel data
  4. Handle exceptions when reading files from untrusted sources
  5. Apply proper windowing (VOI LUT) for medical image visualization
  6. Maintain spatial information (pixel spacing, slice thickness) when processing 3D volumes
  7. Verify anonymization thoroughly before sharing medical data
  8. Use UIDs correctly - generate new UIDs when creating new instances, preserve them when modifying

What it can do on your machine

Read from SKILL.md and the folder at commit 46b4d8b. 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

    Ships 3 files in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • uv
    • 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):

    • pydicom.github.io

    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

pydicom DICOM Toolkit loads about 3.3k tokens when it runs, and up to ~8.2k if it reads all its reference files. Until then it costs about 141 tokens; SKILL.md has 565 words of instructions outside code blocks.

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

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); the scripts in this folder are not scanned.

SKILL.md

The full file from davila7/claude-code-templates at commit 46b4d8b, republished under its MIT licence (© davila7). 565 words, ~3,272 tokens.

Download SKILL.mdSave it as .claude/skills/pydicom/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
pydicom
description
Python library for working with DICOM (Digital Imaging and Communications in Medicine) files. Use this skill when reading, writing, or modifying medical imaging data in DICOM format, extracting pixel data from medical images (CT, MRI, X-ray, ultrasound), anonymizing DICOM files, working with DICOM metadata and tags, converting DICOM images to other formats, handling compressed DICOM data, or processing medical imaging datasets. Applies to tasks involving medical image analysis, PACS systems, radiology workflows, and healthcare imaging applications.

Pydicom

Overview

Pydicom is a pure Python package for working with DICOM files, the standard format for medical imaging data. This skill provides guidance on reading, writing, and manipulating DICOM files, including working with pixel data, metadata, and various compression formats.

When to Use This Skill

Use this skill when working with:

  • Medical imaging files (CT, MRI, X-ray, ultrasound, PET, etc.)
  • DICOM datasets requiring metadata extraction or modification
  • Pixel data extraction and image processing from medical scans
  • DICOM anonymization for research or data sharing
  • Converting DICOM files to standard image formats
  • Compressed DICOM data requiring decompression
  • DICOM sequences and structured reports
  • Multi-slice volume reconstruction
  • PACS (Picture Archiving and Communication System) integration

Installation

Install pydicom and common dependencies:

bash
uv pip install pydicom
uv pip install pillow  # For image format conversion
uv pip install numpy   # For pixel array manipulation
uv pip install matplotlib  # For visualization

For handling compressed DICOM files, additional packages may be needed:

bash
uv pip install pylibjpeg pylibjpeg-libjpeg pylibjpeg-openjpeg  # JPEG compression
uv pip install python-gdcm  # Alternative compression handler

Core Workflows

Reading DICOM Files

Read a DICOM file using pydicom.dcmread():

python
import pydicom

# Read a DICOM file
ds = pydicom.dcmread('path/to/file.dcm')

# Access metadata
print(f"Patient Name: {ds.PatientName}")
print(f"Study Date: {ds.StudyDate}")
print(f"Modality: {ds.Modality}")

# Display all elements
print(ds)

Key points:

  • dcmread() returns a Dataset object
  • Access data elements using attribute notation (e.g., ds.PatientName) or tag notation (e.g., ds[0x0010, 0x0010])
  • Use ds.file_meta to access file metadata like Transfer Syntax UID
  • Handle missing attributes with getattr(ds, 'AttributeName', default_value) or hasattr(ds, 'AttributeName')
Working with Pixel Data

Extract and manipulate image data from DICOM files:

python
import pydicom
import numpy as np
import matplotlib.pyplot as plt

# Read DICOM file
ds = pydicom.dcmread('image.dcm')

# Get pixel array (requires numpy)
pixel_array = ds.pixel_array

# Image information
print(f"Shape: {pixel_array.shape}")
print(f"Data type: {pixel_array.dtype}")
print(f"Rows: {ds.Rows}, Columns: {ds.Columns}")

# Apply windowing for display (CT/MRI)
if hasattr(ds, 'WindowCenter') and hasattr(ds, 'WindowWidth'):
    from pydicom.pixel_data_handlers.util import apply_voi_lut
    windowed_image = apply_voi_lut(pixel_array, ds)
else:
    windowed_image = pixel_array

# Display image
plt.imshow(windowed_image, cmap='gray')
plt.title(f"{ds.Modality} - {ds.StudyDescription}")
plt.axis('off')
plt.show()

Working with color images:

python
# RGB images have shape (rows, columns, 3)
if ds.PhotometricInterpretation == 'RGB':
    rgb_image = ds.pixel_array
    plt.imshow(rgb_image)
elif ds.PhotometricInterpretation == 'YBR_FULL':
    from pydicom.pixel_data_handlers.util import convert_color_space
    rgb_image = convert_color_space(ds.pixel_array, 'YBR_FULL', 'RGB')
    plt.imshow(rgb_image)

Multi-frame images (videos/series):

python
# For multi-frame DICOM files
if hasattr(ds, 'NumberOfFrames') and ds.NumberOfFrames > 1:
    frames = ds.pixel_array  # Shape: (num_frames, rows, columns)
    print(f"Number of frames: {frames.shape[0]}")

    # Display specific frame
    plt.imshow(frames[0], cmap='gray')
Converting DICOM to Image Formats

Use the provided dicom_to_image.py script or convert manually:

python
from PIL import Image
import pydicom
import numpy as np

ds = pydicom.dcmread('input.dcm')
pixel_array = ds.pixel_array

# Normalize to 0-255 range
if pixel_array.dtype != np.uint8:
    pixel_array = ((pixel_array - pixel_array.min()) /
                   (pixel_array.max() - pixel_array.min()) * 255).astype(np.uint8)

# Save as PNG
image = Image.fromarray(pixel_array)
image.save('output.png')

Use the script: python scripts/dicom_to_image.py input.dcm output.png

Modifying Metadata

Modify DICOM data elements:

python
import pydicom
from datetime import datetime

ds = pydicom.dcmread('input.dcm')

# Modify existing elements
ds.PatientName = "Doe^John"
ds.StudyDate = datetime.now().strftime('%Y%m%d')
ds.StudyDescription = "Modified Study"

# Add new elements
ds.SeriesNumber = 1
ds.SeriesDescription = "New Series"

# Remove elements
if hasattr(ds, 'PatientComments'):
    delattr(ds, 'PatientComments')
# Or using del
if 'PatientComments' in ds:
    del ds.PatientComments

# Save modified file
ds.save_as('modified.dcm')
Anonymizing DICOM Files

Remove or replace patient identifiable information:

python
import pydicom
from datetime import datetime

ds = pydicom.dcmread('input.dcm')

# Tags commonly containing PHI (Protected Health Information)
tags_to_anonymize = [
    'PatientName', 'PatientID', 'PatientBirthDate',
    'PatientSex', 'PatientAge', 'PatientAddress',
    'InstitutionName', 'InstitutionAddress',
    'ReferringPhysicianName', 'PerformingPhysicianName',
    'OperatorsName', 'StudyDescription', 'SeriesDescription',
]

# Remove or replace sensitive data
for tag in tags_to_anonymize:
    if hasattr(ds, tag):
        if tag in ['PatientName', 'PatientID']:
            setattr(ds, tag, 'ANONYMOUS')
        elif tag == 'PatientBirthDate':
            setattr(ds, tag, '19000101')
        else:
            delattr(ds, tag)

# Update dates to maintain temporal relationships
if hasattr(ds, 'StudyDate'):
    # Shift dates by a random offset
    ds.StudyDate = '20000101'

# Keep pixel data intact
ds.save_as('anonymized.dcm')

Use the provided script: python scripts/anonymize_dicom.py input.dcm output.dcm

Writing DICOM Files

Create DICOM files from scratch:

python
import pydicom
from pydicom.dataset import Dataset, FileDataset
from datetime import datetime
import numpy as np

# Create file meta information
file_meta = Dataset()
file_meta.MediaStorageSOPClassUID = pydicom.uid.generate_uid()
file_meta.MediaStorageSOPInstanceUID = pydicom.uid.generate_uid()
file_meta.TransferSyntaxUID = pydicom.uid.ExplicitVRLittleEndian

# Create the FileDataset instance
ds = FileDataset('new_dicom.dcm', {}, file_meta=file_meta, preamble=b"\0" * 128)

# Add required DICOM elements
ds.PatientName = "Test^Patient"
ds.PatientID = "123456"
ds.Modality = "CT"
ds.StudyDate = datetime.now().strftime('%Y%m%d')
ds.StudyTime = datetime.now().strftime('%H%M%S')
ds.ContentDate = ds.StudyDate
ds.ContentTime = ds.StudyTime

# Add image-specific elements
ds.SamplesPerPixel = 1
ds.PhotometricInterpretation = "MONOCHROME2"
ds.Rows = 512
ds.Columns = 512
ds.BitsAllocated = 16
ds.BitsStored = 16
ds.HighBit = 15
ds.PixelRepresentation = 0

# Create pixel data
pixel_array = np.random.randint(0, 4096, (512, 512), dtype=np.uint16)
ds.PixelData = pixel_array.tobytes()

# Add required UIDs
ds.SOPClassUID = pydicom.uid.CTImageStorage
ds.SOPInstanceUID = file_meta.MediaStorageSOPInstanceUID
ds.SeriesInstanceUID = pydicom.uid.generate_uid()
ds.StudyInstanceUID = pydicom.uid.generate_uid()

# Save the file
ds.save_as('new_dicom.dcm')
Compression and Decompression

Handle compressed DICOM files:

python
import pydicom

# Read compressed DICOM file
ds = pydicom.dcmread('compressed.dcm')

# Check transfer syntax
print(f"Transfer Syntax: {ds.file_meta.TransferSyntaxUID}")
print(f"Transfer Syntax Name: {ds.file_meta.TransferSyntaxUID.name}")

# Decompress and save as uncompressed
ds.decompress()
ds.save_as('uncompressed.dcm', write_like_original=False)

# Or compress when saving (requires appropriate encoder)
ds_uncompressed = pydicom.dcmread('uncompressed.dcm')
ds_uncompressed.compress(pydicom.uid.JPEGBaseline8Bit)
ds_uncompressed.save_as('compressed_jpeg.dcm')

Common transfer syntaxes:

  • ExplicitVRLittleEndian - Uncompressed, most common
  • JPEGBaseline8Bit - JPEG lossy compression
  • JPEGLossless - JPEG lossless compression
  • JPEG2000Lossless - JPEG 2000 lossless
  • RLELossless - Run-Length Encoding lossless

See references/transfer_syntaxes.md for complete list.

Working with DICOM Sequences

Handle nested data structures:

python
import pydicom

ds = pydicom.dcmread('file.dcm')

# Access sequences
if 'ReferencedStudySequence' in ds:
    for item in ds.ReferencedStudySequence:
        print(f"Referenced SOP Instance UID: {item.ReferencedSOPInstanceUID}")

# Create a sequence
from pydicom.sequence import Sequence

sequence_item = Dataset()
sequence_item.ReferencedSOPClassUID = pydicom.uid.CTImageStorage
sequence_item.ReferencedSOPInstanceUID = pydicom.uid.generate_uid()

ds.ReferencedImageSequence = Sequence([sequence_item])
Processing DICOM Series

Work with multiple related DICOM files:

python
import pydicom
import numpy as np
from pathlib import Path

# Read all DICOM files in a directory
dicom_dir = Path('dicom_series/')
slices = []

for file_path in dicom_dir.glob('*.dcm'):
    ds = pydicom.dcmread(file_path)
    slices.append(ds)

# Sort by slice location or instance number
slices.sort(key=lambda x: float(x.ImagePositionPatient[2]))
# Or: slices.sort(key=lambda x: int(x.InstanceNumber))

# Create 3D volume
volume = np.stack([s.pixel_array for s in slices])
print(f"Volume shape: {volume.shape}")  # (num_slices, rows, columns)

# Get spacing information for proper scaling
pixel_spacing = slices[0].PixelSpacing  # [row_spacing, col_spacing]
slice_thickness = slices[0].SliceThickness
print(f"Voxel size: {pixel_spacing[0]}x{pixel_spacing[1]}x{slice_thickness} mm")

Helper Scripts

This skill includes utility scripts in the scripts/ directory:

anonymize_dicom.py

Anonymize DICOM files by removing or replacing Protected Health Information (PHI).

bash
python scripts/anonymize_dicom.py input.dcm output.dcm
dicom_to_image.py

Convert DICOM files to common image formats (PNG, JPEG, TIFF).

bash
python scripts/dicom_to_image.py input.dcm output.png
python scripts/dicom_to_image.py input.dcm output.jpg --format JPEG
Show full SKILL.md (230 more words)Show less
extract_metadata.py

Extract and display DICOM metadata in a readable format.

bash
python scripts/extract_metadata.py file.dcm
python scripts/extract_metadata.py file.dcm --output metadata.txt

Reference Materials

Detailed reference information is available in the references/ directory:

  • common_tags.md: Comprehensive list of commonly used DICOM tags organized by category (Patient, Study, Series, Image, etc.)
  • transfer_syntaxes.md: Complete reference of DICOM transfer syntaxes and compression formats

Common Issues and Solutions

Issue: "Unable to decode pixel data"

  • Solution: Install additional compression handlers: uv pip install pylibjpeg pylibjpeg-libjpeg python-gdcm

Issue: "AttributeError" when accessing tags

  • Solution: Check if attribute exists with hasattr(ds, 'AttributeName') or use ds.get('AttributeName', default)

Issue: Incorrect image display (too dark/bright)

  • Solution: Apply VOI LUT windowing: apply_voi_lut(pixel_array, ds) or manually adjust with WindowCenter and WindowWidth

Issue: Memory issues with large series

  • Solution: Process files iteratively, use memory-mapped arrays, or downsample images

Best Practices

  1. Always check for required attributes before accessing them using hasattr() or get()
  2. Preserve file metadata when modifying files by using save_as() with write_like_original=True
  3. Use Transfer Syntax UIDs to understand compression format before processing pixel data
  4. Handle exceptions when reading files from untrusted sources
  5. Apply proper windowing (VOI LUT) for medical image visualization
  6. Maintain spatial information (pixel spacing, slice thickness) when processing 3D volumes
  7. Verify anonymization thoroughly before sharing medical data
  8. Use UIDs correctly - generate new UIDs when creating new instances, preserve them when modifying

Documentation

Official pydicom documentation: https://pydicom.github.io/pydicom/dev/

© davila7, MIT. 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 5 other files (scripts, references) in cli-tool/components/skills/scientific/pydicom of davila7/claude-code-templates.

  • SKILL.md
  • references/common_tags.md
  • references/transfer_syntaxes.md
  • scripts/anonymize_dicom.py
  • scripts/dicom_to_image.py
  • scripts/extract_metadata.py

Open the folder on GitHubat commit 46b4d8b

Used in 11 other repositories

We found 14 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 11 other GitHub owners. This page covers the copy in davila7/claude-code-templates, which our catalogue first saw on October 7, 2026.

Compare with similar skills

pydicom DICOM Toolkit 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.

pydicom DICOM Toolkit compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
pydicom DICOM Toolkit this skilldavila7/claude-code-templates32k11 repos~3.3kAutomated safety check: PassMIT
Pydicom Medical Imagingjaechang-hits/SciAgent-Skills3711 repos~7.5kAutomated safety check: PassMIT
13C Metabolic Flux AnalysisK-Dense-AI/scientific-agent-skills48k1 repos~3.2kAutomated safety check: PassMIT
Cantera Ignition DelayK-Dense-AI/scientific-agent-skills48k1 repos~2.2kAutomated safety check: PassMIT
RDKit Descriptors and Fingerprintsjinzhezenggroup/computational-chemistry-agent-skills148—~2.3kAutomated safety check: PassLGPL-3.0
Light Experiment CodingLight0305/Light-skills640—~2.3kAutomated safety check: PassMIT

Similar skills

  • Pydicom Medical Imaging

    jaechang-hits/SciAgent-Skills

    Pure Python DICOM for medical imaging (CT, MRI, X-ray, ultrasound).

    371 GitHub starsUsed in 1 repo~7.5k tokens
    Research & ScienceAuto-check passed
  • 13C Metabolic Flux Analysis

    K-Dense-AI/scientific-agent-skills

    Estimates reaction fluxes inside cells from steady-state carbon-13 labeling data with a bundled mfapy-based solver, and reports which fluxes the data pin down.

    48k GitHub starsUsed in 1 repo~3.2k tokens
    Research & ScienceAuto-check passed
  • Cantera Ignition Delay

    K-Dense-AI/scientific-agent-skills

    Runs Cantera constant-volume or constant-pressure ignition simulations and reports temperature-based ignition delay with mechanism provenance and checks.

    48k GitHub starsUsed in 1 repo~2.2k tokens
    Research & ScienceAuto-check passed
  • RDKit Descriptors and Fingerprints

    jinzhezenggroup/computational-chemistry-agent-skills

    Computes RDKit physicochemical descriptors and molecular fingerprints from SMILES through a uv-run CLI script that skips and logs invalid molecules.

    148 GitHub stars~2.3k tokensUpdated today
    Research & ScienceAuto-check passed
  • Light Experiment Coding

    Light0305/Light-skills

    Builds the code for a frozen research experiment test-first, with leakage controls, seed handling and saved evidence so results can be rerun and audited.

    640 GitHub stars~2.3k tokensUpdated 3 mo ago
    Research & ScienceAuto-check passed
  • Paperclip

    K-Dense-AI/scientific-agent-skills

    Searches and reads biomedical papers, FDA/PMDA/EMA documents, clinical trials, and protein records with the GXL Paperclip CLI and Python SDK.

    48k GitHub starsUsed in 1 repo~3.2k tokens
    Research & ScienceAuto-check: notes

More from davila7/claude-code-templates

All 478 skills in this repo
  • Perplexity Web Search

    davila7/claude-code-templates

    Runs web-grounded searches through Perplexity's Sonar models over OpenRouter for current events, recent literature and cited facts beyond the model's training cutoff.

    32k GitHub starsUsed in 11 repos~3.5k tokens
    Auto-check: notes
  • Neuropixels Data Analysis

    davila7/claude-code-templates

    Analyzes Neuropixels recordings from SpikeGLX or Open Ephys through preprocessing, drift correction, Kilosort4 spike sorting, quality metrics and curation.

    32k GitHub starsUsed in 9 repos~2.8k tokens
    Auto-check passed
  • Scientific Venue Templates

    davila7/claude-code-templates

    Supplies LaTeX templates and formatting rules for journals, conferences, posters, and grant proposals, then can check a draft against them.

    32k GitHub starsUsed in 9 repos~5.1k tokens
    Auto-check: notes
  • Brand Voice Content Creator

    davila7/claude-code-templates

    Analyzes a brand's existing writing to lock in a consistent voice, then builds SEO blog posts and platform-specific social content around it.

    32k GitHub starsUsed in 3 repos~1.9k tokens
    Auto-check passed
  • CAPA Officer

    davila7/claude-code-templates

    Guides corrective and preventive action (CAPA) work in a quality management system, from initiation and root cause analysis through effectiveness verification.

    32k GitHub starsUsed in 1 repo~2k tokens
    Auto-check passed
  • Fda Consultant Specialist

    davila7/claude-code-templates

    Senior FDA consultant and specialist for medical device companies including HIPAA compliance and requirement management.

    32k GitHub starsUsed in 1 repo~2.7k tokens
    Auto-check passed

Works with

Questions about pydicom DICOM Toolkit

What does pydicom DICOM Toolkit do?

Reads, edits, anonymizes and converts DICOM medical imaging files with pydicom, including pixel data extraction and compressed transfer syntaxes. pydicom is a pure Python package for DICOM, the standard format for medical imaging data. The skill covers reading files with `dcmread()` into a `Dataset`, reaching data elements by attribute name or numeric tag, checking `file_meta` for the transfer syntax, and handling attributes that are missing.

When should I use pydicom DICOM Toolkit?

pydicom DICOM Toolkit fits situations like: reading or editing metadata in DICOM files; extracting pixel data from CT, MRI, X-ray or ultrasound scans; anonymizing DICOM files before research use or sharing; opening compressed DICOM files that fail to decode.

How do I install pydicom DICOM Toolkit in Claude Code?

Run `npx skills add davila7/claude-code-templates --skill pydicom -a claude-code`. Or copy the skill folder (cli-tool/components/skills/scientific/pydicom in davila7/claude-code-templates) into .claude/skills/pydicom in your project. Claude Code loads it when a task matches its description.

How do I install pydicom DICOM Toolkit in Codex?

Run `npx skills add davila7/claude-code-templates --skill pydicom -a codex`. Or copy the skill folder (cli-tool/components/skills/scientific/pydicom in davila7/claude-code-templates) into .agents/skills/pydicom in your project. Codex loads it when a task matches its description.

Can I use pydicom DICOM Toolkit 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 davila7/claude-code-templates --skill pydicom -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pydicom, .gemini/skills/pydicom, .github/skills/pydicom and .opencode/skills/pydicom in your project.

What does pydicom DICOM Toolkit need to run?

Going by SKILL.md and its folder, pydicom DICOM Toolkit needs Python for the scripts in its folder and the command-line tools its instructions call (uv and python). Our summary lists: Python with `pydicom`; Pillow and NumPy for image conversion and pixel arrays; `pylibjpeg` or `python-gdcm` for compressed files.

Does pydicom DICOM Toolkit access the network?

SKILL.md names 1 domain. As links in the text: pydicom.github.io. This is read from the text; nothing was executed.

Is pydicom DICOM Toolkit 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does pydicom DICOM Toolkit use?

pydicom DICOM Toolkit is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does pydicom DICOM Toolkit use?

About 3.3k tokens (SKILL.md is roughly 13k 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 5k tokens, read only when the agent opens those files.

What are the alternatives to pydicom DICOM Toolkit?

Skills that share tags, products or a category with pydicom DICOM Toolkit: Pydicom Medical Imaging (jaechang-hits/SciAgent-Skills, 371 stars), 13C Metabolic Flux Analysis (K-Dense-AI/scientific-agent-skills, 48k stars), Cantera Ignition Delay (K-Dense-AI/scientific-agent-skills, 48k stars) and RDKit Descriptors and Fingerprints (jinzhezenggroup/computational-chemistry-agent-skills, 148 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains pydicom DICOM Toolkit?

davila7 (a GitHub user) maintains it in davila7/claude-code-templates, which has 32,483 GitHub stars. The repository holds 478 skills in this directory. The repository was last updated on October 9, 2026.

Source: davila7/claude-code-templates on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.