oma-academic-writing
Draft and revise academic prose against a rubric, evidence, and
Extract PDF text, headings, tables, and images into Markdown using
$ npx -y skills add first-fluke/oh-my-agent --skill oma-pdf --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/oma-pdfContext preview
The summary Claude sees to decide when to auto-load this skill.
Extract PDF text, headings, tables, and images into Markdown using
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 |
Agents narrate success. oh-my-agent checks the artifacts. Spawning parallel agents is the easy part. The hard part is knowing whether they actually did the work.
Repo: first-fluke/oh-my-agent
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.
Coordinate assigned specialist tasks and handoffs manually. Use