Créer une Pull Request avec QA automatique ★★ Intermédiaire ~15 min
Contexte
Créer une Pull Request nécessite plusieurs étapes : validation du code, exécution des tests, commit propre et création de la PR sur GitHub. Faire tout ça manuellement est chronophage et source d'erreurs.
Objectif
Créer une PR complète en une seule commande avec :
- ✅ Validation PHPStan niveau 9
- ✅ Exécution des tests unitaires
- ✅ Commit bien formaté (Conventional Commits + emoji)
- ✅ Titre et description de PR générés automatiquement
- ✅ PR créée sur GitHub
Prérequis
Plugins :
Outils :
- Git configuré
- GitHub CLI (
gh) installé et authentifié - PHPStan configuré dans le projet
- Tests PHPUnit configurés
Configuration : Aucune configuration particulière nécessaire.
Workflow Étape par Étape
Phase 1 : Créer la PR avec QA
Commande :
/git:prQue se passe-t-il ?
- Analyse des modifications - Claude scanne les fichiers modifiés avec
git statusetgit diff - PHPStan niveau 9 - Validation statique stricte du code PHP
- Tests unitaires - Exécution de
vendor/bin/phpunit - Génération commit - Création d'un message au format Conventional Commits avec emoji
- Génération PR - Titre et description automatiques basés sur les changements
- Push + création - Push de la branche et création de la PR sur GitHub via
gh pr create
Output attendu :
✅ PHPStan: 0 errors
✅ Tests: All passing (42 tests, 187 assertions)
✅ Commit: ✨ feat: add user authentication endpoint
✅ PR créée: https://github.com/user/repo/pull/123Exemple Complet
Scénario : Ajouter un endpoint API
Contexte : Tu viens de développer un nouvel endpoint /api/users avec controller, tests et validation.
Fichiers modifiés :
src/Controller/UserController.phptests/Controller/UserControllerTest.phpconfig/routes.yaml
Commande :
/git:prRésultat :
Claude va :
- Analyser les 3 fichiers modifiés
- Lancer
vendor/bin/phpstan analyse --level=9 - Lancer
vendor/bin/phpunit - Créer commit :
✨ feat(api): add user listing endpoint - Créer PR avec titre :
feat(api): Add user listing endpoint - Description générée :markdown
## Summary - Add UserController with GET /api/users endpoint - Add comprehensive unit tests - Configure route in routes.yaml ## Test Plan - [x] PHPStan level 9 passes - [x] Unit tests pass (100% coverage) - [ ] Manual testing with Postman
URL de la PR : https://github.com/user/repo/pull/123
Variantes
PR simple sans QA
Si tu veux skipper la QA (déconseillé) :
/git:commit
# Puis manuellement
gh pr createPR avec review multi-agents
Pour une review approfondie avant création :
/dev:review
/git:prVoir Code review automatisé.
PR en mode Continuous Delivery
Pour un workflow CD avec auto-merge :
/git:git-cd-prTroubleshooting
Erreur PHPStan
Symptôme : PHPStan found 3 errors
Solution :
- Corriger les erreurs affichées
- Relancer
/git:pr
Ou utiliser l'auto-fix :
/qa:phpstan-resolver
/git:prVoir Résoudre erreurs PHPStan.
Tests en échec
Symptôme : Tests: 2 failures
Solution :
- Lire les erreurs de test
- Corriger le code
- Relancer
/git:pr
Conflit avec la branche main
Symptôme : Cannot merge: conflicts detected
Solution :
/git:conflitVoir Résoudre les conflits.
GitHub CLI non authentifié
Symptôme : gh: not logged in
Solution :
gh auth loginLiens Connexes
Use cases :
Plugins :
Documentation externe :
Tips & Best Practices
✅ Bonnes pratiques
- Toujours lancer
/git:prplutôt que créer manuellement - Petites PR : idéalement < 400 lignes de diff
- Tests d'abord : écrire les tests avant
/git:pr - Rebase régulier : garder la branche à jour avec main
🔍 Optimisations
- Pre-commit hook : ajouter PHPStan en pre-commit pour feedback immédiat
- CI/CD : GitHub Actions qui re-vérifie PHPStan + tests
- Templates PR : ajouter
.github/PULL_REQUEST_TEMPLATE.md
🎯 Métriques de qualité
Une PR de qualité avec /git:pr c'est :
- ✅ 0 erreur PHPStan
- ✅ 100% tests passent
- ✅ Couverture de code > 80%
- ✅ Titre clair et descriptif
- ✅ Description avec test plan
Checklist Validation
Avant de créer la PR :
- [ ] Tous les fichiers modifiés sont intentionnels
- [ ] Code refactorisé et propre (pas de
dump(),var_dump()) - [ ] Tests unitaires écrits et passent
- [ ] PHPStan niveau 9 validé
- [ ] Pas de conflits avec main
- [ ] GitHub CLI authentifié
Après création :
- [ ] PR visible sur GitHub
- [ ] CI/CD lancé
- [ ] Reviewers assignés (optionnel)
- [ ] Labels ajoutés (optionnel)