pdf-gen-fallback-501bcc
Fallback pattern for PDF/document generation when execute_code_sandbox fails with opaque errors
- License 许可
- MIT
- 所属仓库
- HKUDS/AgentPilot
- 最近更新
- 2026-11-12
- Stars
- ★ 8.0k
- Forks
- 941
01 前言 Front Matter
- name
- pdf-gen-fallback-501bcc
- description
- Fallback pattern for PDF/document generation when execute_code_sandbox fails with opaque errors
02 资源文件 1
- 其他.skill_id37 B
03 SKILL.md 正文
PDF Generation Fallback Pattern
When to Use
Apply 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.
Step-by-Step Procedure
1. Detect Sandbox Failure
If execute_code_sandbox fails during document generation with errors like:
- Opaque runtime errors
- Missing library errors that don't resolve with import statements
- Silent failures with no output
Proceed to the fallback approach.
2. Check Library Availability
Before generating documents, verify the required Python libraries are available in the shell environment:
python -c "import reportlab; print('OK')" 2>&1 || echo "reportlab missing"
python -c "import fpdf; print('OK')" 2>&1 || echo "fpdf missing"
python -c "import pypdf; print('OK')" 2>&1 || echo "pypdf missing"
python -c "import docx; print('OK')" 2>&1 || echo "python-docx missing"
3. Install Missing Libraries (If Needed)
If a library is missing, install it via pip:
pip install reportlab fpdf2 pypdf python-docx
4. Execute Document Generation via run_shell
Use run_shell with python -c and multi-line strings for document generation:
python -c "
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
c = canvas.Canvas('output.pdf', pagesize=letter)
c.drawString(100, 750, 'Document Title')
c.drawString(100, 700, 'Content here')
c.save()
print('SUCCESS: PDF created')
"
For DOCX files:
python -c "
from docx import Document
doc = Document()
doc.add_heading('Document Title', 0)
doc.add_paragraph('Content here')
doc.save('output.docx')
print('SUCCESS: DOCX created')
"
5. Include Explicit Error Handling
Always wrap generation code with try/except for clear error reporting:
python -c "
try:
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
c = canvas.Canvas('output.pdf', pagesize=letter)
c.drawString(100, 750, 'Content')
c.save()
print('SUCCESS')
except ImportError as e:
print(f'MISSING_LIBRARY: {e}')
exit(1)
except Exception as e:
print(f'GENERATION_ERROR: {e}')
exit(1)
"
6. Verify Output File
After generation, confirm the file was created and is valid:
ls -la output.pdf
file output.pdf
test -f output.pdf && echo "File exists" || echo "File missing"
Complete Example Workflow
# Step 1: Check and install library
python -c "import reportlab" 2>&1 || pip install reportlab
# Step 2: Generate PDF with error handling
python -c "
try:
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
c = canvas.Canvas('report.pdf', pagesize=letter)
c.setFont('Helvetica', 12)
c.drawString(100, 750, 'Surveillance Report')
c.drawString(100, 700, 'Generated via fallback pattern')
c.save()
print('SUCCESS: report.pdf created')
except Exception as e:
print(f'ERROR: {e}')
exit(1)
"
# Step 3: Verify
test -f report.pdf && echo "Verification: PASSED" || echo "Verification: FAILED"
Why This Works
- Direct Execution:
run_shellwithpython -cbypasses sandbox limitations that may affect document generation libraries - Explicit Errors: Try/except blocks provide actionable error messages instead of opaque failures
- Environment Control: Shell execution gives more control over the Python environment and library paths
- Verification: Explicit file checks confirm success rather than assuming it
Common Libraries
| Library | Purpose | Import Statement |
|---|---|---|
| reportlab | PDF generation | from reportlab.pdfgen import canvas |
| fpdf2 | PDF generation | from fpdf import FPDF |
| pypdf | PDF manipulation | from pypdf import PdfReader |
| python-docx | DOCX generation | from docx import Document |
| xlsxwriter | Excel files | import xlsxwriter |
04 同仓库更多 Skills
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.
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.
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.
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.
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.
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 /tmp helper scripts.