[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M78AVBDVGZYA32CS21PXRZ59":3,"skill-same:01M78AVBDVGZYA32CS21PXRZ59":139},{"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":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":34,"commitSha":35,"skillDirectory":36,"forksCount":14,"repositoryHtmlUrl":37,"repositoryHomepageUrl":6,"ownerHtmlUrl":38,"ownerBlogUrl":39,"ownerDescription":40,"updatedAt":41,"install":42,"resources":55},"01M78AVBDVGZYA32CS21PXRZ59","tao-train-sparse4d",null,"Sparse4D for multi-camera temporal 3D object detection and tracking. Uses sparse queries with deformable attention across camera views and time for end-to-end 3D perception, with an instance bank for temporal tracking. Use when training, evaluating, exporting, quantizing, or running inference for a TAO Sparse4D model. Trigger phrases include \"train Sparse4D\", \"multi-camera 3D detection\", \"temporal 3D tracker\", \"sparse query 3D perception\".","Solizardking\u002Ftrain2earn","Solizardking","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F108096810?v=4","01M786KDB10AYV042N0F9BD5B5","Clawd","01M786KDC5C3NPE4W44C5641EZ",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fnvidia\u002Ftao-train-sparse4d\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: tao-train-sparse4d\ndescription: Sparse4D for multi-camera temporal 3D object detection and tracking. Uses sparse queries with deformable\n  attention across camera views and time for end-to-end 3D perception, with an instance bank for temporal tracking. Use when\n  training, evaluating, exporting, quantizing, or running inference for a TAO Sparse4D model. Trigger phrases include\n  \"train Sparse4D\", \"multi-camera 3D detection\", \"temporal 3D tracker\", \"sparse query 3D perception\".\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- temporal\n- 3d\n- detection\n- tracking\n---\n\n# Sparse4D\n\nSparse4D for multi-camera temporal 3D object detection and tracking. Uses sparse queries with deformable attention across camera views and time for end-to-end 3D perception. Includes instance bank for temporal tracking.\n\nUse a pretrained ResNet-101 backbone when one is available by setting\n`train.pretrained_model_path`. For local smoke validation, Sparse4D training\ncan run with an empty `train.pretrained_model_path`, but production runs should\nstill use a compatible PTM.\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## Training Requirements\n\n- **Dataset type:** sparse4d\n- **Formats:** ovpkl\n- **Monitoring metric:** val_mAP\n- Current TAO Sparse4D training emits this value in status\u002Flogs as\n  `img_bbox_NuScenes\u002FmAP` and `mAP`; AutoML metric\n  extractors should treat those emitted keys as aliases for `val_mAP`.\n  Multi-fidelity AutoML algorithms such as Hyperband, ASHA, and BOHB may\n  promote a checkpoint to a resume job that completes without emitting a fresh\n  `val_mAP` alias. In that case, compare AutoML's carried metric to the source\n  rung job that emitted `img_bbox_NuScenes\u002FmAP` or `mAP`, while still verifying\n  that the promoted job resumed from the explicit epoch\u002Fstep checkpoint,\n  produced a real checkpoint, and is usable for evaluate\u002Finference.\n\n### Per-Action Dataset Requirements\n\n| Action | Spec Key | Source | Files | List? |\n|---|---|---|---|---|\n| dataset_convert | aicity.root | id |  | No |\n| evaluate | dataset.data_root | eval_dataset | (from convert job, spec: aicity.split) | No |\n| evaluate | model.head.instance_bank.anchor | train_datasets | \u002Fresults\u002F{dataset_convert_job_id}\u002Fanchor_init.npy | No |\n| evaluate | dataset.train_dataset.ann_file | train_datasets | (from convert job, spec: aicity.split) | No |\n| evaluate | dataset.val_dataset.ann_file | eval_dataset | (from convert job, spec: aicity.split) | No |\n| evaluate | dataset.test_dataset.ann_file | inference_dataset | (from convert job, spec: aicity.split) | No |\n| export | model.head.instance_bank.anchor | train_datasets | \u002Fresults\u002F{dataset_convert_job_id}\u002Fanchor_init.npy | No |\n| inference | dataset.data_root | inference_dataset | (from convert job, spec: aicity.split) | No |\n| inference | model.head.instance_bank.anchor | train_datasets | \u002Fresults\u002F{dataset_convert_job_id}\u002Fanchor_init.npy | No |\n| inference | dataset.train_dataset.ann_file | train_datasets | (from convert job, spec: aicity.split) | No |\n| inference | dataset.val_dataset.ann_file | eval_dataset | (from convert job, spec: aicity.split) | No |\n| inference | dataset.test_dataset.ann_file | inference_dataset | (from convert job, spec: aicity.split) | No |\n| quantize | dataset.data_root | train_datasets | (from convert job, spec: aicity.split) | No |\n| quantize | model.head.instance_bank.anchor | train_datasets | \u002Fresults\u002F{dataset_convert_job_id}\u002Fanchor_init.npy | No |\n| quantize | dataset.train_dataset.ann_file | train_datasets | (from convert job, spec: aicity.split) | No |\n| quantize | dataset.val_dataset.ann_file | eval_dataset | (from convert job, spec: aicity.split) | No |\n| quantize | dataset.test_dataset.ann_file | inference_dataset | (from convert job, spec: aicity.split) | No |\n| quantize | dataset.quant_calibration_dataset.images_dir | train_datasets |  | No |\n| train | dataset.data_root | train_datasets | (from convert job, spec: aicity.split) | No |\n| train | model.head.instance_bank.anchor | train_datasets | \u002Fresults\u002F{dataset_convert_job_id}\u002Fanchor_init.npy | No |\n| train | dataset.train_dataset.ann_file | train_datasets | (from convert job, spec: aicity.split) | No |\n| train | dataset.val_dataset.ann_file | eval_dataset | (from convert job, spec: aicity.split) | No |\n| train | dataset.test_dataset.ann_file | inference_dataset | (from convert job, spec: aicity.split) | 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\nS3_TRAIN = \"s3:\u002F\u002Fbucket\u002Fdata\u002Ftrain\"\nS3_EVAL = \"s3:\u002F\u002Fbucket\u002Fdata\u002Feval\"\nCONVERTED_SCENE = \"\u003Cscene-from-converter>\"  # e.g. \"subsetscene+bev-sensor-random-0\"\n```\n\n**train (mandatory data sources):**\n```python\nCONVERTED = \"s3:\u002F\u002Fbucket\u002Fresults\u002F\u003Cdataset_convert_job_id>\"\n{\n    \"train.num_epochs\": 30,\n    \"train.checkpoint_interval\": 10,\n    \"train.validation_interval\": 10,\n    \"train.num_gpus\": 1,\n    \"dataset.sequences.split_num\": 90,\n    \"dataset.train_dataset.sequences_split_num\": 90,\n    \"dataset.data_root\": f\"{S3_TRAIN}\u002Ftrain\",\n    \"model.head.instance_bank.anchor\": f\"{CONVERTED}\u002Fanchor_init.npy\",\n    \"dataset.train_dataset.ann_file\": f\"{CONVERTED}\u002Ftrain\u002F{CONVERTED_SCENE}_infos_train.pkl\",\n    \"dataset.val_dataset.ann_file\": f\"{CONVERTED}\u002Fval\u002F{CONVERTED_SCENE}_infos_val.pkl\",\n    \"dataset.test_dataset.ann_file\": f\"{CONVERTED}\u002Ftest\u002F{CONVERTED_SCENE}_infos_test.pkl\",\n}\n```\n\n**evaluate (mandatory data sources):**\n```python\nCONVERTED = \"s3:\u002F\u002Fbucket\u002Fresults\u002F\u003Cdataset_convert_job_id>\"\n{\n    \"dataset.data_root\": f\"{S3_EVAL}\u002Fval\",\n    \"model.head.instance_bank.anchor\": f\"{CONVERTED}\u002Fanchor_init.npy\",\n    \"dataset.train_dataset.ann_file\": f\"{CONVERTED}\u002Ftrain\u002F{CONVERTED_SCENE}_infos_train.pkl\",\n    \"dataset.val_dataset.ann_file\": f\"{CONVERTED}\u002Fval\u002F{CONVERTED_SCENE}_infos_val.pkl\",\n    \"dataset.test_dataset.ann_file\": f\"{CONVERTED}\u002Ftest\u002F{CONVERTED_SCENE}_infos_test.pkl\",\n}\n```\n\n**export (mandatory data sources):**\n```python\nCONVERTED = \"s3:\u002F\u002Fbucket\u002Fresults\u002F\u003Cdataset_convert_job_id>\"\n{\n    \"model.head.instance_bank.anchor\": f\"{CONVERTED}\u002Fanchor_init.npy\",\n}\n```\n\n**inference (mandatory data sources):**\n```python\nCONVERTED = \"s3:\u002F\u002Fbucket\u002Fresults\u002F\u003Cdataset_convert_job_id>\"\n{\n    \"dataset.data_root\": f\"{S3_EVAL}\u002Ftest\",\n    \"model.head.instance_bank.anchor\": f\"{CONVERTED}\u002Fanchor_init.npy\",\n    \"dataset.train_dataset.ann_file\": f\"{CONVERTED}\u002Ftrain\u002F{CONVERTED_SCENE}_infos_train.pkl\",\n    \"dataset.val_dataset.ann_file\": f\"{CONVERTED}\u002Fval\u002F{CONVERTED_SCENE}_infos_val.pkl\",\n    \"dataset.test_dataset.ann_file\": f\"{CONVERTED}\u002Ftest\u002F{CONVERTED_SCENE}_infos_test.pkl\",\n}\n```\n\n**quantize (mandatory data sources):**\n```python\nCONVERTED = \"s3:\u002F\u002Fbucket\u002Fresults\u002F\u003Cdataset_convert_job_id>\"\n{\n    \"dataset.data_root\": f\"{S3_TRAIN}\u002Ftrain\",\n    \"model.head.instance_bank.anchor\": f\"{CONVERTED}\u002Fanchor_init.npy\",\n    \"dataset.train_dataset.ann_file\": f\"{CONVERTED}\u002Ftrain\u002F{CONVERTED_SCENE}_infos_train.pkl\",\n    \"dataset.val_dataset.ann_file\": f\"{CONVERTED}\u002Fval\u002F{CONVERTED_SCENE}_infos_val.pkl\",\n    \"dataset.test_dataset.ann_file\": f\"{CONVERTED}\u002Ftest\u002F{CONVERTED_SCENE}_infos_test.pkl\",\n    \"dataset.quant_calibration_dataset.images_dir\": f\"{S3_TRAIN}\",\n}\n```\n\nSee `references\u002Flocal_docker_conversion.md` for local-docker conversion roots and mounts, H5 depth-path normalization, converted annotation filenames, smoke-run `max_num_cams`\u002Fanchor contracts for export compatibility, and converted-artifact verification before train\u002Fevaluate\u002Finference.\n\n## Eval Dataset\n\nOptional. Val\u002Ftest splits configured via dataset ann_file paths.\n\n## Important Parameters\n\n- **model.backbone**: Backbone. Default resnet_101.\n- **model.neck.out_channels**: FPN output channels. Default 256. num_outs=4.\n- **model.input_shape**: Input image shape [W, H]. Default [1408, 512].\n- **model.head.num_output**: Number of detection output queries. Default 300.\n- **model.head.num_decoder**: Number of decoder layers. Default 6.\n- **model.head.temporal**: Enable temporal reasoning. Default True.\n- **model.head.instance_bank.num_anchor**: Instance bank anchors. Default 900.\n- **model.head.instance_bank.num_temp_instances**: Temporal instance count. Default 600.\n- **model.depth_branch.loss_weight**: Depth supervision loss weight. Default 0.2.\n- **dataset.batch_size**: Per-GPU batch size. Default 2.\n- **dataset.num_frames**: Sequence length. Default 200.\n- **dataset.classes**: Detection classes. Default [person, gr1_t2, agility_digit, nova_carter]. num_ids=70 for tracking.\n- **train.optim.lr**: Learning rate. Default 5e-5. img_backbone lr_mult=0.2.\n- **train.lr_scheduler**: Cosine scheduler with linear warmup (500 iters, ratio 0.333).\n- **train.grad_clip.max_norm**: Gradient clipping. Default 25.\n- **train.precision**: Options: bf16, fp16, fp32. Default bf16.\n- **evaluate.metrics**: Eval metrics. Default [\"detection\"]. Optional tracking evaluation.\n- **evaluate.tracking.enabled**: Enable tracking evaluation. tracking_threshold=0.2.\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\n- Multi-GPU strategy: `ddp_find_unused_parameters_true` (no fsdp support)\n- `sync_batchnorm` is always enabled (True)\n- Iterations per epoch computed as: `num_frames * num_bev_groups \u002F (num_nodes * num_gpus * batch_size)`\n- **Scaling:** When increasing GPUs, effective batch size grows and iterations-per-epoch shrinks proportionally\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 2 GPU(s), recommended 8 GPU(s). 40GB+ (A100 recommended) VRAM per GPU. Multi-camera temporal model is memory intensive. bf16 required for practical training. Multi-GPU strongly recommended. Instance bank requires substantial memory for temporal reasoning.\n\n## Error Patterns\n\n**dataset_convert required**: Must run dataset_convert first to produce annotation pickles and anchor_init.npy.\n\n**dataset_convert container\u002Fcommand**: Sparse4D conversion is an AICity to\nOVPKL annotations conversion. Launch `dataset_convert` with the action-level\n`tao_toolkit.data_services` image and `annotations convert -e {config_path}`;\ndo not use the PyTorch `sparse4d` CLI for conversion. Train\u002Fevaluate\u002Fexport\u002F\ninference still use the model-level PyTorch image.\n\n**Stable raw-data path**: The AICity to OVPKL converter writes image paths into\nthe generated pickle files. Keep `aicity.root` at `\u002Fdata\u002Faicity_root` during\nconversion, then point `dataset.data_root` at the split folder, for example\n`\u002Fdata\u002Faicity_root\u002Ftrain` for training or `\u002Fdata\u002Faicity_root\u002Fval` for\nevaluation. This preserves the converter's absolute RGB paths and relative\ndepth paths.\n\n**H5 depth tuple mismatch**: If training fails with an H5 path error where the\ntrainer tries to open a camera directory such as\n`\u002Fdata\u002Faicity_root\u002Ftrain\u002F\u003Cscene>\u002FCamera`, run\n`models\u002Fsparse4d\u002Fscripts\u002Fnormalize_depth_paths.py --data-root \u003Chost-aicity-root>\u002Ftrain \u003Cconverted-ann-dir>`\nafter `dataset_convert` and before train\u002Fevaluate\u002Finference. The helper rewrites\nconverted `depth_map_path` tuples to point at\n`\u003Cscene>\u002Fdepth_maps\u002F\u003Ccamera>.h5` with the H5 dataset key basename.\n\n**Missing anchor file**: Set model.head.instance_bank.anchor to the anchor_init.npy path from dataset_convert results.\n\n**Temporal OOM**: Reduce dataset.num_frames or dataset.batch_size if running out of memory during temporal training.\n\n**Quantize image compatibility**: The model-skill wiring should pass\n`quantize.model_path` through the parent-model resolver, and checkpoint handoff\nshould select the exact epoch\u002Fstep checkpoint just like evaluate, inference,\nexport, and resume. TorchAO checkpoint quantization passes in the\n`validation-fixes-20260525` PyT image and writes\n`quantized_model_torchao.pth`. Older 7.0.0-rc PyT images may fail inside the\nSparse4D quantize entrypoint or lack ONNX quantization dependencies; do not\nremove or skip the advertised `quantize` action if that occurs. Report the\ncontainer\u002Fimage failure and keep the exact checkpoint path visible.\n\n## Spec Param \u002F Parent Model Inference\n\nSee `references\u002Fspec_param_inference.md` for the model-specific inference mappings from TAO Core `sparse4d.config.json` (the per-action spec-field to inference-function table) and the `parent_model`\u002F`parent_job_id` checkpoint-resolution rules that generated runners apply with SDK helpers before `create_job()`.\n","# Sparse4D\n\nSparse4D for multi-camera temporal 3D object detection and tracking. Uses sparse queries with deformable attention across camera views and time for end-to-end 3D perception. Includes instance bank for temporal tracking.\n\nUse a pretrained ResNet-101 backbone when one is available by setting\n`train.pretrained_model_path`. For local smoke validation, Sparse4D training\ncan run with an empty `train.pretrained_model_path`, but production runs should\nstill use a compatible PTM.\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## Training Requirements\n\n- **Dataset type:** sparse4d\n- **Formats:** ovpkl\n- **Monitoring metric:** val_mAP\n- Current TAO Sparse4D training emits this value in status\u002Flogs as\n  `img_bbox_NuScenes\u002FmAP` and `mAP`; AutoML metric\n  extractors should treat those emitted keys as aliases for `val_mAP`.\n  Multi-fidelity AutoML algorithms such as Hyperband, ASHA, and BOHB may\n  promote a checkpoint to a resume job that completes without emitting a fresh\n  `val_mAP` alias. In that case, compare AutoML's carried metric to the source\n  rung job that emitted `img_bbox_NuScenes\u002FmAP` or `mAP`, while still verifying\n  that the promoted job resumed from the explicit epoch\u002Fstep checkpoint,\n  produced a real checkpoint, and is usable for evaluate\u002Finference.\n\n### Per-Action Dataset Requirements\n\n| Action | Spec Key | Source | Files | List? |\n|---|---|---|---|---|\n| dataset_convert | aicity.root | id |  | No |\n| evaluate | dataset.data_root | eval_dataset | (from convert job, spec: aicity.split) | No |\n| evaluate | model.head.instance_bank.anchor | train_datasets | \u002Fresults\u002F{dataset_convert_job_id}\u002Fanchor_init.npy | No |\n| evaluate | dataset.train_dataset.ann_file | train_datasets | (from convert job, spec: aicity.split) | No |\n| evaluate | dataset.val_dataset.ann_file | eval_dataset | (from convert job, spec: aicity.split) | No |\n| evaluate | dataset.test_dataset.ann_file | inference_dataset | (from convert job, spec: aicity.split) | No |\n| export | model.head.instance_bank.anchor | train_datasets | \u002Fresults\u002F{dataset_convert_job_id}\u002Fanchor_init.npy | No |\n| inference | dataset.data_root | inference_dataset | (from convert job, spec: aicity.split) | No |\n| inference | model.head.instance_bank.anchor | train_datasets | \u002Fresults\u002F{dataset_convert_job_id}\u002Fanchor_init.npy | No |\n| inference | dataset.train_dataset.ann_file | train_datasets | (from convert job, spec: aicity.split) | No |\n| inference | dataset.val_dataset.ann_file | eval_dataset | (from convert job, spec: aicity.split) | No |\n| inference | dataset.test_dataset.ann_file | inference_dataset | (from convert job, spec: aicity.split) | No |\n| quantize | dataset.data_root | train_datasets | (from convert job, spec: aicity.split) | No |\n| quantize | model.head.instance_bank.anchor | train_datasets | \u002Fresults\u002F{dataset_convert_job_id}\u002Fanchor_init.npy | No |\n| quantize | dataset.train_dataset.ann_file | train_datasets | (from convert job, spec: aicity.split) | No |\n| quantize | dataset.val_dataset.ann_file | eval_dataset | (from convert job, spec: aicity.split) | No |\n| quantize | dataset.test_dataset.ann_file | inference_dataset | (from convert job, spec: aicity.split) | No |\n| quantize | dataset.quant_calibration_dataset.images_dir | train_datasets |  | No |\n| train | dataset.data_root | train_datasets | (from convert job, spec: aicity.split) | No |\n| train | model.head.instance_bank.anchor | train_datasets | \u002Fresults\u002F{dataset_convert_job_id}\u002Fanchor_init.npy | No |\n| train | dataset.train_dataset.ann_file | train_datasets | (from convert job, spec: aicity.split) | No |\n| train | dataset.val_dataset.ann_file | eval_dataset | (from convert job, spec: aicity.split) | No |\n| train | dataset.test_dataset.ann_file | inference_dataset | (from convert job, spec: aicity.split) | 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\nS3_TRAIN = \"s3:\u002F\u002Fbucket\u002Fdata\u002Ftrain\"\nS3_EVAL = \"s3:\u002F\u002Fbucket\u002Fdata\u002Feval\"\nCONVERTED_SCENE = \"\u003Cscene-from-converter>\"  # e.g. \"subsetscene+bev-sensor-random-0\"\n```\n\n**train (mandatory data sources):**\n```python\nCONVERTED = \"s3:\u002F\u002Fbucket\u002Fresults\u002F\u003Cdataset_convert_job_id>\"\n{\n    \"train.num_epochs\": 30,\n    \"train.checkpoint_interval\": 10,\n    \"train.validation_interval\": 10,\n    \"train.num_gpus\": 1,\n    \"dataset.sequences.split_num\": 90,\n    \"dataset.train_dataset.sequences_split_num\": 90,\n    \"dataset.data_root\": f\"{S3_TRAIN}\u002Ftrain\",\n    \"model.head.instance_bank.anchor\": f\"{CONVERTED}\u002Fanchor_init.npy\",\n    \"dataset.train_dataset.ann_file\": f\"{CONVERTED}\u002Ftrain\u002F{CONVERTED_SCENE}_infos_train.pkl\",\n    \"dataset.val_dataset.ann_file\": f\"{CONVERTED}\u002Fval\u002F{CONVERTED_SCENE}_infos_val.pkl\",\n    \"dataset.test_dataset.ann_file\": f\"{CONVERTED}\u002Ftest\u002F{CONVERTED_SCENE}_infos_test.pkl\",\n}\n```\n\n**evaluate (mandatory data sources):**\n```python\nCONVERTED = \"s3:\u002F\u002Fbucket\u002Fresults\u002F\u003Cdataset_convert_job_id>\"\n{\n    \"dataset.data_root\": f\"{S3_EVAL}\u002Fval\",\n    \"model.head.instance_bank.anchor\": f\"{CONVERTED}\u002Fanchor_init.npy\",\n    \"dataset.train_dataset.ann_file\": f\"{CONVERTED}\u002Ftrain\u002F{CONVERTED_SCENE}_infos_train.pkl\",\n    \"dataset.val_dataset.ann_file\": f\"{CONVERTED}\u002Fval\u002F{CONVERTED_SCENE}_infos_val.pkl\",\n    \"dataset.test_dataset.ann_file\": f\"{CONVERTED}\u002Ftest\u002F{CONVERTED_SCENE}_infos_test.pkl\",\n}\n```\n\n**export (mandatory data sources):**\n```python\nCONVERTED = \"s3:\u002F\u002Fbucket\u002Fresults\u002F\u003Cdataset_convert_job_id>\"\n{\n    \"model.head.instance_bank.anchor\": f\"{CONVERTED}\u002Fanchor_init.npy\",\n}\n```\n\n**inference (mandatory data sources):**\n```python\nCONVERTED = \"s3:\u002F\u002Fbucket\u002Fresults\u002F\u003Cdataset_convert_job_id>\"\n{\n    \"dataset.data_root\": f\"{S3_EVAL}\u002Ftest\",\n    \"model.head.instance_bank.anchor\": f\"{CONVERTED}\u002Fanchor_init.npy\",\n    \"dataset.train_dataset.ann_file\": f\"{CONVERTED}\u002Ftrain\u002F{CONVERTED_SCENE}_infos_train.pkl\",\n    \"dataset.val_dataset.ann_file\": f\"{CONVERTED}\u002Fval\u002F{CONVERTED_SCENE}_infos_val.pkl\",\n    \"dataset.test_dataset.ann_file\": f\"{CONVERTED}\u002Ftest\u002F{CONVERTED_SCENE}_infos_test.pkl\",\n}\n```\n\n**quantize (mandatory data sources):**\n```python\nCONVERTED = \"s3:\u002F\u002Fbucket\u002Fresults\u002F\u003Cdataset_convert_job_id>\"\n{\n    \"dataset.data_root\": f\"{S3_TRAIN}\u002Ftrain\",\n    \"model.head.instance_bank.anchor\": f\"{CONVERTED}\u002Fanchor_init.npy\",\n    \"dataset.train_dataset.ann_file\": f\"{CONVERTED}\u002Ftrain\u002F{CONVERTED_SCENE}_infos_train.pkl\",\n    \"dataset.val_dataset.ann_file\": f\"{CONVERTED}\u002Fval\u002F{CONVERTED_SCENE}_infos_val.pkl\",\n    \"dataset.test_dataset.ann_file\": f\"{CONVERTED}\u002Ftest\u002F{CONVERTED_SCENE}_infos_test.pkl\",\n    \"dataset.quant_calibration_dataset.images_dir\": f\"{S3_TRAIN}\",\n}\n```\n\nSee `references\u002Flocal_docker_conversion.md` for local-docker conversion roots and mounts, H5 depth-path normalization, converted annotation filenames, smoke-run `max_num_cams`\u002Fanchor contracts for export compatibility, and converted-artifact verification before train\u002Fevaluate\u002Finference.\n\n## Eval Dataset\n\nOptional. Val\u002Ftest splits configured via dataset ann_file paths.\n\n## Important Parameters\n\n- **model.backbone**: Backbone. Default resnet_101.\n- **model.neck.out_channels**: FPN output channels. Default 256. num_outs=4.\n- **model.input_shape**: Input image shape [W, H]. Default [1408, 512].\n- **model.head.num_output**: Number of detection output queries. Default 300.\n- **model.head.num_decoder**: Number of decoder layers. Default 6.\n- **model.head.temporal**: Enable temporal reasoning. Default True.\n- **model.head.instance_bank.num_anchor**: Instance bank anchors. Default 900.\n- **model.head.instance_bank.num_temp_instances**: Temporal instance count. Default 600.\n- **model.depth_branch.loss_weight**: Depth supervision loss weight. Default 0.2.\n- **dataset.batch_size**: Per-GPU batch size. Default 2.\n- **dataset.num_frames**: Sequence length. Default 200.\n- **dataset.classes**: Detection classes. Default [person, gr1_t2, agility_digit, nova_carter]. num_ids=70 for tracking.\n- **train.optim.lr**: Learning rate. Default 5e-5. img_backbone lr_mult=0.2.\n- **train.lr_scheduler**: Cosine scheduler with linear warmup (500 iters, ratio 0.333).\n- **train.grad_clip.max_norm**: Gradient clipping. Default 25.\n- **train.precision**: Options: bf16, fp16, fp32. Default bf16.\n- **evaluate.metrics**: Eval metrics. Default [\"detection\"]. Optional tracking evaluation.\n- **evaluate.tracking.enabled**: Enable tracking evaluation. tracking_threshold=0.2.\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\n- Multi-GPU strategy: `ddp_find_unused_parameters_true` (no fsdp support)\n- `sync_batchnorm` is always enabled (True)\n- Iterations per epoch computed as: `num_frames * num_bev_groups \u002F (num_nodes * num_gpus * batch_size)`\n- **Scaling:** When increasing GPUs, effective batch size grows and iterations-per-epoch shrinks proportionally\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 2 GPU(s), recommended 8 GPU(s). 40GB+ (A100 recommended) VRAM per GPU. Multi-camera temporal model is memory intensive. bf16 required for practical training. Multi-GPU strongly recommended. Instance bank requires substantial memory for temporal reasoning.\n\n## Error Patterns\n\n**dataset_convert required**: Must run dataset_convert first to produce annotation pickles and anchor_init.npy.\n\n**dataset_convert container\u002Fcommand**: Sparse4D conversion is an AICity to\nOVPKL annotations conversion. Launch `dataset_convert` with the action-level\n`tao_toolkit.data_services` image and `annotations convert -e {config_path}`;\ndo not use the PyTorch `sparse4d` CLI for conversion. Train\u002Fevaluate\u002Fexport\u002F\ninference still use the model-level PyTorch image.\n\n**Stable raw-data path**: The AICity to OVPKL converter writes image paths into\nthe generated pickle files. Keep `aicity.root` at `\u002Fdata\u002Faicity_root` during\nconversion, then point `dataset.data_root` at the split folder, for example\n`\u002Fdata\u002Faicity_root\u002Ftrain` for training or `\u002Fdata\u002Faicity_root\u002Fval` for\nevaluation. This preserves the converter's absolute RGB paths and relative\ndepth paths.\n\n**H5 depth tuple mismatch**: If training fails with an H5 path error where the\ntrainer tries to open a camera directory such as\n`\u002Fdata\u002Faicity_root\u002Ftrain\u002F\u003Cscene>\u002FCamera`, run\n`models\u002Fsparse4d\u002Fscripts\u002Fnormalize_depth_paths.py --data-root \u003Chost-aicity-root>\u002Ftrain \u003Cconverted-ann-dir>`\nafter `dataset_convert` and before train\u002Fevaluate\u002Finference. The helper rewrites\nconverted `depth_map_path` tuples to point at\n`\u003Cscene>\u002Fdepth_maps\u002F\u003Ccamera>.h5` with the H5 dataset key basename.\n\n**Missing anchor file**: Set model.head.instance_bank.anchor to the anchor_init.npy path from dataset_convert results.\n\n**Temporal OOM**: Reduce dataset.num_frames or dataset.batch_size if running out of memory during temporal training.\n\n**Quantize image compatibility**: The model-skill wiring should pass\n`quantize.model_path` through the parent-model resolver, and checkpoint handoff\nshould select the exact epoch\u002Fstep checkpoint just like evaluate, inference,\nexport, and resume. TorchAO checkpoint quantization passes in the\n`validation-fixes-20260525` PyT image and writes\n`quantized_model_torchao.pth`. Older 7.0.0-rc PyT images may fail inside the\nSparse4D quantize entrypoint or lack ONNX quantization dependencies; do not\nremove or skip the advertised `quantize` action if that occurs. Report the\ncontainer\u002Fimage failure and keep the exact checkpoint path visible.\n\n## Spec Param \u002F Parent Model Inference\n\nSee `references\u002Fspec_param_inference.md` for the model-specific inference mappings from TAO Core `sparse4d.config.json` (the per-action spec-field to inference-function table) and the `parent_model`\u002F`parent_job_id` checkpoint-resolution rules that generated runners apply with SDK helpers before `create_job()`.\n",{"name":5,"tags":24,"license":15,"metadata":29,"description":7,"allowed-tools":32,"compatibility":33},[25,26,27,28],"temporal","3d","detection","tracking",{"author":30,"version":31},"NVIDIA Corporation","0.1.0","Read Bash","Requires docker + nvidia-container-toolkit.","main","86cc27ffd16af6cb85948f1155578e6f3f61cc4c","skillhub\u002Fskills\u002Fnvidia\u002Ftao-train-sparse4d","https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn","https:\u002F\u002Fgithub.com\u002FSolizardking","https:\u002F\u002Fmusebook.trade","Got a mile high and never came down","2026-10-08 11:52:53",{"source":8,"skillName":5,"commands":43,"prompt":53,"zipAvailable":54},[44,47,50],{"tool":45,"command":46},"npx","npx skills add Solizardking\u002Ftrain2earn --skill tao-train-sparse4d",{"tool":48,"command":49},"bunx","bunx skills add Solizardking\u002Ftrain2earn --skill tao-train-sparse4d",{"tool":51,"command":52},"pnpm","pnpm dlx skills add Solizardking\u002Ftrain2earn --skill tao-train-sparse4d","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fnvidia\u002Ftao-train-sparse4d\u002FSKILL.md",true,[56,62,66,70,74,78,82,86,90,94,98,101,105,109,113,117,121,125,129,133],{"path":57,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":60,"sourceHtmlUrl":61},"BENCHMARK.md","REFERENCE","参考文档",4062,"https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fnvidia\u002Ftao-train-sparse4d\u002FBENCHMARK.md",{"path":63,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":64,"sourceHtmlUrl":65},"evals\u002Fevals.json",804,"https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fnvidia\u002Ftao-train-sparse4d\u002Fevals\u002Fevals.json",{"path":67,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":68,"sourceHtmlUrl":69},"references\u002Flocal_docker_conversion.md",3739,"https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fnvidia\u002Ftao-train-sparse4d\u002Freferences\u002Flocal_docker_conversion.md",{"path":71,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":72,"sourceHtmlUrl":73},"references\u002Fskill_info.yaml",7625,"https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fnvidia\u002Ftao-train-sparse4d\u002Freferences\u002Fskill_info.yaml",{"path":75,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":76,"sourceHtmlUrl":77},"references\u002Fspec_param_inference.md",2256,"https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fnvidia\u002Ftao-train-sparse4d\u002Freferences\u002Fspec_param_inference.md",{"path":79,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":80,"sourceHtmlUrl":81},"references\u002Fspec_template_dataset_convert.yaml",1302,"https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fnvidia\u002Ftao-train-sparse4d\u002Freferences\u002Fspec_template_dataset_convert.yaml",{"path":83,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002Fspec_template_evaluate.yaml",7130,"https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fnvidia\u002Ftao-train-sparse4d\u002Freferences\u002Fspec_template_evaluate.yaml",{"path":87,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":88,"sourceHtmlUrl":89},"references\u002Fspec_template_export.yaml",7146,"https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fnvidia\u002Ftao-train-sparse4d\u002Freferences\u002Fspec_template_export.yaml",{"path":91,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":92,"sourceHtmlUrl":93},"references\u002Fspec_template_inference.yaml",7163,"https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fnvidia\u002Ftao-train-sparse4d\u002Freferences\u002Fspec_template_inference.yaml",{"path":95,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":96,"sourceHtmlUrl":97},"references\u002Fspec_template_quantize.yaml",6930,"https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fnvidia\u002Ftao-train-sparse4d\u002Freferences\u002Fspec_template_quantize.yaml",{"path":99,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":96,"sourceHtmlUrl":100},"references\u002Fspec_template_train.yaml","https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fnvidia\u002Ftao-train-sparse4d\u002Freferences\u002Fspec_template_train.yaml",{"path":102,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":103,"sourceHtmlUrl":104},"schemas\u002Fdataset_convert.schema.json",11148,"https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fnvidia\u002Ftao-train-sparse4d\u002Fschemas\u002Fdataset_convert.schema.json",{"path":106,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":107,"sourceHtmlUrl":108},"schemas\u002Fevaluate.schema.json",113837,"https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fnvidia\u002Ftao-train-sparse4d\u002Fschemas\u002Fevaluate.schema.json",{"path":110,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":111,"sourceHtmlUrl":112},"schemas\u002Fexport.schema.json",113416,"https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fnvidia\u002Ftao-train-sparse4d\u002Fschemas\u002Fexport.schema.json",{"path":114,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":115,"sourceHtmlUrl":116},"schemas\u002Finference.schema.json",113971,"https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fnvidia\u002Ftao-train-sparse4d\u002Fschemas\u002Finference.schema.json",{"path":118,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":119,"sourceHtmlUrl":120},"schemas\u002Fmanifest.json",16273,"https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fnvidia\u002Ftao-train-sparse4d\u002Fschemas\u002Fmanifest.json",{"path":122,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":123,"sourceHtmlUrl":124},"schemas\u002Fquantize.schema.json",109870,"https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fnvidia\u002Ftao-train-sparse4d\u002Fschemas\u002Fquantize.schema.json",{"path":126,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":127,"sourceHtmlUrl":128},"schemas\u002Ftrain.schema.json",109864,"https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fnvidia\u002Ftao-train-sparse4d\u002Fschemas\u002Ftrain.schema.json",{"path":130,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":131,"sourceHtmlUrl":132},"skill-card.md",3923,"https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fnvidia\u002Ftao-train-sparse4d\u002Fskill-card.md",{"path":134,"resourceType":135,"resourceTypeDesc":136,"sizeBytes":137,"sourceHtmlUrl":138},"skill.oms.sig","OTHER","其他",8549,"https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fnvidia\u002Ftao-train-sparse4d\u002Fskill.oms.sig",[140,148,156,164,171,179],{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":144,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":147,"publishedAt":19},"01M78B94RSCAKMH1QS79VE6DG9","testing","For testing with Light Protocol programs and clients on localnet, devnet, and mainnet validation.","MIT","https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Ftesting\u002FSKILL.md",[],[],{"skillNo":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":144,"licenseFileUrl":152,"sourceHtmlUrl":153,"categories":154,"keywords":155,"publishedAt":19},"01M78B81BKY8RX12HETPG8YKWK","qedgen","Formally verify programs by writing Lean 4 proofs. Trigger this skill whenever the user wants to formally verify code, generate Lean 4 proofs, prove properties about algorithms or smart contracts, verify invariants, convert program logic into formal specifications, or anything involving Lean 4 and formal verification. Also trigger when the user mentions \"qedgen\", \"lean proof\", \"formal proof\", \"verify my code\", \"prove correctness\", \"formal verification\", or wants mathematical guarantees about their implementation.","https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fsolana-formal-verification\u002FLICENSE","https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fsolana-formal-verification\u002FSKILL.md",[],[],{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":144,"licenseFileUrl":160,"sourceHtmlUrl":161,"categories":162,"keywords":163,"publishedAt":19},"01M78B7Q7C5K54E01DN83A60KG","solana-dev","Use when user asks to \"build a Solana dapp\", \"write an Anchor program\", \"create a token\", \"debug Solana errors\", \"set up wallet connection\", \"test my Solana program\", \"deploy to devnet\", or \"explain Solana concepts\" (rent, accounts, PDAs, CPIs, etc.). Also use for quick on-chain lookups via public RPC + curl — \"what's the balance of \u003Cwallet>\", \"look up transaction \u003Csig>\", \"token balance for \u003Caccount>\", \"check this address on mainnet\u002Fdevnet\". End-to-end Solana development playbook covering wallet connection, Anchor\u002FPinocchio programs, Codama client generation, LiteSVM\u002FMollusk\u002FSurfpool testing, security checklists, and JSON-RPC curl lookups against public clusters. Integrates with the Solana MCP server for live documentation search. Prefers framework-kit (@solana\u002Fclient + @solana\u002Freact-hooks) for UI, wallet-standard-first connection (incl. ConnectorKit), @solana\u002Fkit for client\u002FRPC code, and @solana\u002Fweb3-compat for legacy boundaries.","https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fsolana-dev\u002FLICENSE","https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fsolana-dev\u002FSKILL.md",[],[],{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":144,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":170,"publishedAt":19},"01M78B7HXD6N6GWKSVRQ8F6Q31","solana-common-errors","Diagnose and fix common Solana development errors — GLIBC mismatches, Anchor version conflicts, cargo build-sbf \u002F platform-tools failures, LiteSVM issues, edition2024 crate pins, RPC airdrops, and Anchor 0.29→0.32 migrations. Use when builds fail, Anchor CLI won't install, or CI breaks on Debian\u002FUbuntu.","https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fsolana-common-errors\u002FSKILL.md",[],[],{"skillNo":172,"name":173,"nameZh":6,"description":174,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":175,"sourceHtmlUrl":176,"categories":177,"keywords":178,"publishedAt":19},"01M78B6T7YSYWQ0N4DP40QDXEZ","skill-creator","Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.","https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fskill-creator\u002Flicense.txt","https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fskill-creator\u002FSKILL.md",[],[],{"skillNo":180,"name":181,"nameZh":6,"description":182,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":144,"licenseFileUrl":6,"sourceHtmlUrl":183,"categories":184,"keywords":185,"publishedAt":19},"01M78B1VFT9X5AND7AE1HZPZGF","phantom-wallet-mcp","Execute wallet operations through the Phantom MCP server. Use when the user wants to interact with their Phantom wallet directly — get addresses, transfer SOL or SPL tokens, buy\u002Fswap tokens, sign transactions, and sign messages across Solana, Ethereum, Bitcoin, and Sui. Requires the @phantom\u002Fmcp-server to be configured as an MCP server.","https:\u002F\u002Fgithub.com\u002FSolizardking\u002Ftrain2earn\u002Fblob\u002Fmain\u002Fskillhub\u002Fskills\u002Fphantom-wallet-mcp\u002FSKILL.md",[],[]]