[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KJ7ZCPDG8JTK7SGGMT0ZPQ":3,"skill-same:01M6KJ7ZCPDG8JTK7SGGMT0ZPQ":50},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":14,"categories":15,"keywords":21,"publishedAt":24,"linkOnly":25,"markdownContent":26,"markdownBody":26,"frontMatter":27,"refName":28,"commitSha":29,"skillDirectory":30,"forksCount":31,"repositoryHtmlUrl":32,"repositoryHomepageUrl":33,"ownerHtmlUrl":34,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":35,"install":36,"resources":49},"01M6KJ7ZCPDG8JTK7SGGMT0ZPQ","run1_skill-1",null,"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\u002Fb3-teacher-feedback-gemini-3.1-pro-preview\u002Fschedule-planning\u002Frun1_skill-1\u002FSKILL.md",[16],{"categoryNo":17,"categoryName":18,"taxonomyType":19,"taxonomyTypeDesc":20},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[22,23],"skill 1","run1 skill 1","2026-11-10 10:12:30",false,"[SKILL]\n---\nname: pymupdf-visual-calendar-parsing\ndescription: Parse visual PDF calendars by extracting visual elements (horizontal lines, colored event blocks) and mapping their vertical Y-coordinates to time values using PyMuPDF (fitz).\n---\n\nWhen parsing visual calendars in PDF format, events and grid lines are typically drawn as vector graphics rather than plain text. You can use PyMuPDF (`fitz`) to extract text (for the timeline axis labels) and vector drawings (rectangles representing events, and lines representing time intervals).\n\n### 1. Extracting Drawings (Lines and Rectangles)\nUse `page.get_drawings()` to extract all vector shapes. You can identify horizontal grid lines and colored event blocks based on the drawing item properties.\n\n```python\nimport fitz\n\ndoc = fitz.open(\"calendar.pdf\")\npage = doc[0]\ndrawings = page.get_drawings()\n\nhorizontal_lines = set()\nevent_blocks = []\n\nfor d in drawings:\n    # Colors are typically represented as RGB tuples\u002Flists like [0.0, 0.0, 1.0] for blue\n    fill_color = d.get(\"fill\") \n    \n    for item in d[\"items\"]:\n        if item[0] == \"l\": # It's a line\n            p1, p2 = item[1], item[2]\n            if p1.y == p2.y: # It's a horizontal line\n                horizontal_lines.add(p1.y)\n        elif item[0] == \"re\": # It's a rectangle\n            rect = item[1] # A fitz.Rect object\n            event_blocks.append({\n                \"y0\": rect.y0,\n                \"y1\": rect.y1,\n                \"color\": fill_color\n            })\n\n# Sort lines from top to bottom\nsorted_y_lines = sorted(list(horizontal_lines))\n```\n\n### 2. Extracting Timeline Text Labels\nYou must parse text from the PDF to identify the time values corresponding to the axis, and find their vertical coordinates.\n\n```python\ntext_dict = page.get_text(\"dict",{},"main","726e1f79b96b0cb3d729d0e55a1c847e0b5353ae","skills\u002Fb3-teacher-feedback-gemini-3.1-pro-preview\u002Fschedule-planning\u002Frun1_skill-1",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":7,"skillName":5,"commands":37,"prompt":47,"zipAvailable":48},[38,41,44],{"tool":39,"command":40},"npx","npx skills add cxcscmu\u002FSkillLearnBench --skill run1_skill-1",{"tool":42,"command":43},"bunx","bunx skills add cxcscmu\u002FSkillLearnBench --skill run1_skill-1",{"tool":45,"command":46},"pnpm","pnpm dlx skills add cxcscmu\u002FSkillLearnBench --skill run1_skill-1","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fb3-teacher-feedback-gemini-3.1-pro-preview\u002Fschedule-planning\u002Frun1_skill-1\u002FSKILL.md",true,[],[51,67,90,108,128,140],{"skillNo":52,"name":53,"nameZh":6,"description":54,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":55,"categories":56,"keywords":60,"publishedAt":24},"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",[57],{"categoryNo":58,"categoryName":59,"taxonomyType":19,"taxonomyTypeDesc":20},"01JBSEEDCAT000000000000016","图像与多媒体",[61,62,63,64,65,66],"object counter","object","vision","computer","Computer Vision","image",{"skillNo":68,"name":69,"nameZh":6,"description":70,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":74,"publishedAt":24},"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",[73],{"categoryNo":17,"categoryName":18,"taxonomyType":19,"taxonomyTypeDesc":20},[75,76,77,78,79,80,81,82,83,84,85,86,87,88,89],"workflow","planning","planning workflow","travel","travel planning","travel planning workflow","structured","performing","plan","for","user","it","requirements","essential","itineraries",{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":96,"publishedAt":24},"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",[],[97,98,99,100,101,102,103,78,104,105,79,106,84,107,76],"search","tool","dataset","bundled dataset search tool","restaurants","Tools","up","look","flights","you","database",{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":114,"publishedAt":24},"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",[],[115,116,117,84,118,119,120,121,122,123,124,125,106,126,127],"glm output","output","glm","tasks","metrics","json","basics","guidance","matching","verifier","processing","root","calibration",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":135,"publishedAt":24},"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",[134],{"categoryNo":17,"categoryName":18,"taxonomyType":19,"taxonomyTypeDesc":20},[136,127,117,116,122,121,118,137,138,84,139],"glm calibration","setup","companion","metric",{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":144,"categories":145,"keywords":146,"publishedAt":24},"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",[],[147,117,121,148,136,127,84,116,149,150,151,152,153,154,118],"glm basics","inspect","relevant","files","good","use","how","Evaluation"]