Agent skill

PDF Checklist Generator

by HKUDS in HKUDS/OpenSpace

Generate structured PDF checklists and reports with tables, sections, and scoring criteria using Python libraries

MITAuto-check passedDocuments & Office

Install PDF Checklist Generator

skills CLI
$ npx skills add HKUDS/OpenSpace --skill pdf-checklist-generator -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install HKUDS/OpenSpace pdf-checklist-generator --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/HKUDS/OpenSpace.git skills-src && mkdir -p .claude/skills && cp -r skills-src/benchmarks/gdpval/skills/pdf-checklist-generator .claude/skills/pdf-checklist-generator && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
pdf-checklist-generator
GitHub stars
7.8k
Token cost
~2k tokens
SKILL.md length
314 words
Files
2
Skills in repo
199
Repo updated
First seen
Licence
MIT

At a glance

Generate structured PDF checklists and reports with tables, sections, and scoring criteria using Python libraries

  • Works in 4 steps: Plan Document Structure → Write Python Code in execute_code_sandbox → Include ARTIFACT_PATH in Output → …
  • Tasks that involve PDF
  • SKILL.md covers When to Use This Skill, Library Selection, Step-by-Step Procedure and Common Patterns, plus 3 more sections
  • Calls pip

What it does

PDF Checklist Generator is an agent skill from HKUDS/OpenSpace. Generate structured PDF checklists and reports with tables, sections, and scoring criteria using Python libraries

Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file.

It sits in Documents & Office, covering PDF. It works with Python and pypdf. The repository describes itself as: "OpenSpace: The Skill Management Layer for AI Agents" -- https://open-space.cloud/. The licence is MIT.

When your agent uses it

  • Tasks that involve PDF

Example prompts

  • “/pdf-checklist-generator”

Requirements

  • Python 3

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Plan Document Structure
  2. Write Python Code in execute_code_sandbox
  3. Include ARTIFACT_PATH in Output
  4. Verify Output

What it can do on your machine

Read from SKILL.md and the folder at commit 3827781. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • pip

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use pip, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

PDF Checklist Generator loads about 2k tokens when it runs. Until then it costs about 34 tokens; SKILL.md has 314 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~34
When it runs · the whole SKILL.md, loaded when a task matches
~2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from HKUDS/OpenSpace at commit 3827781, republished under its MIT licence (© HKUDS). 314 words, ~2,043 tokens.

Download SKILL.mdSave it as .claude/skills/pdf-checklist-generator/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
pdf-checklist-generator
description
Generate structured PDF checklists and reports with tables, sections, and scoring criteria using Python libraries

PDF Checklist/Report Generator

This skill provides a reusable pattern for creating professional PDF documents (checklists, reports, scorecards) using Python libraries within execute_code_sandbox.

When to Use This Skill

  • Need to generate structured PDF documents programmatically
  • Creating checklists with scoring criteria
  • Building reports with tables, sections, and formatted content
  • Producing downloadable artifacts for workflow tasks

Library Selection

Choose the appropriate library based on your needs:

LibraryBest ForInstallation
reportlabComplex layouts, tables, precise controlpip install reportlab
fpdf2Simple documents, easy APIpip install fpdf2
matplotlibCharts/graphs in PDFspip install matplotlib

Step-by-Step Procedure

Step 1: Plan Document Structure

Define the sections, tables, and scoring criteria before coding:

  • Document title and metadata
  • Section headers
  • Table columns and rows
  • Scoring rubric (if applicable)
Step 2: Write Python Code in execute_code_sandbox

Use execute_code_sandbox with the appropriate library. Here are templates:

python
from reportlab.lib import colors
from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import inch

# Create PDF
doc = SimpleDocTemplate("checklist.pdf", pagesize=letter)
elements = []
styles = getSampleStyleSheet()

# Title
title_style = ParagraphStyle('CustomTitle', parent=styles['Heading1'], alignment=1)
elements.append(Paragraph("Compliance Checklist", title_style))
elements.append(Spacer(1, 0.25*inch))

# Create table data
data = [
    ['Criteria', 'Status', 'Score', 'Notes'],
    ['Security Review', 'Pass', '10', 'All checks passed'],
    ['Code Quality', 'Pass', '8', 'Minor improvements'],
    ['Documentation', 'Pending', '5', 'Needs updates'],
]

# Create and style table
table = Table(data, colWidths=[3*inch, 1*inch, 1*inch, 2*inch])
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),
    ('BACKGROUND', (0, 1), (-1, -1), colors.beige),
]))
elements.append(table)

# Build PDF
doc.build(elements)
print("PDF created: checklist.pdf")
print(f"ARTIFACT_PATH:/workspace/checklist.pdf")
Template B: Using fpdf2 (simpler API)
python
from fpdf import FPDF

pdf = FPDF()
pdf.add_page()
pdf.set_font("Arial", "B", 16)
pdf.cell(0, 10, "Project Report", ln=True, align='C')

pdf.set_font("Arial", size=12)
pdf.ln(10)

# Add sections
sections = [
    ("Executive Summary", "Project completed successfully."),
    ("Key Findings", "All milestones achieved on time."),
    ("Recommendations", "Continue current practices."),
]

for title, content in sections:
    pdf.set_font("Arial", "B", 14)
    pdf.cell(0, 10, title, ln=True)
    pdf.set_font("Arial", size=12)
    pdf.multi_cell(0, 8, content)
    pdf.ln(5)

pdf.output("report.pdf")
print("PDF created: report.pdf")
print(f"ARTIFACT_PATH:/workspace/report.pdf")
Template C: Checklist with Scoring
python
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

doc = SimpleDocTemplate("scorecard.pdf", pagesize=letter)
elements = []
styles = getSampleStyleSheet()

# Title
elements.append(Paragraph("Evaluation Scorecard", styles['Heading1']))
elements.append(Spacer(1, 0.25*inch))

# Scoring criteria table
criteria = [
    ['Category', 'Weight', 'Score (0-10)', 'Weighted'],
    ['Functionality', '30%', '9', '2.7'],
    ['Performance', '25%', '8', '2.0'],
    ['Security', '25%', '10', '2.5'],
    ['Documentation', '20%', '7', '1.4'],
    ['TOTAL', '100%', '-', '8.6/10'],
]

table = Table(criteria, colWidths=[2.5*inch, 1*inch, 1.5*inch, 1.5*inch])
table.setStyle(TableStyle([
    ('BACKGROUND', (0, 0), (-1, 0), colors.darkblue),
    ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
    ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
    ('GRID', (0, 0), (-1, -1), 1, colors.black),
    ('FONTNAME', (0, -1), (-1, -1), 'Helvetica-Bold'),
    ('BACKGROUND', (0, -1), (-1, -1), colors.lightgrey),
]))
elements.append(table)

doc.build(elements)
print("ARTIFACT_PATH:/workspace/scorecard.pdf")
Step 3: Include ARTIFACT_PATH in Output

Always include the artifact path in your print output so the system can locate the generated file:

python
print(f"ARTIFACT_PATH:/workspace/your_filename.pdf")
Step 4: Verify Output

After generation, verify the PDF was created successfully:

Option A: Use read_file

read_file with filetype="pdf" and file_path="/workspace/checklist.pdf"

Option B: Use shell inspection

run_shell with command="ls -la /workspace/*.pdf"

Common Patterns

Pattern 1: Multi-Section Report
python
sections = [
    ("Introduction", "Overview text..."),
    ("Methodology", "Process description..."),
    ("Results", "Findings summary..."),
    ("Conclusion", "Final recommendations..."),
]

for title, content in sections:
    elements.append(Paragraph(title, styles['Heading2']))
    elements.append(Paragraph(content, styles['Normal']))
    elements.append(Spacer(1, 0.2*inch))
Pattern 2: Status Indicator Table
python
status_colors = {
    'Pass': colors.green,
    'Fail': colors.red,
    'Pending': colors.orange,
    'N/A': colors.grey,
}

# Apply conditional coloring in table style
for row_idx, row_data in enumerate(data[1:], 1):
    status = row_data[1]
    if status in status_colors:
        table.setStyle(TableStyle([
            ('BACKGROUND', (1, row_idx), (1, row_idx), status_colors[status]),
        ]))
Pattern 3: Page Breaks for Long Documents
python
from reportlab.platypus import PageBreak

elements.append(PageBreak())  # Insert page break

Troubleshooting

IssueSolution
Library not foundAdd pip install <library> at start of code
Font errorsUse built-in fonts: Arial, Helvetica, Times-Roman
Table overflowAdjust colWidths or split into multiple tables
PDF not createdCheck ARTIFACT_PATH is correct and file is written

Best Practices

  1. Always verify: Check the PDF exists and is readable after generation
  2. Use ARTIFACT_PATH: Include it in output for system discovery
  3. Keep it readable: Use adequate spacing (Spacer) between elements
  4. Test incrementally: Build complex PDFs section by section
  5. Handle errors: Wrap file operations in try/except blocks

Example Complete Workflow

python
# 1. Install library
!pip install reportlab -q

# 2. Generate PDF
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib.pagesizes import letter
from reportlab.lib import colors

doc = SimpleDocTemplate("/workspace/checklist.pdf", pagesize=letter)
elements = []
styles = getSampleStyleSheet()

elements.append(Paragraph("Task Completion Checklist", styles['Heading1']))
elements.append(Spacer(1, 0.25*inch))

data = [['Task', 'Complete', 'Notes'],
        ['Setup environment', 'Yes', ''],
        ['Run tests', 'Yes', 'All passed'],
        ['Documentation', 'No', 'In progress']]

table = Table(data)
table.setStyle(TableStyle([('GRID', (0,0), (-1,-1), 1, colors.black)]))
elements.append(table)

doc.build(elements)
print("ARTIFACT_PATH:/workspace/checklist.pdf")

# 3. Verify
import os
print(f"File exists: {os.path.exists('/workspace/checklist.pdf')}")
print(f"File size: {os.path.getsize('/workspace/checklist.pdf')} bytes")

© HKUDS, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in benchmarks/gdpval/skills/pdf-checklist-generator of HKUDS/OpenSpace.

  • SKILL.md
  • .skill_id

Open the folder on GitHubat commit 3827781

Compare with similar skills

PDF Checklist Generator next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

PDF Checklist Generator compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
PDF Checklist Generator this skillHKUDS/OpenSpace7.8k—~2kAutomated safety check: PassMIT
PDF ToolkitXiaomiMiMo/MiMo-Code14k—~1.7kAutomated safety check: PassApache-2.0
PDF Generation, Forms and Extractionpipeshub-ai/pipeshub-ai3.8k—~2.9kAutomated safety check: PassApache-2.0
PDFNousResearch/hermes-agent252k—~3.1kAutomated safety check: PassMIT
PDF ExploreHughYau/AcademicForge2.6k—~3.1kAutomated safety check: PassApache-2.0
PDF Readerespennilsen/pi122—~1.6kAutomated safety check: PassMIT

Similar skills

  • PDF Toolkit

    XiaomiMiMo/MiMo-Code

    Reads, transforms, composes and fills PDFs with Python scripts for extraction, merging, watermarking, encryption, OCR and form filling.

    14k GitHub stars~1.7k tokensUpdated today
    Documents & OfficeAuto-check passed
  • Picks the right library for generating a new PDF, filling an existing PDF form, or extracting text and tables, defaulting to Node where possible.

    3.8k GitHub stars~2.9k tokensUpdated today
    Documents & OfficeAuto-check passed
  • PDF

    NousResearch/hermes-agent

    PDF files: create, read, merge, fill, OCR, edit text. An agent skill from NousResearch/hermes-agent.

    252k GitHub stars~3.1k tokensUpdated today
    Documents & OfficeAuto-check passed
  • PDF Explore

    HughYau/AcademicForge

    A skill your agent uses when the user has attached a PDF, paper, report, or other document and the answer needs content from more than one place in it: summarize the methods or any other section…

    2.6k GitHub stars~3.1k tokensUpdated 1 mo ago
    Documents & OfficeAuto-check passed
  • PDF Reader

    espennilsen/pi

    Read and extract content from PDF files — text, tables, metadata, and images.

    122 GitHub stars~1.6k tokensUpdated 18 days ago
    Documents & OfficeAuto-check passed
  • PDF Explore

    JimLiu/science-skills

    A skill your agent uses when the user has attached a PDF, paper, report, or other document and the answer needs content from more than one place in it: summarize the methods or any other section…

    227 GitHub starsUsed in 2 repos~3.6k tokens
    Documents & OfficeAuto-check passed

More from HKUDS/OpenSpace

All 199 skills in this repo
  • Walks through producing a master audio track plus stems in Python, from checking a reference file and timing sections by BPM to effects, a zip archive and final verification.

    7.8k GitHub stars~2.9k tokensUpdated 1 mo ago
    Auto-check passed
  • Handle cascading data retrieval tool failures by falling back to embedded knowledge generation

    7.8k GitHub stars~765 tokensUpdated 1 mo ago
    Auto-check passed
  • Gives an agent a workaround when its code-execution sandbox keeps failing: save the Python script to a file and run it through the shell instead.

    7.8k GitHub stars~588 tokensUpdated 1 mo ago
    Auto-check passed
  • A recovery routine for agents whose sandboxed code runner keeps failing: save the Python script to disk, then run it through the shell and read the output.

    7.8k GitHub stars~652 tokensUpdated 1 mo ago
    Auto-check passed
  • Fallback ladder for failed sandboxed code runs, plus the habit of fixing the working directory first so generated files land in the right place.

    7.8k GitHub stars~1.1k tokensUpdated 1 mo ago
    Auto-check passed
  • Fallback workflow for executing Python code when executecodesandbox fails repeatedly

    7.8k GitHub stars~1.1k tokensUpdated 1 mo ago
    Auto-check passed

Works with

Questions about PDF Checklist Generator

What does PDF Checklist Generator do?

Generate structured PDF checklists and reports with tables, sections, and scoring criteria using Python libraries. PDF Checklist Generator is an agent skill from HKUDS/OpenSpace.

When should I use PDF Checklist Generator?

PDF Checklist Generator fits situations like: tasks that involve PDF.

How do I install PDF Checklist Generator in Claude Code?

Run `npx skills add HKUDS/OpenSpace --skill pdf-checklist-generator -a claude-code`. Or copy the skill folder (benchmarks/gdpval/skills/pdf-checklist-generator in HKUDS/OpenSpace) into .claude/skills/pdf-checklist-generator in your project. Claude Code loads it when a task matches its description.

How do I install PDF Checklist Generator in Codex?

Run `npx skills add HKUDS/OpenSpace --skill pdf-checklist-generator -a codex`. Or copy the skill folder (benchmarks/gdpval/skills/pdf-checklist-generator in HKUDS/OpenSpace) into .agents/skills/pdf-checklist-generator in your project. Codex loads it when a task matches its description.

Can I use PDF Checklist Generator in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add HKUDS/OpenSpace --skill pdf-checklist-generator -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pdf-checklist-generator, .gemini/skills/pdf-checklist-generator, .github/skills/pdf-checklist-generator and .opencode/skills/pdf-checklist-generator in your project.

What does PDF Checklist Generator need to run?

Going by SKILL.md and its folder, PDF Checklist Generator needs the command-line tools its instructions call (pip). Our summary lists: Python 3.

Does PDF Checklist Generator access the network?

SKILL.md contains no URLs. Its commands use pip, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is PDF Checklist Generator safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does PDF Checklist Generator use?

PDF Checklist Generator is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does PDF Checklist Generator use?

About 2k tokens (SKILL.md is roughly 8.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to PDF Checklist Generator?

Skills that share tags, products or a category with PDF Checklist Generator: PDF Toolkit (XiaomiMiMo/MiMo-Code, 14k stars), PDF Generation, Forms and Extraction (pipeshub-ai/pipeshub-ai, 3.8k stars), PDF (NousResearch/hermes-agent, 252k stars) and PDF Explore (HughYau/AcademicForge, 2.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains PDF Checklist Generator?

HKUDS (a GitHub organization) maintains it in HKUDS/OpenSpace, which has 7,750 GitHub stars. The repository holds 199 skills in this directory. The repository was last updated on August 12, 2026.

Source: HKUDS/OpenSpace on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.