[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KJDM8F6JSATJW14T322VW4":3,"skill-same:01M6KJDM8F6JSATJW14T322VW4":73},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":25,"publishedAt":46,"linkOnly":47,"markdownContent":48,"markdownBody":49,"frontMatter":50,"refName":51,"commitSha":52,"skillDirectory":53,"forksCount":54,"repositoryHtmlUrl":55,"repositoryHomepageUrl":56,"ownerHtmlUrl":57,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":58,"install":59,"resources":72},"01M6KJDM8F6JSATJW14T322VW4","pytorch-testing-logging",null,"Run PyTorch unit tests, save results to NumPy files, and log environment information for reproducibility. Use this skill when executing test suites for neural network functions, validating loss computations, saving tensor outputs for verification, and creating reproducibility logs with Python\u002Fpackage versions.","cxcscmu\u002FSkillLearnBench","cxcscmu","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F142838272?v=4","01M6KCQDFQWPDSN0MKZY96MSQP","01M6KCQDM7G70TKJ28NTSQC0RZ",92,"MIT","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fb4-skill-creator-claude-haiku-4-5\u002Fnlp-paper-reproduction\u002Fpytorch-testing-logging\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],"pytorch testing logging","pytorch","logging","testing","environment","for","information","unit","neural network","tests","reproducibility","files","log","save","network","logs","package","verification","run","python","2026-11-10 10:12:30",false,"---\nname: pytorch-testing-logging\ndescription: Run PyTorch unit tests, save results to NumPy files, and log environment information for reproducibility. Use this skill when executing test suites for neural network functions, validating loss computations, saving tensor outputs for verification, and creating reproducibility logs with Python\u002Fpackage versions.\n---\n\n# PyTorch Testing and Results Logging\n\n## Overview\n\nThis skill covers running unit tests for PyTorch functions, verifying outputs, saving results in standardized formats (NumPy .npz), and logging environment information for complete reproducibility of machine learning experiments.\n\n## Unit Test Execution\n\n### Running PyTorch Unit Tests\n\n#### Basic Test Execution\n```bash\n# Run all tests in a file\npython -m pytest unit_test\u002Funit_test_1.py -v\n\n# Run with unittest framework\npython -m unittest unit_test.unit_test_1 -v\n\n# Run directly\npython unit_test\u002Funit_test_1.py\n```\n\n#### Test Output Flags\n```bash\n# Verbose output\n-v or --verbose\n\n# Show print statements\n-s or --capture=no\n\n# Stop on first failure\n-x or --exitfirst\n\n# Show local variables in tracebacks\n-l or --showlocals\n```\n\n#### Running Specific Tests\n```bash\n# Run single test method\npython -m pytest unit_test\u002Funit_test_1.py::TestModelOutputs::test_random_pairs -v\n\n# Run by pattern matching\npython -m pytest unit_test\u002F -k \"test_loss\" -v\n```\n\n### Handling Test Issues\n\n#### ImportError - Module Not Found\n```bash\n# Ensure test directory is in Python path\nexport PYTHONPATH=\u002Fpath\u002Fto\u002Fproject:$PYTHONPATH\npython unit_test\u002Funit_test_1.py\n\n# Or run from project root\ncd \u002Froot\u002FSimPO\npython -m pytest unit_test\u002Funit_test_1.py\n```\n\n#### Device\u002FCUDA Issues in Tests\n```python\n# Test automatically selects device\ndevice = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n\n# Verify device placement\ntensor = tensor.to(device)\n```\n\n#### File Path Resolution\nTests often use relative paths. Run from:\n- Project root directory\n- Or ensure test adjusts paths with `Path(__file__).resolve().parent`\n\n## Saving Results to NumPy Format\n\n### NPZ File Format (Recommended for Multi-Array Storage)\n\n#### Writing Results\n```python\nimport numpy as np\nimport torch\n\n# Single array save\nlosses = torch.tensor([0.5, 0.3, 0.7])\nnp.savez(\n    \"\u002Froot\u002Floss.npz\",\n    losses=losses.detach().cpu().numpy()\n)\n\n# Multiple arrays save\nnp.savez(\n    \"\u002Froot\u002Fresults.npz\",\n    losses=losses.detach().cpu().numpy(),\n    rewards_chosen=chosen_rewards.detach().cpu().numpy(),\n    rewards_rejected=rejected_rewards.detach().cpu().numpy()\n)\n```\n\n#### Reading Saved Results\n```python\nimport numpy as np\n\n# Load single file\ndata = np.load(\"\u002Froot\u002Floss.npz\")\nlosses = data['losses']\n\n# Load all arrays\ndata = np.load(\"\u002Froot\u002Fresults.npz\")\nlosses = data['losses']\nchosen_rewards = data['rewards_chosen']\n\n# List all keys\nprint(data.keys())  # dict_keys(['losses', 'rewards_chosen', ...])\n```\n\n### Converting PyTorch Tensors to NumPy\n\n#### Device-Agnostic Conversion\n```python\n# Correct pattern\nnumpy_array = tensor.detach().cpu().numpy()\n\n# Breakdown:\n# .detach() - remove gradient tracking\n# .cpu() - move to CPU memory\n# .numpy() - convert to NumPy array\n\n# For GPU tensors\ngpu_tensor = torch.randn(10, device=\"cuda\")\nnumpy_array = gpu_tensor.detach().cpu().numpy()\n\n# Direct method (if already on CPU)\ntensor_cpu = tensor.cpu()\nnumpy_array = tensor_cpu.numpy()\n```\n\n#### Preserving Precision\n```python\n# Default: float32\nnumpy_array = tensor.numpy()\n\n# Explicit dtype control\nnumpy_array = tensor.detach().cpu().numpy().astype(np.float32)\nnumpy_array = tensor.detach().cpu().numpy().astype(np.float64)\n```\n\n## Environment Logging for Reproducibility\n\n### Comprehensive Environment Information\n\n#### Python Version and Build\n```bash\n# Detailed Python version\npython -VV\n\n# Output format:\n# Python 3.10.12 (main, Sep 11 2024, 14:17:37) [GCC 11.4.0]\n```\n\n#### Package Freeze\n```bash\n# All installed packages with versions\npython -m pip freeze\n\n# Save to file\npython -m pip freeze > environment_info.txt\n\n# Or with timestamp\n{\n    echo \"=== Environment Log - $(date) ===\"\n    echo\n    echo \"=== Python Version ===\"\n    python -VV\n    echo\n    echo \"=== Installed Packages ===\"\n    python -m pip freeze\n    echo\n    echo \"=== Key Package Versions ===\"\n    python -c \"import torch; print(f'torch: {torch.__version__}')\"\n    python -c \"import transformers; print(f'transformers: {transformers.__version__}')\"\n} > \u002Froot\u002Fpython_info.txt\n```\n\n#### Creating Reproducibility Log\n\n```bash\n# Single command to create comprehensive log\n{\n    echo \"=== Environment Information ===\"\n    echo \"Timestamp: $(date)\"\n    echo \"Hostname: $(hostname)\"\n    echo \"Platform: $(python -c 'import platform; print(platform.platform())')\"\n    echo\n    echo \"=== Python Version ===\"\n    python -VV\n    echo\n    echo \"=== All Installed Packages ===\"\n    python -m pip freeze\n    echo\n    echo \"=== CUDA\u002FDevice Info ===\"\n    python -c \"import torch; print(f'CUDA Available: {torch.cuda.is_available()}'); print(f'Device: {torch.cuda.get_device_name(0) if torch.cuda.is_available() else \\\"CPU\\\"}')\"\n} > \u002Froot\u002Fpython_info.txt\n```\n\n### Logging During Test Execution\n\n```python\nimport logging\nimport sys\n\n# Configure logging\nlogging.basicConfig(\n    level=logging.INFO,\n    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',\n    handlers=[\n        logging.FileHandler('\u002Froot\u002Ftest.log'),\n        logging.StreamHandler(sys.stdout)\n    ]\n)\n\nlogger = logging.getLogger(__name__)\n\n# In test\nlogger.info(f\"Test started with device: {device}\")\nlogger.info(f\"Input shapes: chosen={chosen_logps.shape}, rejected={rejected_logps.shape}\")\nlogger.info(f\"Loss computation completed\")\n```\n\n## Complete Test-to-Save Workflow\n\n### Pattern for Loss Function Testing\n\n```python\nimport torch\nimport numpy as np\nimport unittest\nfrom pathlib import Path\n\nclass TestLossFunction(unittest.TestCase):\n    def setUp(self):\n        self.device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n\n        # Load or create test data\n        self.chosen_logps = torch.load(\"unit_test\u002Ftensors\u002Fpolicy_chosen_logps.pt\").to(self.device)\n        self.rejected_logps = torch.load(\"unit_test\u002Ftensors\u002Fpolicy_rejected_logps.pt\").to(self.device)\n\n    def test_loss_computation(self):\n        # Initialize model\u002Ftrainer\n        loss_fn = YourLossFunction()\n\n        # Compute losses\n        losses, chosen_rewards, rejected_rewards = loss_fn(\n            self.chosen_logps,\n            self.rejected_logps\n        )\n\n        # Verify outputs\n        self.assertEqual(losses.shape, (len(self.chosen_logps),))\n        self.assertTrue(torch.all(losses >= 0))\n\n        # Save results\n        np.savez(\n            \"\u002Froot\u002Floss.npz\",\n            losses=losses.detach().cpu().numpy(),\n            chosen_rewards=chosen_rewards.detach().cpu().numpy(),\n            rejected_rewards=rejected_rewards.detach().cpu().numpy()\n        )\n        print(\"Results saved to \u002Froot\u002Floss.npz\")\n\nif __name__ == \"__main__\":\n    unittest.main()\n```\n\n## Verification Checklist\n\nAfter running tests and saving results:\n\n1. **Check Output File**\n   ```bash\n   ls -lh \u002Froot\u002Floss.npz\n   ```\n\n2. **Verify File Contents**\n   ```python\n   import numpy as np\n   data = np.load(\"\u002Froot\u002Floss.npz\")\n   print(f\"Keys: {list(data.keys())}\")\n   print(f\"Losses shape: {data['losses'].shape}\")\n   print(f\"Loss values sample: {data['losses'][:5]}\")\n   ```\n\n3. **Validate Loss Properties**\n   ```python\n   losses = data['losses']\n   print(f\"Min loss: {losses.min()}, Max loss: {losses.max()}\")\n   print(f\"Mean loss: {losses.mean()}, Std: {losses.std()}\")\n   print(f\"No NaN values: {not np.any(np.isnan(losses))}\")\n   print(f\"No Inf values: {not np.any(np.isinf(losses))}\")\n   ```\n\n4. **Check Environment Log**\n   ```bash\n   head -20 \u002Froot\u002Fpython_info.txt\n   ```\n\n## Common Issues and Solutions\n\n### Issue: ImportError in Test\n**Solution**: Ensure Python path includes project root\n```bash\ncd \u002Froot\u002FSimPO\nexport PYTHONPATH=\u002Froot\u002FSimPO:$PYTHONPATH\npython -m pytest unit_test\u002Funit_test_1.py -v\n```\n\n### Issue: Tensor on Wrong Device\n**Solution**: Check device placement\n```python\nif self.device.type == 'cuda':\n    tensor = tensor.cuda()\nelse:\n    tensor = tensor.cpu()\n```\n\n### Issue: NPZ File Not Created\n**Solution**: Verify directory exists and is writable\n```bash\ntouch \u002Froot\u002Ftest.npz  # Test write permission\nls -l \u002Froot\u002F\n```\n\n### Issue: NumPy Conversion from GPU Tensor\n**Solution**: Always detach and move to CPU\n```python\n# WRONG\nnumpy_array = tensor.numpy()  # Fails for GPU tensors\n\n# CORRECT\nnumpy_array = tensor.detach().cpu().numpy()\n```\n","# PyTorch Testing and Results Logging\n\n## Overview\n\nThis skill covers running unit tests for PyTorch functions, verifying outputs, saving results in standardized formats (NumPy .npz), and logging environment information for complete reproducibility of machine learning experiments.\n\n## Unit Test Execution\n\n### Running PyTorch Unit Tests\n\n#### Basic Test Execution\n```bash\n# Run all tests in a file\npython -m pytest unit_test\u002Funit_test_1.py -v\n\n# Run with unittest framework\npython -m unittest unit_test.unit_test_1 -v\n\n# Run directly\npython unit_test\u002Funit_test_1.py\n```\n\n#### Test Output Flags\n```bash\n# Verbose output\n-v or --verbose\n\n# Show print statements\n-s or --capture=no\n\n# Stop on first failure\n-x or --exitfirst\n\n# Show local variables in tracebacks\n-l or --showlocals\n```\n\n#### Running Specific Tests\n```bash\n# Run single test method\npython -m pytest unit_test\u002Funit_test_1.py::TestModelOutputs::test_random_pairs -v\n\n# Run by pattern matching\npython -m pytest unit_test\u002F -k \"test_loss\" -v\n```\n\n### Handling Test Issues\n\n#### ImportError - Module Not Found\n```bash\n# Ensure test directory is in Python path\nexport PYTHONPATH=\u002Fpath\u002Fto\u002Fproject:$PYTHONPATH\npython unit_test\u002Funit_test_1.py\n\n# Or run from project root\ncd \u002Froot\u002FSimPO\npython -m pytest unit_test\u002Funit_test_1.py\n```\n\n#### Device\u002FCUDA Issues in Tests\n```python\n# Test automatically selects device\ndevice = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n\n# Verify device placement\ntensor = tensor.to(device)\n```\n\n#### File Path Resolution\nTests often use relative paths. Run from:\n- Project root directory\n- Or ensure test adjusts paths with `Path(__file__).resolve().parent`\n\n## Saving Results to NumPy Format\n\n### NPZ File Format (Recommended for Multi-Array Storage)\n\n#### Writing Results\n```python\nimport numpy as np\nimport torch\n\n# Single array save\nlosses = torch.tensor([0.5, 0.3, 0.7])\nnp.savez(\n    \"\u002Froot\u002Floss.npz\",\n    losses=losses.detach().cpu().numpy()\n)\n\n# Multiple arrays save\nnp.savez(\n    \"\u002Froot\u002Fresults.npz\",\n    losses=losses.detach().cpu().numpy(),\n    rewards_chosen=chosen_rewards.detach().cpu().numpy(),\n    rewards_rejected=rejected_rewards.detach().cpu().numpy()\n)\n```\n\n#### Reading Saved Results\n```python\nimport numpy as np\n\n# Load single file\ndata = np.load(\"\u002Froot\u002Floss.npz\")\nlosses = data['losses']\n\n# Load all arrays\ndata = np.load(\"\u002Froot\u002Fresults.npz\")\nlosses = data['losses']\nchosen_rewards = data['rewards_chosen']\n\n# List all keys\nprint(data.keys())  # dict_keys(['losses', 'rewards_chosen', ...])\n```\n\n### Converting PyTorch Tensors to NumPy\n\n#### Device-Agnostic Conversion\n```python\n# Correct pattern\nnumpy_array = tensor.detach().cpu().numpy()\n\n# Breakdown:\n# .detach() - remove gradient tracking\n# .cpu() - move to CPU memory\n# .numpy() - convert to NumPy array\n\n# For GPU tensors\ngpu_tensor = torch.randn(10, device=\"cuda\")\nnumpy_array = gpu_tensor.detach().cpu().numpy()\n\n# Direct method (if already on CPU)\ntensor_cpu = tensor.cpu()\nnumpy_array = tensor_cpu.numpy()\n```\n\n#### Preserving Precision\n```python\n# Default: float32\nnumpy_array = tensor.numpy()\n\n# Explicit dtype control\nnumpy_array = tensor.detach().cpu().numpy().astype(np.float32)\nnumpy_array = tensor.detach().cpu().numpy().astype(np.float64)\n```\n\n## Environment Logging for Reproducibility\n\n### Comprehensive Environment Information\n\n#### Python Version and Build\n```bash\n# Detailed Python version\npython -VV\n\n# Output format:\n# Python 3.10.12 (main, Sep 11 2024, 14:17:37) [GCC 11.4.0]\n```\n\n#### Package Freeze\n```bash\n# All installed packages with versions\npython -m pip freeze\n\n# Save to file\npython -m pip freeze > environment_info.txt\n\n# Or with timestamp\n{\n    echo \"=== Environment Log - $(date) ===\"\n    echo\n    echo \"=== Python Version ===\"\n    python -VV\n    echo\n    echo \"=== Installed Packages ===\"\n    python -m pip freeze\n    echo\n    echo \"=== Key Package Versions ===\"\n    python -c \"import torch; print(f'torch: {torch.__version__}')\"\n    python -c \"import transformers; print(f'transformers: {transformers.__version__}')\"\n} > \u002Froot\u002Fpython_info.txt\n```\n\n#### Creating Reproducibility Log\n\n```bash\n# Single command to create comprehensive log\n{\n    echo \"=== Environment Information ===\"\n    echo \"Timestamp: $(date)\"\n    echo \"Hostname: $(hostname)\"\n    echo \"Platform: $(python -c 'import platform; print(platform.platform())')\"\n    echo\n    echo \"=== Python Version ===\"\n    python -VV\n    echo\n    echo \"=== All Installed Packages ===\"\n    python -m pip freeze\n    echo\n    echo \"=== CUDA\u002FDevice Info ===\"\n    python -c \"import torch; print(f'CUDA Available: {torch.cuda.is_available()}'); print(f'Device: {torch.cuda.get_device_name(0) if torch.cuda.is_available() else \\\"CPU\\\"}')\"\n} > \u002Froot\u002Fpython_info.txt\n```\n\n### Logging During Test Execution\n\n```python\nimport logging\nimport sys\n\n# Configure logging\nlogging.basicConfig(\n    level=logging.INFO,\n    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',\n    handlers=[\n        logging.FileHandler('\u002Froot\u002Ftest.log'),\n        logging.StreamHandler(sys.stdout)\n    ]\n)\n\nlogger = logging.getLogger(__name__)\n\n# In test\nlogger.info(f\"Test started with device: {device}\")\nlogger.info(f\"Input shapes: chosen={chosen_logps.shape}, rejected={rejected_logps.shape}\")\nlogger.info(f\"Loss computation completed\")\n```\n\n## Complete Test-to-Save Workflow\n\n### Pattern for Loss Function Testing\n\n```python\nimport torch\nimport numpy as np\nimport unittest\nfrom pathlib import Path\n\nclass TestLossFunction(unittest.TestCase):\n    def setUp(self):\n        self.device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n\n        # Load or create test data\n        self.chosen_logps = torch.load(\"unit_test\u002Ftensors\u002Fpolicy_chosen_logps.pt\").to(self.device)\n        self.rejected_logps = torch.load(\"unit_test\u002Ftensors\u002Fpolicy_rejected_logps.pt\").to(self.device)\n\n    def test_loss_computation(self):\n        # Initialize model\u002Ftrainer\n        loss_fn = YourLossFunction()\n\n        # Compute losses\n        losses, chosen_rewards, rejected_rewards = loss_fn(\n            self.chosen_logps,\n            self.rejected_logps\n        )\n\n        # Verify outputs\n        self.assertEqual(losses.shape, (len(self.chosen_logps),))\n        self.assertTrue(torch.all(losses >= 0))\n\n        # Save results\n        np.savez(\n            \"\u002Froot\u002Floss.npz\",\n            losses=losses.detach().cpu().numpy(),\n            chosen_rewards=chosen_rewards.detach().cpu().numpy(),\n            rejected_rewards=rejected_rewards.detach().cpu().numpy()\n        )\n        print(\"Results saved to \u002Froot\u002Floss.npz\")\n\nif __name__ == \"__main__\":\n    unittest.main()\n```\n\n## Verification Checklist\n\nAfter running tests and saving results:\n\n1. **Check Output File**\n   ```bash\n   ls -lh \u002Froot\u002Floss.npz\n   ```\n\n2. **Verify File Contents**\n   ```python\n   import numpy as np\n   data = np.load(\"\u002Froot\u002Floss.npz\")\n   print(f\"Keys: {list(data.keys())}\")\n   print(f\"Losses shape: {data['losses'].shape}\")\n   print(f\"Loss values sample: {data['losses'][:5]}\")\n   ```\n\n3. **Validate Loss Properties**\n   ```python\n   losses = data['losses']\n   print(f\"Min loss: {losses.min()}, Max loss: {losses.max()}\")\n   print(f\"Mean loss: {losses.mean()}, Std: {losses.std()}\")\n   print(f\"No NaN values: {not np.any(np.isnan(losses))}\")\n   print(f\"No Inf values: {not np.any(np.isinf(losses))}\")\n   ```\n\n4. **Check Environment Log**\n   ```bash\n   head -20 \u002Froot\u002Fpython_info.txt\n   ```\n\n## Common Issues and Solutions\n\n### Issue: ImportError in Test\n**Solution**: Ensure Python path includes project root\n```bash\ncd \u002Froot\u002FSimPO\nexport PYTHONPATH=\u002Froot\u002FSimPO:$PYTHONPATH\npython -m pytest unit_test\u002Funit_test_1.py -v\n```\n\n### Issue: Tensor on Wrong Device\n**Solution**: Check device placement\n```python\nif self.device.type == 'cuda':\n    tensor = tensor.cuda()\nelse:\n    tensor = tensor.cpu()\n```\n\n### Issue: NPZ File Not Created\n**Solution**: Verify directory exists and is writable\n```bash\ntouch \u002Froot\u002Ftest.npz  # Test write permission\nls -l \u002Froot\u002F\n```\n\n### Issue: NumPy Conversion from GPU Tensor\n**Solution**: Always detach and move to CPU\n```python\n# WRONG\nnumpy_array = tensor.numpy()  # Fails for GPU tensors\n\n# CORRECT\nnumpy_array = tensor.detach().cpu().numpy()\n```\n",{"name":5,"description":7},"main","726e1f79b96b0cb3d729d0e55a1c847e0b5353ae","skills\u002Fb4-skill-creator-claude-haiku-4-5\u002Fnlp-paper-reproduction\u002Fpytorch-testing-logging",7,"https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench","https:\u002F\u002Fcxcscmu.github.io\u002FSkillLearnBench","https:\u002F\u002Fgithub.com\u002Fcxcscmu","2026-10-02 22:55:36",{"source":8,"skillName":5,"commands":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add cxcscmu\u002FSkillLearnBench --skill pytorch-testing-logging",{"tool":65,"command":66},"bunx","bunx skills add cxcscmu\u002FSkillLearnBench --skill pytorch-testing-logging",{"tool":68,"command":69},"pnpm","pnpm dlx skills add cxcscmu\u002FSkillLearnBench --skill pytorch-testing-logging","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fb4-skill-creator-claude-haiku-4-5\u002Fnlp-paper-reproduction\u002Fpytorch-testing-logging\u002FSKILL.md",true,[],[74,90,112,130,150,162],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":83,"publishedAt":46},"01M6KM5KH175P5ABP5JMX2SBDQ","object_counter","Count occurrences of an object in the image using computer vision algorithm.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Fvideo-object-counting\u002Fobject_counter\u002FSKILL.md",[80],{"categoryNo":81,"categoryName":82,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000016","图像与多媒体",[84,85,86,87,88,89],"object counter","object","vision","computer","Computer Vision","image",{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":97,"publishedAt":46},"01M6KM51TMVXG79MMPCS6Y8G86","travel-planning-workflow","Invoke this skill when performing travel planning. It defines a structured workflow for generating itineraries. Following this workflow is essential to ensure the final plan satisfies user requirements.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Ftravel-planning\u002Ftravel-planning-workflow\u002FSKILL.md",[96],{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},[98,99,100,101,102,103,104,105,106,31,107,108,109,110,111],"workflow","planning","planning workflow","travel","travel planning","travel planning workflow","structured","performing","plan","user","it","requirements","essential","itineraries",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":118,"publishedAt":46},"01M6KM4DY820XHS9YTSK5QP5HD","bundled-dataset-search-tool","invoke this skill when you need to perform database search for travel planning. This skill provides some useful pre-packaged tools to look up accommodations, attractions, cities, driving distance, flights, and restaurants from the bundled dataset.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Ftravel-planning\u002Fbundled-dataset-search-tool\u002FSKILL.md",[],[119,120,121,122,123,124,125,101,126,127,102,128,31,129,99],"search","tool","dataset","bundled dataset search tool","restaurants","Tools","up","look","flights","you","database",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":136,"publishedAt":46},"01M6KM465BB9PQ0B548HQSVAWZ","glm-output","Output-processing guidance for GLM tasks. Especially useful after glm-basics and glm-calibration when you need verifier-matching metrics from output.nc and a final \u002Froot\u002Fmetrics.json.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Ftemperature-simulation\u002Fglm-output\u002FSKILL.md",[],[137,138,139,31,140,141,142,143,144,145,146,147,128,148,149],"glm output","output","glm","tasks","metrics","json","basics","guidance","matching","verifier","processing","root","calibration",{"skillNo":151,"name":152,"nameZh":6,"description":153,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":154,"categories":155,"keywords":157,"publishedAt":46},"01M6KM40KY3QWDW5W97S39R2BC","glm-calibration","Calibration guidance for GLM tasks. Often most effective after glm-basics has clarified the setup; glm-output is the companion skill for exact final metric computation.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Ftemperature-simulation\u002Fglm-calibration\u002FSKILL.md",[156],{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},[158,149,139,138,144,143,140,159,160,31,161],"glm calibration","setup","companion","metric",{"skillNo":163,"name":164,"nameZh":6,"description":165,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":166,"categories":167,"keywords":168,"publishedAt":46},"01M6KM3VHHVSGMGHJQB3PPT6YG","glm-basics","A good starting point for GLM calibration tasks. Use to inspect glm3.nml, confirm how GLM runs, and identify the relevant files before moving on to calibration and output evaluation.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Ftemperature-simulation\u002Fglm-basics\u002FSKILL.md",[],[169,139,143,170,158,149,31,138,171,37,172,173,174,175,140],"glm basics","inspect","relevant","good","use","how","Evaluation"]