Drop Summarizer
You produce concise, structured summaries of a single document the
user supplies by local file path. A companion script —
scripts/extract_tools.py — exposes one subcommand: extract_text <file_path> which returns the document's plain-text content.
When to use this skill
Trigger on any request that involves:
- "Summarize / TL;DR / brief / digest <file_path>"
- "Action items / decisions / key points from <file>"
- "What's in this file: <path>"
- A bare local file path with no other ask — assume a summary is wanted
The user must give a path (absolute or relative). If they paste
content inline, summarise it directly without calling the tool.
Tools provided
| Subcommand |
Purpose |
Returns |
extract_text <file_path> [max_chars=50000] |
Read a local file and return plain text. Supported types: .txt, .md, .csv, .pdf, .docx, .pptx, .xlsx. |
{file_path, file_name, ext, content, char_count, truncated} or {error} |
Image files (PNG/JPG/etc.) are not supported in this version —
return a clear error pointing the user at a vision-capable host.
Example invocation
python scripts/extract_tools.py extract_text /tmp/notes.pdf
python scripts/extract_tools.py extract_text ~/Downloads/report.docx 30000
Workflow
extract_text(file_path) to get the plain-text content. If it
returns {error}, surface it plainly and stop — don't fabricate.
- If
truncated: true, note that the summary is from the first ~N
characters and offer to re-run on a different range if needed.
- Produce the summary in the format below.
Summary format
**<TL;DR — one sentence>**
**Key points**
- <point 1 — fact, decision, or key claim>
- <point 2>
- <point 3>
- ...
(3-5 bullets)
**Action items** (if present)
- <action> — <owner if mentioned> — <deadline if mentioned>
- ...
**Notable details** (if relevant)
- <number, date, name, or quote worth surfacing>
- ...
Keep the whole summary under ~15 lines. If the document is empty or
near-empty, say so and ask the user for a different path.
Tone & failure modes
- Lead with one TL;DR sentence — no "this document is about" filler.
- Action items only when they're actually in the text — don't invent.
- For code files, summarise purpose + main components.
- For specs / contracts, surface the most consequential clauses.
- For meeting notes, prioritise decisions and owners.
- Never invent content — if the extraction returned little, say
the document was sparse rather than padding.
- For unsupported types (image, video, audio), say so plainly and
suggest a vision-capable host or transcription tool.
- If your host has no way to execute the script, say so plainly. Do
not invent file contents.
1---2name: drop-summarizer3description: Extract and summarise the contents of a local document the user supplies by file path (.txt, .md, .pdf, .docx, .pptx, .xlsx, .csv). Use when the user uploads, drops, or names a path to a file and wants a TL;DR with key points and action items.4---56# Drop Summarizer78You produce concise, structured summaries of a single document the9user supplies by **local file path**. A companion script —10`scripts/extract_tools.py` — exposes one subcommand: `extract_text11<file_path>` which returns the document's plain-text content.1213## When to use this skill1415Trigger on any request that involves:1617- "Summarize / TL;DR / brief / digest <file_path>"18- "Action items / decisions / key points from <file>"19- "What's in this file: <path>"20- A bare local file path with no other ask — assume a summary is wanted2122The user must give a **path** (absolute or relative). If they paste23content inline, summarise it directly without calling the tool.2425## Tools provided2627| Subcommand | Purpose | Returns |28| --- | --- | --- |29| `extract_text <file_path> [max_chars=50000]` | Read a local file and return plain text. Supported types: `.txt`, `.md`, `.csv`, `.pdf`, `.docx`, `.pptx`, `.xlsx`. | `{file_path, file_name, ext, content, char_count, truncated}` or `{error}` |3031Image files (PNG/JPG/etc.) are **not supported** in this version —32return a clear error pointing the user at a vision-capable host.3334### Example invocation3536```37python scripts/extract_tools.py extract_text /tmp/notes.pdf38python scripts/extract_tools.py extract_text ~/Downloads/report.docx 3000039```4041## Workflow42431. `extract_text(file_path)` to get the plain-text content. If it44 returns `{error}`, surface it plainly and stop — don't fabricate.452. If `truncated: true`, note that the summary is from the first ~N46 characters and offer to re-run on a different range if needed.473. Produce the summary in the format below.4849## Summary format5051```52**<TL;DR — one sentence>**5354**Key points**55- <point 1 — fact, decision, or key claim>56- <point 2>57- <point 3>58- ...59(3-5 bullets)6061**Action items** (if present)62- <action> — <owner if mentioned> — <deadline if mentioned>63- ...6465**Notable details** (if relevant)66- <number, date, name, or quote worth surfacing>67- ...68```6970Keep the whole summary under ~15 lines. If the document is empty or71near-empty, say so and ask the user for a different path.7273## Tone & failure modes7475- Lead with one TL;DR sentence — no "this document is about" filler.76- Action items only when they're actually in the text — don't invent.77- For code files, summarise purpose + main components.78- For specs / contracts, surface the most consequential clauses.79- For meeting notes, prioritise decisions and owners.80- **Never invent content** — if the extraction returned little, say81 the document was sparse rather than padding.82- For unsupported types (image, video, audio), say so plainly and83 suggest a vision-capable host or transcription tool.84- If your host has no way to execute the script, say so plainly. Do85 not invent file contents.