[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KJC3300FVDXVBJBWYH822A":3,"skill-same:01M6KJC3300FVDXVBJBWYH822A":65},{"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":22,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":43,"commitSha":44,"skillDirectory":45,"forksCount":46,"repositoryHtmlUrl":47,"repositoryHomepageUrl":48,"ownerHtmlUrl":49,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":50,"install":51,"resources":64},"01M6KJC3300FVDXVBJBWYH822A","13f-fund-analysis",null,"Analyze SEC 13F fund holdings data given an accession number. Use this skill when you have an accession_number and need to extract fund details including AUM, number of holdings, and detailed position data. Works with Q2 and Q3 2025 filings.","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\u002Ffinancial-analysis\u002F13f-fund-analysis\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"analysis","fund","13f","13f fund analysis","data","analyze","extract","use","position","filings","2025","with","you","number","holdings","2026-11-10 10:12:30",false,"---\nname: 13f-fund-analysis\ndescription: Analyze SEC 13F fund holdings data given an accession number. Use this skill when you have an accession_number and need to extract fund details including AUM, number of holdings, and detailed position data. Works with Q2 and Q3 2025 filings.\n---\n\n# 13F Fund Analysis Skill\n\n## Overview\n\nThis skill enables deep analysis of 13F fund filings using accession numbers, extracting key metrics like AUM (Assets Under Management), number of holdings, and detailed stock positions.\n\n## When to Use\n\nUse this skill whenever you need to:\n- Extract AUM from a specific fund filing\n- Count the number of stocks held by a fund\n- Get detailed holdings data (positions, shares, values)\n- Analyze a fund's portfolio composition\n\n## Prerequisites\n\nYou must have:\n- The accession_number from a 13F filing (get this using the 13f-fund-search skill)\n- The quarter folder path (\u002Froot\u002F2025-q2\u002F or \u002Froot\u002F2025-q3\u002F)\n\n## Analysis Process\n\n### Step 1: Locate the Filing Files\n\nGiven an accession_number, find the corresponding filing folder:\n```bash\n# Accession numbers map to folder names, typically in format:\n# \u002Froot\u002F2025-q2\u002F[cik]\u002F[accession_folder]\u002F\nfind \u002Froot\u002F2025-q2\u002F -name \"*accession*\" -o -name \"*.csv\" -o -name \"*.json\"\n```\n\n### Step 2: Extract Fund Metadata\n\nLook for files containing:\n- **COVERPAGE** - Contains fund name, AUM, manager info\n- **HOLDINGS** or **INFOTABLE** - Contains individual stock positions\n\n```python\nimport pandas as pd\nimport json\nimport os\n\ndef analyze_fund(quarter_path, accession_number):\n    \"\"\"\n    Analyze a fund's holdings and AUM given accession number.\n\n    Args:\n        quarter_path: Path to quarter (e.g., '\u002Froot\u002F2025-q2\u002F')\n        accession_number: The accession number from search\n\n    Returns:\n        Dictionary with fund metrics\n    \"\"\"\n    results = {\n        'accession_number': accession_number,\n        'aum': None,\n        'number_of_holdings': 0,\n        'holdings': [],\n        'fund_name': None\n    }\n\n    # Search for accession folder\n    for root, dirs, files in os.walk(quarter_path):\n        # Check if this directory contains our accession number\n        if accession_number in root:\n            # Look for COVERPAGE\n            for file in files:\n                if 'COVERPAGE' in file.upper():\n                    file_path = os.path.join(root, file)\n                    try:\n                        if file.endswith('.csv'):\n                            df = pd.read_csv(file_path)\n                        else:\n                            with open(file_path, 'r') as f:\n                                df = json.load(f)\n                                if isinstance(df, list):\n                                    df = pd.DataFrame(df)\n\n                        # Extract AUM - look for columns containing 'aum' or 'assets'\n                        for col in df.columns:\n                            if 'aum' in col.lower() or 'assets' in col.lower():\n                                if len(df) > 0:\n                                    results['aum'] = df[col].iloc[0]\n                                    break\n\n                        # Extract fund name\n                        for col in df.columns:\n                            if 'name' in col.lower() or 'fund' in col.lower():\n                                if len(df) > 0:\n                                    results['fund_name'] = df[col].iloc[0]\n                                    break\n                    except Exception as e:\n                        pass\n\n            # Look for holdings\u002Finfotable\n            for file in files:\n                if 'INFOTABLE' in file.upper() or 'HOLDINGS' in file.upper() or 'POSITION' in file.upper():\n                    file_path = os.path.join(root, file)\n                    try:\n                        if file.endswith('.csv'):\n                            holdings_df = pd.read_csv(file_path)\n                        else:\n                            with open(file_path, 'r') as f:\n                                holdings_df = json.load(f)\n                                if isinstance(holdings_df, list):\n                                    holdings_df = pd.DataFrame(holdings_df)\n\n                        results['number_of_holdings'] = len(holdings_df)\n                        results['holdings'] = holdings_df.to_dict('records')\n                    except Exception as e:\n                        pass\n\n    return results\n\n# Usage\nfund_data = analyze_fund('\u002Froot\u002F2025-q3\u002F', '0001234567-25-000123')\nprint(f\"AUM: ${fund_data['aum']}\")\nprint(f\"Number of holdings: {fund_data['number_of_holdings']}\")\n```\n\n### Step 3: Parse Holdings Data\n\nHoldings typically include:\n- **CUSIP** - Stock identifier\n- **Shares** - Number of shares held\n- **Value** - Market value of position\n- **Stock Name** - Company name\n\n```python\ndef get_holdings_summary(fund_data):\n    \"\"\"Get top holdings by value.\"\"\"\n    holdings_df = pd.DataFrame(fund_data['holdings'])\n\n    # Sort by value (look for value or market_value column)\n    value_col = None\n    for col in holdings_df.columns:\n        if 'value' in col.lower():\n            value_col = col\n            break\n\n    if value_col:\n        holdings_df = holdings_df.sort_values(by=value_col, ascending=False)\n\n    return holdings_df.head(10)  # Top 10\n```\n\n## Output Format\n\nReturns fund analysis object:\n```json\n{\n    \"accession_number\": \"0001234567-25-000123\",\n    \"fund_name\": \"Renaissance Technologies\",\n    \"aum\": 12345000000,\n    \"number_of_holdings\": 245,\n    \"holdings\": [\n        {\n            \"cusip\": \"000000001\",\n            \"name\": \"COMPANY NAME\",\n            \"shares\": 1000000,\n            \"value\": 50000000\n        }\n    ]\n}\n```\n\n## Key Fields to Extract\n\n| Field | Description | Source |\n|-------|-------------|--------|\n| AUM | Assets Under Management | COVERPAGE |\n| Number of Holdings | Count of stock positions | INFOTABLE\u002FHOLDINGS |\n| CUSIP | Stock identifier | INFOTABLE\u002FHOLDINGS |\n| Shares | Number of shares held | INFOTABLE\u002FHOLDINGS |\n| Value | Market value of position | INFOTABLE\u002FHOLDINGS |\n\n## Common Column Names\n\nThe 13F files may use varying column names:\n- AUM: \"AUM\", \"total_aum\", \"assets_under_management\"\n- Holdings: \"infotable_entry\", \"position\", \"holding\"\n- Value: \"value\", \"market_value\", \"value_of_shares\"\n\n## Tips\n\n- Check file structure first—CSV vs JSON\n- AUM may be in different units (thousands vs actual)\n- Holdings count = number of rows in INFOTABLE\n- Some funds may have partial holdings data in Q3\n","# 13F Fund Analysis Skill\n\n## Overview\n\nThis skill enables deep analysis of 13F fund filings using accession numbers, extracting key metrics like AUM (Assets Under Management), number of holdings, and detailed stock positions.\n\n## When to Use\n\nUse this skill whenever you need to:\n- Extract AUM from a specific fund filing\n- Count the number of stocks held by a fund\n- Get detailed holdings data (positions, shares, values)\n- Analyze a fund's portfolio composition\n\n## Prerequisites\n\nYou must have:\n- The accession_number from a 13F filing (get this using the 13f-fund-search skill)\n- The quarter folder path (\u002Froot\u002F2025-q2\u002F or \u002Froot\u002F2025-q3\u002F)\n\n## Analysis Process\n\n### Step 1: Locate the Filing Files\n\nGiven an accession_number, find the corresponding filing folder:\n```bash\n# Accession numbers map to folder names, typically in format:\n# \u002Froot\u002F2025-q2\u002F[cik]\u002F[accession_folder]\u002F\nfind \u002Froot\u002F2025-q2\u002F -name \"*accession*\" -o -name \"*.csv\" -o -name \"*.json\"\n```\n\n### Step 2: Extract Fund Metadata\n\nLook for files containing:\n- **COVERPAGE** - Contains fund name, AUM, manager info\n- **HOLDINGS** or **INFOTABLE** - Contains individual stock positions\n\n```python\nimport pandas as pd\nimport json\nimport os\n\ndef analyze_fund(quarter_path, accession_number):\n    \"\"\"\n    Analyze a fund's holdings and AUM given accession number.\n\n    Args:\n        quarter_path: Path to quarter (e.g., '\u002Froot\u002F2025-q2\u002F')\n        accession_number: The accession number from search\n\n    Returns:\n        Dictionary with fund metrics\n    \"\"\"\n    results = {\n        'accession_number': accession_number,\n        'aum': None,\n        'number_of_holdings': 0,\n        'holdings': [],\n        'fund_name': None\n    }\n\n    # Search for accession folder\n    for root, dirs, files in os.walk(quarter_path):\n        # Check if this directory contains our accession number\n        if accession_number in root:\n            # Look for COVERPAGE\n            for file in files:\n                if 'COVERPAGE' in file.upper():\n                    file_path = os.path.join(root, file)\n                    try:\n                        if file.endswith('.csv'):\n                            df = pd.read_csv(file_path)\n                        else:\n                            with open(file_path, 'r') as f:\n                                df = json.load(f)\n                                if isinstance(df, list):\n                                    df = pd.DataFrame(df)\n\n                        # Extract AUM - look for columns containing 'aum' or 'assets'\n                        for col in df.columns:\n                            if 'aum' in col.lower() or 'assets' in col.lower():\n                                if len(df) > 0:\n                                    results['aum'] = df[col].iloc[0]\n                                    break\n\n                        # Extract fund name\n                        for col in df.columns:\n                            if 'name' in col.lower() or 'fund' in col.lower():\n                                if len(df) > 0:\n                                    results['fund_name'] = df[col].iloc[0]\n                                    break\n                    except Exception as e:\n                        pass\n\n            # Look for holdings\u002Finfotable\n            for file in files:\n                if 'INFOTABLE' in file.upper() or 'HOLDINGS' in file.upper() or 'POSITION' in file.upper():\n                    file_path = os.path.join(root, file)\n                    try:\n                        if file.endswith('.csv'):\n                            holdings_df = pd.read_csv(file_path)\n                        else:\n                            with open(file_path, 'r') as f:\n                                holdings_df = json.load(f)\n                                if isinstance(holdings_df, list):\n                                    holdings_df = pd.DataFrame(holdings_df)\n\n                        results['number_of_holdings'] = len(holdings_df)\n                        results['holdings'] = holdings_df.to_dict('records')\n                    except Exception as e:\n                        pass\n\n    return results\n\n# Usage\nfund_data = analyze_fund('\u002Froot\u002F2025-q3\u002F', '0001234567-25-000123')\nprint(f\"AUM: ${fund_data['aum']}\")\nprint(f\"Number of holdings: {fund_data['number_of_holdings']}\")\n```\n\n### Step 3: Parse Holdings Data\n\nHoldings typically include:\n- **CUSIP** - Stock identifier\n- **Shares** - Number of shares held\n- **Value** - Market value of position\n- **Stock Name** - Company name\n\n```python\ndef get_holdings_summary(fund_data):\n    \"\"\"Get top holdings by value.\"\"\"\n    holdings_df = pd.DataFrame(fund_data['holdings'])\n\n    # Sort by value (look for value or market_value column)\n    value_col = None\n    for col in holdings_df.columns:\n        if 'value' in col.lower():\n            value_col = col\n            break\n\n    if value_col:\n        holdings_df = holdings_df.sort_values(by=value_col, ascending=False)\n\n    return holdings_df.head(10)  # Top 10\n```\n\n## Output Format\n\nReturns fund analysis object:\n```json\n{\n    \"accession_number\": \"0001234567-25-000123\",\n    \"fund_name\": \"Renaissance Technologies\",\n    \"aum\": 12345000000,\n    \"number_of_holdings\": 245,\n    \"holdings\": [\n        {\n            \"cusip\": \"000000001\",\n            \"name\": \"COMPANY NAME\",\n            \"shares\": 1000000,\n            \"value\": 50000000\n        }\n    ]\n}\n```\n\n## Key Fields to Extract\n\n| Field | Description | Source |\n|-------|-------------|--------|\n| AUM | Assets Under Management | COVERPAGE |\n| Number of Holdings | Count of stock positions | INFOTABLE\u002FHOLDINGS |\n| CUSIP | Stock identifier | INFOTABLE\u002FHOLDINGS |\n| Shares | Number of shares held | INFOTABLE\u002FHOLDINGS |\n| Value | Market value of position | INFOTABLE\u002FHOLDINGS |\n\n## Common Column Names\n\nThe 13F files may use varying column names:\n- AUM: \"AUM\", \"total_aum\", \"assets_under_management\"\n- Holdings: \"infotable_entry\", \"position\", \"holding\"\n- Value: \"value\", \"market_value\", \"value_of_shares\"\n\n## Tips\n\n- Check file structure first—CSV vs JSON\n- AUM may be in different units (thousands vs actual)\n- Holdings count = number of rows in INFOTABLE\n- Some funds may have partial holdings data in Q3\n",{"name":5,"description":7},"main","726e1f79b96b0cb3d729d0e55a1c847e0b5353ae","skills\u002Fb4-skill-creator-claude-haiku-4-5\u002Ffinancial-analysis\u002F13f-fund-analysis",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":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add cxcscmu\u002FSkillLearnBench --skill 13f-fund-analysis",{"tool":57,"command":58},"bunx","bunx skills add cxcscmu\u002FSkillLearnBench --skill 13f-fund-analysis",{"tool":60,"command":61},"pnpm","pnpm dlx skills add cxcscmu\u002FSkillLearnBench --skill 13f-fund-analysis","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fb4-skill-creator-claude-haiku-4-5\u002Ffinancial-analysis\u002F13f-fund-analysis\u002FSKILL.md",true,[],[66,82,105,122,142,154],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":75,"publishedAt":38},"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",[72],{"categoryNo":73,"categoryName":74,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000016","图像与多媒体",[76,77,78,79,80,81],"object counter","object","vision","computer","Computer Vision","image",{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":89,"publishedAt":38},"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",[88],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[90,91,92,93,94,95,96,97,98,99,100,101,102,103,104],"workflow","planning","planning workflow","travel","travel planning","travel planning workflow","structured","performing","plan","for","user","it","requirements","essential","itineraries",{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":111,"publishedAt":38},"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",[],[112,113,114,115,116,117,118,93,119,120,94,35,99,121,91],"search","tool","dataset","bundled dataset search tool","restaurants","Tools","up","look","flights","database",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":128,"publishedAt":38},"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",[],[129,130,131,99,132,133,134,135,136,137,138,139,35,140,141],"glm output","output","glm","tasks","metrics","json","basics","guidance","matching","verifier","processing","root","calibration",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":149,"publishedAt":38},"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",[148],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[150,141,131,130,136,135,132,151,152,99,153],"glm calibration","setup","companion","metric",{"skillNo":155,"name":156,"nameZh":6,"description":157,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":158,"categories":159,"keywords":160,"publishedAt":38},"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",[],[161,131,135,162,150,141,99,130,163,164,165,30,166,167,132],"glm basics","inspect","relevant","files","good","how","Evaluation"]