agentsclimarketplace

Run3 inspect pdf form

Skill cxcscmu/SkillLearnBench/skills/b3-teacher-feedback-gemini-3-flash-preview/court-form-filling/run3_inspect_pdf_form

Extracts detailed information about form fields in a PDF, including field keys, types, page indices, current values, and allowed export values for checkboxes and radio buttons. Use this to identify how multi-line text is split across different keys (e.g., 'Reason_1', 'Reason_2') and to find the exact string required to check a box (e.g., 'Yes', '1', or 'On').From its SKILL.md

Install
npx -y skills add cxcscmu/SkillLearnBench --skill run3_inspect_pdf_form

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

SKILL.md

2.2 KB, 371 tokens by cl100k_base, as published. Nobody here has run it

import pypdf

def inspect_pdf_form(pdf_path: str): """ Inspects the PDF to provide a map of field names to their properties. Useful for discovering exact keys for multi-line fields and checkbox export values. """ reader = pypdf.PdfReader(pdf_path) form_info = []

# Iterate through pages to find which field belongs to which page
for page_index, page in enumerate(reader.pages):
    if "/Annots" in page:
        for annot in page["/Annots"]:
            obj = annot.get_object()
            # Only process form fields (Widget annotations with a Title /T)
            if obj.get("/Subtype") == "/Widget" and "/T" in obj:
                field_key = obj.get("/T")
                field_type = obj.get("/FT")
                current_value = obj.get("/V", "")
                
                # Extract export values for checkboxes/radio buttons
                # These are typically found in the /AP (Appearance) or /Opt keys
                options = []
                if "/Opt" in obj:
                    options = obj["/Opt"]
                elif "/AS" in obj or "/AP" in obj:
                    # Check normal appearance states for checkboxes
                    ap = obj.get("/AP")
                    if ap and "/N" in ap:
                        options = list(ap["/N"].keys())

                form_info.append({
                    "page": page_index,
                    "key": field_key,
                    "type": field_type,
                    "value": current_value,
                    "options": options
                })

for info in form_info:
    print(f"Page {info['page']} | Key: {info['key']} | Type: {info['type']} | Options: {info['options']}")
return form_info

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.