[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6HWPFAB97CP0TGJQG9FRE73":3,"skill-same:01M6HWPFAB97CP0TGJQG9FRE73":69},{"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":23,"publishedAt":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":41,"commitSha":42,"skillDirectory":43,"forksCount":44,"repositoryHtmlUrl":45,"repositoryHomepageUrl":6,"ownerHtmlUrl":46,"ownerBlogUrl":47,"ownerDescription":6,"updatedAt":48,"install":49,"resources":62},"01M6HWPFAB97CP0TGJQG9FRE73","pdf-gen-fallback-dee20c",null,"Fallback workflow for document generation when code sandbox returns opaque errors","HKUDS\u002FAgentPilot","HKUDS","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F118165258?v=4","01M6HW8VRNZP64G0P4MVJW2KKQ","✨Data Intelligence Lab@HKU✨","01M6HW8VWZVHBRHYH3T330PFWV",7993,"MIT","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Fbenchmarks\u002Fgdpval\u002Fskills\u002Fpdf-gen-fallback-dee20c\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35],"PDF","fallback","pdf gen fallback dee20c","sandbox","workflow","code","returns","document","generation","document generation","errors","for","2026-11-10 10:12:30",false,"---\nname: pdf-gen-fallback-dee20c\ndescription: Fallback workflow for document generation when code sandbox returns opaque errors\n---\n\n# PDF Generation Fallback Workflow\n\n## Purpose\n\nWhen `execute_code_sandbox` returns opaque or unhelpful errors during document\u002FPDF generation, use `run_shell` with direct `python -c` execution as a reliable alternative. This pattern includes library availability checks and explicit error handling.\n\n## When to Use\n\n- `execute_code_sandbox` fails with unclear error messages during document generation\n- PDF, report, or document creation tasks are failing unexpectedly\n- You need more control over the Python execution environment\n\n## Step-by-Step Instructions\n\n### 1. Check Library Availability\n\nBefore attempting generation, verify required libraries are installed:\n\n```shell\nrun_shell: python -c \"import reportlab; print('reportlab OK')\"\nrun_shell: python -c \"import fpdf; print('fpdf OK')\"\nrun_shell: python -c \"import PyPDF2; print('PyPDF2 OK')\"\n```\n\nIf a library is missing, install it:\n\n```shell\nrun_shell: pip install reportlab --quiet\n```\n\n### 2. Execute Generation via run_shell\n\nInstead of `execute_code_sandbox`, use `run_shell` with `python -c`:\n\n```shell\nrun_shell: python -c \"\nfrom reportlab.lib.pagesizes import letter\nfrom reportlab.pdfgen import canvas\nc = canvas.Canvas('output.pdf', pagesize=letter)\nc.drawString(100, 750, 'Document Content')\nc.save()\nprint('PDF generated successfully')\n\"\n```\n\n### 3. Handle Errors Explicitly\n\nWrap generation code with try\u002Fexcept and capture stderr:\n\n```shell\nrun_shell: python -c \"\nimport sys\ntry:\n    # Your generation code here\n    from reportlab.pdfgen import canvas\n    c = canvas.Canvas('output.pdf')\n    c.drawString(100, 750, 'Content')\n    c.save()\n    print('SUCCESS: PDF created')\n    sys.exit(0)\nexcept Exception as e:\n    print(f'ERROR: {type(e).__name__}: {e}', file=sys.stderr)\n    sys.exit(1)\n\" 2>&1\n```\n\n### 4. Verify Output File\n\nAfter generation, confirm the file was created:\n\n```shell\nrun_shell: ls -la output.pdf\nrun_shell: file output.pdf\n```\n\n### 5. Fallback Hierarchy\n\nIf the first approach fails, try alternatives in this order:\n\n1. `reportlab` - Full-featured PDF generation\n2. `fpdf` - Simpler PDF library\n3. `wkhtmltopdf` - HTML to PDF conversion\n4. Direct text\u002FMarkdown output as last resort\n\n## Example: Complete Workflow\n\n```shell\n# Step 1: Check library\nrun_shell: python -c \"import reportlab; print('OK')\"\n\n# Step 2: Generate with error handling\nrun_shell: python -c \"\nimport sys\ntry:\n    from reportlab.lib.pagesizes import letter\n    from reportlab.pdfgen import canvas\n    c = canvas.Canvas('report.pdf', pagesize=letter)\n    c.setTitle('Surveillance Report')\n    c.drawString(100, 750, 'Revised Surveillance Report')\n    c.drawString(100, 730, 'Summary: Key findings documented')\n    c.save()\n    print('SUCCESS')\nexcept Exception as e:\n    print(f'FAILED: {e}', file=sys.stderr)\n    sys.exit(1)\n\"\n\n# Step 3: Verify\nrun_shell: test -f report.pdf && echo 'File exists' || echo 'File missing'\n```\n\n## Troubleshooting\n\n| Issue | Solution |\n|-------|----------|\n| Module not found | `pip install \u003Cmodule> --quiet` |\n| Permission denied | Check output directory permissions |\n| Font errors | Use default fonts or install font packages |\n| Encoding issues | Specify encoding explicitly in string operations |\n\n## Best Practices\n\n- Always capture both stdout and stderr for debugging\n- Exit with proper status codes (0 for success, 1 for failure)\n- Keep generation code concise when using `python -c`\n- For complex generation, write a temporary `.py` file instead\n- Test library availability before attempting generation","# PDF Generation Fallback Workflow\n\n## Purpose\n\nWhen `execute_code_sandbox` returns opaque or unhelpful errors during document\u002FPDF generation, use `run_shell` with direct `python -c` execution as a reliable alternative. This pattern includes library availability checks and explicit error handling.\n\n## When to Use\n\n- `execute_code_sandbox` fails with unclear error messages during document generation\n- PDF, report, or document creation tasks are failing unexpectedly\n- You need more control over the Python execution environment\n\n## Step-by-Step Instructions\n\n### 1. Check Library Availability\n\nBefore attempting generation, verify required libraries are installed:\n\n```shell\nrun_shell: python -c \"import reportlab; print('reportlab OK')\"\nrun_shell: python -c \"import fpdf; print('fpdf OK')\"\nrun_shell: python -c \"import PyPDF2; print('PyPDF2 OK')\"\n```\n\nIf a library is missing, install it:\n\n```shell\nrun_shell: pip install reportlab --quiet\n```\n\n### 2. Execute Generation via run_shell\n\nInstead of `execute_code_sandbox`, use `run_shell` with `python -c`:\n\n```shell\nrun_shell: python -c \"\nfrom reportlab.lib.pagesizes import letter\nfrom reportlab.pdfgen import canvas\nc = canvas.Canvas('output.pdf', pagesize=letter)\nc.drawString(100, 750, 'Document Content')\nc.save()\nprint('PDF generated successfully')\n\"\n```\n\n### 3. Handle Errors Explicitly\n\nWrap generation code with try\u002Fexcept and capture stderr:\n\n```shell\nrun_shell: python -c \"\nimport sys\ntry:\n    # Your generation code here\n    from reportlab.pdfgen import canvas\n    c = canvas.Canvas('output.pdf')\n    c.drawString(100, 750, 'Content')\n    c.save()\n    print('SUCCESS: PDF created')\n    sys.exit(0)\nexcept Exception as e:\n    print(f'ERROR: {type(e).__name__}: {e}', file=sys.stderr)\n    sys.exit(1)\n\" 2>&1\n```\n\n### 4. Verify Output File\n\nAfter generation, confirm the file was created:\n\n```shell\nrun_shell: ls -la output.pdf\nrun_shell: file output.pdf\n```\n\n### 5. Fallback Hierarchy\n\nIf the first approach fails, try alternatives in this order:\n\n1. `reportlab` - Full-featured PDF generation\n2. `fpdf` - Simpler PDF library\n3. `wkhtmltopdf` - HTML to PDF conversion\n4. Direct text\u002FMarkdown output as last resort\n\n## Example: Complete Workflow\n\n```shell\n# Step 1: Check library\nrun_shell: python -c \"import reportlab; print('OK')\"\n\n# Step 2: Generate with error handling\nrun_shell: python -c \"\nimport sys\ntry:\n    from reportlab.lib.pagesizes import letter\n    from reportlab.pdfgen import canvas\n    c = canvas.Canvas('report.pdf', pagesize=letter)\n    c.setTitle('Surveillance Report')\n    c.drawString(100, 750, 'Revised Surveillance Report')\n    c.drawString(100, 730, 'Summary: Key findings documented')\n    c.save()\n    print('SUCCESS')\nexcept Exception as e:\n    print(f'FAILED: {e}', file=sys.stderr)\n    sys.exit(1)\n\"\n\n# Step 3: Verify\nrun_shell: test -f report.pdf && echo 'File exists' || echo 'File missing'\n```\n\n## Troubleshooting\n\n| Issue | Solution |\n|-------|----------|\n| Module not found | `pip install \u003Cmodule> --quiet` |\n| Permission denied | Check output directory permissions |\n| Font errors | Use default fonts or install font packages |\n| Encoding issues | Specify encoding explicitly in string operations |\n\n## Best Practices\n\n- Always capture both stdout and stderr for debugging\n- Exit with proper status codes (0 for success, 1 for failure)\n- Keep generation code concise when using `python -c`\n- For complex generation, write a temporary `.py` file instead\n- Test library availability before attempting generation",{"name":5,"description":7},"main","6b84b0689ca0d9e7b1e4061188ff6b60758e0f8a","openspace\u002Fbenchmarks\u002Fgdpval\u002Fskills\u002Fpdf-gen-fallback-dee20c",940,"https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot","https:\u002F\u002Fgithub.com\u002FHKUDS","https:\u002F\u002Fsites.google.com\u002Fview\u002Fchaoh","2026-11-06 23:04:01",{"source":8,"skillName":5,"commands":50,"prompt":60,"zipAvailable":61},[51,54,57],{"tool":52,"command":53},"npx","npx skills add HKUDS\u002FAgentPilot --skill pdf-gen-fallback-dee20c",{"tool":55,"command":56},"bunx","bunx skills add HKUDS\u002FAgentPilot --skill pdf-gen-fallback-dee20c",{"tool":58,"command":59},"pnpm","pnpm dlx skills add HKUDS\u002FAgentPilot --skill pdf-gen-fallback-dee20c","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Fbenchmarks\u002Fgdpval\u002Fskills\u002Fpdf-gen-fallback-dee20c\u002FSKILL.md",true,[63],{"path":64,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":67,"sourceHtmlUrl":68},".skill_id","OTHER","其他",37,"https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Fbenchmarks\u002Fgdpval\u002Fskills\u002Fpdf-gen-fallback-dee20c\u002F.skill_id",[70,90,109,132,155,177],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":36},"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",[],[72,77,78,79,80,81,82,83,84,85,86,87,88,89],"prepare","requests","with","missing","installation","rsi","up","use","user","work","SET","run","experiments",{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":96,"publishedAt":36},"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",[],[92,97,98,99,100,101,102,103,104,105,106,107,108],"memory","review","auto","openspace","changes","facts","detect","entries","local","conflicts","stale","duplicates",{"skillNo":110,"name":111,"nameZh":6,"description":112,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":118,"publishedAt":36},"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",[115],{"categoryNo":116,"categoryName":117,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[119,120,121,100,122,123,124,125,126,127,128,129,130,131],"skill discovery","discovery","reusable","step by step","tokens","packages","help","cloud","reliability","capabilities","browse","search","Tools",{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":136,"categories":137,"keywords":139,"publishedAt":36},"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",[138],{"categoryNo":116,"categoryName":117,"taxonomyType":21,"taxonomyTypeDesc":22},[140,141,142,100,143,144,145,146,147,121,99,84,148,149,150,35,151,152,153,154],"delegate","task","delegate task","time","improve","desktop automation","worker","community","autonomous","tool","stack","share","tasks","automation","MCP",{"skillNo":156,"name":157,"nameZh":6,"description":158,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":159,"categories":160,"keywords":161,"publishedAt":36},"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",[],[162,163,164,165,166,167,168,169,170,171,172,173,174,175,35,34,176],"write special chars ts check","write","check","type","files","filters","only","template","file","python","typescript","output","Existing","type-checking","script",{"skillNo":178,"name":179,"nameZh":6,"description":180,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":181,"categories":182,"keywords":183,"publishedAt":36},"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",[],[184,185,163,79,35,176,186,187,188,189,190,169,170,191,192,171],"write special chars readback","readback","helper","post","via","scripts","read","verification","cleanup"]