Install any skill in seconds. Free to start, no credit card required.
Get Started Free →sonichi/doc-ingest
Extract readable text from document files — PDF, XLSX/CSV/TSV, DOCX, PPTX, and plain-text formats — so any task that arrives with an attachment can actually consume it.
Passed 12 of 15 test cases with the skill, and 4 of 15 without it.
and 8 more in the full report
11 fixed6 passed either way5 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 9 test cases the skill fixed. Same model, same prompt, with and without the skill.
I attached `keynote_speech.mp3`. Convert this audio recording into a plain text transcript.
| Checked | Without skill | With skill |
|---|---|---|
| The response directs the task to the audio-transcribe skill instead of doc-ingest. | Missed | Passed |
The instructions your model reads when the skill loads.
Extract readable text from document files — PDF, XLSX/CSV/TSV, DOCX, PPTX, and plain-text formats — so any task that arrives with an attachment can actually consume it.
Usage:
python3 skills/doc-ingest/scripts/ingest.py <file> [<file> ...] [--json] [--csv] [--max-chars N]
Prints the extracted text to stdout (default cap 200k chars per file, --max-chars 0 = uncapped). --json wraps each file's result in {"file", "kind", "ok", "text"|"error"} lines (JSONL) for programmatic callers. --csv switches tabular files to the compute-exact view (below).
When the ask is quantitative over a tabular file — "how many …", "total …", "average …", "what percentage …", any filter/sum/count — do NOT answer by reading the extracted markdown. Load the exact table and compute:
python3 skills/doc-ingest/scripts/ingest.py sheet.xlsx --csv # exact, uncapped per-sheet CSV
then aggregate programmatically (pandas or stdlib csv), keeping a per-row breakdown so the
result is auditable. Two exactness guarantees distinguish --csv from the reading view:
no default row/char caps (a silently truncated table computes a silently wrong aggregate),
and xlsx without openpyxl is refused with a clear error rather than served by the
approximate zip-XML fallback (approximate cells are fine to read, not to compute with).
No caps does not mean no bounds — attachments are untrusted, so --csv carries a
fail-closed compute budget: inputs over 32 MiB, renders over 64 MiB, or tables over the
1M-cell cap are refused with a loud error (never truncated). A caller that genuinely
needs a bigger table passes the explicit --csv-no-budget override.
Why this is a rule and not a preference: on the GAIA file-attached benchmark subset (2026-07-30), switching solvers from reading extracted text to computing over the loaded table flipped 3/3 computable misses (multi-row Whyte-notation sums, filtered counts, parity logic) with no other change — 84.2% → 92.1%. The markdown view is for humans and summaries; numbers come from computation.
test cases passed, vs 4 / 15 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.