CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

ocr

OCR scanned PDFs and image files into searchable text using pdftoppm + tesseract (or ocrmypdf if available). Load when about to OCR a scanned PDF or image, or when extracted PDF text is empty/garbled.

Quality

70%

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

Fix and improve this skill with Tessl

tessl review fix ./.claude/skills/ocr/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

41%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 generated redirect stub: maximally token-efficient, but it delegates 100% of the skill's substance to an external file that is not part of the bundle and does not resolve, leaving no actionable guidance, workflow, or verifiable references. As a standalone SKILL.md it fails to deliver the capability its description promises.

Suggestions

Inline the core OCR workflow into SKILL.md — e.g. the pdftoppm-to-image commands, the tesseract invocation, the ocrmypdf fallback, and a verification step that the extracted text is non-empty — instead of delegating to an external path.

Replace the out-of-bundle `~/.agents/skills/ocr/SKILL.md` pointer with reference files that actually ship inside the skill directory (e.g. references/advanced.md) so the pointer resolves wherever the skill is installed.

Add an explicit validation checkpoint after OCR (check output text is non-empty and not garbled, retry with ocrmypdf or different psm settings on failure) to give the multi-step pipeline a feedback loop.

DimensionReasoningScore

Conciseness

The body is two lines — an HTML comment ("Generated by scripts/agent-harnesses.py; do not edit directly.") and one instruction ("Load and follow the shared skill at `~/.agents/skills/ocr/SKILL.md`.") — with zero padding or explanation of concepts Claude already knows. Every token (aside from the trivial one-line editor comment) serves the delegation, matching the lean-and-efficient anchor; there is no over-explanation to trim, so it does not sit at 4.

5 / 5

Actionability

"Load and follow the shared skill at `~/.agents/skills/ocr/SKILL.md`" is a single concrete directive with a specific path, but it contains no commands, code, or steps for the OCR task itself — the actual guidance (pdftoppm/tesseract/ocrmypdf usage) is entirely absent from this file. This matches minimal-concrete-guidance anchor 2; it is not 1 because the pointer is a real, specific instruction rather than vague abstraction, and not 3 because no partial task guidance exists here.

2 / 5

Workflow Clarity

The described task is a multi-step pipeline (render PDF pages via pdftoppm, run tesseract, fall back to ocrmypdf, verify output), but the body provides no sequence, steps, or validation for any of it — the workflow lives entirely behind an external pointer. This matches anchor 1 ("Steps missing... no sequence; no validation"); the simple-skill exception does not apply because OCR is multi-step, and even the delegation target is a dead end in this bundle.

1 / 5

Progressive Disclosure

The body's only reference is clearly signaled and one level deep, but it points outside the skill bundle to `~/.agents/skills/ocr/SKILL.md`, which does not exist in this environment, and the bundle ships no references/, scripts/, or assets/ files at all — so the skill contains no navigable content, only a broken external pointer. That lands at minimal-structure anchor 2 rather than 3, since the failure is not organization of inline content but a complete absence of reachable material.

2 / 5

Total

10

/

20

Passed

Description

87%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 strong: it states a concrete, tool-specific capability and gives explicit, natural trigger conditions including the failure mode (empty/garbled extracted text) that would make a user reach for OCR. Only minor keyword gaps (file extensions, image synonyms) keep trigger coverage from a top mark.

DimensionReasoningScore

Specificity

"OCR scanned PDFs and image files into searchable text using pdftoppm + tesseract (or ocrmypdf if available)" names concrete inputs (scanned PDFs, image files), a concrete output (searchable text), and specific tools including a fallback — several specific elements with only minor gaps. It falls short of 5 because it describes a single conversion action rather than multiple distinct actions, but sits above 3 since the toolchain and I/O are explicitly specified.

4 / 5

Completeness

It explicitly answers both questions: what ("OCR scanned PDFs and image files into searchable text using pdftoppm + tesseract") and when ("Load when about to OCR a scanned PDF or image, or when extracted PDF text is empty/garbled") with concrete trigger phrases including the subtle empty/garbled-text case. This matches the anchor-5 example structure; anchor 4 would require the 'when' to be less explicit, which it is not.

5 / 5

Trigger Term Quality

Natural phrases users would say are present: "OCR", "scanned PDF", "image", "extracted PDF text is empty/garbled", plus the tool names tesseract/ocrmypdf users might mention directly. Missing a few natural terms such as file extensions (.pdf, .png, .jpg) and synonyms like screenshots or photos, so it does not reach comprehensive 5 coverage.

4 / 5

Distinctiveness Conflict Risk

OCR is a clear niche with distinct triggers (scanned PDFs, garbled extracted text) unlikely to fire for general PDF-editing or text-extraction skills — the "extracted PDF text is empty/garbled" condition actually delimits the boundary against plain extraction skills rather than overlapping them. Minor adjacency to PDF-extraction skills exists, but not enough to drop to 4.

5 / 5

Total

18

/

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

referenced_paths_exist

Referenced path issues: 1 missing

Warning

Total

15

/

16

Passed

Repository

phatblat/dotfiles

Path

.claude/skills/ocr/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.