CtrlK
BlogDocsLog inGet started
Tessl Logo

html-to-pdf

Render HTML (with CSS) to a PDF file. Trigger when the user wants to export a styled report, invoice, label, or any HTML/Jinja-rendered page to PDF. Uses WeasyPrint, which supports a meaningful subset of CSS Paged Media (page size, margins, headers/footers, page-break-before/after). Optional dependency — install via `pip install opensquilla[document-extras]` or `uv add weasyprint` because WeasyPrint pulls in native libraries (Pango, Cairo, fontconfig) that need OS-level packages.

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

Low

Low-risk findings worth noting

Fix and improve this skill with Tessl

tessl review fix ./src/opensquilla/skills/bundled/html-to-pdf/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

75%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-structured, mostly executable skill body that keeps the overview lean and pushes detail to real bundle files. It falls just short of top marks on each dimension due to minor navigation signaling and verification-checkpoint gaps rather than any substantive deficiency.

Suggestions

Add an explicit 'See references/weasyprint.md for the full CSS subset and pitfalls' navigation line so the reference is clearly signaled.

Add a short verify step after rendering (e.g., open/inspect the PDF or check the file is non-empty) to raise workflow clarity.

Tighten the Delivery rule paragraph into a compact if/else so it trims a few tokens without losing the fallback guidance.

DimensionReasoningScore

Conciseness

The body is lean, assumes Claude's competence (no explanation of what a PDF or library is), and every section earns its place; install hints and native-lib notes are non-obvious value. Not 5 because the Delivery rule prose and some cross-platform notes could be tightened slightly.

4 / 5

Actionability

Provides executable commands (render.py invocations), a complete @page CSS example, real per-OS install commands, and references a real render.py script. Not 5 because the primary examples cover the common cases without enumerating edge variants (e.g., URL fetch options) inline.

4 / 5

Workflow Clarity

A clear conditional delivery workflow (file-authoring tools available vs. not) plus an error-recovery hint for the native-lib OSError; this single render op is not destructive/batch so the feedback-loop cap does not apply. Not 5 because there is no explicit verify-output checkpoint after rendering.

4 / 5

Progressive Disclosure

Well-organized sections with detail kept out of the body and pushed to a real references/weasyprint.md and scripts/render.py, both one level deep. Not 5 because the weasyprint.md reference is not surfaced with an explicit navigation line (e.g., 'See references/weasyprint.md'); references are mostly signaled via the script path.

4 / 5

Total

16

/

20

Passed

Description

75%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, third-person description that states what the skill does and when to trigger it with natural user terms. It is specific and distinctive but stops just short of comprehensive trigger-phrase and distinctiveness coverage.

Suggestions

Add a 'Use when the user mentions exporting .html or .pdf, or asks to convert HTML/Jinja templates to PDF' clause to raise trigger-term and completeness coverage.

Name the most common file extensions (.html, .pdf) explicitly as keywords.

Briefly contrast with pdf-toolkit (reportlab/pypdf) and docx in the description to reduce conflict risk with adjacent skills.

DimensionReasoningScore

Specificity

Names the domain and lists several concrete actions ('Render HTML (with CSS) to a PDF file', 'export a styled report, invoice, label', supports 'page size, margins, headers/footers, page-break-before/after'), with only minor coverage gaps. Not 5 because the actions collapse into one render operation rather than multiple distinct, comprehensively enumerated capabilities.

4 / 5

Completeness

Clearly answers 'what' ('Render HTML (with CSS) to a PDF file') and 'when' ('Trigger when the user wants to export a styled report, invoice, label...') with concrete trigger phrases. Not 5 because the 'when' is a use-case list rather than the canonical 'Use when...' clause covering user-mention scenarios.

4 / 5

Trigger Term Quality

Good keyword coverage with natural user terms ('export a styled report, invoice, label', 'HTML/Jinja-rendered page to PDF') and the explicit 'Trigger when...' phrasing. Not 5 because file extensions (.html, .pdf) and common synonyms are absent; not 3 because coverage clearly exceeds a single generic keyword.

4 / 5

Distinctiveness Conflict Risk

The HTML/CSS-to-PDF-via-WeasyPrint niche is clearly distinct with minimal overlap risk. Not 5 because the description alone does not draw the contrast with the related pdf-toolkit/docx skills that the body establishes.

4 / 5

Total

16

/

20

Passed

Validation

81%

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

Validation13 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

metadata_version

'metadata.version' is missing

Warning

metadata_field

'metadata' should map string keys to string values

Warning

frontmatter_unknown_keys

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

Warning

Total

13

/

16

Passed

Repository
TokenRhythm/opensquilla
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.