gh-create-pr

Par cherryhq · cherry-studio

Créer ou mettre à jour des pull requests GitHub en respectant le workflow requis par le dépôt et la conformité aux templates. À utiliser lorsqu'on demande de créer/ouvrir/mettre à jour une PR, afin que l'assistant lise `.github/pull_request_template.md`, remplisse chaque section du template, préserve exactement la structure Markdown et indique N/A ou None pour les données manquantes plutôt que de sauter des sections.

npx skills add https://github.com/cherryhq/cherry-studio --skill gh-create-pr

Créer une PR GitHub

Flux de travail

  1. Lire .github/pull_request_template.md avant de rédiger le corps de la PR.
  2. Collecter le contexte de la PR depuis la branche courante (base/head, périmètre, problèmes liés, statut des tests, changements cassants, contenu de la note de version).
  3. Vérifier si la branche courante a été poussée vers le remote. Si non, la pousser d'abord :
    • Le remote par défaut est origin, mais demander à l'utilisateur s'il souhaite utiliser un remote différent.
      git push -u <remote> <head-branch>
  4. Déterminer la branche de base :
    • Pour le repo officiel (CherryHQ/cherry-studio) en tant que origin : la base par défaut est main depuis origin, mais permettre à l'utilisateur d'indiquer explicitement une branche de base.
    • main est la ligne de développement active v2. Les corrections de maintenance v1 (branche head hotfix/*, corrections de bugs critiques visibles par l'utilisateur uniquement) doivent cibler v1, non main — définir la base à v1 pour ceux-ci.
    • Pour un fork en tant que origin : vérifier les remotes disponibles avec git remote -v, la base par défaut peut être upstream/main ou un autre remote. Toujours supposer que l'utilisateur veut fusionner head vers CherryHQ/cherry-studio/main, sauf si l'utilisateur indique explicitement une branche de base différente.
    • Demander à l'utilisateur de confirmer la branche de base si elle n'est pas celle par défaut.
  5. Créer un fichier temporaire et écrire le corps de la PR :
    • Utiliser pr_body_file="$(mktemp /tmp/gh-pr-body-XXXXXX).md"
    • Remplir le contenu en utilisant exactement la structure du template (conserver l'ordre des sections, les titres, le formatage des cases à cocher).
    • Si non applicable, écrire N/A ou None.
  6. Afficher l'aperçu du contenu du fichier temporaire. Afficher le chemin du fichier (par exemple, /tmp/gh-pr-body-XXXXXX.md) et demander une confirmation explicite avant de créer. Ignorer cette étape si l'utilisateur indique explicitement qu'aucun aperçu/confirmation n'est nécessaire (par exemple, flux d'automatisation).
  7. Après confirmation, créer la PR :
    gh pr create --base <base> --head <head> --title "<title>" --body-file "$pr_body_file"
  8. Nettoyer le fichier temporaire : rm -f "$pr_body_file"
  9. Rapporter l'URL de la PR créée et résumer le titre/base/head ainsi que tout suivi requis.

Contraintes

  • Ne jamais ignorer les sections du template.

  • Ne jamais réécrire le format du template.

  • Garder le contenu concis et spécifique à l'ensemble des changements actuels.

  • Le titre et le corps de la PR doivent être rédigés en anglais.

  • Ne jamais créer la PR avant d'afficher le corps final complet à l'utilisateur, sauf s'il renonce explicitement à l'aperçu ou à la confirmation.

  • Ne jamais compter sur les invites d'autorisation de commande comme aperçu du corps de la PR.

  • Case à cocher Note de version & Documentation — les deux sont déterminées par le fait que le changement soit visible pour l'utilisateur. Utiliser le tableau ci-dessous :

    Type de changement Note de version Docs [x]
    Nouvelle fonctionnalité / paramètre / UI visible pour l'utilisateur Décrire le changement
    Correction de bug visible par l'utilisateur Décrire la correction ✅ si le comportement a changé
    Changement de comportement / changement de valeur par défaut Décrire + action requise
    Correction de sécurité dans une dépendance visible pour l'utilisateur Décrire la correction ✅ si l'utilisation a changé
    Changements CI / GitHub Actions NONE
    Refactorisation interne (l'utilisateur ne peut pas le remarquer) NONE
    Changements des outils dev / build NONE
    Bump de dépendance dev uniquement NONE
    Changements de test uniquement / style de code NONE

Modèle de commande

# lire le template
cat .github/pull_request_template.md

# afficher ce corps Markdown complet en chat d'abord
pr_body_file="$(mktemp /tmp/gh-pr-body-XXXXXX).md"
cat > "$pr_body_file" <<'EOF'
...corps du template rempli...
EOF

# exécuter uniquement après confirmation explicite de l'utilisateur
gh pr create --base <base> --head <head> --title "<title>" --body-file "$pr_body_file"
rm -f "$pr_body_file"

Skills similaires