7.9 KiB
name, description, allowed-tools, model
| name | description | allowed-tools | model | |||||
|---|---|---|---|---|---|---|---|---|
| git-pr | Automatise la création de Pull Requests GitHub avec workflow complet incluant: QA intelligente (PHP), commits structurés, assignation milestone et projet, code review automatique. Utilisable via /git:pr ou invocation automatique quand l'utilisateur demande à créer/ouvrir/faire une PR. |
|
claude-sonnet-4-5-20250929 |
Git PR Skill - Checklist d'exécution
Configuration
SCRIPTS_DIR="/home/atournayre/.claude/plugins/marketplaces/atournayre-claude-plugin-marketplace/git/skills/git-pr/scripts"
PR_TEMPLATE_PATH=".github/pull_request_template.md"
Checklist d'exécution
1. Initialisation
EXÉCUTER :
START_TIME=$(date +%s)
EXÉCUTER TodoWrite avec ces todos exacts :
todos:
- content: "Vérifier template PR"
status: "pending"
activeForm: "Vérification du template PR"
- content: "Lancer QA intelligente"
status: "pending"
activeForm: "Lancement de la QA intelligente"
- content: "Analyser changements git"
status: "pending"
activeForm: "Analyse des changements git"
- content: "Confirmer branche de base"
status: "pending"
activeForm: "Confirmation de la branche de base"
- content: "Générer description PR intelligente"
status: "pending"
activeForm: "Génération de la description PR intelligente"
- content: "Push et création PR"
status: "pending"
activeForm: "Push et création de la PR"
- content: "Assigner milestone"
status: "pending"
activeForm: "Assignation du milestone"
- content: "Assigner projet GitHub"
status: "pending"
activeForm: "Assignation du projet GitHub"
- content: "Code review automatique"
status: "pending"
activeForm: "Code review automatique"
- content: "Nettoyage branche locale"
status: "pending"
activeForm: "Nettoyage de la branche locale"
2. Parsing arguments
EXÉCUTER ce bloc pour parser $ARGUMENTS :
ARGS=($ARGUMENTS)
BRANCH_BASE=""
MILESTONE=""
PROJECT_NAME=""
DELETE_FLAG=""
NO_REVIEW_FLAG=""
for arg in "${ARGS[@]}"; do
case "$arg" in
--delete) DELETE_FLAG="--delete" ;;
--no-review) NO_REVIEW_FLAG="--no-review" ;;
*)
if [ -z "$BRANCH_BASE" ]; then
BRANCH_BASE="$arg"
elif [ -z "$MILESTONE" ]; then
MILESTONE="$arg"
elif [ -z "$PROJECT_NAME" ]; then
PROJECT_NAME="$arg"
fi
;;
esac
done
3. Vérification scopes GitHub
EXÉCUTER :
bash $SCRIPTS_DIR/check_scopes.sh
- Exit 0 → continuer
- Exit 1 → ARRÊT, afficher message du script
4. Template PR
- Marquer todo #1 in_progress
EXÉCUTER :
bash $SCRIPTS_DIR/verify_pr_template.sh "$PR_TEMPLATE_PATH"
- Exit 0 → marquer todo #1 completed
- Exit 1 → ARRÊT
5. QA (si pas --no-review)
- Marquer todo #2 in_progress
EXÉCUTER :
bash $SCRIPTS_DIR/smart_qa.sh
- Exit 0 → marquer todo #2 completed
- Exit 1 → ARRÊT
6. Analyse changements
- Marquer todo #3 in_progress
EXÉCUTER :
bash $SCRIPTS_DIR/analyze_changes.sh
- Stocker sortie JSON
- Marquer todo #3 completed
7. Branche de base
- Marquer todo #4 in_progress
Si BRANCH_BASE fourni :
python3 $SCRIPTS_DIR/confirm_base_branch.py --branch "$BRANCH_BASE"
Sinon :
python3 $SCRIPTS_DIR/confirm_base_branch.py
Si needs_user_input: true → utiliser AskUserQuestion :
questions:
- question: "Quelle branche de base pour la PR ?"
header: "Branche"
multiSelect: false
options:
- label: "develop"
description: "Branche développement"
- label: "main"
description: "Branche production"
- Marquer todo #4 completed
8. Génération description intelligente
- Marquer todo "Générer description PR intelligente" in_progress
EXÉCUTER pour récupérer les informations :
BRANCH_NAME=$(git branch --show-current)
echo "=== COMMITS ==="
git log $BRANCH_BASE..$BRANCH_NAME --oneline
echo ""
echo "=== DIFF STAT ==="
git diff $BRANCH_BASE..$BRANCH_NAME --stat
echo ""
echo "=== FICHIERS MODIFIÉS ==="
git diff $BRANCH_BASE..$BRANCH_NAME --name-only
LIRE le template PR avec Read tool : $PR_TEMPLATE_PATH
GÉNÉRER LA DESCRIPTION en tant que Claude :
- Analyser les commits et le diff
- Remplir intelligemment chaque section du template :
- Bug fix : supprimer si pas de fix, sinon lier l'issue
- Description : résumer les changements basé sur les commits
- Type de changement : cocher (✔️) les types appropriés basé sur les commits
- Tests : indiquer si tests ajoutés/modifiés
- Checklist : cocher ce qui s'applique
- Actions : cocher ce qui est nécessaire
- Sauvegarder dans
/tmp/pr_body_generated.mdavec Write tool
9. Création PR
EXÉCUTER :
PR_NUMBER=$(bash $SCRIPTS_DIR/create_pr.sh "$BRANCH_BASE" "/tmp/pr_body_generated.md")
- Exit 0 → stocker PR_NUMBER, marquer todo "Générer description PR intelligente" completed, puis marquer todo "Push et création PR" completed
- Exit 1 → ARRÊT
10. Milestone
- Marquer todo "Assigner milestone" in_progress
Si MILESTONE fourni :
python3 $SCRIPTS_DIR/assign_milestone.py $PR_NUMBER --milestone "$MILESTONE"
Sinon :
python3 $SCRIPTS_DIR/assign_milestone.py $PR_NUMBER
Si needs_user_input: true → utiliser AskUserQuestion avec milestones disponibles
- Marquer todo "Assigner milestone" completed (même si échec, non bloquant)
11. Projet
- Marquer todo "Assigner projet GitHub" in_progress
Si PROJECT_NAME fourni :
python3 $SCRIPTS_DIR/assign_project.py $PR_NUMBER --project "$PROJECT_NAME"
Sinon :
python3 $SCRIPTS_DIR/assign_project.py $PR_NUMBER
Si needs_user_input: true → utiliser AskUserQuestion avec projets disponibles
- Marquer todo "Assigner projet GitHub" completed (même si échec, non bloquant)
12. Review intelligente (si pas --no-review)
- Marquer todo "Code review automatique" in_progress
EXÉCUTER pour récupérer les données :
PR_DATA=$(bash $SCRIPTS_DIR/auto_review.sh $PR_NUMBER)
ANALYSER EN TANT QUE CLAUDE les données JSON retournées et générer une review intelligente :
-
Conformité template PR :
- Vérifier que toutes les sections requises sont remplies
- Signaler les sections manquantes ou incomplètes
-
Qualité du code :
- Patterns suspects (code dupliqué, fonctions trop longues)
- Problèmes de sécurité potentiels (injections, données sensibles)
- Respect des conventions du projet
-
Tests :
- Tests manquants pour les nouvelles fonctionnalités
- Couverture des cas limites
-
Documentation :
- Commentaires nécessaires absents
- Mise à jour README si API modifiée
-
Suggestions d'amélioration :
- Refactorisation possible
- Performance
- Lisibilité
GÉNÉRER le commentaire de review avec structure :
## 🔍 Code Review Automatique
### ✅ Points positifs
- [ce qui est bien fait]
### ⚠️ Points d'attention
- [problèmes potentiels à vérifier]
### 💡 Suggestions
- [améliorations possibles]
### 📋 Checklist conformité
- [ ] Template PR complet
- [ ] Tests présents
- [ ] Documentation à jour
---
*Review générée par git-pr skill*
EXÉCUTER pour poster le commentaire :
gh pr comment $PR_NUMBER --body "$REVIEW_COMMENT"
- Marquer todo "Code review automatique" completed
13. Nettoyage
- Marquer todo "Nettoyage branche locale" in_progress
EXÉCUTER :
bash $SCRIPTS_DIR/cleanup_branch.sh "$BRANCH_BASE" "$BRANCH_NAME" $DELETE_FLAG
Si needs_user_input: true → utiliser AskUserQuestion pour confirmer suppression
- Marquer todo "Nettoyage branche locale" completed
14. Rapport final
EXÉCUTER :
bash $SCRIPTS_DIR/final_report.sh $PR_NUMBER $START_TIME
Afficher le rapport YAML généré.