agentsclimarketplace

Doc tools

Skill szilikaroly/claude-skills/doc-tools

Claude Code skillek: többmodelles tudományos tanács (R + DuckDB), lokális modellel működő kontextus-tömörítés, és dokumentum-kinyerő eszközök

Install
npx -y skills add szilikaroly/claude-skills --skill doc-tools

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

3 things to look at

  • 18 days oldThe repository was created 18 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Extract text from PDF, Word, Excel, PowerPoint and LaTeX files, and edit/generate .docx and .tex programmatically. Provides the CLI commands pdftotext, doctotext, xlstotext and latextotext plus a compiled LaTeX toolchain (pdflatex/xelatex/latexmk via TinyTeX). Use whenever a task involves reading, converting, extracting from, or producing a document file — .pdf, .docx, .doc, .xlsx, .xls, .pptx, .ppt, .odt, .ods, .rtf, .csv, .tex — including "what does this PDF say", "pull the tables out of this spreadsheet", "turn this into a Word document", "compile this LaTeX", or feeding document text into another pipeline. Hungarian triggers: PDF kiolvasása, Word/Excel fájl feldolgozása, szövegkinyerés, dokumentum konvertálás, LaTeX fordítás.

SKILL.md

5.6 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it

Document tools

Four extractors on the PATH, plus Python libraries for authoring and editing. All four share the same interface: TOOL INPUT [-o OUT] [-f txt|md|json]. - as INPUT reads stdin. Default output is plain text on stdout.

Extracting

pdftotext report.pdf                      # all pages, reading order
pdftotext report.pdf --pages 3-7 --tables # page range + table extraction
pdftotext scan.pdf --ocr --ocr-lang hun   # scanned pages with no text layer
pdftotext report.pdf -f json -o out.json  # per-page records

doctotext memo.docx -f md --tables        # headings as markdown, tables included
doctotext draft.docx --comments           # append reviewer comments
doctotext deck.pptx --notes               # slides + speaker notes
doctotext legacy.doc                      # routed through LibreOffice

xlstotext model.xlsx                      # all sheets, computed values
xlstotext model.xlsx --formulas -s Data   # formulas from one sheet
xlstotext old.xls --csv -o data.csv       # legacy .xls to CSV
xlstotext big.xlsx --max-rows 50          # peek at a large sheet

latextotext paper.tex --bodyonly          # prose only, no preamble
latextotext paper.tex --sections          # outline of the section tree
latextotext paper.tex --pandoc -f md      # via pandoc; better cross-refs

Pick -f json when the output feeds another program — you get page/sheet/slide boundaries as structure instead of guessing at separators.

--formulas matters when auditing a spreadsheet: without it you see cached values, and a file never opened by Excel has no cached values at all (formula cells come back empty). Prefer --formulas when the logic is the point.

Editing and generating

Libraries, not CLIs — write Python against these:

NeedLibrary
Read/write .docxpython-docx (import docx)
.docx from a template with placeholdersdocxtpl (Jinja2 syntax inside Word)
Merge several .docx into onedocxcompose
Read/write .xlsx, formulas, chartsopenpyxl, xlsxwriter
Read/write .pptxpython-pptx
PDF manipulation (split/merge/annotate)pymupdf (import fitz), pypdf
PDF tables and layoutpdfplumber
LaTeX → text, macro expansionpylatexenc
LaTeX AST parsing and rewritingTexSoup
Any-to-any fallback conversionpandoc (CLI, already installed)

For .docx work that needs styling beyond python-docx's API (page numbers, letterheads, tracked changes), see the anthropic-skills:docx skill — it goes deeper on OOXML manipulation. This skill covers extraction and the plumbing.

Compiling LaTeX

TinyTeX lives in ~/Library/TinyTeX, binaries symlinked into ~/.local/bin.

latexmk -pdf -interaction=nonstopmode paper.tex   # handles reruns, biber, refs
tlmgr install <package>                            # add a missing package

latexmk exit 0 means a clean build. A PDF can appear even on a failed run — always check the exit code, then grep -E "^!" paper.log for the real error.

Hungarian is set up (babel-hungarian + hyphen-hungarian, formats rebuilt). If you add a language, install its hyphen-* package and run fmtutil-sys --byfmt pdflatex or hyphenation silently fails.

Legacy binary formats

.doc, .ppt, .odt, .odp are converted by shelling out to LibreOffice, installed at ~/Applications/LibreOffice.app (no sudo, not on the PATH — the tools find it themselves). .xls is read directly by xlrd, no LibreOffice needed. Every XML-based format works without it.

Feeding documents into memo-index

For a large pile of documents, don't extract them one by one — the memo-index skill's scripts/doc_ingest.py batches every format through these extractors and also rasterizes PDF pages for its vision pass. Use that when the goal is "read all of these and tell me X" rather than reading one file.

Notes

  • The shebangs point at /Users/szili/anaconda3/bin/python3 on purpose, not at env python3. A login shell resolves python3 to the python.org framework build, which does not have these libraries; pip3 installs into Anaconda. If the Python setup ever changes, repoint the shebangs and reinstall the libs.
  • OCR: Tesseract 5.5.2 lives in the ocr conda env, symlinked onto the PATH, with 125 languages including hun, eng, deu. Only pdftotext --ocr uses it. --ocr is per-page and lazy: a page that already has a text layer is read normally and never rasterized, so passing it on a mixed scanned/digital PDF is safe and costs nothing on the digital pages. Default --ocr-lang is eng+hun. Expect OCR to mangle math and to drop accents from capitals (ÉE) — if a number matters, verify it against the image rather than trusting the OCR text.
  • The implementations are in bin/ next to this file; _doccommon.py holds the shared argument parsing, LibreOffice discovery and output handling.

What ships with it: 5 files

20.2 KB alongside SKILL.md, 5 of them executable

bin/

Gives 0 of the 12 instructions most pdf office docs skills give in ~1.3k tokens

Counted across 636 of the 690 authors here whose files we hold, read 2026-08-07

  • extract text using pdfplumberin 89 of 636, across 23 files
  • create PDFs using reportlabin 83 of 636, across 16 files
  • read forms.md to fill out pdf formsin 80 of 636, across 13 files
  • OCR scanned PDFs using pytesseractin 77 of 636, across 10 files
  • merge or split PDFs using qpdfin 70 of 636, across 3 files
  • use excel formulas instead of hardcoded calculated valuesin 68 of 636, across 13 files
  • unpack edit xml and repack existing documentsin 63 of 636, across 8 files
  • document sources for hardcoded valuesin 61 of 636, across 9 files
  • write minimal python code without unnecessary commentsin 59 of 636, across 7 files
  • run the recalculation script after adding or modifying formulasin 59 of 636, across 7 files
  • fix all identified formula errors and recalculatein 58 of 636, across 6 files
  • format years as text stringsin 57 of 636, across 5 files

Said here and by no other author read

  • use json output when feeding to another program
  • prefer formulas flag when spreadsheet logic matters
  • use python libraries instead of clis for editing
  • check latexmk exit code before trusting the pdf
  • grep latex log for errors on failed builds
  • install hyphen packages before adding latex languages

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.