Agent skill

PDF To Report Workflow

by HKUDS in HKUDS/OpenSpace

Complete PDF workflow: extract content from source PDFs and generate new PDF reports using command-line tools

MITAuto-check passedDocuments & Office

Install PDF To Report Workflow

skills CLI
$ npx skills add HKUDS/OpenSpace --skill pdf-to-report-workflow -a claude-code

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

GitHub CLI
$ gh skill install HKUDS/OpenSpace pdf-to-report-workflow --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-verification-cli-enhanced-657992 .claude/skills/pdf-to-report-workflow && 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-to-report-workflow
GitHub stars
7.8k
Token cost
~4.3k tokens
SKILL.md length
522 words
Files
2
Skills in repo
199
Repo updated
First seen
Licence
MIT

At a glance

Complete PDF workflow: extract content from source PDFs and generate new PDF reports using command-line tools

  • Works in 7 steps: pdfinfo - Extract PDF Metadata → pdftotext - Extract Text Content → enscript + ps2pdf - Text to PDF… → …
  • Tasks that involve PDF
  • SKILL.md covers When to Use This Skill, Core Tools, Complete Workflow and Python Integration Example, plus 4 more sections
  • Calls apt-get, pdftotext and pandoc

What it does

PDF To Report Workflow is an agent skill from HKUDS/OpenSpace. Complete PDF workflow: extract content from source PDFs and generate new PDF reports using command-line tools

Its SKILL.md is about 4.3k 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. 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-to-report-workflow”

Requirements

  • Python 3

Workflow steps

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

  1. pdfinfo - Extract PDF Metadata
  2. pdftotext - Extract Text Content
  3. enscript + ps2pdf - Text to PDF (Recommended)
  4. wkhtmltopdf - HTML to PDF
  5. libreoffice - Document Conversion
  6. pandoc - Universal Document Converter
  7. pdftk - PDF Manipulation

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:

    • apt-get
    • pdftotext
    • pandoc
    • libreoffice

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

  • Network

    No URLs in SKILL.md.

    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 To Report Workflow loads about 4.3k tokens when it runs. Until then it costs about 33 tokens; SKILL.md has 522 words of instructions outside code blocks.

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

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). 522 words, ~4,252 tokens.

Download SKILL.mdSave it as .claude/skills/pdf-to-report-workflow/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
pdf-to-report-workflow
description
Complete PDF workflow: extract content from source PDFs and generate new PDF reports using command-line tools

PDF-to-Report Generation Workflow

This skill provides a complete end-to-end workflow for processing PDF documents: extracting content from source PDFs, assembling report data, and generating new PDF output files—all using command-line tools when Python libraries are unavailable.

When to Use This Skill

  • Need to extract text/content from existing PDFs
  • Need to create new PDF reports from extracted data
  • Need to combine multiple PDF sources into a single report
  • PyPDF2, reportlab, or similar Python PDF libraries are unavailable
  • Working in minimal/containerized environments

Core Tools

Extraction Tools (poppler-utils)
1. pdfinfo - Extract PDF Metadata
bash
# Get full PDF info
pdfinfo document.pdf

# Get only page count
pdfinfo document.pdf | grep Pages

# Extract page count as a number
pdfinfo document.pdf | grep Pages | awk '{print $2}'

Key metadata fields:

  • Pages: Number of pages in the PDF
  • Title: Document title
  • Author: Document author
  • CreationDate: When the PDF was created
  • ModDate: Last modification date
2. pdftotext - Extract Text Content
bash
# Extract all text to stdout
pdftotext document.pdf -

# Extract text to a file
pdftotext document.pdf output.txt

# Extract text from specific page range
pdftotext -f 1 -l 3 document.pdf output.txt

# Preserve layout (rough formatting)
pdftotext -layout document.pdf output.txt
Generation Tools (Choose based on availability)

Convert plain text to PDF via PostScript:

bash
# Install if needed
apt-get install -y enscript ghostscript

# Convert text file to PDF
enscript -B -o output.ps input.txt && ps2pdf output.ps output.pdf

# One-liner
enscript -B input.txt -o - | ps2pdf - output.pdf

Options:

  • -B: No borders
  • -o: Output file (- for stdout)
  • -f: Font specification (e.g., -fCourier10)
2. wkhtmltopdf - HTML to PDF

Convert HTML to PDF with full formatting support:

bash
# Install if needed
apt-get install -y wkhtmltopdf

# Convert HTML file to PDF
wkhtmltopdf input.html output.pdf

# Convert from stdin
echo "<html><body><h1>Report</h1></body></html>" | wkhtmltopdf - output.pdf

# With options for better quality
wkhtmltopdf --page-size A4 --margin-top 25mm input.html output.pdf
3. libreoffice - Document Conversion

Convert various document formats to PDF:

bash
# Install if needed
apt-get install -y libreoffice-writer

# Convert to PDF (headless mode)
libreoffice --headless --convert-to pdf input.docx
libreoffice --headless --convert-to pdf input.odt
libreoffice --headless --convert-to pdf input.txt
4. pandoc - Universal Document Converter

Convert between many formats including PDF:

bash
# Install if needed
apt-get install -y pandoc texlive-latex-base

# Convert markdown to PDF
pandoc input.md -o output.pdf

# Convert text to PDF
pandoc input.txt -o output.pdf

# With custom template
pandoc input.md --template=template.tex -o output.pdf
5. pdftk - PDF Manipulation

Merge, split, or modify existing PDFs:

bash
# Install if needed
apt-get install -y pdftk

# Merge multiple PDFs
pdftk file1.pdf file2.pdf file3.pdf cat output merged.pdf

# Extract pages
pdftk input.pdf cat 1-3 output extracted.pdf

# Split into individual pages
pdftk input.pdf burst

Complete Workflow

Phase 1: Check Tool Availability
bash
# Check extraction tools
which pdfinfo || echo "pdfinfo not found"
which pdftotext || echo "pdftotext not found"

# Check generation tools (at least one should be available)
which enscript || echo "enscript not found"
which wkhtmltopdf || echo "wkhtmltopdf not found"
which libreoffice || echo "libreoffice not found"
which pandoc || echo "pandoc not found"
Phase 2: Install Missing Tools
bash
# Debian/Ubuntu - Full installation
apt-get update && apt-get install -y poppler-utils enscript ghostscript

# Or install wkhtmltopdf instead
apt-get install -y poppler-utils wkhtmltopdf

# Or install pandoc for markdown-based reports
apt-get install -y poppler-utils pandoc texlive-latex-base
Phase 3: Extract Content from Source PDFs
bash
# Create working directory
mkdir -p workdir/extracted
cd workdir

# Extract text from each source PDF
for pdf in ../source_pdfs/*.pdf; do
    filename=$(basename "$pdf" .pdf)
    pdftotext -layout "$pdf" "extracted/${filename}.txt"
    echo "Extracted: $filename"
done

# Verify extraction
for txt in extracted/*.txt; do
    lines=$(wc -l < "$txt")
    echo "$txt: $lines lines"
done
Phase 4: Assemble Report Content
bash
# Create report from extracted content
cat > final_report.txt << 'EOF'
===========================================
NEW CASE CREATION REPORT
Generated: $(date)
===========================================

EOF

# Add sections from each source
echo "SECTION 1: CASE CREATION GUIDE" >> final_report.txt
echo "-------------------------------------------" >> final_report.txt
cat extracted/case_creation_guide.txt >> final_report.txt
echo "" >> final_report.txt

echo "SECTION 2: CASE DETAIL SUMMARY" >> final_report.txt
echo "-------------------------------------------" >> final_report.txt
cat extracted/case_detail_summary.txt >> final_report.txt
echo "" >> final_report.txt

echo "SECTION 3: PATERNITY TEST RESULTS" >> final_report.txt
echo "-------------------------------------------" >> final_report.txt
cat extracted/paternity_test_results.txt >> final_report.txt
echo "" >> final_report.txt

echo "SECTION 4: ORDER OF CHILD SUPPORT" >> final_report.txt
echo "-------------------------------------------" >> final_report.txt
cat extracted/order_of_child_support.txt >> final_report.txt
echo "" >> final_report.txt

echo "===========================================" >> final_report.txt
echo "END OF REPORT" >> final_report.txt
echo "===========================================" >> final_report.txt
Phase 5: Generate PDF Report

Option A: Using enscript + ps2pdf

bash
# Convert text to PDF
enscript -B -fCourier10 -o report.ps final_report.txt && ps2pdf report.ps final_report.pdf

# Or one-liner
enscript -B final_report.txt -o - | ps2pdf - final_report.pdf

# Verify output
pdfinfo final_report.pdf | grep Pages

Option B: Using wkhtmltopdf (with HTML formatting)

bash
# Convert text to simple HTML
cat > final_report.html << 'EOF'
<!DOCTYPE html>
<html>
<head>
    <style>
        body { font-family: monospace; margin: 40px; }
        h1 { text-align: center; }
        .section { margin-top: 30px; }
    </style>
</head>
<body>
EOF

# Add content (escape HTML special chars if needed)
sed 's/&/\&amp;/g; s/</\&lt;/g; s/>/\&gt;/g' final_report.txt | \
    sed 's/^=\{30,\}/<h1>/; s/$/<\/h1>/; /^<h1>/!s/^/--<br>/; /^----/!s/$/<br>/' >> final_report.html

echo "</body></html>" >> final_report.html

# Convert to PDF
wkhtmltopdf --page-size A4 --margin-top 25mm final_report.html final_report.pdf

Option C: Using pandoc (markdown format)

bash
# Create markdown version
cat > final_report.md << 'EOF'
# New Case Creation Report

*Generated: $(date)*

---

EOF

# Add sections with markdown formatting
for txt in extracted/*.txt; do
    filename=$(basename "$txt" .txt)
    echo "## $filename" >> final_report.md
    echo "" >> final_report.md
    cat "$txt" >> final_report.md
    echo "" >> final_report.md
done

# Convert to PDF
pandoc final_report.md -o final_report.pdf
Phase 6: Verify Generated Report
bash
# Check PDF was created
if [ -f final_report.pdf ]; then
    echo "✓ PDF created successfully"
    
    # Verify page count
    pages=$(pdfinfo final_report.pdf | grep Pages | awk '{print $2}')
    echo "  Pages: $pages"
    
    # Verify file size
    size=$(ls -lh final_report.pdf | awk '{print $5}')
    echo "  Size: $size"
    
    # Verify content
    if pdftotext final_report.pdf - | grep -q "CASE CREATION REPORT"; then
        echo "✓ Content verified"
    else
        echo "✗ Content verification failed"
    fi
else
    echo "✗ PDF generation failed"
    exit 1
fi

Python Integration Example

python
import subprocess
import os
from datetime import datetime

class PDFReportGenerator:
    def __init__(self, workdir="workdir"):
        self.workdir = workdir
        os.makedirs(workdir, exist_ok=True)
        os.makedirs(f"{workdir}/extracted", exist_ok=True)
    
    def check_tools(self):
        """Check available tools and return best option"""
        tools = {}
        for tool in ['pdfinfo', 'pdftotext', 'enscript', 'ps2pdf', 
                     'wkhtmltopdf', 'pandoc']:
            result = subprocess.run(['which', tool], 
                                   capture_output=True, text=True)
            tools[tool] = result.returncode == 0
        return tools
    
    def extract_pdf(self, pdf_path, output_txt=None):
        """Extract text from PDF"""
        if output_txt is None:
            output_txt = f"{self.workdir}/extracted/{os.path.basename(pdf_path).replace('.pdf', '.txt')}"
        
        result = subprocess.run(
            ['pdftotext', '-layout', pdf_path, output_txt],
            capture_output=True, text=True
        )
        
        if result.returncode != 0:
            raise Exception(f"Extraction failed: {result.stderr}")
        
        return output_txt
    
    def generate_report_pdf(self, text_content, output_pdf):
        """Generate PDF from text content using best available tool"""
        tools = self.check_tools()
        
        # Write content to temp file
        temp_txt = f"{self.workdir}/temp_report.txt"
        with open(temp_txt, 'w') as f:
            f.write(text_content)
        
        if tools.get('enscript') and tools.get('ps2pdf'):
            # Use enscript + ps2pdf
            temp_ps = f"{self.workdir}/temp_report.ps"
            subprocess.run(['enscript', '-B', '-fCourier10', '-o', temp_ps, temp_txt], check=True)
            subprocess.run(['ps2pdf', temp_ps, output_pdf], check=True)
            return output_pdf
        
        elif tools.get('pandoc'):
            # Use pandoc
            temp_md = f"{self.workdir}/temp_report.md"
            with open(temp_md, 'w') as f:
                f.write(f"# Report\n\nGenerated: {datetime.now()}\n\n---\n\n")
                f.write(text_content)
            subprocess.run(['pandoc', temp_md, '-o', output_pdf], check=True)
            return output_pdf
        
        elif tools.get('wkhtmltopdf'):
            # Use wkhtmltopdf
            temp_html = f"{self.workdir}/temp_report.html"
            with open(temp_html, 'w') as f:
                f.write(f"""<!DOCTYPE html>
<html><head><style>body{{font-family:monospace;margin:40px;}}</style></head>
<body><pre>{text_content}</pre></body></html>""")
            subprocess.run(['wkhtmltopdf', temp_html, output_pdf], check=True)
            return output_pdf
        
        else:
            raise Exception("No PDF generation tools available")
    
    def get_pdf_info(self, pdf_path):
        """Get PDF metadata"""
        result = subprocess.run(['pdfinfo', pdf_path], 
                               capture_output=True, text=True)
        info = {}
        for line in result.stdout.split('\n'):
            if ':' in line:
                key, value = line.split(':', 1)
                info[key.strip()] = value.strip()
        return info
    
    def create_report_from_pdfs(self, source_pdfs, output_pdf, report_title="Report"):
        """Complete workflow: extract from multiple PDFs and create report"""
        extracted_texts = []
        
        # Extract from each source
        for pdf in source_pdfs:
            txt = self.extract_pdf(pdf)
            with open(txt, 'r') as f:
                content = f.read()
            extracted_texts.append((os.path.basename(pdf), content))
        
        # Assemble report
        report_content = f"""{'='*50}
{report_title}
Generated: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}
{'='*50}

"""
        
        for filename, content in extracted_texts:
            report_content += f"\n{'-'*50}\n"
            report_content += f"SOURCE: {filename}\n"
            report_content += f"{'-'*50}\n\n"
            report_content += content + "\n"
        
        report_content += f"\n{'='*50}\nEND OF REPORT\n{'='*50}\n"
        
        # Generate PDF
        return self.generate_report_pdf(report_content, output_pdf)

# Usage example
if __name__ == "__main__":
    generator = PDFReportGenerator()
    
    source_pdfs = [
        "source_pdfs/case_creation_guide.pdf",
        "source_pdfs/case_detail_summary.pdf",
        "source_pdfs/paternity_test_results.pdf",
        "source_pdfs/order_of_child_support.pdf"
    ]
    
    output = generator.create_report_from_pdfs(
        source_pdfs, 
        "final_report.pdf",
        "NEW CASE CREATION REPORT"
    )
    
    print(f"Report created: {output}")
    print(f"Pages: {generator.get_pdf_info(output).get('Pages', 'Unknown')}")

Common Workflows

TaskCommand Sequence
Extract single PDFpdftotext -layout file.pdf output.txt
Extract multiple PDFsfor f in *.pdf; do pdftotext -layout "$f" "${f%.pdf}.txt"; done
Text to PDF (enscript)enscript -B input.txt -o - | ps2pdf - output.pdf
Text to PDF (pandoc)pandoc input.md -o output.pdf
Merge PDFspdftk file1.pdf file2.pdf cat output merged.pdf
Verify PDFpdfinfo file.pdf | grep Pages
Check PDF contentpdftotext file.pdf - | grep -i "keyword"
Show full SKILL.md (203 more words)Show less

Troubleshooting

No PDF generation tools available

  • Install at least one: apt-get install enscript ghostscript (simplest)
  • Or: apt-get install pandoc texlive-latex-base (best formatting)
  • Or: apt-get install wkhtmltopdf (HTML support)

enscript produces garbled output

  • Check character encoding: file input.txt
  • Try adding -r option for raw output
  • Use -fCourier10 for fixed-width font

ps2pdf produces large files

  • Add compression: ps2pdf -dPDFSETTINGS=/ebook input.ps output.pdf
  • Or: ps2pdf -dPDFSETTINGS=/screen input.ps output.pdf (smaller, lower quality)

pdftotext returns empty output

  • PDF may be image-only (scanned) - requires OCR tools
  • PDF may be encrypted/password-protected
  • Try pdftotext -layout for better extraction

Report formatting looks poor

  • Use pandoc with markdown for better formatting
  • Use wkhtmltopdf with HTML/CSS for full control
  • Add -layout flag to pdftotext to preserve structure

Best Practices

  1. Always verify tools before starting - Check which generation tools are available
  2. Preserve layout during extraction - Use pdftotext -layout for better structure
  3. Test with sample content first - Generate a test PDF before full report
  4. Validate output PDF - Check page count and verify content was included
  5. Handle special characters - Escape HTML entities when using wkhtmltopdf
  6. Clean up temporary files - Remove intermediate .ps, .html, .txt files after generation
  7. Document tool choices - Note which generation method was used for reproducibility

Quick Start Template

bash
#!/bin/bash
# Quick PDF Report Generation Script

set -e

# Configuration
SOURCE_DIR="${1:-source_pdfs}"
OUTPUT_PDF="${2:-final_report.pdf}"
WORKDIR="workdir_$$"

# Setup
mkdir -p "$WORKDIR/extracted"
trap "rm -rf $WORKDIR" EXIT

# Check tools
for tool in pdfinfo pdftotext; do
    if ! which "$tool" &>/dev/null; then
        echo "ERROR: $tool not found. Install poppler-utils."
        exit 1
    fi
done

# Extract all source PDFs
echo "Extracting PDFs from $SOURCE_DIR..."
for pdf in "$SOURCE_DIR"/*.pdf; do
    [ -f "$pdf" ] || continue
    name=$(basename "$pdf" .pdf)
    pdftotext -layout "$pdf" "$WORKDIR/extracted/${name}.txt"
    echo "  Extracted: $name"
done

# Assemble report
echo "Assembling report..."
{
    echo "========================================"
    echo "REPORT GENERATED: $(date)"
    echo "========================================"
    echo ""
    for txt in "$WORKDIR/extracted"/*.txt; do
        [ -f "$txt" ] || continue
        name=$(basename "$txt" .txt)
        echo "=== $name ==="
        cat "$txt"
        echo ""
    done
    echo "========================================"
    echo "END OF REPORT"
} > "$WORKDIR/report.txt"

# Generate PDF
echo "Generating PDF..."
if which enscript &>/dev/null && which ps2pdf &>/dev/null; then
    enscript -B "$WORKDIR/report.txt" -o - | ps2pdf - "$OUTPUT_PDF"
elif which pandoc &>/dev/null; then
    pandoc "$WORKDIR/report.txt" -o "$OUTPUT_PDF"
else
    echo "ERROR: No PDF generation tool available"
    exit 1
fi

# Verify
echo "Verifying output..."
pages=$(pdfinfo "$OUTPUT_PDF" | grep Pages | awk '{print $2}')
echo "✓ Report created: $OUTPUT_PDF ($pages pages)"

© 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-verification-cli-enhanced-657992 of HKUDS/OpenSpace.

  • SKILL.md
  • .skill_id

Open the folder on GitHubat commit 3827781

Compare with similar skills

PDF To Report Workflow 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 To Report Workflow compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
PDF To Report Workflow this skillHKUDS/OpenSpace7.8k—~4.3kAutomated safety check: PassMIT
MarkitdownImCa0/just-laws78114 repos~3.2kAutomated safety check: NotesMIT
Gzh Designisjiamu/gzh-design-skill4k—~2.2kAutomated safety check: PassAGPL-3.0
GenOffice Document CLIgenspark-ai/genoffice9.2k—~19kAutomated safety check: PassApache-2.0
Harness Book Best Practicewquguru/harness-books3.2k—~4.1kAutomated safety check: PassNone
Bookforge Korean Ebook PDF Makergongnyang/bookforge3161 repos~1.7kAutomated safety check: PassMIT

Similar skills

  • Markitdown

    ImCa0/just-laws

    Convert files and office documents to Markdown. An agent skill from ImCa0/just-laws.

    781 GitHub starsUsed in 14 repos~3.2k tokens
    Documents & OfficeAuto-check: notes
  • Gzh Design

    isjiamu/gzh-design-skill

    微信公众号文章排版引擎,将 Markdown 转换为可直接粘贴到公众号编辑器的 HTML。主题风格从 references/theme-index.md 注册的自定义主题库中选取,自动章节编号、关键词下划线标记、引言卡片、目录导航、代码块、图片/GIF、作者签名。支持 Markdown / Word(.docx) / PDF / 纯文本输入(非 Markdown…

    4k GitHub stars~2.2k tokensUpdated yesterday
    Documents & OfficeAuto-check passed
  • GenOffice Document CLI

    genspark-ai/genoffice

    Creates, converts, reads and edits real pptx, xlsx, docx and PDF files locally through the genoffice command line.

    9.2k GitHub stars~19k tokensUpdated yesterday
    Documents & OfficeAuto-check passed
  • Harness Book Best Practice

    wquguru/harness-books

    Best practices for working on the Harness books repo. An agent skill from wquguru/harness-books.

    3.2k GitHub stars~4.1k tokensUpdated 5 mo ago
    Documents & OfficeAuto-check passed
  • Produces book-style Korean ebook PDFs from a topic or finished manuscript, with six design styles, real book parts and quality-check gates before output.

    316 GitHub starsUsed in 1 repo~1.7k tokens
    Documents & OfficeAuto-check passed
  • Instrument Data To Allotrope

    aws-samples/amazon-bedrock-agents-healthcare-lifesciences

    Official

    Convert laboratory instrument output files (PDF, CSV, Excel, TXT) to Allotrope Simple Model (ASM) JSON format or flattened 2D CSV.

    274 GitHub starsUsed in 2 repos~2.7k 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

Questions about PDF To Report Workflow

What does PDF To Report Workflow do?

Complete PDF workflow: extract content from source PDFs and generate new PDF reports using command-line tools. PDF To Report Workflow is an agent skill from HKUDS/OpenSpace.

When should I use PDF To Report Workflow?

PDF To Report Workflow fits situations like: tasks that involve PDF.

How do I install PDF To Report Workflow in Claude Code?

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

How do I install PDF To Report Workflow in Codex?

Run `npx skills add HKUDS/OpenSpace --skill pdf-to-report-workflow -a codex`. Or copy the skill folder (benchmarks/gdpval/skills/pdf-verification-cli-enhanced-657992 in HKUDS/OpenSpace) into .agents/skills/pdf-to-report-workflow in your project. Codex loads it when a task matches its description.

Can I use PDF To Report Workflow 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-to-report-workflow -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-to-report-workflow, .gemini/skills/pdf-to-report-workflow, .github/skills/pdf-to-report-workflow and .opencode/skills/pdf-to-report-workflow in your project.

What does PDF To Report Workflow need to run?

Going by SKILL.md and its folder, PDF To Report Workflow needs the command-line tools its instructions call (apt-get, pdftotext, pandoc and libreoffice). Our summary lists: Python 3.

Does PDF To Report Workflow access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is PDF To Report Workflow 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 To Report Workflow use?

PDF To Report Workflow 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 To Report Workflow use?

About 4.3k tokens (SKILL.md is roughly 17k 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 To Report Workflow?

Skills that share tags, products or a category with PDF To Report Workflow: Markitdown (ImCa0/just-laws, 781 stars), Gzh Design (isjiamu/gzh-design-skill, 4k stars), GenOffice Document CLI (genspark-ai/genoffice, 9.2k stars) and Harness Book Best Practice (wquguru/harness-books, 3.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains PDF To Report Workflow?

HKUDS (a GitHub organization) maintains it in HKUDS/OpenSpace, which has 7,754 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.