bdfinst

report-pdf

Render a dev-team Markdown report to a polished, shareable PDF. Use when the user says "make a PDF of the report", "export the code-review report as PDF", "turn .dev-team-reports/code-review.md into a PDF", or wants any .dev-team-reports or reports Markdown file as a styled document to attach to a ticket or hand to a non-terminal stakeholder.

bdfinst 298 35 Updated 3mo ago
GitHub

Install

npx skillscat add bdfinst/agentic-dev-team/report-pdf

Install via the SkillsCat registry.

SKILL.md

Report PDF

Role: worker. This command renders one Markdown report to a styled PDF via the
shared render module. It is a mechanical wrapper — no reasoning, no file-by-file
searching. It never modifies the source Markdown.

You have been invoked with the /report-pdf command.

Arguments

  • <path.md> (required) — path to the Markdown report to render (for example
    .dev-team-reports/code-review.md or .dev-team-reports/test-health-2026-07-16.md).
  • --out <path> (optional) — output PDF path. Defaults to the source path with
    a .pdf extension, next to the source. A missing parent directory is created.

If no path argument is supplied, report path required — usage: /report-pdf <path.md> [--out <path>] and stop.

Steps

Invoke the shared render module through hooks/py.sh (never python3
directly — the shim resolves a real Python 3 on Windows too), passing the
arguments through verbatim:

sh "$CLAUDE_PLUGIN_ROOT/hooks/py.sh" "$CLAUDE_PLUGIN_ROOT/hooks/lib/report_pdf.py" <path.md> [--out <path>]

The module detects a PDF engine (fallback order: pandoc + headless
Chrome/Chromium → pandoc + weasyprint → pandoc + wkhtmltopdf → md-to-pdf) via
runtime probes, converts the report with the bundled report-print.css, and
prints a Rendering PDF via <engine>… progress line followed by one result
line. Report its output as-is:

  • Exit 0, PDF written: … — the styled PDF was produced; report the output
    path and engine verbatim.
  • Exit 0, skip message (No PDF engine found. Install one, …) — no engine
    was available. Report the skip message verbatim, including the single install
    hint. This is non-fatal: the source Markdown is untouched.
  • Exit 1, PDF not rendered: … — the source file was missing, or an engine
    was present but conversion failed. Surface the stderr message verbatim.
  • Exit 2 — usage error (argparse); surface the message verbatim.

Do not add commentary beyond the module's own lines.

Related