
Doc Reader
Read any common document/data file, PDF, Word (.docx), Excel (.xlsx/.xls), PowerPoint...
Install
npx skills add HKUDS/Vibe-Trading --skill doc-reader -g -a claude-code -y- Repository
- HKUDS/Vibe-Trading37.4k
- Category
- Documents
- Updated
- 3d ago
- License
- MIT
- Context cost
- Lightabout 1,437 tokens
- Runs scripts
- No, instructions only
What it does
Read any common document/data file, PDF, Word (.docx), Excel (.xlsx/.xls), PowerPoint (.pptx), images (OCR), CSV/TSV, plain text, JSON/YAML/TOML, HTML/XML, and most source-code files. Use the `read_document` tool.
Universal Document Reader
Purpose
Return extracted text from any supported file in a single unified JSON envelope. The tool dispatches by file extension, you always call the same tool regardless of format.
Supported formats
| Category | Extensions | Notes |
|---|---|---|
.pdf | Text pages extracted in ms; scanned/image pages fall back to OCR | |
| Word | .docx | Paragraphs + table cells |
| Excel | .xlsx, .xls | All sheets, first 100 rows per sheet as preview |
| PowerPoint | .pptx | Slide text content |
| Images | .png/.jpg/.jpeg/.gif/.bmp/.webp/.tiff | OCR only |
| CSV / TSV | .csv, .tsv | Raw text with encoding fallback |
| Plain text | .txt/.md/.log/.rst | Encoding fallback |
| Config | .json/.yaml/.yml/.toml/.ini/.cfg/.env | Raw text |
| Markup | .html/.htm/.xml | Raw text (no HTML stripping) |
| Source code | .py/.js/.ts/.tsx/.go/.rs/.java/.cpp/.c/.sql/.sh/... | Raw text |
| Unknown extension | anything else | Best-effort read as UTF-8/GBK text |
Blocked (rejected at /upload): executables (.exe/.dll/.so/...) and
archives (.zip/.tar/...). Ask the user to unpack archives locally first.
Usage
Always call the tool directly, do not run Python from bash.
read_document(file_path="uploads/paper.pdf")
read_document(file_path="uploads/annual_report.pdf", pages="1-10")
read_document(file_path="uploads/contract.docx")
read_document(file_path="uploads/sales.xlsx")
read_document(file_path="uploads/deck.pptx")
read_document(file_path="uploads/chart.png") # image → OCR
read_document(file_path="uploads/config.yaml")
read_document(file_path="uploads/notes.md")
The pages parameter only applies to PDF; other formats ignore it.
Return envelope
All formats share this shape:
{
"status": "ok",
"file": "paper.pdf",
"format": "pdf",
"char_count": 52000,
"truncated": true,
"text": "..."
}
Format-specific extra fields:


