Push avec vérification et simplification du code
Parsing des arguments
Analyse $ARGUMENTS pour extraire :
- •
--doc: si présent, met à jour la documentation après simplification - •
branche-cible: branche de comparaison (défaut:main)
Exemples :
- •
/pushwithverif→ compare avec main, pas de doc - •
/pushwithverif develop→ compare avec develop, pas de doc - •
/pushwithverif --doc→ compare avec main, met à jour la doc - •
/pushwithverif --doc develop→ compare avec develop, met à jour la doc
Étape 1 : Analyser les modifications
- •Récupère la branche actuelle :
git branch --show-current - •Détermine la branche cible (argument ou
mainpar défaut) - •Liste les fichiers modifiés :
git diff --name-only HEAD - •Liste aussi les fichiers staged :
git diff --cached --name-only - •Affiche un résumé des modifications à l'utilisateur
Si aucun fichier modifié → informe l'utilisateur et STOP.
Étape 2 : Classifier les fichiers
Sépare les fichiers en catégories :
Backend (Python) :
- •
*.py
Frontend (TypeScript/React) :
- •
*.ts,*.tsx,*.js,*.jsx
Documentation :
- •
*.mddansdocs/
Autres :
- •Config, assets, etc. (pas de simplification)
Étape 3 : Simplifier le code
Pour chaque catégorie de fichiers modifiés :
Si fichiers Python détectés :
Lance l'agent code-simplifier-backend avec le Task tool :
Simplifie ces fichiers Python modifiés : - [liste des fichiers .py] Améliore la lisibilité et applique les conventions du projet. Ne change pas le comportement du code.
Si fichiers Frontend détectés :
Lance l'agent code-simplifier-frontend avec le Task tool :
Simplifie ces fichiers TypeScript/React modifiés : - [liste des fichiers .ts/.tsx/.js/.jsx] Améliore la lisibilité et applique les conventions du projet. Ne change pas le comportement du code.
Important : Si les deux types existent, lance les deux agents en parallèle.
Étape 4 : Vérification post-simplification
Linters
Python :
uv run ruff check . --fix uv run ruff format .
Frontend (si package.json existe) :
pnpm lint --fix 2>/dev/null || npm run lint --fix 2>/dev/null || true
Tests
Python :
uv run pytest -x -q --tb=short
Frontend (si script test existe) :
pnpm test 2>/dev/null || npm test 2>/dev/null || true
Si les tests échouent :
- •Affiche les erreurs à l'utilisateur
- •Demande s'il veut continuer quand même (AskUserQuestion)
- •Si non → STOP (ne pas push)
Étape 5 : Mise à jour documentation (si --doc)
Uniquement si --doc est présent dans les arguments.
- •Identifie les fichiers de code modifiés (pas les .md)
- •Détermine quelle documentation doit être mise à jour :
| Fichiers modifiés | Documentation impactée |
|---|---|
src/api/**, **/routes/** | docs/api/API_REFERENCE.md |
src/models/**, **/schemas/** | docs/architecture/ARCHITECTURE.md |
src/services/** | docs/guides/SERVICES.md |
*.env*, config/** | docs/guides/CONFIGURATION.md |
Dockerfile, docker-compose* | docs/guides/DEPLOYMENT.md |
- •
Pour chaque doc impactée :
- •Lis le fichier source modifié
- •Lis la doc existante
- •Met à jour les sections concernées (endpoints, fonctions, configs...)
- •Ne réécris pas tout, édite chirurgicalement
- •
Affiche les docs mises à jour
Étape 6 : Commit
- •
Stage tous les fichiers modifiés :
bashgit add -A
- •
Analyse les changements pour le message :
bashgit diff --cached --stat
- •
Génère un message de commit clair :
- •Format conventional commits (feat:, fix:, refactor:, docs:, etc.)
- •Résume les changements principaux
- •Mentionne si code simplifié et/ou doc mise à jour
- •
Crée le commit :
bashgit commit -m "$(cat <<'EOF' <type>(<scope>): <description courte> <détails des modifications> - Code simplifié par Claude - Documentation mise à jour (si applicable) EOF )"
Étape 7 : Push
- •
Si branche =
mainoumaster:- •Demande confirmation avec AskUserQuestion
- •Si refusé → STOP
- •
Vérifie l'upstream :
bashgit rev-parse --abbrev-ref @{upstream} 2>/dev/null - •
Push :
- •Si pas d'upstream :
git push -u origin <branche> - •Sinon :
git push
- •Si pas d'upstream :
Résumé final
Affiche à l'utilisateur :
## Push effectué | Catégorie | Fichiers | Action | |-----------|----------|--------| | Backend (Python) | 5 | Simplifiés | | Frontend (TS/React) | 3 | Simplifiés | | Documentation | 2 | Mises à jour | **Commit** : `refactor(api): simplifie les endpoints utilisateurs` **Branche** : feature/user-api → origin/feature/user-api **Tests** : 42 passed **Lien** : https://github.com/user/repo/tree/feature/user-api
Règles de sécurité
- •DEMANDE CONFIRMATION avant push sur
main/master - •STOP si tests échouent (sauf override utilisateur)
- •NE MODIFIE PAS les fichiers .env, credentials, secrets
- •IGNORE les fichiers dans .gitignore