oma-academic-writing
Draft and revise academic prose against a rubric, evidence, and
Extract PDF text, headings, tables, and images into Markdown using
Claude Code
$ npx -y skills add first-fluke/oh-my-agent --skill oma-pdf --agent claude-code
Codex
$ npx skills add first-fluke/oh-my-agent --skill oma-pdf -a codex -y
Cursor
$ npx skills add first-fluke/oh-my-agent --skill oma-pdf -a cursor -y
Gemini CLI
$ npx skills add first-fluke/oh-my-agent --skill oma-pdf -a gemini-cli -y
GitHub Copilot
$ npx skills add first-fluke/oh-my-agent --skill oma-pdf -a github-copilot -y
OpenCode
$ npx skills add first-fluke/oh-my-agent --skill oma-pdf -a opencode -y
Windsurf
$ npx skills add first-fluke/oh-my-agent --skill oma-pdf -a windsurf -y
name: oma-pdf description: Extract PDF text, headings, tables, and images into Markdown using opendataloader-pdf. Use for PDF parsing, not PDF layout creation.
Convert PDF files into structured Markdown or another requested extraction format while preserving readable document structure for LLM context, RAG, or downstream review.
1. Confirm that the input path exists and is a PDF file, PDF folder, or supported batch input. 2. Check file size and warn when the input is large enough to risk slow conversion or memory pressure. 3. Resolve `output_dir` and the expected output filename.
1. **PREPARE**: Validate the input path, output target, and requested extraction options. 2. **ACQUIRE**: Assess whether the PDF has a readable text layer by extracting a text preview. 3. **ACT**: Convert using standard mode, tagged-structure mode, or hybrid OCR mode. 4. **VERIFY**: Run `mdformat` for Markdown output and inspect the result for readable structure. 5. **FINALIZE**: Report output path, page count, format, and any extraction quality issues.
| Failure | Recovery | |---------|----------| | `uvx` unavailable | Ask user to install `uv` before conversion | | `opendataloader-pdf-hybrid` not found | Invoke via `uvx --from "opendataloader-pdf[hybrid]" opendataloader-pdf-hybrid`; the bare package name does not exist on PyPI | | Password-protected PDF | Ask for password or unlocked PDF | | Garbled output | Retry with tagged structure or hybrid mode | | Missing tables | Retry with `--table-method cluster` or `--markdown-with-html` first; hybrid mode for scanned tables | | OCR language mismatch | Retry with explicit OCR languages, for example `ko,en` | | Large file or memory pressure | Split into page ranges using distinct output directories or `--to-stdout`; never reuse one output directory for the same basename |
| Action | SSL primitive | Evidence | |--------|---------------|----------| | Validate path and options | `VALIDATE` | Input preflight in execution protocol | | Probe text layer | `READ` | Text preview extraction | | Choose conversion strategy | `SELECT` | Standard, tagged, or hybrid mode decision | | Run converter | `CALL_TOOL` | `uvx opendataloader-pdf` | | Start OCR server | `CALL_TOOL` | `uvx --from "opendataloader-pdf[hybrid]" opendataloader-pdf-hybrid` | | Write output artifact | `WRITE` | Markdown, text, JSON, or HTML output | | Normalize Markdown | `CALL_TOOL` | `uvx mdformat` | | Inspect extraction quality | `VALIDATE` | Structure/readability verification | | Report result | `NOTIFY` | Final user-facing summary |
Draft and revise academic prose against a rubric, evidence, and
Evaluate system boundaries and architectural tradeoffs. Use for
Implement server APIs, authentication, and application data access.
Explore goals, constraints, and alternative approaches before
Coordinate assigned specialist tasks and handoffs manually. Use
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.