[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71MW8MAEZPBKR4QS97FEW6B":3,"skill-same:01M71MW8MAEZPBKR4QS97FEW6B":105},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":35,"linkOnly":36,"markdownContent":37,"markdownBody":38,"frontMatter":39,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":14,"repositoryHtmlUrl":49,"repositoryHomepageUrl":50,"ownerHtmlUrl":51,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":52,"install":53,"resources":66},"01M71MW8MAEZPBKR4QS97FEW6B","dicom-series-to-volume",null,"Used for converting one CT DICOM series folder to a HU NIfTI volume with affine evidence. Not for multi-frame DICOM or clinical use.","pattanation\u002FNorvik","pattanation","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F235419268?v=4","01M71M5THHYYB15ME8R2E4FCZG","Patta","01M71M5TJM1NDM992M8PDKYR2K",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fdicom-series-to-volume\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34],"volume","dicom series to volume","series","with","multi","evidence","NVIDIA","for","folder","clinical","CT","frame","use","Bash","one","team","2026-11-10 10:56:23",false,"---\nname: dicom-series-to-volume\ndescription: Used for converting one CT DICOM series folder to a HU NIfTI volume with affine evidence. Not for multi-frame DICOM or clinical use.\nlicense: Apache-2.0\nallowed-tools: Bash\nmetadata:\n  author: NVIDIA MedTech Team\n  tags:\n    - MedTech\n    - DICOM\n    - NIfTI\n---\n\n# dicom_series_to_volume\n\n## Purpose\n- Used for converting one CT DICOM series folder to a HU NIfTI volume with affine evidence. Not for multi-frame DICOM or clinical use.\n- Use the wrapper exactly as documented; do not replace the upstream entrypoint with a handwritten implementation.\n- Manifest I\u002FO: inputs are `dicom_dir`; outputs are `nifti_volume` and `result_json`.\n\n## Instructions\n- Read `skill_manifest.yaml` before changing arguments, side effects, or validation gates.\n- Run `scripts\u002Fseries_to_volume.py` through the documented command below; keep outputs under a caller-provided run directory.\n- If a host agent exposes `run_script`, use `run_script(\"scripts\u002Fseries_to_volume.py\", args=[...])`; otherwise run the Bash\u002FPython command shown below.\n- Check the emitted JSON and the paired `dicom_volume_quality_v1` verifier before treating the run as evidence.\n\n## Available Scripts\n| Script | Purpose | Arguments |\n|---|---|---|\n| `scripts\u002Fseries_to_volume.py` | Primary entrypoint declared by skill_manifest.yaml. | `PATH_TO_DICOM_DIR [--output OUT.nii.gz]` |\n\n## Prerequisites\n- Runtime requirements: Python packages listed in `runtime.side_effects.pip_packages`.\n- Run commands from the repository root unless an existing section below says otherwise.\n\n## Limitations\n- Single-series only; multi-series input is rejected at preflight.\n- Multi-frame DICOM (NumberOfFrames > 1 per file) not supported.\n- Compressed transfer syntaxes (JPEG \u002F JPEG2000 \u002F RLE) not supported.\n- No voxel reorientation. The affine is derived from DICOM headers and represented in NIfTI\u002FRAS coordinates; a downstream gate (e.g. expected_axcodes) is expected to assert orientation before this volume is fed to a segmentation model.\n- Not for clinical deployment, autonomous diagnosis, regulatory submission, production inference (use a vetted converter such as dcm2niix for that).\n\n## Troubleshooting\n| Error | Cause | Fix |\n|---|---|---|\n| 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. |\n| 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. |\n| 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. |\n\nReads one DICOM series, sorts slices by `ImagePositionPatient`, applies\n`RescaleSlope` and `RescaleIntercept`, builds an affine from orientation and\nspacing tags, and writes a `.nii.gz` plus JSON summary.\n\n```bash\npython scripts\u002Fseries_to_volume.py PATH_TO_DICOM_DIR --output PATH_TO_OUT.nii.gz\n```\n\nFor a trusted run with the paired verifier:\n\n```bash\npython -m eval_engine.run_trusted skills\u002Fdicom-series-to-volume \\\n  --fixture PATH_TO_DICOM_DIR \\\n  --out runs\u002Fdicom_series_to_volume_trusted\n```\n\nKey output fields: `n_slices`, `series_instance_uid`, `output.path`,\n`output.shape`, `output.spacing`, `output.axcodes`, `output.affine`,\n`hu_range`, and `runtime.conversion_seconds`.\n\nScope limits: single-series CT only; no multi-frame DICOM, compressed transfer\nsyntax handling, RT structure sets, auto-reorientation, or clinical use.\n","# dicom_series_to_volume\n\n## Purpose\n- Used for converting one CT DICOM series folder to a HU NIfTI volume with affine evidence. Not for multi-frame DICOM or clinical use.\n- Use the wrapper exactly as documented; do not replace the upstream entrypoint with a handwritten implementation.\n- Manifest I\u002FO: inputs are `dicom_dir`; outputs are `nifti_volume` and `result_json`.\n\n## Instructions\n- Read `skill_manifest.yaml` before changing arguments, side effects, or validation gates.\n- Run `scripts\u002Fseries_to_volume.py` through the documented command below; keep outputs under a caller-provided run directory.\n- If a host agent exposes `run_script`, use `run_script(\"scripts\u002Fseries_to_volume.py\", args=[...])`; otherwise run the Bash\u002FPython command shown below.\n- Check the emitted JSON and the paired `dicom_volume_quality_v1` verifier before treating the run as evidence.\n\n## Available Scripts\n| Script | Purpose | Arguments |\n|---|---|---|\n| `scripts\u002Fseries_to_volume.py` | Primary entrypoint declared by skill_manifest.yaml. | `PATH_TO_DICOM_DIR [--output OUT.nii.gz]` |\n\n## Prerequisites\n- Runtime requirements: Python packages listed in `runtime.side_effects.pip_packages`.\n- Run commands from the repository root unless an existing section below says otherwise.\n\n## Limitations\n- Single-series only; multi-series input is rejected at preflight.\n- Multi-frame DICOM (NumberOfFrames > 1 per file) not supported.\n- Compressed transfer syntaxes (JPEG \u002F JPEG2000 \u002F RLE) not supported.\n- No voxel reorientation. The affine is derived from DICOM headers and represented in NIfTI\u002FRAS coordinates; a downstream gate (e.g. expected_axcodes) is expected to assert orientation before this volume is fed to a segmentation model.\n- Not for clinical deployment, autonomous diagnosis, regulatory submission, production inference (use a vetted converter such as dcm2niix for that).\n\n## Troubleshooting\n| Error | Cause | Fix |\n|---|---|---|\n| 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. |\n| 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. |\n| 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. |\n\nReads one DICOM series, sorts slices by `ImagePositionPatient`, applies\n`RescaleSlope` and `RescaleIntercept`, builds an affine from orientation and\nspacing tags, and writes a `.nii.gz` plus JSON summary.\n\n```bash\npython scripts\u002Fseries_to_volume.py PATH_TO_DICOM_DIR --output PATH_TO_OUT.nii.gz\n```\n\nFor a trusted run with the paired verifier:\n\n```bash\npython -m eval_engine.run_trusted skills\u002Fdicom-series-to-volume \\\n  --fixture PATH_TO_DICOM_DIR \\\n  --out runs\u002Fdicom_series_to_volume_trusted\n```\n\nKey output fields: `n_slices`, `series_instance_uid`, `output.path`,\n`output.shape`, `output.spacing`, `output.axcodes`, `output.affine`,\n`hu_range`, and `runtime.conversion_seconds`.\n\nScope limits: single-series CT only; no multi-frame DICOM, compressed transfer\nsyntax handling, RT structure sets, auto-reorientation, or clinical use.\n",{"name":5,"license":15,"metadata":40,"description":7,"allowed-tools":32},{"tags":41,"author":45},[42,43,44],"MedTech","DICOM","NIfTI","NVIDIA MedTech Team","claude\u002Finstall-gsd-build-foQdV","d86cd127f527124b5fd0fd0bc679a4d79b7d01d7",".agents\u002Fskills\u002Fdicom-series-to-volume","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik","https:\u002F\u002Fnorvik-orpin.vercel.app","https:\u002F\u002Fgithub.com\u002Fpattanation","2026-07-17 11:17:04",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add pattanation\u002FNorvik --skill dicom-series-to-volume",{"tool":59,"command":60},"bunx","bunx skills add pattanation\u002FNorvik --skill dicom-series-to-volume",{"tool":62,"command":63},"pnpm","pnpm dlx skills add pattanation\u002FNorvik --skill dicom-series-to-volume","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fdicom-series-to-volume\u002FSKILL.md",true,[67,73,77,83,87,91,95,101],{"path":68,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":71,"sourceHtmlUrl":72},"BENCHMARK.md","REFERENCE","参考文档",4292,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fdicom-series-to-volume\u002FBENCHMARK.md",{"path":74,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":75,"sourceHtmlUrl":76},"evals\u002Fevals.json",1519,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fdicom-series-to-volume\u002Fevals\u002Fevals.json",{"path":78,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":81,"sourceHtmlUrl":82},"fixtures\u002Fgenerate_fixtures.py","SCRIPT","脚本",5729,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fdicom-series-to-volume\u002Ffixtures\u002Fgenerate_fixtures.py",{"path":84,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":85,"sourceHtmlUrl":86},"scripts\u002Fseries_to_volume.py",9274,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fdicom-series-to-volume\u002Fscripts\u002Fseries_to_volume.py",{"path":88,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":89,"sourceHtmlUrl":90},"skill_manifest.yaml",6188,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fdicom-series-to-volume\u002Fskill_manifest.yaml",{"path":92,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":93,"sourceHtmlUrl":94},"skill-card.md",3774,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fdicom-series-to-volume\u002Fskill-card.md",{"path":96,"resourceType":97,"resourceTypeDesc":98,"sizeBytes":99,"sourceHtmlUrl":100},"skill.oms.sig","OTHER","其他",5553,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fdicom-series-to-volume\u002Fskill.oms.sig",{"path":102,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":103,"sourceHtmlUrl":104},"validators\u002Foutput_schema.json",2105,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fdicom-series-to-volume\u002Fvalidators\u002Foutput_schema.json",[106,138,162,186,208,223],{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":110,"sourceHtmlUrl":111,"categories":112,"keywords":121,"publishedAt":137},"01M71QDV4DM8T19HEHWATEF1K4","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fwebapp-testing\u002FSKILL.md",[113,118],{"categoryNo":114,"categoryName":115,"taxonomyType":116,"taxonomyTypeDesc":117},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":119,"categoryName":120,"taxonomyType":116,"taxonomyTypeDesc":117},"01JBSEEDCAT000000000000009","前端开发",[122,123,124,26,125,126,127,128,129,130,131,22,132,133,134,135,136],"webapp","testing","webapp testing","applications","local","frontend","debugging","toolkit","logs","browser","playwright","web","behavior","ui","screenshots","2026-11-10 13:02:02",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":142,"sourceHtmlUrl":143,"categories":144,"keywords":146,"publishedAt":137},"01M71QDH2GGMXGA9105C9W1N7B","web-artifacts-builder","Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn\u002Fui). Use for complex artifacts requiring state management, routing, or shadcn\u002Fui components - not for simple single-file HTML\u002FJSX artifacts.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fweb-artifacts-builder\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fweb-artifacts-builder\u002FSKILL.md",[145],{"categoryNo":119,"categoryName":120,"taxonomyType":116,"taxonomyTypeDesc":117},[147,148,149,133,150,151,152,26,153,154,127,155,31,156,157,158,23,159,160,161],"builder","artifacts builder","artifacts","web artifacts builder","single-file","css","Tailwind","ui components","single","file","components","react","state","routing","state management",{"skillNo":163,"name":164,"nameZh":6,"description":165,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":166,"licenseFileUrl":167,"sourceHtmlUrl":168,"categories":169,"keywords":171,"publishedAt":137},"01M71QD9T2XC3EWMQNN9ACNWQ1","vueuse-functions","Apply VueUse composables where appropriate to build concise, maintainable Vue.js \u002F Nuxt features.","MIT","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvueuse-functions\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvueuse-functions\u002FSKILL.md",[170],{"categoryNo":119,"categoryName":120,"taxonomyType":116,"taxonomyTypeDesc":117},[172,173,174,175,176,177,178,179,180,181,182,183,184,185],"functions","vueuse","vueuse functions","project","nuxt","apply","github","concise","build","https","features","vue","js","composables",{"skillNo":187,"name":188,"nameZh":6,"description":189,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":166,"licenseFileUrl":190,"sourceHtmlUrl":191,"categories":192,"keywords":195,"publishedAt":137},"01M71QD51HWSGYMCMB7RW7PGK8","vue-testing-best-practices","Use for Vue.js testing. Covers Vitest, Vue Test Utils, component testing, mocking, testing patterns, and Playwright for E2E testing.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-testing-best-practices\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-testing-best-practices\u002FSKILL.md",[193,194],{"categoryNo":114,"categoryName":115,"taxonomyType":116,"taxonomyTypeDesc":117},{"categoryNo":119,"categoryName":120,"taxonomyType":116,"taxonomyTypeDesc":117},[196,123,197,183,198,132,199,200,201,178,202,26,203,204,205,31,206,184,207],"vue testing best practices","testing best practices","best practices","test","testing patterns","component","vitest","mocking","e2e","utils","patterns","e2e testing",{"skillNo":209,"name":210,"nameZh":6,"description":211,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":166,"licenseFileUrl":212,"sourceHtmlUrl":213,"categories":214,"keywords":216,"publishedAt":137},"01M71QD358H2DJ9THJRBP77T3T","vue-router-best-practices","Vue Router 4 patterns, navigation guards, route params, and route-component lifecycle interactions.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-router-best-practices\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-router-best-practices\u002FSKILL.md",[215],{"categoryNo":119,"categoryName":120,"taxonomyType":116,"taxonomyTypeDesc":117},[217,183,218,198,219,201,220,178,206,221,222],"router","vue router best practices","route","guards","navigation","lifecycle",{"skillNo":224,"name":225,"nameZh":6,"description":226,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":166,"licenseFileUrl":227,"sourceHtmlUrl":228,"categories":229,"keywords":231,"publishedAt":137},"01M71QCYPNWDE2MQZ1TF3ED5S4","vue-best-practices","MUST be used for Vue.js tasks. Strongly recommends Composition API with `\u003Cscript setup>` and TypeScript as the standard approach. Covers Vue 3, SSR, Volar, vue-tsc. Load for any Vue, .vue files, Vue Router, Pinia, or Vite with Vue work. ALWAYS use Composition API unless the project explicitly requires Options API.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002FSKILL.md",[230],{"categoryNo":119,"categoryName":120,"taxonomyType":116,"taxonomyTypeDesc":117},[232,183,198,233,175,234,235,236,217,237,238,239,240,241,242,26,243,31,244,245],"vue best practices","Composition","files","tasks","api","pinia","work","options","ssr","typescript","as","vite","load","standard"]