Automatically assist with Pandoc document conversions when user mentions converting markdown to PDF/DOCX/HTML or other formats.
# User: "Convert my thesis to PDF with citations"
# Skill assists by:
# 1. Validating YAML frontmatter (spaces, required fields)
# 2. Checking bibliography.bib and harvard.csl exist
# 3. Running: pandoc thesis.md -o thesis.pdf --citeproc --number-sections
# 4. ✅ Output: thesis.pdf created successfully
Provide expert assistance for converting markdown documents to PDF, DOCX, HTML, and presentations using Pandoc. Handle YAML frontmatter validation, bibliography setup, template generation, and format-specific conversion guidance.
Automatically invoke this skill when the user:
Do not use for:
scripts/validate.py - Python validation script for YAML frontmatter and dependenciesacademic-paper.yaml - Academic paper with citationsthesis-report.yaml - Thesis/report with custom title pagepresentation-beamer.yaml - LaTeX Beamer slidespresentation-revealjs.yaml - reveal.js web slidesarticle-simple.yaml - Simple article formatdefaults-pdf.yaml - Reusable PDF defaults filereferences.bib - BibTeX bibliography templateMakefile - Project automation templateharvard.csl - Harvard Cite Them Right styleapa.csl - APA 7th edition styleieee.csl - IEEE styleUsers can copy these to their project without downloading separately.
references/conversion_guide.md - Format-specific instructionsreferences/yaml_reference.md - Complete YAML variablesreferences/templates_guide.md - Template usage guidereferences/troubleshooting.md - Common errors and solutionsUser asks: "Check if my document is ready to convert"
Workflow using tools directly:
# Path to validation script
PLUGIN_DIR="~/.claude/marketplaces/cadrianmae-claude-marketplace/plugins/pandoc"
VALIDATE_SCRIPT="$PLUGIN_DIR/skills/pandoc/scripts/validate.py"
# Run validation
python3 "$VALIDATE_SCRIPT" document.md
Suggest to user: "You can also validate with: /pandoc:validate document.md"
User asks: "Help me create an academic paper"
Workflow using tools directly:
# Path to templates
PLUGIN_DIR="~/.claude/marketplaces/cadrianmae-claude-marketplace/plugins/pandoc"
TEMPLATE="$PLUGIN_DIR/skills/pandoc/assets/templates/academic-paper.yaml"
# Copy template to user's file
cp "$TEMPLATE" paper.md
# Show what to edit
echo "Created paper.md from template"
echo ""
echo "Edit the following fields:"
echo " - title: Your paper title"
echo " - author: Your name"
echo " - bibliography: Path to your .bib file"
Suggest to user: "Or use the template command: /pandoc:template academic-paper paper.md"
User asks: "Convert this to PDF"
Workflow using tools directly:
# Validate first
PLUGIN_DIR="~/.claude/marketplaces/cadrianmae-claude-marketplace/plugins/pandoc"
python3 "$PLUGIN_DIR/skills/pandoc/scripts/validate.py" document.md
if [[ $? -eq 0 ]]; then
# Check for bibliography
if grep -q "^bibliography:" document.md; then
CITEPROC="--citeproc"
echo "Bibliography detected - enabling citations"
fi
# Convert with smart defaults
pandoc document.md -o document.pdf \
--pdf-engine=pdflatex \
--number-sections \
$CITEPROC
if [[ $? -eq 0 ]]; then
echo "✅ Conversion successful: document.pdf"
else
echo "❌ Conversion failed - check errors above"
fi
else
echo "❌ Validation failed - fix errors before converting"
fi
Suggest to user: "Or use the convert command with smart defaults: /pandoc:convert document.md document.pdf"
User asks: "This markdown file needs frontmatter"
Workflow using tools directly:
FILE="document.md"
PLUGIN_DIR="~/.claude/marketplaces/cadrianmae-claude-marketplace/plugins/pandoc"
TEMPLATE="$PLUGIN_DIR/skills/pandoc/assets/templates/academic-paper.yaml"
# Check if already has frontmatter
if head -n 1 "$FILE" | grep -q "^---$"; then
echo "File already has frontmatter"
echo "Use Read tool to view and Edit tool to modify"
else
# Read existing content
CONTENT=$(cat "$FILE")
# Create temp file with template + content
{
cat "$TEMPLATE"
echo ""
echo "$CONTENT"
} > "${FILE}.tmp"
# Replace original
mv "${FILE}.tmp" "$FILE"
echo "✅ Added frontmatter to $FILE"
echo "Edit the YAML fields at the top of the file"
fi
Suggest to user: "Or use: /pandoc:frontmatter document.md"
User asks: "How do I add citations?"
Workflow:
Create bibliography file:
PLUGIN_DIR="~/.claude/marketplaces/cadrianmae-claude-marketplace/plugins/pandoc"
BIB_TEMPLATE="$PLUGIN_DIR/skills/pandoc/assets/templates/references.bib"
cp "$BIB_TEMPLATE" references.bib
echo "Created references.bib - edit to add your sources"
Copy CSL file (bundled with plugin):
PLUGIN_DIR="~/.claude/marketplaces/cadrianmae-claude-marketplace/plugins/pandoc"
# Choose one:
cp "$PLUGIN_DIR/skills/pandoc/assets/csl/harvard.csl" .
cp "$PLUGIN_DIR/skills/pandoc/assets/csl/apa.csl" .
cp "$PLUGIN_DIR/skills/pandoc/assets/csl/ieee.csl" .
Update frontmatter: Use Edit tool to add to document:
bibliography: references.bib
csl: harvard.csl
link-citations: true
Explain citation syntax:
Use [@citekey] for citations
Use @citekey for in-text citations
Note: Plugin includes Harvard, APA, and IEEE styles. For other styles, download from https://github.com/citation-style-language/styles
User asks: "Transform this document to match academic paper format"
Workflow using tools directly:
PLUGIN_DIR="~/.claude/marketplaces/cadrianmae-claude-marketplace/plugins/pandoc"
INPUT_FILE="document.md"
TARGET_STYLE="academic-paper" # or thesis, article, etc.
# 1. Backup original
cp "$INPUT_FILE" "${INPUT_FILE}.bak"
echo "Backed up to ${INPUT_FILE}.bak"
# 2. Read current frontmatter
echo "Current frontmatter:"
sed -n '/^---$/,/^---$/p' "$INPUT_FILE"
# 3. Get target template
TEMPLATE="$PLUGIN_DIR/skills/pandoc/assets/templates/${TARGET_STYLE}.yaml"
if [[ -f "$TEMPLATE" ]]; then
# 4. Extract content (everything after second ---)
CONTENT=$(sed -n '/^---$/,/^---$/{/^---$/d;p};/^---$/,$p' "$INPUT_FILE" | tail -n +2)
# 5. Combine template frontmatter + content
{
cat "$TEMPLATE"
echo ""
echo "$CONTENT"
} > "${INPUT_FILE}.tmp"
# 6. Replace original
mv "${INPUT_FILE}.tmp" "$INPUT_FILE"
echo "✅ Restyled to $TARGET_STYLE format"
echo ""
echo "Next steps:"
echo " 1. Edit frontmatter fields (author, title, etc.)"
echo " 2. Validate: Check document is ready"
echo " 3. Convert: Generate output"
else
echo "❌ Template not found: $TARGET_STYLE"
echo "Available: academic-paper, thesis, article, presentation-beamer, presentation-reveal"
fi
Common use cases:
OCR/PDF → Academic:
processed_date, ocr_model, source_typeauthor, bibliography, documentclassDraft → Thesis:
supervisor, institution, departmenttoc, lof, lotBlog → Paper:
bibliography, csl, numbersectionsdocumentclass to reportSuggest to user: "Or use: /pandoc:restyle document.md academic-paper"
Missing bibliography file:
# Check if file exists
if [[ ! -f references.bib ]]; then
echo "Bibliography file not found"
echo "Create it with: /pandoc:template bibtex references.bib"
fi
YAML syntax errors:
# Run validation to see exact error
python3 "$PLUGIN_DIR/skills/pandoc/scripts/validate.py" document.md
# Explains: tabs vs spaces, missing quotes, etc.
Missing LaTeX packages (for PDF):
echo "Install LaTeX packages:"
echo " sudo dnf install texlive-scheme-medium"
echo " # or"
echo " sudo apt-get install texlive-latex-base texlive-latex-extra"
Unicode errors in PDF:
echo "Use XeLaTeX instead of pdflatex:"
pandoc document.md -o document.pdf --pdf-engine=xelatex
--pdf-engine=xelatexgeometry: margin=1.5inpandoc document.md -o document.html \
--standalone \
--self-contained \
--toc
pandoc document.md -o document.docx --standalone
# Beamer (PDF slides)
pandoc slides.md -o slides.pdf --to beamer
# reveal.js (web slides)
pandoc slides.md -o slides.html --to revealjs --standalone
assets/templates/ directory.bib, .csl, images existThe plugin provides these slash commands for users:
/pandoc:template <type> [file] - Generate document templates/pandoc:validate <file> - Validate frontmatter and dependencies/pandoc:convert <input> <output> [options] - Convert with smart defaults/pandoc:frontmatter <file> [type] - Add/update frontmatter/pandoc:restyle <input> <target-style> - Transform document to match template style/pandoc:defaults <format> [file] - Generate defaults fileAs the skill: Use the underlying tools (scripts, pandoc CLI) directly via Bash. Mention these commands as suggestions for the user.
Load these when needed for detailed information:
references/conversion_guide.md - Format-specific conversion detailsreferences/yaml_reference.md - All YAML variables explainedreferences/templates_guide.md - Template customization guidereferences/troubleshooting.md - Comprehensive error solutionsPlugin directory:
PLUGIN_DIR="~/.claude/marketplaces/cadrianmae-claude-marketplace/plugins/pandoc"
Validation:
python3 "$PLUGIN_DIR/skills/pandoc/scripts/validate.py" file.md
Templates:
cp "$PLUGIN_DIR/skills/pandoc/assets/templates/academic-paper.yaml" output.md
Conversion (basic):
pandoc input.md -o output.pdf --pdf-engine=pdflatex --number-sections
Conversion (with citations):
pandoc input.md -o output.pdf --pdf-engine=pdflatex --citeproc --number-sections