{"id":"cmuxihnmz0lnzad07o7gcix0a","slug":"pydicom","publicId":"1d5b1000-7259-4242-b3e0-d747ee587934","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.","version":"1.4","author":"k-dense-ai","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.","status":"completed","overallGrade":"B","scannerVersion":11,"fileCount":13,"hasSkillMd":true,"hasScripts":true,"hasReferences":true,"hasEvals":false,"hasAssets":false,"sourceType":"github","sourceUrl":"https://github.com/k-dense-ai/scientific-agent-skills/tree/main/skills/pydicom","createdAt":"2026-10-07T02:52:00.360Z","completedAt":"2026-10-07T02:52:00.357Z","visibility":"public","publishedAt":"2026-09-10T21:06:22.212Z","category":"","frameworks":[],"badgeStatus":"conditional","downloadCount":0,"verdictRationale":{"summary":"Skill has warnings: 9 warnings in security or structure checks.","verdict":"warn","scanners":[{"source":"vettd","weight":1,"verdict":"warn"},{"source":"cisco","weight":0.8,"verdict":"pass"}],"consensus":"warn","warnTriggers":["Safety bypass flag detected","Safety bypass flag detected","Safety bypass flag detected","Safety bypass flag detected","Safety bypass flag detected","Safety bypass flag detected","Safety bypass flag detected","Safety bypass flag detected","References external URL — review for indirect prompt injection risk"],"policyVersion":"consensus-v1","hardFailTriggers":[]},"verdictPolicyVersion":"consensus-v1","skillId":"cmtw0p08pbbugad07gt1khgxo","findings":[{"id":"cmuxihnmz0lo8ad07r9k72vxr","source":"vettd","category":"security","label":"References external URL — review for indirect prompt injection risk","detail":"External URL(s) detected in SKILL.md — referenced content can change after audit","severity":"medium","ruleId":"VTD-0088","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"42638a8b7e9fc5df27449992eaebc724","filepath":"SKILL.md"},{"id":"cmuxihnmz0lo0ad076l91mnay","source":"vettd","category":"security","label":"Safety bypass flag detected","detail":"Detected in scripts/anonymize_dicom.py:672 — `\"--force\",`","severity":"low","ruleId":"VTD-0028","owaspLlmCategory":null,"intent":"negligent","chainId":null,"fingerprint":"7d07b3b1ca36647b09ad8c9dc90be10d","filepath":"scripts/anonymize_dicom.py"},{"id":"cmuxihnmz0lo1ad072o7kp6jw","source":"vettd","category":"security","label":"Safety bypass flag detected","detail":"Detected in scripts/deidentification_audit.py:311 — `\"--force-dicom-read\",`","severity":"low","ruleId":"VTD-0028","owaspLlmCategory":null,"intent":"negligent","chainId":null,"fingerprint":"e20e33f4fbfb99c52cab8f4aff81c910","filepath":"scripts/deidentification_audit.py"},{"id":"cmuxihnmz0lo2ad07baoecj9h","source":"vettd","category":"security","label":"Safety bypass flag detected","detail":"Detected in scripts/dicom_inventory.py:339 — `\"--force-dicom-read\",`","severity":"low","ruleId":"VTD-0028","owaspLlmCategory":null,"intent":"negligent","chainId":null,"fingerprint":"cb6a22c43aa039b1b0689ed95bfe164e","filepath":"scripts/dicom_inventory.py"},{"id":"cmuxihnmz0lo3ad074goyoeka","source":"vettd","category":"security","label":"Safety bypass flag detected","detail":"Detected in scripts/dicom_to_image.py:469 — `\"--force\", action=\"store_true\", help=\"Overwrite image output, never input\"`","severity":"low","ruleId":"VTD-0028","owaspLlmCategory":null,"intent":"negligent","chainId":null,"fingerprint":"675c77482733536f8bd63d67aff448aa","filepath":"scripts/dicom_to_image.py"},{"id":"cmuxihnmz0lo4ad079p0ehm4g","source":"vettd","category":"security","label":"Safety bypass flag detected","detail":"Detected in scripts/extract_metadata.py:279 — `\"--force-dicom-read\",`","severity":"low","ruleId":"VTD-0028","owaspLlmCategory":null,"intent":"negligent","chainId":null,"fingerprint":"d75cb4caeb405c89b6a2c7c05d7ec53a","filepath":"scripts/extract_metadata.py"},{"id":"cmuxihnmz0lo5ad07vffvodlp","source":"vettd","category":"security","label":"Safety bypass flag detected","detail":"Detected in scripts/pixel_frame_planner.py:280 — `\"--force\", action=\"store_true\", help=\"Overwrite an existing plan only\"`","severity":"low","ruleId":"VTD-0028","owaspLlmCategory":null,"intent":"negligent","chainId":null,"fingerprint":"395690d34b29f8a1a92d7f8e3c6c543b","filepath":"scripts/pixel_frame_planner.py"},{"id":"cmuxihnmz0lo6ad07vp5mp3w2","source":"vettd","category":"security","label":"Safety bypass flag detected","detail":"Detected in scripts/transfer_syntax_inspector.py:211 — `\"--force\", action=\"store_true\", help=\"Overwrite an existing report only\"`","severity":"low","ruleId":"VTD-0028","owaspLlmCategory":null,"intent":"negligent","chainId":null,"fingerprint":"b673c15f14b671e8919a769f5a88e993","filepath":"scripts/transfer_syntax_inspector.py"},{"id":"cmuxihnmz0lo7ad07h4vbm84g","source":"vettd","category":"security","label":"Safety bypass flag detected","detail":"Detected in scripts/uid_mapping_validator.py:180 — `\"--force\", action=\"store_true\", help=\"Overwrite an existing report only\"`","severity":"low","ruleId":"VTD-0028","owaspLlmCategory":null,"intent":"negligent","chainId":null,"fingerprint":"b7cb3ea2fc08a18958febdea312b195b","filepath":"scripts/uid_mapping_validator.py"}],"scannerRuns":[{"source":"cisco","status":"success","verdict":null,"grade":"A","findingCount":0,"criticalCount":0,"highCount":0},{"source":"vettd","status":"success","verdict":null,"grade":"B","findingCount":9,"criticalCount":0,"highCount":0}],"user":{"name":"Kris Mondlane","image":"https://avatars.githubusercontent.com/u/237055?v=4"},"repository":{"owner":"k-dense-ai","name":"scientific-agent-skills"},"freshness":{"status":"verified_unchanged","reason":null,"retryable":false,"renamedTo":null,"lastCheckedAt":"2026-10-21T22:14:01.609Z","lastVerifiedAt":"2026-10-21T22:14:01.609Z","lastChangeDetectedAt":"2026-10-06T03:51:24.227Z","scannedHash":"220789004bb668cfd9f2d1cd81099876291f7f13","latestUpstreamHash":"220789004bb668cfd9f2d1cd81099876291f7f13","nextCheckDueAt":"2026-10-22T22:17:43.155Z"},"signalCategories":[{"category":"safety","label":"Safety","form":"graded","verdict":null,"rows":[]},{"category":"reliability","label":"Reliability & Quality","form":"graded","verdict":null,"rows":[]},{"category":"performance","label":"Performance","form":"measured","verdict":{"form":"measured","magnitudes":[{"ruleId":"performance/static-context-tokens","label":"Static context tokens","value":4429,"unit":null,"method":"tiktoken/cl100k_base/skill-md-body"}]},"rows":[{"origin":"signal","id":"cmuxihpk10m2uad07xnu6li04","subjectType":"skill_audit","subjectId":"cmuxihnmz0lnzad07o7gcix0a","relatedType":"","relatedId":"","dataCategory":"performance","sourceClass":"scan","source":"vettd","ruleId":"performance/progressive-disclosure","severity":null,"label":"Progressive disclosure","detail":null,"valueNum":null,"valueText":"present","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:51:52.000Z","payload":null},{"origin":"signal","id":"cmuxiho3a0ls3ad077m58h9pa","subjectType":"skill_audit","subjectId":"cmuxihnmz0lnzad07o7gcix0a","relatedType":"","relatedId":"","dataCategory":"performance","sourceClass":"scan","source":"vettd","ruleId":"performance/static-context-tokens","severity":null,"label":"Static context tokens","detail":null,"valueNum":4429,"valueText":null,"unit":null,"method":"tiktoken/cl100k_base/skill-md-body","derivation":null,"confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:51:52.000Z","payload":null}]},{"category":"cost","label":"Cost","form":"measured","verdict":null,"rows":[]},{"category":"compatibility","label":"Compatibility","form":"unjudged","verdict":{"form":"unjudged"},"rows":[{"origin":"signal","id":"cmuxihpmn0m37ad07bj6ink0l","subjectType":"skill_audit","subjectId":"cmuxihnmz0lnzad07o7gcix0a","relatedType":"","relatedId":"","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/cli-help","severity":null,"label":"CLI help","detail":null,"valueNum":null,"valueText":"present","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:51:52.000Z","payload":null},{"origin":"signal","id":"cmuxiho6k0lt3ad0743rf8gt1","subjectType":"skill_audit","subjectId":"cmuxihnmz0lnzad07o7gcix0a","relatedType":"","relatedId":"","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/declared-environment-assumptions","severity":null,"label":"Declared environment assumptions","detail":null,"valueNum":null,"valueText":"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.","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:51:52.000Z","payload":null},{"origin":"signal","id":"cmuxihovk0ly3ad07ozv4iw42","subjectType":"skill_audit","subjectId":"cmuxihnmz0lnzad07o7gcix0a","relatedType":"","relatedId":"","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/declared-name","severity":null,"label":"Declared skill name","detail":null,"valueNum":null,"valueText":"pydicom","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:51:52.000Z","payload":null},{"origin":"signal","id":"cmuxihppn0m3sad07y9a1toum","subjectType":"skill_audit","subjectId":"cmuxihnmz0lnzad07o7gcix0a","relatedType":"","relatedId":"","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/interactive-prompts","severity":"high","label":"Interactive prompts detected","detail":"Agents run in non-interactive shells — replace prompts with CLI flags or stdin","valueNum":null,"valueText":null,"unit":null,"method":null,"derivation":null,"confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:51:52.000Z","payload":null},{"origin":"signal","id":"cmuxihpn80m3had07sewfq35s","subjectType":"skill_audit","subjectId":"cmuxihnmz0lnzad07o7gcix0a","relatedType":"","relatedId":"","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/structured-output","severity":null,"label":"Structured output","detail":null,"valueNum":null,"valueText":"present","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:51:52.000Z","payload":null}]},{"category":"sentiment","label":"Popularity","form":"unjudged","verdict":null,"rows":[]},{"category":"characteristics","label":"Characteristics","form":"unjudged","verdict":null,"rows":[]}],"signalCount":35,"publisherSupplied":["name","description","author","version","license"]}