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.md
source 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:

LibraryBest ForComplexity
reportlab
Professional layouts, tables, precise controlMedium
fpdf
Simple documents, quick generationLow
matplotlib
Charts, graphs, visual reportsMedium

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

  1. Keep it simple: Start with basic layouts before adding complexity
  2. Test incrementally: Generate a minimal PDF first, then add features
  3. Handle errors: Wrap PDF generation in try/except blocks
  4. Verify file existence: Always confirm the PDF was created before proceeding
  5. 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

IssueSolution
Import errorRun
!pip install <library>
first
File not foundCheck working directory with
!pwd
Blank PDFEnsure
doc.build()
is called
Encoding issuesUse Unicode strings, specify encoding