본문으로 건너뛰기
cccskills
무료GitHub에 공개

pdf-form-filler

Fill interactive PDF forms (AcroForm) with user-provided data, verify every field, and deliver a flattened copy. Use when the user asks to fill in, complete, or populate a PDF form, provides data alongside a fillable PDF, or mentions PDF form fields, checkboxes, or dropdowns. Do not use for creating PDFs from scratch, merging or splitting PDFs, or scanned/image-only forms with no interactive fields - for those, tell the user this skill cannot help and suggest an OCR-based approach instead.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(3)

  • SKILL.md3.7 KB
  • references/field-types.md1.9 KB
  • scripts/fill_form.py2.3 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

PDF Form Filler

Fill AcroForm PDFs programmatically and prove the result is correct before handing it over. The failure mode to design against: a form that looks filled in one viewer but shows empty fields in another.

Quick start

python scripts/fill_form.py --list form.pdf              # discover fields
python scripts/fill_form.py form.pdf data.json out.pdf   # fill + flatten

Workflow

1. Inspect the form

Run scripts/fill_form.py --list to dump every field with its type, current value, and (for choices) allowed options.

  • Zero fields found → this is not an AcroForm. Stop and tell the user; do not attempt to overlay text at guessed coordinates.
  • Cryptic field names (Text_1, untitled4) → map them to meaning using the page number and nearby label text; see references/field-types.md for how each field type reports its label.

2. Map user data to fields

Build a JSON object of field_name: value. Rules that prevent the common bugs:

  • Checkboxes take their export value (often /Yes, sometimes /On or custom) — true does not work. --list prints the export value.
  • Radio groups are one field; set the group to the chosen option's export value.
  • Dropdowns/list boxes only accept values from their options list. If the user's value is not in the list, ask — do not pick the "closest" option.
  • Leave fields the user gave no data for untouched. Never invent values.

If any required data is missing or ambiguous (e.g. two date fields, one date provided), ask the user before filling.

3. Fill and flatten

Run the fill script. It sets NeedAppearances, writes values, and flattens so the values render everywhere. Flattening makes fields read-only — if the user wants the form to stay editable, pass --no-flatten and warn them some viewers may not show the values.

4. Verify (mandatory)

  1. Re-open the output and dump field values (or text, if flattened); confirm every value you set is present and correct.
  2. Render page 1 to an image and look at it: values must sit inside their boxes, not truncated, checkboxes visibly ticked.
  3. Confirm page count and non-form content are unchanged from the input.

Any mismatch → fix the mapping and repeat. Do not deliver unverified output.

5. Deliver

Send the output file plus a short table of field → value that was filled, and list any fields intentionally left blank.

Edge cases

  • Encrypted/password PDF: ask for the password; never try to strip protection.
  • XFA forms (--list reports XFA): legacy Adobe format, not supported — say so explicitly rather than producing a file that only works in Acrobat.
  • Date fields with format hints (mm/dd/yyyy in the tooltip): match the hinted format exactly.
  • Text longer than the field: warn the user and ask whether to abbreviate; flattened truncation is invisible to them otherwise.

Files

FileWhen to read it
references/field-types.mdField-type quirks: export values, radio hierarchies, rich-text fields
scripts/fill_form.pyThe fill/list/flatten implementation (pypdf)

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Diagnose failing HTTP API calls - 4xx/5xx responses, timeouts, TLS errors, and auth failures - by isolating the fault layer and producing a minimal reproduction. Use when the user reports an API request failing, pastes an HTTP error response or status code, or asks why a request works in one client but not another. Do not use for designing new APIs or for performance tuning of requests that already succeed.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

Krusty84/SKILL.md-Inspector432026년 8월 1일 업데이트

Reduce a failing test case, script, or input file to the smallest version that still reproduces a bug. Use when the user has a large reproduction and asks to minimize, bisect, or isolate it, or says things like "it stops failing when I remove half the file". Do not use when there is no reliable reproduction yet - help build one first, then minimize it.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

Krusty84/SKILL.md-Inspector432026년 8월 1일 업데이트

Generate or update a CHANGELOG.md from merged commits and pull requests, grouped by change type and written for end users. Use when the user asks to write release notes, update the changelog, or summarize what changed between two versions or tags. Do not use for writing individual commit messages or for API-reference documentation.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

Krusty84/SKILL.md-Inspector432026년 8월 1일 업데이트

Apply the team style guide to source files - naming conventions, comment style, and file organization. Use when the user asks to align code with the style guide or clean up naming.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

Krusty84/SKILL.md-Inspector432026년 8월 1일 업데이트

Run the project's configured formatter (prettier, black, gofmt, rustfmt) on changed files and fix formatting-only CI failures. Use when the user asks to format code, fix a lint/format CI step, or normalize whitespace and import order. Do not use for logic changes or refactoring.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

Krusty84/SKILL.md-Inspector432026년 8월 1일 업데이트

Clean and normalize messy CSV/TSV files - fix malformed rows, inconsistent headers, mixed encodings, stray delimiters, and duplicated records - and deliver a valid, verified file. Use when the user mentions a broken, messy, or malformed CSV, a file a spreadsheet tool refuses to open, or asks to deduplicate or normalize tabular data. Do not use when the deliverable is analysis or a chart rather than a cleaned file, or for Excel-native features like formulas and pivot tables.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

Krusty84/SKILL.md-Inspector432026년 8월 1일 업데이트

Krusty84의 스킬 모두 보기

이 스킬의 문제 신고