CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

pdf

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.

Quality

86%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

High

Do not use without reviewing

SKILL.md
Quality
Evals
Security

Quality

Content

68%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

The body is a strong, highly actionable code cookbook with excellent token efficiency, but its navigation layer is broken: it defers all advanced topics and form filling to two files that are absent from the bundle while leaving the eight bundled scripts entirely undocumented. Batch operations also lack any verification steps.

Suggestions

Fix the dangling references: either include REFERENCE.md and FORMS.md in the bundle or remove/rewrite the pointers in Overview, Quick Reference, and Next Steps that direct the reader to them.

Document the existing scripts/ bundle from the body — e.g., add a 'Form filling' section listing fill_fillable_fields.py, extract_form_structure.py, extract_form_field_info.py, fill_pdf_form_with_annotations.py, and check_fillable_fields.py with their invocations, since these are the bundle's actual advanced content and are currently undiscoverable.

Add lightweight validation checkpoints after batch/destructive operations, such as verifying the merged output's page count equals the sum of inputs (len(PdfReader('merged.pdf').pages)) and confirming decrypted files open without a password, to lift workflow clarity above the cap.

DimensionReasoningScore

Conciseness

The body is almost entirely executable code with minimal prose and no explanations of concepts Claude already knows (the subscripts/superscripts gotcha is a genuine non-obvious pitfall that earns its place). It sits between anchor 5 and anchor 4: minor trimming is possible — the 'Next Steps' section repeats the same 'see REFERENCE.md' pointer three times and FORMS.md twice (both already linked in Overview and the Quick Reference table), and the pdftk '(if available)' section duplicates qpdf coverage — but the bulk is lean, copy-paste material.

4 / 5

Actionability

Every section provides complete, runnable code or commands (merge, split, rotate, text/table extraction, reportlab creation, watermark, encrypt, OCR, pdfimages, qpdf/pdftotext invocations), and the Quick Reference table maps each common task to the best tool. This matches the anchor-5 example ('fully executable; copy-paste ready... specific examples cover the common cases') exactly; nothing is pseudocode or merely descriptive.

5 / 5

Workflow Clarity

The recipes are individually clear and correctly ordered (read → transform → write), but there are no validation or verification checkpoints anywhere — e.g., no page-count check after merge/split, no open-test after encrypt/decrypt. Because merging, splitting, and encryption are batch/destructive-style operations, the guideline capping workflow clarity at 3 for missing validation applies; it cannot score 4 ('most checkpoints present') since none are present.

3 / 5

Progressive Disclosure

The body points repeatedly to 'REFERENCE.md' and 'FORMS.md' ('read FORMS.md and follow its instructions', 'see REFERENCE.md'), but neither file exists anywhere in the skill directory — there is no references/ directory at all, so every advanced-content pointer is a dead end. Meanwhile the bundle's actual content, eight form-filling scripts in scripts/ (fill_fillable_fields.py, extract_form_structure.py, check_bounding_boxes.py, create_validation_image.py, etc.), is never mentioned by name in the body, making it undiscoverable. Structure exists on the surface (clear section headers, one-level-deep pointers), but the pointers are broken and the real bundle is buried, fitting anchor 2 rather than 3 ('references present but not clearly signaled' would require the referenced files to at least exist).

2 / 5

Total

14

/

20

Passed

Description

100%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

The description is a model trigger: it enumerates the skill's concrete capabilities in third person, includes both extension-based and verb-based triggers, and explicitly separates the 'when' clauses from the 'what' list. No fluff, over-claims, or vagueness are present.

DimensionReasoningScore

Specificity

The description enumerates a comprehensive set of concrete actions: 'reading or extracting text/tables', 'combining or merging', 'splitting', 'rotating pages, adding watermarks', 'filling PDF forms', 'encrypting/decrypting', 'extracting images', and 'OCR on scanned PDFs'. This matches the anchor-5 example ('Extract text and tables from PDF files, fill forms, merge documents, convert pages to images') with even broader coverage; it is not the level-4 anchor because there are no meaningful coverage gaps, and not below because nothing is vague.

5 / 5

Completeness

Both 'what' (the full action list) and 'when' are answered explicitly with concrete trigger phrases: 'Use this skill whenever the user wants to do anything with PDF files' and 'If the user mentions a .pdf file or asks to produce one, use this skill'. This is a direct match to the anchor-5 example; a 4 would require the 'when' clause to be less explicit, and it is not.

5 / 5

Trigger Term Quality

Natural user phrasing and synonyms are comprehensively covered: 'PDF files', 'PDFs', 'a .pdf file', 'filling PDF forms', 'merging', 'splitting', 'watermarks', 'scanned PDFs', 'OCR'. The explicit '.pdf' file-extension trigger matches the anchor-5 example ('PDF files, PDFs, forms, document extraction, .pdf'); level 4 would require missing natural terms, which is not the case here.

5 / 5

Distinctiveness Conflict Risk

The description is anchored entirely to a single clear niche (PDF files) with distinct triggers ('mentions a .pdf file'), closely matching the anchor-5 example ('...Use when working with PDF files or when the user mentions PDFs'). It would not plausibly fire for a non-PDF skill, so it is not level 4 ('minor overlap risk') or below.

5 / 5

Total

20

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

metadata_version

'metadata.version' is missing

Warning

Total

15

/

16

Passed

Repository

agentscope-ai/QwenPaw

Path

src/qwenpaw/agents/skills/pdf-en/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.