[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71PTWH3CGZ7HA34WK7XRCSV":3,"skill-same:01M71PTWH3CGZ7HA34WK7XRCSV":156},{"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":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":59,"commitSha":60,"skillDirectory":61,"forksCount":14,"repositoryHtmlUrl":62,"repositoryHomepageUrl":63,"ownerHtmlUrl":64,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":65,"install":66,"resources":79},"01M71PTWH3CGZ7HA34WK7XRCSV","tao-finetune-clip",null,"CLIP vision-language model for image-text retrieval, zero-shot classification, embedding extraction, ONNX export, and TensorRT deployment. Use when fine-tuning or training CLIP, running zero-shot classification, computing image embeddings, or deploying CLIP to ONNX\u002FTensorRT.","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-finetune-clip\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"clip","tao","finetune","tao finetune clip","NVIDIA","running","vision","export","tensorrt","embeddings","tuning","read","text","Bash","image","when","onnx","training","model","embedding","2026-11-10 13:02:02",false,"---\nname: tao-finetune-clip\ndescription: CLIP vision-language model for image-text retrieval, zero-shot classification, embedding extraction, ONNX\n  export, and TensorRT deployment. Use when fine-tuning or training CLIP, running zero-shot classification, computing image\n  embeddings, or deploying CLIP to ONNX\u002FTensorRT.\nlicense: Apache-2.0\ncompatibility: Requires docker + nvidia-container-toolkit.\nmetadata:\n  author: NVIDIA Corporation\n  version: \"0.1.0\"\nallowed-tools: Read Bash\ntags:\n- vision-language\n- classification\n- embedding\n- zero-shot\n- deployment\n---\n\n# CLIP\n\nContrastive Language-Image Pre-training model for zero-shot and fine-tuned image classification, image-text retrieval, and embedding extraction. Fine-tuning adapts CLIP's shared image-text embedding space to domain-specific image-caption data.\n\nNo default NGC pretrained checkpoint is required for spec construction, but unset checkpoint behavior is action-specific. In the validation-fixes PyTorch image, `export.checkpoint: null` exports the selected CLIP architecture and may initialize weights when pretrained weights are unavailable. Do not assume `inference.checkpoint: null` loads pretrained weights: `clip inference` currently calls the checkpoint loader with `None` and fails before embedding extraction. For PyTorch inference, checkpoint-backed evaluation\u002Fexport, resume, and retrain flows, resolve and pass an exact checkpoint from the parent train output. For trusted TAO checkpoints produced by the current run or a known parent job, set `TORCH_FORCE_NO_WEIGHTS_ONLY_LOAD=1` on checkpoint-dependent PyTorch actions so PyTorch 2.6 can load the Lightning checkpoint metadata; do not set this for untrusted checkpoints.\n\nSupported actions: `train`, `evaluate`, `inference`, `export`, `gen_trt_engine`.\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\nThe packaged CLIP train schema enables `train.optim.vision_lr` and `train.optim.text_lr` as default AutoML search parameters. For smoke tests, keep the search small by using the Bayesian algorithm with two recommendations and narrow LR ranges.\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## Instructions\n\nUse this skill for NVIDIA TAO CLIP jobs: training, evaluation, embedding inference, ONNX export, and TensorRT engine generation. Start by identifying the requested action, then load only the referenced files needed for that action: `defaults.json` for default parameters, `config.json` for action\u002Fdata-source wiring, `references\u002Fspec_template.yaml` for full spec shape, and `references\u002Fmodel_info.yaml` for SDK metadata.\n\nFor dataset-backed actions, collect the required image, caption, list, or prompt files from the user and place the resolved paths in `spec_overrides`. For local Docker runs, mount extracted folders in the container and point `image_dir` \u002F `caption_dir` at those folders; if a data source provides `.tar.gz` archives, extract them before running the in-container CLIP commands. For `export` and `gen_trt_engine`, infer parent artifacts from the upstream job when available; otherwise require explicit checkpoint, ONNX, or engine paths. Run `gen_trt_engine`, TensorRT `evaluate`, and TensorRT `inference` in the TAO Deploy image.\n\nFor TAO Deploy TensorRT actions (`gen_trt_engine`, TensorRT `evaluate`, and TensorRT `inference`), read `references\u002Ftao-deploy-clip.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- **Dataset type:** image_text\n- **Formats:** custom image\u002Fcaption folders or WebDataset shards\n- **Monitoring metric:** val\u002Ft2i_mAP\n\n### Supported Models\n\n- **OpenCLIP \u002F NV-CLIP:** `ViT-L-14-SigLIP-CLIPA-224` (default), `ViT-L-14-SigLIP-CLIPA-336`, `ViT-H-14-SigLIP-CLIPA-224`, `ViT-H-14-SigLIP-CLIPA-336`, `ViT-H-14-SigLIP-CLIPA-574`\n- **Radio-CLIP:** `c-radio_v3-b`, `c-radio_v3-l`, `c-radio_v3-h`, `c-radio_v3-g`\n- **SigLIP2:** `siglip2-so400m-patch16-256`, `siglip2-so400m-patch14-224`, `siglip2-so400m-patch14-384`, `siglip2-so400m-patch16-384`, `siglip2-so400m-patch16-512`, `siglip2-so400m-patch16-naflex`\n\nRadio-CLIP requires `model.adaptor_name` to be set to `siglip` or `clip`.\n\n### Per-Action Dataset Requirements\n\n| Action | Spec Key | Source | Files | List? |\n|---|---|---|---|---|\n| train | dataset.train.datasets | train_datasets | image_dir: images.tar.gz, image_list_file: image_list.txt, caption_dir: captions.tar.gz | Yes |\n| train | dataset.train.wds.root_dir | train_wds_dataset | root directory containing `.tar` shards | No |\n| train | dataset.train.wds.shard_list_file | train_wds_dataset | shards.txt listing shard paths | No |\n| train | dataset.val.datasets | eval_dataset | image_dir: images.tar.gz, image_list_file: image_list.txt, caption_dir: captions.tar.gz | Yes |\n| evaluate | dataset.val.datasets | eval_dataset | image_dir: images.tar.gz, image_list_file: image_list.txt, caption_dir: captions.tar.gz | Yes |\n| inference | inference.datasets | inference_dataset | image_dir: images.tar.gz | Yes |\n| inference | inference.text_file | inference_dataset | prompts.txt | No |\n| export | export.checkpoint | parent train job or explicit checkpoint | checkpoint .pth, optional for pretrained export | No |\n| gen_trt_engine | gen_trt_engine.onnx_file | parent export job or explicit ONNX | clip_model.onnx | No |\n\nFor custom training, set `dataset.train.type: custom` and provide `dataset.train.datasets` entries. Image and caption files must share the same base name. `caption_file_suffix` defaults to `.txt`, and `image_list_file` is optional.\n\nWhen no native CLIP image-caption dataset is available, do not silently treat image-classification data as CLIP data. If the user explicitly allows a plumbing-only validation fallback, derive caption files from class labels, document that the captions are generated from labels, and keep each image\u002Fcaption pair on the same base filename. Without an `image_list_file`, the TAO custom loader scans the configured image directory for image files; keep validation folders flat unless you provide a list file.\n\nFor WDS training, set `dataset.train.type: wds` and provide at least one of `dataset.train.wds.root_dir` or `dataset.train.wds.shard_list_file`. `root_dir` is scanned recursively for `.tar` shards. `shard_list_file` is a text file with one shard path per line; relative lines resolve under the list-file directory unless `root_dir` is also supplied, in which case they resolve under `root_dir`. Validation\u002Fevaluation data remains custom format via `dataset.val.datasets`.\n\n### Typical Spec Overrides\n\nData source overrides are mandatory for dataset-backed actions. Construct paths from the Per-Action Dataset Requirements table and include them in `spec_overrides`. For inference, provide at least one of `inference.datasets` or `inference.text_file`.\n\n```python\nS3_TRAIN = \"s3:\u002F\u002Fbucket\u002Fdata\u002Ftrain\"\nS3_WDS = \"s3:\u002F\u002Fbucket\u002Fdata\u002Fwds\"\nS3_EVAL = \"s3:\u002F\u002Fbucket\u002Fdata\u002Feval\"\nS3_INFER = \"s3:\u002F\u002Fbucket\u002Fdata\u002Finfer\"\n```\n\n**train, custom dataset:**\n```python\n{\n    \"train.num_epochs\": 10,\n    \"dataset.train.type\": \"custom\",\n    \"dataset.train.datasets\": [{\"image_dir\": f\"{S3_TRAIN}\u002Fimages.tar.gz\", \"image_list_file\": f\"{S3_TRAIN}\u002Fimage_list.txt\", \"caption_dir\": f\"{S3_TRAIN}\u002Fcaptions.tar.gz\"}],\n    \"dataset.val.datasets\": [{\"image_dir\": f\"{S3_EVAL}\u002Fimages.tar.gz\", \"image_list_file\": f\"{S3_EVAL}\u002Fimage_list.txt\", \"caption_dir\": f\"{S3_EVAL}\u002Fcaptions.tar.gz\"}],\n}\n```\n\n**train, WDS dataset:**\n```python\n{\n    \"train.num_epochs\": 10,\n    \"dataset.train.type\": \"wds\",\n    \"dataset.train.wds.root_dir\": f\"{S3_WDS}\",\n    \"dataset.train.wds.shard_list_file\": f\"{S3_WDS}\u002Fshards.txt\",\n    \"dataset.train.wds.samples_per_shard\": 10000,\n    \"dataset.val.datasets\": [{\"image_dir\": f\"{S3_EVAL}\u002Fimages.tar.gz\", \"image_list_file\": f\"{S3_EVAL}\u002Fimage_list.txt\", \"caption_dir\": f\"{S3_EVAL}\u002Fcaptions.tar.gz\"}],\n}\n```\n\n**evaluate:**\n```python\n{\n    \"dataset.val.datasets\": [{\"image_dir\": f\"{S3_EVAL}\u002Fimages.tar.gz\", \"image_list_file\": f\"{S3_EVAL}\u002Fimage_list.txt\", \"caption_dir\": f\"{S3_EVAL}\u002Fcaptions.tar.gz\"}],\n}\n```\n\nLeave `evaluate.checkpoint` unset for zero-shot evaluation with pretrained weights. Set `evaluate.trt_engine` instead of `evaluate.checkpoint` for TensorRT evaluation.\n\n**inference:**\n```python\n{\n    \"inference.datasets\": [{\"image_dir\": f\"{S3_INFER}\u002Fimages.tar.gz\"}],\n    \"inference.text_file\": f\"{S3_INFER}\u002Fprompts.txt\",\n}\n```\n\nInference writes `image_embeddings.h5` and\u002For `text_embeddings.h5` under `results_dir`. The saved embeddings are L2-normalized.\n\n**export:**\n```python\n{\n    \"export.onnx_file\": \"${results_dir}\u002Fexport\u002Fclip_model.onnx\",\n    \"export.encoder_type\": \"combined\",\n    \"export.batch_size\": -1,\n}\n```\n\nSet `export.encoder_type: separate` when deployment should use independent vision and text encoders. Separate export writes `_vision.onnx` and `_text.onnx` variants derived from the base `export.onnx_file`.\n\nFor checkpoint-dependent actions, use the model-specific checkpoint resolver output from the parent train job. CLIP training writes checkpoints such as `model_epoch_000_step_00020.pth` and a `clip_latest.pth` symlink. Use the exact resolved checkpoint for `evaluate.checkpoint`, `inference.checkpoint`, `export.checkpoint`, and `train.resume_training_checkpoint_path`; use `clip_latest.pth` only when the user explicitly asks for latest.\n\nWhen the resolved checkpoint is trusted TAO output, checkpoint-backed PyTorch `evaluate`, `inference`, `export`, and resume training should run with `TORCH_FORCE_NO_WEIGHTS_ONLY_LOAD=1`. PyTorch 2.6 otherwise defaults checkpoint loading to weights-only mode and can reject CLIP Lightning checkpoints containing NumPy scalar metadata.\n\n**gen_trt_engine:**\n```python\n{\n    \"gen_trt_engine.onnx_file\": \"${results_dir}\u002Fexport\u002Fclip_model.onnx\",\n    \"gen_trt_engine.trt_engine\": \"${results_dir}\u002Fdeploy\u002Fclip_model.engine\",\n    \"gen_trt_engine.batch_size\": -1,\n    \"gen_trt_engine.tensorrt.data_type\": \"fp16\",\n    \"gen_trt_engine.tensorrt.min_batch_size\": 1,\n    \"gen_trt_engine.tensorrt.opt_batch_size\": 1,\n    \"gen_trt_engine.tensorrt.max_batch_size\": 16,\n}\n```\n\n## Eval Dataset\n\nOptional for training. If provided, validation metrics are computed at validation intervals. Required for `evaluate`.\n\n## Deploy Workflow\n\nThe skill exposes `gen_trt_engine` as the deploy action. In generated SDK runners, use `model_info[\"actions\"][\"gen_trt_engine\"]` and run it in the TAO Deploy image, not the PyTorch training image. The in-container command is `clip gen_trt_engine -e {config_path}`; direct TAO Launcher usage spells the same action as `tao deploy clip gen_trt_engine -e \u002Fpath\u002Fto\u002Fspec.yaml`.\n\nTAO Deploy inference can discover combined engines, paired separate engines, or single-pillar `_vision.engine` \u002F `_text.engine` files. For full TensorRT retrieval evaluation or image+text TensorRT inference, export with `export.encoder_type: separate` and run `clip gen_trt_engine` twice: build `clip_model_vision.onnx` to an engine ending in `_vision.engine`, then build `clip_model_text.onnx` to the matching `_text.engine` in the same directory. For image-only TensorRT inference, building only the `_vision.engine` is sufficient and `inference.text_file` must be `null`. TensorRT `evaluate` and text inference require a text-capable engine; if only a vision engine is present, deploy evaluation fails because text embeddings cannot be extracted.\n\nUse `evaluate.trt_engine` for TensorRT evaluation and `inference.trt_engine` for TensorRT embedding extraction. These TensorRT paths also run in the TAO Deploy image. Direct TAO Launcher usage spells these as `tao deploy clip evaluate` and `tao deploy clip inference`.\n\n## Important Parameters\n\n- **model.type**: Backbone family and resolution. Use a TAO-registered CLIP model ID such as `ViT-L-14-SigLIP-CLIPA-224`. Prefer the listed OpenCLIP \u002F NV-CLIP IDs for AutoML smoke tests because the current TAO container registry routes them through the supported augmentation adapter.\n- **model.adaptor_name**: Required for Radio-CLIP. Set to `siglip` or `clip`.\n- **model.image_size**: Training transform image resolution. Keep it aligned with the selected fixed-resolution backbone.\n- **train.num_epochs**: CLIP fine-tuning often converges quickly. Start with 10-20 epochs for domain adaptation, then increase only if validation loss is still improving.\n- **train.optim.vision_lr \u002F train.optim.text_lr**: Learning rates for the two encoders. CLIP is sensitive to high learning rates; reduce both if loss is unstable.\n- **model.freeze_vision_encoder \u002F model.freeze_text_encoder**: Defaults are false. Freezing one encoder can help when the dataset is small or only one modality needs adaptation.\n- **train.loss_type**: `siglip` is recommended for SigLIP2 and Radio-CLIP. Use `clip` for CLIP-style softmax loss.\n- **export.encoder_type**: `combined` exports one ONNX graph. `separate` exports independent vision and text graphs.\n- **gen_trt_engine.tensorrt.data_type**: TensorRT deployment supports `fp16` and `fp32`.\n\n## Hardware\n\nSingle-GPU training works for small datasets. Use 4+ GPUs for datasets with more than 100k images or large backbones. Use 16GB+ VRAM per GPU for small\u002Ffixed-resolution runs and larger GPUs for Radio-CLIP or high-resolution OpenCLIP variants.\n\n## Error Patterns\n\nSee `references\u002Ferror-patterns.md` for the full list of CLIP error symptoms and fixes (CUDA OOM, NaN loss, retrieval quality, dataset format\u002Fsize, Radio-CLIP and model-ID validation, ONNX external data, TensorRT shape mismatch, PyTorch 2.6 checkpoint load, null-checkpoint inference, TensorRT text\u002Fretrieval failures, `attention_mask` handling, and spec\u002Fschema merge errors).\n\n## Spec Param \u002F Parent Model Inference\n\nSee `references\u002Fspec-param-inference.md` for the model-specific inference mappings (the full `clip.config.json` action\u002Fspec-field\u002Finference-function table) that generated runners apply with SDK helpers before `create_job()`, plus `parent_job_id` resolution rules.\n\n## Deployment\n\n- [tao-deploy-clip](references\u002Ftao-deploy-clip.md)\n","# CLIP\n\nContrastive Language-Image Pre-training model for zero-shot and fine-tuned image classification, image-text retrieval, and embedding extraction. Fine-tuning adapts CLIP's shared image-text embedding space to domain-specific image-caption data.\n\nNo default NGC pretrained checkpoint is required for spec construction, but unset checkpoint behavior is action-specific. In the validation-fixes PyTorch image, `export.checkpoint: null` exports the selected CLIP architecture and may initialize weights when pretrained weights are unavailable. Do not assume `inference.checkpoint: null` loads pretrained weights: `clip inference` currently calls the checkpoint loader with `None` and fails before embedding extraction. For PyTorch inference, checkpoint-backed evaluation\u002Fexport, resume, and retrain flows, resolve and pass an exact checkpoint from the parent train output. For trusted TAO checkpoints produced by the current run or a known parent job, set `TORCH_FORCE_NO_WEIGHTS_ONLY_LOAD=1` on checkpoint-dependent PyTorch actions so PyTorch 2.6 can load the Lightning checkpoint metadata; do not set this for untrusted checkpoints.\n\nSupported actions: `train`, `evaluate`, `inference`, `export`, `gen_trt_engine`.\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\nThe packaged CLIP train schema enables `train.optim.vision_lr` and `train.optim.text_lr` as default AutoML search parameters. For smoke tests, keep the search small by using the Bayesian algorithm with two recommendations and narrow LR ranges.\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## Instructions\n\nUse this skill for NVIDIA TAO CLIP jobs: training, evaluation, embedding inference, ONNX export, and TensorRT engine generation. Start by identifying the requested action, then load only the referenced files needed for that action: `defaults.json` for default parameters, `config.json` for action\u002Fdata-source wiring, `references\u002Fspec_template.yaml` for full spec shape, and `references\u002Fmodel_info.yaml` for SDK metadata.\n\nFor dataset-backed actions, collect the required image, caption, list, or prompt files from the user and place the resolved paths in `spec_overrides`. For local Docker runs, mount extracted folders in the container and point `image_dir` \u002F `caption_dir` at those folders; if a data source provides `.tar.gz` archives, extract them before running the in-container CLIP commands. For `export` and `gen_trt_engine`, infer parent artifacts from the upstream job when available; otherwise require explicit checkpoint, ONNX, or engine paths. Run `gen_trt_engine`, TensorRT `evaluate`, and TensorRT `inference` in the TAO Deploy image.\n\nFor TAO Deploy TensorRT actions (`gen_trt_engine`, TensorRT `evaluate`, and TensorRT `inference`), read `references\u002Ftao-deploy-clip.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- **Dataset type:** image_text\n- **Formats:** custom image\u002Fcaption folders or WebDataset shards\n- **Monitoring metric:** val\u002Ft2i_mAP\n\n### Supported Models\n\n- **OpenCLIP \u002F NV-CLIP:** `ViT-L-14-SigLIP-CLIPA-224` (default), `ViT-L-14-SigLIP-CLIPA-336`, `ViT-H-14-SigLIP-CLIPA-224`, `ViT-H-14-SigLIP-CLIPA-336`, `ViT-H-14-SigLIP-CLIPA-574`\n- **Radio-CLIP:** `c-radio_v3-b`, `c-radio_v3-l`, `c-radio_v3-h`, `c-radio_v3-g`\n- **SigLIP2:** `siglip2-so400m-patch16-256`, `siglip2-so400m-patch14-224`, `siglip2-so400m-patch14-384`, `siglip2-so400m-patch16-384`, `siglip2-so400m-patch16-512`, `siglip2-so400m-patch16-naflex`\n\nRadio-CLIP requires `model.adaptor_name` to be set to `siglip` or `clip`.\n\n### Per-Action Dataset Requirements\n\n| Action | Spec Key | Source | Files | List? |\n|---|---|---|---|---|\n| train | dataset.train.datasets | train_datasets | image_dir: images.tar.gz, image_list_file: image_list.txt, caption_dir: captions.tar.gz | Yes |\n| train | dataset.train.wds.root_dir | train_wds_dataset | root directory containing `.tar` shards | No |\n| train | dataset.train.wds.shard_list_file | train_wds_dataset | shards.txt listing shard paths | No |\n| train | dataset.val.datasets | eval_dataset | image_dir: images.tar.gz, image_list_file: image_list.txt, caption_dir: captions.tar.gz | Yes |\n| evaluate | dataset.val.datasets | eval_dataset | image_dir: images.tar.gz, image_list_file: image_list.txt, caption_dir: captions.tar.gz | Yes |\n| inference | inference.datasets | inference_dataset | image_dir: images.tar.gz | Yes |\n| inference | inference.text_file | inference_dataset | prompts.txt | No |\n| export | export.checkpoint | parent train job or explicit checkpoint | checkpoint .pth, optional for pretrained export | No |\n| gen_trt_engine | gen_trt_engine.onnx_file | parent export job or explicit ONNX | clip_model.onnx | No |\n\nFor custom training, set `dataset.train.type: custom` and provide `dataset.train.datasets` entries. Image and caption files must share the same base name. `caption_file_suffix` defaults to `.txt`, and `image_list_file` is optional.\n\nWhen no native CLIP image-caption dataset is available, do not silently treat image-classification data as CLIP data. If the user explicitly allows a plumbing-only validation fallback, derive caption files from class labels, document that the captions are generated from labels, and keep each image\u002Fcaption pair on the same base filename. Without an `image_list_file`, the TAO custom loader scans the configured image directory for image files; keep validation folders flat unless you provide a list file.\n\nFor WDS training, set `dataset.train.type: wds` and provide at least one of `dataset.train.wds.root_dir` or `dataset.train.wds.shard_list_file`. `root_dir` is scanned recursively for `.tar` shards. `shard_list_file` is a text file with one shard path per line; relative lines resolve under the list-file directory unless `root_dir` is also supplied, in which case they resolve under `root_dir`. Validation\u002Fevaluation data remains custom format via `dataset.val.datasets`.\n\n### Typical Spec Overrides\n\nData source overrides are mandatory for dataset-backed actions. Construct paths from the Per-Action Dataset Requirements table and include them in `spec_overrides`. For inference, provide at least one of `inference.datasets` or `inference.text_file`.\n\n```python\nS3_TRAIN = \"s3:\u002F\u002Fbucket\u002Fdata\u002Ftrain\"\nS3_WDS = \"s3:\u002F\u002Fbucket\u002Fdata\u002Fwds\"\nS3_EVAL = \"s3:\u002F\u002Fbucket\u002Fdata\u002Feval\"\nS3_INFER = \"s3:\u002F\u002Fbucket\u002Fdata\u002Finfer\"\n```\n\n**train, custom dataset:**\n```python\n{\n    \"train.num_epochs\": 10,\n    \"dataset.train.type\": \"custom\",\n    \"dataset.train.datasets\": [{\"image_dir\": f\"{S3_TRAIN}\u002Fimages.tar.gz\", \"image_list_file\": f\"{S3_TRAIN}\u002Fimage_list.txt\", \"caption_dir\": f\"{S3_TRAIN}\u002Fcaptions.tar.gz\"}],\n    \"dataset.val.datasets\": [{\"image_dir\": f\"{S3_EVAL}\u002Fimages.tar.gz\", \"image_list_file\": f\"{S3_EVAL}\u002Fimage_list.txt\", \"caption_dir\": f\"{S3_EVAL}\u002Fcaptions.tar.gz\"}],\n}\n```\n\n**train, WDS dataset:**\n```python\n{\n    \"train.num_epochs\": 10,\n    \"dataset.train.type\": \"wds\",\n    \"dataset.train.wds.root_dir\": f\"{S3_WDS}\",\n    \"dataset.train.wds.shard_list_file\": f\"{S3_WDS}\u002Fshards.txt\",\n    \"dataset.train.wds.samples_per_shard\": 10000,\n    \"dataset.val.datasets\": [{\"image_dir\": f\"{S3_EVAL}\u002Fimages.tar.gz\", \"image_list_file\": f\"{S3_EVAL}\u002Fimage_list.txt\", \"caption_dir\": f\"{S3_EVAL}\u002Fcaptions.tar.gz\"}],\n}\n```\n\n**evaluate:**\n```python\n{\n    \"dataset.val.datasets\": [{\"image_dir\": f\"{S3_EVAL}\u002Fimages.tar.gz\", \"image_list_file\": f\"{S3_EVAL}\u002Fimage_list.txt\", \"caption_dir\": f\"{S3_EVAL}\u002Fcaptions.tar.gz\"}],\n}\n```\n\nLeave `evaluate.checkpoint` unset for zero-shot evaluation with pretrained weights. Set `evaluate.trt_engine` instead of `evaluate.checkpoint` for TensorRT evaluation.\n\n**inference:**\n```python\n{\n    \"inference.datasets\": [{\"image_dir\": f\"{S3_INFER}\u002Fimages.tar.gz\"}],\n    \"inference.text_file\": f\"{S3_INFER}\u002Fprompts.txt\",\n}\n```\n\nInference writes `image_embeddings.h5` and\u002For `text_embeddings.h5` under `results_dir`. The saved embeddings are L2-normalized.\n\n**export:**\n```python\n{\n    \"export.onnx_file\": \"${results_dir}\u002Fexport\u002Fclip_model.onnx\",\n    \"export.encoder_type\": \"combined\",\n    \"export.batch_size\": -1,\n}\n```\n\nSet `export.encoder_type: separate` when deployment should use independent vision and text encoders. Separate export writes `_vision.onnx` and `_text.onnx` variants derived from the base `export.onnx_file`.\n\nFor checkpoint-dependent actions, use the model-specific checkpoint resolver output from the parent train job. CLIP training writes checkpoints such as `model_epoch_000_step_00020.pth` and a `clip_latest.pth` symlink. Use the exact resolved checkpoint for `evaluate.checkpoint`, `inference.checkpoint`, `export.checkpoint`, and `train.resume_training_checkpoint_path`; use `clip_latest.pth` only when the user explicitly asks for latest.\n\nWhen the resolved checkpoint is trusted TAO output, checkpoint-backed PyTorch `evaluate`, `inference`, `export`, and resume training should run with `TORCH_FORCE_NO_WEIGHTS_ONLY_LOAD=1`. PyTorch 2.6 otherwise defaults checkpoint loading to weights-only mode and can reject CLIP Lightning checkpoints containing NumPy scalar metadata.\n\n**gen_trt_engine:**\n```python\n{\n    \"gen_trt_engine.onnx_file\": \"${results_dir}\u002Fexport\u002Fclip_model.onnx\",\n    \"gen_trt_engine.trt_engine\": \"${results_dir}\u002Fdeploy\u002Fclip_model.engine\",\n    \"gen_trt_engine.batch_size\": -1,\n    \"gen_trt_engine.tensorrt.data_type\": \"fp16\",\n    \"gen_trt_engine.tensorrt.min_batch_size\": 1,\n    \"gen_trt_engine.tensorrt.opt_batch_size\": 1,\n    \"gen_trt_engine.tensorrt.max_batch_size\": 16,\n}\n```\n\n## Eval Dataset\n\nOptional for training. If provided, validation metrics are computed at validation intervals. Required for `evaluate`.\n\n## Deploy Workflow\n\nThe skill exposes `gen_trt_engine` as the deploy action. In generated SDK runners, use `model_info[\"actions\"][\"gen_trt_engine\"]` and run it in the TAO Deploy image, not the PyTorch training image. The in-container command is `clip gen_trt_engine -e {config_path}`; direct TAO Launcher usage spells the same action as `tao deploy clip gen_trt_engine -e \u002Fpath\u002Fto\u002Fspec.yaml`.\n\nTAO Deploy inference can discover combined engines, paired separate engines, or single-pillar `_vision.engine` \u002F `_text.engine` files. For full TensorRT retrieval evaluation or image+text TensorRT inference, export with `export.encoder_type: separate` and run `clip gen_trt_engine` twice: build `clip_model_vision.onnx` to an engine ending in `_vision.engine`, then build `clip_model_text.onnx` to the matching `_text.engine` in the same directory. For image-only TensorRT inference, building only the `_vision.engine` is sufficient and `inference.text_file` must be `null`. TensorRT `evaluate` and text inference require a text-capable engine; if only a vision engine is present, deploy evaluation fails because text embeddings cannot be extracted.\n\nUse `evaluate.trt_engine` for TensorRT evaluation and `inference.trt_engine` for TensorRT embedding extraction. These TensorRT paths also run in the TAO Deploy image. Direct TAO Launcher usage spells these as `tao deploy clip evaluate` and `tao deploy clip inference`.\n\n## Important Parameters\n\n- **model.type**: Backbone family and resolution. Use a TAO-registered CLIP model ID such as `ViT-L-14-SigLIP-CLIPA-224`. Prefer the listed OpenCLIP \u002F NV-CLIP IDs for AutoML smoke tests because the current TAO container registry routes them through the supported augmentation adapter.\n- **model.adaptor_name**: Required for Radio-CLIP. Set to `siglip` or `clip`.\n- **model.image_size**: Training transform image resolution. Keep it aligned with the selected fixed-resolution backbone.\n- **train.num_epochs**: CLIP fine-tuning often converges quickly. Start with 10-20 epochs for domain adaptation, then increase only if validation loss is still improving.\n- **train.optim.vision_lr \u002F train.optim.text_lr**: Learning rates for the two encoders. CLIP is sensitive to high learning rates; reduce both if loss is unstable.\n- **model.freeze_vision_encoder \u002F model.freeze_text_encoder**: Defaults are false. Freezing one encoder can help when the dataset is small or only one modality needs adaptation.\n- **train.loss_type**: `siglip` is recommended for SigLIP2 and Radio-CLIP. Use `clip` for CLIP-style softmax loss.\n- **export.encoder_type**: `combined` exports one ONNX graph. `separate` exports independent vision and text graphs.\n- **gen_trt_engine.tensorrt.data_type**: TensorRT deployment supports `fp16` and `fp32`.\n\n## Hardware\n\nSingle-GPU training works for small datasets. Use 4+ GPUs for datasets with more than 100k images or large backbones. Use 16GB+ VRAM per GPU for small\u002Ffixed-resolution runs and larger GPUs for Radio-CLIP or high-resolution OpenCLIP variants.\n\n## Error Patterns\n\nSee `references\u002Ferror-patterns.md` for the full list of CLIP error symptoms and fixes (CUDA OOM, NaN loss, retrieval quality, dataset format\u002Fsize, Radio-CLIP and model-ID validation, ONNX external data, TensorRT shape mismatch, PyTorch 2.6 checkpoint load, null-checkpoint inference, TensorRT text\u002Fretrieval failures, `attention_mask` handling, and spec\u002Fschema merge errors).\n\n## Spec Param \u002F Parent Model Inference\n\nSee `references\u002Fspec-param-inference.md` for the model-specific inference mappings (the full `clip.config.json` action\u002Fspec-field\u002Finference-function table) that generated runners apply with SDK helpers before `create_job()`, plus `parent_job_id` resolution rules.\n\n## Deployment\n\n- [tao-deploy-clip](references\u002Ftao-deploy-clip.md)\n",{"name":5,"tags":49,"license":15,"metadata":54,"description":7,"allowed-tools":57,"compatibility":58},[50,51,43,52,53],"vision-language","classification","zero-shot","deployment",{"author":55,"version":56},"NVIDIA Corporation","0.1.0","Read Bash","Requires docker + nvidia-container-toolkit.","claude\u002Finstall-gsd-build-foQdV","d86cd127f527124b5fd0fd0bc679a4d79b7d01d7",".agents\u002Fskills\u002Ftao-finetune-clip","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":67,"prompt":77,"zipAvailable":78},[68,71,74],{"tool":69,"command":70},"npx","npx skills add pattanation\u002FNorvik --skill tao-finetune-clip",{"tool":72,"command":73},"bunx","bunx skills add pattanation\u002FNorvik --skill tao-finetune-clip",{"tool":75,"command":76},"pnpm","pnpm dlx skills add pattanation\u002FNorvik --skill tao-finetune-clip","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-finetune-clip\u002FSKILL.md",true,[80,86,90,94,98,102,106,110,114,118,122,126,130,134,138,142,146,150],{"path":81,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":84,"sourceHtmlUrl":85},"BENCHMARK.md","REFERENCE","参考文档",3924,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-finetune-clip\u002FBENCHMARK.md",{"path":87,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":88,"sourceHtmlUrl":89},"evals\u002Fevals.json",764,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-finetune-clip\u002Fevals\u002Fevals.json",{"path":91,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":92,"sourceHtmlUrl":93},"references\u002Ferror-patterns.md",4015,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-finetune-clip\u002Freferences\u002Ferror-patterns.md",{"path":95,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":96,"sourceHtmlUrl":97},"references\u002Fskill_info.yaml",4796,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-finetune-clip\u002Freferences\u002Fskill_info.yaml",{"path":99,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":100,"sourceHtmlUrl":101},"references\u002Fspec_template_deploy.yaml",616,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-finetune-clip\u002Freferences\u002Fspec_template_deploy.yaml",{"path":103,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":104,"sourceHtmlUrl":105},"references\u002Fspec_template_evaluate.yaml",1411,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-finetune-clip\u002Freferences\u002Fspec_template_evaluate.yaml",{"path":107,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":108,"sourceHtmlUrl":109},"references\u002Fspec_template_export.yaml",1494,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-finetune-clip\u002Freferences\u002Fspec_template_export.yaml",{"path":111,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":112,"sourceHtmlUrl":113},"references\u002Fspec_template_train.yaml",1321,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-finetune-clip\u002Freferences\u002Fspec_template_train.yaml",{"path":115,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":116,"sourceHtmlUrl":117},"references\u002Fspec_template.yaml",2078,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-finetune-clip\u002Freferences\u002Fspec_template.yaml",{"path":119,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":120,"sourceHtmlUrl":121},"references\u002Fspec-param-inference.md",2523,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-finetune-clip\u002Freferences\u002Fspec-param-inference.md",{"path":123,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":124,"sourceHtmlUrl":125},"references\u002Ftao-deploy-clip.md",5818,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-finetune-clip\u002Freferences\u002Ftao-deploy-clip.md",{"path":127,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":128,"sourceHtmlUrl":129},"references\u002Ftao-deploy-clip.skill_info.yaml",2195,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-finetune-clip\u002Freferences\u002Ftao-deploy-clip.skill_info.yaml",{"path":131,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":132,"sourceHtmlUrl":133},"schemas\u002Fevaluate.schema.json",27108,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-finetune-clip\u002Fschemas\u002Fevaluate.schema.json",{"path":135,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":136,"sourceHtmlUrl":137},"schemas\u002Fexport.schema.json",27933,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-finetune-clip\u002Fschemas\u002Fexport.schema.json",{"path":139,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":140,"sourceHtmlUrl":141},"schemas\u002Fmanifest.json",4696,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-finetune-clip\u002Fschemas\u002Fmanifest.json",{"path":143,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":144,"sourceHtmlUrl":145},"schemas\u002Ftrain.schema.json",24843,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-finetune-clip\u002Fschemas\u002Ftrain.schema.json",{"path":147,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":148,"sourceHtmlUrl":149},"skill-card.md",3882,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-finetune-clip\u002Fskill-card.md",{"path":151,"resourceType":152,"resourceTypeDesc":153,"sizeBytes":154,"sourceHtmlUrl":155},"skill.oms.sig","OTHER","其他",8025,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-finetune-clip\u002Fskill.oms.sig",[157,188,214,238,260,275],{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":161,"sourceHtmlUrl":162,"categories":163,"keywords":170,"publishedAt":44},"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",[164,167],{"categoryNo":165,"categoryName":166,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":168,"categoryName":169,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",[171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187],"webapp","testing","webapp testing","for","applications","local","frontend","debugging","toolkit","logs","browser","with","playwright","web","behavior","ui","screenshots",{"skillNo":189,"name":190,"nameZh":6,"description":191,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":192,"sourceHtmlUrl":193,"categories":194,"keywords":196,"publishedAt":44},"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",[195],{"categoryNo":168,"categoryName":169,"taxonomyType":21,"taxonomyTypeDesc":22},[197,198,199,184,200,201,202,174,203,204,177,205,206,207,208,209,210,211,212,213],"builder","artifacts builder","artifacts","web artifacts builder","single-file","css","Tailwind","ui components","single","use","file","components","react","multi","state","routing","state management",{"skillNo":215,"name":216,"nameZh":6,"description":217,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":218,"licenseFileUrl":219,"sourceHtmlUrl":220,"categories":221,"keywords":223,"publishedAt":44},"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",[222],{"categoryNo":168,"categoryName":169,"taxonomyType":21,"taxonomyTypeDesc":22},[224,225,226,227,228,229,230,231,232,233,234,235,236,237],"functions","vueuse","vueuse functions","project","nuxt","apply","github","concise","build","https","features","vue","js","composables",{"skillNo":239,"name":240,"nameZh":6,"description":241,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":218,"licenseFileUrl":242,"sourceHtmlUrl":243,"categories":244,"keywords":247,"publishedAt":44},"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",[245,246],{"categoryNo":165,"categoryName":166,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":168,"categoryName":169,"taxonomyType":21,"taxonomyTypeDesc":22},[248,172,249,235,250,183,251,252,253,230,254,174,255,256,257,206,258,236,259],"vue testing best practices","testing best practices","best practices","test","testing patterns","component","vitest","mocking","e2e","utils","patterns","e2e testing",{"skillNo":261,"name":262,"nameZh":6,"description":263,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":218,"licenseFileUrl":264,"sourceHtmlUrl":265,"categories":266,"keywords":268,"publishedAt":44},"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",[267],{"categoryNo":168,"categoryName":169,"taxonomyType":21,"taxonomyTypeDesc":22},[269,235,270,250,271,253,272,230,258,273,274],"router","vue router best practices","route","guards","navigation","lifecycle",{"skillNo":276,"name":277,"nameZh":6,"description":278,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":218,"licenseFileUrl":279,"sourceHtmlUrl":280,"categories":281,"keywords":283,"publishedAt":44},"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",[282],{"categoryNo":168,"categoryName":169,"taxonomyType":21,"taxonomyTypeDesc":22},[284,235,250,285,227,286,287,288,269,289,290,291,292,293,294,174,295,206,296,297],"vue best practices","Composition","files","tasks","api","pinia","work","options","ssr","typescript","as","vite","load","standard"]