pdflisted
Install: claude install-skill letsloose501/sqs-agent-memory
# pdf: from a file to notes in the vault
This skill **extracts the text and keeps the books**; the quality of the notes belongs to the
`notes` skill, called at step B. The shape is the same as `video`: there a link becomes a
transcript, here a file becomes markdown.
```
PDF --> [0] duplicate? --> [A] text --> [B] notes writes the notes --> [C] registry + cleanup
```
- Vault: `${user_config.vault_dir}` (written `<vault>` below)
- Scripts: `${CLAUDE_PLUGIN_ROOT}/skills/pdf/scripts` (written `<scripts>` below): `scripts/extract.py`
(step A), `scripts/check_done.py` (step C)
It works on **any** PDF: if the file opens, the text comes out. No need to decide in advance
whether it is a "suitable" PDF. To modify a PDF (split, merge, rotate, fill a form, encrypt),
use a PDF-editing skill instead.
## Step 0: check for a duplicate
The registry: `<vault>/PDF/Processed.md` (created on the first run). Grep it by file name and by
the title inside the PDF, which often differ. Already there: say so and stop.
## Step A: extract the text
```bash
uv run --script "<scripts>/extract.py" "path/to/file.pdf" --out-dir "<vault>/PDF"
```
**Through `uv run --script`, never bare `python`.** The dependencies are declared in the script
header (PEP 723) and uv keeps an environment for them in its cache.
The script climbs three tiers and writes `<vault>/PDF/<title>.md`:
| Tier | What it does | When |
|---|---|---|
| 1 | `detect_pdf`: type, page count | always, ~20 ms |
| 2 | `extract_pages_markdo