{"id":"cmtw0nj40b9lcad07uabjjbh0","slug":"pdf","publicId":"2636ff7f-0fd3-4890-9118-62d6f7dddbb2","name":"pdf","description":"Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text/tables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting/decrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill.","version":"1.2","author":"k-dense-ai","license":"Proprietary. LICENSE.txt has complete terms","compatibility":"","status":"completed","overallGrade":"B","scannerVersion":9,"fileCount":12,"hasSkillMd":true,"hasScripts":true,"hasReferences":false,"hasEvals":false,"hasAssets":false,"sourceType":"github","sourceUrl":"https://github.com/k-dense-ai/scientific-agent-skills/tree/main/skills/pdf","createdAt":"2026-09-10T21:05:13.344Z","completedAt":"2026-09-10T21:05:13.342Z","visibility":"public","publishedAt":"2026-09-10T21:05:13.342Z","category":"","frameworks":[],"badgeStatus":"conditional","downloadCount":0,"verdictRationale":{"summary":"Skill has warnings: 1 warning in security or structure checks.","verdict":"warn","scanners":[{"source":"vettd","weight":1,"verdict":"warn"},{"source":"cisco","weight":0.8,"verdict":"pass"}],"consensus":"warn","warnTriggers":["References external URL — review for indirect prompt injection risk"],"policyVersion":"consensus-v1","hardFailTriggers":[]},"verdictPolicyVersion":"consensus-v1","skillId":"cmtw0nj3nb9laad07ibicy7wg","findings":[{"id":"cmtw0nj41b9m0ad07kha66mag","source":"vettd","category":"security","label":"References external URL — review for indirect prompt injection risk","detail":"External URL(s) detected in SKILL.md — referenced content can change after audit","severity":"medium","ruleId":"VTD-0088","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"42638a8b7e9fc5df27449992eaebc724","filepath":"SKILL.md"},{"id":"cmtw0nj41b9lhad07lkdub5an","source":"vettd","category":"best-practices","label":"Skill name collides with well-known skill","detail":"\"pdf\" matches a well-known skill name — may cause unintended invocation","severity":"medium","ruleId":"VTD-0100","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"d5653fdae54338040931d3b1256b5eba","filepath":""},{"id":"cmtw0nj41b9llad07zmnqjfcv","source":"vettd","category":"description","label":"Description overclaims scope","detail":"Broad trigger words (anything, everything, all files, etc.) widen attack surface — narrow to specific use cases","severity":"low","ruleId":"VTD-0113","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"0be9622b7b1c4ed3a8918b706d5d7b7d","filepath":""},{"id":"cmtw0nj41b9lzad07l6krbssy","source":"vettd","category":"security","label":"No prompt injection or jailbreak signals detected","detail":"Scanned text content for instruction override, jailbreak framing, credential solicitation, and embedded injection markers","severity":"info","ruleId":"VTD-0092","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"ee5675c6452295fc92108d4c30cfebf6","filepath":""},{"id":"cmtw0nj41b9liad07bpli49dc","source":"vettd","category":"security","label":"No repository link","detail":"No repository field found in SKILL.md frontmatter. Skills without a verifiable source repository cannot be externally audited.","severity":"info","ruleId":"VTD-0083","owaspLlmCategory":null,"intent":"negligent","chainId":null,"fingerprint":"e09767e7943872a2754f559ba01ef7db","filepath":""},{"id":"cmtw0nj41b9lyad07q0df3tig","source":"vettd","category":"security","label":"No secrets or unsafe code patterns detected","detail":"Scanned all files for credentials, private keys, and code-level risks (eval, shell exec, destructive ops)","severity":"info","ruleId":"VTD-0091","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"2e3428ecd3c04cac33cabd959f51437a","filepath":""},{"id":"cmtw0nj41b9lead07bfmpksbd","source":"vettd","category":"structure","label":"scripts/ directory present","detail":"Bundled executable scripts found","severity":"info","ruleId":"VTD-0096","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"21a167b473d29b0a653734953d43b2fc","filepath":""},{"id":"cmtw0nj41b9ldad07mg2c31dj","source":"vettd","category":"structure","label":"SKILL.md present","detail":"Required skill definition file found","severity":"info","ruleId":"VTD-0095","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"c4ab14319b89c3d0802fadf0dd105bac","filepath":""},{"id":"cmtw0nj41b9lgad0799hxmn82","source":"vettd","category":"structure","label":"Valid name field","detail":"Name \"pdf\" follows spec (lowercase, hyphens, ≤64 chars)","severity":"info","ruleId":"VTD-0099","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"5ba54eca0b3e299a99112de98cbcd97f","filepath":""},{"id":"cmtw0nj41b9lkad078ei9j6nb","source":"vettd","category":"description","label":"Description includes usage context","detail":"Good: description explains when to activate the skill","severity":"info","ruleId":"VTD-0111","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"e325ab773f2c18f6f9d864add6464110","filepath":""},{"id":"cmtw0nj41b9ljad0757r309u0","source":"vettd","category":"description","label":"Description within character limit","detail":"437/1024 characters used","severity":"info","ruleId":"VTD-0110","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"66553d595a652c45a6f0d4353184b37e","filepath":""},{"id":"cmtw0nj41b9lnad07q9yw90xk","source":"vettd","category":"best-practices","label":"Examples included","detail":"Found code blocks, input/output samples, or an examples section — concrete samples help agents pattern-match effectively","severity":"info","ruleId":"VTD-0103","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"c2ceb48c4af3c87dafa32ec2596251b8","filepath":""},{"id":"cmtw0nj41b9load07q15bsetq","source":"vettd","category":"best-practices","label":"No clear workflow structure","detail":"Consider adding numbered steps or a structured procedure for the agent to follow","severity":"info","ruleId":"VTD-0106","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"2368c9a31ac52269c854f105795cf28c","filepath":""},{"id":"cmtw0nj41b9lpad07tb1ezrlj","source":"vettd","category":"best-practices","label":"Progressive disclosure used","detail":"SKILL.md body references files in references/, scripts/, or assets/ — agents can load additional context on demand instead of consuming everything upfront","severity":"info","ruleId":"VTD-0107","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"6fd5870d64ef20cb2bbaf421f8655a32","filepath":""},{"id":"cmtw0nj41b9lmad07dgngztg6","source":"vettd","category":"best-practices","label":"SKILL.md body length is reasonable","detail":"313 lines (recommended: under 500)","severity":"info","ruleId":"VTD-0101","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"42debaa072535bf5650f90d3168f0b93","filepath":""},{"id":"cmtw0nj41b9lqad07t66y7t8p","source":"vettd","category":"scripts","label":"CLI help supported","detail":"scripts/check_bounding_boxes.py: Script documents its interface via --help or argument parsing","severity":"info","ruleId":"VTD-0114","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"ce84d6eb229ce245b10a2b4c4d8e27b3","filepath":"scripts/check_bounding_boxes.py"},{"id":"cmtw0nj41b9lrad07fnx61coa","source":"vettd","category":"scripts","label":"CLI help supported","detail":"scripts/check_fillable_fields.py: Script documents its interface via --help or argument parsing","severity":"info","ruleId":"VTD-0114","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"7fb94ac0f7599b24e3bed31c8f0cda23","filepath":"scripts/check_fillable_fields.py"},{"id":"cmtw0nj41b9lsad07dfza0hwb","source":"vettd","category":"scripts","label":"CLI help supported","detail":"scripts/convert_pdf_to_images.py: Script documents its interface via --help or argument parsing","severity":"info","ruleId":"VTD-0114","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"3788fea2a5202cbe9d30bf9113a66ed7","filepath":"scripts/convert_pdf_to_images.py"},{"id":"cmtw0nj41b9ltad07ehj9trvg","source":"vettd","category":"scripts","label":"CLI help supported","detail":"scripts/create_validation_image.py: Script documents its interface via --help or argument parsing","severity":"info","ruleId":"VTD-0114","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"a28a7fee6ab75a4dbdfa1d286f3dbab8","filepath":"scripts/create_validation_image.py"},{"id":"cmtw0nj41b9luad07sozp6u1i","source":"vettd","category":"scripts","label":"CLI help supported","detail":"scripts/extract_form_field_info.py: Script documents its interface via --help or argument parsing","severity":"info","ruleId":"VTD-0114","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"a4227c189353dcc413dcbf224b98e166","filepath":"scripts/extract_form_field_info.py"},{"id":"cmtw0nj41b9lvad07dq6y9o67","source":"vettd","category":"scripts","label":"CLI help supported","detail":"scripts/extract_form_structure.py: Script documents its interface via --help or argument parsing","severity":"info","ruleId":"VTD-0114","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"9f992b8786df294bb73d4f98ce1fe235","filepath":"scripts/extract_form_structure.py"},{"id":"cmtw0nj41b9lwad07s2c7k4ad","source":"vettd","category":"scripts","label":"CLI help supported","detail":"scripts/fill_fillable_fields.py: Script documents its interface via --help or argument parsing","severity":"info","ruleId":"VTD-0114","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"ce1590d6eeca1778e5604a716f5c776e","filepath":"scripts/fill_fillable_fields.py"},{"id":"cmtw0nj41b9lxad07de7m9uhq","source":"vettd","category":"scripts","label":"CLI help supported","detail":"scripts/fill_pdf_form_with_annotations.py: Script documents its interface via --help or argument parsing","severity":"info","ruleId":"VTD-0114","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"714810194cecfd18317136a66d02207a","filepath":"scripts/fill_pdf_form_with_annotations.py"},{"id":"cmtw0nj41b9lfad078ui79f3h","source":"vettd","category":"evals","label":"No evaluation test cases","detail":"Add an evals/ directory with test prompts and expected outputs to measure skill quality","severity":"info","ruleId":"VTD-0118","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"41d019e0494a4a9763fc23c948d14e09","filepath":""}],"scannerRuns":[{"source":"cisco","status":"success","verdict":null,"grade":"A","findingCount":0,"criticalCount":0,"highCount":0},{"source":"vettd","status":"success","verdict":null,"grade":"B","findingCount":24,"criticalCount":0,"highCount":0}],"user":{"name":"Kris Mondlane","image":"https://avatars.githubusercontent.com/u/237055?v=4"},"repository":{"owner":"k-dense-ai","name":"scientific-agent-skills"},"freshness":{"status":"unreachable","reason":"ref_not_found","retryable":false,"renamedTo":null,"lastCheckedAt":"2026-10-16T09:32:41.441Z","lastVerifiedAt":"2026-09-30T09:29:06.533Z","lastChangeDetectedAt":"2026-10-01T08:29:55.166Z","scannedHash":"808f38c0137805091270b6aa34c68aa92f254963","latestUpstreamHash":"b59da9d43562ef59d7ea682f9e4509df2dc08355","nextCheckDueAt":"2026-10-23T09:32:41.441Z"},"signalCategories":[{"category":"safety","label":"Safety","form":"graded","verdict":null,"rows":[]},{"category":"reliability","label":"Reliability & Quality","form":"graded","verdict":null,"rows":[]},{"category":"performance","label":"Performance","form":"measured","verdict":null,"rows":[]},{"category":"cost","label":"Cost","form":"measured","verdict":null,"rows":[]},{"category":"compatibility","label":"Compatibility","form":"unjudged","verdict":null,"rows":[]},{"category":"sentiment","label":"Popularity","form":"unjudged","verdict":null,"rows":[]},{"category":"characteristics","label":"Characteristics","form":"unjudged","verdict":null,"rows":[]}],"signalCount":30,"publisherSupplied":["name","description","author","version","license"]}