[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KF4TG1THRRRKX4MMY7SFZK":3,"skill-same:01M6KF4TG1THRRRKX4MMY7SFZK":52},{"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":17,"publishedAt":25,"linkOnly":26,"markdownContent":27,"markdownBody":28,"frontMatter":29,"refName":30,"commitSha":31,"skillDirectory":32,"forksCount":33,"repositoryHtmlUrl":34,"repositoryHomepageUrl":35,"ownerHtmlUrl":36,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":37,"install":38,"resources":51},"01M6KF4TG1THRRRKX4MMY7SFZK","run2_parallel_grid_search",null,"Efficient parallel hyperparameter grid search using joblib with 847 combinations","cxcscmu\u002FSkillLearnBench","cxcscmu","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F142838272?v=4","01M6KCQDFQWPDSN0MKZY96MSQP","01M6KCQDM7G70TKJ28NTSQC0RZ",93,"MIT","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fb2-self-feedback-claude-haiku-4-5\u002Fdbscan-parameter-tuning\u002Frun2_parallel_grid_search\u002FSKILL.md",[],[18,19,20,21,22,23,24],"search","parallel","grid","parallel grid search","run2 parallel grid search","combinations","with","2026-11-10 10:12:30",false,"---\nname: run2_parallel_grid_search\ndescription: Efficient parallel hyperparameter grid search using joblib with 847 combinations\n---\n\n# Parallel Grid Search Optimization\n\n## Grid Search Space\n\nFor Mars cloud clustering, evaluate all combinations of:\n- **min_samples**: 3, 4, 5, 6, 7, 8, 9 (7 values)\n- **epsilon**: 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24 (11 values)\n- **shape_weight**: 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9 (11 values)\n\nTotal combinations: 7 × 11 × 11 = **847**\n\n## Parallelization with joblib\n\n### Setup\n\n```python\nfrom joblib import Parallel, delayed\nimport pandas as pd\nimport numpy as np\n\n# Define hyperparameter ranges\nmin_samples_vals = list(range(3, 10))\nepsilon_vals = list(range(4, 26, 2))\nshape_weight_vals = list(np.round(np.arange(0.9, 2.0, 0.1), 1))\n\n# Generate all combinations\nhp_list = []\nfor ms in min_samples_vals:\n    for eps in epsilon_vals:\n        for sw in shape_weight_vals:\n            hp_list.append((ms, eps, sw))\n\nprint(f\"Total combinations: {len(hp_list)}\")  # Should be 847\n```\n\n### Evaluation Function\n\nEach worker evaluates one hyperparameter combination:\n\n```python\ndef evaluate_hyperparams(min_samples, epsilon, shape_weight, citsci_df, expert_df, expert_images):\n    \"\"\"\n    Evaluate one hyperparameter combination across all expert images.\n\n    Returns: (F1_avg, delta_avg, min_samples, epsilon, shape_weight)\n    \"\"\"\n    f1_scores = []\n    delta_scores = []\n\n    for image_id in expert_images:\n        f1, delta = evaluate_image(image_id, citsci_df, expert_df,\n                                    min_samples, epsilon, shape_weight)\n        f1_scores.append(f1)\n        if not np.isnan(delta):\n            delta_scores.append(delta)\n\n    avg_f1 = np.mean(f1_scores) if f1_scores else 0.0\n    avg_delta = np.mean(delta_scores) if delta_scores else np.nan\n\n    return avg_f1, avg_delta, min_samples, epsilon, shape_weight\n```\n\n### Parallel Execution\n\n```python\n# Load data once, before parallelization\ncitsci_df = pd.read_csv('\u002Froot\u002Fdata\u002Fcitsci_train.csv')\nexpert_df = pd.read_csv('\u002Froot\u002Fdata\u002Fexpert_train.csv')\nexpert_images = sorted(expert_df['file_rad'].unique())\n\n# Evaluate all combinations in parallel\nresults = Parallel(n_jobs=-1, verbose=1)(\n    delayed(evaluate_hyperparams)(ms, eps, sw, citsci_df, expert_df, expert_images)\n    for ms, eps, sw in hp_list\n)\n\n# Convert results to DataFrame\nresults_df = pd.DataFrame(results,\n    columns=['F1', 'delta', 'min_samples', 'epsilon', 'shape_weight'])\n```\n\n## Joblib Parameters\n\n### n_jobs=-1\nUses all available CPU cores. For typical 22-core machines:\n- ~22 parallel workers\n- 847 combinations ÷ 22 ≈ 39 tasks per worker\n- Total time: ~1.7 minutes (vs. ~60+ minutes sequentially)\n\n### verbose=1\nPrints progress:\n```\n[Parallel(n_jobs=-1)]: Done   6 tasks      | elapsed:    3.0s\n[Parallel(n_jobs=-1)]: Done 156 tasks      | elapsed:   20.7s\n[Parallel(n_jobs=-1)]: Done 847 out of 847 | elapsed:  1.7min finished\n```\n\n## Memory Efficiency\n\n### Data Sharing\nUsing Unix fork (default for Loky backend):\n- Data loaded once in parent process\n- Child processes inherit via copy-on-write\n- No duplication overhead\n\n### Per-Evaluation Memory\nEach worker needs:\n- DBSCAN per image: O(n²) for distance matrix (n = points per image)\n- Typical image: 50-100 points → 3KB-10KB distance matrix\n- All workers combined: reasonable memory usage\n\n```python\n# Load data BEFORE parallel section\ncitsci_df = pd.read_csv('\u002Froot\u002Fdata\u002Fcitsci_train.csv')\nexpert_df = pd.read_csv('\u002Froot\u002Fdata\u002Fexpert_train.csv')\nexpert_images = sorted(expert_df['file_rad'].unique())\n\n# Pass as parameters (more efficient than loading in each worker)\nresults = Parallel(n_jobs=-1)(\n    delayed(evaluate_hyperparams)(ms, eps, sw,\n                                   citsci_df, expert_df, expert_images)\n    for ms, eps, sw in hp_list\n)\n```\n\n## Progress Tracking Alternatives\n\n### Option 1: joblib verbose\n```python\nresults = Parallel(n_jobs=-1, verbose=10)(\n    delayed(fn)(args) for args in arguments\n)\n# verbose levels: 1=minimal, 5=moderate, 10=detailed\n```\n\n### Option 2: tqdm progress bar\n```python\nfrom tqdm import tqdm\n\nresults = Parallel(n_jobs=-1)(\n    delayed(fn)(args)\n    for args in tqdm(arguments, total=len(arguments))\n)\n```\n\n### Option 3: Custom progress tracking\n```python\nfrom joblib import Parallel, delayed, parallel_backend\n\ndef progress_callback(n_tasks):\n    \"\"\"Called every n_tasks completed.\"\"\"\n    print(f\"Progress: {n_tasks} tasks completed\")\n\nresults = Parallel(n_jobs=-1)(\n    delayed(fn)(args) for args in arguments\n)\n```\n\n## Results Aggregation\n\n```python\n# All results collected after parallel section completes\nresults_df = pd.DataFrame(results,\n    columns=['F1', 'delta', 'min_samples', 'epsilon', 'shape_weight'])\n\n# Verify completeness\nassert len(results_df) == 847, \"Missing results\"\n\n# Analyze\nprint(f\"F1 range: [{results_df['F1'].min():.5f}, {results_df['F1'].max():.5f}]\")\nprint(f\"Delta range: [{results_df['delta'].min():.5f}, {results_df['delta'].max():.5f}]\")\nprint(f\"Solutions with F1 > 0.5: {(results_df['F1'] > 0.5).sum()}\")\n```\n\n## Error Handling\n\n### Timeout Protection\n```python\n# Set timeout for long-running tasks\nresults = Parallel(n_jobs=-1, timeout=300)(  # 5 minutes per task\n    delayed(evaluate_hyperparams)(ms, eps, sw, citsci_df, expert_df, expert_images)\n    for ms, eps, sw in hp_list\n)\n```\n\n### Worker Crash Recovery\n```python\n# If a worker crashes, task fails and exception propagates\n# Typical causes:\n# - Out of memory\n# - Segmentation fault\n# - Infinite loop (timeout helps)\n\n# Recovery: Increase memory, reduce n_jobs, or fix underlying issue\n```\n\n## Performance Optimization\n\n### Batch Size\n```python\n# Parallel can batch tasks for efficiency\nresults = Parallel(n_jobs=-1, batch_size='auto')(\n    delayed(fn)(args) for args in arguments\n)\n```\n\n### Backend Selection\n```python\nfrom joblib import parallel_backend\n\n# Loky backend (default, most robust)\nwith parallel_backend('loky', n_jobs=-1):\n    results = Parallel()(delayed(fn)(args) for args in arguments)\n\n# Threading backend (for I\u002FO-bound tasks, lower overhead)\nwith parallel_backend('threading', n_jobs=-1):\n    results = Parallel()(delayed(fn)(args) for args in arguments)\n```\n\n## Reproducibility\n\n```python\n# Set random seed for reproducibility\nimport numpy as np\nnp.random.seed(42)\n\n# Note: DBSCAN is deterministic (no randomness)\n# Parallelization doesn't affect results (only speed)\n```\n\n## Typical Performance\n\nFor 847 DBSCAN evaluations across 369 images:\n\n| Configuration | Time |\n|---|---|\n| Sequential (1 core) | ~60-90 minutes |\n| Parallel (22 cores) | ~1.5-2 minutes |\n| Speedup | ~40-45× |\n\n## Debugging Parallel Code\n\n```python\n# Test single evaluation first\nresult = evaluate_hyperparams(3, 4, 0.9, citsci_df, expert_df, expert_images)\nprint(result)\n\n# Then enable parallelization\nresults = Parallel(n_jobs=-1, verbose=10)(\n    delayed(evaluate_hyperparams)(ms, eps, sw, citsci_df, expert_df, expert_images)\n    for ms, eps, sw in hp_list[:10]  # Test on subset first\n)\n\n# Finally, full grid search\nresults = Parallel(n_jobs=-1, verbose=1)(\n    delayed(evaluate_hyperparams)(ms, eps, sw, citsci_df, expert_df, expert_images)\n    for ms, eps, sw in hp_list\n)\n```\n\n## Key Takeaways\n\n1. **Load data before parallelization**: Avoids redundant I\u002FO in each worker\n2. **Return simple types**: Tuples faster than dictionaries or objects\n3. **Use n_jobs=-1**: Automatic CPU count detection and full utilization\n4. **Monitor progress**: verbose=1 or tqdm for user feedback\n5. **Test sequentially first**: Easier debugging before parallel execution\n6. **Check results completeness**: Verify all 847 combinations evaluated\n","# Parallel Grid Search Optimization\n\n## Grid Search Space\n\nFor Mars cloud clustering, evaluate all combinations of:\n- **min_samples**: 3, 4, 5, 6, 7, 8, 9 (7 values)\n- **epsilon**: 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24 (11 values)\n- **shape_weight**: 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9 (11 values)\n\nTotal combinations: 7 × 11 × 11 = **847**\n\n## Parallelization with joblib\n\n### Setup\n\n```python\nfrom joblib import Parallel, delayed\nimport pandas as pd\nimport numpy as np\n\n# Define hyperparameter ranges\nmin_samples_vals = list(range(3, 10))\nepsilon_vals = list(range(4, 26, 2))\nshape_weight_vals = list(np.round(np.arange(0.9, 2.0, 0.1), 1))\n\n# Generate all combinations\nhp_list = []\nfor ms in min_samples_vals:\n    for eps in epsilon_vals:\n        for sw in shape_weight_vals:\n            hp_list.append((ms, eps, sw))\n\nprint(f\"Total combinations: {len(hp_list)}\")  # Should be 847\n```\n\n### Evaluation Function\n\nEach worker evaluates one hyperparameter combination:\n\n```python\ndef evaluate_hyperparams(min_samples, epsilon, shape_weight, citsci_df, expert_df, expert_images):\n    \"\"\"\n    Evaluate one hyperparameter combination across all expert images.\n\n    Returns: (F1_avg, delta_avg, min_samples, epsilon, shape_weight)\n    \"\"\"\n    f1_scores = []\n    delta_scores = []\n\n    for image_id in expert_images:\n        f1, delta = evaluate_image(image_id, citsci_df, expert_df,\n                                    min_samples, epsilon, shape_weight)\n        f1_scores.append(f1)\n        if not np.isnan(delta):\n            delta_scores.append(delta)\n\n    avg_f1 = np.mean(f1_scores) if f1_scores else 0.0\n    avg_delta = np.mean(delta_scores) if delta_scores else np.nan\n\n    return avg_f1, avg_delta, min_samples, epsilon, shape_weight\n```\n\n### Parallel Execution\n\n```python\n# Load data once, before parallelization\ncitsci_df = pd.read_csv('\u002Froot\u002Fdata\u002Fcitsci_train.csv')\nexpert_df = pd.read_csv('\u002Froot\u002Fdata\u002Fexpert_train.csv')\nexpert_images = sorted(expert_df['file_rad'].unique())\n\n# Evaluate all combinations in parallel\nresults = Parallel(n_jobs=-1, verbose=1)(\n    delayed(evaluate_hyperparams)(ms, eps, sw, citsci_df, expert_df, expert_images)\n    for ms, eps, sw in hp_list\n)\n\n# Convert results to DataFrame\nresults_df = pd.DataFrame(results,\n    columns=['F1', 'delta', 'min_samples', 'epsilon', 'shape_weight'])\n```\n\n## Joblib Parameters\n\n### n_jobs=-1\nUses all available CPU cores. For typical 22-core machines:\n- ~22 parallel workers\n- 847 combinations ÷ 22 ≈ 39 tasks per worker\n- Total time: ~1.7 minutes (vs. ~60+ minutes sequentially)\n\n### verbose=1\nPrints progress:\n```\n[Parallel(n_jobs=-1)]: Done   6 tasks      | elapsed:    3.0s\n[Parallel(n_jobs=-1)]: Done 156 tasks      | elapsed:   20.7s\n[Parallel(n_jobs=-1)]: Done 847 out of 847 | elapsed:  1.7min finished\n```\n\n## Memory Efficiency\n\n### Data Sharing\nUsing Unix fork (default for Loky backend):\n- Data loaded once in parent process\n- Child processes inherit via copy-on-write\n- No duplication overhead\n\n### Per-Evaluation Memory\nEach worker needs:\n- DBSCAN per image: O(n²) for distance matrix (n = points per image)\n- Typical image: 50-100 points → 3KB-10KB distance matrix\n- All workers combined: reasonable memory usage\n\n```python\n# Load data BEFORE parallel section\ncitsci_df = pd.read_csv('\u002Froot\u002Fdata\u002Fcitsci_train.csv')\nexpert_df = pd.read_csv('\u002Froot\u002Fdata\u002Fexpert_train.csv')\nexpert_images = sorted(expert_df['file_rad'].unique())\n\n# Pass as parameters (more efficient than loading in each worker)\nresults = Parallel(n_jobs=-1)(\n    delayed(evaluate_hyperparams)(ms, eps, sw,\n                                   citsci_df, expert_df, expert_images)\n    for ms, eps, sw in hp_list\n)\n```\n\n## Progress Tracking Alternatives\n\n### Option 1: joblib verbose\n```python\nresults = Parallel(n_jobs=-1, verbose=10)(\n    delayed(fn)(args) for args in arguments\n)\n# verbose levels: 1=minimal, 5=moderate, 10=detailed\n```\n\n### Option 2: tqdm progress bar\n```python\nfrom tqdm import tqdm\n\nresults = Parallel(n_jobs=-1)(\n    delayed(fn)(args)\n    for args in tqdm(arguments, total=len(arguments))\n)\n```\n\n### Option 3: Custom progress tracking\n```python\nfrom joblib import Parallel, delayed, parallel_backend\n\ndef progress_callback(n_tasks):\n    \"\"\"Called every n_tasks completed.\"\"\"\n    print(f\"Progress: {n_tasks} tasks completed\")\n\nresults = Parallel(n_jobs=-1)(\n    delayed(fn)(args) for args in arguments\n)\n```\n\n## Results Aggregation\n\n```python\n# All results collected after parallel section completes\nresults_df = pd.DataFrame(results,\n    columns=['F1', 'delta', 'min_samples', 'epsilon', 'shape_weight'])\n\n# Verify completeness\nassert len(results_df) == 847, \"Missing results\"\n\n# Analyze\nprint(f\"F1 range: [{results_df['F1'].min():.5f}, {results_df['F1'].max():.5f}]\")\nprint(f\"Delta range: [{results_df['delta'].min():.5f}, {results_df['delta'].max():.5f}]\")\nprint(f\"Solutions with F1 > 0.5: {(results_df['F1'] > 0.5).sum()}\")\n```\n\n## Error Handling\n\n### Timeout Protection\n```python\n# Set timeout for long-running tasks\nresults = Parallel(n_jobs=-1, timeout=300)(  # 5 minutes per task\n    delayed(evaluate_hyperparams)(ms, eps, sw, citsci_df, expert_df, expert_images)\n    for ms, eps, sw in hp_list\n)\n```\n\n### Worker Crash Recovery\n```python\n# If a worker crashes, task fails and exception propagates\n# Typical causes:\n# - Out of memory\n# - Segmentation fault\n# - Infinite loop (timeout helps)\n\n# Recovery: Increase memory, reduce n_jobs, or fix underlying issue\n```\n\n## Performance Optimization\n\n### Batch Size\n```python\n# Parallel can batch tasks for efficiency\nresults = Parallel(n_jobs=-1, batch_size='auto')(\n    delayed(fn)(args) for args in arguments\n)\n```\n\n### Backend Selection\n```python\nfrom joblib import parallel_backend\n\n# Loky backend (default, most robust)\nwith parallel_backend('loky', n_jobs=-1):\n    results = Parallel()(delayed(fn)(args) for args in arguments)\n\n# Threading backend (for I\u002FO-bound tasks, lower overhead)\nwith parallel_backend('threading', n_jobs=-1):\n    results = Parallel()(delayed(fn)(args) for args in arguments)\n```\n\n## Reproducibility\n\n```python\n# Set random seed for reproducibility\nimport numpy as np\nnp.random.seed(42)\n\n# Note: DBSCAN is deterministic (no randomness)\n# Parallelization doesn't affect results (only speed)\n```\n\n## Typical Performance\n\nFor 847 DBSCAN evaluations across 369 images:\n\n| Configuration | Time |\n|---|---|\n| Sequential (1 core) | ~60-90 minutes |\n| Parallel (22 cores) | ~1.5-2 minutes |\n| Speedup | ~40-45× |\n\n## Debugging Parallel Code\n\n```python\n# Test single evaluation first\nresult = evaluate_hyperparams(3, 4, 0.9, citsci_df, expert_df, expert_images)\nprint(result)\n\n# Then enable parallelization\nresults = Parallel(n_jobs=-1, verbose=10)(\n    delayed(evaluate_hyperparams)(ms, eps, sw, citsci_df, expert_df, expert_images)\n    for ms, eps, sw in hp_list[:10]  # Test on subset first\n)\n\n# Finally, full grid search\nresults = Parallel(n_jobs=-1, verbose=1)(\n    delayed(evaluate_hyperparams)(ms, eps, sw, citsci_df, expert_df, expert_images)\n    for ms, eps, sw in hp_list\n)\n```\n\n## Key Takeaways\n\n1. **Load data before parallelization**: Avoids redundant I\u002FO in each worker\n2. **Return simple types**: Tuples faster than dictionaries or objects\n3. **Use n_jobs=-1**: Automatic CPU count detection and full utilization\n4. **Monitor progress**: verbose=1 or tqdm for user feedback\n5. **Test sequentially first**: Easier debugging before parallel execution\n6. **Check results completeness**: Verify all 847 combinations evaluated\n",{"name":5,"description":7},"main","726e1f79b96b0cb3d729d0e55a1c847e0b5353ae","skills\u002Fb2-self-feedback-claude-haiku-4-5\u002Fdbscan-parameter-tuning\u002Frun2_parallel_grid_search",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":39,"prompt":49,"zipAvailable":50},[40,43,46],{"tool":41,"command":42},"npx","npx skills add cxcscmu\u002FSkillLearnBench --skill run2_parallel_grid_search",{"tool":44,"command":45},"bunx","bunx skills add cxcscmu\u002FSkillLearnBench --skill run2_parallel_grid_search",{"tool":47,"command":48},"pnpm","pnpm dlx skills add cxcscmu\u002FSkillLearnBench --skill run2_parallel_grid_search","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fb2-self-feedback-claude-haiku-4-5\u002Fdbscan-parameter-tuning\u002Frun2_parallel_grid_search\u002FSKILL.md",true,[],[53,71,96,113,133,145],{"skillNo":54,"name":55,"nameZh":6,"description":56,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":57,"categories":58,"keywords":64,"publishedAt":25},"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",[59],{"categoryNo":60,"categoryName":61,"taxonomyType":62,"taxonomyTypeDesc":63},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[65,66,67,68,69,70],"object counter","object","vision","computer","Computer Vision","image",{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":80,"publishedAt":25},"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",[77],{"categoryNo":78,"categoryName":79,"taxonomyType":62,"taxonomyTypeDesc":63},"01JBSEEDCAT000000000000023","Skill与智能体开发",[81,82,83,84,85,86,87,88,89,90,91,92,93,94,95],"workflow","planning","planning workflow","travel","travel planning","travel planning workflow","structured","performing","plan","for","user","it","requirements","essential","itineraries",{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":102,"publishedAt":25},"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",[],[18,103,104,105,106,107,108,84,109,110,85,111,90,112,82],"tool","dataset","bundled dataset search tool","restaurants","Tools","up","look","flights","you","database",{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":119,"publishedAt":25},"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",[],[120,121,122,90,123,124,125,126,127,128,129,130,111,131,132],"glm output","output","glm","tasks","metrics","json","basics","guidance","matching","verifier","processing","root","calibration",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":140,"publishedAt":25},"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",[139],{"categoryNo":78,"categoryName":79,"taxonomyType":62,"taxonomyTypeDesc":63},[141,132,122,121,127,126,123,142,143,90,144],"glm calibration","setup","companion","metric",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":151,"publishedAt":25},"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",[],[152,122,126,153,141,132,90,121,154,155,156,157,158,159,123],"glm basics","inspect","relevant","files","good","use","how","Evaluation"]