CtrlK
BlogDocsLog inGet started
Tessl Logo

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.

62

Quality

75%

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

Fix and improve this skill with Tessl

tessl review fix ./configs/microservice/bff-service/configs/agent-skills/wanwu/pdf/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

50%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 skill delivers strong, executable code examples across the full PDF task range, but it is noticeably verbose with heavy repetition around font guidance, and its reference architecture is broken: three of the files it points to are missing from the bundle. Batch operations lack validation steps despite validation scripts existing unused in scripts/.

Suggestions

Extract the Chinese Font Support deep-dive (~150 lines) into a separate reference file and deduplicate: state the drawString-vs-Paragraph warning and the 'no font files needed' fact once instead of three to four times.

Add validation checkpoints after batch/destructive operations (merge, split, rotate, encrypt), and surface the existing validation scripts (create_validation_image.py, check_bounding_boxes.py, check_fillable_fields.py) that the body never mentions.

Fix the reference architecture: either add REFERENCE.md, FORMS.md, and BEST_PRACTICES.md to the bundle or remove the citations, and correct the TTF fallback example that registers a .ttc file immediately after documenting TTC files as unsupported.

DimensionReasoningScore

Conciseness

The body runs ~600 lines with a heavily padded Chinese Font Support section ('Why CIDFont is Better' with six ✅ bullets) and the same facts repeated many times — 'no font files needed!' appears four times and the drawString-vs-Paragraph warning is explained three separate times. Much of the pypdf/reportlab basic usage and library survey is knowledge Claude already has.

2 / 5

Actionability

Mostly executable, copy-paste-ready code: the Quick Start reportlab example, pypdf/pdfplumber snippets, and qpdf/pdftotext/pdftk commands are concrete, and referenced script functions (register_chinese_fonts, get_chinese_font_name, markdown_to_pdf) verified to exist. Minor gaps: the 'Built-in Fonts' example uses 2*cm without importing cm, and the TTF fallback example registers NotoSerifCJK-Regular.ttc — the exact TTC format the document itself says causes TTFError.

4 / 5

Workflow Clarity

Content is organized as a task catalog rather than sequenced workflows, and batch/destructive operations (merge, split, rotate, encrypt, watermark) include no validation or verification checkpoints, which caps this dimension at 3 per the rubric. The bundle's validation scripts (create_validation_image.py, check_bounding_boxes.py) are never surfaced in the body.

3 / 5

Progressive Disclosure

Section structure and the Quick Reference table are good, but the body cites REFERENCE.md, FORMS.md, and BEST_PRACTICES.md — none of which exist in the bundle — so navigation dead-ends, and ~150 lines of font deep-dive that clearly belongs in a separate reference file are inlined in SKILL.md. This fits the 'structure present but content that should be separate is inline' anchor better than the disorganized anchor below or the well-split anchor above.

3 / 5

Total

12

/

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 exemplary: it comprehensively lists concrete capabilities, includes explicit 'use when' triggers with natural synonyms and the .pdf extension, and cleanly bounds the skill to the PDF domain. It closely mirrors the rubric's own good examples at the top anchor on every dimension.

DimensionReasoningScore

Specificity

The description enumerates ten-plus concrete actions — 'extracting text/tables', 'merging multiple PDFs', 'splitting PDFs apart', 'rotating pages', 'adding watermarks', 'filling PDF forms', 'encrypting/decrypting', 'OCR on scanned PDFs' — giving comprehensive coverage of the domain with no generic filler. This matches the level-5 anchor listing multiple specific concrete actions; nothing significant in the PDF domain is missing.

5 / 5

Completeness

It explicitly answers both questions: 'what' via the enumerated capability list and 'when' via two explicit trigger clauses — '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 essentially the rubric's own level-5 example; a 4 would require the 'when' to be less explicit, which it is not.

5 / 5

Trigger Term Quality

Natural user phrasing is comprehensively covered including synonyms and the file extension: 'PDF files', 'PDFs', '.pdf file', 'PDF forms', 'scanned PDFs', plus task verbs users would actually say (merge, split, fill, watermark). It is not below 5 because no common variation is missing; it is not above because 5 is the scale maximum.

5 / 5

Distinctiveness Conflict Risk

The skill occupies a clear PDF-only niche with distinct, unambiguous triggers (.pdf files, PDF forms, scanned PDFs), so it is unlikely to fire for a document, spreadsheet, or image skill. 'Do anything with PDF files' is broad within the niche but the niche itself is sharply bounded, matching the minimal-conflict level-5 anchor.

5 / 5

Total

20

/

20

Passed

Validation

87%

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

Validation — 14 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

skill_md_line_count

SKILL.md is long (613 lines); consider splitting into references/ and linking

Warning

relative_links

Relative link issues: 1 missing

Warning

Total

14

/

16

Passed

Repository
UnicomAI/wanwu
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.