Convert a markdown file to a styled PDF (with embedded local images) and upload it to a Slack channel. Supports markdown image syntax  — local absolute and relative image paths are automatically resolved and embedded in the PDF.
Converts a markdown file to a styled PDF and uploads it to a Slack channel via the /api/slack/upload-file endpoint. Supports embedding local images referenced in the markdown.
The skill automatically handles local images referenced in markdown:
 — converted to file:// URLs — resolved relative to the markdown file's directory — passed through as-isImages are rendered at full width (max 100% of page) with auto height scaling, centered with a subtle border.
brew install python3)~/.crewly/venv/pdf-tools/ with weasyprint and markdown packages installed automaticallybash config/skills/orchestrator/send-pdf-to-slack/execute.sh \
--channel C0123ABC \
--file /path/to/document.md \
--title "Weekly Report" \
--text "Here is the report" \
--thread 1707123456.789000
| Parameter | Required | Description |
|---|---|---|
--channel, -c | Yes | Slack channel ID to upload the PDF to |
--file, -f | Yes | Path to the markdown file to convert |
--title, -T | No | Title for the uploaded PDF (defaults to filename) |
--text, -t | No | Initial comment to include with the upload |
--thread, -r | No | Slack thread timestamp for threaded upload |
Create a markdown file with embedded images:
# AI Daily Report - 2026-02-21
## 1. Paper Title
Summary of the paper.

## 2. Another Paper
Summary here.

Then send it:
bash config/skills/orchestrator/send-pdf-to-slack/execute.sh \
--channel D0AC7NF5N7L \
--file /path/to/daily-report.md \
--title "AI Daily Report 2026-02-21" \
--text "Today's AI report with infographics" \
--thread 1771651155.079579
JSON response from the upload API with fileId on success. Also emits a [NOTIFY] block for chat service integration.
python3 is not installed (includes install instructions)~/.crewly/tmp/slack-pdfs/)