--- name: task-workflow description: Workflow complet pour traiter une tâche du TASK.md — branche git, développement, tests, commit conventionnel, push, puis archivage dans DONE.md. Utiliser quand l'utilisateur veut implémenter une tâche listée dans TASK.md. allowed-tools: Read, Bash, Edit, Write, Glob, Grep --- # Workflow de traitement d'une tâche (TASK.md → DONE.md) Quand l'utilisateur demande de traiter une tâche du `TASK.md`, suivre **dans l'ordre** les étapes ci-dessous. --- ## ⚠️ Étape 0 — Repartir d'une branche saine depuis `origin/main` **IMPORTANT : toujours commencer par cette étape, sans exception.** ```bash git fetch origin git checkout main git pull origin main ``` Ensuite seulement créer la branche de travail (voir étape 2). > Règle : ne jamais partir d'une branche de feature existante. Toujours tirer depuis `main` à jour. --- ## Étape 1 — Lire et choisir la tâche 1. Lire `TASK.md` pour identifier la tâche à traiter (si non précisée, demander laquelle). 2. Extraire : le titre, les fichiers impactés, et la liste des sous-tâches. --- ## Étape 2 — Créer une branche git Nommer la branche d'après le type et le titre de la tâche : ``` / ``` Exemples de types : `feat`, `fix`, `style`, `refactor`, `test`, `chore` ```bash git checkout -b style/simplifier-table-homepage ``` Règle : **ne jamais committer directement sur `main`**. --- ## Étape 3 — Implémenter la tâche - Lire tous les fichiers mentionnés dans la tâche avant de les modifier. - Cocher mentalement chaque sous-tâche `[ ]` au fur et à mesure. - Respecter les skills existants selon les fichiers touchés : - Composant Vue → skill `vue-frontend` - Domaine PHP → skills `ddd-core`, `hexagonal-arch`, `cqrs`, `api-platform` - Tests → skill `testing-strategy` --- ## Étape 4 — Vérifier que tous les tests passent ```bash make test ``` - Si des tests échouent, **corriger avant de continuer**. - Ne pas passer à l'étape suivante tant que la suite n'est pas verte. - Pour un test spécifique : `make test f="NomDeLaClasse"` --- ## Étape 5 — Commit conventionnel Format Conventional Commits : ``` (): [corps optionnel : explication du pourquoi] ``` **Types autorisés :** `feat`, `fix`, `style`, `refactor`, `test`, `chore`, `docs` **Scope :** nom du domaine ou du composant impacté (ex: `manga-table`, `sidebar`, `homepage`) Exemples : ``` style(manga-table): simplifier le wrapper card + hover vert sur le titre fix(sidebar): séparer toggle et navigation sur MenuGroup ``` ```bash git add git commit -m "style(manga-table): simplifier le wrapper card + hover vert sur le titre" ``` --- ## Étape 6 — Push de la branche **Demander confirmation à l'utilisateur avant de pusher.** ```bash git push -u origin ``` --- ## Étape 7 — Archiver la tâche dans DONE.md 1. Retirer le bloc de la tâche de `TASK.md` (section complète, du titre `##` jusqu'au `---` suivant). 2. Ajouter la tâche dans `DONE.md` (créer le fichier s'il n'existe pas) avec la date et le sha du commit : Format dans `DONE.md` : ```markdown ## [TYPE] Titre de la tâche — YYYY-MM-DD > Branche : `` | Commit : `` - [x] Sous-tâche 1 - [x] Sous-tâche 2 ``` --- ## Résumé du flux ``` fetch + checkout main + pull (branche saine) → branche git depuis main → TASK.md (choisir la tâche) → implémentation → make test (vert obligatoire) → conventional commit → push (après confirmation) → DONE.md ```