Files
gh-atournayre-claude-market…/skills/git-pr/SKILL.md
2025-11-29 17:58:54 +08:00

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.
Bash
Read
Write
TodoWrite
AskUserQuestion
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 :

  1. Analyser les commits et le diff
  2. 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
  3. Sauvegarder dans /tmp/pr_body_generated.md avec 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 :

  1. Conformité template PR :

    • Vérifier que toutes les sections requises sont remplies
    • Signaler les sections manquantes ou incomplètes
  2. 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
  3. Tests :

    • Tests manquants pour les nouvelles fonctionnalités
    • Couverture des cas limites
  4. Documentation :

    • Commentaires nécessaires absents
    • Mise à jour README si API modifiée
  5. 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é.