CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

md-to-pdf

Convert Markdown to PDF via reportlab or weasyprint engines. Triggers - pdf, md to pdf, markdown to pdf, generate pdf.

Quality

79%

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 ./.codex/plugins/brewdoc/skills/md-to-pdf/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

77%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 highly actionable, well-validated workflow with executable commands and explicit error-recovery checkpoints throughout. Its weaknesses are redundancy and harness boilerplate that inflate token cost, a monolithic inline config-save script, and references to styles/ and test files that are missing from the actual bundle.

Suggestions

Remove the duplicated title/intro (one of "# Markdown to PDF" vs "# MD to PDF") and trim the Codex-collaboration/approval meta-paragraph to only what affects this skill's execution.

Move the ~35-line inline config-save shell/Python block into a bundled script (e.g. scripts/save_config.py) and invoke it with arguments, keeping SKILL.md a lean overview.

Fix or remove references to missing bundle files: either include `styles/default.json` and `test/test-all-elements.md` in the bundle or drop the STYLES/TEST instructions that depend on them.

DimensionReasoningScore

Conciseness

The operational core (Steps 0-4, mode tables, commands) is dense and efficient, but there is real padding: two duplicate title sections ("# Markdown to PDF" and "# MD to PDF") with near-identical intros, a long meta-paragraph about Codex collaboration/approval semantics that is harness boilerplate rather than task content, and a ~35-line inline shell/Python config-save block. This fits 'mostly efficient but includes some unnecessary explanation or could be tightened'; it is not a 2 because none of it explains concepts Claude already knows.

3 / 5

Actionability

Every step ships copy-paste-ready, fully executable commands with explicit placeholder substitution rules ("replace NEW_JSON; keep every other byte"), exact config JSON shape, literal help text to print, concrete mode-resolution tables, and exact output-parsing instructions (STATUS/OUTPUT/PAGES/SIZE/ENGINE lines). This matches the top anchor: fully executable commands covering the common cases.

5 / 5

Workflow Clarity

Steps 0-4 are clearly sequenced with explicit validation checkpoints after every execution ("STOP if ❌", "STOP if INSTALL_FAILED", "STOP if CONVERT_FAILED") and a concrete feedback loop ("read error output, attempt fix, retry once"). Mode routing, gates, and the Step 4 report format are all explicit, matching the anchor for clear sequence with explicit validation and error-recovery loops.

5 / 5

Progressive Disclosure

Structure exists (numbered steps, per-mode sections) and the two real bundle scripts are clearly referenced via <skill-directory> paths, but the inline config-save Python block is content that belongs in a bundled script, the body references files absent from the bundle ("choose a bundled style from `styles/`", "`styles/default.json`", "`test/test-all-elements.md`" do not exist), and there are duplicate top-level sections. This fits 'some structure but could be better organized' better than the well-split 4 anchor; it is above a 2 because the scripts references that do exist are clearly signaled and central content is not buried.

3 / 5

Total

16

/

20

Passed

Description

70%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 compact, third-person description that clearly states what the skill does and provides explicit, natural trigger terms. Its main gaps are incomplete coverage of the skill's actual capabilities (styling, preprocessing, test mode) and a bare token-list trigger clause instead of a contextual use-when statement, plus the slightly over-broad "pdf" trigger.

Suggestions

Enumerate more of the skill's concrete capabilities in the description, e.g. style/page-size configuration, LLM preprocessing of the markdown before conversion, and dependency checks.

Replace the bare token list with a contextual trigger clause such as "Use when the user wants to convert a Markdown (.md) file to PDF", and add missing natural terms like 'convert to pdf' and '.md'.

Drop or qualify the standalone "pdf" trigger to reduce conflict with PDF-extraction/reading skills.

DimensionReasoningScore

Specificity

"Convert Markdown to PDF via reportlab or weasyprint engines" names the domain and one concrete action, but the description omits capabilities the skill actually has (style configuration, LLM preprocessing of the markdown, dependency installation, test mode). This matches the 'names domain and 1-2 concrete actions, but not comprehensive' anchor; a 4 would require several distinct actions listed.

3 / 5

Completeness

The 'what' is clear ("Convert Markdown to PDF via reportlab or weasyprint engines") and the 'when' is explicitly present as trigger guidance ("Triggers - pdf, md to pdf, markdown to pdf, generate pdf"), so it clears the cap for a missing trigger clause. It sits below a 5 because the trigger list is bare tokens rather than a contextual 'Use when the user wants to...' statement tying triggers to user intent.

4 / 5

Trigger Term Quality

"Triggers - pdf, md to pdf, markdown to pdf, generate pdf" covers the natural phrasings a user would say, including the hyphenated variants. A few common terms are missing ("convert to pdf", "make a pdf", ".md", "markdown file"), which fits 'good keyword coverage; a few natural terms missing' rather than the comprehensive synonym-plus-extension coverage of a 5.

4 / 5

Distinctiveness Conflict Risk

Markdown-to-PDF conversion is a clear niche with dedicated trigger phrases, so overlap risk is low. The bare token "pdf" as a trigger is somewhat broad and could also match PDF-reading/extraction skills, which is exactly the 'minor overlap risk with closely related skills' case for a 4 rather than the minimal-conflict 5.

4 / 5

Total

15

/

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

kochetkov-ma/claude-brewcode

Path

.codex/plugins/brewdoc/skills/md-to-pdf/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.