Créer une pull request depuis une branche

VérifiéPrudence

Prépare les commits d'une branche de fonctionnalité, génère le titre et la description de la PR à partir du diff, puis ouvre la pull request vers upstream.

Spar Skills Guide Bot
DeveloppementIntermédiaire
19/09/2026
Claude Code
#pull-request#git#github-cli#fork-workflow#rust

Recommandé pour

Synthèse automatique

Automatise la préparation d'une pull request depuis une branche de fonctionnalité vers le dépôt upstream, en générant le titre et la description à partir des commits de la branche.

Points forts

  • Vérifie les prérequis du workflow fork : branche non-main, remotes upstream et origin présents
  • Lance cargo fmt et amende le dernier commit si seules des modifications de formatage subsistent
  • Calcule la merge base avec upstream/main pour ne retenir que les commits propres à la branche
  • Présente le titre et le corps générés à l'utilisateur avant le push et la création de la PR

Limites

  • Suppose un projet Rust avec cargo fmt et une organisation fork avec remotes upstream/origin
  • Nécessite que la CLI gh soit installée et authentifiée
  • La branche de base est fixée à main et l'amend du dernier commit réécrit l'historique local
Quand l'utiliser

À utiliser lorsque votre branche de fonctionnalité est prête et que vous voulez ouvrir une PR formatée et bien décrite contre le dépôt upstream.

Quand l'éviter

À éviter sur la branche main, dans un dépôt sans configuration fork upstream/origin, ou sur un projet non-Rust où cargo fmt n'a pas sa place.

Analyse de sécurité

Prudence
Score qualité88/100

The skill uses powerful version-control and GitHub CLI operations for a legitimate PR workflow. It does not exfiltrate data or perform destructive system actions, but the automatic commit amendment and remote pushes warrant caution.

Points d'attention
  • •Executes git and gh CLI commands that push branches and create pull requests, modifying remote repositories.
  • •Automatically amends the last commit after running cargo fmt, which rewrites local history.
  • •No allowed-tools are declared in the skill metadata despite instructing shell commands.
Comment cette analyse est faite

Exemples

Auto-generated PR
/pr
PR with custom title
/pr Fix saturation search convergence
Natural-language request
Open a pull request from my current feature branch against upstream and write the description from the commits.

name: pr description: Prepare outstanding commits on a feature branch for a pull request to upstream

Prepare a pull request from the current feature branch. This skill collects all commits on the current branch that are ahead of upstream/main, generates a PR title and description summarizing the changes, and creates the PR against upstream.

Arguments

The skill accepts optional arguments:

  • No arguments: auto-generate title and description from commits
  • A short description: used as the PR title (e.g., /pr Add support for TLS client certs)

Example: /pr or /pr Fix saturation search convergence

Steps

  1. Verify prerequisites:

    • Must NOT be on main branch (should be on a feature branch)
    • The upstream remote must exist
    • The origin remote must exist
    BRANCH=$(git branch --show-current)
    if [ "$BRANCH" = "main" ]; then
      echo "Error: Must be on a feature branch, not main"
      exit 1
    fi
    git remote get-url upstream >/dev/null 2>&1 || { echo "Error: 'upstream' remote not found"; exit 1; }
    git remote get-url origin >/dev/null 2>&1 || { echo "Error: 'origin' remote not found"; exit 1; }
    
  2. Run cargo fmt and amend the last commit if formatting changes are needed:

    cargo fmt
    if [ -n "$(git status --porcelain)" ]; then
      git add -u
      git commit --amend --no-edit
    fi
    

    After this step, the working directory must be clean. If there are still uncommitted changes (non-formatting), stop and tell the user to commit or stash them first.

  3. Sync with upstream:

    git fetch upstream
    git fetch origin
    
  4. Identify commits for the PR:

    • Find the merge base between the current branch and upstream/main
    • List all commits from the merge base to HEAD
    • Show the full diff against upstream/main
    MERGE_BASE=$(git merge-base upstream/main HEAD)
    git log --oneline ${MERGE_BASE}..HEAD
    git diff ${MERGE_BASE}..HEAD --stat
    

    If there are no commits ahead of upstream/main, stop and tell the user there is nothing to submit.

  5. Generate PR title and description:

    • If the user provided a title argument, use that as the PR title
    • Otherwise, analyze the commits and diff to generate a concise PR title (under 70 characters)
    • Generate the PR body with:
      • A ## Summary section with 1-3 bullet points describing the changes
      • A ## Changes section listing the commits
      • A ## Test plan section with a checklist of testing suggestions

    Present the title and body to the user for review before creating the PR.

  6. Push the feature branch to origin:

    BRANCH=$(git branch --show-current)
    git push -u origin ${BRANCH}
    
  7. Create the PR against upstream:

    BRANCH=$(git branch --show-current)
    
    gh pr create \
      --repo "$(git remote get-url upstream | sed 's/.*github.com[:/]\(.*\)\.git/\1/' | sed 's/.*github.com[:/]\(.*\)/\1/')" \
      --head "$(git remote get-url origin | sed 's/.*github.com[:/]\(.*\)\.git/\1/' | sed 's/.*github.com[:/]\(.*\)/\1/' | cut -d/ -f1):${BRANCH}" \
      --base main \
      --title "${PR_TITLE}" \
      --body "${PR_BODY}"
    
  8. Report the PR URL to the user.

Troubleshooting

  • No upstream remote: Add it with git remote add upstream <repo-url>
  • No origin remote: This is your fork. Add with git remote add origin <fork-url>
  • gh CLI not installed: brew install gh or see https://cli.github.com/
  • Not authenticated with gh: gh auth login
  • PR already exists: If a PR already exists for this branch, report the existing PR URL instead

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/create-a-pull-request-from-a-feature-branch-mu7w4fqq/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/create-a-pull-request-from-a-feature-branch-mu7w4fqq' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/create-a-pull-request-from-a-feature-branch-mu7w4fqq/download' --output '.skill-downloads/create-a-pull-request-from-a-feature-branch-mu7w4fqq/SKILL.md.part' && mv '.skill-downloads/create-a-pull-request-from-a-feature-branch-mu7w4fqq/SKILL.md.part' '.skill-downloads/create-a-pull-request-from-a-feature-branch-mu7w4fqq/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.

Claude Code
test -f '.skill-downloads/create-a-pull-request-from-a-feature-branch-mu7w4fqq/SKILL.md' && test -s '.skill-downloads/create-a-pull-request-from-a-feature-branch-mu7w4fqq/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/pr' && cp -R '.skill-downloads/create-a-pull-request-from-a-feature-branch-mu7w4fqq' '.claude/skills/pr'

OpenSkills

OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.

Installation officielle d’OpenSkills
openskills install './.skill-downloads/create-a-pull-request-from-a-feature-branch-mu7w4fqq'

openskills read 'create-a-pull-request-from-a-feature-branch-mu7w4fqq'

La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.

Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.

openskills sync

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/create-a-pull-request-from-a-feature-branch-mu7w4fqq/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires