[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71Q20TYGSMZCFK1RTFB3TBG":3,"skill-same:01M71Q20TYGSMZCFK1RTFB3TBG":158},{"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},"01M71Q20TYGSMZCFK1RTFB3TBG","tao-train-segformer",null,"SegFormer for semantic segmentation. Lightweight transformer-based architecture with hierarchical feature extraction, efficient for real-time segmentation tasks. Use when training, evaluating, exporting, quantizing, or running inference for a TAO SegFormer model. Trigger phrases include \"train SegFormer\", \"semantic segmentation\", \"lightweight transformer segmenter\", \"real-time semantic segmentation\".","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-segformer\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"tao","train","tao train segformer","tasks","toolkit","Bash","when","use","container","trigger","docker","training","time","real-time","for","model","feature","NVIDIA","segmentation","running","2026-11-10 13:02:02",false,"---\nname: tao-train-segformer\ndescription: SegFormer for semantic segmentation. Lightweight transformer-based architecture with hierarchical feature\n  extraction, efficient for real-time segmentation tasks. Use when training, evaluating, exporting, quantizing, or running\n  inference for a TAO SegFormer model. Trigger phrases include \"train SegFormer\", \"semantic segmentation\", \"lightweight\n  transformer segmenter\", \"real-time semantic segmentation\".\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- segmentation\n---\n\n# SegFormer\n\nSegFormer for semantic segmentation. Lightweight transformer-based architecture with hierarchical feature extraction. Efficient for real-time segmentation tasks.\n\nSet model.backbone.pretrained_backbone_path for backbone weights.\n\nFor TAO Deploy TensorRT actions (`gen_trt_engine`, TensorRT `evaluate`, and TensorRT `inference`), read `references\u002Ftao-deploy-segformer.md` first. Deploy spec templates live in this skill's `references\u002F` folder with the `spec_template_deploy_*.yaml` prefix.\n\n## Dataclass Schemas\n\nGenerated TAO Core schemas are packaged in `schemas\u002F\u003Caction>.schema.json`, with `schemas\u002Fmanifest.json` listing available actions. Each generated schema also emits `references\u002Fspec_template_\u003Caction>.yaml` from the schema top-level `default` field. AutoML enablement is declared at the model layer in `references\u002Fskill_info.yaml` via `automl_enabled`. Runnable AutoML still requires `schemas\u002Ftrain.schema.json` and `references\u002Fspec_template_train.yaml` to exist and parse. Use the packaged train schema for `automl_default_parameters`, `automl_disabled_parameters`, defaults, min\u002Fmax bounds, enums, option weights, math conditions, dependencies, and popular parameters. Do not expect `~\u002Ftao-core` at runtime; maintainers regenerate schemas\u002Ftemplates before packaging the skill bank.\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## Supported Actions\n\nThe packaged SegFormer PyT CLI supports `train`, `evaluate`, `export`, `inference`, `quantize`, and `default_specs`. This model skill exposes `train`, `evaluate`, `export`, `inference`, and `quantize`; resume\u002Fretrain is performed through `train` with `train.resume_training_checkpoint_path`.\n\nThe parent PyT CLI does not expose `gen_trt_engine`. Use `models\u002Fsegformer\u002Fdeploy` for TensorRT engine generation, TensorRT evaluation, and TensorRT inference.\n\n## Training Requirements\n\n- **Dataset type:** segmentation\n- **Formats:** unet\n- **Monitoring metric:** val_miou, maximize\n\n### Per-Action Dataset Requirements\n\n| Action | Spec Key | Source | Files | List? |\n|---|---|---|---|---|\n| evaluate | dataset.segment.root_dir | eval_dataset | extracted root containing `images\u002F\u003Csplit>` and `masks\u002F\u003Csplit>` | No |\n| export | dataset.segment.root_dir | train_datasets | extracted root containing `images\u002F\u003Csplit>` and `masks\u002F\u003Csplit>` | No |\n| inference | dataset.segment.root_dir | inference_dataset | extracted root containing `images\u002F\u003Csplit>` and `masks\u002F\u003Csplit>` | No |\n| quantize | dataset.segment.root_dir | train_datasets | extracted root containing `images\u002F\u003Csplit>` and `masks\u002F\u003Csplit>` | No |\n| quantize | dataset.segment.quant_calibration_dataset.images_dir | calibration_dataset | extracted image directory | No |\n| train | dataset.segment.root_dir | train_datasets | extracted root containing `images\u002F\u003Csplit>` and `masks\u002F\u003Csplit>` | No |\n\n### Typical Spec Overrides\n\nData source overrides are **mandatory for every action** — the agent MUST construct data source paths from the Per-Action Dataset Requirements table above and include them in `spec_overrides`.\n\n```python\nSEG_TRAIN_ROOT = \"\u002Fdata\u002Fsegformer\u002Ftrain\"\nSEG_EVAL_ROOT = \"\u002Fdata\u002Fsegformer\u002Feval\"\nSEG_INFER_ROOT = \"\u002Fdata\u002Fsegformer\u002Finfer\"\nCAL_IMAGES = f\"{SEG_TRAIN_ROOT}\u002Fimages\u002Ftrain\"\n```\n\n**train (mandatory data sources):**\n```python\n{\n    \"train.num_gpus\": 1,\n    \"train.num_epochs\": 10,\n    \"train.checkpoint_interval\": 10,\n    \"train.validation_interval\": 10,\n    \"dataset.segment.batch_size\": 4,\n    \"dataset.segment.root_dir\": SEG_TRAIN_ROOT,\n}\n```\n\n**evaluate (mandatory data sources):**\n```python\n{\n    \"evaluate.batch_size\": 4,\n    \"dataset.segment.root_dir\": SEG_EVAL_ROOT,\n    \"evaluate.checkpoint\": CHECKPOINT,\n}\n```\n\n**inference (mandatory data sources):**\n```python\n{\n    \"dataset.segment.batch_size\": 1,\n    \"dataset.segment.root_dir\": SEG_INFER_ROOT,\n    \"inference.checkpoint\": CHECKPOINT,\n}\n```\n\n**export (mandatory data sources):**\n```python\n{\n    \"dataset.segment.root_dir\": SEG_TRAIN_ROOT,\n    \"export.checkpoint\": CHECKPOINT,\n    \"export.input_height\": 256,\n    \"export.input_width\": 256,\n    \"export.onnx_file\": ONNX_FILE,\n}\n```\n\n**quantize (mandatory data sources):**\n```python\n{\n    \"dataset.segment.root_dir\": SEG_TRAIN_ROOT,\n    \"dataset.segment.quant_calibration_dataset.images_dir\": CAL_IMAGES,\n    \"quantize.model_path\": CHECKPOINT,\n}\n```\n\nIf the source dataset is delivered as separate `images\u002F*.tar.gz` and\n`masks\u002F*.tar.gz` archives, extract them before launch so `root_dir` contains\ndirectories such as `images\u002Ftrain`, `images\u002Fval`, `images\u002Ftest`, `masks\u002Ftrain`,\nand `masks\u002Fval`. Do not point `dataset.segment.root_dir` at an archive staging\nfolder that still contains only tarballs.\n## Eval Dataset\n\nOptional. Validation data is typically part of the root_dir structure.\n\n## Important Parameters\n\n- **dataset.segment.num_classes**: Number of segmentation classes. Default 2 (binary). Must match the number of classes in your mask annotations.\n- **model.backbone.type**: Default fan_small_12_p4_hybrid. Supported includes FAN variants, SegFormer MIT variants, and others.\n- **dataset.segment.root_dir**: Root directory of the segmentation dataset.\n- **dataset.segment.img_size**: Input image size. Default 256. Increase for finer segmentation at the cost of memory.\n- **train.optim.lr**: Learning rate. Default 6e-5.\n- **model.freeze_backbone**: Whether to freeze the backbone during training. Useful for fine-tuning with limited data.\n- **dataset.segment.batch_size**: Per-GPU batch size. Default 8.\n- **dataset.segment.label_transform**: Use the string `\"None\"` when no label\n  transform is desired. Do not set this to JSON\u002FYAML null; strict schema merge\n  treats the field as a string enum.\n- **dataset.segment.palette**: For grayscale masks, use one integer per RGB\n  entry, for example `rgb: [85]`. Preserve the dataset's actual label ids and\n  class names rather than normalizing them unless the user explicitly asks for a\n  conversion.\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.sync_batchnorm` | Sync BN across GPUs | configurable |\n| `train.use_distributed_sampler` | Use distributed sampler | configurable |\n\n- Multi-GPU strategy: `ddp_find_unused_parameters_true`\n- No fsdp support\n\n**Multi-node env vars** (set by orchestrator): `WORLD_SIZE`, `NODE_RANK`, `MASTER_ADDR`, `MASTER_PORT`, `NUM_GPU_PER_NODE`.\n\n## Hardware\n\nMinimum 1 GPU(s), recommended 2 GPU(s). 16GB+ (V100 or A100) VRAM per GPU. SegFormer is relatively lightweight. Default img_size=256 is memory-friendly. Increase img_size for higher resolution at the cost of memory and speed.\n\n## Error Patterns\n\n**CUDA out of memory**: Reduce batch_size or img_size. SegFormer memory scales quadratically with image size.\n\n**num_classes mismatch**: Ensure dataset.segment.num_classes matches the actual number of classes in your mask annotations.\n\n**TensorBoard unsupported for segmentation training**: Keep `train.tensorboard.enabled: false`. The SegFormer training entrypoint asserts that TensorBoard visualization is not supported for segmentation, so do not enable TensorBoard just to extract AutoML metrics; use log parsing or a post-train evaluator instead.\n\n**AutoML metric extraction**: SegFormer train status files report `val_miou` alongside `val_loss`, `val_acc`, and other validation KPIs. Default AutoML train launches must optimize `val_miou` with `direction: maximize`; do not optimize `val_loss` for default model invocations.\n\nFor AutoML or long segmentation sweeps, read `val_miou` from\n`results_dir\u002Ftrain\u002Fstatus.json` first. If the wrapper reports a terminal\nfailure but the structured status file reached the configured training budget\nand contains finite `val_miou`, report the recovered metric with the wrapper\nfailure noted instead of discarding the measurement.\n\nFor high-resolution custom segmentation targets, keep dataset paths as per-run\ninputs. Do not add customer\u002Fuser-specific roots to this reusable skill. When the\nuser asks for a fixed full-budget search, remember that bracket algorithms\n(`asha`, `bohb`, `dehb`, `hyperband`, `hyperband_es`, `pbt`) may intentionally\nlower `train.num_epochs` for some recommendations; use Bayesian\u002FBFBO or lock the\nbudget if every recommendation must run the full epoch count.\n\n**Checkpoint handoff**: For evaluate\u002Fexport\u002Finference\u002Fquantize\u002Fresume, use the checkpoint resolver on the best AutoML child job's `results_dir\u002Ftrain\u002F` folder and select the action-appropriate `model_epoch_*.pth` checkpoint, such as `model_epoch_000_step_00010.pth`. SegFormer may also write `segformer_model_latest.pth`, but that should only be used when a caller explicitly requests latest. Preserve `dataset.segment.num_classes`, `dataset.segment.img_size`, and `dataset.segment.root_dir` overrides for downstream actions.\n\n**Resume\u002Fretrain checkpoint**: Resume uses `train.resume_training_checkpoint_path`.\nPass the exact resolved checkpoint from the previous train output, not a guessed\n`model.pth` path. A resumed one-epoch run should produce the next checkpoint in\nthe new results directory, for example `model_epoch_001_step_00020.pth`.\n\n**Export \u002F TensorRT shape alignment**: Keep `export.input_height` and\n`export.input_width` aligned with `dataset.segment.img_size` unless the trained\nmodel and deploy specs have been validated at another resolution. The packaged\nfresh-install path is validated at `256x256`, matching the default SegFormer\ndataset and deploy templates.\n\n**Parent `segformer gen_trt_engine` rejected by the PyT CLI**: In the validated 7.0.0 PyT container, `segformer gen_trt_engine` is not a valid parent-model subtask. Use the SegFormer deploy workflow (`references\u002Ftao-deploy-segformer.md`) for TensorRT engine generation, TensorRT evaluation, and TensorRT inference.\n\n## Spec Param \u002F Parent Model Inference\n\nModel-specific inference mappings belong in this MD file, not in `config.json`. Generated runners should read this section and apply the mappings with SDK helpers before `create_job()`. This mirrors the old microservices `infer_params.py` flow.\n\nInference mappings from TAO Core `segformer.config.json`:\n\n| Action | Spec Field | Inference Function | Meaning |\n|---|---|---|---|\n| evaluate | `encryption_key` | `key` | encryption key |\n| evaluate | `evaluate.checkpoint` | `parent_model` | model file inferred from the parent job results folder |\n| evaluate | `evaluate.trt_engine` | `parent_model` | model file inferred from the parent job results folder |\n| evaluate | `results_dir` | `output_dir` | current job results directory |\n| export | `encryption_key` | `key` | encryption key |\n| export | `export.checkpoint` | `parent_model` | model file inferred from the parent job results folder |\n| export | `export.onnx_file` | `create_onnx_file` | output ONNX path |\n| export | `results_dir` | `output_dir` | current job results directory |\n| inference | `encryption_key` | `key` | encryption key |\n| inference | `inference.checkpoint` | `parent_model` | model file inferred from the parent job results folder |\n| inference | `inference.trt_engine` | `parent_model` | model file inferred from the parent job results folder |\n| inference | `results_dir` | `output_dir` | current job results directory |\n| quantize | `encryption_key` | `key` | encryption key |\n| quantize | `quantize.model_path` | `parent_model` | model file inferred from the parent job results folder |\n| quantize | `results_dir` | `output_dir` | current job results directory |\n| train | `encryption_key` | `key` | encryption key |\n| train | `model.backbone.pretrained_backbone_path` | `ptm_if_no_resume_model` | PTM when no resume checkpoint exists |\n| train | `results_dir` | `output_dir` | current job results directory |\n| train | `train.pretrained_model_path` | `ptm_if_no_resume_model` | PTM when no resume checkpoint exists |\n| train | `train.resume_training_checkpoint_path` | `resume_model` | model file inferred from the current job results folder |\n\nFor `parent_model` or `parent_model_folder`, pass the upstream train\u002Fexport\u002FAutoML child job id as `parent_job_id`. The SDK lists the parent result folder, filters checkpoint artifacts, and returns the selected model file or folder. Do not add these mappings back to `config.json` and do not patch generated runner scripts to guess checkpoint paths.\n\n## Deployment\n\n- [tao-deploy-segformer](references\u002Ftao-deploy-segformer.md)\n","# SegFormer\n\nSegFormer for semantic segmentation. Lightweight transformer-based architecture with hierarchical feature extraction. Efficient for real-time segmentation tasks.\n\nSet model.backbone.pretrained_backbone_path for backbone weights.\n\nFor TAO Deploy TensorRT actions (`gen_trt_engine`, TensorRT `evaluate`, and TensorRT `inference`), read `references\u002Ftao-deploy-segformer.md` first. Deploy spec templates live in this skill's `references\u002F` folder with the `spec_template_deploy_*.yaml` prefix.\n\n## Dataclass Schemas\n\nGenerated TAO Core schemas are packaged in `schemas\u002F\u003Caction>.schema.json`, with `schemas\u002Fmanifest.json` listing available actions. Each generated schema also emits `references\u002Fspec_template_\u003Caction>.yaml` from the schema top-level `default` field. AutoML enablement is declared at the model layer in `references\u002Fskill_info.yaml` via `automl_enabled`. Runnable AutoML still requires `schemas\u002Ftrain.schema.json` and `references\u002Fspec_template_train.yaml` to exist and parse. Use the packaged train schema for `automl_default_parameters`, `automl_disabled_parameters`, defaults, min\u002Fmax bounds, enums, option weights, math conditions, dependencies, and popular parameters. Do not expect `~\u002Ftao-core` at runtime; maintainers regenerate schemas\u002Ftemplates before packaging the skill bank.\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## Supported Actions\n\nThe packaged SegFormer PyT CLI supports `train`, `evaluate`, `export`, `inference`, `quantize`, and `default_specs`. This model skill exposes `train`, `evaluate`, `export`, `inference`, and `quantize`; resume\u002Fretrain is performed through `train` with `train.resume_training_checkpoint_path`.\n\nThe parent PyT CLI does not expose `gen_trt_engine`. Use `models\u002Fsegformer\u002Fdeploy` for TensorRT engine generation, TensorRT evaluation, and TensorRT inference.\n\n## Training Requirements\n\n- **Dataset type:** segmentation\n- **Formats:** unet\n- **Monitoring metric:** val_miou, maximize\n\n### Per-Action Dataset Requirements\n\n| Action | Spec Key | Source | Files | List? |\n|---|---|---|---|---|\n| evaluate | dataset.segment.root_dir | eval_dataset | extracted root containing `images\u002F\u003Csplit>` and `masks\u002F\u003Csplit>` | No |\n| export | dataset.segment.root_dir | train_datasets | extracted root containing `images\u002F\u003Csplit>` and `masks\u002F\u003Csplit>` | No |\n| inference | dataset.segment.root_dir | inference_dataset | extracted root containing `images\u002F\u003Csplit>` and `masks\u002F\u003Csplit>` | No |\n| quantize | dataset.segment.root_dir | train_datasets | extracted root containing `images\u002F\u003Csplit>` and `masks\u002F\u003Csplit>` | No |\n| quantize | dataset.segment.quant_calibration_dataset.images_dir | calibration_dataset | extracted image directory | No |\n| train | dataset.segment.root_dir | train_datasets | extracted root containing `images\u002F\u003Csplit>` and `masks\u002F\u003Csplit>` | No |\n\n### Typical Spec Overrides\n\nData source overrides are **mandatory for every action** — the agent MUST construct data source paths from the Per-Action Dataset Requirements table above and include them in `spec_overrides`.\n\n```python\nSEG_TRAIN_ROOT = \"\u002Fdata\u002Fsegformer\u002Ftrain\"\nSEG_EVAL_ROOT = \"\u002Fdata\u002Fsegformer\u002Feval\"\nSEG_INFER_ROOT = \"\u002Fdata\u002Fsegformer\u002Finfer\"\nCAL_IMAGES = f\"{SEG_TRAIN_ROOT}\u002Fimages\u002Ftrain\"\n```\n\n**train (mandatory data sources):**\n```python\n{\n    \"train.num_gpus\": 1,\n    \"train.num_epochs\": 10,\n    \"train.checkpoint_interval\": 10,\n    \"train.validation_interval\": 10,\n    \"dataset.segment.batch_size\": 4,\n    \"dataset.segment.root_dir\": SEG_TRAIN_ROOT,\n}\n```\n\n**evaluate (mandatory data sources):**\n```python\n{\n    \"evaluate.batch_size\": 4,\n    \"dataset.segment.root_dir\": SEG_EVAL_ROOT,\n    \"evaluate.checkpoint\": CHECKPOINT,\n}\n```\n\n**inference (mandatory data sources):**\n```python\n{\n    \"dataset.segment.batch_size\": 1,\n    \"dataset.segment.root_dir\": SEG_INFER_ROOT,\n    \"inference.checkpoint\": CHECKPOINT,\n}\n```\n\n**export (mandatory data sources):**\n```python\n{\n    \"dataset.segment.root_dir\": SEG_TRAIN_ROOT,\n    \"export.checkpoint\": CHECKPOINT,\n    \"export.input_height\": 256,\n    \"export.input_width\": 256,\n    \"export.onnx_file\": ONNX_FILE,\n}\n```\n\n**quantize (mandatory data sources):**\n```python\n{\n    \"dataset.segment.root_dir\": SEG_TRAIN_ROOT,\n    \"dataset.segment.quant_calibration_dataset.images_dir\": CAL_IMAGES,\n    \"quantize.model_path\": CHECKPOINT,\n}\n```\n\nIf the source dataset is delivered as separate `images\u002F*.tar.gz` and\n`masks\u002F*.tar.gz` archives, extract them before launch so `root_dir` contains\ndirectories such as `images\u002Ftrain`, `images\u002Fval`, `images\u002Ftest`, `masks\u002Ftrain`,\nand `masks\u002Fval`. Do not point `dataset.segment.root_dir` at an archive staging\nfolder that still contains only tarballs.\n## Eval Dataset\n\nOptional. Validation data is typically part of the root_dir structure.\n\n## Important Parameters\n\n- **dataset.segment.num_classes**: Number of segmentation classes. Default 2 (binary). Must match the number of classes in your mask annotations.\n- **model.backbone.type**: Default fan_small_12_p4_hybrid. Supported includes FAN variants, SegFormer MIT variants, and others.\n- **dataset.segment.root_dir**: Root directory of the segmentation dataset.\n- **dataset.segment.img_size**: Input image size. Default 256. Increase for finer segmentation at the cost of memory.\n- **train.optim.lr**: Learning rate. Default 6e-5.\n- **model.freeze_backbone**: Whether to freeze the backbone during training. Useful for fine-tuning with limited data.\n- **dataset.segment.batch_size**: Per-GPU batch size. Default 8.\n- **dataset.segment.label_transform**: Use the string `\"None\"` when no label\n  transform is desired. Do not set this to JSON\u002FYAML null; strict schema merge\n  treats the field as a string enum.\n- **dataset.segment.palette**: For grayscale masks, use one integer per RGB\n  entry, for example `rgb: [85]`. Preserve the dataset's actual label ids and\n  class names rather than normalizing them unless the user explicitly asks for a\n  conversion.\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.sync_batchnorm` | Sync BN across GPUs | configurable |\n| `train.use_distributed_sampler` | Use distributed sampler | configurable |\n\n- Multi-GPU strategy: `ddp_find_unused_parameters_true`\n- No fsdp support\n\n**Multi-node env vars** (set by orchestrator): `WORLD_SIZE`, `NODE_RANK`, `MASTER_ADDR`, `MASTER_PORT`, `NUM_GPU_PER_NODE`.\n\n## Hardware\n\nMinimum 1 GPU(s), recommended 2 GPU(s). 16GB+ (V100 or A100) VRAM per GPU. SegFormer is relatively lightweight. Default img_size=256 is memory-friendly. Increase img_size for higher resolution at the cost of memory and speed.\n\n## Error Patterns\n\n**CUDA out of memory**: Reduce batch_size or img_size. SegFormer memory scales quadratically with image size.\n\n**num_classes mismatch**: Ensure dataset.segment.num_classes matches the actual number of classes in your mask annotations.\n\n**TensorBoard unsupported for segmentation training**: Keep `train.tensorboard.enabled: false`. The SegFormer training entrypoint asserts that TensorBoard visualization is not supported for segmentation, so do not enable TensorBoard just to extract AutoML metrics; use log parsing or a post-train evaluator instead.\n\n**AutoML metric extraction**: SegFormer train status files report `val_miou` alongside `val_loss`, `val_acc`, and other validation KPIs. Default AutoML train launches must optimize `val_miou` with `direction: maximize`; do not optimize `val_loss` for default model invocations.\n\nFor AutoML or long segmentation sweeps, read `val_miou` from\n`results_dir\u002Ftrain\u002Fstatus.json` first. If the wrapper reports a terminal\nfailure but the structured status file reached the configured training budget\nand contains finite `val_miou`, report the recovered metric with the wrapper\nfailure noted instead of discarding the measurement.\n\nFor high-resolution custom segmentation targets, keep dataset paths as per-run\ninputs. Do not add customer\u002Fuser-specific roots to this reusable skill. When the\nuser asks for a fixed full-budget search, remember that bracket algorithms\n(`asha`, `bohb`, `dehb`, `hyperband`, `hyperband_es`, `pbt`) may intentionally\nlower `train.num_epochs` for some recommendations; use Bayesian\u002FBFBO or lock the\nbudget if every recommendation must run the full epoch count.\n\n**Checkpoint handoff**: For evaluate\u002Fexport\u002Finference\u002Fquantize\u002Fresume, use the checkpoint resolver on the best AutoML child job's `results_dir\u002Ftrain\u002F` folder and select the action-appropriate `model_epoch_*.pth` checkpoint, such as `model_epoch_000_step_00010.pth`. SegFormer may also write `segformer_model_latest.pth`, but that should only be used when a caller explicitly requests latest. Preserve `dataset.segment.num_classes`, `dataset.segment.img_size`, and `dataset.segment.root_dir` overrides for downstream actions.\n\n**Resume\u002Fretrain checkpoint**: Resume uses `train.resume_training_checkpoint_path`.\nPass the exact resolved checkpoint from the previous train output, not a guessed\n`model.pth` path. A resumed one-epoch run should produce the next checkpoint in\nthe new results directory, for example `model_epoch_001_step_00020.pth`.\n\n**Export \u002F TensorRT shape alignment**: Keep `export.input_height` and\n`export.input_width` aligned with `dataset.segment.img_size` unless the trained\nmodel and deploy specs have been validated at another resolution. The packaged\nfresh-install path is validated at `256x256`, matching the default SegFormer\ndataset and deploy templates.\n\n**Parent `segformer gen_trt_engine` rejected by the PyT CLI**: In the validated 7.0.0 PyT container, `segformer gen_trt_engine` is not a valid parent-model subtask. Use the SegFormer deploy workflow (`references\u002Ftao-deploy-segformer.md`) for TensorRT engine generation, TensorRT evaluation, and TensorRT inference.\n\n## Spec Param \u002F Parent Model Inference\n\nModel-specific inference mappings belong in this MD file, not in `config.json`. Generated runners should read this section and apply the mappings with SDK helpers before `create_job()`. This mirrors the old microservices `infer_params.py` flow.\n\nInference mappings from TAO Core `segformer.config.json`:\n\n| Action | Spec Field | Inference Function | Meaning |\n|---|---|---|---|\n| evaluate | `encryption_key` | `key` | encryption key |\n| evaluate | `evaluate.checkpoint` | `parent_model` | model file inferred from the parent job results folder |\n| evaluate | `evaluate.trt_engine` | `parent_model` | model file inferred from the parent job results folder |\n| evaluate | `results_dir` | `output_dir` | current job results directory |\n| export | `encryption_key` | `key` | encryption key |\n| export | `export.checkpoint` | `parent_model` | model file inferred from the parent job results folder |\n| export | `export.onnx_file` | `create_onnx_file` | output ONNX path |\n| export | `results_dir` | `output_dir` | current job results directory |\n| inference | `encryption_key` | `key` | encryption key |\n| inference | `inference.checkpoint` | `parent_model` | model file inferred from the parent job results folder |\n| inference | `inference.trt_engine` | `parent_model` | model file inferred from the parent job results folder |\n| inference | `results_dir` | `output_dir` | current job results directory |\n| quantize | `encryption_key` | `key` | encryption key |\n| quantize | `quantize.model_path` | `parent_model` | model file inferred from the parent job results folder |\n| quantize | `results_dir` | `output_dir` | current job results directory |\n| train | `encryption_key` | `key` | encryption key |\n| train | `model.backbone.pretrained_backbone_path` | `ptm_if_no_resume_model` | PTM when no resume checkpoint exists |\n| train | `results_dir` | `output_dir` | current job results directory |\n| train | `train.pretrained_model_path` | `ptm_if_no_resume_model` | PTM when no resume checkpoint exists |\n| train | `train.resume_training_checkpoint_path` | `resume_model` | model file inferred from the current job results folder |\n\nFor `parent_model` or `parent_model_folder`, pass the upstream train\u002Fexport\u002FAutoML child job id as `parent_job_id`. The SDK lists the parent result folder, filters checkpoint artifacts, and returns the selected model file or folder. Do not add these mappings back to `config.json` and do not patch generated runner scripts to guess checkpoint paths.\n\n## Deployment\n\n- [tao-deploy-segformer](references\u002Ftao-deploy-segformer.md)\n",{"name":5,"tags":44,"license":15,"metadata":45,"description":7,"allowed-tools":48,"compatibility":49},[37],{"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-segformer","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-segformer",{"tool":63,"command":64},"bunx","bunx skills add pattanation\u002FNorvik --skill tao-train-segformer",{"tool":66,"command":67},"pnpm","pnpm dlx skills add pattanation\u002FNorvik --skill tao-train-segformer","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-segformer\u002FSKILL.md",true,[71,77,81,85,89,93,97,101,105,109,113,116,120,124,128,132,136,140,144,148,152],{"path":72,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":75,"sourceHtmlUrl":76},"BENCHMARK.md","REFERENCE","参考文档",4067,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-segformer\u002FBENCHMARK.md",{"path":78,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":79,"sourceHtmlUrl":80},"evals\u002Fevals.json",776,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-segformer\u002Fevals\u002Fevals.json",{"path":82,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":83,"sourceHtmlUrl":84},"references\u002Fskill_info.yaml",4433,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-segformer\u002Freferences\u002Fskill_info.yaml",{"path":86,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":87,"sourceHtmlUrl":88},"references\u002Fspec_template_deploy_evaluate.yaml",748,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-segformer\u002Freferences\u002Fspec_template_deploy_evaluate.yaml",{"path":90,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":91,"sourceHtmlUrl":92},"references\u002Fspec_template_deploy_gen_trt_engine.yaml",1388,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-segformer\u002Freferences\u002Fspec_template_deploy_gen_trt_engine.yaml",{"path":94,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":95,"sourceHtmlUrl":96},"references\u002Fspec_template_deploy_inference.yaml",749,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-segformer\u002Freferences\u002Fspec_template_deploy_inference.yaml",{"path":98,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":99,"sourceHtmlUrl":100},"references\u002Fspec_template_evaluate.yaml",2832,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-segformer\u002Freferences\u002Fspec_template_evaluate.yaml",{"path":102,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":103,"sourceHtmlUrl":104},"references\u002Fspec_template_export.yaml",2927,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-segformer\u002Freferences\u002Fspec_template_export.yaml",{"path":106,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":107,"sourceHtmlUrl":108},"references\u002Fspec_template_inference.yaml",2833,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-segformer\u002Freferences\u002Fspec_template_inference.yaml",{"path":110,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":111,"sourceHtmlUrl":112},"references\u002Fspec_template_quantize.yaml",2682,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-segformer\u002Freferences\u002Fspec_template_quantize.yaml",{"path":114,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":111,"sourceHtmlUrl":115},"references\u002Fspec_template_train.yaml","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-segformer\u002Freferences\u002Fspec_template_train.yaml",{"path":117,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":118,"sourceHtmlUrl":119},"references\u002Ftao-deploy-segformer.md",5938,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-segformer\u002Freferences\u002Ftao-deploy-segformer.md",{"path":121,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":122,"sourceHtmlUrl":123},"references\u002Ftao-deploy-segformer.skill_info.yaml",2852,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-segformer\u002Freferences\u002Ftao-deploy-segformer.skill_info.yaml",{"path":125,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":126,"sourceHtmlUrl":127},"schemas\u002Fevaluate.schema.json",49327,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-segformer\u002Fschemas\u002Fevaluate.schema.json",{"path":129,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":130,"sourceHtmlUrl":131},"schemas\u002Fexport.schema.json",50335,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-segformer\u002Fschemas\u002Fexport.schema.json",{"path":133,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":134,"sourceHtmlUrl":135},"schemas\u002Finference.schema.json",49329,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-segformer\u002Fschemas\u002Finference.schema.json",{"path":137,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":138,"sourceHtmlUrl":139},"schemas\u002Fmanifest.json",18123,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-segformer\u002Fschemas\u002Fmanifest.json",{"path":141,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":142,"sourceHtmlUrl":143},"schemas\u002Fquantize.schema.json",46528,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-segformer\u002Fschemas\u002Fquantize.schema.json",{"path":145,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":146,"sourceHtmlUrl":147},"schemas\u002Ftrain.schema.json",46522,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-segformer\u002Fschemas\u002Ftrain.schema.json",{"path":149,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":150,"sourceHtmlUrl":151},"skill-card.md",3840,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-segformer\u002Fskill-card.md",{"path":153,"resourceType":154,"resourceTypeDesc":155,"sizeBytes":156,"sourceHtmlUrl":157},"skill.oms.sig","OTHER","其他",8845,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-train-segformer\u002Fskill.oms.sig",[159,190,215,239,261,276],{"skillNo":160,"name":161,"nameZh":6,"description":162,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":163,"sourceHtmlUrl":164,"categories":165,"keywords":174,"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",[166,171],{"categoryNo":167,"categoryName":168,"taxonomyType":169,"taxonomyTypeDesc":170},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":172,"categoryName":173,"taxonomyType":169,"taxonomyTypeDesc":170},"01JBSEEDCAT000000000000009","前端开发",[175,176,177,33,178,179,180,181,23,182,183,184,185,186,187,188,189],"webapp","testing","webapp testing","applications","local","frontend","debugging","logs","browser","with","playwright","web","behavior","ui","screenshots",{"skillNo":191,"name":192,"nameZh":6,"description":193,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":194,"sourceHtmlUrl":195,"categories":196,"keywords":198,"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",[197],{"categoryNo":172,"categoryName":173,"taxonomyType":169,"taxonomyTypeDesc":170},[199,200,201,186,202,203,204,33,205,206,180,207,26,208,209,210,211,212,213,214],"builder","artifacts builder","artifacts","web artifacts builder","single-file","css","Tailwind","ui components","single","file","components","react","multi","state","routing","state management",{"skillNo":216,"name":217,"nameZh":6,"description":218,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":219,"licenseFileUrl":220,"sourceHtmlUrl":221,"categories":222,"keywords":224,"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",[223],{"categoryNo":172,"categoryName":173,"taxonomyType":169,"taxonomyTypeDesc":170},[225,226,227,228,229,230,231,232,233,234,235,236,237,238],"functions","vueuse","vueuse functions","project","nuxt","apply","github","concise","build","https","features","vue","js","composables",{"skillNo":240,"name":241,"nameZh":6,"description":242,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":219,"licenseFileUrl":243,"sourceHtmlUrl":244,"categories":245,"keywords":248,"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",[246,247],{"categoryNo":167,"categoryName":168,"taxonomyType":169,"taxonomyTypeDesc":170},{"categoryNo":172,"categoryName":173,"taxonomyType":169,"taxonomyTypeDesc":170},[249,176,250,236,251,185,252,253,254,231,255,33,256,257,258,26,259,237,260],"vue testing best practices","testing best practices","best practices","test","testing patterns","component","vitest","mocking","e2e","utils","patterns","e2e testing",{"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":219,"licenseFileUrl":265,"sourceHtmlUrl":266,"categories":267,"keywords":269,"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",[268],{"categoryNo":172,"categoryName":173,"taxonomyType":169,"taxonomyTypeDesc":170},[270,236,271,251,272,254,273,231,259,274,275],"router","vue router best practices","route","guards","navigation","lifecycle",{"skillNo":277,"name":278,"nameZh":6,"description":279,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":219,"licenseFileUrl":280,"sourceHtmlUrl":281,"categories":282,"keywords":284,"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",[283],{"categoryNo":172,"categoryName":173,"taxonomyType":169,"taxonomyTypeDesc":170},[285,236,251,286,228,287,22,288,270,289,290,291,292,293,294,33,295,26,296,297],"vue best practices","Composition","files","api","pinia","work","options","ssr","typescript","as","vite","load","standard"]