Skill v1.0.0
currentAutomated scan100/100version: "1.0.0" name: doc-ingest description: > Amène des documents (PDF, DOCX, PPTX, XLSX, images) dans le contexte agent en markdown propre via markitdown. Use when: l'utilisateur donne un PDF ou un document Office à lire, analyser, résumer ou convertir, veut « ce PDF en contexte / en markdown », ou veut un repo entier aplati en une page pour contexte LLM (rendergit). license: MIT
Doc Ingest
Décision d'abord, conversion ensuite. Compter les pages d'un PDF : mdls -name kMDItemNumberOfPages <pdf> ; s'il ne trouve rien (index Spotlight), pypdf via uvx (uvx --from pypdf python3 -c "...").
| Cas | Faire | |
|---|---|---|
| PDF court (≤ ~20 pages), usage unique dans la conversation | Lecture native du PDF (outil Read, param pages) — pas de conversion. | |
| PDF long, document Office (docx/pptx/xlsx), lot de fichiers, ou réutilisation prévue (grep, sessions futures, autres agents) | Convertir en .md avec markitdown, puis travailler sur le .md. | |
| Un repo entier à mettre en contexte (audit, revue, reprise d'un projet) | rendergit <url-ou-chemin> → une page HTML : vue humain (navigation, coloration) + vue LLM (texte CXML à coller en contexte). Install une fois : uv tool install git+https://github.com/karpathy/rendergit |
Conversion
uvx "markitdown[all]" <fichier> -o <même-nom>.md
- Sortie par défaut : à côté de la source, même nom en
.md. Un.mddéjà
présent se compare avant d'écraser (la source a pu changer).
- Lot : une sortie par fichier source, mêmes règles.
- Contrôler la sortie : un
.mdquasi vide pour un PDF non vide = PDF
scanné (images). markitdown n'a pas d'OCR fiable seul → le signaler et basculer sur la lecture native du PDF (Read rend les pages visuellement, images comprises).
- XLSX : sortie = une table markdown par feuille. Au-delà de quelques
centaines de lignes, parser (pandas/csv) au lieu d'ingérer la table brute en contexte.
Après conversion
Travailler sur le .md (Read/Grep), citer le document d'origine dans les livrables, et laisser le .md en place : c'est le cache réutilisable pour les prochaines sessions et les autres agents.