OpenSpace pdf-checklist-generation
Generate structured PDF checklists and reports using Python libraries in sandbox
install
source · Clone the upstream repo
git clone https://github.com/HKUDS/OpenSpace
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/HKUDS/OpenSpace "$T" && mkdir -p ~/.claude/skills && cp -r "$T/gdpval_bench/skills/pdf-checklist-generation" ~/.claude/skills/hkuds-openspace-pdf-checklist-generation && rm -rf "$T"
manifest:
gdpval_bench/skills/pdf-checklist-generation/SKILL.mdsource content
PDF Checklist Generation
This skill provides a workflow for creating professional PDF documents (checklists, reports, scorecards) using Python libraries within an execute_code_sandbox environment.
When to Use
- Need to generate downloadable PDF reports or checklists
- Require structured documents with tables, sections, or scoring criteria
- Working in a sandbox environment without direct file system access
Available Libraries
Choose one based on your needs:
| Library | Best For | Complexity |
|---|---|---|
| Professional layouts, tables, precise control | Medium |
| Simple documents, quick generation | Low |
| Charts, graphs, visual reports | Medium |
Step-by-Step Workflow
Step 1: Install Required Library
!pip install reportlab # or fpdf, matplotlib
Step 2: Create PDF Generation Script
Example using reportlab:
from reportlab.lib.pagesizes import letter from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer from reportlab.lib.styles import getSampleStyleSheet from reportlab.lib import colors def create_checklist_pdf(filename, checklist_items): doc = SimpleDocTemplate(filename, pagesize=letter) styles = getSampleStyleSheet() elements = [] # Title elements.append(Paragraph("Assessment Checklist", styles['Heading1'])) elements.append(Spacer(1, 12)) # Table data data = [['Item', 'Status', 'Score']] for item in checklist_items: data.append([item['name'], item['status'], item['score']]) # Create table table = Table(data) table.setStyle(TableStyle([ ('BACKGROUND', (0, 0), (-1, 0), colors.grey), ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke), ('ALIGN', (0, 0), (-1, -1), 'CENTER'), ('GRID', (0, 0), (-1, -1), 1, colors.black), ])) elements.append(table) doc.build(elements) print(f"PDF created: {filename}") # Usage checklist = [ {'name': 'Security Check', 'status': 'Pass', 'score': 10}, {'name': 'Performance Test', 'status': 'Fail', 'score': 5}, ] create_checklist_pdf('report.pdf', checklist)
Step 3: Execute in Sandbox
Run the script using
execute_code_sandbox:
execute_code_sandbox(code="<your pdf generation code>")
Step 4: Verify Output
After generation, verify the PDF was created:
read_file(path="report.pdf")
Or inspect via shell:
execute_code_sandbox(code="import os; print(os.path.exists('report.pdf'))")
Best Practices
- Keep it simple: Start with basic layouts before adding complexity
- Test incrementally: Generate a minimal PDF first, then add features
- Handle errors: Wrap PDF generation in try/except blocks
- Verify file existence: Always confirm the PDF was created before proceeding
- Use UTF-8: Ensure text encoding is proper for special characters
Common Pitfalls
- Forgetting to install the library before import
- Not checking if file was created successfully
- Using paths that don't exist in sandbox environment
- Missing required dependencies for advanced features
Troubleshooting
| Issue | Solution |
|---|---|
| Import error | Run first |
| File not found | Check working directory with |
| Blank PDF | Ensure is called |
| Encoding issues | Use Unicode strings, specify encoding |