document-format-conformance — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited document-format-conformance (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Boîte à outils experte pour les spécifications des formats documentaires et leur conformité. Deux modes complémentaires :
(.pdf, .docx, .xlsx, .pptx, .odt, .ods, .odp, Factur-X) en garantissant qu'ils restent conformes à leur spec après modification.
(couverture de la spec, écarts, vecteurs de test). Voir references/audit-methodology.md.
Principe directeur : on n'implémente aucun parseur maison. Les scripts sont de fins wrappers autour des validateurs de référence (qpdf, veraPDF, lxml/xmllint, factur-x/saxonche, pikepdf/pypdf). La conformité affichée est donc celle d'outils faisant autorité, pas d'heuristiques.
Le skill installe lui-même ses dépendances (venv Python + CLI + veraPDF) :
bash scripts/setup.sh # idempotent : relançable sans risque
python3 scripts/doctor.py # diagnostic : que manque-t-il ?setup.sh crée ./.venv (pikepdf, pypdf, factur-x, python-docx, python-pptx, openpyxl, lxml), installe qpdf + xmllint (apt) et veraPDF (headless dans ~/.local). Les scripts Python détectent ./.venv et s'y ré-exécutent seuls — les lancer avec python3 scripts/<x>.py … suffit. Si un validateur manque, le script le signale et renvoie vers setup.sh (jamais d'échec silencieux).
Ajouter~/.local/binauPATHsiverapdfn'est pas trouvé.
detect_format() reconnaît le format par magic bytes (%PDF, PK + mimetype/ parts). En général, lancer directement le script : il route seul.
| Si le fichier est… | Famille | Spec | Référence à lire |
|---|---|---|---|
.pdf | pdf | ISO 32000-2 (+ ISO 19005 PDF/A) | references/pdf.md |
.docx .xlsx .pptx | ooxml | ECMA-376 / ISO 29500 (OPC) | references/ooxml.md |
.odt .ods .odp | odf | ISO 26300 (ODF) | references/odf.md |
| Factur-X / ZUGFeRD | pdf (PDF/A-3) | ISO 19005-3 + Factur-X | references/facturx-pdfa3.md |
python3 scripts/inspect_doc.py <fichier>
python3 scripts/validate.py <fichier> [--pdfa 3b] [--xsd DIR] [--rng SCHEMA]
python3 scripts/pdf_modify.py <set-meta|attach|repair|decrypt> …python3 scripts/opc_modify.py <list|get|set> …python3 scripts/facturx_tool.py <check|extract|embed> …Gate de conformité (NON-NÉGOCIABLE) : toute modification est rejetée ou signalée non conforme si elle casse la spec — un opc_modify set refuse un XML non well-formed (aucun fichier produit) ; un pdf_modify/facturx embed relance qpdf/veraPDF sur la sortie. Ne jamais livrer un fichier dont la post-validation n'est pas verte.
| Script | Rôle | Outils sous-jacents |
|---|---|---|
inspect_doc.py <f> | dump structurel JSON (lecture seule) | pikepdf, zipfile, lxml |
validate.py <f> [--pdfa] [--xsd] [--rng] | rapport de conformité | qpdf, veraPDF, lxml, xmllint |
pdf_modify.py … | set-meta / attach / repair / decrypt | pikepdf, pypdf (incremental), qpdf |
opc_modify.py … | list / get / set d'une part OOXML/ODF | zipfile, lxml + revalidation |
facturx_tool.py … | check / extract / embed Factur-X | factur-x, pikepdf, veraPDF |
doctor.py | diagnostic des validateurs | — |
setup.sh | bootstrap idempotent | venv, apt, veraPDF |
--incremental : append d'une révision, octets d'origine préservés → signatures intactes). Un fichier « réparé » par qpdf (xref reconstruit) est signalé **non byte-clean** (≠ warning bénin /Size`).
[Content_Types].xml déclare chaque part, les*.rels pointent vers des parts existantes, parts XML well-formed.
mimetype doit être la 1ère entrée du ZIP, STORED (non compressée),valeur exacte — opc_modify le re-garantit à chaque repackage.
factur-x.xml +/AFRelationship + /AF document-level + XMP Factur-X. La sémantique fiscale du XML (Schematron EN16931, business terms, réforme FR 2026) relève du skill isca-nf525-facturation-electronique — ne pas la dupliquer ici.
Pour auditer une codebase qui produit ces formats (ex : un moteur PDF maison, un exporteur docx), suivre references/audit-methodology.md : inventaire des features de la spec → matrice de couverture → génération de fixtures → validation des sorties avec les mêmes scripts → table d'écarts priorisée.
La validation XSD ECMA-376 et RelaxNG ODF nécessite les schémas officiels (non redistribués ici). Procédure d'obtention + commandes xmllint --schema/--relaxng dans references/ooxml.md et references/odf.md.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.