/whitepaper
Creates professional PDF whitepapers from Markdown files. Use when the user wants to create a whitepaper, technical document, or PDF with professional formatting and typography.
$ npx -y skills add adobe/skills --skill whitepaper --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/whitepaper
Context preview
The summary Claude sees to decide when to auto-load this skill.
Creates professional PDF whitepapers from Markdown files. Use when the user wants to create a whitepaper, technical document, or PDF with professional formatting and typography.
SKILL.md
whitepaper.SKILL.mdname: whitepaper
description: Creates professional PDF whitepapers from Markdown files. Use when the user wants to create a whitepaper, technical document, or PDF with professional formatting and typography.
license: Apache-2.0
allowed-tools: Read, Write, Edit, Bash
metadata:
argument-hint: "[input.md] [output.pdf]"
version: "1.0.0"
Professional PDF Generator
This skill converts Markdown files into professionally typeset PDF whitepapers using pandoc and typst.
Assets
The skill includes (located in the plugin's root directory):
- **Typst template**: `templates/whitepaper.typ`
- **Source Sans 3 fonts**: `fonts/` — variable fonts supporting all weights (open source from Google Fonts)
- **Source Code Pro fonts**: `fonts/` (Regular, Bold, Italic, Bold Italic) — used for code blocks and inline code
**Plugin Root:** The plugin root is determined dynamically (see Step 2.5 below)
Typography Hierarchy
| Element | Weight | Style | |---------|--------|-------| | Headlines (H1) | Black (900) | Large, tight tracking | | Section headlines (H2) | Bold (700) | Blue accent line | | Subheads (H3, H4) | Bold (700) | Medium size | | Body copy | Regular (400) | Justified, comfortable leading | | Code | Source Code Pro | Monospace |
CRITICAL: FULLY AUTOMATIC EXECUTION
**THIS SKILL RUNS COMPLETELY UNATTENDED. DO NOT:**
- Ask "Should I proceed?" before generating PDF
- Ask "Should I delete these files?" before cleanup
- Ask "Is this okay?" at any step
- Wait for user confirmation between steps
- Pause to show intermediate results
- Request permission for file operations
**REQUIRED BEHAVIOR:**
- Execute all steps sequentially without stopping
- Generate PDF immediately when invoked
- Delete ALL source files immediately after PDF is created
- Only communicate with user AFTER everything is complete
- Report final result: "PDF created: [path]"
**If you find yourself about to ask the user a question during PDF generation or cleanup, STOP and just execute the operation instead.**
Usage
When the user asks to create a PDF, follow these steps:
1. Determine Input and Output
- Parse `$ARGUMENTS` for the input markdown file and optional output PDF path
- If no output path is given, use the same name as the input with a `.pdf` extension
- If no input is given, ask the user which markdown file to convert
- Check the file's YAML frontmatter (see "Frontmatter Reference" below). If `title` is missing, ask the user for a title before proceeding. If `date` is missing, default to today's date.
2. Install Dependencies (if missing)
Run for each missing tool — the script auto-detects the platform:
OS=$(uname -s)
# pandoc
command -v pandoc >/dev/null 2>&1 || {
[ "$OS" = "Darwin" ] && brew install pandoc || sudo apt-get update && sudo apt-get install -y pandoc
}
# typst
command -v typst >/dev/null 2>&1 || {
[ "$OS" = "Darwin" ] && brew install typst || {
curl -fsSL https://github.com/typst/typst/releases/latest/download/typst-x86_64-unknown-linux-musl.tar.xz \
| tar xJ --strip-components=1 -C /usr/local/bin/ typst-x86_64-unknown-linux-musl/typst
chmod +x /usr/local/bin/typst
}
}2.5 Locate Plugin Root Directory
**CRITICAL: Determine the plugin root before copying assets.**
The plugin root contains `templates/` and `fonts/` directories. Use this single command:
PLUGIN_ROOT=$([ -d ".claude/plugins/project-management" ] && echo ".claude/plugins/project-management" || echo "$CLAUDE_PLUGIN_ROOT")
echo "Using plugin root: $PLUGIN_ROOT"
ls "$PLUGIN_ROOT/templates/whitepaper.typ" || echo "ERROR: Template not found!"
**Expected location:** `.claude/plugins/project-management`
3. Copy Template to Output Directory
Copy the typst template to the same directory as the output PDF:
PLUGIN_ROOT=$([ -d ".claude/plugins/project-management" ] && echo ".claude/plugins/project-management" || echo "$CLAUDE_PLUGIN_ROOT")
cp "$PLUGIN_ROOT/templates/whitepaper.typ" <output-directory>/whitepaper.typ
Replace `<output-directory>` with the directory where the PDF will be generated (e.g., `project-guides/`).
4. Run Pandoc
Execute the conversion with these exact flags. Run from the output directory so the template is found:
cd <output-directory> && \
PLUGIN_ROOT=$(if [ -d "../.claude/plugins/project-management" ]; then echo "../.claude/plugins/project-management"; elif [ -d ".claude/plugins/project-management" ]; then echo ".claude/plugins/project-management"; else echo "$CLAUDE_PLUGIN_ROOT"; fi) && \
TYPST_FONT_PATHS="$PLUGIN_ROOT/fonts" pandoc <input.md> \
-o <output.pdf> \
--pdf-engine=typst \
-V template="whitepaper.typ" \
-V mainfont="Source Sans 3" \
-V fontsize=10pt \
-V papersize=a4
**Example for `project-guides/ADMIN-GUIDE.md`:**
cd content && \
PLUGIN_ROOT=$([ -d "../.claude/plugins/project-management" ] && echo "../.claude/plugins/project-management" || echo "$CLAUDE_PLUGIN_ROOT") && \
TYPST_FONT_PATHS="$PLUGIN_ROOT/fonts" pandoc ADMIN-GUIDE.md -o ADMIN-GUIDE.pdf --pdf-engine=typst -V template="whitepaper.typ" -V mainfont="Source Sans 3" -V fontsize=10pt -V papersize=a4
Note: Do **not** pass `--toc` — the template generates its own table of contents page with proper styling.
5. Clean Up (MANDATORY - DO NOT SKIP)
**CRITICAL: You MUST execute cleanup immediately after PDF generation. Only PDF should remain.**
# Remove ALL intermediate files in one command
rm -f <output-directory>/whitepaper.typ <input.md> <input-without-extension>.plain.html <input-without-extension>.html
**Example cleanup for `project-guides/AUTHOR-GUIDE.md`:**
rm -f project-guides/whitepaper.typ project-guides/AUTHOR-GUIDE.md project-guides/AUTHOR-GUIDE.plain.html project-guides/AUTHOR-GUIDE.html
**After cleanup, only `project-guides/AUTHOR-GUIDE.pdf` should exist. No .md, .html, or .plain.html files.**
6. Report Result
"PDF created: [output.pdf]"
Frontmatter Reference
T
Read more
name: whitepaper description: Creates professional PDF whitepapers from Markdown files. Use when the user wants to create a whitepaper, technical document, or PDF with professional formatting and typography. license: Apache-2.0 allowed-tools: Read, Write, Edit, Bash metadata: argument-hint: "[input.md] [output.pdf]" version: "1.0.0"
Professional PDF Generator
This skill converts Markdown files into professionally typeset PDF whitepapers using pandoc and typst.
Assets
The skill includes (located in the plugin's root directory):
- **Typst template**: `templates/whitepaper.typ`
- **Source Sans 3 fonts**: `fonts/` — variable fonts supporting all weights (open source from Google Fonts)
- **Source Code Pro fonts**: `fonts/` (Regular, Bold, Italic, Bold Italic) — used for code blocks and inline code
**Plugin Root:** The plugin root is determined dynamically (see Step 2.5 below)
Typography Hierarchy
| Element | Weight | Style | |---------|--------|-------| | Headlines (H1) | Black (900) | Large, tight tracking | | Section headlines (H2) | Bold (700) | Blue accent line | | Subheads (H3, H4) | Bold (700) | Medium size | | Body copy | Regular (400) | Justified, comfortable leading | | Code | Source Code Pro | Monospace |
CRITICAL: FULLY AUTOMATIC EXECUTION
**THIS SKILL RUNS COMPLETELY UNATTENDED. DO NOT:**
- Ask "Should I proceed?" before generating PDF
- Ask "Should I delete these files?" before cleanup
- Ask "Is this okay?" at any step
- Wait for user confirmation between steps
- Pause to show intermediate results
- Request permission for file operations
**REQUIRED BEHAVIOR:**
- Execute all steps sequentially without stopping
- Generate PDF immediately when invoked
- Delete ALL source files immediately after PDF is created
- Only communicate with user AFTER everything is complete
- Report final result: "PDF created: [path]"
**If you find yourself about to ask the user a question during PDF generation or cleanup, STOP and just execute the operation instead.**
Usage
When the user asks to create a PDF, follow these steps:
1. Determine Input and Output
- Parse `$ARGUMENTS` for the input markdown file and optional output PDF path
- If no output path is given, use the same name as the input with a `.pdf` extension
- If no input is given, ask the user which markdown file to convert
- Check the file's YAML frontmatter (see "Frontmatter Reference" below). If `title` is missing, ask the user for a title before proceeding. If `date` is missing, default to today's date.
2. Install Dependencies (if missing)
Run for each missing tool — the script auto-detects the platform:
OS=$(uname -s)
# pandoc
command -v pandoc >/dev/null 2>&1 || {
[ "$OS" = "Darwin" ] && brew install pandoc || sudo apt-get update && sudo apt-get install -y pandoc
}
# typst
command -v typst >/dev/null 2>&1 || {
[ "$OS" = "Darwin" ] && brew install typst || {
curl -fsSL https://github.com/typst/typst/releases/latest/download/typst-x86_64-unknown-linux-musl.tar.xz \
| tar xJ --strip-components=1 -C /usr/local/bin/ typst-x86_64-unknown-linux-musl/typst
chmod +x /usr/local/bin/typst
}
}2.5 Locate Plugin Root Directory
**CRITICAL: Determine the plugin root before copying assets.**
The plugin root contains `templates/` and `fonts/` directories. Use this single command:
PLUGIN_ROOT=$([ -d ".claude/plugins/project-management" ] && echo ".claude/plugins/project-management" || echo "$CLAUDE_PLUGIN_ROOT") echo "Using plugin root: $PLUGIN_ROOT" ls "$PLUGIN_ROOT/templates/whitepaper.typ" || echo "ERROR: Template not found!"
**Expected location:** `.claude/plugins/project-management`
3. Copy Template to Output Directory
Copy the typst template to the same directory as the output PDF:
PLUGIN_ROOT=$([ -d ".claude/plugins/project-management" ] && echo ".claude/plugins/project-management" || echo "$CLAUDE_PLUGIN_ROOT") cp "$PLUGIN_ROOT/templates/whitepaper.typ" <output-directory>/whitepaper.typ
Replace `<output-directory>` with the directory where the PDF will be generated (e.g., `project-guides/`).
4. Run Pandoc
Execute the conversion with these exact flags. Run from the output directory so the template is found:
cd <output-directory> && \ PLUGIN_ROOT=$(if [ -d "../.claude/plugins/project-management" ]; then echo "../.claude/plugins/project-management"; elif [ -d ".claude/plugins/project-management" ]; then echo ".claude/plugins/project-management"; else echo "$CLAUDE_PLUGIN_ROOT"; fi) && \ TYPST_FONT_PATHS="$PLUGIN_ROOT/fonts" pandoc <input.md> \ -o <output.pdf> \ --pdf-engine=typst \ -V template="whitepaper.typ" \ -V mainfont="Source Sans 3" \ -V fontsize=10pt \ -V papersize=a4
**Example for `project-guides/ADMIN-GUIDE.md`:**
cd content && \ PLUGIN_ROOT=$([ -d "../.claude/plugins/project-management" ] && echo "../.claude/plugins/project-management" || echo "$CLAUDE_PLUGIN_ROOT") && \ TYPST_FONT_PATHS="$PLUGIN_ROOT/fonts" pandoc ADMIN-GUIDE.md -o ADMIN-GUIDE.pdf --pdf-engine=typst -V template="whitepaper.typ" -V mainfont="Source Sans 3" -V fontsize=10pt -V papersize=a4
Note: Do **not** pass `--toc` — the template generates its own table of contents page with proper styling.
5. Clean Up (MANDATORY - DO NOT SKIP)
**CRITICAL: You MUST execute cleanup immediately after PDF generation. Only PDF should remain.**
# Remove ALL intermediate files in one command rm -f <output-directory>/whitepaper.typ <input.md> <input-without-extension>.plain.html <input-without-extension>.html
**Example cleanup for `project-guides/AUTHOR-GUIDE.md`:**
rm -f project-guides/whitepaper.typ project-guides/AUTHOR-GUIDE.md project-guides/AUTHOR-GUIDE.plain.html project-guides/AUTHOR-GUIDE.html
**After cleanup, only `project-guides/AUTHOR-GUIDE.pdf` should exist. No .md, .html, or .plain.html files.**
6. Report Result
"PDF created: [output.pdf]"
Frontmatter Reference
T
Repo: adobe/skills
Other skills on adobe-skills.
- /aa-conversion-funnel-analysis
Analyzes a multi-step conversion funnel to find where visitors drop off and which steps have the worst leakage. Use this skill when someone describes a journey and asks about conversion rates, drop-off, fallout, or step completion. Trigger for "analyze our checkout funnel,"
Open skill - /aa-executive-briefing
Generates a concise, executive-ready performance summary covering key metrics, trends, and what's driving movement. Use this skill when someone needs to produce a briefing, executive summary, performance narrative, or stakeholder readout — for example, "write an exec summary of
Open skill - /aa-kpi-pulse
Produces a compact KPI digest showing how key metrics changed over a period and what's driving the movement. Use this skill when someone asks for a performance summary, a weekly recap, a morning briefing, a KPI update, or any variation of "how did we do this week/month." Also
Open skill - /aa-segment-performance-comparator
Compares the performance of two or more audience segments across key metrics side by side. Use this skill when someone wants to compare audiences or visitor groups — for example, "how do mobile visitors compare to desktop on conversion," "compare new vs. returning visitors,"
Open skill - /aa-top-movers-watchlist
Identifies which items (pages, campaigns, products, channels, regions) had the biggest increases or decreases for a key metric between two time periods. Use this skill when someone asks "what's up and what's down," "which campaigns moved the most," "top gainers and losers,"
Open skill - /cja-dimension-analysis
Comprehensive dimension analysis and reporting for CJA. Use this skill whenever the user wants to analyze one or more dimensions — including cardinality, distribution/skew, trends, anomalies, data quality errors, comparisons, and forecasting. Also trigger when someone asks "what
Open skill

