devopsrelease-report
Génère un rapport HTML d'analyse d'impact entre deux branches
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Génère un rapport HTML d'analyse d'impact entre deux branches
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Audite un projet API Platform existant et produit un rapport de bonnes pratiques, performances et sécurité
Génère des DTOs (input/output) API Platform avec mapping vers les entités
Génère des filtres API Platform (search, date, range, order, boolean, exists, custom)
Génère un State Processor API Platform pour personnaliser la persistence des données
Génère un State Provider API Platform pour personnaliser la récupération de données
Génère une API Resource complète avec attribut
| name | devops:release-report |
| description | Génère un rapport HTML d'analyse d'impact entre deux branches |
| argument-hint | <branche-source> <branche-cible> [nom-release] |
| version | 1.0.0 |
| license | MIT |
| arguments | [{"name":"branche-source","description":"Branche source à analyser (ex release/v27.0.0)","required":true},{"name":"branche-cible","description":"Branche de référence (ex main ou develop)","required":true},{"name":"nom-release","description":"Nom de la release pour le fichier (optionnel)","required":false}] |
IMPORTANT : Exécute ce workflow étape par étape :
Génère un rapport HTML détaillé comparant deux branches pour analyser l'impact d'une release.
/devops:release-report <branche-source> <branche-cible> [nom-release]
Exemples :
/devops:release-report release/v27.0.0 main/devops:release-report release/v27.0.0 develop v27.0.0/devops:release-report feature/new-module main "Module XYZ"Cette commande génère un rapport HTML orienté Product Owner qui analyse :
Le rapport est généré dans REPORT_PATH/impact_<nom-release>.html
REPORT_PATH: .claude/reports
Variables à extraire des arguments :
$BRANCH_SOURCE : Branche source à analyser (ex: release/v27.0.0)$BRANCH_TARGET : Branche de référence (ex: main ou develop)$RELEASE_NAME : Nom de la release pour le fichier (ex: v27.0.0)Si $RELEASE_NAME n'est pas fourni, utiliser le nom de $BRANCH_SOURCE en retirant le préfixe "release/"
AVANT TOUTE EXÉCUTION, vérifier que les arguments obligatoires sont fournis :
Si $BRANCH_SOURCE est manquant :
AskUserQuestion pour demander la branche sourceSi $BRANCH_TARGET est manquant :
AskUserQuestion pour demander la branche ciblemain, develop, master# Vérifier que les branches existent
git rev-parse --verify $BRANCH_SOURCE
git rev-parse --verify $BRANCH_TARGET
# Vérifier qu'il y a des différences
DIFF_COUNT=$(git rev-list --count $BRANCH_TARGET..$BRANCH_SOURCE)
if [ $DIFF_COUNT -eq 0 ]; then
echo "Aucune différence entre les branches"
exit 1
fi
Exécuter en parallèle :
# Statistiques globales
git diff --stat $BRANCH_TARGET..$BRANCH_SOURCE | tail -1
# Nombre total de fichiers modifiés et détails lignes
git diff --numstat $BRANCH_TARGET..$BRANCH_SOURCE | \
awk '{files++; added+=$1; deleted+=$2} END {print files, added, deleted}'
# Répartition par type de fichier
git diff --numstat $BRANCH_TARGET..$BRANCH_SOURCE | python3 -c "
import sys
from collections import defaultdict
stats = defaultdict(lambda: {'count': 0, 'added': 0, 'deleted': 0})
for line in sys.stdin:
parts = line.strip().split('\t')
if len(parts) < 3:
continue
added = int(parts[0]) if parts[0] != '-' else 0
deleted = int(parts[1]) if parts[1] != '-' else 0
path = parts[2]
ext = 'autre'
if path.endswith('.php'): ext = 'php'
elif path.endswith('.twig'): ext = 'twig'
elif path.endswith(('.yml', '.yaml')): ext = 'yaml'
elif path.endswith('.js'): ext = 'js'
elif path.endswith('.scss'): ext = 'scss'
elif path.endswith('.md'): ext = 'md'
elif path.endswith('.json'): ext = 'json'
elif path.endswith('.sh'): ext = 'sh'
stats[ext]['count'] += 1
stats[ext]['added'] += added
stats[ext]['deleted'] += deleted
stats[ext]['total'] = stats[ext]['added'] + stats[ext]['deleted']
for ext in sorted(stats.items(), key=lambda x: x[1]['total'], reverse=True):
name = ext[0]
data = ext[1]
print(f'{name}|{data[\"count\"]}|{data[\"added\"]}|{data[\"deleted\"]}|{data[\"total\"]}')
"
# Types de modifications (A/M/D/R)
git diff --name-status $BRANCH_TARGET..$BRANCH_SOURCE | cut -f1 | sort | uniq -c
# Nombre de commits
git rev-list --count $BRANCH_TARGET..$BRANCH_SOURCE
# Top commits avec features/fixes
git log $BRANCH_TARGET..$BRANCH_SOURCE --oneline --no-merges | \
grep -E "(feat|feature|fix|refactor)" | head -50
Analyser les commits pour identifier les domaines principaux impactés :
Structure du rapport :
Header avec executive summary
KPI Grid (4 indicateurs visuels)
Fonctionnalités principales (cards avec impact)
Corrections majeures - Liste des bugs corrigés
Qualité & Maintenabilité - Code simplifié, documentation, refactoring
Vue d'ensemble technique - Chart bars par type de fichier
Impact business - Gestion administrative, communication, performance, sécurité
Style CSS :
OUTPUT_FILE="REPORT_PATH/impact_${RELEASE_NAME}.html"
mkdir -p REPORT_PATH
echo "Rapport généré : $OUTPUT_FILE"
Le rapport doit être :