Que fait github ?
Utilisez gh pour GitHub. Utilisez git pour les commits/branches/push/pull locaux. Utilisez les outils de lecture de code pour les revues approfondies.
Authentification
gh auth status
gh auth login
Le HOME de la passerelle peut différer du HOME de l'opérateur. Si l'authentification gh existe ailleurs, définissez GH_CONFIG_DIR dans l'environnement du service de passerelle et redémarrez.
PRs (Pull Requests)
gh pr list --repo proprietaire/depot --json number,title,state,author,url
gh pr view 55 --repo proprietaire/depot --json title,body,author,files,commits,reviews,reviewDecision
gh pr checks 55 --repo proprietaire/depot
gh pr diff 55 --repo proprietaire/depot
gh pr create --repo proprietaire/depot --title "feat: titre" --body-file /tmp/pr.md
Lors de la création ou du rafraîchissement du corps d'une PR, ajoutez ce pied de page final uniquement lorsque la ligne Runtime fournit sessionUrl=<url-exacte>. Remplacez <sessionUrl> par cette URL textuellement ; ne la construisez pas et ne la modifiez pas. Omettre le pied de page lorsque sessionUrl est absent. Préservez tout marqueur de publication devant un seul pied de page, et gardez le pied de page final :
---
[Voir la session de l'équipe OpenClaw](https://raw.githubusercontent.com/clawdbot/clawdbot/main/<sessionUrl>)
Les URLs fonctionnent directement : gh pr view https://github.com/proprietaire/depot/pull/55.
Fusions asynchrones
Utilisez le workflow de déploiement natif du dépôt lorsqu'il est fourni. Pour les fusions programmatiques autorisées ailleurs, utilisez l'API de fusion asynchrone de GitHub via gh api ; gh pr merge ne sélectionne pas cette API. Fournissez le SHA de tête révisé, préservez les revues/vérifications requises et vérifiez d'abord l'appartenance à la pile : soumettre une PR empilée fusionne ou met également en file d'attente ses PRs descendantes ouvertes, qui nécessitent leur propre revue et autorisation.
gh api -H 'X-Octopool-Require: merge-async-v1' \
--method PUT repos/proprietaire/depot/pulls/55/merge-async \
-H 'X-GitHub-Api-Version: 2026-03-10' \
-f sha=SHA_DE_TETE_REVISE -f merge_method=squash -f merge_action=direct_merge
gh api -H 'X-Octopool-Require: merge-async-v1' \
repos/proprietaire/depot/pulls/55/merge-async/UUID_REQUETE \
-H 'X-GitHub-Api-Version: 2026-03-10' -H 'Cache-Control: max-age=0'
Gardez l'en-tête de garde Octopool en premier après api. Les wrappers protégés plus anciens le rejettent avant de pouvoir réécrire l'autorité de fusion ; utilisez une version d'Octopool incluant le garde asynchrone s'il est refusé. Le wrapper pris en charge préserve SHA/méthode/action/bypass et ne réécrit que le texte du commit. gh natif peut transmettre l'en-tête. Ne le supprimez pas, ne désactivez pas la politique, et ne sélectionnez pas un binaire brut pour contourner un rejet.
Conservez details.uuid d'une réponse 202 avant d'interroger. pending signifie attendre ; merged inclut details.sha, qui nécessite toujours une vérification finale de la PR/tête. enqueued signifie mis en file d'attente, pas fusionné : surveillez la PR elle-même. Pour honorer une file d'attente configurée, utilisez merge_action=default (ou merge_queue pour mettre explicitement en file d'attente), en omettant les champs de méthode/titre/message directs. N'activez jamais bypass_rules sans autorisation.
En cas d'échec (failed), signalez details.message. Un code 409 identifie une requête existante ; inspectez son UUID et ses options sans soumettre à nouveau. Les réponses perdues, les erreurs d'interrogation et l'expiration des résultats après 24 heures nécessitent une réconciliation, jamais une nouvelle tentative aveugle ou un repli synchrone. Interrogez avec des attentes limitées et des lectures fraîches. Le traitement asynchrone n'arme pas la fusion automatique pour les vérifications non satisfaites ; utilisez le workflow natif ou gh pr merge --auto lorsque ce comportement est autorisé.
Propriété du déploiement
Lorsque l'utilisateur demande de déployer ou fusionner une PR, le résultat final est l'état GitHub vérifié de la PR, pas la fin d'une revue, d'un tour de travailleur ou d'une observation CI.
- Gardez la tâche active jusqu'à ce que
gh pr view ... --json state,mergedAt,mergeCommitprouve questateestMERGED. - Traitez les résultats de revue, les conflits de fusion, les vérifications échouées et les modifications demandées comme un travail de continuation lorsqu'ils sont dans le périmètre. Corrigez-les, relancez les contrôles requis et réévaluez la tête mise à jour exacte.
- Une vérification en attente est un état d'attente, pas une fin. Utilisez le workflow d'attente ou de fusion pris en charge par le dépôt ; ne prétendez pas au succès à partir de vérifications vertes partielles.
- Si le travail a été délégué à une session persistante et que cette session s'arrête avant la fusion, continuez la même session plutôt que de traiter son rapport comme le résultat final.
- Arrêtez-vous comme bloqué seulement lorsque la continuation nécessite une nouvelle autorité, des informations d'identification indisponibles ou une décision produit qui ne peut pas être déduite en toute sécurité. Signalez le bloqueur exact et laissez la PR non fusionnée.
Issues
gh issue list --repo proprietaire/depot --state open --json number,title,labels,url
gh issue view 42 --repo proprietaire/depot --json title,body,comments,labels,state
gh issue create --repo proprietaire/depot --title "Bug: ..." --body-file /tmp/issue.md
gh issue comment 42 --repo proprietaire/depot --body-file /tmp/commentaire.md
gh issue close 42 --repo proprietaire/depot --comment "Corrigé dans ..."
CI/exécutions
gh run list --repo proprietaire/depot --limit 10
gh run view <id-exécution> --repo proprietaire/depot --json status,conclusion,headSha,url
gh run view <id-exécution> --repo proprietaire/depot --log-failed
gh run rerun <id-exécution> --repo proprietaire/depot --failed
API
gh api repos/proprietaire/depot/pulls/55 --jq '.title, .state, .user.login'
gh api repos/proprietaire/depot/labels --jq '.[].name'
gh api --cache 1h repos/proprietaire/depot --jq '{stars: .stargazers_count, forks: .forks_count}'
Utilisez --json + --jq pour une sortie structurée. Utilisez --body-file pour les commentaires/corps contenant des backticks, des snippets shell, des noms d'environnement ou du texte utilisateur.