pr-link-issue

Par getsentry · skills

Ajoute un lien vers une issue GitHub et son ticket Linear à la description de la PR en cours. À utiliser lorsqu'on vous demande de « lier une issue à une PR », « remplir l'issue et le Linear dans la PR », « ajouter des références d'issue à la PR », ou lorsqu'une URL d'issue GitHub est fournie et qu'on vous demande de l'associer à la PR en cours. Résout automatiquement le ticket Linear à partir du commentaire linear-linkback de l'issue.

npx skills add https://github.com/getsentry/skills --skill pr-link-issue

Lier un Issue GitHub + Ticket Linear sur une PR

Ajoute un bloc #### Issues de style Sentry à la description d'une PR, référençant à la fois l'issue GitHub et le ticket Linear extrait du commentaire linear-linkback de l'issue.

Inputs

  • <issue-url> — URL GitHub issue comme https://github.com/<owner>/<repo>/issues/<n>. Le numéro d'issue seul suffit si la PR est dans le même repo.
  • (optionnel) <pr-number> — par défaut la PR ouverte pour la branche actuelle.

Steps

  1. Résoudre le numéro de PR — passer si l'utilisateur en a fourni un :

    gh pr view --json number,body -q '.number'

    Si aucune PR n'existe sur la branche, arrêter et informer l'utilisateur.

  2. Extraire le numéro d'issue + repo de l'URL d'entrée, ou accepter un #1234 nu pour le repo actuel.

  3. Récupérer le ticket Linear depuis le commentaire linear-linkback de l'issue :

    gh issue view <n> --repo <owner>/<repo> --json comments \
      -q '.comments[] | select(.author.login=="linear-code") | .body' \
      | grep -Eioe '[a-z]+-[0-9]+' | head -1

    Si aucune correspondance, demander la clé Linear à l'utilisateur, ou l'omettre.

  4. Lire le corps de PR existant pour pouvoir l'ajouter plutôt que de le réécrire :

    gh pr view <pr-number> --json body -q '.body'
  5. Construire le nouveau corps. Si le corps est vide, utiliser uniquement le bloc #### Issues. Sinon, l'ajouter après une ligne vide. Ne pas dupliquer — si #### Issues est déjà présent, remplacer cette section au lieu d'en ajouter une deuxième.

    Format :

    #### Issues
    
    * Resolves: #<n>
    * Resolves: <linear-key>
  6. Mettre à jour la PR avec un heredoc pour préserver les sauts de ligne :

    gh pr edit <pr-number> --body "$(cat <<'EOF'
    <new body>
    EOF
    )"
  7. Confirmer en affichant l'URL de la PR résultante :

    gh pr view <pr-number> --json url -q '.url'

Notes

  • Les commentaires de linkback Linear sont postés par l'utilisateur GitHub linear-code. Le corps contient un lien markdown dont le texte est la clé Linear, par ex. PY-2357.
  • Les clés de projet varient par repo (PY-… pour sentry-python, JS-… pour sentry-javascript, etc.) — la regex [a-z]+-[0-9]+ les couvre tous.
  • Ne pas supprimer le contenu PR existant. Toujours lire d'abord, ajouter/remplacer ensuite.
  • Si l'issue n'a pas encore de linkback Linear (nouvellement créée), procéder avec uniquement la référence GitHub issue et informer l'utilisateur que la clé Linear est manquante.

Skills similaires