[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6HXT5J7N94WW1WCF4ZWN2YT":3,"skill-same:01M6HXT5J7N94WW1WCF4ZWN2YT":73},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":28,"publishedAt":40,"linkOnly":41,"markdownContent":42,"markdownBody":43,"frontMatter":44,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":48,"repositoryHtmlUrl":49,"repositoryHomepageUrl":6,"ownerHtmlUrl":50,"ownerBlogUrl":51,"ownerDescription":6,"updatedAt":52,"install":53,"resources":66},"01M6HXT5J7N94WW1WCF4ZWN2YT","pptx-validation-fallback",null,"Validate PowerPoint files using python-pptx when read_file fails","HKUDS\u002FAgentPilot","HKUDS","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F118165258?v=4","01M6HW8VRNZP64G0P4MVJW2KKQ","✨Data Intelligence Lab@HKU✨","01M6HW8VWZVHBRHYH3T330PFWV",8029,"MIT","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Flegacy\u002Fv1\u002Fgdpval_bench\u002Fskills\u002Fpptx-validation-fallback\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000003","演示文稿","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000034","行政与办公人员","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39],"pptx","validation","fallback","pptx validation fallback","python","validate","powerpoint","file","read","files","python-pptx","2026-11-10 10:12:30",false,"---\nname: pptx-validation-fallback\ndescription: Validate PowerPoint files using python-pptx when read_file fails\n---\n\n# PowerPoint Validation Fallback\n\n## When to Use\n\nUse this skill when `read_file` fails to properly read or validate PowerPoint (.pptx) files. This provides a reliable alternative for verifying presentation contents including slide count, titles, and structure.\n\n## Procedure\n\n### Step 1: Check if read_file Failed\n\nIf `read_file` with filetype `pptx` returns errors, incomplete content, or cannot extract slide information, proceed to the fallback method.\n\n### Step 2: Use run_shell with python-pptx\n\nExecute Python code via `run_shell` using the `python-pptx` library to inspect the presentation:\n\n```python\nfrom pptx import Presentation\n\n# Load the presentation\nprs = Presentation('path\u002Fto\u002Ffile.pptx')\n\n# Get basic info\nslide_count = len(prs.slides)\nprint(f\"Total slides: {slide_count}\")\n\n# Extract slide titles\nfor i, slide in enumerate(prs.slides):\n    if slide.shapes.title:\n        title = slide.shapes.title.text\n        print(f\"Slide {i+1}: {title}\")\n    else:\n        print(f\"Slide {i+1}: [No title]\")\n```\n\n### Step 3: Validate Structure\n\nCheck that the presentation meets expected requirements:\n\n```python\nfrom pptx import Presentation\n\nprs = Presentation('path\u002Fto\u002Ffile.pptx')\n\n# Validation checks\nexpected_slides = 10  # Adjust based on requirements\nactual_slides = len(prs.slides)\n\nif actual_slides >= expected_slides:\n    print(f\"✓ Slide count OK: {actual_slides} slides\")\nelse:\n    print(f\"✗ Insufficient slides: {actual_slides}\u002F{expected_slides}\")\n\n# Check for content on each slide\nfor i, slide in enumerate(prs.slides):\n    has_title = slide.shapes.title is not None\n    has_content = len(slide.shapes) > 1\n    print(f\"Slide {i+1}: title={has_title}, content={has_content}\")\n```\n\n### Step 4: Extract Detailed Content (Optional)\n\nFor deeper validation, extract text content from all shapes:\n\n```python\nfrom pptx import Presentation\n\nprs = Presentation('path\u002Fto\u002Ffile.pptx')\n\nfor i, slide in enumerate(prs.slides):\n    print(f\"\\n=== Slide {i+1} ===\")\n    for shape in slide.shapes:\n        if hasattr(shape, \"text\") and shape.text.strip():\n            print(shape.text)\n```\n\n## Expected Output\n\nSuccessful validation should provide:\n- Confirmed slide count\n- List of slide titles\n- Verification that each slide has expected content structure\n\n## Common Use Cases\n\n- Verifying generated presentations have correct number of slides\n- Confirming slide titles match required topics\n- Validating presentation structure before delivery\n- Debugging why read_file cannot parse a .pptx file\n\n## Dependencies\n\nThe `python-pptx` library must be available in the execution environment. Most Python environments support it via pip:\n\n```bash\npip install python-pptx\n```","# PowerPoint Validation Fallback\n\n## When to Use\n\nUse this skill when `read_file` fails to properly read or validate PowerPoint (.pptx) files. This provides a reliable alternative for verifying presentation contents including slide count, titles, and structure.\n\n## Procedure\n\n### Step 1: Check if read_file Failed\n\nIf `read_file` with filetype `pptx` returns errors, incomplete content, or cannot extract slide information, proceed to the fallback method.\n\n### Step 2: Use run_shell with python-pptx\n\nExecute Python code via `run_shell` using the `python-pptx` library to inspect the presentation:\n\n```python\nfrom pptx import Presentation\n\n# Load the presentation\nprs = Presentation('path\u002Fto\u002Ffile.pptx')\n\n# Get basic info\nslide_count = len(prs.slides)\nprint(f\"Total slides: {slide_count}\")\n\n# Extract slide titles\nfor i, slide in enumerate(prs.slides):\n    if slide.shapes.title:\n        title = slide.shapes.title.text\n        print(f\"Slide {i+1}: {title}\")\n    else:\n        print(f\"Slide {i+1}: [No title]\")\n```\n\n### Step 3: Validate Structure\n\nCheck that the presentation meets expected requirements:\n\n```python\nfrom pptx import Presentation\n\nprs = Presentation('path\u002Fto\u002Ffile.pptx')\n\n# Validation checks\nexpected_slides = 10  # Adjust based on requirements\nactual_slides = len(prs.slides)\n\nif actual_slides >= expected_slides:\n    print(f\"✓ Slide count OK: {actual_slides} slides\")\nelse:\n    print(f\"✗ Insufficient slides: {actual_slides}\u002F{expected_slides}\")\n\n# Check for content on each slide\nfor i, slide in enumerate(prs.slides):\n    has_title = slide.shapes.title is not None\n    has_content = len(slide.shapes) > 1\n    print(f\"Slide {i+1}: title={has_title}, content={has_content}\")\n```\n\n### Step 4: Extract Detailed Content (Optional)\n\nFor deeper validation, extract text content from all shapes:\n\n```python\nfrom pptx import Presentation\n\nprs = Presentation('path\u002Fto\u002Ffile.pptx')\n\nfor i, slide in enumerate(prs.slides):\n    print(f\"\\n=== Slide {i+1} ===\")\n    for shape in slide.shapes:\n        if hasattr(shape, \"text\") and shape.text.strip():\n            print(shape.text)\n```\n\n## Expected Output\n\nSuccessful validation should provide:\n- Confirmed slide count\n- List of slide titles\n- Verification that each slide has expected content structure\n\n## Common Use Cases\n\n- Verifying generated presentations have correct number of slides\n- Confirming slide titles match required topics\n- Validating presentation structure before delivery\n- Debugging why read_file cannot parse a .pptx file\n\n## Dependencies\n\nThe `python-pptx` library must be available in the execution environment. Most Python environments support it via pip:\n\n```bash\npip install python-pptx\n```",{"name":5,"description":7},"main","6b84b0689ca0d9e7b1e4061188ff6b60758e0f8a","openspace\u002Flegacy\u002Fv1\u002Fgdpval_bench\u002Fskills\u002Fpptx-validation-fallback",944,"https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot","https:\u002F\u002Fgithub.com\u002FHKUDS","https:\u002F\u002Fsites.google.com\u002Fview\u002Fchaoh","2026-11-12 22:26:39",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add HKUDS\u002FAgentPilot --skill pptx-validation-fallback",{"tool":59,"command":60},"bunx","bunx skills add HKUDS\u002FAgentPilot --skill pptx-validation-fallback",{"tool":62,"command":63},"pnpm","pnpm dlx skills add HKUDS\u002FAgentPilot --skill pptx-validation-fallback","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Flegacy\u002Fv1\u002Fgdpval_bench\u002Fskills\u002Fpptx-validation-fallback\u002FSKILL.md",true,[67],{"path":68,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":71,"sourceHtmlUrl":72},".skill_id","OTHER","其他",38,"https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Flegacy\u002Fv1\u002Fgdpval_bench\u002Fskills\u002Fpptx-validation-fallback\u002F.skill_id",[74,94,113,136,160,180],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":80,"publishedAt":40},"01M6HYB297NDABRERJRVG0K8R0","agentpilot","Set up AgentPilot and use its single entry to prepare missing inputs and run configured RSI experiments. Use when the user requests AgentPilot installation or work with AgentPilot.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fplugins\u002Fagentpilot\u002Fskills\u002Fagentpilot\u002FSKILL.md",[],[76,81,82,83,84,85,86,87,88,89,90,91,92,93],"prepare","requests","with","missing","installation","rsi","up","use","user","work","SET","run","experiments",{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":40},"01M6HYAYWXTTE1J7DJM0MFNQ4H","remember","Review auto-memory entries and propose promotions to OPENSPACE.md, OPENSPACE.local.md, or retained auto-memory topics; detect duplicates, stale facts, conflicts, and ambiguous entries before making changes.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Fopenspace\u002Fskills\u002Fremember\u002FSKILL.md",[],[96,101,102,103,104,105,106,107,108,109,110,111,112],"memory","review","auto","openspace","changes","facts","detect","entries","local","conflicts","stale","duplicates",{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":122,"publishedAt":40},"01M6HYAVMPM4SBDV60R2B5HPV8","skill-discovery","Search reusable OpenSpace skills locally, and browse cloud packages step by step when a cloud skill may help. Reusing proven skills saves tokens, improves reliability, and extends your capabilities beyond built-in tools.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Fopenspace\u002Fhost_skills\u002Fskill-discovery\u002FSKILL.md",[119],{"categoryNo":120,"categoryName":121,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[123,124,125,104,126,127,128,129,130,131,132,133,134,135],"skill discovery","discovery","reusable","step by step","tokens","packages","help","cloud","reliability","capabilities","browse","search","Tools",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":143,"publishedAt":40},"01M6HYAR811B3RB0M50RBEDGN6","delegate-task","Delegate tasks to OpenSpace — a full-stack autonomous worker for coding, DevOps, web research, and desktop automation, backed by an extensive MCP tool and skill library. Skills auto-improve through use, reducing token consumption over time. A cloud community lets agents share and collectively evolve reusable skills.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Fopenspace\u002Fhost_skills\u002Fdelegate-task\u002FSKILL.md",[142],{"categoryNo":120,"categoryName":121,"taxonomyType":21,"taxonomyTypeDesc":22},[144,145,146,104,147,148,149,150,151,125,103,88,152,153,154,155,156,157,158,159],"delegate","task","delegate task","time","improve","desktop automation","worker","community","autonomous","tool","stack","for","share","tasks","automation","MCP",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":166,"publishedAt":40},"01M6HYAM9FSGV6E52AYENDQXYH","write-special-chars-ts-check","Workaround for write_file failures caused by special characters (apostrophes, backticks, template literals) using a Python heredoc script, plus a reliable TypeScript type-checking step that filters output to only the newly-written files to avoid being misled by pre-existing errors.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Flegacy\u002Fv1\u002Fshowcase\u002Fskills\u002Fwrite-special-chars-ts-check\u002FSKILL.md",[],[167,168,169,170,38,171,172,173,36,33,174,175,176,177,155,178,179],"write special chars ts check","write","check","type","filters","only","template","typescript","output","Existing","type-checking","errors","script",{"skillNo":181,"name":182,"nameZh":6,"description":183,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":184,"categories":185,"keywords":186,"publishedAt":40},"01M6HYAH05HGV7SVWSVR8PJRQD","write-special-chars-readback","Workaround for write_file failures caused by special characters (apostrophes, backticks, template literals) using a Python heredoc script, with mandatory post-write verification via read_file and cleanup of \u002Ftmp helper scripts.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Flegacy\u002Fv1\u002Fshowcase\u002Fskills\u002Fwrite-special-chars-readback\u002FSKILL.md",[],[187,188,168,83,155,179,189,190,191,192,37,173,36,193,194,33],"write special chars readback","readback","helper","post","via","scripts","verification","cleanup"]