brewdoc:md-to-pdf

Converts Markdown files to professional PDF using one of two rendering engines.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "brewdoc:md-to-pdf" with this command: npx skills add kochetkov-ma/claude-brewcode/kochetkov-ma-claude-brewcode-brewdoc-md-to-pdf

MD to PDF

Converts Markdown files to professional PDF using one of two rendering engines.

Step 0: Parse Arguments

Parse $ARGUMENTS to determine mode and components.

Component Required Description

md_file

per mode Path to .md file

--engine

No reportlab or weasyprint (overrides saved config)

custom_prompt

No Last argument in double quotes = LLM preprocessing instructions

Mode detection rules:

Condition Mode

Empty or help

HELP

styles or config

STYLES

test

TEST

Path to .md file + quoted string at end CONVERT+PROMPT

Path to .md file (no quoted string) CONVERT

Extract --engine <name> from anywhere in arguments if present. Remove it before further parsing.

Step 1: Dependency Check

Determine the target engine (from --engine flag, saved config, or default reportlab ).

EXECUTE using Bash tool:

bash "${CLAUDE_SKILL_DIR}/scripts/check_deps.sh" check ENGINE_NAME 2>&1; echo "EXIT_CODE=$?"

Replace ENGINE_NAME with the target engine.

If output contains MISSING_PIP or MISSING_SYSTEM :

Use AskUserQuestion presenting the engine comparison table:

Feature reportlab weasyprint

Install pip only pip + brew

Quality Good Excellent

Speed Fast Moderate

Images Basic Full

CSS Styling No Yes

Code highlight No Yes (Pygments)

Options:

  • "Install ENGINE_NAME dependencies"

  • "Switch to OTHER_ENGINE" (if the other engine is available)

  • "Cancel"

If user chooses install, EXECUTE using Bash tool:

bash "${CLAUDE_SKILL_DIR}/scripts/check_deps.sh" install ENGINE_NAME 2>&1 && echo "---INSTALL_OK---" || echo "---INSTALL_FAILED---"

STOP if INSTALL_FAILED -- report error and exit.

If user cancels -- STOP.

Step 2: Engine Selection (first run only)

Check for saved config in order:

  • Project: .claude/md-to-pdf.config.json

  • Global: ~/.claude/md-to-pdf.config.json

If --engine flag was provided -- use it (skip config lookup).

If no saved preference and no --engine flag -- use AskUserQuestion with the engine comparison table from Step 1. Save the choice:

{ "engine": "reportlab", "pygments_theme": "github" }

Write to project config .claude/md-to-pdf.config.json (create .claude/ dir if needed).

Step 3: Mode Execution

HELP Mode

Print formatted usage:

MD to PDF Converter

Usage: /brewdoc:md-to-pdf <file.md> Convert with saved engine/style /brewdoc:md-to-pdf <file.md> --engine weasyprint Convert with specific engine /brewdoc:md-to-pdf <file.md> "remove section X" Preprocess MD then convert /brewdoc:md-to-pdf styles Configure page/color/font /brewdoc:md-to-pdf test Convert bundled test file /brewdoc:md-to-pdf help Show this help

Engines: reportlab -- Pure Python, fast, no system deps (pip install reportlab) weasyprint -- HTML/CSS pipeline, best quality (pip + brew deps)

EXIT after printing.

CONVERT Mode

  • Read the input MD file with Read tool. If not found -- STOP with error.

  • Determine output path: same directory, same name, .pdf extension.

  • Build the config path argument (if project or global config exists, add --config CONFIG_PATH ).

EXECUTE using Bash tool:

python3 "${CLAUDE_SKILL_DIR}/scripts/md_to_pdf.py" "INPUT_PATH" "OUTPUT_PATH" --engine ENGINE --quiet 2>&1 && echo "---CONVERT_OK---" || echo "---CONVERT_FAILED---"

Replace INPUT_PATH , OUTPUT_PATH , ENGINE with actual values. Add --config CONFIG_PATH if a style config JSON exists. Add --pygments-theme THEME for weasyprint if configured.

STOP if CONVERT_FAILED -- read error output, attempt fix, retry once. If still failing -- report error.

  • Parse structured output lines: STATUS , OUTPUT , PAGES , SIZE , ENGINE .

CONVERT+PROMPT Mode

  • Read the input MD file with Read tool.

  • Apply LLM transformations per the custom_prompt instructions (delete sections, rewrite headings, restructure, etc.).

  • Write modified content to temp file: {original_dir}/.tmp_{original_name}.md

  • Run the converter on the temp file (same command as CONVERT mode, using temp file as input, original name for output).

  • Delete the temp file.

EXECUTE using Bash tool:

rm -f "TEMP_FILE_PATH"

  • Proceed to Step 4 with preprocessing: true .

STYLES Mode

Run interactive configuration via AskUserQuestion dialogs:

Question 1 -- Page size: Options: A4 (default), Letter , Legal

Question 2 -- Color scheme: Options: Default blue (primary #1a3a5c), Dark (primary #2d3748), Custom (ask for hex values)

Question 3 -- Code theme (weasyprint only): Options: github (default), monokai , friendly , solarized-dark , solarized-light

Question 4 -- Footer format: Options: Page {page} of {total} (default), {page}/{total} , Disabled

Build JSON config matching styles/default.json structure, overriding changed values. Write to .claude/md-to-pdf.config.json .

Report saved settings table and EXIT.

TEST Mode

  • Use bundled test file at ${CLAUDE_SKILL_DIR}/test/test-all-elements.md as INPUT_PATH.

  • Determine output path: /tmp/md-to-pdf-test-ENGINE.pdf

  • Run converter (same command as CONVERT mode, using test file as input, /tmp/ output).

  • Proceed to Step 4.

Step 4: Report Results

Parameter Value

Source absolute path to input MD

Output absolute path to output PDF

Pages from PAGES= in script output

Size from SIZE= in script output

Engine reportlab or weasyprint

Preprocessing custom_prompt summary (if used) or none

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

text-optimizer

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

memory-optimize

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

brewcode:install

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

brewdoc:my-claude

No summary provided by upstream source.

Repository SourceNeeds Review