[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71PZ1JS8PV3CQRYC6M2T72Z":3,"skill-same:01M71PZ1JS8PV3CQRYC6M2T72Z":178},{"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":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":50,"commitSha":51,"skillDirectory":52,"forksCount":14,"repositoryHtmlUrl":53,"repositoryHomepageUrl":54,"ownerHtmlUrl":55,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":56,"install":57,"resources":70},"01M71PZ1JS8PV3CQRYC6M2T72Z","tao-train-depth-anything-v2",null,"Monocular depth estimation using Metric Depth Anything v2 or Relative Depth Anything architectures. Predicts per-pixel depth from single RGB images. Use when training, evaluating, exporting, or running inference for a TAO monocular depth model. Trigger phrases include \"train monocular depth\", \"DepthAnything v2\", \"metric depth from single image\", \"monocular depth estimation\".","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\u002Ftao-train-depth-anything-v2\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"depth","tao","train","tao train depth anything v2","docker","for","NVIDIA","architectures","running","metric","read","monocular","Bash","image","when","estimation","pixel","training","model","images","2026-11-10 13:02:02",false,"---\nname: tao-train-depth-anything-v2\ndescription: Monocular depth estimation using Metric Depth Anything v2 or Relative Depth Anything architectures. Predicts\n  per-pixel depth from single RGB images. Use when training, evaluating, exporting, or running inference for a TAO\n  monocular depth model. Trigger phrases include \"train monocular depth\", \"DepthAnything v2\", \"metric depth from single\n  image\", \"monocular depth estimation\".\nlicense: Apache-2.0\ncompatibility: Requires docker + nvidia-container-toolkit.\nmetadata:\n  version: \"0.1.0\"\n  author: NVIDIA Corporation\nallowed-tools: Read Bash\ntags:\n- monocular\n- depth\n- estimation\n---\n\n# Depth Net Mono\n\nMonocular depth estimation using Metric Depth Anything v2 or Relative Depth Anything architectures. Predicts per-pixel depth from single RGB images.\n\nPretrained checkpoint loading varies by model variant and use case — see the **Pretrained checkpoint loading — use case matrix** in `references\u002Fparameters.md`.\n\nThe mono and stereo skills both invoke the unified TAO `depth_net` CLI inside the container; the mono\u002Fstereo family is selected via `model.model_type` (see `references\u002Fparameters.md`).\n\nFor TAO Deploy TensorRT actions (`gen_trt_engine`, TensorRT `evaluate`, and TensorRT `inference`), read `references\u002Ftao-deploy-depth-anything-v2.md` first. The deploy spec template lives in this skill's `references\u002Fspec_template_deploy.yaml`.\n\nPyT actions packaged by this model skill: `train`, `evaluate`, `inference`, `export`, and `quantize`. The PyT `depth_net` entrypoint does not accept a PyT-side `gen_trt_engine` action in the current TAO image. The `gen_trt_engine` action metadata must run with the TAO Deploy container, and the deploy workflow remains the deploy-specific entrypoint.\n\n## Train Action Policy\n\nThis model is AutoML-enabled at the model layer. Before handling any train-stage request, read `references\u002Fskill_info.yaml` and resolve the run override from either an explicit `automl_policy` value or the user's workflow request. Use `automl_policy: on` by default and only expose `on` \u002F `off` in new launch prompts. Treat phrases like \"turn off AutoML\", \"disable AutoML\", \"no HPO\", or \"plain training\" as `automl_policy: off` for this run only. When `automl_policy: on`, `automl_enabled: true`, and both `schemas\u002Ftrain.schema.json` and `references\u002Fspec_template_train.yaml` are packaged, route the train action through `tao-skill-bank:tao-run-automl` by default with this model's `skill_dir`. Preserve workflow\u002Fapplication overrides for datasets, specs, output directories, GPU\u002Fplatform settings, parent checkpoints, and `automl_policy`. Use direct model training only when `automl_policy: off` or the packaged train schema\u002Ftemplate is missing; in the missing-schema case, report that AutoML is enabled but not runnable for this model until schemas are generated.\n\nNon-train actions such as `evaluate`, `inference`, `export`, and deploy flows stay in this model skill. The per-run `automl_policy` override does not change model metadata.\n\n## Workflow\n\n### Prerequisites — data accessibility\n\nYour dataset (RGB images + GT depth files) must be reachable from inside the container:\n- **SDK runner**: place files at the S3 paths the runner resolves (the `S3_TRAIN` \u002F `S3_EVAL` placeholders shown in **Typical Spec Overrides**). The runner handles S3 → container-path mounting transparently.\n- **Direct `docker run`** (e.g. local testing): mount the host dataset root read-only at the same in-container path:\n\n```\ndocker run ... -v \u003Chost_data_root>:\u003Chost_data_root>:ro \u003Ccontainer> ...\n```\n\nThe same accessibility requirement applies to the `\u003Coutput_dir>` written by all actions.\n\n### Step 1 — Annotation file\n\nPer-line annotation file referenced by `data_sources[*].data_file`:\n\n| Columns | Format | Use |\n|---|---|---|\n| 1 | `\u003Cimage>` | Mono inference (no GT) |\n| 2 | `\u003Cimage> \u003Cgt_depth>` | Mono with GT |\n\nDo not pass stereo annotation rows such as `\u003Cleft_image> \u003Cright_image>\n\u003Cgt_depth>` directly to mono train\u002Fevaluate\u002Finference. If only a stereo depth\ndataset is available, derive a mono annotation file by keeping the left image\nand GT depth columns, then mount or stage the image\u002Fdepth archive at the same\ncontainer paths referenced by that derived annotation file.\n\nIf you already have one, point to it. Otherwise generate via `depth_net convert`:\n\n```\ndepth_net convert -e \u003Cconvert_spec.yaml>\n```\n\n`convert_spec.yaml` template:\n\n```yaml\nresults_dir: \u003Cdirectory where generated annotation files are written>\ndata_root: \u003Cdirectory whose immediate children are scene\u002Fsample folders that contain your image+depth files; convert walks data_root recursively but expects per-scene subdirectories at one level below>\nimage_dir_pattern: [\u003Csubstring matching left\u002FRGB image paths>]\ndepth_dir_pattern: [\u003Csubstring matching GT depth paths>]\nimage_extension: ''     # optional .endswith filter, e.g. '.jpg'\ndepth_extension: ''     # optional, swapped during depth derivation, e.g. '.png'\nsplit_ratio: 0.0        # 0.0\u002F1.0 = test-only; 0.8 = 80\u002F20 train+val\n```\n\n`convert` walks `data_root` recursively, selects paths whose path-string contains *all* substrings in `image_dir_pattern` (AND-filter), then derives the depth path by replacing `image_dir_pattern[0]` with `depth_dir_pattern[0]` and `image_extension` with `depth_extension`. Inspect your dataset's directory layout and identify the substring distinguishing RGB images from depth files (e.g. `rgb_` vs `sync_depth_`).\n\n`data_root` must point at the parent that contains the per-scene subdirectories (e.g. for NYU eval, use `\u002Fdata\u002Fnyu_v2\u002Feval\u002Ftest`, not `\u002Fdata\u002Fnyu_v2\u002Feval\u002Ftest\u002Fbathroom` — the latter limits the walk to a single scene). Always include the leading dot in `image_extension` \u002F `depth_extension` (e.g. `'.jpg'` not `'jpg'`); the substring swap is form-sensitive and a mismatch silently corrupts derived paths.\n\n### Step 2 — Pair `model_type` and `dataset_name` based on your data\n\nDefault — generic class for each task:\n\n| Data category | `model_type` | `dataset_name` |\n|---|---|---|\n| Disparity-encoded data (pixels) | `RelativeDepthAnything` | `RelativeMonoDataset` |\n| Metric depth (meters) | `MetricDepthAnything` | `MetricMonoDataset` |\n| Mono inference (no GT, any image) | matches train choice | `RelativeMonoDataset` or `MetricMonoDataset` |\n\nDataset-specific class — switch when the data needs preprocessing the generic class does not perform:\n\n| Special case | `model_type` | `dataset_name` | What the class adds |\n|---|---|---|---|\n| NYU `sync_depth_*.png` (raw uint16 millimetres) — relative | `RelativeDepthAnything` | `NYUDV2Relative` | mm→m unit conversion + Eigen evaluation crop |\n| NYU `sync_depth_*.png` (raw uint16 millimetres) — metric | `MetricDepthAnything` | `NYUDV2` | same |\n\nUsing a generic class on data that requires unit conversion (e.g. raw NYU uint16 PNGs) results in an empty valid mask and silent `train_loss = NaN`. Match the class to your data's encoding.\n\nFor relative mono data (`RelativeMonoDataset` or `NYUDV2Relative`), leave `dataset.min_depth` and `dataset.max_depth` unset or set both to `null`. Non-null metric depth ranges are passed into the relative dataset constructor and fail with `BaseRelativeMonoDataset.__init__() got an unexpected keyword argument 'min_depth'`.\n\n### Step 3 — Write spec yaml from Typical Spec Overrides\n\nCopy the action block from **Typical Spec Overrides** (`references\u002Fspec-overrides.md`). Replace:\n- `model.model_type` from Step 2\n- `dataset.\u003C...>.data_sources[*].dataset_name` from Step 2\n- `data_sources[*].data_file` with the path from Step 1 (S3 path under SDK runner, host path for direct docker)\n- For metric finetune: additionally apply the **Metric Variant Finetuning Recipe** in `references\u002Ffinetuning-recipes.md`.\n\nFor mono training set `train.precision: fp32` (recommended) or `bf16` (Ampere SM80+, alternative).\n\n### Step 4 — Run\n\nCreate writable home\u002Fcache directories inside the mounted output path before using\n`--user`. Some TAO containers do not have an `\u002Fetc\u002Fpasswd` entry for the host UID,\nand PyTorch \u002F matplotlib need writable cache paths when running as that UID.\n\n```bash\nmkdir -p \u003Coutput_dir>\u002Fhome \\\n         \u003Coutput_dir>\u002F.cache\u002Fmatplotlib \\\n         \u003Coutput_dir>\u002F.cache\u002Ftorchinductor \\\n         \u003Coutput_dir>\u002F.cache\u002Fxdg\n```\n\n```\ndocker run --gpus 'device=0' --shm-size 16G --ipc=host \\\n  --user \"$(id -u):$(id -g)\" \\\n  -e USER=\"$(id -un)\" \\\n  -e LOGNAME=\"$(id -un)\" \\\n  -e HOME=\u003Coutput_dir>\u002Fhome \\\n  -e MPLCONFIGDIR=\u003Coutput_dir>\u002F.cache\u002Fmatplotlib \\\n  -e TORCHINDUCTOR_CACHE_DIR=\u003Coutput_dir>\u002F.cache\u002Ftorchinductor \\\n  -e XDG_CACHE_HOME=\u003Coutput_dir>\u002F.cache\u002Fxdg \\\n  -v \u003Cdata_root>:\u003Cdata_root>:ro \\\n  -v \u003Coutput_dir>:\u003Coutput_dir> \\\n  \u003Ccontainer> \\\n  depth_net \u003Caction> -e \u003Cspec.yaml>\n```\n\nWithout `--user \"$(id -u):$(id -g)\"` the container writes outputs as `nobody:nogroup`, blocking host-side cleanup and retry.\n\n### Step 5 — Verify\n\n- Container exit code 0\n- `status.json` `kpi` block populated\n- For `train`: inspect per-step `train_loss` directly — the entrypoint reports `Execution status: PASS` even when `train_loss = NaN` (see the Metric Variant Finetuning Recipe → Sanity-run PASS criteria in `references\u002Ffinetuning-recipes.md`)\n- For `evaluate` \u002F `inference`: artifacts under `results_dir`\n\nFor TAO Deploy TensorRT actions (`gen_trt_engine`, TensorRT `evaluate`, and TensorRT `inference`), read `references\u002Ftao-deploy-depth-anything-v2.md` first. Deploy spec templates live in this skill's `references\u002F` folder with the `spec_template_deploy_*.yaml` prefix.\n\n## Training Requirements\n\n- **Valid `dataset_name` values for mono `data_sources`** (case-insensitive): `ThreeDVLM`, `FSD`, `NvCLIP`, `IssacStereo`, `Crestereo`, `Middlebury`, `NYUDV2`, `NYUDV2Relative`, `RelativeMonoDataset`, `MetricMonoDataset`. `NYUDV2` carries metric depth GT (meters) — pair with `MetricDepthAnything`; `NYUDV2Relative` is the same data with relative-depth conventions — pair with `RelativeDepthAnything`.\n- **Monitoring metric:** val\u002Fd1, val\u002Floss\n- For AutoML sanity runs on the packaged relative-depth smoke data, use `val\u002Fd1` as the primary monitor. `val\u002Floss` can be emitted as `NaN` even when the trainer exits successfully and writes a usable checkpoint, so it is not a reliable AutoML objective unless the run's status metrics show a finite value.\n\n### Per-Action Dataset Requirements\n\n| Action | Spec Key | Source | Files | List? |\n|---|---|---|---|---|\n| evaluate | dataset.test_dataset.data_sources | eval_dataset | data_file: annotations.txt + dataset_name | Yes |\n| inference | dataset.infer_dataset.data_sources | inference_dataset | data_file: annotations.txt + dataset_name | Yes |\n| quantize | dataset.train_dataset.data_sources | train_datasets | data_file: annotations.txt + dataset_name | Yes |\n| quantize | dataset.val_dataset.data_sources | eval_dataset | data_file: annotations.txt + dataset_name | Yes |\n| quantize | dataset.quant_calibration_dataset.images_dir | train_datasets | images.tar.gz | No |\n| train | dataset.train_dataset.data_sources | train_datasets | data_file: annotations.txt + dataset_name | Yes |\n| train | dataset.val_dataset.data_sources | eval_dataset | data_file: annotations.txt + dataset_name | Yes |\n\n### Typical Spec Overrides\n\nData source overrides are **mandatory for every action** — construct data source paths from the Per-Action Dataset Requirements table above and include them in `spec_overrides`. Each `data_sources` entry is a dict with **two mandatory fields**: `data_file` and `dataset_name`. See `references\u002Fspec-overrides.md` for the full per-action override blocks (`train`, `evaluate`, `export`, `inference`, `quantize`), the `S3_TRAIN` \u002F `S3_EVAL` placeholders, the relative-variant precision recommendation, and the `quantize` known-issue note.\n\n## Eval Dataset\n\nOptional. Val dataset configured via `dataset.val_dataset.data_sources` (each entry needs `data_file` and `dataset_name`).\n\n## Important Parameters\n\nSee `references\u002Fparameters.md` for the full parameter glossary (model, train, dataset, export, and inference keys with options, defaults, and sources) and the **Pretrained checkpoint loading — use case matrix**.\n\n## Finetuning Recipes\n\nSee `references\u002Ffinetuning-recipes.md` for:\n- **Relative Variant Finetuning Recipe** — finetune from a TAO-trained `RelativeDepthAnything` checkpoint (lr `5e-6`, `LambdaLR`, sanity-vs-convergent guidance, deploy LSQ alignment note).\n- **Metric Variant Finetuning Recipe** — checkpoint compatibility, required overrides, the dataset normalization block (`normalize_depth`\u002F`min_depth`\u002F`max_depth`) required in train AND export specs, trainer-enforced defaults, precision, the 1-epoch sanity-run override, and the Sanity-run PASS criteria with the NaN-mitigation order.\n\n## Multi-GPU \u002F Multi-Node\n\n**Launch method:** Lightning-managed (single `python` process, Lightning spawns workers).\n\n| Spec Key | Description | Default |\n|----------|-------------|---------|\n| `train.num_gpus` | Number of GPUs | 1 |\n| `train.gpu_ids` | GPU device indices | [0] |\n| `train.num_nodes` | Number of nodes | 1 |\n| `train.distributed_strategy` | `ddp` or `fsdp` | `ddp` |\n\n- `ddp` with activation checkpointing: `find_unused_parameters=False`\n- `ddp` without: `find_unused_parameters=True`\n- `fsdp` forces precision to FP16\n\n**Multi-node env vars** (set by orchestrator): `WORLD_SIZE`, `NODE_RANK`, `MASTER_ADDR`, `MASTER_PORT`, `NUM_GPU_PER_NODE`.\n\n## Export \u002F TRT Defaults\n\n- TRT data types: FP32, BF16 (Ampere SM80+). FP16 is not supported for the ViT-L mono backbone.\n- Fresh-install TRT precision: `fp32`. BF16 is supported on Ampere SM80+ hardware, but keep smoke tests on FP32 unless the user explicitly requests BF16.\n\n## Hardware\n\nMinimum 1 GPU(s), recommended 2 GPU(s). 24GB+ VRAM per GPU. ViT-Large encoder is memory intensive. Use `fp32` (recommended) or `bf16` (Ampere SM80+, alternative) for training. Activation checkpointing is available for larger inputs.\n\n## Error Patterns\n\nSee `references\u002Ftroubleshooting.md` for the full error-pattern catalog (depth range mismatch, relative dataset rejecting `min_depth`, missing pretrained weights, `encoder` key location, `dataset_name` not in struct, `depth_net_mono` not found, metric variant hyperparameter sourcing, and export ONNX overwrite).\n\n## Spec Param \u002F Parent Model Inference\n\nSee `references\u002Fspec-param-inference.md` for the model-specific inference mappings (the TAO Core `depth_net_mono.config.json` action table), checkpoint-file naming under `\u003Cresults_dir>\u002Ftrain\u002F`, the `dn_model_latest.pth` policy, the parent-`gen_trt_engine` rationale, and the `parent_model` \u002F `parent_job_id` resolution rules.\n\n## Deployment\n\n- [tao-deploy-depth-anything-v2](references\u002Ftao-deploy-depth-anything-v2.md)\n","# Depth Net Mono\n\nMonocular depth estimation using Metric Depth Anything v2 or Relative Depth Anything architectures. Predicts per-pixel depth from single RGB images.\n\nPretrained checkpoint loading varies by model variant and use case — see the **Pretrained checkpoint loading — use case matrix** in `references\u002Fparameters.md`.\n\nThe mono and stereo skills both invoke the unified TAO `depth_net` CLI inside the container; the mono\u002Fstereo family is selected via `model.model_type` (see `references\u002Fparameters.md`).\n\nFor TAO Deploy TensorRT actions (`gen_trt_engine`, TensorRT `evaluate`, and TensorRT `inference`), read `references\u002Ftao-deploy-depth-anything-v2.md` first. The deploy spec template lives in this skill's `references\u002Fspec_template_deploy.yaml`.\n\nPyT actions packaged by this model skill: `train`, `evaluate`, `inference`, `export`, and `quantize`. The PyT `depth_net` entrypoint does not accept a PyT-side `gen_trt_engine` action in the current TAO image. The `gen_trt_engine` action metadata must run with the TAO Deploy container, and the deploy workflow remains the deploy-specific entrypoint.\n\n## Train Action Policy\n\nThis model is AutoML-enabled at the model layer. Before handling any train-stage request, read `references\u002Fskill_info.yaml` and resolve the run override from either an explicit `automl_policy` value or the user's workflow request. Use `automl_policy: on` by default and only expose `on` \u002F `off` in new launch prompts. Treat phrases like \"turn off AutoML\", \"disable AutoML\", \"no HPO\", or \"plain training\" as `automl_policy: off` for this run only. When `automl_policy: on`, `automl_enabled: true`, and both `schemas\u002Ftrain.schema.json` and `references\u002Fspec_template_train.yaml` are packaged, route the train action through `tao-skill-bank:tao-run-automl` by default with this model's `skill_dir`. Preserve workflow\u002Fapplication overrides for datasets, specs, output directories, GPU\u002Fplatform settings, parent checkpoints, and `automl_policy`. Use direct model training only when `automl_policy: off` or the packaged train schema\u002Ftemplate is missing; in the missing-schema case, report that AutoML is enabled but not runnable for this model until schemas are generated.\n\nNon-train actions such as `evaluate`, `inference`, `export`, and deploy flows stay in this model skill. The per-run `automl_policy` override does not change model metadata.\n\n## Workflow\n\n### Prerequisites — data accessibility\n\nYour dataset (RGB images + GT depth files) must be reachable from inside the container:\n- **SDK runner**: place files at the S3 paths the runner resolves (the `S3_TRAIN` \u002F `S3_EVAL` placeholders shown in **Typical Spec Overrides**). The runner handles S3 → container-path mounting transparently.\n- **Direct `docker run`** (e.g. local testing): mount the host dataset root read-only at the same in-container path:\n\n```\ndocker run ... -v \u003Chost_data_root>:\u003Chost_data_root>:ro \u003Ccontainer> ...\n```\n\nThe same accessibility requirement applies to the `\u003Coutput_dir>` written by all actions.\n\n### Step 1 — Annotation file\n\nPer-line annotation file referenced by `data_sources[*].data_file`:\n\n| Columns | Format | Use |\n|---|---|---|\n| 1 | `\u003Cimage>` | Mono inference (no GT) |\n| 2 | `\u003Cimage> \u003Cgt_depth>` | Mono with GT |\n\nDo not pass stereo annotation rows such as `\u003Cleft_image> \u003Cright_image>\n\u003Cgt_depth>` directly to mono train\u002Fevaluate\u002Finference. If only a stereo depth\ndataset is available, derive a mono annotation file by keeping the left image\nand GT depth columns, then mount or stage the image\u002Fdepth archive at the same\ncontainer paths referenced by that derived annotation file.\n\nIf you already have one, point to it. Otherwise generate via `depth_net convert`:\n\n```\ndepth_net convert -e \u003Cconvert_spec.yaml>\n```\n\n`convert_spec.yaml` template:\n\n```yaml\nresults_dir: \u003Cdirectory where generated annotation files are written>\ndata_root: \u003Cdirectory whose immediate children are scene\u002Fsample folders that contain your image+depth files; convert walks data_root recursively but expects per-scene subdirectories at one level below>\nimage_dir_pattern: [\u003Csubstring matching left\u002FRGB image paths>]\ndepth_dir_pattern: [\u003Csubstring matching GT depth paths>]\nimage_extension: ''     # optional .endswith filter, e.g. '.jpg'\ndepth_extension: ''     # optional, swapped during depth derivation, e.g. '.png'\nsplit_ratio: 0.0        # 0.0\u002F1.0 = test-only; 0.8 = 80\u002F20 train+val\n```\n\n`convert` walks `data_root` recursively, selects paths whose path-string contains *all* substrings in `image_dir_pattern` (AND-filter), then derives the depth path by replacing `image_dir_pattern[0]` with `depth_dir_pattern[0]` and `image_extension` with `depth_extension`. Inspect your dataset's directory layout and identify the substring distinguishing RGB images from depth files (e.g. `rgb_` vs `sync_depth_`).\n\n`data_root` must point at the parent that contains the per-scene subdirectories (e.g. for NYU eval, use `\u002Fdata\u002Fnyu_v2\u002Feval\u002Ftest`, not `\u002Fdata\u002Fnyu_v2\u002Feval\u002Ftest\u002Fbathroom` — the latter limits the walk to a single scene). Always include the leading dot in `image_extension` \u002F `depth_extension` (e.g. `'.jpg'` not `'jpg'`); the substring swap is form-sensitive and a mismatch silently corrupts derived paths.\n\n### Step 2 — Pair `model_type` and `dataset_name` based on your data\n\nDefault — generic class for each task:\n\n| Data category | `model_type` | `dataset_name` |\n|---|---|---|\n| Disparity-encoded data (pixels) | `RelativeDepthAnything` | `RelativeMonoDataset` |\n| Metric depth (meters) | `MetricDepthAnything` | `MetricMonoDataset` |\n| Mono inference (no GT, any image) | matches train choice | `RelativeMonoDataset` or `MetricMonoDataset` |\n\nDataset-specific class — switch when the data needs preprocessing the generic class does not perform:\n\n| Special case | `model_type` | `dataset_name` | What the class adds |\n|---|---|---|---|\n| NYU `sync_depth_*.png` (raw uint16 millimetres) — relative | `RelativeDepthAnything` | `NYUDV2Relative` | mm→m unit conversion + Eigen evaluation crop |\n| NYU `sync_depth_*.png` (raw uint16 millimetres) — metric | `MetricDepthAnything` | `NYUDV2` | same |\n\nUsing a generic class on data that requires unit conversion (e.g. raw NYU uint16 PNGs) results in an empty valid mask and silent `train_loss = NaN`. Match the class to your data's encoding.\n\nFor relative mono data (`RelativeMonoDataset` or `NYUDV2Relative`), leave `dataset.min_depth` and `dataset.max_depth` unset or set both to `null`. Non-null metric depth ranges are passed into the relative dataset constructor and fail with `BaseRelativeMonoDataset.__init__() got an unexpected keyword argument 'min_depth'`.\n\n### Step 3 — Write spec yaml from Typical Spec Overrides\n\nCopy the action block from **Typical Spec Overrides** (`references\u002Fspec-overrides.md`). Replace:\n- `model.model_type` from Step 2\n- `dataset.\u003C...>.data_sources[*].dataset_name` from Step 2\n- `data_sources[*].data_file` with the path from Step 1 (S3 path under SDK runner, host path for direct docker)\n- For metric finetune: additionally apply the **Metric Variant Finetuning Recipe** in `references\u002Ffinetuning-recipes.md`.\n\nFor mono training set `train.precision: fp32` (recommended) or `bf16` (Ampere SM80+, alternative).\n\n### Step 4 — Run\n\nCreate writable home\u002Fcache directories inside the mounted output path before using\n`--user`. Some TAO containers do not have an `\u002Fetc\u002Fpasswd` entry for the host UID,\nand PyTorch \u002F matplotlib need writable cache paths when running as that UID.\n\n```bash\nmkdir -p \u003Coutput_dir>\u002Fhome \\\n         \u003Coutput_dir>\u002F.cache\u002Fmatplotlib \\\n         \u003Coutput_dir>\u002F.cache\u002Ftorchinductor \\\n         \u003Coutput_dir>\u002F.cache\u002Fxdg\n```\n\n```\ndocker run --gpus 'device=0' --shm-size 16G --ipc=host \\\n  --user \"$(id -u):$(id -g)\" \\\n  -e USER=\"$(id -un)\" \\\n  -e LOGNAME=\"$(id -un)\" \\\n  -e HOME=\u003Coutput_dir>\u002Fhome \\\n  -e MPLCONFIGDIR=\u003Coutput_dir>\u002F.cache\u002Fmatplotlib \\\n  -e TORCHINDUCTOR_CACHE_DIR=\u003Coutput_dir>\u002F.cache\u002Ftorchinductor \\\n  -e XDG_CACHE_HOME=\u003Coutput_dir>\u002F.cache\u002Fxdg \\\n  -v \u003Cdata_root>:\u003Cdata_root>:ro \\\n  -v \u003Coutput_dir>:\u003Coutput_dir> \\\n  \u003Ccontainer> \\\n  depth_net \u003Caction> -e \u003Cspec.yaml>\n```\n\nWithout `--user \"$(id -u):$(id -g)\"` the container writes outputs as `nobody:nogroup`, blocking host-side cleanup and retry.\n\n### Step 5 — Verify\n\n- Container exit code 0\n- `status.json` `kpi` block populated\n- For `train`: inspect per-step `train_loss` directly — the entrypoint reports `Execution status: PASS` even when `train_loss = NaN` (see the Metric Variant Finetuning Recipe → Sanity-run PASS criteria in `references\u002Ffinetuning-recipes.md`)\n- For `evaluate` \u002F `inference`: artifacts under `results_dir`\n\nFor TAO Deploy TensorRT actions (`gen_trt_engine`, TensorRT `evaluate`, and TensorRT `inference`), read `references\u002Ftao-deploy-depth-anything-v2.md` first. Deploy spec templates live in this skill's `references\u002F` folder with the `spec_template_deploy_*.yaml` prefix.\n\n## Training Requirements\n\n- **Valid `dataset_name` values for mono `data_sources`** (case-insensitive): `ThreeDVLM`, `FSD`, `NvCLIP`, `IssacStereo`, `Crestereo`, `Middlebury`, `NYUDV2`, `NYUDV2Relative`, `RelativeMonoDataset`, `MetricMonoDataset`. `NYUDV2` carries metric depth GT (meters) — pair with `MetricDepthAnything`; `NYUDV2Relative` is the same data with relative-depth conventions — pair with `RelativeDepthAnything`.\n- **Monitoring metric:** val\u002Fd1, val\u002Floss\n- For AutoML sanity runs on the packaged relative-depth smoke data, use `val\u002Fd1` as the primary monitor. `val\u002Floss` can be emitted as `NaN` even when the trainer exits successfully and writes a usable checkpoint, so it is not a reliable AutoML objective unless the run's status metrics show a finite value.\n\n### Per-Action Dataset Requirements\n\n| Action | Spec Key | Source | Files | List? |\n|---|---|---|---|---|\n| evaluate | dataset.test_dataset.data_sources | eval_dataset | data_file: annotations.txt + dataset_name | Yes |\n| inference | dataset.infer_dataset.data_sources | inference_dataset | data_file: annotations.txt + dataset_name | Yes |\n| quantize | dataset.train_dataset.data_sources | train_datasets | data_file: annotations.txt + dataset_name | Yes |\n| quantize | dataset.val_dataset.data_sources | eval_dataset | data_file: annotations.txt + dataset_name | Yes |\n| quantize | dataset.quant_calibration_dataset.images_dir | train_datasets | images.tar.gz | No |\n| train | dataset.train_dataset.data_sources | train_datasets | data_file: annotations.txt + dataset_name | Yes |\n| train | dataset.val_dataset.data_sources | eval_dataset | data_file: annotations.txt + dataset_name | Yes |\n\n### Typical Spec Overrides\n\nData source overrides are **mandatory for every action** — construct data source paths from the Per-Action Dataset Requirements table above and include them in `spec_overrides`. Each `data_sources` entry is a dict with **two mandatory fields**: `data_file` and `dataset_name`. See `references\u002Fspec-overrides.md` for the full per-action override blocks (`train`, `evaluate`, `export`, `inference`, `quantize`), the `S3_TRAIN` \u002F `S3_EVAL` placeholders, the relative-variant precision recommendation, and the `quantize` known-issue note.\n\n## Eval Dataset\n\nOptional. Val dataset configured via `dataset.val_dataset.data_sources` (each entry needs `data_file` and `dataset_name`).\n\n## Important Parameters\n\nSee `references\u002Fparameters.md` for the full parameter glossary (model, train, dataset, export, and inference keys with options, defaults, and sources) and the **Pretrained checkpoint loading — use case matrix**.\n\n## Finetuning Recipes\n\nSee `references\u002Ffinetuning-recipes.md` for:\n- **Relative Variant Finetuning Recipe** — finetune from a TAO-trained `RelativeDepthAnything` checkpoint (lr `5e-6`, `LambdaLR`, sanity-vs-convergent guidance, deploy LSQ alignment note).\n- **Metric Variant Finetuning Recipe** — checkpoint compatibility, required overrides, the dataset normalization block (`normalize_depth`\u002F`min_depth`\u002F`max_depth`) required in train AND export specs, trainer-enforced defaults, precision, the 1-epoch sanity-run override, and the Sanity-run PASS criteria with the NaN-mitigation order.\n\n## Multi-GPU \u002F Multi-Node\n\n**Launch method:** Lightning-managed (single `python` process, Lightning spawns workers).\n\n| Spec Key | Description | Default |\n|----------|-------------|---------|\n| `train.num_gpus` | Number of GPUs | 1 |\n| `train.gpu_ids` | GPU device indices | [0] |\n| `train.num_nodes` | Number of nodes | 1 |\n| `train.distributed_strategy` | `ddp` or `fsdp` | `ddp` |\n\n- `ddp` with activation checkpointing: `find_unused_parameters=False`\n- `ddp` without: `find_unused_parameters=True`\n- `fsdp` forces precision to FP16\n\n**Multi-node env vars** (set by orchestrator): `WORLD_SIZE`, `NODE_RANK`, `MASTER_ADDR`, `MASTER_PORT`, `NUM_GPU_PER_NODE`.\n\n## Export \u002F TRT Defaults\n\n- TRT data types: FP32, BF16 (Ampere SM80+). FP16 is not supported for the ViT-L mono backbone.\n- Fresh-install TRT precision: `fp32`. BF16 is supported on Ampere SM80+ hardware, but keep smoke tests on FP32 unless the user explicitly requests BF16.\n\n## Hardware\n\nMinimum 1 GPU(s), recommended 2 GPU(s). 24GB+ VRAM per GPU. ViT-Large encoder is memory intensive. Use `fp32` (recommended) or `bf16` (Ampere SM80+, alternative) for training. Activation checkpointing is available for larger inputs.\n\n## Error Patterns\n\nSee `references\u002Ftroubleshooting.md` for the full error-pattern catalog (depth range mismatch, relative dataset rejecting `min_depth`, missing pretrained weights, `encoder` key location, `dataset_name` not in struct, `depth_net_mono` not found, metric variant hyperparameter sourcing, and export ONNX overwrite).\n\n## Spec Param \u002F Parent Model Inference\n\nSee `references\u002Fspec-param-inference.md` for the model-specific inference mappings (the TAO Core `depth_net_mono.config.json` action table), checkpoint-file naming under `\u003Cresults_dir>\u002Ftrain\u002F`, the `dn_model_latest.pth` policy, the parent-`gen_trt_engine` rationale, and the `parent_model` \u002F `parent_job_id` resolution rules.\n\n## Deployment\n\n- [tao-deploy-depth-anything-v2](references\u002Ftao-deploy-depth-anything-v2.md)\n",{"name":5,"tags":44,"license":15,"metadata":45,"description":7,"allowed-tools":48,"compatibility":49},[30,19,34],{"author":46,"version":47},"NVIDIA Corporation","0.1.0","Read Bash","Requires docker + nvidia-container-toolkit.","claude\u002Finstall-gsd-build-foQdV","d86cd127f527124b5fd0fd0bc679a4d79b7d01d7",".agents\u002Fskills\u002Ftao-train-depth-anything-v2","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":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add pattanation\u002FNorvik --skill tao-train-depth-anything-v2",{"tool":63,"command":64},"bunx","bunx skills add pattanation\u002FNorvik --skill tao-train-depth-anything-v2",{"tool":66,"command":67},"pnpm","pnpm dlx skills add pattanation\u002FNorvik --skill tao-train-depth-anything-v2","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-depth-anything-v2\u002FSKILL.md",true,[71,77,81,85,89,93,97,101,105,109,113,117,120,124,128,132,136,140,144,148,152,156,160,164,168,172],{"path":72,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":75,"sourceHtmlUrl":76},"BENCHMARK.md","REFERENCE","参考文档",4124,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-depth-anything-v2\u002FBENCHMARK.md",{"path":78,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":79,"sourceHtmlUrl":80},"evals\u002Fevals.json",871,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-depth-anything-v2\u002Fevals\u002Fevals.json",{"path":82,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":83,"sourceHtmlUrl":84},"references\u002Ffinetuning-recipes.md",7260,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-depth-anything-v2\u002Freferences\u002Ffinetuning-recipes.md",{"path":86,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":87,"sourceHtmlUrl":88},"references\u002Fparameters.md",5490,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-depth-anything-v2\u002Freferences\u002Fparameters.md",{"path":90,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":91,"sourceHtmlUrl":92},"references\u002Fskill_info.yaml",4349,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-depth-anything-v2\u002Freferences\u002Fskill_info.yaml",{"path":94,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":95,"sourceHtmlUrl":96},"references\u002Fspec_template_deploy.yaml",2126,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-depth-anything-v2\u002Freferences\u002Fspec_template_deploy.yaml",{"path":98,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":99,"sourceHtmlUrl":100},"references\u002Fspec_template_evaluate.yaml",5715,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-depth-anything-v2\u002Freferences\u002Fspec_template_evaluate.yaml",{"path":102,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":103,"sourceHtmlUrl":104},"references\u002Fspec_template_export.yaml",5784,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-depth-anything-v2\u002Freferences\u002Fspec_template_export.yaml",{"path":106,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":107,"sourceHtmlUrl":108},"references\u002Fspec_template_gen_trt_engine.yaml",5764,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-depth-anything-v2\u002Freferences\u002Fspec_template_gen_trt_engine.yaml",{"path":110,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":111,"sourceHtmlUrl":112},"references\u002Fspec_template_inference.yaml",5721,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-depth-anything-v2\u002Freferences\u002Fspec_template_inference.yaml",{"path":114,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":115,"sourceHtmlUrl":116},"references\u002Fspec_template_quantize.yaml",5550,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-depth-anything-v2\u002Freferences\u002Fspec_template_quantize.yaml",{"path":118,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":115,"sourceHtmlUrl":119},"references\u002Fspec_template_train.yaml","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-depth-anything-v2\u002Freferences\u002Fspec_template_train.yaml",{"path":121,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":122,"sourceHtmlUrl":123},"references\u002Fspec-overrides.md",4708,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-depth-anything-v2\u002Freferences\u002Fspec-overrides.md",{"path":125,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":126,"sourceHtmlUrl":127},"references\u002Fspec-param-inference.md",3523,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-depth-anything-v2\u002Freferences\u002Fspec-param-inference.md",{"path":129,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":130,"sourceHtmlUrl":131},"references\u002Ftao-deploy-depth-anything-v2.md",7337,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-depth-anything-v2\u002Freferences\u002Ftao-deploy-depth-anything-v2.md",{"path":133,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":134,"sourceHtmlUrl":135},"references\u002Ftao-deploy-depth-anything-v2.skill_info.yaml",2507,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-depth-anything-v2\u002Freferences\u002Ftao-deploy-depth-anything-v2.skill_info.yaml",{"path":137,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":138,"sourceHtmlUrl":139},"references\u002Ftroubleshooting.md",2147,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-depth-anything-v2\u002Freferences\u002Ftroubleshooting.md",{"path":141,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":142,"sourceHtmlUrl":143},"schemas\u002Fevaluate.schema.json",106992,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-depth-anything-v2\u002Fschemas\u002Fevaluate.schema.json",{"path":145,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":146,"sourceHtmlUrl":147},"schemas\u002Fexport.schema.json",107656,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-depth-anything-v2\u002Fschemas\u002Fexport.schema.json",{"path":149,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":150,"sourceHtmlUrl":151},"schemas\u002Fgen_trt_engine.schema.json",109557,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-depth-anything-v2\u002Fschemas\u002Fgen_trt_engine.schema.json",{"path":153,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":154,"sourceHtmlUrl":155},"schemas\u002Finference.schema.json",107437,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-depth-anything-v2\u002Fschemas\u002Finference.schema.json",{"path":157,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":158,"sourceHtmlUrl":159},"schemas\u002Fmanifest.json",30583,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-depth-anything-v2\u002Fschemas\u002Fmanifest.json",{"path":161,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":162,"sourceHtmlUrl":163},"schemas\u002Fquantize.schema.json",103802,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-depth-anything-v2\u002Fschemas\u002Fquantize.schema.json",{"path":165,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":166,"sourceHtmlUrl":167},"schemas\u002Ftrain.schema.json",103796,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-depth-anything-v2\u002Fschemas\u002Ftrain.schema.json",{"path":169,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":170,"sourceHtmlUrl":171},"skill-card.md",3953,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-depth-anything-v2\u002Fskill-card.md",{"path":173,"resourceType":174,"resourceTypeDesc":175,"sizeBytes":176,"sourceHtmlUrl":177},"skill.oms.sig","OTHER","其他",10061,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-depth-anything-v2\u002Fskill.oms.sig",[179,211,237,261,283,298],{"skillNo":180,"name":181,"nameZh":6,"description":182,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":183,"sourceHtmlUrl":184,"categories":185,"keywords":194,"publishedAt":39},"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",[186,191],{"categoryNo":187,"categoryName":188,"taxonomyType":189,"taxonomyTypeDesc":190},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":192,"categoryName":193,"taxonomyType":189,"taxonomyTypeDesc":190},"01JBSEEDCAT000000000000009","前端开发",[195,196,197,24,198,199,200,201,202,203,204,205,206,207,208,209,210],"webapp","testing","webapp testing","applications","local","frontend","debugging","toolkit","logs","browser","with","playwright","web","behavior","ui","screenshots",{"skillNo":212,"name":213,"nameZh":6,"description":214,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":215,"sourceHtmlUrl":216,"categories":217,"keywords":219,"publishedAt":39},"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",[218],{"categoryNo":192,"categoryName":193,"taxonomyType":189,"taxonomyTypeDesc":190},[220,221,222,207,223,224,225,24,226,227,200,228,229,230,231,232,233,234,235,236],"builder","artifacts builder","artifacts","web artifacts builder","single-file","css","Tailwind","ui components","single","use","file","components","react","multi","state","routing","state management",{"skillNo":238,"name":239,"nameZh":6,"description":240,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":241,"licenseFileUrl":242,"sourceHtmlUrl":243,"categories":244,"keywords":246,"publishedAt":39},"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",[245],{"categoryNo":192,"categoryName":193,"taxonomyType":189,"taxonomyTypeDesc":190},[247,248,249,250,251,252,253,254,255,256,257,258,259,260],"functions","vueuse","vueuse functions","project","nuxt","apply","github","concise","build","https","features","vue","js","composables",{"skillNo":262,"name":263,"nameZh":6,"description":264,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":241,"licenseFileUrl":265,"sourceHtmlUrl":266,"categories":267,"keywords":270,"publishedAt":39},"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",[268,269],{"categoryNo":187,"categoryName":188,"taxonomyType":189,"taxonomyTypeDesc":190},{"categoryNo":192,"categoryName":193,"taxonomyType":189,"taxonomyTypeDesc":190},[271,196,272,258,273,206,274,275,276,253,277,24,278,279,280,229,281,259,282],"vue testing best practices","testing best practices","best practices","test","testing patterns","component","vitest","mocking","e2e","utils","patterns","e2e testing",{"skillNo":284,"name":285,"nameZh":6,"description":286,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":241,"licenseFileUrl":287,"sourceHtmlUrl":288,"categories":289,"keywords":291,"publishedAt":39},"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",[290],{"categoryNo":192,"categoryName":193,"taxonomyType":189,"taxonomyTypeDesc":190},[292,258,293,273,294,276,295,253,281,296,297],"router","vue router best practices","route","guards","navigation","lifecycle",{"skillNo":299,"name":300,"nameZh":6,"description":301,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":241,"licenseFileUrl":302,"sourceHtmlUrl":303,"categories":304,"keywords":306,"publishedAt":39},"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",[305],{"categoryNo":192,"categoryName":193,"taxonomyType":189,"taxonomyTypeDesc":190},[307,258,273,308,250,309,310,311,292,312,313,314,315,316,317,24,318,229,319,320],"vue best practices","Composition","files","tasks","api","pinia","work","options","ssr","typescript","as","vite","load","standard"]