[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71NVC98SET0GD931NYQVMBR":3,"skill-same:01M71NVC98SET0GD931NYQVMBR":90},{"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":45,"commitSha":46,"skillDirectory":47,"forksCount":14,"repositoryHtmlUrl":48,"repositoryHomepageUrl":49,"ownerHtmlUrl":50,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":51,"install":52,"resources":65},"01M71NVC98SET0GD931NYQVMBR","nemo-mbridge-perf-cpu-offloading",null,"Validate and use CPU offloading in Megatron Bridge, including layer-level activation offloading and fractional optimizer state offloading with HybridDeviceOptimizer.","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\u002Fnemo-mbridge-perf-cpu-offloading\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"CPU","perf","NeMo","CPU Offloading","nemo mbridge perf cpu offloading","state","gpu","with","use","activation","offload","layer","config","optimizer","commit","reduce","move","memory","bridge","megatron","2026-11-10 10:56:23",false,"---\nname: nemo-mbridge-perf-cpu-offloading\ndescription: Validate and use CPU offloading in Megatron Bridge, including layer-level activation offloading and fractional optimizer state offloading with HybridDeviceOptimizer.\nlicense: Apache-2.0\nwhen_to_use: Enabling CPU offload to reduce GPU memory, or investigating a commit that changed CPU offloading config and caused OOM or a crash; 'cpu_offloading', 'optimizer_cpu_offload', 'optimizer_offload_fraction', 'HybridDeviceOptimizer', 'move optimizer to CPU'.\n---\n\n# CPU Offloading\n\n## References\n\n- Stable docs: @docs\u002Ftraining\u002Fcpu-offloading.md\n- Structured metadata: @skills\u002Fnemo-mbridge-perf-cpu-offloading\u002Fcard.yaml\n\n## What It Is\n\nTwo independent mechanisms to move data from GPU to CPU memory:\n\n| Mechanism | Config namespace | What gets offloaded | PP restriction |\n|---|---|---|---|\n| Activation offloading | `model.cpu_offloading*` | Activations (and optionally weights) per transformer layer | PP must be 1 |\n| Optimizer offloading | `optimizer.optimizer_cpu_offload` | Adam optimizer states (momentum + variance) via `HybridDeviceOptimizer` | None |\n\n## Quick Decision\n\n| Situation | Recommendation |\n|---|---|\n| Large MoE model (30B+), needs PP > 1 | Optimizer offloading — activation offloading is blocked by PP=1 |\n| Small\u002Fmedium model, PP=1 fits, activation memory dominates | Activation offloading |\n| Want tunable memory-speed tradeoff | Optimizer offloading with fractional `optimizer_offload_fraction` |\n| Throughput is top priority | Don't enable — offloading always adds overhead |\n| CUDA graphs are needed | Only optimizer offloading — activation offloading is incompatible |\n| Memory pressure is moderate | Optimizer offload at 25–50% fraction for best efficiency |\n\n## Enablement\n\n### Optimizer CPU offloading (recommended for large models)\n\n```python\ncfg.optimizer.optimizer_cpu_offload = True\ncfg.optimizer.optimizer_offload_fraction = 1.0\ncfg.optimizer.overlap_cpu_optimizer_d2h_h2d = True\n```\n\nCLI overrides:\n\n```bash\noptimizer.optimizer_cpu_offload=True \\\noptimizer.optimizer_offload_fraction=0.5 \\\noptimizer.overlap_cpu_optimizer_d2h_h2d=True\n```\n\n### Activation CPU offloading (small\u002Fmedium models only)\n\n```python\ncfg.model.cpu_offloading = True\ncfg.model.cpu_offloading_num_layers = 16\ncfg.model.cpu_offloading_activations = True\ncfg.model.cpu_offloading_weights = False\n\ncfg.model.pipeline_model_parallel_size = 1\ncfg.model.recompute_granularity = None\ncfg.model.cuda_graph_impl = \"none\"\n```\n\n## Config Parameter Reference\n\n### Optimizer offloading\n\n| Parameter | Default | Description |\n|-----------|---------|-------------|\n| `optimizer_cpu_offload` | `False` | Master switch |\n| `optimizer_offload_fraction` | `0.0` | Fraction of optimizer states on CPU (0.0–1.0) |\n| `overlap_cpu_optimizer_d2h_h2d` | `False` | Overlap GPU↔CPU transfers with compute |\n| `use_torch_optimizer_for_cpu_offload` | `False` | Use `torch.optim` instead of fused optimizer for CPU portion |\n\n### Activation offloading\n\n| Parameter | Default | Description |\n|-----------|---------|-------------|\n| `cpu_offloading` | `False` | Master switch |\n| `cpu_offloading_num_layers` | `0` | Number of transformer layers to offload (0 to num_layers-1) |\n| `cpu_offloading_activations` | `True` | Offload activations |\n| `cpu_offloading_weights` | `False` | Offload weights |\n| `cpu_offloading_double_buffering` | `False` | Double-buffer across layers while reloading |\n\n## Compatibility And Constraints\n\n### Activation offloading\n\n- `pipeline_model_parallel_size` must be 1\n- `recompute_granularity` must be `None`\n- Cannot combine with `fine_grained_activation_offloading`\n- Cannot combine with CUDA graphs\n- `cpu_offloading_num_layers` must be in `[0, num_layers-1)`\n\n### Optimizer offloading\n\n- Requires `use_distributed_optimizer = True` (default in most recipes)\n- No PP, recompute, or CUDA graph restrictions\n- `optimizer_offload_fraction` must be in `[0.0, 1.0]`\n\n### Practical: large MoE models\n\nActivation offloading is blocked for Qwen3-30B-A3B and similar large MoE\nmodels. The PP=1 constraint means each GPU holds all 48 layers; model\nweights + optimizer states alone (~70 GB) exceed H100 80 GB capacity.\n\n## Minimal Runnable Command\n\n```bash\nuv run python scripts\u002Ftraining\u002Frun_recipe.py \\\n  --recipe qwen3_30b_a3b_pretrain_config \\\n  optimizer.optimizer_cpu_offload=True \\\n  optimizer.optimizer_offload_fraction=0.5 \\\n  train.train_iters=20 \\\n  train.global_batch_size=8 \\\n  train.micro_batch_size=1\n```\n\n## Verification\n\n### Unit tests\n\n```bash\nuv run python -m pytest \\\n  tests\u002Funit_tests\u002Fmodels\u002Ftest_gpt_full_te_layer_autocast_spec.py -k \"cpu_offload\" \\\n  tests\u002Funit_tests\u002Fpeft\u002Ftest_utils.py -k \"cpu_offload\" -q\n```\n\n### Success criteria\n\n- Config validation passes for the selected offloading mode\n- Training completes without OOM or NCCL errors\n- Loss matches the non-offloaded baseline (max delta \u003C 0.001)\n- Memory usage drops proportionally to offload fraction\n\n## Code Anchors\n\n### MCore activation offload constraints\n\n```1296:1310:3rdparty\u002FMegatron-LM\u002Fmegatron\u002Fcore\u002Ftransformer\u002Ftransformer_config.py\n        if self.cpu_offloading and (\n            self.cpu_offloading_num_layers \u003C 0 or self.cpu_offloading_num_layers >= self.num_layers\n        ):\n            raise ValueError(...)\n\n        if self.cpu_offloading and self.pipeline_model_parallel_size > 1:\n            raise ValueError(\n                \"Currently there is no support for Pipeline parallelism with CPU offloading\"\n            )\n\n        if self.cpu_offloading and self.recompute_granularity is not None:\n            raise ValueError(\n                \"CPU offloading does not work when activation recomputation is enabled\"\n            )\n```\n\n### MCore CUDA graph incompatibility\n\n```1943:1944:3rdparty\u002FMegatron-LM\u002Fmegatron\u002Fcore\u002Ftransformer\u002Ftransformer_config.py\n            if self.cpu_offloading:\n                raise ValueError(\"CUDA graphs not supported with CPU offloading.\")\n```\n\n### MCore fine-grained offloading mutual exclusion\n\n```1427:1430:3rdparty\u002FMegatron-LM\u002Fmegatron\u002Fcore\u002Ftransformer\u002Ftransformer_config.py\n        if self.fine_grained_activation_offloading:\n            assert (\n                not self.cpu_offloading\n            ), \"fine_grained_activation_offloading cannot be enabled with cpu_offloading.\"\n```\n\n### MCore HybridDeviceOptimizer instantiation\n\n```480:518:3rdparty\u002FMegatron-LM\u002Fmegatron\u002Fcore\u002Foptimizer\u002F__init__.py\n        if config.optimizer_cpu_offload:\n            # ... setup cpu\u002Fgpu optimizer classes ...\n            optimizer = HybridDeviceOptimizer(\n                param_groups,\n                offload_fraction=config.optimizer_offload_fraction,\n                cpu_optimizer_cls=cpu_optimizer_cls,\n                gpu_optimizer_cls=gpu_optimizer_cls,\n                overlap_cpu_optimizer_d2h_h2d=config.overlap_cpu_optimizer_d2h_h2d,\n                pin_cpu_grads=config.pin_cpu_grads,\n                pin_cpu_params=config.pin_cpu_params,\n            )\n```\n\n### Bridge CUDA graph guard\n\n```232:234:src\u002Fmegatron\u002Fbridge\u002Fmodels\u002Fgpt_full_te_layer_autocast_spec.py\n        assert not config.cpu_offloading and config.recompute_granularity is None, \"Cudagraphs not supported\"\n```\n\n### Bridge activation offloading in PEFT\n\n```621:631:src\u002Fmegatron\u002Fbridge\u002Fpeft\u002Futils.py\n        if self.config.cpu_offloading and self.config.cpu_offloading_activations:\n            x.activation_offloading = True\n        x, _ = self.linear_in(x)\n        x = self.activation(x)\n        if self.config.cpu_offloading and self.config.cpu_offloading_activations:\n            x.activation_offloading = True\n        x, _ = self.linear_out(x)\n```\n\n## Failure Diagnosis\n\n| Symptom | Likely Cause | How To Confirm | Fix |\n|---|---|---|---|\n| `Currently there is no support for Pipeline parallelism with CPU offloading` | Activation offload + PP > 1 | Check `pipeline_model_parallel_size` | Set PP=1 or use optimizer offloading |\n| `CPU offloading does not work when activation recomputation is enabled` | Activation offload + recompute | Check `recompute_granularity` | Set `recompute_granularity=null` |\n| `fine_grained_activation_offloading cannot be enabled with cpu_offloading` | Both offloading modes enabled | Check both flags | Use one or the other |\n| `CUDA graphs not supported with CPU offloading` | CUDA graphs + activation offload | Check `cuda_graph_impl` | Set `cuda_graph_impl=\"none\"` |\n| OOM with activation offloading | Model too large for PP=1 | Check allocated memory vs 80 GB | Use optimizer offloading with PP > 1 |\n| Extreme slowdown (>4x) | 100% optimizer offload, CPU Adam bottleneck | Compare iter time at different fractions | Reduce fraction or enable `overlap_cpu_optimizer_d2h_h2d` |\n| OOM at partial optimizer offload | Insufficient offload for this config | Check memory at different fractions | Increase fraction or add PP |\n\n## Known Limitations\n\n- Activation offloading requires PP=1, making it impractical for large models\n  (30B+ MoE) that need pipeline parallelism.\n- Optimizer offloading throughput penalty scales linearly (~1.9x at 25%,\n  ~4.2x at 100% for Qwen3-30B-A3B).\n- D2H\u002FH2D overlap provides only ~7% speedup because CPU Adam compute is\n  the dominant bottleneck.\n- `fine_grained_activation_offloading` is a separate module-level approach\n  that works with PP > 1 but cannot be combined with layer-level\n  `cpu_offloading`.\n","# CPU Offloading\n\n## References\n\n- Stable docs: @docs\u002Ftraining\u002Fcpu-offloading.md\n- Structured metadata: @skills\u002Fnemo-mbridge-perf-cpu-offloading\u002Fcard.yaml\n\n## What It Is\n\nTwo independent mechanisms to move data from GPU to CPU memory:\n\n| Mechanism | Config namespace | What gets offloaded | PP restriction |\n|---|---|---|---|\n| Activation offloading | `model.cpu_offloading*` | Activations (and optionally weights) per transformer layer | PP must be 1 |\n| Optimizer offloading | `optimizer.optimizer_cpu_offload` | Adam optimizer states (momentum + variance) via `HybridDeviceOptimizer` | None |\n\n## Quick Decision\n\n| Situation | Recommendation |\n|---|---|\n| Large MoE model (30B+), needs PP > 1 | Optimizer offloading — activation offloading is blocked by PP=1 |\n| Small\u002Fmedium model, PP=1 fits, activation memory dominates | Activation offloading |\n| Want tunable memory-speed tradeoff | Optimizer offloading with fractional `optimizer_offload_fraction` |\n| Throughput is top priority | Don't enable — offloading always adds overhead |\n| CUDA graphs are needed | Only optimizer offloading — activation offloading is incompatible |\n| Memory pressure is moderate | Optimizer offload at 25–50% fraction for best efficiency |\n\n## Enablement\n\n### Optimizer CPU offloading (recommended for large models)\n\n```python\ncfg.optimizer.optimizer_cpu_offload = True\ncfg.optimizer.optimizer_offload_fraction = 1.0\ncfg.optimizer.overlap_cpu_optimizer_d2h_h2d = True\n```\n\nCLI overrides:\n\n```bash\noptimizer.optimizer_cpu_offload=True \\\noptimizer.optimizer_offload_fraction=0.5 \\\noptimizer.overlap_cpu_optimizer_d2h_h2d=True\n```\n\n### Activation CPU offloading (small\u002Fmedium models only)\n\n```python\ncfg.model.cpu_offloading = True\ncfg.model.cpu_offloading_num_layers = 16\ncfg.model.cpu_offloading_activations = True\ncfg.model.cpu_offloading_weights = False\n\ncfg.model.pipeline_model_parallel_size = 1\ncfg.model.recompute_granularity = None\ncfg.model.cuda_graph_impl = \"none\"\n```\n\n## Config Parameter Reference\n\n### Optimizer offloading\n\n| Parameter | Default | Description |\n|-----------|---------|-------------|\n| `optimizer_cpu_offload` | `False` | Master switch |\n| `optimizer_offload_fraction` | `0.0` | Fraction of optimizer states on CPU (0.0–1.0) |\n| `overlap_cpu_optimizer_d2h_h2d` | `False` | Overlap GPU↔CPU transfers with compute |\n| `use_torch_optimizer_for_cpu_offload` | `False` | Use `torch.optim` instead of fused optimizer for CPU portion |\n\n### Activation offloading\n\n| Parameter | Default | Description |\n|-----------|---------|-------------|\n| `cpu_offloading` | `False` | Master switch |\n| `cpu_offloading_num_layers` | `0` | Number of transformer layers to offload (0 to num_layers-1) |\n| `cpu_offloading_activations` | `True` | Offload activations |\n| `cpu_offloading_weights` | `False` | Offload weights |\n| `cpu_offloading_double_buffering` | `False` | Double-buffer across layers while reloading |\n\n## Compatibility And Constraints\n\n### Activation offloading\n\n- `pipeline_model_parallel_size` must be 1\n- `recompute_granularity` must be `None`\n- Cannot combine with `fine_grained_activation_offloading`\n- Cannot combine with CUDA graphs\n- `cpu_offloading_num_layers` must be in `[0, num_layers-1)`\n\n### Optimizer offloading\n\n- Requires `use_distributed_optimizer = True` (default in most recipes)\n- No PP, recompute, or CUDA graph restrictions\n- `optimizer_offload_fraction` must be in `[0.0, 1.0]`\n\n### Practical: large MoE models\n\nActivation offloading is blocked for Qwen3-30B-A3B and similar large MoE\nmodels. The PP=1 constraint means each GPU holds all 48 layers; model\nweights + optimizer states alone (~70 GB) exceed H100 80 GB capacity.\n\n## Minimal Runnable Command\n\n```bash\nuv run python scripts\u002Ftraining\u002Frun_recipe.py \\\n  --recipe qwen3_30b_a3b_pretrain_config \\\n  optimizer.optimizer_cpu_offload=True \\\n  optimizer.optimizer_offload_fraction=0.5 \\\n  train.train_iters=20 \\\n  train.global_batch_size=8 \\\n  train.micro_batch_size=1\n```\n\n## Verification\n\n### Unit tests\n\n```bash\nuv run python -m pytest \\\n  tests\u002Funit_tests\u002Fmodels\u002Ftest_gpt_full_te_layer_autocast_spec.py -k \"cpu_offload\" \\\n  tests\u002Funit_tests\u002Fpeft\u002Ftest_utils.py -k \"cpu_offload\" -q\n```\n\n### Success criteria\n\n- Config validation passes for the selected offloading mode\n- Training completes without OOM or NCCL errors\n- Loss matches the non-offloaded baseline (max delta \u003C 0.001)\n- Memory usage drops proportionally to offload fraction\n\n## Code Anchors\n\n### MCore activation offload constraints\n\n```1296:1310:3rdparty\u002FMegatron-LM\u002Fmegatron\u002Fcore\u002Ftransformer\u002Ftransformer_config.py\n        if self.cpu_offloading and (\n            self.cpu_offloading_num_layers \u003C 0 or self.cpu_offloading_num_layers >= self.num_layers\n        ):\n            raise ValueError(...)\n\n        if self.cpu_offloading and self.pipeline_model_parallel_size > 1:\n            raise ValueError(\n                \"Currently there is no support for Pipeline parallelism with CPU offloading\"\n            )\n\n        if self.cpu_offloading and self.recompute_granularity is not None:\n            raise ValueError(\n                \"CPU offloading does not work when activation recomputation is enabled\"\n            )\n```\n\n### MCore CUDA graph incompatibility\n\n```1943:1944:3rdparty\u002FMegatron-LM\u002Fmegatron\u002Fcore\u002Ftransformer\u002Ftransformer_config.py\n            if self.cpu_offloading:\n                raise ValueError(\"CUDA graphs not supported with CPU offloading.\")\n```\n\n### MCore fine-grained offloading mutual exclusion\n\n```1427:1430:3rdparty\u002FMegatron-LM\u002Fmegatron\u002Fcore\u002Ftransformer\u002Ftransformer_config.py\n        if self.fine_grained_activation_offloading:\n            assert (\n                not self.cpu_offloading\n            ), \"fine_grained_activation_offloading cannot be enabled with cpu_offloading.\"\n```\n\n### MCore HybridDeviceOptimizer instantiation\n\n```480:518:3rdparty\u002FMegatron-LM\u002Fmegatron\u002Fcore\u002Foptimizer\u002F__init__.py\n        if config.optimizer_cpu_offload:\n            # ... setup cpu\u002Fgpu optimizer classes ...\n            optimizer = HybridDeviceOptimizer(\n                param_groups,\n                offload_fraction=config.optimizer_offload_fraction,\n                cpu_optimizer_cls=cpu_optimizer_cls,\n                gpu_optimizer_cls=gpu_optimizer_cls,\n                overlap_cpu_optimizer_d2h_h2d=config.overlap_cpu_optimizer_d2h_h2d,\n                pin_cpu_grads=config.pin_cpu_grads,\n                pin_cpu_params=config.pin_cpu_params,\n            )\n```\n\n### Bridge CUDA graph guard\n\n```232:234:src\u002Fmegatron\u002Fbridge\u002Fmodels\u002Fgpt_full_te_layer_autocast_spec.py\n        assert not config.cpu_offloading and config.recompute_granularity is None, \"Cudagraphs not supported\"\n```\n\n### Bridge activation offloading in PEFT\n\n```621:631:src\u002Fmegatron\u002Fbridge\u002Fpeft\u002Futils.py\n        if self.config.cpu_offloading and self.config.cpu_offloading_activations:\n            x.activation_offloading = True\n        x, _ = self.linear_in(x)\n        x = self.activation(x)\n        if self.config.cpu_offloading and self.config.cpu_offloading_activations:\n            x.activation_offloading = True\n        x, _ = self.linear_out(x)\n```\n\n## Failure Diagnosis\n\n| Symptom | Likely Cause | How To Confirm | Fix |\n|---|---|---|---|\n| `Currently there is no support for Pipeline parallelism with CPU offloading` | Activation offload + PP > 1 | Check `pipeline_model_parallel_size` | Set PP=1 or use optimizer offloading |\n| `CPU offloading does not work when activation recomputation is enabled` | Activation offload + recompute | Check `recompute_granularity` | Set `recompute_granularity=null` |\n| `fine_grained_activation_offloading cannot be enabled with cpu_offloading` | Both offloading modes enabled | Check both flags | Use one or the other |\n| `CUDA graphs not supported with CPU offloading` | CUDA graphs + activation offload | Check `cuda_graph_impl` | Set `cuda_graph_impl=\"none\"` |\n| OOM with activation offloading | Model too large for PP=1 | Check allocated memory vs 80 GB | Use optimizer offloading with PP > 1 |\n| Extreme slowdown (>4x) | 100% optimizer offload, CPU Adam bottleneck | Compare iter time at different fractions | Reduce fraction or enable `overlap_cpu_optimizer_d2h_h2d` |\n| OOM at partial optimizer offload | Insufficient offload for this config | Check memory at different fractions | Increase fraction or add PP |\n\n## Known Limitations\n\n- Activation offloading requires PP=1, making it impractical for large models\n  (30B+ MoE) that need pipeline parallelism.\n- Optimizer offloading throughput penalty scales linearly (~1.9x at 25%,\n  ~4.2x at 100% for Qwen3-30B-A3B).\n- D2H\u002FH2D overlap provides only ~7% speedup because CPU Adam compute is\n  the dominant bottleneck.\n- `fine_grained_activation_offloading` is a separate module-level approach\n  that works with PP > 1 but cannot be combined with layer-level\n  `cpu_offloading`.\n",{"name":5,"license":15,"description":7,"when_to_use":44},"Enabling CPU offload to reduce GPU memory, or investigating a commit that changed CPU offloading config and caused OOM or a crash; 'cpu_offloading', 'optimizer_cpu_offload', 'optimizer_offload_fraction', 'HybridDeviceOptimizer', 'move optimizer to CPU'.","claude\u002Finstall-gsd-build-foQdV","d86cd127f527124b5fd0fd0bc679a4d79b7d01d7",".agents\u002Fskills\u002Fnemo-mbridge-perf-cpu-offloading","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":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add pattanation\u002FNorvik --skill nemo-mbridge-perf-cpu-offloading",{"tool":58,"command":59},"bunx","bunx skills add pattanation\u002FNorvik --skill nemo-mbridge-perf-cpu-offloading",{"tool":61,"command":62},"pnpm","pnpm dlx skills add pattanation\u002FNorvik --skill nemo-mbridge-perf-cpu-offloading","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fnemo-mbridge-perf-cpu-offloading\u002FSKILL.md",true,[66,72,76,80,84],{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"BENCHMARK.md","REFERENCE","参考文档",4307,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fnemo-mbridge-perf-cpu-offloading\u002FBENCHMARK.md",{"path":73,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":74,"sourceHtmlUrl":75},"card.yaml",8241,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fnemo-mbridge-perf-cpu-offloading\u002Fcard.yaml",{"path":77,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":78,"sourceHtmlUrl":79},"evals\u002Fevals.json",1475,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fnemo-mbridge-perf-cpu-offloading\u002Fevals\u002Fevals.json",{"path":81,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":82,"sourceHtmlUrl":83},"skill-card.md",3916,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fnemo-mbridge-perf-cpu-offloading\u002Fskill-card.md",{"path":85,"resourceType":86,"resourceTypeDesc":87,"sizeBytes":88,"sourceHtmlUrl":89},"skill.oms.sig","OTHER","其他",4821,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fnemo-mbridge-perf-cpu-offloading\u002Fskill.oms.sig",[91,124,148,172,194,209],{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":95,"sourceHtmlUrl":96,"categories":97,"keywords":106,"publishedAt":123},"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",[98,103],{"categoryNo":99,"categoryName":100,"taxonomyType":101,"taxonomyTypeDesc":102},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":104,"categoryName":105,"taxonomyType":101,"taxonomyTypeDesc":102},"01JBSEEDCAT000000000000009","前端开发",[107,108,109,110,111,112,113,114,115,116,117,26,118,119,120,121,122],"webapp","testing","webapp testing","for","applications","local","frontend","debugging","toolkit","logs","browser","playwright","web","behavior","ui","screenshots","2026-11-10 13:02:02",{"skillNo":125,"name":126,"nameZh":6,"description":127,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":128,"sourceHtmlUrl":129,"categories":130,"keywords":132,"publishedAt":123},"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",[131],{"categoryNo":104,"categoryName":105,"taxonomyType":101,"taxonomyTypeDesc":102},[133,134,135,119,136,137,138,110,139,140,113,141,27,142,143,144,145,24,146,147],"builder","artifacts builder","artifacts","web artifacts builder","single-file","css","Tailwind","ui components","single","file","components","react","multi","routing","state management",{"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":152,"licenseFileUrl":153,"sourceHtmlUrl":154,"categories":155,"keywords":157,"publishedAt":123},"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",[156],{"categoryNo":104,"categoryName":105,"taxonomyType":101,"taxonomyTypeDesc":102},[158,159,160,161,162,163,164,165,166,167,168,169,170,171],"functions","vueuse","vueuse functions","project","nuxt","apply","github","concise","build","https","features","vue","js","composables",{"skillNo":173,"name":174,"nameZh":6,"description":175,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":152,"licenseFileUrl":176,"sourceHtmlUrl":177,"categories":178,"keywords":181,"publishedAt":123},"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",[179,180],{"categoryNo":99,"categoryName":100,"taxonomyType":101,"taxonomyTypeDesc":102},{"categoryNo":104,"categoryName":105,"taxonomyType":101,"taxonomyTypeDesc":102},[182,108,183,169,184,118,185,186,187,164,188,110,189,190,191,27,192,170,193],"vue testing best practices","testing best practices","best practices","test","testing patterns","component","vitest","mocking","e2e","utils","patterns","e2e testing",{"skillNo":195,"name":196,"nameZh":6,"description":197,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":152,"licenseFileUrl":198,"sourceHtmlUrl":199,"categories":200,"keywords":202,"publishedAt":123},"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",[201],{"categoryNo":104,"categoryName":105,"taxonomyType":101,"taxonomyTypeDesc":102},[203,169,204,184,205,187,206,164,192,207,208],"router","vue router best practices","route","guards","navigation","lifecycle",{"skillNo":210,"name":211,"nameZh":6,"description":212,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":152,"licenseFileUrl":213,"sourceHtmlUrl":214,"categories":215,"keywords":217,"publishedAt":123},"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",[216],{"categoryNo":104,"categoryName":105,"taxonomyType":101,"taxonomyTypeDesc":102},[218,169,184,219,161,220,221,222,203,223,224,225,226,227,228,110,229,27,230,231],"vue best practices","Composition","files","tasks","api","pinia","work","options","ssr","typescript","as","vite","load","standard"]