CtrlK
BlogDocsLog inGet started
Tessl Logo

pdf-checklist-generation

Generate structured PDF checklists and reports using Python libraries in sandbox

61

Quality

71%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./benchmarks/gdpval/skills/pdf-checklist-generation/SKILL.md
SKILL.md
Quality
Evals
Security

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
reportlabProfessional layouts, tables, precise controlMedium
fpdfSimple documents, quick generationLow
matplotlibCharts, 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
Repository
HKUDS/OpenSpace
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.