DEV Community

Cover image for Comment laisser un chat Claude proposer des changements de code GitNest que vous approuvez dans osFoundry
BBT for BBT Français

Posted on

Comment laisser un chat Claude proposer des changements de code GitNest que vous approuvez dans osFoundry

À la fin de ce guide, une conversation Claude connectĂ©e Ă  osFoundry pourra lire un dĂ©pĂŽt GitNest, chercher dans son code et y prĂ©parer des changements : une tĂąche, un commit de fichiers, un change set, la relance d'un check, une pull request. Rien de tout cela ne se produit quand Claude le demande. Chaque action arrive sous forme de proposition dans "Needs your approval" (en attente de votre approbation) dans osFoundry, avec les fichiers, la branche et le commit exact sur la carte, et ne s'exĂ©cute que lorsque vous cliquez sur Approve. Claude n'a aucun outil qui Ă©crit lui-mĂȘme dans le dĂ©pĂŽt.

Qui fait quoi

CÎté Claude CÎté osFoundry
Connexion Votre compte Claude, inchangé Votre compte osFoundry a approuvé la connexion une fois
Ce qu'il peut voir Ce que renvoient les outils de lecture Les dépÎts GitNest rattachés à un projet dont fait partie la connexion
Lire le code search_gitnest_code : extraits de lignes bornés Pas de fichiers binaires, pas de fichiers entiers, pas d'identifiants ni de liaisons locales
Modifier le code Sept outils propose_gitnest_
 Une proposition par appel, qui vous attend
Qui approuve Personne cÎté Claude Vous, propriétaire de la connexion, tant que vous avez encore le rÎle sur le dépÎt
Qui écrit Personne osFoundry exécute l'action approuvée, attribuée à la connexion
Tokens du fournisseur Jamais envoyés Votre compte GitHub/GitLab lié n'est utilisé que lorsque vous approuvez une PR chez le fournisseur

Mise en place

1. Connecter le chat une fois

Si le chat Claude n'est pas encore connectĂ© Ă  osFoundry, cette partie suit le parcours habituel d'un connecteur personnalisĂ© : crĂ©ez une connexion sous l'icĂŽne de clĂ© → Connected, ajoutez son adresse de serveur dans Claude comme connecteur personnalisĂ©, puis approuvez un espace de travail. Anthropic dĂ©crit le cĂŽtĂ© Claude dans son guide des connecteurs personnalisĂ©s. La suite de ce guide suppose que la connexion affiche "Connected."

2. Placer le dépÎt dans un projet

Une connexion ne voit jamais un dĂ©pĂŽt GitNest d'elle-mĂȘme. Le dĂ©pĂŽt doit appartenir Ă  un projet dont fait partie la connexion.

Ouvrez le dépÎt dans GitNest et repérez la section Project. Son texte indique "Connected agents in this project can use approved GitNest read tools when their connection owner still has repository access." Seul le propriétaire du dépÎt dispose du sélecteur ; les autres voient le nom du projet en texte simple. Choisissez le projet. osFoundry confirme avec "Repository project updated."

3. Ajouter la connexion Ă  ce projet

De retour dans icĂŽne de clĂ© → Connected, sĂ©lectionnez la connexion et, sous Projects, ajoutez-la au mĂȘme projet. Les dĂ©pĂŽts GitNest du projet suivent, avec ses notes, ses bases de connaissances et le reste du contenu synchronisĂ©.

Ouvrez Tools. "All supported tools are on by default", et la liste affiche chaque outil avec des espaces Ă  la place des underscores. Ceux de GitNest sont :

read gitnest repository        propose gitnest work
search gitnest code            propose gitnest change set
list gitnest work              propose gitnest server composition
read gitnest work              propose gitnest file import
list gitnest saved results     propose gitnest check rerun
list gitnest checks            propose gitnest native publication
                               propose gitnest provider publication
Enter fullscreen mode Exit fullscreen mode

La liste Tools d'une connexion Claude, tous activés par défaut

Exemple : La liste Tools d'une connexion Claude, tous activés par défaut

Si vous voulez que Claude s'arrĂȘte aux commits et ne prĂ©pare jamais de pull request, dĂ©cochez les deux outils de publication et cliquez sur Save tools. Les propositions ont de toute façon besoin de votre approbation. DĂ©cocher signifie seulement que Claude ne peut mĂȘme pas le demander.

4. Demander dans le chat

Dans la conversation Claude, activez le connecteur osFoundry depuis le menu + → Connectors et formulez votre demande en langage courant. Si vous avez ajoutĂ© le mĂȘme serveur Ă  Claude Code sous le nom osfoundry, les outils y apparaissent comme mcp__osfoundry__propose_gitnest_file_import, etc.

Une exécution réelle

Les noms d'outils et d'arguments ci-dessous sont ceux que le serveur d'osFoundry liste dans tools/list. Le dépÎt, les prompts, les ID et les réponses sont du contenu d'exemple.

Exemple

Vous : Dans osFoundry, ajoute Ă  demo-api un CONTRIBUTING.md qui explique comment
       lancer les tests (ils utilisent pytest dans tests/), et ouvre une tĂąche
       basse priorité pour le lier depuis le README.

Claude → list_granted_resources {}
       ← projet "API" · dĂ©pĂŽt GitNest "demo-api"
Claude → read_gitnest_repository {"repository_id": "
"}
       ← dĂ©pĂŽt natif, branche par dĂ©faut main
Claude → search_gitnest_code {"repository_id": "
", "query": "pytest", "branch": "main"}
       ← pyproject.toml: [tool.pytest.ini_options] · tests/test_limits.py: import pytest
Claude → propose_gitnest_file_import {"repository_id": "
", "branch": "main",
           "message": "Add CONTRIBUTING.md with test instructions",
           "files": [{"path": "CONTRIBUTING.md", "content": "# Contributing\n
"}],
           "idempotency_key": "
"}
       ← proposition en attente du propriĂ©taire
Claude → propose_gitnest_work {"repository_id": "
",
           "title": "Link CONTRIBUTING.md from README", "priority": "low",
           "idempotency_key": "
"}
       ← proposition en attente du propriĂ©taire

Claude : J'ai préparé deux propositions dans osFoundry : un commit qui ajoute
         CONTRIBUTING.md Ă  main, et une tĂąche pour le lier depuis le README.
         Rien n'est encore commité. Les deux attendent votre approbation.
Enter fullscreen mode Exit fullscreen mode

Dans osFoundry, l'en-tĂȘte affiche "Claude research proposes GitNest file changes", et le panneau de la connexion liste les deux sous "Needs your approval". La carte du commit indique "Commit GitNest files in demo-api", puis "Commit to branch: main", le message de commit et un "Review all proposed files (1)" repliĂ© qui se dĂ©plie sur le CONTRIBUTING.md complet. En dessous : "Expires 
", Approve and create, Decline.

Une proposition de publication GitNest sous Needs your approval

Exemple : Une proposition de publication GitNest sous Needs your approval

Un second prompt, sur un change set qui existe déjà :

Exemple

Vous : Le change set rate-limit est-il au vert ? Si integration a échoué, relance-le,
       et une fois qu'il passe, prépare-le en pull request.

Claude → list_gitnest_work {"repository_id": "
", "kind": "changes"}
       ← "Rate-limit fix" · version 3
Claude → list_gitnest_checks {"repository_id": "
", "change_set_id": "
"}
       ← commit composĂ© 9c1e47a
 : unit rĂ©ussi · integration Ă©chouĂ© (terminĂ©)
Claude → propose_gitnest_check_rerun {"repository_id": "
", "change_set_id": "
",
           "check_name": "integration", "expected_change_set_version": 3,
           "expected_composition_oid": "9c1e47a
", "idempotency_key": "
"}
       ← proposition en attente du propriĂ©taire
  
 vous approuvez la relance, elle passe 

Claude → propose_gitnest_native_publication {"repository_id": "
", "change_set_id": "
",
           "expected_change_set_version": 3,
           "expected_composition_oid": "9c1e47a
", "idempotency_key": "
"}
       ← proposition en attente du propriĂ©taire
Enter fullscreen mode Exit fullscreen mode

Regardez ce que Claude doit envoyer. La relance comme la publication nomment la version du change set et le commit composé que Claude a vus. Si quelqu'un recompose le change set avant votre clic, la version ou le commit que vous approuveriez n'est plus celui de la carte, et la revérification d'osFoundry au moment de l'approbation refuse de l'exécuter.

Ce que chaque carte vous demande d'approuver

Outil Titre de la carte Bouton Effet de l'approbation
propose_gitnest_work Create GitNest work Approve and create Crée un Todo et un work item GitNest
propose_gitnest_change_set Create GitNest draft change set Approve and create Crée un change set brouillon à partir de résultats d'exécution enregistrés. Rien n'est composé ni publié
propose_gitnest_server_composition Compose GitNest change set Approve and create Compose le change set sur le serveur aprÚs avoir revérifié sa version
propose_gitnest_file_import Commit GitNest files Approve and create Commite jusqu'à 20 fichiers UTF-8 (200 Ko au total) sur la branche indiquée sur la carte
propose_gitnest_check_rerun Retry GitNest check Approve retry Remet en file un check terminé pour cette version et ce commit
propose_gitnest_native_publication Publish GitNest pull request Approve and publish Crée une branche de publication et ouvre une pull request dans le dépÎt natif
propose_gitnest_provider_publication Open a draft GitHub or GitLab pull request Approve and publish Pousse uniquement la branche de ce change set avec votre compte fournisseur lié et ouvre une PR brouillon

Les cartes qui concernent un change set portent "Change set: 
 · expected version N", "Reviewed commit: 
" et un lien "Review change set before approving" qui l'ouvre dans GitNest. Les deux cartes de publication ajoutent chacune une ligne sur ce qui va se passer, par exemple "Approval creates a publication branch and opens a pull request in this native repository."

OĂč passe la limite

La connexion de Claude ne peut pas écrire dans GitNest. Les routes d'écriture de GitNest refusent les accÚs à portée agent (denyAgentScope dans les routes GitNest d'osFoundry), et les outils Connected ne les appellent pas. Un chat Claude peut seulement déposer une proposition, et c'est osFoundry qui exécute l'action aprÚs votre approbation, enregistrée avec la connexion comme source. Il n'existe ainsi qu'un seul chemin pour toute écriture d'un agent, et vous pouvez l'auditer.

L'approbation est revérifiée au moment du clic. osFoundry contrÎle à nouveau que la connexion est toujours active, que le dépÎt est toujours dans un projet auquel appartient la connexion, que vous détenez toujours le rÎle sur le dépÎt et que la proposition n'a pas expiré. Pour une composition, une relance ou une publication, il vérifie aussi la version du change set et le commit, et pour une publication, la politique de risque du dépÎt, les checks obligatoires et la branche cible. Une proposition refusée, expirée ou périmée ne s'exécute pas. Chaque outil propose prend un idempotency_key : un appel que Claude répÚte aprÚs une réponse perdue ne constitue donc pas une seconde demande.

Rien n'est déployé ici. Le plus loin qu'aille une proposition, c'est une pull request : une PR GitNest native, ou une PR brouillon sur GitHub ou GitLab. Le merge, et tout ce qu'il déclenche, reste entre vos mains dans GitNest ou chez le fournisseur.

Votre token de fournisseur Git n'atteint jamais Claude. Une PR chez le fournisseur utilise le compte que vous avez lié dans osFoundry, au moment de l'approbation, et ne pousse que la branche dédiée du change set, jamais vos autres refs.

Les lectures sont bornées volontairement. search_gitnest_code renvoie des extraits de lignes plafonnés, jamais de fichiers binaires ni de fichiers entiers. Les lectures de work, d'exécutions et de résultats enregistrés omettent les liaisons locales et les identifiants. Pour modifier un fichier existant, collez son contenu actuel dans le chat afin que Claude puisse proposer la nouvelle version complÚte. Ajouter de nouveaux fichiers fonctionne directement à partir des extraits.

Et ensuite

Commencez par l'Ă©criture la plus petite : demandez Ă  Claude de proposer un seul nouveau fichier, comme un CONTRIBUTING.md, puis ouvrez la carte et dĂ©pliez "Review all proposed files" avant d'approuver. La façon dont GitNest gĂšre lui-mĂȘme le clone, le push et les tokens d'accĂšs est dĂ©crite sur la page GitNest.

Top comments (0)