[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6HWPAPNTBVMJKPX8TYW1ZS3":3,"skill-same:01M6HWPAPNTBVMJKPX8TYW1ZS3":70},{"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":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":42,"commitSha":43,"skillDirectory":44,"forksCount":45,"repositoryHtmlUrl":46,"repositoryHomepageUrl":6,"ownerHtmlUrl":47,"ownerBlogUrl":48,"ownerDescription":6,"updatedAt":49,"install":50,"resources":63},"01M6HWPAPNTBVMJKPX8TYW1ZS3","pdf-gen-fallback-501bcc",null,"Fallback pattern for PDF\u002Fdocument generation when execute_code_sandbox fails with opaque errors","HKUDS\u002FAgentPilot","HKUDS","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F118165258?v=4","01M6HW8VRNZP64G0P4MVJW2KKQ","✨Data Intelligence Lab@HKU✨","01M6HW8VWZVHBRHYH3T330PFWV",7996,"MIT","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Fbenchmarks\u002Fgdpval\u002Fskills\u002Fpdf-gen-fallback-501bcc\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,36],"PDF","fallback","pdf gen fallback 501bcc","sandbox","code","execute","document","pattern","generation","document generation","with","errors","for","2026-11-10 10:12:30",false,"---\nname: pdf-gen-fallback-501bcc\ndescription: Fallback pattern for PDF\u002Fdocument generation when execute_code_sandbox fails with opaque errors\n---\n\n# PDF Generation Fallback Pattern\n\n## When to Use\n\nApply this pattern when `execute_code_sandbox` returns opaque or unhelpful errors during PDF, DOCX, or other document generation tasks. This fallback uses `run_shell` with direct `python -c` execution for more reliable document generation.\n\n## Step-by-Step Procedure\n\n### 1. Detect Sandbox Failure\n\nIf `execute_code_sandbox` fails during document generation with errors like:\n- Opaque runtime errors\n- Missing library errors that don't resolve with import statements\n- Silent failures with no output\n\nProceed to the fallback approach.\n\n### 2. Check Library Availability\n\nBefore generating documents, verify the required Python libraries are available in the shell environment:\n\n```bash\npython -c \"import reportlab; print('OK')\" 2>&1 || echo \"reportlab missing\"\npython -c \"import fpdf; print('OK')\" 2>&1 || echo \"fpdf missing\"\npython -c \"import pypdf; print('OK')\" 2>&1 || echo \"pypdf missing\"\npython -c \"import docx; print('OK')\" 2>&1 || echo \"python-docx missing\"\n```\n\n### 3. Install Missing Libraries (If Needed)\n\nIf a library is missing, install it via pip:\n\n```bash\npip install reportlab fpdf2 pypdf python-docx\n```\n\n### 4. Execute Document Generation via run_shell\n\nUse `run_shell` with `python -c` and multi-line strings for document generation:\n\n```bash\npython -c \"\nfrom reportlab.lib.pagesizes import letter\nfrom reportlab.pdfgen import canvas\n\nc = canvas.Canvas('output.pdf', pagesize=letter)\nc.drawString(100, 750, 'Document Title')\nc.drawString(100, 700, 'Content here')\nc.save()\nprint('SUCCESS: PDF created')\n\"\n```\n\nFor DOCX files:\n\n```bash\npython -c \"\nfrom docx import Document\n\ndoc = Document()\ndoc.add_heading('Document Title', 0)\ndoc.add_paragraph('Content here')\ndoc.save('output.docx')\nprint('SUCCESS: DOCX created')\n\"\n```\n\n### 5. Include Explicit Error Handling\n\nAlways wrap generation code with try\u002Fexcept for clear error reporting:\n\n```bash\npython -c \"\ntry:\n    from reportlab.lib.pagesizes import letter\n    from reportlab.pdfgen import canvas\n    \n    c = canvas.Canvas('output.pdf', pagesize=letter)\n    c.drawString(100, 750, 'Content')\n    c.save()\n    print('SUCCESS')\nexcept ImportError as e:\n    print(f'MISSING_LIBRARY: {e}')\n    exit(1)\nexcept Exception as e:\n    print(f'GENERATION_ERROR: {e}')\n    exit(1)\n\"\n```\n\n### 6. Verify Output File\n\nAfter generation, confirm the file was created and is valid:\n\n```bash\nls -la output.pdf\nfile output.pdf\ntest -f output.pdf && echo \"File exists\" || echo \"File missing\"\n```\n\n## Complete Example Workflow\n\n```bash\n# Step 1: Check and install library\npython -c \"import reportlab\" 2>&1 || pip install reportlab\n\n# Step 2: Generate PDF with error handling\npython -c \"\ntry:\n    from reportlab.lib.pagesizes import letter\n    from reportlab.pdfgen import canvas\n    \n    c = canvas.Canvas('report.pdf', pagesize=letter)\n    c.setFont('Helvetica', 12)\n    c.drawString(100, 750, 'Surveillance Report')\n    c.drawString(100, 700, 'Generated via fallback pattern')\n    c.save()\n    print('SUCCESS: report.pdf created')\nexcept Exception as e:\n    print(f'ERROR: {e}')\n    exit(1)\n\"\n\n# Step 3: Verify\ntest -f report.pdf && echo \"Verification: PASSED\" || echo \"Verification: FAILED\"\n```\n\n## Why This Works\n\n- **Direct Execution**: `run_shell` with `python -c` bypasses sandbox limitations that may affect document generation libraries\n- **Explicit Errors**: Try\u002Fexcept blocks provide actionable error messages instead of opaque failures\n- **Environment Control**: Shell execution gives more control over the Python environment and library paths\n- **Verification**: Explicit file checks confirm success rather than assuming it\n\n## Common Libraries\n\n| Library | Purpose | Import Statement |\n|---------|---------|------------------|\n| reportlab | PDF generation | `from reportlab.pdfgen import canvas` |\n| fpdf2 | PDF generation | `from fpdf import FPDF` |\n| pypdf | PDF manipulation | `from pypdf import PdfReader` |\n| python-docx | DOCX generation | `from docx import Document` |\n| xlsxwriter | Excel files | `import xlsxwriter` |","# PDF Generation Fallback Pattern\n\n## When to Use\n\nApply this pattern when `execute_code_sandbox` returns opaque or unhelpful errors during PDF, DOCX, or other document generation tasks. This fallback uses `run_shell` with direct `python -c` execution for more reliable document generation.\n\n## Step-by-Step Procedure\n\n### 1. Detect Sandbox Failure\n\nIf `execute_code_sandbox` fails during document generation with errors like:\n- Opaque runtime errors\n- Missing library errors that don't resolve with import statements\n- Silent failures with no output\n\nProceed to the fallback approach.\n\n### 2. Check Library Availability\n\nBefore generating documents, verify the required Python libraries are available in the shell environment:\n\n```bash\npython -c \"import reportlab; print('OK')\" 2>&1 || echo \"reportlab missing\"\npython -c \"import fpdf; print('OK')\" 2>&1 || echo \"fpdf missing\"\npython -c \"import pypdf; print('OK')\" 2>&1 || echo \"pypdf missing\"\npython -c \"import docx; print('OK')\" 2>&1 || echo \"python-docx missing\"\n```\n\n### 3. Install Missing Libraries (If Needed)\n\nIf a library is missing, install it via pip:\n\n```bash\npip install reportlab fpdf2 pypdf python-docx\n```\n\n### 4. Execute Document Generation via run_shell\n\nUse `run_shell` with `python -c` and multi-line strings for document generation:\n\n```bash\npython -c \"\nfrom reportlab.lib.pagesizes import letter\nfrom reportlab.pdfgen import canvas\n\nc = canvas.Canvas('output.pdf', pagesize=letter)\nc.drawString(100, 750, 'Document Title')\nc.drawString(100, 700, 'Content here')\nc.save()\nprint('SUCCESS: PDF created')\n\"\n```\n\nFor DOCX files:\n\n```bash\npython -c \"\nfrom docx import Document\n\ndoc = Document()\ndoc.add_heading('Document Title', 0)\ndoc.add_paragraph('Content here')\ndoc.save('output.docx')\nprint('SUCCESS: DOCX created')\n\"\n```\n\n### 5. Include Explicit Error Handling\n\nAlways wrap generation code with try\u002Fexcept for clear error reporting:\n\n```bash\npython -c \"\ntry:\n    from reportlab.lib.pagesizes import letter\n    from reportlab.pdfgen import canvas\n    \n    c = canvas.Canvas('output.pdf', pagesize=letter)\n    c.drawString(100, 750, 'Content')\n    c.save()\n    print('SUCCESS')\nexcept ImportError as e:\n    print(f'MISSING_LIBRARY: {e}')\n    exit(1)\nexcept Exception as e:\n    print(f'GENERATION_ERROR: {e}')\n    exit(1)\n\"\n```\n\n### 6. Verify Output File\n\nAfter generation, confirm the file was created and is valid:\n\n```bash\nls -la output.pdf\nfile output.pdf\ntest -f output.pdf && echo \"File exists\" || echo \"File missing\"\n```\n\n## Complete Example Workflow\n\n```bash\n# Step 1: Check and install library\npython -c \"import reportlab\" 2>&1 || pip install reportlab\n\n# Step 2: Generate PDF with error handling\npython -c \"\ntry:\n    from reportlab.lib.pagesizes import letter\n    from reportlab.pdfgen import canvas\n    \n    c = canvas.Canvas('report.pdf', pagesize=letter)\n    c.setFont('Helvetica', 12)\n    c.drawString(100, 750, 'Surveillance Report')\n    c.drawString(100, 700, 'Generated via fallback pattern')\n    c.save()\n    print('SUCCESS: report.pdf created')\nexcept Exception as e:\n    print(f'ERROR: {e}')\n    exit(1)\n\"\n\n# Step 3: Verify\ntest -f report.pdf && echo \"Verification: PASSED\" || echo \"Verification: FAILED\"\n```\n\n## Why This Works\n\n- **Direct Execution**: `run_shell` with `python -c` bypasses sandbox limitations that may affect document generation libraries\n- **Explicit Errors**: Try\u002Fexcept blocks provide actionable error messages instead of opaque failures\n- **Environment Control**: Shell execution gives more control over the Python environment and library paths\n- **Verification**: Explicit file checks confirm success rather than assuming it\n\n## Common Libraries\n\n| Library | Purpose | Import Statement |\n|---------|---------|------------------|\n| reportlab | PDF generation | `from reportlab.pdfgen import canvas` |\n| fpdf2 | PDF generation | `from fpdf import FPDF` |\n| pypdf | PDF manipulation | `from pypdf import PdfReader` |\n| python-docx | DOCX generation | `from docx import Document` |\n| xlsxwriter | Excel files | `import xlsxwriter` |",{"name":5,"description":7},"main","6b84b0689ca0d9e7b1e4061188ff6b60758e0f8a","openspace\u002Fbenchmarks\u002Fgdpval\u002Fskills\u002Fpdf-gen-fallback-501bcc",941,"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":51,"prompt":61,"zipAvailable":62},[52,55,58],{"tool":53,"command":54},"npx","npx skills add HKUDS\u002FAgentPilot --skill pdf-gen-fallback-501bcc",{"tool":56,"command":57},"bunx","bunx skills add HKUDS\u002FAgentPilot --skill pdf-gen-fallback-501bcc",{"tool":59,"command":60},"pnpm","pnpm dlx skills add HKUDS\u002FAgentPilot --skill pdf-gen-fallback-501bcc","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Fbenchmarks\u002Fgdpval\u002Fskills\u002Fpdf-gen-fallback-501bcc\u002FSKILL.md",true,[64],{"path":65,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":68,"sourceHtmlUrl":69},".skill_id","OTHER","其他",37,"https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Fbenchmarks\u002Fgdpval\u002Fskills\u002Fpdf-gen-fallback-501bcc\u002F.skill_id",[71,90,109,132,155,177],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":77,"publishedAt":37},"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",[],[73,78,79,34,80,81,82,83,84,85,86,87,88,89],"prepare","requests","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":37},"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":37},"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":37},"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,36,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":37},"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,36,35,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":37},"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,34,36,176,186,187,188,189,190,169,170,191,192,171],"write special chars readback","readback","helper","post","via","scripts","read","verification","cleanup"]