pdf — community goodable, community, ide skills, Claude Code, Cursor, Windsurf

v1.0.0
GitHub

About this Skill

Perfect for Document Analysis Agents needing advanced PDF processing capabilities using Python libraries like pypdf. Goodable is a local-first Desktop AI Workspace (Desktop Agent Runtime) powered by Claude Agent SDK, combining OS/file control, browser automation, and coding into composable Skills (tool + app modes) to build, run, and publish real AI apps.

ImGoodBai ImGoodBai
[0]
[0]
Updated: 3/5/2026

Agent Capability Analysis

The pdf skill by ImGoodBai is an open-source community AI agent skill for Claude Code and other IDE workflows, helping agents execute tasks with better context, repeatability, and domain-specific guidance.

Ideal Agent Persona

Perfect for Document Analysis Agents needing advanced PDF processing capabilities using Python libraries like pypdf.

Core Value

Empowers agents to extract text, read, and write PDF documents using command-line tools and Python libraries, facilitating comprehensive content analysis and PDF form automation.

Capabilities Granted for pdf

Extracting text from PDF pages
Automating PDF form filling using forms.md guidelines
Analyzing PDF document structure with PdfReader and PdfWriter

! Prerequisites & Limits

  • Requires pypdf library
  • Python environment needed
  • Limited to PDF format
Labs Demo

Browser Sandbox Environment

⚡️ Ready to unleash?

Experience this Agent in a zero-setup browser environment powered by WebContainers. No installation required.

Boot Container Sandbox

pdf

Install pdf, an AI agent skill for AI agent workflows and automation. Works with Claude Code, Cursor, and Windsurf with one-command setup.

SKILL.md
Readonly

PDF Processing Guide

Overview

This guide covers essential PDF processing operations using Python libraries and command-line tools. For advanced features, JavaScript libraries, and detailed examples, see reference.md. If you need to fill out a PDF form, read forms.md and follow its instructions.

Quick Start

python
1from pypdf import PdfReader, PdfWriter 2 3# Read a PDF 4reader = PdfReader("document.pdf") 5print(f"Pages: {len(reader.pages)}") 6 7# Extract text 8text = "" 9for page in reader.pages: 10 text += page.extract_text()

Python Libraries

pypdf - Basic Operations

Merge PDFs

python
1from pypdf import PdfWriter, PdfReader 2 3writer = PdfWriter() 4for pdf_file in ["doc1.pdf", "doc2.pdf", "doc3.pdf"]: 5 reader = PdfReader(pdf_file) 6 for page in reader.pages: 7 writer.add_page(page) 8 9with open("merged.pdf", "wb") as output: 10 writer.write(output)

Split PDF

python
1reader = PdfReader("input.pdf") 2for i, page in enumerate(reader.pages): 3 writer = PdfWriter() 4 writer.add_page(page) 5 with open(f"page_{i+1}.pdf", "wb") as output: 6 writer.write(output)

Extract Metadata

python
1reader = PdfReader("document.pdf") 2meta = reader.metadata 3print(f"Title: {meta.title}") 4print(f"Author: {meta.author}") 5print(f"Subject: {meta.subject}") 6print(f"Creator: {meta.creator}")

Rotate Pages

python
1reader = PdfReader("input.pdf") 2writer = PdfWriter() 3 4page = reader.pages[0] 5page.rotate(90) # Rotate 90 degrees clockwise 6writer.add_page(page) 7 8with open("rotated.pdf", "wb") as output: 9 writer.write(output)

pdfplumber - Text and Table Extraction

Extract Text with Layout

python
1import pdfplumber 2 3with pdfplumber.open("document.pdf") as pdf: 4 for page in pdf.pages: 5 text = page.extract_text() 6 print(text)

Extract Tables

python
1with pdfplumber.open("document.pdf") as pdf: 2 for i, page in enumerate(pdf.pages): 3 tables = page.extract_tables() 4 for j, table in enumerate(tables): 5 print(f"Table {j+1} on page {i+1}:") 6 for row in table: 7 print(row)

Advanced Table Extraction

python
1import pandas as pd 2 3with pdfplumber.open("document.pdf") as pdf: 4 all_tables = [] 5 for page in pdf.pages: 6 tables = page.extract_tables() 7 for table in tables: 8 if table: # Check if table is not empty 9 df = pd.DataFrame(table[1:], columns=table[0]) 10 all_tables.append(df) 11 12# Combine all tables 13if all_tables: 14 combined_df = pd.concat(all_tables, ignore_index=True) 15 combined_df.to_excel("extracted_tables.xlsx", index=False)

reportlab - Create PDFs

Basic PDF Creation

python
1from reportlab.lib.pagesizes import letter 2from reportlab.pdfgen import canvas 3 4c = canvas.Canvas("hello.pdf", pagesize=letter) 5width, height = letter 6 7# Add text 8c.drawString(100, height - 100, "Hello World!") 9c.drawString(100, height - 120, "This is a PDF created with reportlab") 10 11# Add a line 12c.line(100, height - 140, 400, height - 140) 13 14# Save 15c.save()

Create PDF with Multiple Pages

python
1from reportlab.lib.pagesizes import letter 2from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, PageBreak 3from reportlab.lib.styles import getSampleStyleSheet 4 5doc = SimpleDocTemplate("report.pdf", pagesize=letter) 6styles = getSampleStyleSheet() 7story = [] 8 9# Add content 10title = Paragraph("Report Title", styles['Title']) 11story.append(title) 12story.append(Spacer(1, 12)) 13 14body = Paragraph("This is the body of the report. " * 20, styles['Normal']) 15story.append(body) 16story.append(PageBreak()) 17 18# Page 2 19story.append(Paragraph("Page 2", styles['Heading1'])) 20story.append(Paragraph("Content for page 2", styles['Normal'])) 21 22# Build PDF 23doc.build(story)

Command-Line Tools

pdftotext (poppler-utils)

bash
1# Extract text 2pdftotext input.pdf output.txt 3 4# Extract text preserving layout 5pdftotext -layout input.pdf output.txt 6 7# Extract specific pages 8pdftotext -f 1 -l 5 input.pdf output.txt # Pages 1-5

qpdf

bash
1# Merge PDFs 2qpdf --empty --pages file1.pdf file2.pdf -- merged.pdf 3 4# Split pages 5qpdf input.pdf --pages . 1-5 -- pages1-5.pdf 6qpdf input.pdf --pages . 6-10 -- pages6-10.pdf 7 8# Rotate pages 9qpdf input.pdf output.pdf --rotate=+90:1 # Rotate page 1 by 90 degrees 10 11# Remove password 12qpdf --password=mypassword --decrypt encrypted.pdf decrypted.pdf

pdftk (if available)

bash
1# Merge 2pdftk file1.pdf file2.pdf cat output merged.pdf 3 4# Split 5pdftk input.pdf burst 6 7# Rotate 8pdftk input.pdf rotate 1east output rotated.pdf

Common Tasks

Extract Text from Scanned PDFs

python
1# Requires: pip install pytesseract pdf2image 2import pytesseract 3from pdf2image import convert_from_path 4 5# Convert PDF to images 6images = convert_from_path('scanned.pdf') 7 8# OCR each page 9text = "" 10for i, image in enumerate(images): 11 text += f"Page {i+1}:\n" 12 text += pytesseract.image_to_string(image) 13 text += "\n\n" 14 15print(text)

Add Watermark

python
1from pypdf import PdfReader, PdfWriter 2 3# Create watermark (or load existing) 4watermark = PdfReader("watermark.pdf").pages[0] 5 6# Apply to all pages 7reader = PdfReader("document.pdf") 8writer = PdfWriter() 9 10for page in reader.pages: 11 page.merge_page(watermark) 12 writer.add_page(page) 13 14with open("watermarked.pdf", "wb") as output: 15 writer.write(output)

Extract Images

bash
1# Using pdfimages (poppler-utils) 2pdfimages -j input.pdf output_prefix 3 4# This extracts all images as output_prefix-000.jpg, output_prefix-001.jpg, etc.

Password Protection

python
1from pypdf import PdfReader, PdfWriter 2 3reader = PdfReader("input.pdf") 4writer = PdfWriter() 5 6for page in reader.pages: 7 writer.add_page(page) 8 9# Add password 10writer.encrypt("userpassword", "ownerpassword") 11 12with open("encrypted.pdf", "wb") as output: 13 writer.write(output)

Quick Reference

TaskBest ToolCommand/Code
Merge PDFspypdfwriter.add_page(page)
Split PDFspypdfOne page per file
Extract textpdfplumberpage.extract_text()
Extract tablespdfplumberpage.extract_tables()
Create PDFsreportlabCanvas or Platypus
Command line mergeqpdfqpdf --empty --pages ...
OCR scanned PDFspytesseractConvert to image first
Fill PDF formspdf-lib or pypdf (see forms.md)See forms.md

Next Steps

  • For advanced pypdfium2 usage, see reference.md
  • For JavaScript libraries (pdf-lib), see reference.md
  • If you need to fill out a PDF form, follow the instructions in forms.md
  • For troubleshooting guides, see reference.md

FAQ & Installation Steps

These questions and steps mirror the structured data on this page for better search understanding.

? Frequently Asked Questions

What is pdf?

Perfect for Document Analysis Agents needing advanced PDF processing capabilities using Python libraries like pypdf. Goodable is a local-first Desktop AI Workspace (Desktop Agent Runtime) powered by Claude Agent SDK, combining OS/file control, browser automation, and coding into composable Skills (tool + app modes) to build, run, and publish real AI apps.

How do I install pdf?

Run the command: npx killer-skills add ImGoodBai/goodable. It works with Cursor, Windsurf, VS Code, Claude Code, and 19+ other IDEs.

What are the use cases for pdf?

Key use cases include: Extracting text from PDF pages, Automating PDF form filling using forms.md guidelines, Analyzing PDF document structure with PdfReader and PdfWriter.

Which IDEs are compatible with pdf?

This skill is compatible with Cursor, Windsurf, VS Code, Trae, Claude Code, OpenClaw, Aider, Codex, OpenCode, Goose, Cline, Roo Code, Kiro, Augment Code, Continue, GitHub Copilot, Sourcegraph Cody, and Amazon Q Developer. Use the Killer-Skills CLI for universal one-command installation.

Are there any limitations for pdf?

Requires pypdf library. Python environment needed. Limited to PDF format.

How To Install

  1. 1. Open your terminal

    Open the terminal or command line in your project directory.

  2. 2. Run the install command

    Run: npx killer-skills add ImGoodBai/goodable. The CLI will automatically detect your IDE or AI agent and configure the skill.

  3. 3. Start using the skill

    The skill is now active. Your AI agent can use pdf immediately in the current project.

Related Skills

Looking for an alternative to pdf or another community skill for your workflow? Explore these related open-source skills.

View All

widget-generator

Logo of f
f

f.k.a. Awesome ChatGPT Prompts. Share, discover, and collect prompts from the community. Free and open source — self-host for your organization with complete privacy.

149.6k
0
AI

flags

Logo of vercel
vercel

flags is a Next.js feature management skill that enables developers to efficiently add or modify framework feature flags, streamlining React application development.

138.4k
0
Browser

zustand

Logo of lobehub
lobehub

The ultimate space for work and life — to find, build, and collaborate with agent teammates that grow with you. We are taking agent harness to the next level — enabling multi-agent collaboration, effortless agent team design, and introducing agents as the unit of work interaction.

72.8k
0
AI

data-fetching

Logo of lobehub
lobehub

The ultimate space for work and life — to find, build, and collaborate with agent teammates that grow with you. We are taking agent harness to the next level — enabling multi-agent collaboration, effortless agent team design, and introducing agents as the unit of work interaction.

72.8k
0
AI