# Un pipeline qui déclare les abilities d’une extension via l’Abilities API

> Générer automatiquement la documentation des capacités exposées par une extension à chaque déploiement, plutôt que de la maintenir à la main.

- Auteur : Clément Hadrot
- Publié le : 2025-11-26
- Mis à jour le : 2025-11-26
- Catégorie : Outils &amp; workflow
- URL : https://wpmoderne.dev.wordpress-developpement.fr/outils/pipeline-declare-abilities-extension-abilities-api/

## L’essentiel

- La documentation manuelle des abilities se périme en quelques semaines
- Un script d'introspection génère un rapport à chaque build
- Le rapport est comparé à la version précédente pour détecter les régressions

`wp abilities list --format=json`. Cette commande, appuyée sur le plugin de référence de l'Abilities API en attendant sa fusion prévue avec WordPress 6.9, renvoie la liste exhaustive des capacités qu'une extension déclare à un instant donné. Elle est devenue, dans notre pipeline d'intégration continue, la source unique de vérité de la documentation des abilities, remplaçant un fichier Markdown mis à jour manuellement et systématiquement en retard sur le code réel.

Ce texte détaille la mise en place de ce pipeline : pourquoi la documentation manuelle des abilities ne tenait pas dans la durée, comment le rapport est généré automatiquement, et ce que la comparaison entre deux versions permet de détecter avant qu'une régression n'atteigne la production.

## Le problème d'une documentation maintenue à la main

Sur une extension métier développée pour un client du secteur associatif, chaque nouvelle capacité déclarée — une pour lister les adhérents, une pour créer un événement, une pour exporter un rapport — devait en théorie être ajoutée à un fichier de documentation dédié. En pratique, sur les six premiers mois du projet, seules trois des huit abilities réellement déclarées dans le code figuraient encore correctement documentées. Le décalage n'était pas dû à de la négligence, mais à la réalité du rythme de développement : documenter à la main un élément qui change à chaque itération finit toujours par prendre du retard.

## Générer le rapport à chaque exécution du pipeline

> L'essentiel à retenir : La documentation manuelle des abilities se périme en quelques semaines ; Un script d'introspection génère un rapport à chaque build ; Le rapport est comparé à la version précédente pour détecter les régressions

La solution retenue consiste à générer ce rapport automatiquement à chaque build, en interrogeant directement l'instance WordPress exécutée dans l'environnement de test du pipeline plutôt qu'en analysant le code source de façon statique. Cette approche garantit que seules les abilities réellement enregistrées à l'exécution apparaissent dans le rapport, et non celles simplement présentes dans un fichier PHP mais jamais effectivement chargées.

```
steps:
  - name: Générer le rapport des abilities
    run: |
      wp abilities list --format=json > abilities-report.json
      diff abilities-report.json abilities-report-previous.json || true
  - name: Publier le rapport comme artefact
    uses: actions/upload-artifact@v4
    with:
      name: abilities-report
      path: abilities-report.json
```

Ce rapport, publié comme artefact du pipeline, devient consultable par n'importe quel membre de l'équipe sans avoir à relire le code source de l'extension pour comprendre ce qu'elle expose réellement.

## Comparer les versions pour détecter les régressions

La comparaison entre le rapport généré et celui de la version précédente sert un objectif précis : détecter la suppression accidentelle d'une capacité déjà utilisée par un client externe, un assistant ou un autre système. Une ability retirée sans changement de version majeure casse potentiellement une intégration existante, un risque invisible tant que la documentation n'est pas comparée systématiquement d'un déploiement à l'autre.

- Ajout d'une nouvelle ability : signalé en information, sans blocage du pipeline
- Suppression d'une ability existante : signalé en avertissement, avec revue manuelle obligatoire avant fusion
- Modification du schéma d'entrée d'une ability existante : signalé comme changement potentiellement cassant

## Ce que ce pipeline ne couvre pas encore

Ce mécanisme documente ce qu'une extension expose, mais il ne teste pas la pertinence fonctionnelle de chaque ability ni sa sécurité réelle face à des entrées malveillantes. La documentation générée automatiquement reste descriptive, pas qualitative : elle dit ce qui existe, pas si c'est bien conçu. Un contrôle de sécurité distinct reste nécessaire sur les abilities qui acceptent des paramètres en entrée.

> Une documentation générée automatiquement ne peut jamais être fausse par oubli, seulement par erreur de conception en amont.

## En résumé

Sur cette extension, plus aucune ligne de documentation des abilities n'est maintenue manuellement depuis la mise en place de ce pipeline, quelques semaines avant la sortie prévue de WordPress 6.9. Le gain n'est pas seulement un gain de temps : c'est la garantie que la documentation consultée par l'équipe correspond toujours exactement à ce que l'extension expose réellement, à l'instant où elle est consultée.
