plugins/core/skills/pdf-to-markdown/SKILL.md
Converts PDF files to structured Markdown with automatic mode selection. Supports simple text extraction (fast) and complex layouts with code/tables (vision). Triggers when the user wants to convert a PDF document, extract PDF content, or transform PDF to Markdown format.
npx skillsauth add talent-factory/claude-plugins pdf-to-markdownInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Convert PDF documents to structured Markdown with automatic mode selection.
When the user requests PDF conversion:
Ask the user which mode to use:
| Mode | Best For | Speed | |------|----------|-------| | fast | Simple text documents, reports | Very fast | | vision | Complex layouts, code, tables, scans | Medium |
Run the converter script:
python ${CLAUDE_PLUGIN_ROOT}/skills/pdf-to-markdown/scripts/pdf_converter.py "<pdf_path>" --mode fast
The script outputs:
<name>.md - Markdown file with extracted text<name>_images/ - Extracted images (if any)Report the result to the user.
Step 1: Convert PDF to page images:
python ${CLAUDE_PLUGIN_ROOT}/skills/pdf-to-markdown/scripts/pdf_converter.py "<pdf_path>" --mode vision [--pages START-END] [--dpi 150]
This creates <name>_pages/ with PNG images.
Step 2: Read each page image using the Read tool and analyze the content.
Step 3: For each page, generate Markdown following these rules:
java, python, etc.)[Image: description]Step 4: Combine all pages into a single Markdown file:
# Document Title
<!-- Page 1 -->
[page 1 content]
---
<!-- Page 2 -->
[page 2 content]
Step 5: Write the final Markdown file using the Write tool.
Step 6: Clean up temporary page images (ask user first).
User: Convert /Users/me/report.pdf to Markdown
Claude: I will convert the PDF. Which mode do you prefer?
- **fast**: Quick text extraction (for simple documents)
- **vision**: Image analysis (for complex layouts, code, tables)
User: fast
Claude: [Runs script, reports result]
Done! Created:
- /Users/me/report.md
- /Users/me/report_images/ (3 images)
User: Convert java-book.pdf to Markdown, contains a lot of code
Claude: Since the document contains code, I recommend vision mode.
Should I convert the entire PDF or only specific pages?
User: Pages 10-30
Claude: [Converts pages to images]
[Reads each page image]
[Generates structured Markdown with code blocks]
[Writes output file]
Done! Created: java-book.md (21 pages)
Should I delete the temporary page images?
User: /pdf-to-markdown /path/to/document.pdf
Claude: [Asks for mode preference]
[Executes conversion]
[Reports result]
Ensure dependencies are installed before first use:
# Fast mode
pip install PyMuPDF Pillow --break-system-packages
# Vision mode (additional)
pip install pdf2image --break-system-packages
brew install poppler # macOS
| Option | Description | Default |
|--------|-------------|---------|
| --mode fast | PyMuPDF text extraction | Default |
| --mode vision | Prepare images for analysis | - |
| --pages START-END | Process specific pages | All |
| --dpi N | Image resolution | 150 |
| --no-images | Skip image extraction (fast) | - |
| --use-api | Direct Anthropic API (vision mode) | Off |
| --model NAME | Claude model for --use-api calls | claude-opus-4-7 |
Note on
--model: The default isclaude-opus-4-7for high-resolution image handling. Set--model claude-sonnet-4-6for lower-cost runs on simpler documents. Direct API usage (--use-api) bills the user'sANTHROPIC_API_KEYper page.
documentation
Creates comprehensive handoff documentation before a /compact operation, enabling a new agent with fresh context to seamlessly continue the work. Activate when the user says "prepare a handoff", "document before compact", "context is getting too large", "I need to hand this off", "create a handoff document", "end of session notes", or "document the current state for tomorrow". Supports --output and --linear-issue options.
documentation
Collects completed tasks, GitHub activity, calendar meetings, wiki learnings, and Linear progress for the past week, then writes a structured retrospective to the Obsidian vault. Activate when the user runs "/weekly-review", asks "what did I accomplish this week", "weekly retrospective", "summarise my week", or "prepare weekly review". Works from any directory.
development
Produces a prioritised daily briefing by aggregating tasks from Obsidian TaskNotes, Google Calendar, Gmail, Linear, and GitHub, then writes the result to today's daily note in the Obsidian vault. Activate when the user runs "/today", asks "what's on my plate today", "give me my daily briefing", "what do I need to do today", or "morning briefing". Works from any directory without requiring Obsidian to be running.
tools
Provides a quick status snapshot of all GitHub repositories in a configured organisation — active, dormant, stalled — plus open pull requests and issues. Terminal output only, optimised for speed. Activate when the user runs "/project-pulse", asks "what is the status of my GitHub projects", "show me my repos", "which projects are active", "project overview", "GitHub pulse", or "what is happening in [org]". Works from any directory.