PDF Form Filler — Claude Code skill: fill PDF forms
This skill fills PDF forms from your data and pulls field values back out of completed documents. Useful when forms pile up or repeat.
npx skills add claude-office-skills/skills --skill pdf-form-filler -a claude-codeWhat PDF Form Filler does
It runs through the office-mcp MCP server and its fill_pdf_form and get_pdf_metadata tools. Supported field types: text, checkbox, radio button, dropdown, date, signature and combo box. Values go in through a field map — you describe how form field names line up with your data, and the agent fills the document.
Templates cover repeat work: a field map, a YAML mapping of values, and a sample JSON payload. Validation runs before the fill — email format, phone digits, SSN, date, ZIP, positive amounts, plus cross-field rules like employer_name being required when employed is true. The result report lists how many fields were filled, what failed, and which warnings came up.
Batch mode reads a CSV and produces one form per row into an output folder. The signature field needs a certificate or an image, so it stays manual — the report flags it as a warning. Install goes through npx skills add, or gh skill install for GitHub Copilot.
Check your field names before the run. A name that does not match the form means that field is silently skipped, and you only learn about it from the report.
What it helps with
- fill a PDF form from JSON or YAML data
- extract every field value from a completed PDF
- generate a batch of forms from CSV rows
- validate email, phone, date and ZIP before filling
- map a form's fields with types and required flags
Example prompts for the agent
- Fill this PDF form: name John Smith, date 2026-01-29, amount $1,500
- Extract all form field values from this PDF
- Generate forms for each row in this CSV
How to install PDF Form Filler
1Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill pdf-form-filler -a claude-code2Manually: put the files in place
~/.claude/skills/pdf-form-filler/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/pdf-form-filler/
1Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill pdf-form-filler -a codex2Manually: put the files in place
.agents/skills/pdf-form-filler/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill pdf-form-filler -a cursor2Manually: put the files in place
.cursor/skills/pdf-form-filler/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install claude-office-skills/skills pdf-form-filler2Manually: put the files in place
.github/skills/pdf-form-filler/SKILL.md1Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill pdf-form-filler -a gemini-cli2Platform CLI
gemini skills install https://github.com/claude-office-skills/skills --path pdf-form-fillerManually: put the files in place
.devin/skills/pdf-form-filler/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill pdf-form-filler -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about PDF Form Filler
How do I install PDF Form Filler in Claude?
Run npx skills add claude-office-skills/skills --skill pdf-form-filler -a claude-code. The skill file lands at ~/.claude/skills/pdf-form-filler/SKILL.md.
What does PDF Form Filler do?
It fills PDF forms with the data you supply, extracts field values from filled documents, and batch-generates forms from a CSV. It works through the office-mcp MCP server.
Which form fields does it support?
Text fields, checkboxes, radio buttons, dropdowns, date fields, combo boxes and signatures. A signature field needs a certificate or an image, otherwise you fill it by hand.
Source text
SKILL.md · MIT
---
# ═══════════════════════════════════════════════════════════════════════════════
# CLAUDE OFFICE SKILL - Enhanced Metadata v2.0
# ═══════════════════════════════════════════════════════════════════════════════
# Basic Information
name: PDF Form Filler
description: "Fill out PDF forms programmatically and extract form data"
version: "1.0"
author: claude-office-skills
license: MIT
# Categorization
category: pdf
tags:
- pdf
- form
- fill
- data-entry
department: All
# AI Model Compatibility
models:
recommended:
- claude-sonnet-4
- claude-opus-4
compatible:
- claude-3-5-sonnet
- gpt-4
- gpt-4o
# MCP Tools Integration
mcp:
server: office-mcp
tools:
- fill_pdf_form
- get_pdf_metadata
# Skill Capabilities
capabilities:
- form_filling
- data_entry
- pdf_forms
# Language Support
languages:
- en
- zh
---
# PDF Form Filler
Fill out PDF forms automatically and extract data from completed forms.
## Overview
This skill helps you:
- Fill PDF forms with provided data
- Extract data from filled forms
- Batch fill multiple forms
- Validate form data
- Create form-filling templates
## How to Use
### Fill a Form
```
"Fill this PDF form with the following data:
- Name: John Smith
- Date: 2026-01-29
- Amount: $1,500"
```
### Extract Form Data
```
"Extract all form field values from this PDF"
"What data is filled in this form?"
```
### Batch Fill
```
"Fill 50 copies of this form using data from the spreadsheet"
"Generate forms for each row in this CSV"
```
## Form Field Types
### Supported Fields
| Field Type | Description | Fill Method |
|------------|-------------|-------------|
| **Text Field** | Single/multi-line text | Direct text entry |
| **Checkbox** | Yes/No selection | Check/uncheck |
| **Radio Button** | One of many options | Select option |
| **Dropdown** | List selection | Choose value |
| **Date Field** | Date picker | Date value |
| **Signature** | Digital signature | Signature image/certificate |
| **Combo Box** | Dropdown with text entry | Select or type |
### Field Identification
```markdown
## Form Fields: [Form Name]
### Field Map
| Field Name | Type | Required | Page | Notes |
|------------|------|----------|------|-------|
| applicant_name | Text | Yes | 1 | Max 50 chars |
| birth_date | Date | Yes | 1 | MM/DD/YYYY |
| gender | Radio | Yes | 1 | M/F/Other |
| employed | Checkbox | No | 1 | Check if yes |
| state | Dropdown | Yes | 2 | US states |
| signature | Signature | Yes | 3 | Digital sig |
```
## Fill Templates
### Data Mapping Template
```markdown
## Form Fill Template: [Form Name]
### Form Info
- **File**: application_form.pdf
- **Total Fields**: 25
- **Required Fields**: 15
### Field Mappings
```yaml
# Personal Information
applicant_name: "${firstName} ${lastName}"
date_of_birth: "${birthDate}"
ssn_last_four: "${ssnLast4}"
phone: "${phone}"
email: "${email}"
# Address
street_address: "${address.street}"
city: "${address.city}"
state: "${address.state}"
zip_code: "${address.zip}"
# Employment
currently_employed: ${isEmployed} # checkbox
employer_name: "${employer.name}"
job_title: "${employer.title}"
# Selections
payment_method: "${paymentMethod}" # dropdown
agree_terms: true # checkbox
```
### Sample Data
```json
{
"firstName": "John",
"lastName": "Smith",
"birthDate": "1990-05-15",
"phone": "555-123-4567",
"email": "[email protected]",
"address": {
"street": "123 Main St",
"city": "New York",
"state": "NY",
"zip": "10001"
},
"isEmployed": true,
"employer": {
"name": "Acme Corp",
"title": "Manager"
},
"paymentMethod": "Direct Deposit"
}
```
```
## Output Formats
### Fill Result Report
```markdown
## Form Fill Result
### Summary
| Status | Value |
|--------|-------|
| **Form** | application_form.pdf |
| **Fields Filled** | 23/25 |
| **Errors** | 2 |
| **Output** | filled_application.pdf |
### Filled Fields
| Field | Value | Status |
|-------|-------|--------|
| applicant_name | John Smith | ✅ |
| date_of_birth | 05/15/1990 | ✅ |
| phone | 555-123-4567 | ✅ |
| state | NY | ✅ |
| payment_method | Direct Deposit | ✅ |
### Errors/Warnings
| Field | Issue | Suggestion |
|-------|-------|------------|
| ssn | Field not found | Check field name |
| signature | Requires certificate | Add signature manually |
### Validation
- ✅ All required fields filled
- ✅ Date formats correct
- ⚠️ Signature field needs manual completion
```
### Extracted Data Report
```markdown
## Form Data Extraction
### Source: completed_form.pdf
### Extracted Values
```json
{
"form_title": "Employment Application",
"submission_date": "2026-01-29",
"fields": {
"applicant_name": "Jane Doe",
"date_of_birth": "1985-03-20",
"email": "[email protected]",
"phone": "555-987-6543",
"address": "456 Oak Ave, Chicago, IL 60601",
"position_applied": "Senior Developer",
"salary_expectation": "$120,000",
"available_start": "2026-03-01",
"references_provided": true
}
}
```
### Field Statistics
| Metric | Value |
|--------|-------|
| Total fields | 30 |
| Filled fields | 28 |
| Empty fields | 2 |
| Extraction confidence | 98% |
```
## Batch Processing
### Batch Fill Job
```markdown
## Batch Form Fill
### Configuration
- **Template Form**: w9_form.pdf
- **Data Source**: vendors.csv
- **Records**: 150
- **Output Folder**: /filled_w9s/
### Data Preview
| Row | Name | TIN | Address |
|-----|------|-----|---------|
| 1 | Acme Corp | XX-XXX1234 | 123 Main St |
| 2 | Beta LLC | XX-XXX5678 | 456 Oak Ave |
| ... | ... | ... | ... |
### Progress
| Status | Count | % |
|--------|-------|---|
| ✅ Completed | 145 | 97% |
| ⚠️ Warnings | 3 | 2% |
| ❌ Errors | 2 | 1% |
### Errors
| Row | Issue |
|-----|-------|
| 47 | Invalid TIN format |
| 89 | Missing required: Address |
### Output Files
- w9_acme_corp.pdf
- w9_beta_llc.pdf
- ...
```
## Form Validation
### Validation Rules
```markdown
## Form Validation Rules
### Field Validations
| Field | Rule | Error Message |
|-------|------|---------------|
| email | Valid email format | "Invalid email address" |
| phone | 10 digits | "Phone must be 10 digits" |
| ssn | XXX-XX-XXXX format | "Invalid SSN format" |
| date | MM/DD/YYYY | "Use MM/DD/YYYY format" |
| zip | 5 or 9 digits | "Invalid ZIP code" |
| amount | Numeric, > 0 | "Enter positive number" |
### Cross-Field Validations
| Rule | Fields | Condition |
|------|--------|-----------|
| Conditional required | employer_name | Required if employed = true |
| Date range | end_date | Must be after start_date |
| Sum check | item_totals | Must equal grand_total |
```
### Validation Report
```markdown
## Pre-Fill Validation
### Data Validation Results
| Field | Value | Valid | Issue |
|-------|-------|-------|-------|
| email | john@email | ❌ | Missing domain |
| phone | 555-1234 | ❌ | Only 7 digits |
| date | 2026-01-29 | ✅ | - |
| zip | 10001 | ✅ | - |
### Summary
- ✅ Valid: 18 fields
- ❌ Invalid: 2 fields
- ⚠️ Warnings: 3 fields
### Recommendations
1. Fix email format: add domain (e.g., @company.com)
2. Complete phone number with area code
```
## Common Form Types
### Government Forms
| Form | Purpose | Key Fields |
|------|---------|------------|
| W-9 | Tax identification | TIN, name, address |
| I-9 | Employment eligibility | ID info, citizenship |
| W-4 | Withholding | Allowances, status |
| 1099 | Contractor income | Income, payer info |
### Business Forms
| Form | Purpose | Key Fields |
|------|---------|------------|
| NDA | Confidentiality | Parties, terms, dates |
| Invoice | Billing | Items, amounts, terms |
| PO | Purchase order | Items, quantities, vendor |
| Application | Various | Personal info, history |
## Tool Recommendations
### Desktop Software
- **Adobe Acrobat Pro**: Full form features
- **Foxit PDF Editor**: Good form support
- **PDFescape**: Free online option
- **JotForm**: Form creation and filling
### Programming Libraries
- **pdf-lib** (JavaScript): Fill and create forms
- **PyPDF2** (Python): Basic form filling
- **iText** (Java/.NET): Enterprise forms
- **PDFBox** (Java): Apache project
### Automation Tools
- **Adobe Acrobat Actions**: Batch processing
- **Power Automate**: Microsoft integration
- **Zapier + PDF.co**: Cloud automation
## Limitations
- Cannot execute actual form filling (provides guidance)
- Digital signatures require proper certificates
- Some secured PDFs prevent form filling
- Complex calculations may not auto-update
- Flattened forms cannot be edited
- Field names must match exactly
© claude-office-skills · MIT · claude-office-skills/skills