command dev pour claude

This commit is contained in:
Pierre Marx
2025-10-21 14:21:16 -04:00
parent 58bd71d03e
commit 8e0b3f56c2

227
.claude/commands/dev.md Normal file
View File

@@ -0,0 +1,227 @@
# Workflow complet de développement (de A à Z)
Suivre **systématiquement** ce workflow pour chaque nouvelle fonctionnalité ou correction de bug :
## Phase 1 : Développement itératif
### Principe : Petit à petit, commit par commit
**Une fonctionnalité = plusieurs petits commits atomiques**
Éviter de faire un gros commit avec toute la fonctionnalité. Préférer découper en petites étapes testables :
```
Exemple : Ajouter un bouton "Pause" avec confirmation
❌ MAUVAIS : 1 gros commit
git commit -m "feat: Ajouter bouton Pause avec modal et gestion IPBX"
✅ BON : 5 petits commits
1. feat: Ajouter le bouton Pause dans le header
2. style: Ajouter l'icône SVG pour le bouton Pause
3. feat: Implémenter la modal de confirmation
4. feat: Connecter le bouton à SignalR pour pause IPBX
5. docs: Documenter la fonctionnalité de pause
```
### 1. Créer une branche feature
```bash
git checkout -b feature/nom-de-la-fonctionnalite
```
### 2. Cycle itératif (répéter jusqu'à complétion de la fonctionnalité)
**Pour chaque petite modification :**
#### a) Développer une petite partie
- Faire UNE modification logique à la fois
- Ne pas chercher à tout finir d'un coup
- Rester concentré sur une seule tâche
#### b) Tester
**IMPORTANT : Toujours tester AVANT de committer**
```bash
npm run dev # Test en mode développement
```
- Vérifier que la modification fonctionne
- Tester les cas limites
- S'assurer qu'aucune régression n'a été introduite
#### c) Committer (commit atomique)
Seulement après avoir testé avec succès :
- Préfixes : `feat:`, `fix:`, `refactor:`, `docs:`, `style:`, `test:`, `chore:`
- Un commit = une modification logique
- Messages clairs et descriptifs
```bash
git commit -m "feat: Ajouter le bouton Pause dans le header"
```
**Pourquoi tester avant de committer ?**
- Historique Git propre (chaque commit = code fonctionnel)
- Rollback facile vers un état stable
- `git bisect` fonctionne correctement
#### d) Continuer
Retour à l'étape **a)** pour la prochaine petite modification, jusqu'à ce que la fonctionnalité soit complète.
### 3. Fonctionnalité terminée → Passer à la Phase 2 (Release)
Une fois tous les commits de la fonctionnalité effectués, passer à la préparation de la release ci-dessous.
**Exception - WIP commits** (travail en cours à sauvegarder) :
```bash
git commit -m "wip: Travail en cours sur la fonctionnalité X"
# Plus tard, après tests réussis :
git commit --amend -m "feat: Ajouter la fonctionnalité X"
```
---
## Phase 2 : Préparation de la release
### 4. Mettre à jour le changelog (`docs/changelog.md`)
- Obtenir la date : `date +%Y-%m-%d`
- Format : `## [X.X.X] - AAAA-MM-JJ`
- Catégories : **Ajouté**, **Modifié**, **Corrigé**, **Supprimé**, **Technique**, **Documentation**
- Ajouter en haut du fichier (au-dessus de la version précédente)
### 5. Bumper la version (`package.json`)
- **PATCH** (x.x.+1) : Corrections, petits ajustements
- **MINOR** (x.+1.0) : Nouvelles fonctionnalités compatibles
- **MAJOR** (+1.0.0) : Changements majeurs incompatibles
- Modifier le champ `"version": "X.X.X"`
### 6. Commit de release
```bash
git add docs/changelog.md package.json
git commit -m "release: Version X.X.X - Titre court
- Fonctionnalité 1
- Fonctionnalité 2
- Correction 1
- Bump version X.X.X"
```
**Important** : Ne jamais mentionner Claude, Anthropic ou des adresses emails relatives à ces entités
---
## Phase 3 : Fusion dans main
### 7. Basculer sur main et fusionner
```bash
git checkout main
git merge feature/nom-de-la-fonctionnalite --no-ff
```
- `--no-ff` : Force un merge commit (historique propre et tracé)
### 8. Push vers origin
```bash
git push origin main
```
---
## Phase 4 : Build des exécutables
### 9. Build pour les plateformes nécessaires
```bash
# macOS (si développement sur Mac)
npm run build
# Linux x64 (production principale)
npm run build:linux-x64
# Windows (si nécessaire)
npm run build:win
```
### 10. Organiser les builds dans `dist/vX.X.X/`
```bash
# Créer le dossier de version
mkdir -p dist/vX.X.X
# Copier le changelog
cp docs/changelog.md dist/vX.X.X/CHANGELOG.md
# Déplacer les builds
mv dist/SimpleConnect-X.X.X*.{AppImage,dmg,zip,exe} dist/vX.X.X/ 2>/dev/null
mv dist/SimpleConnect-X.X.X*.blockmap dist/vX.X.X/ 2>/dev/null
# Vérifier le contenu
ls -lh dist/vX.X.X/
```
---
## Phase 5 : Documentation finale
### 11. Créer les notes de release (`releases/vX.X.X.md`)
- Structure markdown avec sections :
- Titre et date
- Résumé des changements
- Nouveautés principales
- Corrections
- Fichiers disponibles
- Compatibilité
- Guide d'utilisation (si nécessaire)
### 12. Commit et push de la documentation
```bash
git add releases/vX.X.X.md
git commit -m "docs: Ajout des notes de release pour vX.X.X"
git push origin main
```
---
## Phase 6 : Déploiement (optionnel)
### 13. Déployer sur le serveur de production
```bash
scp dist/vX.X.X/SimpleConnect-X.X.X.AppImage user@server:/path/to/app/
```
---
## Résumé du workflow
```
1. git checkout -b feature/XXX
2. BOUCLE (jusqu'à fonctionnalité complète) :
a) Développer une petite partie
b) Tester (npm run dev)
c) Committer (git commit -m "...")
d) Continuer
3. Mettre à jour changelog
4. Bumper version package.json
5. Commit de release
6. Merger dans main (--no-ff)
7. Push
8. Build
9. Organiser dist/
10. Notes de release
11. Commit + push docs
12. Déployer (optionnel)
```