dev:auto:feature
Workflow complet de développement automatisé (mode non-interactif)
What this skill does
# Objectif
## Instructions à Exécuter
**IMPORTANT : Exécute ce workflow étape par étape :**
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 GitHub
Issue #$ARGUMENTS (spec récupérée automatiquement)
# ⚠️ MODE NON-INTERACTIF
Ce workflow s'exécute automatiquement **sans checkpoints utilisateur**.
- **Worktree OBLIGATOIRE** : créé et nettoyé automatiquement
- **0 interaction requise** : heuristiques appliquées à chaque décision
- **CI DOIT PASSER** : PHPStan niveau 9, tests
- **Auto-fix en boucle** : max 3 tentatives en Phase 6, puis rollback si échec
Pour un workflow interactif avec validation à chaque phase, utilise `/dev:feature`.
# Prérequis obligatoires
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.
# Workflow
## Phase 0 : Vérifier les prérequis
**🔄 Progression :** `TaskUpdate` → tâche #0 en `in_progress`
**⏱️ Démarrer le timer**
Exécuter `/dev:auto:check-prerequisites`
Si la skill exit 1, arrêter immédiatement.
**⏱️ Arrêter le timer**
**🔄 Progression :** `TaskUpdate` → tâche #0 en `completed`
**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...
```
## Phase 1 : Fetch Issue (Initialisation)
**⏱️ Démarrer le timer**
**Déterminer le chemin :**
```bash
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 :**
- Valider que l'argument est un numéro d'issue
- Récupérer l'issue GitHub via `gh issue view`
- Vérifier que l'issue est OPEN et a une description
- Sauvegarder les infos dans `${workflow_state_file}`
Si `/dev:auto:fetch-issue` échoue :
- Exit avec code 1
- Afficher le message d'erreur explicite
- Arrêter
**⏱️ Arrêter le timer**
**Affichage :**
```
🔗 Issue GitHub récupérée
#123 : Description du feature
État : OPEN
Labels : enhancement
Lancement du workflow...
```
## Initialisation
### 1. Créer automatiquement le worktree (OBLIGATOIRE)
```
🤖 Mode automatique activé pour : {feature}
📂 Création du worktree...
```
**Processus :**
- Normaliser le nom de la feature en slug (kebab-case, minuscules, tirets)
- Créer le répertoire `.worktrees/` s'il n'existe pas
- Créer le worktree avec `/dev:worktree create {feature-slug}`
- Mettre à jour `.claude/data/workflows/issue-${issue_number}-dev-workflow-state.json`
**Si création échoue :**
→ **FAIL HARD** avec message d'erreur et exit code 1.
### 2. Initialiser le fichier d'état
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 :
```json
{
"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": {}
}
```
### 3. Créer les tâches du workflow
Utiliser `TaskCreate` pour chaque phase :
```
TaskCreate #0: Prérequis - Vérifier les outils
TaskCreate #1: Fetch - Récupérer l'issue GitHub
TaskCreate #2: Discover - Comprendre le besoin
TaskCreate #3: Explore - Explorer codebase
TaskCreate #4: Clarify - Heuristiques automatiques
TaskCreate #5: Design - Architecture (Pragmatic)
TaskCreate #6: Plan - Générer specs
TaskCreate #7: Code - Implémenter
TaskCreate #8: Review - Auto-fix × 3
TaskCreate #9: Cleanup - Nettoyer worktree
TaskCreate #10: Create PR - Créer la Pull Request
```
**Important :**
- Utiliser `activeForm` (ex: "Vérifiant les outils", "Récupérant l'issue GitHub")
- Toutes les tâches sont créées d'office (mode automatique)
### 4. Afficher le statut initial
```
🤖 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
```
## Gestion du timing et progression
**⚠️ IMPORTANT :** Chaque phase suit ce pattern :
1. `TaskUpdate` → tâche en `in_progress`
2. ⏱️ Démarrer le timer + exécuter la phase
3. ⏱️ Arrêter le timer
4. `TaskUpdate` → tâche en `completed`
**Avant chaque phase :**
1. Utiliser `TaskUpdate` pour marquer la tâche comme `in_progress`
2. Enregistrer le timestamp de début :
```json
{
"phases": {
"{N}": { "status": "in_progress", "startedAt": "{ISO timestamp}" }
}
}
```
**Après chaque phase :**
1. Calculer la durée et mettre à jour :
```json
{
"phases": {
"{N}": {
"status": "completed",
"startedAt": "{ISO timestamp}",
"completedAt": "{ISO timestamp}",
"durationMs": {durée en millisecondes}
}
}
}
```
2. Utiliser `TaskUpdate` pour marquer la tâche comme `completed`
**Pattern illustré dans Phase 0 - À reproduire pour toutes les phases 1-10.**
## Phase 1 : Discover
**⏱️ Démarrer le timer**
Exécuter `/dev:auto:discover`
Si `/dev:auto:discover` échoue (ambiguïté critique) :
- Exit avec code 1
- Cleanup worktree
- Arrêter
**⏱️ Arrêter le timer**
**Affichage :**
```
✅ Phase 1 : Discover complétée (45s)
🔵 Phase 2 : Explore en cours
```
## Phase 3 : Explore
**⏱️ Démarrer le timer**
Exécuter `/dev:auto:explore` (exploration codebase sans interaction)
**⏱️ Arrêter le timer**
## Phase 4 : Clarify
**⏱️ Démarrer le timer**
Exécuter `/dev:auto:clarify` (applique heuristiques, zéro question)
**⏱️ Arrêter le timer**
## Phase 5 : Design
**⏱️ Démarrer le timer**
Exécuter `/dev:auto:design` (choisit Pragmatic Balance automatiquement)
**⏱️ Arrêter le timer**
## Phase 6 : Plan
**⏱️ Démarrer le timer**
Exécuter `/dev:auto:plan` (génération plan sans interaction)
**⏱️ Arrêter le timer**
## Phase 7 : Code
**⏱️ Démarrer le timer**
Exécuter `/dev:auto:code` (implémente directement, pas d'approbation)
**⏱️ Arrêter le timer**
## Phase 8 : Review
**⏱️ Démarrer le timer**
Exécuter `/dev:auto:review` (boucle auto-fix max 3 tentatives)
**Si review échoue (PHPStan impossible) :**
- Logger l'erreur dans workflow-state.json
- **Déclencher ROLLBACK** :
```bash
git reset --hard HEAD@{0}
/dev:worktree remove {feature-name}
```
- Mettre à jour workflow-state.json avec `status: "failed"`
- Exit code 1 avec message explicite
**⏱️ Arrêter le timer**
**Si succès :**
- Continuer à Phase 8
**⏱️ Calculer le temps total :**
1. Lire `.claude/data/workflows/issue-${issue_number}-dev-workflow-state.json`
2. Calculer `totalDurationMs` = somme de tous les `durationMs` des phases
3. Mettre à jour le fichier avec `timing.totalDurationMs`
## Phase 9 : Cleanup (OBLIGATOIRE)
**⏱️ Démarrer le timer**
**Nettoyage automatique du worktree :**
```
🧹 Nettoyage du worktree...
```
1. Vérifier que worktree a été créé (vérifier workflow state)
2. Exécuter `/dev:worktree remove {feature-name}` automatiquement
3. Ne PAS supprimer la branche (elle sera utilisée pour la PR en Phase 1Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.