Communitygithub.com

docx

Utilisez cette compétence lorsque l'utilisateur souhaite créer, lire, modifier ou manipuler des documents Word (.docx) ou des modèles Word (.dotx). Les déclencheurs incluent : toute mention de

Qu'est-ce que docx ?

Cette compétence permet de créer, éditer et analyser des fichiers Word (.docx) à l'aide de scripts Python et d'outils en ligne de commande. Elle est particulièrement utile pour les développeurs et les utilisateurs avancés qui ont besoin d'automatiser la manipulation de documents Word, par exemple pour la génération de rapports, la révision de contrats ou l'extraction de contenu. La compétence prend en charge les workflows avec docx-js (npm), pandoc, LibreOffice et des scripts Python dédiés. Pour la création, elle utilise docx-js avec des conseils sur les pièges courants (format de page, tableaux, listes, images). Pour l'édition, elle décompresse le fichier docx, modifie directement le XML, puis le recompresse, avec des étapes de validation et de fusion des fragments de texte. Elle gère également les modifications suivies, les commentaires et la conversion de fichiers .doc hérités. L'utilisateur doit avoir ces dépendances installées : pandoc, LibreOffice, pdftoppm.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/K-Dense-AI/scientific-agent-skills/tree/main/skills/docx

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Création, édition et analyse de fichiers DOCX

Un .docx est une archive ZIP de fichiers XML. Choisissez votre approche en fonction de la tâche :

TâcheApproche
Créer un nouveau documentÉcrire un script docx (npm) — voir les pièges ci-dessous
Éditer un document existantunzip → modifier word/document.xml → zip (docx-js ne peut pas ouvrir les fichiers existants)
Lire le contenupandoc -t markdown file.docx

Les chemins de scripts ci-dessous sont relatifs au répertoire de cette compétence.

Création avec docx-js — pièges

docx est préinstallé — n'exécutez pas npm install d'abord ; écrivez le script et utilisez require('docx') directement. Seulement si ce require échoue : npm install docx. Le modèle connaît l'API ; voici les pièges :

  • La taille de page par défaut est A4. Pour du US Letter, définissez page: { size: { width: 12240, height: 15840 } } (en DXA ; 1440 = 1″).
  • Paysage : passez les dimensions portrait et orientation: PageOrientation.LANDSCAPE — docx-js échange la largeur et la hauteur en interne.
  • Les tableaux nécessitent des largeurs doubles : définissez columnWidths sur le tableau ET width sur chaque cellule, tous deux en WidthType.DXA (PERCENTAGE ne fonctionne pas dans Google Docs). Les largeurs de colonnes doivent totaliser la largeur du tableau.
  • Fond de tableau : utilisez ShadingType.CLEAR, jamais SOLID (rendu en noir).
  • Listes : n'insérez jamais • littéralement ; utilisez une configuration numbering avec LevelFormat.BULLET.
  • ImageRun nécessite type: ("png", "jpg", …).
  • PageBreak doit être à l'intérieur d'un Paragraph.
  • N'utilisez jamais \n — utilisez des éléments Paragraph séparés.
  • TOC : les titres doivent utiliser les HeadingLevel.* intégrés ; les styles de titre personnalisés nécessitent outlineLevel pour apparaître.
  • N'utilisez pas un tableau comme filet horizontal — utilisez plutôt une bordure inférieure de paragraphe.
  • Points de suite / aligné à droite sur la même ligne : utilisez PositionalTab (alignment: PositionalTabAlignment.RIGHT, leader: PositionalTabLeader.DOT) à l'intérieur d'un TextRun, pas de . littéraux ou de remplissage d'espaces.

Vérifier la sortie

Après avoir écrit un .docx, convertissez-le et examinez-le :

python scripts/office/soffice.py --headless --convert-to pdf output.docx
pdftoppm -jpeg -r 100 output.pdf page
ls page-*.jpg   # puis lisez les images

pdftoppm complète les numéros de page avec des zéros sur la largeur du nombre total de pages (page-01.jpg…page-12.jpg).

Éditer des documents existants

Les fichiers .doc hérités doivent d'abord être convertis : python scripts/office/soffice.py --headless --convert-to docx file.doc.

unzip -q doc.docx -d unpacked/
find unpacked -type l -delete   # supprimer les entrées de liens symboliques — les docx de sources externes ne sont pas fiables
python scripts/merge_runs.py unpacked/   # fusionner les fragments de texte pour rendre le texte trouvable
# modifier unpacked/word/document.xml sur place — ne PAS reformater ni pretty-print
(cd unpacked && rm -f ../out.docx && zip -Xr ../out.docx .)
python scripts/office/validate.py out.docx --original doc.docx   # vérifications XSD ; --auto-repair corrige les problèmes courants
# suivi des modifications ? ajoutez --author "<le nom sous lequel vous avez fait le suivi>" pour vérifier que chaque modification est suivie

Word répartit le texte sur de nombreuses balises <w:r> (identifiants de révision, marqueurs de vérification orthographique), donc une phrase que vous voyez dans le document n'existe souvent pas en tant que chaîne contiguë dans le XML. merge_runs.py fusionne les fragments adjacents formatés de manière identique dans word/document.xml sans modifier le contenu ni le rendu ; il accepte aussi directement un .docx (python scripts/merge_runs.py doc.docx -o merged.docx).

Modifications suivies : lors du suivi des modifications, validez avec --author "<le nom sous lequel vous avez fait le suivi>" (nécessite --original) — il signale tout texte que vous avez modifié sans <w:ins>/<w:del> autour, ce qui est facile à faire accidentellement et invisible dans la vue acceptée. Encapsulez les fragments dans <w:ins>/<w:del> avec les attributs w:id, w:author, w:date. À l'intérieur de <w:del>, l'élément de texte est <w:delText>, pas <w:t>. Une marque de paragraphe supprimée (<w:pPr><w:rPr><w:del w:id=".." w:author=".." w:date=".."/></w:rPr></w:pPr>) signifie "fusionner ce paragraphe dans le suivant" — donc supprimer un paragraphe carrément, c'est cela plus un <w:del> autour de chaque fragment. <w:del/> doit précéder les autres enfants de rPr ; leur ordre est imposé par le schéma.

Pour produire une copie propre avec toutes les modifications suivies acceptées : python scripts/accept_changes.py in.docx out.docx.

Accepter une marque de paragraphe supprimée devrait joindre ce paragraphe à celui du dessous, donc un paragraphe dont tous les fragments sont tous supprimés disparaît. Word fait cela ; accept_changes.py et pandoc --track-changes=accept ne le font pas toujours. Les deux échouent de la même manière — ils suppriment le texte supprimé mais laissent le paragraphe vidé derrière, qui apparaît comme une puce vide parasite lorsqu'il était numéroté automatiquement :

  • pandoc --track-changes=accept ne joint jamais les paragraphes.
  • accept_changes.py (LibreOffice) les joint correctement, sauf lorsque le paragraphe supprimé est suivi d'un paragraphe d'espacement vide.

Une puce vide dans l'une ou l'autre vue est un artefact de cette vue, pas un défaut du document. Vérifiez les suppressions de paragraphes dans le XML.

Commentaires

Les commentaires nécessitent six fichiers interconnectés. Utilisez l'assistant — mode répertoire lorsque vous allez aussi modifier document.xml (évite un cycle de décompression/recompression), mode .docx direct sinon :

# Contre un répertoire déjà décompressé (préféré lors du placement de marqueurs)
python scripts/comment.py unpacked/ "Le plafond des frais est trop bas"
python scripts/comment.py unpacked/ "D'accord" --parent 0

# Contre un .docx directement
python scripts/comment.py contract.docx "Ce plafond est trop bas" -o annotated.docx

Le script écrit comments.xml, commentsExtended.xml, commentsIds.xml, commentsExtensible.xml, les relations et les remplacements de type de contenu. Les ID de commentaires sont attribués automatiquement. Il imprime ensuite l'extrait <w:commentRangeStart>/<w:commentRangeEnd>/<w:commentReference> à ajouter à word/document.xml pour que le commentaire soit ancré à un texte spécifique — jusqu'à ce que vous placiez ces marqueurs, le commentaire existe mais n'est pas visible.

Dépendances

docx (npm, préinstallé — installez seulement si require('docx') échoue) · pandoc · LibreOffice (soffice) · pdftoppm (Poppler)


Cette compétence est créée et maintenue par Anthropic. Incluse ici sans modification, à l'exception des métadonnées de préambule ; voir LICENSE.txt pour les conditions.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

adaptyv

How to use the Adaptyv Bio Foundry API and Python SDK for protein experiment design, submission, and results retrieval. Use this skill whenever the user mentions Adaptyv, Foundry API, protein binding assays, protein screening experiments, BLI/SPR assays, thermostability assays, or wants to submit protein sequences for experimental characterization. Also trigger when code imports `adaptyv`, `adaptyv_sdk`, or `FoundryClient`, or references `foundry-api-public.adaptyvbio.com`.

aeon

This skill should be used for time series machine learning tasks including classification, regression, clustering, forecasting, anomaly detection, segmentation, and similarity search. Use when working with temporal data, sequential patterns, or time-indexed observations requiring specialized algorithms beyond standard ML approaches. Particularly suited for univariate and multivariate time series analysis with scikit-learn compatible APIs.

alphagenome

Look up precomputed AlphaGenome Atlas effects for any GRCh38 single-nucleotide variant (AVI score with Phred and 18 SHAP feature attributions, plus raw and quantile scores for RNA-seq, DNase, ATAC, ChIP-TF, ChIP-histone, CAGE, PRO-cap, splicing, polyadenylation and contact-map tracks), score variants or scan windows on demand with the AlphaGenome model for human and mouse (variant scoring, in silico mutagenesis, REF-versus-ALT track prediction), and build Atlas website deep links. Use when the user mentions AlphaGenome, AlphaGenome Atlas, AVI or AlphaGenome Variant Impact, DeepMind variant effect prediction, or wants to prioritise or mechanistically interpret non-coding, regulatory, splicing, enhancer, promoter, or chromatin-accessibility effects of SNVs from a VCF, credible set, or region. Research use only; not a clinical tool.

analytical-method-validation

Plan, execute, and document validation, verification, and transfer of analytical procedures under the governing framework - ICH Q2(R2) and Q14, USP <1220>/<1225>/<1226>, ICH M10 bioanalytical, CLSI EP, or ISO/IEC 17025. Use for HPLC, LC-MS/MS, GC, CE, ICP-MS, dissolution, qNMR, qPCR, NIR, and ligand binding or cell-based assays whenever the question is whether a procedure is fit for its intended purpose. Triggers include

anndata

Data structure for annotated matrices in single-cell analysis. Use when working with .h5ad files or integrating with the scverse ecosystem. This is the data format skill—for analysis workflows use scanpy; for probabilistic models use scvi-tools; for population-scale queries use cellxgene-census.

arbor

Autonomously improve a real artifact (code, training recipe, agent harness, data pipeline, prompt) against an objective and an evaluator, using Hypothesis Tree Refinement (HTR) from the Arbor paper. Use this whenever someone wants to iteratively optimize something over many experiments without overfitting — e.g.

arboreto

Infer gene regulatory networks (GRNs) from gene expression data using scalable algorithms (GRNBoost2, GENIE3). Use when analyzing transcriptomics data (bulk RNA-seq, single-cell RNA-seq) to identify transcription factor-target gene relationships and regulatory interactions. Supports distributed computation for large-scale datasets.

astropy

Core Python library for astronomy and astrophysics workflows that need Astropy APIs, including units/quantities, coordinates, FITS I/O, tables, time systems, WCS, and cosmology. Use when implementing or debugging astronomical data analysis code with Astropy.

autoskill

Observe the user

benchling-integration

Benchling Python SDK and REST API integration for registry entities, inventory, ELN entries, workflows, Benchling Apps, and Data Warehouse queries. Use when automating lab data with benchling-sdk or the v2 API.

bgpt-paper-search

Search scientific papers and retrieve structured experimental data extracted from full-text studies via the BGPT MCP server. Returns 25+ fields per paper including methods, results, sample sizes, quality scores, and conclusions. Use for literature reviews, evidence synthesis, and finding experimental details not available in abstracts alone.

bids

>

biopython

Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.

bioservices

Unified Python interface to 40+ bioinformatics services. Use when querying multiple databases (UniProt, KEGG, ChEMBL, Reactome) in a single workflow with consistent API. Best for cross-database analysis, ID mapping across services. For quick single-database lookups use gget; for sequence/file manipulation use biopython.

bulk-rnaseq

End-to-end bulk RNA-seq orchestrator — takes raw FASTQ reads through QC and trimming (FastQC, fastp/Trim Galore), alignment and quantification (STAR, Salmon, featureCounts), assembles a gene-level counts matrix, then hands off to differential expression (pydeseq2), pathway/GSEA enrichment (pathway-enrichment), and publication figures (scientific-visualization). Use whenever the user has bulk RNA-seq reads or quant output and wants a complete, reproducible differential-expression workflow — e.g.

cellxgene-census

Query the CZ CELLxGENE Census programmatically for versioned public single-cell and spatial transcriptomics data. Use when you need population-scale cell metadata, gene expression slices, Census summary counts, source H5AD URIs/downloads, embeddings, spatial Census data, or reference atlas comparisons across organisms, tissues, diseases, assays, and cell types. For analyzing your own local single-cell data use scanpy, anndata, or scvi-tools.

cirq

Google quantum computing framework. Use when targeting Google Quantum AI hardware, designing noise-aware circuits, or running quantum characterization experiments. Best for Google hardware, noise modeling, and low-level circuit design. For IBM hardware use qiskit; for quantum ML with autodiff use pennylane; for physics simulations use qutip.

citation-management

Comprehensive citation management for academic research. Search OpenAlex, PubMed, and Google Scholar for papers, extract accurate metadata, validate citations, and generate properly formatted BibTeX entries. This skill should be used when you need to find papers, verify citation information, convert DOIs to BibTeX, or ensure reference accuracy in scientific writing.

clinical-decision-support

Prepare and validate research-only clinical decision-support evaluation, evidence-profile, cohort, survival, biomarker/model, privacy, and governance artifacts. Use for aggregate or synthetic research documentation and traceability—not patient care or live clinical operation.

clinical-reports

Create safety-bounded draft structures and run local deterministic checks for clinical case, diagnostic, trial, safety, and aggregate research reports. Use only with synthetic, de-identified, or aggregate inputs and verified source-fact manifests; every output requires qualified review.

Skills associés