Workflow complet de développement automatisé (mode non-interactif)
Automates full GitHub issue-to-PR workflow in 10 non-interactive phases. Fetches issue, creates worktree, implements feature, runs CI checks with auto-fix, and creates PR. Use for trusted, automated development when CI requirements are clear.
/plugin marketplace add atournayre/claude-marketplace/plugin install dev@atournayre-claude-plugin-marketplace<issue-number>claude-sonnet-4-5-20250929auto/Orchestrateur du workflow de développement en 10 phases SANS interaction utilisateur.
Exécution automatique complète : récupérer issue → phases 1-8 → cleanup → créer PR. Objectif : PR créée et prête pour review, CI passe.
Issue #$ARGUMENTS (spec récupérée automatiquement)
Ce workflow s'exécute automatiquement sans checkpoints utilisateur.
Pour un workflow interactif avec validation à chaque phase, utilise /dev:feature.
Exécuter /dev:auto:check-prerequisites pour vérifier que TOUS les prérequis sont présents.
Exit code 1 et arrêt si quelque chose manque.
⏱️ Démarrer le timer
Exécuter /dev:auto:check-prerequisites
Si la skill exit 1, arrêter immédiatement.
⏱️ Arrêter le timer
Affichage :
✅ Prérequis vérifiés
Tous les outils nécessaires sont présents :
✅ gh CLI authentifiée
✅ jq disponible
✅ git disponible
Lancement du workflow...
⏱️ Démarrer le timer
Déterminer le chemin :
issue_number=$ARGUMENTS
workflow_state_file=".claude/data/workflows/issue-${issue_number}-dev-workflow-state.json"
# Créer le répertoire s'il n'existe pas
mkdir -p ".claude/data/workflows"
Exécuter /dev:auto:fetch-issue $ARGUMENTS
Processus :
gh issue view${workflow_state_file}Si /dev:auto:fetch-issue échoue :
⏱️ Arrêter le timer
Affichage :
🔗 Issue GitHub récupérée
#123 : Description du feature
État : OPEN
Labels : enhancement
Lancement du workflow...
🤖 Mode automatique activé pour : {feature}
📂 Création du worktree...
Processus :
.worktrees/ s'il n'existe pas/dev:worktree create {feature-slug}.claude/data/workflows/issue-${issue_number}-dev-workflow-state.jsonSi création échoue : → FAIL HARD avec message d'erreur et exit code 1.
Le fichier .claude/data/workflows/issue-{issue_number}-dev-workflow-state.json a déjà été créé par Phase 0 avec les infos de l'issue.
Mettre à jour le fichier pour ajouter les infos du worktree :
{
"mode": "auto",
"issue": {
"number": {numéro},
"title": "{issue title}",
"description": "{issue body}",
"labels": "{issue labels}",
"state": "OPEN",
"fetchedAt": "{ISO timestamp}"
},
"feature": "{issue title}",
"status": "in_progress",
"startedAt": "{ISO timestamp}",
"currentPhase": 1,
"worktree": {
"name": "{feature-slug}",
"path": ".worktrees/{feature-slug}",
"branch": "feature/{feature-slug}",
"cleaned": false,
"branchDeleted": false
},
"autoConfig": {
"worktreeCreated": true,
"decisions": {},
"autoFixAttempts": {}
},
"timing": {
"totalDurationMs": null
},
"phases": {}
}
🤖 Workflow automatique : {feature}
🔵 0. Prérequis - Vérifier les outils ← En cours
⬜ 1. Fetch - Récupérer l'issue GitHub
⬜ 2. Discover - Comprendre le besoin
⬜ 3. Explore - Explorer codebase
⬜ 4. Clarify - Heuristiques automatiques
⬜ 5. Design - Architecture (Pragmatic)
⬜ 6. Plan - Générer specs
⬜ 7. Code - Implémenter
⬜ 8. Review - Auto-fix × 3
⬜ 9. Cleanup - Nettoyer worktree
⬜ 10. Create PR - Créer la Pull Request
Avant chaque phase : Enregistrer le timestamp de début :
{
"phases": {
"{N}": { "status": "in_progress", "startedAt": "{ISO timestamp}" }
}
}
Après chaque phase : Calculer la durée et mettre à jour :
{
"phases": {
"{N}": {
"status": "completed",
"startedAt": "{ISO timestamp}",
"completedAt": "{ISO timestamp}",
"durationMs": {durée en millisecondes}
}
}
}
⏱️ Démarrer le timer
Exécuter /dev:auto:discover
Si /dev:auto:discover échoue (ambiguïté critique) :
⏱️ Arrêter le timer
Affichage :
✅ Phase 1 : Discover complétée (45s)
🔵 Phase 2 : Explore en cours
⏱️ Démarrer le timer
Exécuter /dev:auto:explore (exploration codebase sans interaction)
⏱️ Arrêter le timer
⏱️ Démarrer le timer
Exécuter /dev:auto:clarify (applique heuristiques, zéro question)
⏱️ Arrêter le timer
⏱️ Démarrer le timer
Exécuter /dev:auto:design (choisit Pragmatic Balance automatiquement)
⏱️ Arrêter le timer
⏱️ Démarrer le timer
Exécuter /dev:auto:plan (génération plan sans interaction)
⏱️ Arrêter le timer
⏱️ Démarrer le timer
Exécuter /dev:auto:code (implémente directement, pas d'approbation)
⏱️ Arrêter le timer
⏱️ Démarrer le timer
Exécuter /dev:auto:review (boucle auto-fix max 3 tentatives)
Si review échoue (PHPStan impossible) :
git reset --hard HEAD@{0}
/dev:worktree remove {feature-name}
status: "failed"⏱️ Arrêter le timer
Si succès :
⏱️ Calculer le temps total :
.claude/data/workflows/issue-${issue_number}-dev-workflow-state.jsontotalDurationMs = somme de tous les durationMs des phasestiming.totalDurationMs⏱️ Démarrer le timer
Nettoyage automatique du worktree :
🧹 Nettoyage du worktree...
/dev:worktree remove {feature-name} automatiquement{
"status": "in_progress",
"completedAt": "{ISO timestamp}",
"worktree": {
"cleaned": true,
"branchDeleted": false,
"cleanedAt": "{ISO timestamp}"
}
}
⏱️ Arrêter le timer
Affichage :
✅ Phase 9 : Cleanup complétée (5s)
🔵 Phase 10 : Create PR en cours
⏱️ Démarrer le timer
Récupérer la branche-base et le projet depuis .env.claude (ou valeurs par défaut) :
MAIN_BRANCH=${MAIN_BRANCH:-main}
PROJECT=${PROJECT:-}
Exécuter /git:pr avec les paramètres du workflow automatique :
/git:pr $MAIN_BRANCH $PROJECT --no-interaction
Paramètres :
$MAIN_BRANCH : branche de base (depuis .env.claude MAIN_BRANCH ou "main")$PROJECT : projet GitHub (depuis .env.claude PROJECT ou vide)--no-interaction : mode automatique, passer confirmationsSi /git:pr échoue (ex: branche inexistante, GitHub unreachable) :
⏱️ Arrêter le timer
Nettoyage du workflow state :
# Supprimer le fichier de workflow state
rm -f ".claude/data/workflows/issue-${issue_number}-dev-workflow-state.json"
Affichage final :
✅ SUCCÈS - Workflow terminé
🎉 Feature prête pour Pull Request
✅ CI PASSE (PHPStan niveau 9, tests)
📂 Worktree nettoyé
🔗 PR créée : https://github.com/...#<pr-number>
Affichage du récapitulatif des temps (voir section "Récapitulatif final")
À chaque transition de phase, afficher le statut mis à jour avec timing :
🤖 Workflow automatique : {feature}
✅ 0. Prérequis - Vérifier les outils (1s)
✅ 1. Fetch - Récupérer l'issue GitHub (2s)
✅ 2. Discover - Comprendre le besoin (45s)
✅ 3. Explore - Explorer codebase (2m 30s)
✅ 4. Clarify - Heuristiques automatiques (20s)
🔵 5. Design - Architecture (Pragmatic) ← En cours
⬜ 6. Plan - Générer specs
⬜ 7. Code - Implémenter
⬜ 8. Review - Auto-fix × 3
⬜ 9. Cleanup - Nettoyer worktree
⬜ 10. Create PR - Créer la Pull Request
Pas d'arrêt : exécution continue jusqu'à fin ou échec.
Formater les durées de manière lisible :
< 60s → {X}s (ex: 45s)< 60min → {X}m {Y}s (ex: 2m 30s)>= 60min → {X}h {Y}m (ex: 1h 15m)À la fin du workflow (après phase 7, avant cleanup), afficher :
⏱️ Récapitulatif des temps
Phase 0. Prérequis : 1s
Phase 1. Fetch : 2s
Phase 2. Discover : 45s
Phase 3. Explore : 2m 30s
Phase 4. Clarify : 20s
Phase 5. Design : 1m 15s
Phase 6. Plan : 50s
Phase 7. Code : 8m 20s
Phase 8. Review : 2m 45s
Phase 9. Cleanup : 5s
Phase 10. Create PR: 10s
────────────────────────────
Total : 17m 23s
Mettre à jour .claude/data/workflows/issue-{issue_number}-dev-workflow-state.json :
{
"status": "failed",
"failedAt": "{ISO timestamp}",
"failurePhase": {numéro},
"failureReason": "Description de l'erreur",
"errors": ["error1", "error2"]
}
git reset --hard HEAD@{0}
/dev:worktree remove {feature-name}
Mettre à jour workflow state avec cleaned: true, branchDeleted: true, rollback: true.
❌ ÉCHEC du workflow automatique
Raison : {failureReason}
Phase échouée : {failurePhase}
Erreurs :
{liste des erreurs}
Le worktree a été nettoyé et la branche supprimée.
Utilise /dev:feature pour un workflow interactif.
Exit code: 1
/git:pr.claude/data/workflows/issue-{issue_number}-dev-workflow-state.json après chaque phaseDescription : "Ajouter auth"
→ Trop vague (OAuth? Basic? JWT?)
Action : FAIL dans discover
Message : "Description trop ambiguë pour mode auto.
Précise : OAuth? Basic Auth? JWT?
Ou utilise /dev:feature pour mode interactif."
Exit code: 1
Nom feature : "oauth-auth"
Worktree .worktrees/oauth-auth existe déjà
Action : Suffixe automatique
→ .worktrees/oauth-auth-2
Et logger warning dans workflow state
Vérifier avec git show-ref refs/heads/feature/{name}.
Si existe → FAIL dans initialisation.
| Aspect | /dev:feature | /dev:auto:feature |
|---|---|---|
| Input | Description texte libre | Numéro issue GitHub |
| Interaction | 5 checkpoints | 0 checkpoint |
| Worktree | Optionnel | OBLIGATOIRE |
| Phase 3 | Questions utilisateur | Heuristiques |
| Phase 4 | Choix utilisateur | Auto Pragmatic |
| Phase 6 | Approbation requise | Immédiat |
| Phase 7 | Fix now/later/proceed | Auto-fix × 3 |
| Phase 8 | Proposer nettoyage | Cleanup auto |
| Phase 9 | Manuel : /git:pr | Auto : /git:pr + params |
| Erreurs | Demander aide | Rollback auto |
| Objectif | Collaboration | Automation |