CtrlK
BlogDocsLog inGet started
Tessl Logo

oma-pdf

Extract PDF text, headings, tables, and images into Markdown using opendataloader-pdf. Use for PDF parsing, not PDF layout creation.

66

Quality

78%

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 ./.agents/skills/oma-pdf/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

73%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 well-engineered operational skill: executable command paths, an explicit scene/transition workflow with validation and comprehensive failure recovery, and disciplined deferral of detail to a protocol file. Its main weakness is token overhead from schema scaffolding (SSL primitives, resource scopes, scene labels) that adds structure without actionable value.

Suggestions

Remove or collapse the meta-scaffolding sections ("Logical Operations" SSL-primitive table, "Resource scope" table, "Scenes" labels, "Intent signature") — they restate the workflow in abstract vocabulary Claude does not need, and would cut a large fraction of tokens.

Consolidate the Dependencies, Canonical command path, and Failure/recovery sections so each command and failure mode appears once instead of 2-3 times.

Give each References entry a one-line description of what it contains so navigation to the protocol/shared files is self-explanatory, and verify resources/execution-protocol.md ships alongside the skill.

DimensionReasoningScore

Conciseness

The body is operational rather than conceptual (no re-explanation of what a PDF is), but carries substantial non-actionable scaffolding — the "SSL primitive" action table, "Resource scope" table (LOCAL_FS/PROCESS/MEMORY/OTHER), "Scenes" labels, and "Intent signature" — that adds tokens without guidance value, and dependency/command information is repeated across sections. It fits the 'mostly efficient but could be tightened' anchor, not level 4, because whole sections could be cut without losing actionable content.

3 / 5

Actionability

Concrete, runnable commands are given for the probe, standard conversion, mdformat, and the hybrid OCR path, plus specific retry flags (--use-struct-tree, --table-method cluster, --markdown-with-html, --ocr-lang "ko,en") and a concrete failure/recovery table. It stops short of level 5 because commands use placeholders ({input_path}, {languages}) rather than a worked example, and common-case flag usage is deferred to resources/execution-protocol.md.

4 / 5

Workflow Clarity

The flow is explicitly sequenced (Entry → PREPARE/ACQUIRE/ACT/VERIFY/FINALIZE → Exit) with a text-layer probe as a validation checkpoint, explicit decision branches in Transitions, a dedicated VERIFY scene, and a failure/recovery table with feedback loops (garbled output → retry tagged/hybrid; missing tables → retry cluster method; OCR mismatch → retry with explicit languages). This matches the level-5 anchor with explicit validation and error-recovery loops.

5 / 5

Progressive Disclosure

Detail is deliberately deferred to one-level-deep references (guardrail: "Keep detailed command sequences in resources/execution-protocol.md rather than duplicating every variant here") and a References section lists the four targets clearly. It is not level 5 because the reference entries are bare paths with minimal signaling of their contents, two references point outside the skill directory (../_shared/core/...), and no bundle files were provided to verify the referenced paths exist.

4 / 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, concise description: concrete multi-action capability statement, an explicit 'Use for' trigger clause with a negative boundary, and good distinctiveness. The main gaps are missing trigger synonyms/file extensions and a slightly narrow when-clause.

Suggestions

Broaden the trigger clause to cover the request phrasings users actually use, e.g. "Use when the user asks to parse, extract text or tables from, or convert a PDF to Markdown".

Add natural synonyms and the file extension ("PDFs", ".pdf") to improve trigger matching.

Optionally note the scanned/OCR capability ("including scanned PDFs via OCR") since it is a core skill behavior users would mention.

DimensionReasoningScore

Specificity

"Extract PDF text, headings, tables, and images into Markdown" names four concrete extraction actions plus the output format, matching the comprehensive multi-action anchor. It does not pad with abstract language, so it is not the level-4 anchor with 'minor gaps in coverage' — the action list covers the skill's full capability surface.

5 / 5

Completeness

The 'what' is explicit ("Extract PDF text, headings, tables, and images into Markdown using opendataloader-pdf") and the 'when' is present as an explicit trigger clause ("Use for PDF parsing, not PDF layout creation"), so it clears the level-3 cap. It is not level 5 because the when-clause is narrow — it names only "PDF parsing" and omits extraction/conversion/markdown triggers that the good example includes.

4 / 5

Trigger Term Quality

Natural terms present include "PDF text", "PDF parsing", "Extract", and "into Markdown", which map well to what users say. It falls short of the level-5 anchor because it lacks synonyms and file extensions ("PDFs", ".pdf", "convert PDF to markdown") that comprehensive coverage would include.

4 / 5

Distinctiveness Conflict Risk

"Use for PDF parsing, not PDF layout creation" explicitly disambiguates from PDF-generation skills, and the tool-specific niche (opendataloader-pdf extraction to Markdown) gives it distinct triggers with minimal conflict risk. It matches the clear-niche anchor rather than the level-4 'minor overlap risk' anchor.

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
first-fluke/oh-my-agent
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.