CtrlK
BlogDocsLog inGet started
Tessl Logo

pdf

Manipulate PDF files — extract text, count pages, render thumbnails, merge or split documents. Use for PDF-specific operations that don't fit `markdown-converter` (general read) or `pandic-office` (write from markdown).

65

Quality

82%

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

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

A lean, well-organized reference whose bash recipes are immediately usable, but whose three pypdf recipes are non-executable as written because the quoted heredoc blocks shell expansion of the path substitution (a Python SyntaxError), and whose batch merge/split operations lack any output verification. Fixing the heredoc quoting and adding a one-line validation after batch operations would lift the two weakest dimensions.

Suggestions

Fix the pypdf recipes: inside a quoted heredoc (<<'PY') `$(basename "$PWD")` is never expanded and causes a Python SyntaxError. Either build the path in Python (e.g., os.path.join(os.environ["PWD"], "merged.pdf")) or compute it in shell before the heredoc and pass it via an unquoted delimiter or an environment variable.

Add a verification step after batch operations: after merge/split, confirm the result with `pdfinfo merged.pdf | grep Pages` or compare the split file count against the source page count, and only report success when it matches.

Simplify the repeated `/workspace/$(basename "$PWD")/` path prefix — state the working-path convention once near the top so each recipe can use a plain filename, which would also make the code blocks shorter and easier to adapt.

DimensionReasoningScore

Conciseness

The body is almost entirely executable recipes under terse headers ("Extract text from a PDF", "Count pages") with zero concept explanations; the only prose — "The gateway image ships: pdftotext, pdftoppm, pdfinfo ... pypdf" — is environment knowledge Claude cannot already know. This matches 'Lean and efficient; assumes Claude's competence; every token earns its place'.

5 / 5

Actionability

The bash recipes (pdftotext, pdfinfo, pdftoppm) are copy-paste ready, but all three Python recipes use `<<'PY'` quoted heredocs in which `$(basename "$PWD")` is never expanded — Python receives the literal text and raises a SyntaxError (verified by compiling the merge snippet). That is 'concrete guidance but incomplete; ... missing key details' rather than anchor 4's 'minor gaps', since half the operations ship broken code.

3 / 5

Workflow Clarity

Each operation is a single unambiguous recipe, but merge and per-page split are batch operations with no verification step (e.g., checking output page count or file existence before declaring success). Per the rubric, missing validation in batch operations caps workflow clarity at 3 even though the individual actions are clear, and the content does not reach anchor 4's 'most checkpoints present'.

3 / 5

Progressive Disclosure

This is a short single-purpose skill (~80 lines) with no bundle files, so per the rubric's simple-skill guideline 'progressive disclosure can score 5 with just well-organized sections'. Sections are clear and parallel, nothing that belongs in a separate file is inlined, and the only pointers are to sibling skills (markdown-converter, pandic-office, officecli), which are appropriate one-level signposts.

5 / 5

Total

16

/

20

Passed

Description

83%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: concrete action list, explicit use-guidance, and explicit boundary disambiguation against sibling skills. The only gap is trigger-term breadth — adding natural variations like ".pdf", "PDFs", and "combine PDFs" would make the when-clause match how users actually phrase requests.

DimensionReasoningScore

Specificity

"extract text, count pages, render thumbnails, merge or split documents" lists five concrete, distinct actions covering the skill's full surface. It matches the anchor 'Lists multiple specific concrete actions; comprehensive coverage' and is above anchor 4, whose example covers fewer operations with acknowledged gaps.

5 / 5

Completeness

Both parts are present: a clear "what" ("extract text, count pages, render thumbnails, merge or split documents") and an explicit "when" ("Use for PDF-specific operations that don't fit `markdown-converter` ... or `pandic-office`"). It falls short of anchor 5 because the when-clause is framed as disambiguation from sibling skills rather than concrete trigger phrases like 'when the user mentions PDFs or .pdf files'; it is well above anchor 3, where 'when' is absent or only implied.

4 / 5

Trigger Term Quality

Terms like "PDF files", "extract text", "merge", "split", "thumbnails" are natural user phrases with good coverage, but common variations are missing — no file extension ".pdf", no "PDFs" plural, no "combine"/"convert to image" synonyms. Anchor 5 explicitly requires extensions and synonyms, so this sits at 'Good keyword coverage; a few natural terms missing'.

4 / 5

Distinctiveness Conflict Risk

"Use for PDF-specific operations that don't fit `markdown-converter` (general read) or `pandic-office` (write from markdown)" carves out a clear niche and actively names the adjacent skills to avoid mis-triggering. This is the anchor-5 case 'Clear niche with distinct triggers; minimal conflict risk', stronger than anchor 4's 'minor overlap risk' since conflicts are explicitly pre-empted.

5 / 5

Total

18

/

20

Passed

Validation

100%

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

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository
Team-Commonly/commonly
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.