qwen-superpowers 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Script de release.
3
+ * Usage: node scripts/release.js [patch|minor|major]
4
+ *
5
+ * Automatise le bump de version, le tag git et la préparation du release.
6
+ */
7
+
8
+ const { execSync } = require('child_process');
9
+ const fs = require('fs');
10
+ const path = require('path');
11
+
12
+ const PACKAGE_PATH = path.join(__dirname, '..', 'package.json');
13
+
14
+ const bumpType = process.argv[2] || 'patch';
15
+ const validBumps = ['patch', 'minor', 'major'];
16
+
17
+ if (!validBumps.includes(bumpType)) {
18
+ console.error(`Usage: node scripts/release.js [${validBumps.join('|')}]`);
19
+ console.error(` patch: 1.0.0 -> 1.0.1`);
20
+ console.error(` minor: 1.0.0 -> 1.1.0`);
21
+ console.error(` major: 1.0.0 -> 2.0.0`);
22
+ process.exit(1);
23
+ }
24
+
25
+ // Lire la version actuelle
26
+ const pkg = JSON.parse(fs.readFileSync(PACKAGE_PATH, 'utf-8'));
27
+ const currentVersion = pkg.version;
28
+ console.log(`Version actuelle: ${currentVersion}`);
29
+
30
+ // Calculer la nouvelle version
31
+ const [major, minor, patch] = currentVersion.split('.').map(Number);
32
+ let newVersion;
33
+
34
+ switch (bumpType) {
35
+ case 'patch':
36
+ newVersion = `${major}.${minor}.${patch + 1}`;
37
+ break;
38
+ case 'minor':
39
+ newVersion = `${major}.${minor + 1}.0`;
40
+ break;
41
+ case 'major':
42
+ newVersion = `${major + 1}.0.0`;
43
+ break;
44
+ }
45
+
46
+ console.log(`Nouvelle version: ${newVersion} (bump: ${bumpType})`);
47
+
48
+ // Vérifier que le dépôt est propre
49
+ try {
50
+ const status = execSync('git status --porcelain', { encoding: 'utf-8' }).trim();
51
+ if (status) {
52
+ console.error('\n❌ Le dépôt contient des modifications non committées.');
53
+ console.error('Commitez ou stash vos changements avant de créer un release.');
54
+ process.exit(1);
55
+ }
56
+ } catch {
57
+ console.log('⚠️ Impossible de vérifier l\'état git (pas un dépôt git ?)');
58
+ }
59
+
60
+ // Appliquer la nouvelle version
61
+ pkg.version = newVersion;
62
+ fs.writeFileSync(PACKAGE_PATH, JSON.stringify(pkg, null, 2) + '\n');
63
+ console.log(`\n✓ package.json mis à jour: ${newVersion}`);
64
+
65
+ // Exécuter les tests
66
+ console.log('\nExécution des tests...');
67
+ try {
68
+ execSync('npm test', { stdio: 'inherit' });
69
+ console.log('✓ Tests passés');
70
+ } catch (e) {
71
+ console.error('\n❌ Les tests ont échoué — annulation du release.');
72
+ // Rollback
73
+ pkg.version = currentVersion;
74
+ fs.writeFileSync(PACKAGE_PATH, JSON.stringify(pkg, null, 2) + '\n');
75
+ process.exit(1);
76
+ }
77
+
78
+ // Créer le tag git
79
+ const tagName = `v${newVersion}`;
80
+ console.log(`\nCréation du tag ${tagName}...`);
81
+
82
+ try {
83
+ execSync(`git add package.json CHANGELOG.md`, { stdio: 'inherit' });
84
+ execSync(`git commit -m "chore: release ${tagName}"`, { stdio: 'inherit' });
85
+ execSync(`git tag -a ${tagName} -m "Release ${tagName}"`, { stdio: 'inherit' });
86
+ console.log(`\n✓ Tag ${tagName} créé`);
87
+ console.log(`\nPoussez avec: git push && git push origin ${tagName}`);
88
+ console.log(`Le workflow GitHub Actions publiera automatiquement sur npm.`);
89
+ } catch (e) {
90
+ console.log('⚠️ Erreur git (normal si pas de repo git)');
91
+ }
92
+
93
+ console.log(`\n============================================`);
94
+ console.log(` Release ${tagName} prêt !`);
95
+ console.log(` Pusher le tag pour déclencher la publication:`);
96
+ console.log(` git push && git push origin ${tagName}`);
97
+ console.log(`============================================\n`);
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Script de vérification de l'intégrité des skills.
3
+ * Utilisé dans les tests CI pour s'assurer que tous les skills sont valides.
4
+ */
5
+
6
+ const fs = require('fs');
7
+ const path = require('path');
8
+
9
+ const SKILLS_DIR = path.join(__dirname, '..', 'skills');
10
+ const REQUIRED_SECTIONS = ['Triggers', 'Instructions', 'Règles', 'Sortie attendue', 'Sortie Attendue'];
11
+
12
+ let hasErrors = false;
13
+
14
+ function verifySkills() {
15
+ const skills = fs.readdirSync(SKILLS_DIR).filter(d =>
16
+ fs.statSync(path.join(SKILLS_DIR, d)).isDirectory()
17
+ );
18
+
19
+ console.log(`\nVérification de ${skills.length} skills...\n`);
20
+
21
+ skills.forEach(skill => {
22
+ const skillFile = path.join(SKILLS_DIR, skill, 'SKILL.md');
23
+
24
+ if (!fs.existsSync(skillFile)) {
25
+ console.error(` ❌ ${skill}: SKILL.md manquant`);
26
+ hasErrors = true;
27
+ return;
28
+ }
29
+
30
+ const content = fs.readFileSync(skillFile, 'utf-8');
31
+
32
+ // Vérifier la présence des sections requises (au moins une variante)
33
+ const missingSections = REQUIRED_SECTIONS.filter(section => {
34
+ // "Sortie attendue" et "Sortie Attendue" sont équivalents
35
+ if (section === 'Sortie attendue' || section === 'Sortie Attendue') {
36
+ return !content.includes('Sortie attendue') && !content.includes('Sortie Attendue');
37
+ }
38
+ return !content.includes(section);
39
+ });
40
+ if (missingSections.filter(s => s !== 'Sortie Attendue').length > 0) {
41
+ console.error(` ⚠️ ${skill}: sections manquantes: ${missingSections.filter(s => s !== 'Sortie Attendue').join(', ')}`);
42
+ hasErrors = true;
43
+ }
44
+
45
+ // Vérifier que le fichier n'est pas vide
46
+ if (content.trim().length < 50) {
47
+ console.error(` ❌ ${skill}: SKILL.md trop court (${content.trim().length} chars)`);
48
+ hasErrors = true;
49
+ return;
50
+ }
51
+
52
+ console.log(` ✅ ${skill} (${content.trim().length} chars)`);
53
+ });
54
+
55
+ // Vérifier les hooks
56
+ console.log('\nVérification des hooks...');
57
+ const hooksDir = path.join(__dirname, '..', 'hooks');
58
+ const hooks = fs.readdirSync(hooksDir).filter(f => f.endsWith('.js'));
59
+
60
+ hooks.forEach(hook => {
61
+ const hookPath = path.join(hooksDir, hook);
62
+ try {
63
+ require(hookPath);
64
+ console.log(` ✅ ${hook}`);
65
+ } catch (e) {
66
+ console.error(` ❌ ${hook}: ${e.message}`);
67
+ hasErrors = true;
68
+ }
69
+ });
70
+
71
+ // Résumé
72
+ console.log('');
73
+ if (hasErrors) {
74
+ console.error('❌ Vérification échouée — corrigez les erreurs avant de continuer.');
75
+ process.exit(1);
76
+ } else {
77
+ console.log('✅ Tous les skills et hooks sont valides.');
78
+ }
79
+ }
80
+
81
+ verifySkills();
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Script de gestion de version.
3
+ * Met à jour le CHANGELOG.md avec la date du jour et la nouvelle version.
4
+ * Exécuté automatiquement via npm version.
5
+ */
6
+
7
+ const fs = require('fs');
8
+ const path = require('path');
9
+
10
+ const CHANGELOG_PATH = path.join(__dirname, '..', 'CHANGELOG.md');
11
+ const PACKAGE_PATH = path.join(__dirname, '..', 'package.json');
12
+
13
+ function updateChangelog(version) {
14
+ let changelog = '';
15
+
16
+ if (fs.existsSync(CHANGELOG_PATH)) {
17
+ changelog = fs.readFileSync(CHANGELOG_PATH, 'utf-8');
18
+ }
19
+
20
+ const today = new Date().toISOString().split('T')[0];
21
+ const newSection = `## [${version}] - ${today}\n\n### Added\n- \n\n### Changed\n- \n\n### Fixed\n- \n\n`;
22
+
23
+ // Insérer après l'en-tête du changelog
24
+ const headerEnd = changelog.indexOf('\n\n## [');
25
+ if (headerEnd > 0) {
26
+ changelog = changelog.slice(0, headerEnd + 2) + newSection + changelog.slice(headerEnd + 2);
27
+ } else {
28
+ // Chercher juste après les lignes de description initiale
29
+ const descEnd = changelog.indexOf('\n\n## ');
30
+ if (descEnd > 0) {
31
+ changelog = changelog.slice(0, descEnd + 2) + newSection + changelog.slice(descEnd + 2);
32
+ } else {
33
+ changelog += '\n\n' + newSection;
34
+ }
35
+ }
36
+
37
+ fs.writeFileSync(CHANGELOG_PATH, changelog);
38
+ console.log(`CHANGELOG.md mis à jour pour la version ${version}`);
39
+ }
40
+
41
+ // Récupérer la version depuis package.json
42
+ const pkg = JSON.parse(fs.readFileSync(PACKAGE_PATH, 'utf-8'));
43
+ updateChangelog(pkg.version);
@@ -0,0 +1,94 @@
1
+ # Brainstorming
2
+
3
+ > Questionnement socratique pour affiner les idées avant de coder. Produire un document de design validé.
4
+
5
+ ## Triggers
6
+ - L'utilisateur exprime une idée vague ("je voudrais faire...", "ce serait bien si...")
7
+ - L'utilisateur demande une nouvelle fonctionnalité sans spécifications détaillées
8
+ - Le projet nécessite une décision architecturale
9
+ - L'agent détecte une ambiguïté dans la demande
10
+
11
+ ## Instructions
12
+
13
+ ### 1. Phase d'Exploration
14
+ Poser des questions ouvertes pour comprendre l'intention :
15
+ - **Quel est le problème** que tu cherches à résoudre ?
16
+ - **Qui** utilisera cette fonctionnalité ?
17
+ - **Quel est le cas d'usage principal** ? Et les cas limites ?
18
+ - **Y a-t-il des contraintes** techniques ou business ?
19
+
20
+ ### 2. Phase de Clarification
21
+ Approfondir avec des questions ciblées :
22
+ - "Que se passe-t-il si... ?" (cas limites)
23
+ - "Comment l'utilisateur interagit avec... ?" (UX)
24
+ - "Quelles sont les dépendances existantes ?" (architecture)
25
+ - "Est-ce que ça existe déjà sous une autre forme ?" (réutilisation)
26
+
27
+ ### 3. Phase de Convergence
28
+ Proposer une synthèse et valider :
29
+ - Résumer l'idée en 2-3 phrases
30
+ - Lister les composants/entités principaux
31
+ - Identifier les risques et complexités
32
+ - Proposer 2-3 approches avec trade-offs
33
+
34
+ ### 4. Production du Design Doc
35
+ Générer un document structuré sauvegardé dans `.qwen-designs/` :
36
+
37
+ ```markdown
38
+ # Design: [Nom de la feature]
39
+
40
+ ## Problème
41
+ [Description du problème résolu]
42
+
43
+ ## Solution Proposée
44
+ [Architecture et approche choisie]
45
+
46
+ ## Composants
47
+ - [Composant A]: [Rôle]
48
+ - [Composant B]: [Rôle]
49
+
50
+ ## API / Interface
51
+ [Signature des fonctions ou endpoints]
52
+
53
+ ## Cas Limites
54
+ - [Cas 1]: [Comportement]
55
+ - [Cas 2]: [Comportement]
56
+
57
+ ## Trade-offs
58
+ - [Choix X]: avantage/inconvénient
59
+ - [Choix Y]: avantage/inconvénient
60
+
61
+ ## Décisions
62
+ 1. [Décision 1] car [raison]
63
+ 2. [Décision 2] car [raison]
64
+ ```
65
+
66
+ ## Règles
67
+
68
+ 1. **Ne JAMAIS sauter directement au code** — le design d'abord
69
+ 2. **Poser au moins 3 questions** avant de proposer une solution
70
+ 3. **Toujours sauvegarder** le design doc dans `.qwen-designs/`
71
+ 4. **Proposer des alternatives** quand le choix n'est pas évident
72
+ 5. **Valider avec l'utilisateur** avant de passer à l'étape suivante
73
+
74
+ ## Sortie Attendue
75
+
76
+ - [ ] Au moins 3 questions posées à l'utilisateur
77
+ - [ ] Compréhension validée par l'utilisateur
78
+ - [ ] Design doc produit et sauvegardé
79
+ - [ ] Prochaine étape identifiée (writing-plans)
80
+
81
+ ## Exemple d'Utilisation
82
+
83
+ ```
84
+ Utilisateur: "Je voudrais un système de cache pour les requêtes API"
85
+
86
+ Agent (Brainstorming):
87
+ 1. "Quel type de requêtes API ? (GET uniquement ? avec paramètres ?)"
88
+ 2. "Combien de temps les données doivent-elles rester en cache ?"
89
+ 3. "Le cache doit-il être persistant (fichier/DB) ou en mémoire ?"
90
+ 4. "Y a-t-il des contraintes de mémoire à considérer ?"
91
+ 5. "Est-ce que invalidation manuelle est nécessaire ?"
92
+
93
+ → Après réponses → Production du Design Doc → Writing Plans
94
+ ```
@@ -0,0 +1,101 @@
1
+ # Code Review
2
+
3
+ > Comparer le code produit au plan initial et identifier les problèmes avant de merger.
4
+
5
+ ## Triggers
6
+ - Du code a été produit après exécution d'un plan
7
+ - L'utilisateur demande une revue de code
8
+ - Avant de merger une branche
9
+ - Après un refactoring significatif
10
+
11
+ ## Instructions
12
+
13
+ ### 1. Vérifier la Conformité au Plan
14
+ 1. Relire le plan d'exécution initial
15
+ 2. Comparer chaque tâche avec le code produit
16
+ 3. Vérifier que toutes les tâches sont implémentées
17
+ 4. Identifier les écarts (code manquant, code ajouté non planifié)
18
+
19
+ ### 2. Analyse Statique
20
+ Examiner le code pour :
21
+ - **Lisibilité** : noms de variables, structure, commentaires
22
+ - **Complexité** : fonctions trop longues, nesting excessif
23
+ - **Duplication** : code copié-collé, logique répétée
24
+ - **Architecture** : respect des responsabilités, couplage
25
+ - **Sécurité** : injections, données sensibles, validation
26
+
27
+ ### 3. Vérification des Tests
28
+ 1. Tous les tests passent-ils ?
29
+ 2. Les cas limites sont-ils couverts ?
30
+ 3. Les tests sont-ils lisibles et maintenables ?
31
+ 4. Y a-t-il des chemins non testés ?
32
+
33
+ ### 4. Rapport par Sévérité
34
+
35
+ ```markdown
36
+ # Rapport de Revue de Code
37
+
38
+ ## 🔴 Critical (Bloquant — empêche le merge)
39
+ - [ ] Problème 1: description + localisation + suggestion
40
+ - [ ] Problème 2: ...
41
+
42
+ ## 🟡 Warning (Devrait être corrigé)
43
+ - [ ] Problème 1: description + suggestion
44
+ - [ ] Problème 2: ...
45
+
46
+ ## 🟢 Suggestion (Optionnel)
47
+ - [ ] Problème 1: description + suggestion
48
+
49
+ ## ✅ Points Positifs
50
+ - Point fort 1
51
+ - Point fort 2
52
+
53
+ ## Résumé
54
+ - Critical: X | Warning: Y | Suggestions: Z
55
+ - Statut: 🔴 BLOQUÉ / 🟡 CONDITIONNEL / ✅ APPROUVÉ
56
+ ```
57
+
58
+ ## Règles
59
+
60
+ 1. **Critical = veto** — aucun merge si un problème critical existe
61
+ 2. **Être constructif** — toujours proposer une solution, pas juste critiquer
62
+ 3. **Vérifier contre le plan** — pas juste contre des standards généraux
63
+ 4. **Revue en 2 passes** : (1) conformité plan, (2) qualité code
64
+ 5. **Documenter les décisions** — pourquoi quelque chose est un problème
65
+
66
+ ## Sortie Attendue
67
+
68
+ - [ ] Rapport de revue complet avec sévérités
69
+ - [ ] Problèmes critical bloquent la progression
70
+ - [ ] Suggestions documentées
71
+ - [ ] Statut clair : BLOQUÉ / CONDITIONNEL / APPROUVÉ
72
+ - [ ] Si CONDITIONNEL : re-revue après corrections
73
+
74
+ ## Exemple d'Utilisation
75
+
76
+ ```markdown
77
+ # Rapport de Revue de Code
78
+
79
+ ## 🔴 Critical
80
+ - [ ] `cache.ts:15` — La méthode `get` ne vérifie pas l'expiration.
81
+ Un item expiré est retourné comme valide.
82
+ **Fix:** Vérifier `Date.now() < item.expiry` avant de retourner.
83
+
84
+ ## 🟡 Warning
85
+ - [ ] `cache.test.ts:22` — Pas de test pour l'éviction LRU.
86
+ **Fix:** Ajouter un test avec capacity=2 et 3 insertions.
87
+ - [ ] `cache.ts:8` — Le Map n'a pas de taille maximale.
88
+ **Fix:** Ajouter une option `maxSize` au constructeur.
89
+
90
+ ## 🟢 Suggestions
91
+ - [ ] Utiliser `Record` au lieu de `Map` si les clés sont toujours strings.
92
+
93
+ ## ✅ Points Positifs
94
+ - Architecture claire et bien séparée
95
+ - Tests complets pour les cas nominaux
96
+ - Bons noms de variables et fonctions
97
+
98
+ ## Résumé
99
+ - Critical: 1 | Warning: 2 | Suggestions: 1
100
+ - Statut: 🔴 BLOQUÉ — corriger l'expiration avant merge
101
+ ```
@@ -0,0 +1,71 @@
1
+ # Executing Plans
2
+
3
+ > Exécuter un plan d'exécution étape par étape en suivant le workflow TDD.
4
+
5
+ ## Triggers
6
+ - Un plan a été écrit et validé par l'utilisateur
7
+ - L'utilisateur donne le feu vert pour l'exécution
8
+ - L'agent est en mode développement actif
9
+
10
+ ## Instructions
11
+
12
+ ### 1. Préparer l'Environnement
13
+ 1. Vérifier que tous les tests existants passent
14
+ 2. Créer une branche de travail (ou worktree) si pas déjà fait
15
+ 3. Identifier le premier test en échec attendu (RED)
16
+
17
+ ### 2. Exécuter Chaque Tâche
18
+ Pour chaque tâche du plan :
19
+
20
+ 1. **Lire la description** de la tâche
21
+ 2. **Créer/modifier les fichiers** spécifiés
22
+ 3. **Si c'est un test** : s'assurer qu'il échoue initialement (RED)
23
+ 4. **Si c'est de l'implémentation** : écrire le minimum pour passer le test (GREEN)
24
+ 5. **Exécuter la vérification** spécifiée
25
+ 6. **Refactorer** si nécessaire (tests doivent rester verts)
26
+ 7. **Cocher la tâche** comme terminée
27
+
28
+ ### 3. Progression et Communication
29
+ - Annoncer le début de chaque tâche
30
+ - Montrer le résultat de la vérification
31
+ - Signaler immédiatement si une tâche bloque
32
+ - Mettre à jour la progression (X/Y tâches)
33
+
34
+ ### 4. Gestion des Blocages
35
+ Si une tâche est plus complexe que prévu :
36
+ 1. **NE PAS** improviser — revenir au plan
37
+ 2. Identifier pourquoi la tâche est sous-estimée
38
+ 3. Proposer un re-découpage si nécessaire
39
+ 4. Valider avec l'utilisateur avant de continuer
40
+
41
+ ## Règles
42
+
43
+ 1. **Suivre le plan à la lettre** — pas de déviation sans validation
44
+ 2. **TDD à chaque étape** — test d'abord, code ensuite
45
+ 3. **Vérifier après chaque tâche** — les tests doivent passer
46
+ 4. **Un commit par tâche** ou groupe logique de tâches
47
+ 5. **Signaler les blocages** immédiatement
48
+
49
+ ## Sortie Attendue
50
+
51
+ - [ ] Toutes les tâches du plan exécutées
52
+ - [ ] Tous les tests passent
53
+ - [ ] Code commité incrémentalement
54
+ - [ ] Prêt pour la code review
55
+
56
+ ## Exemple de Progression
57
+
58
+ ```
59
+ 📋 Exécution du Plan: Système de Cache API
60
+ Progression: 2/6 tâches
61
+
62
+ ✅ Tâche 1: Test - Cache create/empty
63
+ → Test écrit, échoue initialement (RED) ✅
64
+
65
+ ✅ Tâche 2: Implémenter Cache class
66
+ → Classe Cache créée, test passe (GREEN) ✅
67
+ → Commit: "feat: implement Cache class with size()"
68
+
69
+ 🔄 Tâche 3: Test - Cache set/get
70
+ → En cours...
71
+ ```
@@ -0,0 +1,105 @@
1
+ # Git Worktrees
2
+
3
+ > Créer un environnement de travail isolé pour développer une feature sans perturber la branche principale.
4
+
5
+ ## Triggers
6
+ - L'utilisateur demande de commencer à travailler sur une feature
7
+ - Le début d'un cycle de développement (après brainstorming)
8
+ - Quand plusieurs features doivent être développées en parallèle
9
+
10
+ ## Instructions
11
+
12
+ ### 1. Vérifier l'État du Dépôt
13
+ 1. Vérifier que le dépôt est propre (`git status`)
14
+ 2. S'assurer que la branche principale est à jour
15
+ 3. Vérifier qu'aucun worktree n'existe déjà pour cette feature
16
+
17
+ ### 2. Créer le Worktree
18
+ ```bash
19
+ # Créer une nouvelle branche et un worktree associé
20
+ git worktree add ../<projet>-<feature-name> -b feature/<feature-name>
21
+
22
+ # Se déplacer dans le worktree
23
+ cd ../<projet>-<feature-name>
24
+ ```
25
+
26
+ ### 3. Setup Initial
27
+ 1. Installer les dépendances (`npm install` ou équivalent)
28
+ 2. Vérifier que les tests passent sur la branche fraîche
29
+ 3. Configurer les hooks Git si nécessaires
30
+
31
+ ### 4. Travailler dans le Worktree
32
+ - Tout le développement de la feature se fait dans ce worktree
33
+ - La branche principale reste inchangée
34
+ - On peut ouvrir un éditeur séparé pour ce worktree
35
+
36
+ ### 5. Nettoyage (Finalization)
37
+ Après merge de la feature :
38
+ ```bash
39
+ # Supprimer le worktree
40
+ git worktree remove ../<projet>-<feature-name>
41
+
42
+ # Supprimer la branche si mergée
43
+ git branch -d feature/<feature-name>
44
+ ```
45
+
46
+ ## Règles
47
+
48
+ 1. **Un worktree par feature** — isolation stricte
49
+ 2. **Jamais de travail direct sur main/master** — toujours une branche
50
+ 3. **Vérifier les tests avant de commencer** — baseline propre requise
51
+ 4. **Nettoyer après merge** — supprimer worktrees et branches inutiles
52
+ 5. **Nommage cohérent** — `feature/nom-court-descriptif`
53
+
54
+ ## Commandes Utiles
55
+
56
+ ```bash
57
+ # Lister les worktrees
58
+ git worktree list
59
+
60
+ # Ajouter un worktree
61
+ git worktree add <path> -b <branch-name>
62
+
63
+ # Supprimer un worktree
64
+ git worktree remove <path>
65
+
66
+ # Forcer la suppression (si probleme)
67
+ git worktree remove <path> --force
68
+
69
+ # Nettoyer les worktrees manquants
70
+ git worktree prune
71
+ ```
72
+
73
+ ## Sortie Attendue
74
+
75
+ - [ ] Branche créée et checkout
76
+ - [ ] Worktree configuré
77
+ - [ ] Dépendances installées
78
+ - [ ] Tests de base passent (baseline propre)
79
+ - [ ] Prêt à écrire le plan
80
+
81
+ ## Exemple d'Utilisation
82
+
83
+ ```
84
+ 🌳 Git Worktree Setup
85
+
86
+ Feature: systeme-cache-api
87
+
88
+ 1. Vérification de l'état du dépôt...
89
+ ✓ Dépôt propre
90
+ ✓ Branche main à jour
91
+
92
+ 2. Création du worktree...
93
+ $ git worktree add ../monprojet-cache -b feature/systeme-cache
94
+ ✓ Worktree créé
95
+
96
+ 3. Setup...
97
+ $ npm install
98
+ ✓ Dépendances installées
99
+
100
+ 4. Vérification des tests...
101
+ $ npm test
102
+ ✓ 42 tests passent (baseline propre)
103
+
104
+ ✅ Prêt pour le plan d'exécution
105
+ ```
@@ -0,0 +1,109 @@
1
+ # Subagent-Driven Development
2
+
3
+ > Dispatch les tâches du plan à des sous-agents frais avec revue en deux étapes pour un développement autonome et fiable.
4
+
5
+ ## Triggers
6
+ - Un plan avec des tâches parallélisables a été validé
7
+ - L'utilisateur accepte le développement par sous-agents
8
+ - Plus de 3 tâches dans le plan et certaines sont indépendantes
9
+
10
+ ## Instructions
11
+
12
+ ### 1. Préparer le Dispatch
13
+ 1. Identifier les tâches indépendantes (peuvent être faites en parallle)
14
+ 2. Grouper les tâches dépendantes en séquences
15
+ 3. Pour chaque groupe, préparer un **contexte d'agent** :
16
+ - Le design doc
17
+ - Le plan complet
18
+ - La/les tâches spécifiques à exécuter
19
+ - Les conventions du projet
20
+
21
+ ### 2. Dispatcher un Sous-Agent
22
+ Pour chaque tâche ou groupe :
23
+
24
+ ```
25
+ PROMPT TYPE pour sous-agent :
26
+
27
+ ---
28
+ CONTEXTE:
29
+ - Design Doc: [contenu ou référence]
30
+ - Plan: [contenu ou référence]
31
+
32
+ TÂCHE ASSIGNÉE:
33
+ [Tâche N: description, fichiers, snippets attendus]
34
+
35
+ RÈGLES:
36
+ 1. TDD strict — test d'abord
37
+ 2. Suivre le plan exactement
38
+ 3. Vérifier avec la commande spécifiée
39
+ 4. Retourner le code produit + résultat des tests
40
+
41
+ SORTIE ATTENDUE:
42
+ - Code complet des fichiers modifiés/créés
43
+ - Résultat de la vérification
44
+ - Notes ou problèmes rencontrés
45
+ ---
46
+ ```
47
+
48
+ ### 3. Revue en Deux Étapes
49
+
50
+ #### Étape 1: Revue de Conformité
51
+ - Le code suit-il le plan exactement ?
52
+ - Toutes les tâches assignées sont-elles faites ?
53
+ - Les tests spécifi passent-ils ?
54
+ - **Si NON** → Renvoyer au sous-agent avec feedback
55
+
56
+ #### Étape 2: Revue de Qualité
57
+ - Appliquer le skill `code-review`
58
+ - Vérifier lisibilité, complexité, duplication
59
+ - **Si problèmes** → Demander corrections
60
+
61
+ ### 4. Continuer ou Corriger
62
+ - Si les 2 revues passent → merger le code
63
+ - Si échec → corriger ou réassigner
64
+ - Progression mise à jour après chaque tâche
65
+
66
+ ## Règles
67
+
68
+ 1. **Contexte frais** — chaque sous-agent reçoit un contexte propre
69
+ 2. **Toujours 2 revues** — conformité + qualité
70
+ 3. **Plan = contrat** — le sous-agent ne dévie pas du plan
71
+ 4. **Feedback constructif** — expliquer pourquoi ça ne va pas
72
+ 5. **Progression visible** — toujours montrer X/Y tâches faites
73
+
74
+ ## Sortie Attendue
75
+
76
+ - [ ] Sous-agents dispatchés avec contexte complet
77
+ - [ ] Chaque sortie revue (conformité + qualité)
78
+ - [ ] Tâches mergées ou retournées pour correction
79
+ - [ ] Progression mise à jour
80
+ - [ ] Prêt pour l'étape suivante du workflow
81
+
82
+ ## Exemple d'Utilisation
83
+
84
+ ```
85
+ 🤖 Subagent-Driven Development
86
+
87
+ Plan: Système de Cache API (6 tâches)
88
+
89
+ 📦 Dispatch:
90
+ Groupe A (parallèle): Tâches 1, 2, 3 → Agent Alpha
91
+ Groupe B (parallèle): Tâches 4, 5 → Agent Beta
92
+ Séquentiel: Tâche 6 → Principal (dépend de A et B)
93
+
94
+ 🔄 Agent Alpha — Tâches 1-3:
95
+ Revue Conformité: ✅ OK
96
+ Revue Qualité: 🟡 1 warning (test LRU manquant)
97
+ → Correction demandée → ✅ OK après
98
+
99
+ 🔄 Agent Beta — Tâches 4-5:
100
+ Revue Conformité: ✅ OK
101
+ Revue Qualité: ✅ OK
102
+
103
+ 🔄 Principal — Tâche 6:
104
+ (après merging A et B)
105
+ ✅ Terminé
106
+
107
+ Progression: 6/6 tâches ✅
108
+ → Prêt pour Code Review globale
109
+ ```