Skip to content
Agentmart
Submit a tool

pydicom

Reads, inspects, writes, transforms, and preflights local DICOM datasets and pixel data.

Skill by K-Dense-AI

IndexedMIT★ 54,411
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/k-dense-ai-pydicom

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Reads, inspects, writes, transforms, and preflights local DICOM datasets and pixel data. Applies to DICOM metadata, transfer syntaxes, compression plugins, frames, private elements, JSON, and bounded de-identification review.

Use cases: data

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/pydicom

What's inside

Skill name
pydicom
Description
Reads, inspects, writes, transforms, and preflights local DICOM datasets and pixel data. Applies to DICOM metadata, transfer syntaxes, compression plugins, frames, private elements, JSON, and bounded de-identification review.
License
MIT
Compatibility
Python 3.12+ for the tested pixel stack; pydicom 3.0.2 alone needs Python 3.10+; optional pinned NumPy, Pillow, and pixel plugins. Helper CLIs are local-only and require authorized data.
Metadata
version: 1.4 · skill-author: K-Dense Inc. · last-reviewed: 2026-10-01
Instructions
419 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts

Files (13)

  • SKILL.md
  • common_tags.md · references/
  • transfer_syntaxes.md · references/
  • __init__.py · scripts/
  • _common.py · scripts/
  • anonymize_dicom.py · scripts/
  • deidentification_audit.py · scripts/
  • dicom_inventory.py · scripts/
  • dicom_to_image.py · scripts/
  • extract_metadata.py · scripts/
  • pixel_frame_planner.py · scripts/
  • transfer_syntax_inspector.py · scripts/
  • uid_mapping_validator.py · scripts/

SKILL.md (first lines)

# pydicom

Use pydicom for DICOM dataset I/O and pixel processing. Version 3.0.2 is the
current stable release reviewed here. It fixes CVE-2026-32711, a crafted
DICOMDIR path-traversal issue. pydicom 3.0.2 declares Python `>=3.10`; its
bundled DICOM dictionary is 2024c; the current DICOM Standard reviewed here is
2026d. No PACS, DIMSE, DICOMweb endpoint, or authenticated service is exercised
by this local-file skill.

## Mandatory safety boundary

- Work only with local data that the user is authorized to access.
- DICOM metadata, file names, private elements, overlays, structured content,
  and pixels may contain protected health information (PHI).
- Never print `Dataset`, export full metadata/JSON, or log element values by
  default. Use a documented allowlist and aggregate output.
- pydicom is a general DICOM framework, not a diagnostic viewer. Pixel output,
  validation, conversion, and plugin availability are not diagnostic claims.
- De-identification is profile-, purpose-, recipient-, jurisdiction-, and
  threat-context-specific. It requires privacy/DICOM expert verification.
- Never claim that a tag-removal script is DICOM PS3.15, HIPAA, GDPR, or other
  compliance. Preserve originals and audit derived outputs.
- Treat deterministic pseudonymization keys and UID maps as re-identification
  secrets: use least privilege and encrypted/managed secret storage, never
  commit, sync, log, or share them with derivatives, and define backup,
  rotation, revocation, and destruction procedures. A leaked key invalidates
  the intended separation; rotation also changes deterministic mappings.
- Set explicit input-file, file-count, frame-count, decoded-byte, and output
  limits before parsing untrusted or unusually large datasets.

## Installation

Create or activate an isolated environment, then install the reviewed release
(the pixel-stack pins below require Python 3.12+ because of NumPy):

```bash
uv pip install "pydicom==3.0.2"
```

Uncompressed pixel arrays and image rendering:

```bash
uv pip install "pydicom==3.0.2" "numpy==2.5.3" "Pillow==12.3.0"
```

Install only the transfer-syntax plugins required by the deployment:

```bash
# JPEG/JPEG-LS, JPEG 2000/HTJ2K, and faster RLE through pylibjpeg
uv pip install "numpy==2.5.3" "pylibjpeg==2.1.0" \
  "pylibjpeg-libjpeg==2.4.0" "pylibjpeg-openjpeg==2.6.0" \
  "pylibjpeg-rle==2.2.0"

# JPEG-LS encoder/decoder
uv pip install "numpy==2.5.3" "pyjpegls==1.5.1"

# Alternative decoder with platform-specific wheels
uv pip install "python-gdcm==3.2.6"
```

Plugin licenses and wheels differ by package/platform; review them before
deployment. Pillow has documented decoding limitations and pydicom cautions
that plugin output must be independently checked.

Native codec wheels widen the supply-chain and memory-safety boundary. For a
controlled deployment, resolve these exact pins on a trusted build host, lock
and verify wheel hashes/provenance, mirror approved artifacts internally, scan
them, and install with hash enforcement rather than resolving from the public
index at runtime.

## Choose the workflow

1. Need an aggregate overview: run `scripts/extract_metadata.py`.
2. Need bounded technical checks: run `scripts/dicom_inventory.py`.
3. Need codec deployment preflight: run
   `scripts/transfer_syntax_inspector.py`.
4. Need frame/memory planning: run `scripts/pixel_frame_planner.py`.
5. Need one non-diagnostic rendered frame: run
   `scripts/dicom_to_image.py`.
6. Need a pseudonymized derivative: read the de-identification section, create
   a site-reviewed action profile, then run `scripts/anonymize_dicom.py` and
   `scripts/deidentification_audit.py`.
7. Need to check a sensitive UID map: run
   `scripts/uid_mapping_validator.py`.

## Read datasets safely

`dcmread()` returns a `FileDataset`, a `Dataset` subclass with File Format
state such as `file_meta`, preamble, and original encoding.

```python
from pathlib import Path
import pydicom

path = Path("authorized/input.dcm")
ds = pydicom.dcmread(
    path,
    stop_before_pixels=True,
    specific_tags=[
        "SOPClassUID",
        "Modality",
        "Rows",
        "Columns",
        "NumberOfFrames",
    ],
)

technical = {
    "sop_class": ds.get("SOPClassUID"),
    "modality": ds.get("Modality"),
    "rows": ds.get("Rows"),
    "columns": ds.get("Columns"),
}
```

Use:

- `stop_before_pixels=True` for metadata-only work.
- `specific_tags=[...]` for a minimum allowlist.

From K-Dense-AI/scientific-agent-skills, MIT.

More from K-Dense-AI/scientific-agent-skills

Signals

Stars
54,411
Forks
4,797
Open issues
8
Last commit (this folder)
Oct 1, 2026 (28 days ago)
Last release
Oct 1, 2026 (28 days ago)

From GitHub (fetched Oct 24, 2026).

Details

Version
1.4
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from K-Dense-AI

Cite this page

pydicom skill. Agent Mart. https://agentmart.dev/skills/k-dense-ai-pydicom (last updated 2026-10-24)