[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KH2WHTC0BTSPD1FNF6M0JW":3,"skill-same:01M6KH2WHTC0BTSPD1FNF6M0JW":75},{"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":27,"publishedAt":48,"linkOnly":49,"markdownContent":50,"markdownBody":51,"frontMatter":52,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":56,"repositoryHtmlUrl":57,"repositoryHomepageUrl":58,"ownerHtmlUrl":59,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":60,"install":61,"resources":74},"01M6KH2WHTC0BTSPD1FNF6M0JW","enterprise-data-retrieval",null,"Core skill for retrieving information from enterprise data files (JSON, JSONL, CSV, Parquet, Markdown, etc.) located at \u002Froot\u002FDATA, answering questions from \u002Froot\u002Fquestion.txt, and writing structured answers to \u002Froot\u002Fanswer.json. Handles multi-hop reasoning, cross-referencing, and entity resolution across enterprise documents.","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\u002Fb3-teacher-feedback-claude-opus-4-6\u002Fenterprise-information-search\u002Frun3_enterprise-data-retrieval\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],"enterprise data retrieval","Enterprise","data","retrieval","across","for","at","answer","jsonl","information","multi","resolution","writing","files","question","hop","markdown","csv","core","documents","2026-11-10 10:12:30",false,"---\nname: enterprise-data-retrieval\ndescription: Core skill for retrieving information from enterprise data files (JSON, JSONL, CSV, Parquet, Markdown, etc.) located at \u002Froot\u002FDATA, answering questions from \u002Froot\u002Fquestion.txt, and writing structured answers to \u002Froot\u002Fanswer.json. Handles multi-hop reasoning, cross-referencing, and entity resolution across enterprise documents.\n---\n\n# Enterprise Data Retrieval Skill\n\n## Overview\nThis skill retrieves answers from enterprise data stored at `\u002Froot\u002FDATA` by reading questions from `\u002Froot\u002Fquestion.txt`, performing deep multi-hop searches across all data sources, and writing results to `\u002Froot\u002Fanswer.json`.\n\n## Step 1: Explore the Data Directory\n\n```python\nimport os\n\ndef walk_data_dir(root=\"\u002Froot\u002FDATA\"):\n    all_files = []\n    for dirpath, dirnames, filenames in os.walk(root):\n        for f in filenames:\n            full = os.path.join(dirpath, f)\n            all_files.append(full)\n            print(full, os.path.getsize(full))\n    return all_files\n\nall_files = walk_data_dir()\n```\n\nCatalog every file. Note file types: `.json`, `.jsonl`, `.csv`, `.parquet`, `.md`, `.txt`, `.yaml`, `.log`.\n\n## Step 2: Load and Index ALL Data\n\nLoad every file into memory with appropriate parsers:\n\n```python\nimport json, csv, pathlib\n\ndef load_file(path):\n    ext = pathlib.Path(path).suffix.lower()\n    with open(path, 'r', errors='replace') as f:\n        text = f.read()\n    if ext == '.json':\n        return json.loads(text), text\n    elif ext == '.jsonl':\n        records = [json.loads(line) for line in text.strip().split('\\n') if line.strip()]\n        return records, text\n    elif ext == '.csv':\n        import io\n        reader = csv.DictReader(io.StringIO(text))\n        return list(reader), text\n    elif ext == '.parquet':\n        import pandas as pd\n        df = pd.read_parquet(path)\n        return df.to_dict('records'), df.to_string()\n    else:\n        return text, text\n    \nall_data = {}\nall_raw_text = {}\nfor fpath in all_files:\n    try:\n        parsed, raw = load_file(fpath)\n        all_data[fpath] = parsed\n        all_raw_text[fpath] = raw\n    except Exception as e:\n        print(f\"Error loading {fpath}: {e}\")\n```\n\n**Print a summary of each file** (first 2000 chars) to understand the schema and content. Identify:\n- Slack messages\u002Fthreads (channels, replies, timestamps, users)\n- Meeting transcripts (speakers, turns, timestamps)\n- Documents \u002F PRs \u002F reports (title, author, reviewers, content, metadata)\n- User directories \u002F org charts (name, role, team, product)\n- Product catalogs \u002F project metadata\n\n## Step 3: Build Cross-Reference Index\n\nCreate lookup structures to enable multi-hop traversal:\n\n```python\n# Index by entity ID, document ID, user name, channel, etc.\nentity_index = {}  # entity_id -> all records mentioning it\nuser_index = {}    # user_name -> all records involving them\ndoc_index = {}     # doc_id\u002Ftitle -> all records referencing it\nproduct_index = {} # product_name -> all associated artifacts\n\ndef index_record(record, source_file):\n    \"\"\"Index a record by all identifiable keys.\"\"\"\n    if isinstance(record, dict):\n        for key, val in record.items():\n            if isinstance(val, str):\n                # Index by meaningful identifiers\n                pass  # implement per schema\n    # Also do full-text indexing for cross-references\n```\n\n## Step 4: Read Questions\n\n```python\nwith open('\u002Froot\u002Fquestion.txt', 'r') as f:\n    question_text = f.read()\nprint(question_text)\n```\n\nParse all questions. Typically formatted as key-value pairs like:\n```\nq1: What are ...?\nq2: Who ...?\n```\n\n```python\nimport re\nquestions = {}\nfor line in question_text.strip().split('\\n'):\n    line = line.strip()\n    if not line:\n        continue\n    match = re.match(r'(q\\d+)\\s*[:：]\\s*(.*)', line, re.IGNORECASE)\n    if match:\n        questions[match.group(1)] = match.group(2)\n    # Also handle JSON format\nif not questions:\n    try:\n        questions = json.loads(question_text)\n    except:\n        pass\nprint(questions)\n```\n\n## Step 5: Answer Each Question with Deep Multi-Hop Search\n\nFor each question, follow this rigorous procedure:\n\n### 5a: Identify Question Type\n- **\"Who reviewed\u002Fcontributed to X?\"** → Reviewer\u002Fcontributor identification (see Skill: reviewer-extraction)\n- **\"Which documents\u002Fartifacts relate to product Y?\"** → Product-artifact association (see Skill: product-artifact-grounding)\n- **\"What is the status\u002Fvalue of Z?\"** → Direct field lookup\n- **\"List all X that satisfy condition Y\"** → Filtered enumeration\n\n### 5b: Keyword and Semantic Search\n\n```python\ndef search_all(query_terms, data=all_raw_text):\n    \"\"\"Search across all raw text for query terms.\"\"\"\n    results = []\n    for fpath, text in data.items():\n        text_lower = text.lower()\n        score = sum(1 for term in query_terms if term.lower() in text_lower)\n        if score > 0:\n            results.append((fpath, score, text))\n    results.sort(key=lambda x: -x[1])\n    return results\n```\n\n### 5c: Multi-Hop Follow-Through (CRITICAL)\n\nWhen a search finds a reference, **always follow cross-references**:\n\n1. **Document → Slack threads**: If a document is shared in Slack, find ALL replies in that thread\n2. **Slack thread → Meeting transcripts**: If a meeting is mentioned, find the transcript and scan ALL speaker turns\n3. **Meeting transcript → Documents**: If a document is discussed, trace back to the document record\n4. **PR\u002FReview → Comments**: If a PR is found, find ALL comments and review submissions\n5. **Any reference to a person → Verify their role** via user directory\n\n```python\ndef follow_references(initial_results, all_data):\n    \"\"\"\n    Given initial search results, follow cross-references to find\n    all connected information across data sources.\n    \"\"\"\n    visited = set()\n    queue = list(initial_results)\n    all_connected = []\n    \n    while queue:\n        item = queue.pop(0)\n        item_id = id(item)  # or a content hash\n        if item_id in visited:\n            continue\n        visited.add(item_id)\n        all_connected.append(item)\n        \n        # Extract cross-references (doc IDs, thread IDs, meeting IDs, usernames)\n        refs = extract_references(item)\n        for ref in refs:\n            # Search for the referenced entity in all data\n            matches = lookup_reference(ref, all_data)\n            queue.extend(matches)\n    \n    return all_connected\n```\n\n### 5d: Assemble Answer\n\nCollect all evidence, deduplicate, and format as a list.\n\n## Step 6: Track Token Consumption\n\n**CRITICAL**: Track actual token usage, NOT placeholders.\n\n```python\nimport tiktoken\n\n# If using OpenAI-style API, track from response objects:\n# tokens_used = response.usage.total_tokens\n\n# If counting manually:\ndef count_tokens(text, model=\"gpt-4\"):\n    try:\n        enc = tiktoken.encoding_for_model(model)\n        return len(enc.encode(text))\n    except:\n        # Fallback: approximate 1 token ≈ 4 chars\n        return max(1, len(text) \u002F\u002F 4)\n\n# Track per-question token usage\nquestion_tokens = {}\n```\n\nFor each question, measure tokens consumed by:\n- The question text itself\n- All data chunks read\u002Fsearched for that question\n- The generated answer\n\nSum these and store as a **positive integer** (never zero, never a string).\n\nIf exact API token counts are available from LLM calls, use those. Otherwise, estimate based on text processed. **The value must be a positive number.**\n\n```python\n# Example tracking pattern:\nfor qid, question in questions.items():\n    tokens_for_this_q = 0\n    tokens_for_this_q += count_tokens(question)\n    \n    # ... perform searches, each time adding tokens for text processed ...\n    for chunk in relevant_chunks:\n        tokens_for_this_q += count_tokens(chunk)\n    \n    tokens_for_this_q += count_tokens(str(answer))\n    \n    # Ensure positive\n    question_tokens[qid] = max(1, tokens_for_this_q)\n```\n\n## Step 7: Recall-Check Before Finalizing (CRITICAL)\n\n**Before writing the final answer**, perform a completeness verification:\n\n```python\ndef recall_check(qid, question, current_answer, all_data):\n    \"\"\"\n    Re-scan ALL relevant sources to ensure no entity was missed.\n    Specifically:\n    - Re-scan all Slack thread replies for substantive contributors\n    - Re-scan all meeting transcript turns for feedback\u002Fsuggestions\n    - Re-scan all PR\u002Freview comments\n    - Verify no cross-product distractors slipped in\n    \"\"\"\n    missed = []\n    # ... implementation per question type ...\n    return missed\n\nfor qid in questions:\n    missed = recall_check(qid, questions[qid], answers[qid], all_data)\n    if missed:\n        answers[qid].extend(missed)\n```\n\n## Step 8: Write Output\n\n```python\noutput = {}\nfor qid in questions:\n    ans = answers[qid]\n    # Ensure answer is always a list\n    if not isinstance(ans, list):\n        ans = [ans]\n    # Ensure tokens is a positive number\n    tok = question_tokens.get(qid, 1)\n    if not isinstance(tok, (int, float)) or tok \u003C= 0:\n        tok = 1\n    output[qid] = {\"answer\": ans, \"tokens\": tok}\n\nwith open('\u002Froot\u002Fanswer.json', 'w') as f:\n    json.dump(output, f, indent=2, ensure_ascii=False)\n\n# Verify\nwith open('\u002Froot\u002Fanswer.json', 'r') as f:\n    print(f.read())\n```\n\n## Output Format\n```json\n{\n    \"q1\": {\"answer\": [\"item1\", \"item2\"], \"tokens\": 1542},\n    \"q2\": {\"answer\": [\"item1\"], \"tokens\": 987},\n    \"q3\": {\"answer\": [\"item1\", \"item2\", \"item3\"], \"tokens\": 2103}\n}\n```","# Enterprise Data Retrieval Skill\n\n## Overview\nThis skill retrieves answers from enterprise data stored at `\u002Froot\u002FDATA` by reading questions from `\u002Froot\u002Fquestion.txt`, performing deep multi-hop searches across all data sources, and writing results to `\u002Froot\u002Fanswer.json`.\n\n## Step 1: Explore the Data Directory\n\n```python\nimport os\n\ndef walk_data_dir(root=\"\u002Froot\u002FDATA\"):\n    all_files = []\n    for dirpath, dirnames, filenames in os.walk(root):\n        for f in filenames:\n            full = os.path.join(dirpath, f)\n            all_files.append(full)\n            print(full, os.path.getsize(full))\n    return all_files\n\nall_files = walk_data_dir()\n```\n\nCatalog every file. Note file types: `.json`, `.jsonl`, `.csv`, `.parquet`, `.md`, `.txt`, `.yaml`, `.log`.\n\n## Step 2: Load and Index ALL Data\n\nLoad every file into memory with appropriate parsers:\n\n```python\nimport json, csv, pathlib\n\ndef load_file(path):\n    ext = pathlib.Path(path).suffix.lower()\n    with open(path, 'r', errors='replace') as f:\n        text = f.read()\n    if ext == '.json':\n        return json.loads(text), text\n    elif ext == '.jsonl':\n        records = [json.loads(line) for line in text.strip().split('\\n') if line.strip()]\n        return records, text\n    elif ext == '.csv':\n        import io\n        reader = csv.DictReader(io.StringIO(text))\n        return list(reader), text\n    elif ext == '.parquet':\n        import pandas as pd\n        df = pd.read_parquet(path)\n        return df.to_dict('records'), df.to_string()\n    else:\n        return text, text\n    \nall_data = {}\nall_raw_text = {}\nfor fpath in all_files:\n    try:\n        parsed, raw = load_file(fpath)\n        all_data[fpath] = parsed\n        all_raw_text[fpath] = raw\n    except Exception as e:\n        print(f\"Error loading {fpath}: {e}\")\n```\n\n**Print a summary of each file** (first 2000 chars) to understand the schema and content. Identify:\n- Slack messages\u002Fthreads (channels, replies, timestamps, users)\n- Meeting transcripts (speakers, turns, timestamps)\n- Documents \u002F PRs \u002F reports (title, author, reviewers, content, metadata)\n- User directories \u002F org charts (name, role, team, product)\n- Product catalogs \u002F project metadata\n\n## Step 3: Build Cross-Reference Index\n\nCreate lookup structures to enable multi-hop traversal:\n\n```python\n# Index by entity ID, document ID, user name, channel, etc.\nentity_index = {}  # entity_id -> all records mentioning it\nuser_index = {}    # user_name -> all records involving them\ndoc_index = {}     # doc_id\u002Ftitle -> all records referencing it\nproduct_index = {} # product_name -> all associated artifacts\n\ndef index_record(record, source_file):\n    \"\"\"Index a record by all identifiable keys.\"\"\"\n    if isinstance(record, dict):\n        for key, val in record.items():\n            if isinstance(val, str):\n                # Index by meaningful identifiers\n                pass  # implement per schema\n    # Also do full-text indexing for cross-references\n```\n\n## Step 4: Read Questions\n\n```python\nwith open('\u002Froot\u002Fquestion.txt', 'r') as f:\n    question_text = f.read()\nprint(question_text)\n```\n\nParse all questions. Typically formatted as key-value pairs like:\n```\nq1: What are ...?\nq2: Who ...?\n```\n\n```python\nimport re\nquestions = {}\nfor line in question_text.strip().split('\\n'):\n    line = line.strip()\n    if not line:\n        continue\n    match = re.match(r'(q\\d+)\\s*[:：]\\s*(.*)', line, re.IGNORECASE)\n    if match:\n        questions[match.group(1)] = match.group(2)\n    # Also handle JSON format\nif not questions:\n    try:\n        questions = json.loads(question_text)\n    except:\n        pass\nprint(questions)\n```\n\n## Step 5: Answer Each Question with Deep Multi-Hop Search\n\nFor each question, follow this rigorous procedure:\n\n### 5a: Identify Question Type\n- **\"Who reviewed\u002Fcontributed to X?\"** → Reviewer\u002Fcontributor identification (see Skill: reviewer-extraction)\n- **\"Which documents\u002Fartifacts relate to product Y?\"** → Product-artifact association (see Skill: product-artifact-grounding)\n- **\"What is the status\u002Fvalue of Z?\"** → Direct field lookup\n- **\"List all X that satisfy condition Y\"** → Filtered enumeration\n\n### 5b: Keyword and Semantic Search\n\n```python\ndef search_all(query_terms, data=all_raw_text):\n    \"\"\"Search across all raw text for query terms.\"\"\"\n    results = []\n    for fpath, text in data.items():\n        text_lower = text.lower()\n        score = sum(1 for term in query_terms if term.lower() in text_lower)\n        if score > 0:\n            results.append((fpath, score, text))\n    results.sort(key=lambda x: -x[1])\n    return results\n```\n\n### 5c: Multi-Hop Follow-Through (CRITICAL)\n\nWhen a search finds a reference, **always follow cross-references**:\n\n1. **Document → Slack threads**: If a document is shared in Slack, find ALL replies in that thread\n2. **Slack thread → Meeting transcripts**: If a meeting is mentioned, find the transcript and scan ALL speaker turns\n3. **Meeting transcript → Documents**: If a document is discussed, trace back to the document record\n4. **PR\u002FReview → Comments**: If a PR is found, find ALL comments and review submissions\n5. **Any reference to a person → Verify their role** via user directory\n\n```python\ndef follow_references(initial_results, all_data):\n    \"\"\"\n    Given initial search results, follow cross-references to find\n    all connected information across data sources.\n    \"\"\"\n    visited = set()\n    queue = list(initial_results)\n    all_connected = []\n    \n    while queue:\n        item = queue.pop(0)\n        item_id = id(item)  # or a content hash\n        if item_id in visited:\n            continue\n        visited.add(item_id)\n        all_connected.append(item)\n        \n        # Extract cross-references (doc IDs, thread IDs, meeting IDs, usernames)\n        refs = extract_references(item)\n        for ref in refs:\n            # Search for the referenced entity in all data\n            matches = lookup_reference(ref, all_data)\n            queue.extend(matches)\n    \n    return all_connected\n```\n\n### 5d: Assemble Answer\n\nCollect all evidence, deduplicate, and format as a list.\n\n## Step 6: Track Token Consumption\n\n**CRITICAL**: Track actual token usage, NOT placeholders.\n\n```python\nimport tiktoken\n\n# If using OpenAI-style API, track from response objects:\n# tokens_used = response.usage.total_tokens\n\n# If counting manually:\ndef count_tokens(text, model=\"gpt-4\"):\n    try:\n        enc = tiktoken.encoding_for_model(model)\n        return len(enc.encode(text))\n    except:\n        # Fallback: approximate 1 token ≈ 4 chars\n        return max(1, len(text) \u002F\u002F 4)\n\n# Track per-question token usage\nquestion_tokens = {}\n```\n\nFor each question, measure tokens consumed by:\n- The question text itself\n- All data chunks read\u002Fsearched for that question\n- The generated answer\n\nSum these and store as a **positive integer** (never zero, never a string).\n\nIf exact API token counts are available from LLM calls, use those. Otherwise, estimate based on text processed. **The value must be a positive number.**\n\n```python\n# Example tracking pattern:\nfor qid, question in questions.items():\n    tokens_for_this_q = 0\n    tokens_for_this_q += count_tokens(question)\n    \n    # ... perform searches, each time adding tokens for text processed ...\n    for chunk in relevant_chunks:\n        tokens_for_this_q += count_tokens(chunk)\n    \n    tokens_for_this_q += count_tokens(str(answer))\n    \n    # Ensure positive\n    question_tokens[qid] = max(1, tokens_for_this_q)\n```\n\n## Step 7: Recall-Check Before Finalizing (CRITICAL)\n\n**Before writing the final answer**, perform a completeness verification:\n\n```python\ndef recall_check(qid, question, current_answer, all_data):\n    \"\"\"\n    Re-scan ALL relevant sources to ensure no entity was missed.\n    Specifically:\n    - Re-scan all Slack thread replies for substantive contributors\n    - Re-scan all meeting transcript turns for feedback\u002Fsuggestions\n    - Re-scan all PR\u002Freview comments\n    - Verify no cross-product distractors slipped in\n    \"\"\"\n    missed = []\n    # ... implementation per question type ...\n    return missed\n\nfor qid in questions:\n    missed = recall_check(qid, questions[qid], answers[qid], all_data)\n    if missed:\n        answers[qid].extend(missed)\n```\n\n## Step 8: Write Output\n\n```python\noutput = {}\nfor qid in questions:\n    ans = answers[qid]\n    # Ensure answer is always a list\n    if not isinstance(ans, list):\n        ans = [ans]\n    # Ensure tokens is a positive number\n    tok = question_tokens.get(qid, 1)\n    if not isinstance(tok, (int, float)) or tok \u003C= 0:\n        tok = 1\n    output[qid] = {\"answer\": ans, \"tokens\": tok}\n\nwith open('\u002Froot\u002Fanswer.json', 'w') as f:\n    json.dump(output, f, indent=2, ensure_ascii=False)\n\n# Verify\nwith open('\u002Froot\u002Fanswer.json', 'r') as f:\n    print(f.read())\n```\n\n## Output Format\n```json\n{\n    \"q1\": {\"answer\": [\"item1\", \"item2\"], \"tokens\": 1542},\n    \"q2\": {\"answer\": [\"item1\"], \"tokens\": 987},\n    \"q3\": {\"answer\": [\"item1\", \"item2\", \"item3\"], \"tokens\": 2103}\n}\n```",{"name":5,"description":7},"main","726e1f79b96b0cb3d729d0e55a1c847e0b5353ae","skills\u002Fb3-teacher-feedback-claude-opus-4-6\u002Fenterprise-information-search\u002Frun3_enterprise-data-retrieval",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":62,"prompt":72,"zipAvailable":73},[63,66,69],{"tool":64,"command":65},"npx","npx skills add cxcscmu\u002FSkillLearnBench --skill enterprise-data-retrieval",{"tool":67,"command":68},"bunx","bunx skills add cxcscmu\u002FSkillLearnBench --skill enterprise-data-retrieval",{"tool":70,"command":71},"pnpm","pnpm dlx skills add cxcscmu\u002FSkillLearnBench --skill enterprise-data-retrieval","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fb3-teacher-feedback-claude-opus-4-6\u002Fenterprise-information-search\u002Frun3_enterprise-data-retrieval\u002FSKILL.md",true,[],[76,92,114,132,152,164],{"skillNo":77,"name":78,"nameZh":6,"description":79,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":80,"categories":81,"keywords":85,"publishedAt":48},"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",[82],{"categoryNo":83,"categoryName":84,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000016","图像与多媒体",[86,87,88,89,90,91],"object counter","object","vision","computer","Computer Vision","image",{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":99,"publishedAt":48},"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",[98],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[100,101,102,103,104,105,106,107,108,33,109,110,111,112,113],"workflow","planning","planning workflow","travel","travel planning","travel planning workflow","structured","performing","plan","user","it","requirements","essential","itineraries",{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":120,"publishedAt":48},"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",[],[121,122,123,124,125,126,127,103,128,129,104,130,33,131,101],"search","tool","dataset","bundled dataset search tool","restaurants","Tools","up","look","flights","you","database",{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":136,"categories":137,"keywords":138,"publishedAt":48},"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",[],[139,140,141,33,142,143,144,145,146,147,148,149,130,150,151],"glm output","output","glm","tasks","metrics","json","basics","guidance","matching","verifier","processing","root","calibration",{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":159,"publishedAt":48},"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",[158],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[160,151,141,140,146,145,142,161,162,33,163],"glm calibration","setup","companion","metric",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":170,"publishedAt":48},"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",[],[171,141,145,172,160,151,33,140,173,41,174,175,176,177,142],"glm basics","inspect","relevant","good","use","how","Evaluation"]