[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7C1TH88PRKH41AM2R5SAYBN":3,"skill-same:01M7C1TH88PRKH41AM2R5SAYBN":93},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":18,"linkOnly":19,"markdownContent":20,"markdownBody":20,"frontMatter":21,"refName":22,"commitSha":23,"skillDirectory":24,"forksCount":25,"repositoryHtmlUrl":26,"repositoryHomepageUrl":6,"ownerHtmlUrl":27,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":28,"install":29,"resources":42},"01M7C1TH88PRKH41AM2R5SAYBN","pdf",null,"linyouxue\u002Fskill-repair-benchmark","linyouxue","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F216151464?v=4","01M7BJEVCXKD74KH6FG9CBVSQB","林宥学","01M7BJEVE02NP217V93BKZFC0J",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FSkillrevise\u002Ftasks\u002Ffinancial-modeling-qa\u002Frepaired_run\u002Finputs\u002Fskills\u002Fpdf\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"# PDF-to-Data Extraction and Verified Output\n\n## Purpose\nExtract text and simple tables from PDFs in a tool-constrained execution environment, optionally combine with spreadsheet data, and produce verifier-aligned output artifacts with explicit existence\u002Freadability checks.\n\n## When to Use\nUse this skill when the task requires reading a PDF (rules, spec, report, or embedded tables) and turning it into structured text\u002Fdata for downstream computation, especially when the environment enforces strict command execution (one command per tool call unless explicitly chained) and a verifier expects an output file at an exact path.\n\n## Procedure\n- 1) Discover inputs and constraints (no assumptions)\n- List available files in the working directory and identify candidate PDFs\u002Fspreadsheets.\n- If the task\u002Fverifier specifies an output path (for example \u002Froot\u002Fanswer.txt), record it exactly; otherwise choose an output path only after confirming a writable directory.\n- Check tool availability by attempting minimal imports (pypdf, pdfplumber, pandas) using a single Python invocation.\n- 2) Choose an extraction route (decision point)\n- If you need plain text and layout is not critical: prefer pypdf text extraction.\n- If layout or tables matter: prefer pdfplumber.\n- If imports fail, fall back to command-line utilities only if they are present (for example pdftotext); discover by running the tool with a help\u002Fversion flag.\n- 3) Extract minimally, then validate evidence (checkpoint)\n- Run the smallest extraction that proves progress (for example: page count, first 200 characters of page 1, or table row counts).\n- Evidence to collect before heavier processing:\n- Number of pages extracted successfully.\n- Non-empty text sample or non-empty table output for at least one page.\n- If evidence is empty, reassess: the PDF may be scanned (image-only). Only then consider OCR as an explicit alternative, and validate that OCR tools are installed before proceeding.\n- 4) If spreadsheets are involved, load with discovery-first parsing (optional)\n- Use pandas to enumerate sheet names and inspect headers (read a small sample) before assuming column names or data types.\n- Validate row\u002Fcolumn counts and print a small preview as evidence before computing final results.\n- 5) Produce required outputs and verify at the exact path (final checkpoint)\n- Write outputs only after confirming the destination directory is writable.\n- Immediately verify the artifact at the exact required path using a separate existence + read check (for example: list the file and print the first lines).\n- Do not stop until the verifier-visible check succeeds.\n- 6) Bounded recovery after tool failure (single fallback branch)\n- If any tool call fails (for example: \"cannot execute multiple commands at once\" or an import error):\n- Re-run the smallest failing action as a single command only (or explicitly chain with && in one shell command).\n- Re-run only the minimal validation check (page count\u002Ftext sample\u002Ffile existence) to confirm recovery.\n- If the same failure repeats, switch to the closest supported alternative (library \u003C-> CLI) and retry the minimal check once; then stop and request clarification if requirements are ambiguous.\n\n## Constraints \u002F Pitfalls\n- One-command rule: never submit multiple independent commands in one tool call unless explicitly chained with && or ; in a single shell command. Prefer separate tool calls for \"run then verify\" steps.\n- Verifier alignment: never assume an output was created; always perform an explicit existence\u002Freadability check at the exact task-specified path before finishing. Avoid writing to alternate locations unless the task allows it and you can prove the verifier will read it there.",{},"main","cdcb6d230f3b15c3c33f8a2bdd16439f43602cbe","evaluation\u002Fresults\u002FSkillrevise\u002Ftasks\u002Ffinancial-modeling-qa\u002Frepaired_run\u002Finputs\u002Fskills\u002Fpdf",1,"https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark","https:\u002F\u002Fgithub.com\u002Flinyouxue","2026-11-14 20:28:35",{"source":7,"skillName":5,"commands":30,"prompt":40,"zipAvailable":41},[31,34,37],{"tool":32,"command":33},"npx","npx skills add linyouxue\u002Fskill-repair-benchmark --skill pdf",{"tool":35,"command":36},"bunx","bunx skills add linyouxue\u002Fskill-repair-benchmark --skill pdf",{"tool":38,"command":39},"pnpm","pnpm dlx skills add linyouxue\u002Fskill-repair-benchmark --skill pdf","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FSkillrevise\u002Ftasks\u002Ffinancial-modeling-qa\u002Frepaired_run\u002Finputs\u002Fskills\u002Fpdf\u002FSKILL.md",true,[43,49,55,59,65,69,73,77,81,85,89],{"path":44,"resourceType":45,"resourceTypeDesc":46,"sizeBytes":47,"sourceHtmlUrl":48},"references\u002Fforms.md","REFERENCE","参考文档",9438,"https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FSkillrevise\u002Ftasks\u002Ffinancial-modeling-qa\u002Frepaired_run\u002Finputs\u002Fskills\u002Fpdf\u002Freferences\u002Fforms.md",{"path":50,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":53,"sourceHtmlUrl":54},"references\u002FLICENSE.txt","LICENSE","许可证",1467,"https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FSkillrevise\u002Ftasks\u002Ffinancial-modeling-qa\u002Frepaired_run\u002Finputs\u002Fskills\u002Fpdf\u002Freferences\u002FLICENSE.txt",{"path":56,"resourceType":45,"resourceTypeDesc":46,"sizeBytes":57,"sourceHtmlUrl":58},"references\u002Freference.md",16692,"https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FSkillrevise\u002Ftasks\u002Ffinancial-modeling-qa\u002Frepaired_run\u002Finputs\u002Fskills\u002Fpdf\u002Freferences\u002Freference.md",{"path":60,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":63,"sourceHtmlUrl":64},"scripts\u002Fcheck_bounding_boxes_test.py","SCRIPT","脚本",8818,"https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FSkillrevise\u002Ftasks\u002Ffinancial-modeling-qa\u002Frepaired_run\u002Finputs\u002Fskills\u002Fpdf\u002Fscripts\u002Fcheck_bounding_boxes_test.py",{"path":66,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":67,"sourceHtmlUrl":68},"scripts\u002Fcheck_bounding_boxes.py",3139,"https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FSkillrevise\u002Ftasks\u002Ffinancial-modeling-qa\u002Frepaired_run\u002Finputs\u002Fskills\u002Fpdf\u002Fscripts\u002Fcheck_bounding_boxes.py",{"path":70,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":71,"sourceHtmlUrl":72},"scripts\u002Fcheck_fillable_fields.py",362,"https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FSkillrevise\u002Ftasks\u002Ffinancial-modeling-qa\u002Frepaired_run\u002Finputs\u002Fskills\u002Fpdf\u002Fscripts\u002Fcheck_fillable_fields.py",{"path":74,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":75,"sourceHtmlUrl":76},"scripts\u002Fconvert_pdf_to_images.py",1123,"https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FSkillrevise\u002Ftasks\u002Ffinancial-modeling-qa\u002Frepaired_run\u002Finputs\u002Fskills\u002Fpdf\u002Fscripts\u002Fconvert_pdf_to_images.py",{"path":78,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":79,"sourceHtmlUrl":80},"scripts\u002Fcreate_validation_image.py",1603,"https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FSkillrevise\u002Ftasks\u002Ffinancial-modeling-qa\u002Frepaired_run\u002Finputs\u002Fskills\u002Fpdf\u002Fscripts\u002Fcreate_validation_image.py",{"path":82,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":83,"sourceHtmlUrl":84},"scripts\u002Fextract_form_field_info.py",6127,"https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FSkillrevise\u002Ftasks\u002Ffinancial-modeling-qa\u002Frepaired_run\u002Finputs\u002Fskills\u002Fpdf\u002Fscripts\u002Fextract_form_field_info.py",{"path":86,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":87,"sourceHtmlUrl":88},"scripts\u002Ffill_fillable_fields.py",4863,"https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FSkillrevise\u002Ftasks\u002Ffinancial-modeling-qa\u002Frepaired_run\u002Finputs\u002Fskills\u002Fpdf\u002Fscripts\u002Ffill_fillable_fields.py",{"path":90,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":91,"sourceHtmlUrl":92},"scripts\u002Ffill_pdf_form_with_annotations.py",3596,"https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FSkillrevise\u002Ftasks\u002Ffinancial-modeling-qa\u002Frepaired_run\u002Finputs\u002Fskills\u002Fpdf\u002Fscripts\u002Ffill_pdf_form_with_annotations.py",[94,101,108,115,120,125],{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":18},"01M7E1HGVRY73NBJ022CJG13X6","video-frame-extraction","Extract frames from video files and save them as images using OpenCV","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_03\u002Finputs\u002Fskills\u002Fvideo-frame-extraction\u002FSKILL.md",[],[],{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":107,"publishedAt":18},"01M7E1HAG5R7CJ9C8NYJS771MB","openai-vision","Analyze images and multi-frame sequences using OpenAI GPT vision models","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_03\u002Finputs\u002Fskills\u002Fopenai-vision\u002FSKILL.md",[],[],{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":114,"publishedAt":18},"01M7E1H7DADKB6QBWKC2KQ63SZ","image-ocr","Extract text content from images using Tesseract OCR via Python, including structured field extraction from receipts and forms","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_03\u002Finputs\u002Fskills\u002Fimage-ocr\u002FSKILL.md",[],[],{"skillNo":116,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":119,"publishedAt":18},"01M7E1H0WBNT43TENGQY7AVZHD","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_02\u002Finputs\u002Fskills\u002Fvideo-frame-extraction\u002FSKILL.md",[],[],{"skillNo":121,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":124,"publishedAt":18},"01M7E1GTC7D4N4Q2EF03875J9E","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_02\u002Finputs\u002Fskills\u002Fopenai-vision\u002FSKILL.md",[],[],{"skillNo":126,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":129,"publishedAt":18},"01M7E1GQ92CWFMGH53KSSE4WER","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_02\u002Finputs\u002Fskills\u002Fimage-ocr\u002FSKILL.md",[],[]]