Ă 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
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.
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.
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
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)