CtrlK
BlogDocsLog inGet started
Tessl Logo

pdf

Read, extract (text/tables), create, merge/split/rotate, watermark, encrypt, fill, and render-to-image .pdf files. Use whenever the user uploads a .pdf or asks to produce, edit, or pull data out of one.

75

Quality

94%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

96%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.

An exceptionally lean and executable skill body: every section is non-obvious, sandbox-specific knowledge with complete code, explicit verification checkpoints, and honest failure/degradation paths. The only structural weakness is that everything lives in one ~280-line SKILL.md with no reference files, leaving specialized subsections inlined.

Suggestions

Move the multi-platform CJK font registry and the flat-form FreeText overlay details into a references/ file (e.g. references/fonts.md, references/forms.md) and link them from short SKILL.md sections, keeping SKILL.md as a dispatch overview under ~150 lines.

Add an explicit verify step to the batch split/watermark snippets (e.g. re-open each written page count with PdfReader and assert page counts) so every batch operation has the same checkpoint the form-fill section already has.

Surface the 'no OCR available' and 'no soffice/pandoc' constraints in the top dispatch table so failure-mode expectations are visible before any code is written.

DimensionReasoningScore

Conciseness

The body opens with a terse task-to-library dispatch ('Pick the library by task') and goes straight to code, teaching only sandbox-specific non-obvious facts (no OCR/tesseract installed, network off, absent soffice/pandoc, pdfplumber top-origin vs pypdf bottom-left coordinates). Nothing explains concepts Claude already knows, so it fits anchor 5's 'every token earns its place' rather than anchor 4's 'minor instances of over-explanation'.

5 / 5

Actionability

Every workflow ships complete, copy-paste-ready code covering the common cases: extraction, table-to-Excel with empty-table and sheet-name-length handling, merge/split/rotate/watermark/encrypt, reportlab flowing and canvas layouts, fillable and flat form filling, and PyMuPDF rasterization. There is no pseudocode or vague direction anywhere, matching anchor 5 and clearly above anchor 4's 'minor gaps'.

5 / 5

Workflow Clarity

Sequencing is clear and validation is explicit and repeated: 'Prefer creating, reopening, and validating the PDF in one call', 'verify the count in the output before finishing', the form-fill 'Verify: re-open the output and re-read get_fields() values', and feedback loops like 'diagnose stderr/root cause and change strategy; do not retry identical code'. Error-recovery and degradation paths (scanned-PDF honesty, missing CJK font, missing converters) are present throughout, fitting anchor 5; it is not anchor 4 because checkpoints are explicit rather than implicit.

5 / 5

Progressive Disclosure

The file is well-sectioned with clean per-task H2 headers, front-loaded library dispatch, and navigable structure (anchor 4's 'good structure; most content appropriately placed'), but it is a ~280-line single file with no bundle files at all, so specialized material (the CJK font registry, flat-form overlay coordinates, PyMuPDF rendering) that could be one-level-deep references is inlined. It sits above anchor 3's 'could be better organized / buried references' but cannot reach anchor 5's 'overview pointing to detailed materials' as nothing is split out.

4 / 5

Total

19

/

20

Passed

Description

92%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.

A strong description that enumerates concrete capabilities and pairs them with an explicit, natural 'use when' trigger clause referencing the .pdf extension. The only gap is a handful of common synonyms (PDFs, forms) that would broaden trigger coverage.

DimensionReasoningScore

Specificity

The description lists many concrete actions — 'extract (text/tables)', 'create', 'merge/split/rotate', 'watermark', 'encrypt', 'fill, and render-to-image .pdf files' — giving comprehensive coverage that matches and exceeds the anchor-5 example. There are no vague or generic verbs left to specify.

5 / 5

Completeness

Both questions are explicitly answered: the 'what' is nine named actions and the 'when' is a full trigger clause ('Use whenever the user uploads a .pdf or asks to produce, edit, or pull data out of one'). The when-clause is explicit and concrete, matching anchor 5 rather than the vaguer anchor 4.

5 / 5

Trigger Term Quality

It includes the file extension '.pdf', natural user phrasing ('uploads a .pdf', 'asks to produce, edit, or pull data out of one'), but omits common synonyms like 'PDFs', 'forms', and 'document extraction' that the anchor-5 example covers. Good keyword coverage with a few natural terms missing fits anchor 4.

4 / 5

Distinctiveness Conflict Risk

The description is entirely PDF-specific with '.pdf' extension triggers and PDF-only operations, giving it a clear niche with minimal conflict risk. Only 'fill' could brush a forms skill, and that is the same domain, so it fits anchor 5.

5 / 5

Total

19

/

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

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

Total

15

/

16

Passed

Repository
HKUDS/DeepTutor
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.