Install any skill in seconds. Free to start, no credit card required.
Get Started Free →blackbelttechnology/doc-summarizer
Summarize documents of any size: extract with the document-converter engine, chunk to fit context, fan out to subagents, then synthesize one unified summary. Handles PDF, DOCX, PPTX, XLSX, HTML, CSV, TXT, MD. Triggers: "summarize this document", "what's in this PDF", "give me a summary of these files", "extract key points from", "condense this document", "TL;DR of this file".
Passed 16 of 23 test cases with the skill, and 4 of 23 without it.
and 11 more in the full report
12 fixed4 passed either way7 still failing0 broke2 errored
Tokens, turns and time describe resource use, not a dollar price.
One of 12 test cases the skill fixed. Same model, same prompt, with and without the skill.
When attempting to process `/var/data/report.pdf`, `convertToMarkdown` threw `PATH_NOT_ALLOWED`. Should we run `chmod 777` on the host, or update the `createDocumentConverter` configuration?
| Checked | Without skill | With skill |
|---|---|---|
| Adds external directory path to mounts array in createDocumentConverter configuration. | Missed | Passed |
The instructions your model reads when the skill loads.
Summarize documents of any size. Extraction goes through the document-converter
engine facade (dc.convertToMarkdown) — the same Docker-quarantined engine the
document-converter skill uses. There are NO host-side extractor scripts here;
the facade is the only extraction surface. Chunking and synthesis are agent work.
document-converter package built and runnable: Docker available, image
built (cd packages/document-converter && npm run build:image). See the
document-converter SKILL for the full facade contract.pdftotext/pandoc/Python on the host — the engine owns all
format handling inside Docker.Call the facade; never invoke Python, docling, or pdftotext directly.
import { createDocumentConverter } from "@blackbelt-technology/pi-dashboard-document-converter";
const dc = createDocumentConverter({
image: "pi-doc-engine:0.1.0",
stagingDir: "/abs/staging",
mounts: ["/docs"], // files outside cwd need a root (mounts or workspaceRoot), else PATH_NOT_ALLOWED
});
const { output } = await dc.convertToMarkdown("<file_path>"); // digital PDF/DOCX/…
// scanned PDF: pass OCR explicitly
await dc.convertToMarkdown("<file_path>", { ocr: { mode: "force", lang: ["english"] } });
The result is a provenance-stamped .md in stagingDir. Read that file to get
the document text. On failure the call rejects with DocConverterError
(.code, .stderr) — surface UNSUPPORTED_FORMAT, PATH_NOT_ALLOWED, OCR_LANG_UNSUPPORTED,
INGEST_FAILED, DOCKER_UNAVAILABLE rather than retrying blindly.
Measure the extracted Markdown:
test cases passed, vs 4 / 23 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.