summarize-document
SkillDocs & knowledgeSummarize a document at a requested length.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the summarize-document skill
What this skill tells your AI
The instructions your AI receives, as published by nirholas/pai in skills/summarize-document/SKILL.md and read by ahel’s review.
Summarize a PDF, DOCX, ODT, MD, TXT, or HTML file locally with no network access. Uses a map-reduce chunking strategy so large documents are handled without truncation.
Related docs: ../../SKILLS.md, ../SKILL.md.
1. Purpose
Produce a concise, well-structured summary of any supported document at a user-chosen length and style, entirely offline. Useful for research papers, contracts, meeting notes, and long web pages saved as HTML.
2. Instructions
- Size guard. Check the file size. If > 50 MB, prompt
user_confirmbefore continuing; abort on decline. - Extract text based on file extension:
.pdf—pdftotext -layout <path> -.docx/.odt—pandoc --to plain <path>.html/.htm—pandoc --strip-comments --to plain <path>.md/.txt/.rst— read raw
- Chunk the extracted text into ~3000-token windows with a 200-token overlap.
Approximate token count as
len(text.split()) * 1.3. - Map: send each chunk to the model with the prompt:
"Summarize this passage in 3-5 sentences. Be factual; do not add information."
- Reduce: concatenate the per-chunk summaries and send to the model with the
target length instruction:
short— 2-4 sentences totalmedium(default) — 1 paragraph (~150 words)long— 3-5 paragraphs
- Apply style:
plain(default) — flowing prosebullets— unordered-list, one item per key pointexecutive— 3 sentences, then Key decisions: and Open questions: sections
- Emit the summary. Do not emit the extracted text unless
--verboseis set.
3. Guardrails
- Never upload or transmit the document.
- No em dashes in output prose; use commas or parentheses instead.
- If the file extension is not in the supported list, report the type and exit; do not guess.
- If
pdftotextorpandocis not installed, emit a clear installation hint rather than failing silently.
4. Example session
User: Summarize ~/Documents/lease.pdf in bullets
Agent: Extracting text from lease.pdf (142 KB)...
Chunking into 4 windows...
Summarizing...
- Lease term: 12 months starting 2026-06-01.
- Monthly rent: $1,850 due on the 1st; $50/day late fee after the 5th.
- Pet policy: one cat or dog under 25 lb with a $500 deposit.
- Termination: 60-day written notice required from either party.
- Utilities: tenant pays electric and internet; landlord pays water and trash.
5. Testing
Run from the skill root:
bash tests/test_basic.sh
python3 tests/test_chunking.py
python3 tests/test_length_targets.py
See tests/ for details. Fixtures in fixtures/.
6. Changelog
0.1.0— Initial skill: map-reduce summarizer, three length targets, three styles.
Signals
- GitHub stars
- 109
- Forks
- 13
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
summarize-document- Source
- github.com/nirholas/pai