Skip to content

chore(agents): share Gotenberg harness between Copilot and Claude - #23

Open
jcoste-ied wants to merge 4 commits into
mainfrom
jcoste-ied-harness-gotenberg
Open

jcoste-ied wants to merge 4 commits into
mainfrom
jcoste-ied-harness-gotenberg

Conversation

@jcoste-ied

@jcoste-ied jcoste-ied commented Oct 30, 2026 •

Copy link
Copy Markdown

Contexte et périmètre

Refs fulll/chapter-secops#1946

Passe complète sur le texte et tous les commentaires de l’issue, version du 30 octobre 2026 à 15:43:55 UTC. Dernier commit : 6575c2ea662b44ddcb8b772b05605412536361d2.

Gotenberg est une API Go conteneurisée de conversion documentaire/PDF (Chromium, LibreOffice, Makefile, Godog, Testcontainers), pas un dépôt de modules Terraform AWS réutilisables. Recherche récursive dans le système de fichiers du projet, hors métadonnées Git et dépendances Node, et contrôle de l’arbre suivi : aucun .infra/terraform/ à quelque profondeur que ce soit. Aucune condition rendant terraform-aws-implement obligatoire n’est satisfaite. La section spécifique modules (reviewer, instructions, CI) ne s’applique pas. Si ce répertoire est introduit, réévaluer l’agent obligatoire sans en déduire automatiquement les composants modules.

Composants et préservation

Statut Composants et justification
Conservés Instructions initiales d’AGENTS.md intégralement préservées en octets. Vérification de chaque fichier de l’arbre initial : identique, sauf compléments additifs AGENTS.md et CODEOWNERS. Aucun agent/skill ni instruction Copilot/Claude préexistant à écraser.
Ajoutés CLAUDE.md = seulement @AGENTS.md ; contexte/règles communes dans AGENTS.md ; renvoi concis .github/copilot-instructions.md, inventaire/provenance, licence MIT et extension des CODEOWNERS existants.
Ajouté — obligatoire Skill officiel create-agentsmd : copie intégrale non modifiée au commit 5269f7ea2d6c3a9bfda5ed878b6726cf509121fd, frontmatter et répertoire complet compris.
Ajoutés — locaux justifiés Agent gotenberg-implement pour les changements compatibles modules/API Go ; skill gotenberg-testing pour les commandes Makefile/Godog. Aucune provenance awesome-copilot revendiquée pour ces composants locaux.
Retiré lors du réalignement précédent refine-issue et son symlink, ajoutés par cette PR et absents avant celle-ci : l’API confirme encore has_issues: false.
Écartés, jamais ajoutés Agents/instructions/CI Terraform : conditions non remplies. Skills agentic-eval, aws-well-architected-review, devops-rollout-plan, github-actions-hardening : aucun besoin concret établi.
Setup cloud non ajouté Aucun copilot-setup-steps.yml préexistant ou introduit ; aucun tooling nécessaire à ce complément documentaire. Les besoins d’un futur changement applicatif cloud devront être évalués séparément.
Dédoublonnage sans objet Aucun issue-writing, epic-writing ou create-issue-from-prompt. Le fichier Copilot était absent : le renvoi ne retire aucune règle existante.

Le dernier commit ne change que deux documents locaux : preuve d’absence de Terraform et précision du niveau réel des vérifications. Aucun agent, skill, lien, composant officiel ou workflow changé lors de cette passe.

Source unique et provenance officielle

Un agent et deux skills dans .github/, partagés avec Claude par trois liens relatifs en mode 120000.

Source officielle : skills/create-agentsmd/, commit 5269f7ea2d6c3a9bfda5ed878b6726cf509121fd, licence MIT reproduite dans .github/harness-LICENSE.txt.

diff -r vide contre un clone amont épinglé lors de la restauration officielle ; contenu inchangé depuis. Nouvelle preuve lors de cette passe : API GitHub au commit épinglé, inventaire complet du répertoire (SKILL.md seul, aucun fichier annexe omis), octets du skill et de la licence identiques. Aucune traduction, normalisation du frontmatter ni remise en forme officielle.

Revue de tous les critères du socle commun

Critère État et preuve
Nature et périmètre Vérifié ; API Go, absence de .infra/terraform/ à toute profondeur, section modules inapplicable
Existant préservé et sélection justifiée Vérifié en octets contre l’arbre initial ; justifications ci-dessus
Règles communes et import Claude exact Contenu vérifié ; CLAUDE.md = @AGENTS.md suivi d’un saut de ligne
Imports officiels identiques et complets Vérifié via API épinglée, skill et licence ; sources/commit documentés
Agent Terraform obligatoire si nécessaire Sans objet : ni répertoire déclencheur ni vocation modules
Aucun composant technologique non pertinent Vérifié, aucun composant Terraform/AWS importé
Aucun lien cassé Workspace et nouveau clone macOS au SHA final 6575c2e : find .claude -type l -exec test ! -e {} \; -print vide
Symlinks Git git ls-tree -r HEAD .claude/ : trois entrées 120000 dans ce clone ; arbre propre
Découverte agents et skills Claude/Copilot Partiel : deux skills découverts par Copilot CLI ; custom agent Copilot et découverte Claude non vérifiés
Parité fonctionnelle Non validée ; pas de déduction à partir des liens ou de la découverte statique
Chargement effectif des règles Partiel : Copilot CLI liste les trois sources ; application interactive, import Claude et chargement cloud non vérifiés
Absence de contradiction Relecture des instructions et composants retenus : aucune contradiction concrète démontrée ; contrôle runtime restant à faire
Clone neuf macOS/Linux macOS vérifié au SHA final ; Linux non vérifié
Setup cloud exécuté si créé Sans objet : aucun setup introduit

Les critères complémentaires modules Terraform AWS sont hors périmètre ; aucune CI modules ajoutée.

Résultats réels de découverte

copilot --trust-folder skill list --json retourne les deux skills projet avec enabled: true, depuis .github/skills/ :

create-agentsmd - Prompt for generating an AGENTS.md file for a repository
gotenberg-testing - Select and run Gotenberg Makefile checks, Godog integration scenarios and Go unit tests, with explicit prerequisites and failure reporting.

copilot --trust-folder instruction list --json retourne .github/copilot-instructions.md, AGENTS.md, CLAUDE.md, tous avec defaultDisabled: false. Ceci prouve la découverte, pas l’application effective dans tous les modes.

Claude Code installé (2.1.287). L’aide claude agents décrit la gestion des sessions en arrière-plan, pas la découverte des custom agents. Aucun résultat /agents, /skills ou import Claude revendiqué. La revue statique confirme un agent, deux skills et trois liens, sans prouver leur activation par les deux outils.

Autres contrôles : liens Markdown locaux valides ; agent/skill locaux, officiel, liens et workflows inchangés depuis le précédent commit ; git diff --check et index avant commit OK ; hook sans secret détecté.

Écarts restants et propositions

  • Critères runtime non validés : custom agent Copilot, agents/skills Claude, import Claude, application interactive/cloud des instructions et clone Linux. Proposition : sessions isolées dans chaque mode, joindre les listes et preuves de chargement, puis clone Linux. Le renvoi Copilot, absent avant la PR, ne remplace aucune règle et ne satisfait pas à lui seul la vérification effective requise.
  • Aucune incompatibilité de format ni contradiction officielle/locale démontrée. Correction de l’affirmation précédente : demander des instructions complètes dans create-agentsmd n’exige pas nécessairement d’écraser l’existant. Cette formulation n’est plus présentée comme un conflit établi. Maintenance additive et contrôle des octets initiaux ; si une contradiction réelle apparaît, suspendre l’opération et soumettre preuve et proposition pour validation, sans réécrire l’officiel.
  • En cas de rejet concret d’un format officiel ou des liens : consigner l’erreur et proposer un wrapper local ou une synchronisation générée contrôlée en CI, sans l’appliquer silencieusement.

CI, formatage et sécurité

SHA final 6575c2e : Aikido Security: check code SUCCESS, terminé le 30 octobre 2026 à 15:53:01 UTC, seul check remonté par GitHub. Ce scan ne remplace pas la validation du harness.

make lint-prettier relancé : échec sur .github/skills/create-agentsmd/SKILL.md (officiel volontairement intact), .github/workflows/continuous-delivery.yml et FEATURE_SPECIFICATION.md (préexistants inchangés). Documents locaux modifiés conformes ; aucun de ces trois fichiers reformaté.

make fmt, make lint, make build, make test-integration, make test-unit non exécutés pour ce diff documentaire ; aucun succès applicatif revendiqué. Aucun workflow de déploiement modifié, accès AWS, secret, publication d’image, apply/destroy/state ou merge. PR ouverte, sans fermeture de l’issue transversale.

Refs fulll/chapter-secops#1946

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings October 30, 2026 13:48
@jcoste-ied
jcoste-ied requested review from a team as code owners October 30, 2026 13:48
@jcoste-ied

Copy link
Copy Markdown
Author

Refs fulll/chapter-secops#1946

Harness adapté à Gotenberg : AGENTS.md initial conservé intégralement, CLAUDE.md en import unique, deux agents et deux skills dans .github/ partagés avec Claude par quatre liens relatifs en mode 120000. Provenance amont et licence MIT documentées ; aucun changement de déploiement ni accès AWS.

Contrôles réels : liens et frontmatter valides, clone neuf macOS validé, découverte des deux skills et des instructions par Copilot CLI confirmée. make lint-prettier reste en échec uniquement sur deux fichiers préexistants et inchangés (.github/workflows/continuous-delivery.yml et FEATURE_SPECIFICATION.md). Les contrôles interactifs Claude/Copilot, cloud et Linux, ainsi que les tests/build applicatifs, ne sont pas déclarés validés ; détails dans la description.

Cette PR ne ferme pas l’issue transversale et n’a pas été fusionnée.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Cross-client agent/skill discovery and Claude/cloud instruction loading remain unvalidated, requiring maintainer runtime confirmation beyond static checks and Copilot listings.

No open issues 🎉

What changed in this PR

This PR establishes shared Copilot and Claude guidance for Gotenberg, preserving existing instructions and keeping application code and deployment workflows unchanged.

Changes:

  • Makes AGENTS.md the canonical instruction source, with Claude and Copilot entry points.
  • Adds two agents and two skills tailored to Gotenberg’s Go, Makefile and Godog workflows.
  • Documents harness validation and third-party attribution, and extends ownership coverage.
File Description
CLAUDE.md Imports the canonical repository instructions.
AGENTS.md Adds repository context, command details and shared-harness rules.
.github/​skills/​gotenberg-testing/​SKILL.md Defines verification workflows, prerequisites and reporting.
.github/​skills/​create-agentsmd/​SKILL.md Guides evidence-based instruction maintenance.
.github/​harness.md Documents inventory, provenance and validation procedures.
.github/​harness-LICENSE.txt Includes the MIT license for adapted content.
.github/​copilot-instructions.md Points Copilot to AGENTS.md.
.github/​CODEOWNERS Extends ownership to root instructions and .claude/.
.github/​agents/​refine-issue.agent.md Defines requirement refinement and acceptance-criteria guidance.
.github/​agents/​gotenberg-implement.agent.md Defines a backward-compatible implementation workflow.

Review effort: Balanced

Refs fulll/chapter-secops#1946

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@jcoste-ied

Copy link
Copy Markdown
Author

Refs fulll/chapter-secops#1946

Correction de la demande utilisateur appliquée dans ad4a770 : les adaptations de refine-issue et create-agentsmd ont été remplacées par une copie intégrale non modifiée de github/awesome-copilot au commit 5269f7ea2d6c3a9bfda5ed878b6726cf509121fd, frontmatter amont compris (name et tools d’origine). Le répertoire complet du skill est copié ; il ne contient que SKILL.md à ce commit. Les adaptations Gotenberg sont désormais uniquement dans AGENTS.md ou les éléments locaux distincts, qui restent inchangés.

Preuve : clone Git de l’amont au commit imposé, puis diff -r sur agents/refine-issue.agent.md et sur le répertoire skills/create-agentsmd : sortie vide et code 0 dans les deux cas. Licence MIT également identique. Les quatre liens .claude relatifs restent valides, en mode 120000.

La documentation de provenance et les contrôles du harness vérifient désormais l’identité amont, pas une réduction du frontmatter. make lint-prettier signale les deux copies officielles, laissées volontairement intactes, ainsi que les deux fichiers préexistants déjà signalés. Aucun changement de déploiement, aucune fusion ; description de PR actualisée.

Refs fulll/chapter-secops#1946

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@jcoste-ied

Copy link
Copy Markdown
Author

Refs fulll/chapter-secops#1946

Réalignement sur la version de l’issue du 30/10 à 15:08 UTC, poussé dans 2bf3633. Gotenberg est une API Go de conversion PDF, pas un dépôt de modules Terraform AWS : seule la section commune s’applique. Aucun composant Terraform ni setup cloud ajouté.

Les issues GitHub sont désactivées (has_issues: false) : retrait de refine-issue et de son lien, ajoutés par cette PR et absents avant celle-ci. Conservation des instructions initiales, du skill officiel create-agentsmd intégralement identique au commit amont épinglé, ainsi que des composants locaux gotenberg-implement et gotenberg-testing, justifiés par les modules Go et les tests Makefile/Godog. Les autres skills optionnels ne sont pas ajoutés faute de besoin concret.

Clone neuf macOS au nouveau commit : aucun lien cassé ; trois liens relatifs en mode 120000. Copilot découvre les deux skills et les instructions. Le chargement effectif Claude/cloud, la découverte interactive des agents, la parité fonctionnelle et le clone Linux restent explicitement bloqués/non validés. Le conflit entre création complète demandée par le skill officiel et préservation locale est documenté : aucune opération de remplacement avant validation ; proposition de maintenance additive, sans réécriture officielle.

Description réorganisée en ajouts/conservés/retirés/écartés/bloqués, avec preuves et limites. Prettier signale seulement la copie officielle volontairement intacte et deux fichiers préexistants inchangés. Aucun changement de déploiement, credentials AWS, mutation infra ou fusion.

Refs fulll/chapter-secops#1946

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@jcoste-ied

Copy link
Copy Markdown
Author

Refs fulll/chapter-secops#1946

Passe complète terminée après relecture du texte et de tous les commentaires de l’issue (version 15:43:55 UTC). Commit 6575c2e poussé sur cette même PR, sans merge.

Périmètre confirmé : API Go, aucun .infra/terraform/ à toute profondeur (recherche récursive et arbre suivi), pas un dépôt de modules AWS ; aucune condition imposant un agent Terraform. Issues toujours désactivées. Un agent Go local et deux skills retenus ; aucun changement de composant lors de cette passe, seulement deux précisions documentaires.

Preuves renouvelées : chaque fichier initial préservé en octets hors compléments AGENTS/CODEOWNERS, préfixe AGENTS original intact, skill officiel complet et licence identiques via API au commit 5269f7ea2d6c3a9bfda5ed878b6726cf509121fd, liens Markdown et parité statique valides. Nouveau clone macOS au SHA final : find liens cassés vide, trois symlinks 120000, arbre propre. Copilot CLI JSON confirme deux skills activés et trois sources d’instructions découvertes.

La description contient désormais la matrice de tous les critères. Écarts non masqués : agent Copilot, agents/skills Claude, import Claude et chargement effectif interactif/cloud, clone Linux non validés. Aucune incompatibilité runtime démontrée. Correction de la qualification précédente : créer un AGENTS complet ne signifie pas obligatoirement écraser ses règles ; ce n’est plus présenté comme un conflit avéré. Les opérations restent additives ; tout conflit concret doit être documenté avant validation.

Aikido Security: check code est réussi sur le SHA final. make lint-prettier échoue encore sur le skill officiel volontairement intact et deux fichiers préexistants inchangés ; aucun avertissement dans les documents locaux modifiés. Aucun workflow de déploiement, accès AWS ou mutation infra ; tests applicatifs non revendiqués.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants