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.
- package/AGENTS.md +106 -0
- package/CHANGELOG.md +30 -0
- package/LICENSE +21 -0
- package/README.md +257 -0
- package/cli/index.js +335 -0
- package/hooks/post-execute.js +103 -0
- package/hooks/pre-execute.js +106 -0
- package/package.json +65 -0
- package/scripts/install.js +71 -0
- package/scripts/release.js +97 -0
- package/scripts/verify-skills.js +81 -0
- package/scripts/version.js +43 -0
- package/skills/brainstorming/SKILL.md +94 -0
- package/skills/code-review/SKILL.md +101 -0
- package/skills/executing-plans/SKILL.md +71 -0
- package/skills/git-worktrees/SKILL.md +105 -0
- package/skills/subagent-driven-development/SKILL.md +109 -0
- package/skills/systematic-debugging/SKILL.md +74 -0
- package/skills/test-driven-development/SKILL.md +88 -0
- package/skills/verification-before-completion/SKILL.md +109 -0
- package/skills/writing-plans/SKILL.md +101 -0
- package/skills/writing-skills/SKILL.md +112 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Systematic Debugging
|
|
2
|
+
|
|
3
|
+
> Approche méthodique en 4 phases pour identifier et résoudre les bugs sans deviner.
|
|
4
|
+
|
|
5
|
+
## Triggers
|
|
6
|
+
- Un test échoue
|
|
7
|
+
- Un bug est rapporté par l'utilisateur
|
|
8
|
+
- Un comportement inattendu est observé
|
|
9
|
+
- L'agent est tenté de "deviner" la cause d'un problème
|
|
10
|
+
|
|
11
|
+
## Instructions
|
|
12
|
+
|
|
13
|
+
### Phase 1 : Comprendre le Symptôme
|
|
14
|
+
1. Reproduire le bug de manière consistante
|
|
15
|
+
2. Noter le comportement attendu vs comportement observé
|
|
16
|
+
3. Identifier les conditions exactes du bug (input, environnement, timing)
|
|
17
|
+
4. **NE PAS** encore chercher la cause — juste décrire le symptôme
|
|
18
|
+
|
|
19
|
+
### Phase 2 : Isoler la Cause Racine
|
|
20
|
+
1. Réduire le scope au minimum (plus petit exemple qui reproduit)
|
|
21
|
+
2. Utiliser une approche dichotomique (couper le problème en deux)
|
|
22
|
+
3. Vérifier les hypothèses une par une (pas de suppositions)
|
|
23
|
+
4. Ajouter des logs/assertions pour confirmer chaque étape
|
|
24
|
+
|
|
25
|
+
### Phase 3 : Corriger
|
|
26
|
+
1. Identifier le changement minimal qui corrige le bug
|
|
27
|
+
2. Écrire un test qui reproduit le bug (il doit échouer)
|
|
28
|
+
3. Appliquer la correction
|
|
29
|
+
4. Vérifier que le test passe maintenant (GREEN)
|
|
30
|
+
|
|
31
|
+
### Phase 4 : Prévenir la Régession
|
|
32
|
+
1. Ajouter le test au suite permanente
|
|
33
|
+
2. Vérifier que les tests existants passent toujours
|
|
34
|
+
3. Documenter le bug et sa cause si nécessaire
|
|
35
|
+
4. Chercher des patterns similaires dans le codebase
|
|
36
|
+
|
|
37
|
+
## Règles
|
|
38
|
+
|
|
39
|
+
1. **Jamais de correction sans test** — le bug doit être reproduit par un test
|
|
40
|
+
2. **Une hypothèse à la fois** — ne pas changer plusieurs choses simultanément
|
|
41
|
+
3. **Minimal reproducible** — toujours réduire au plus petit exemple
|
|
42
|
+
4. **Comprendre avant d'agir** — identifier la cause racine, pas le symptôme
|
|
43
|
+
5. **Vérifier après correction** — relancer toute la suite de tests
|
|
44
|
+
|
|
45
|
+
## Sortie Attendue
|
|
46
|
+
|
|
47
|
+
Après un debugging complet :
|
|
48
|
+
- [ ] Symptôme documenté (attendu vs observé)
|
|
49
|
+
- [ ] Cause racine identifiée et expliquée
|
|
50
|
+
- [ ] Test de régression écrit (échouait avant, passe après)
|
|
51
|
+
- [ ] Correction appliquée (changement minimal)
|
|
52
|
+
- [ ] Tous les tests passent
|
|
53
|
+
- [ ] Recherche de patterns similaires effectuée
|
|
54
|
+
|
|
55
|
+
## Exemple d'Utilisation
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
// Phase 1: Symptôme
|
|
59
|
+
// "La fonction calculateTotal retourne NaN quand le panier a 1 item à prix 0"
|
|
60
|
+
|
|
61
|
+
// Phase 2: Isolation
|
|
62
|
+
// Plus petit repro: calculateTotal([{price: 0, qty: 1}]) → NaN
|
|
63
|
+
// Cause: la fonction fait items.reduce((sum, i) => sum + i.price * i.qty)
|
|
64
|
+
// mais ne gère pas le cas où price = 0 avec qty = 1
|
|
65
|
+
|
|
66
|
+
// Phase 3: Correction + Test
|
|
67
|
+
it('should handle items with price 0', () => {
|
|
68
|
+
expect(calculateTotal([{price: 0, qty: 1}])).toBe(0);
|
|
69
|
+
});
|
|
70
|
+
// → Échoue → Appliquer correction → Passe ✅
|
|
71
|
+
|
|
72
|
+
// Phase 4: Prévention
|
|
73
|
+
// Vérifier qu'aucune autre fonction n'a le même pattern
|
|
74
|
+
```
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Test-Driven Development (TDD)
|
|
2
|
+
|
|
3
|
+
> Écrire les tests AVANT le code de production. Cycle strict : RED → GREEN → REFACTOR.
|
|
4
|
+
|
|
5
|
+
## Triggers
|
|
6
|
+
- Toute demande de développement de fonctionnalité ou de correction
|
|
7
|
+
- Quand l'agent s'apprête à écrire du code de production
|
|
8
|
+
- Quand `.qwen-powers.json` a `settings.tddEnforced: true`
|
|
9
|
+
|
|
10
|
+
## Instructions
|
|
11
|
+
|
|
12
|
+
### 1. Cycle RED-GREEN-REFACTOR (OBLIGATOIRE)
|
|
13
|
+
|
|
14
|
+
#### 🔴 RED — Écrire un test qui échoue
|
|
15
|
+
1. Identifier le comportement attendu
|
|
16
|
+
2. Écrire un test unitaire qui valide ce comportement
|
|
17
|
+
3. Le test DOIT échouer initialement (vérifier que le test n'est pas trivial)
|
|
18
|
+
4. Exécuter le test pour confirmer l'échec
|
|
19
|
+
|
|
20
|
+
#### 🟢 GREEN — Faire passer le test
|
|
21
|
+
1. Écrire le **minimum de code** pour faire passer le test
|
|
22
|
+
2. Ne pas ajouter de logique non testée
|
|
23
|
+
3. Exécuter tous les tests pour confirmer que tout passe
|
|
24
|
+
4. Si un test échoue, corriger avant de continuer
|
|
25
|
+
|
|
26
|
+
#### 🔵 REFACTOR — Améliorer sans casser
|
|
27
|
+
1. Simplifier le code tout en gardant les tests verts
|
|
28
|
+
2. Réduire la duplication, améliorer la lisibilité
|
|
29
|
+
3. Exécuter les tests après chaque micro-changement
|
|
30
|
+
4. Commiter uniquement si tous les tests passent
|
|
31
|
+
|
|
32
|
+
### 2. Règle Anti-Pattern
|
|
33
|
+
- **SUPPRIMER** tout code de production écrit avant son test
|
|
34
|
+
- Ne JAMAIS écrire "juste un petit bout de code pour voir"
|
|
35
|
+
- Ne JAMAAS commettre de code avec des tests qui échouent
|
|
36
|
+
|
|
37
|
+
## Règles
|
|
38
|
+
|
|
39
|
+
1. **Le test vient TOUJOURS en premier** — sans exception
|
|
40
|
+
2. **Un seul test à la fois** — ne pas écrire plusieurs tests avant le code
|
|
41
|
+
3. **Minimum de code** — écrire juste assez de code pour passer le test
|
|
42
|
+
4. **Tests verts = obligatoire** — aucun commit si un test échoue
|
|
43
|
+
5. **Refactorer avec filet** — jamais de refactoring sans tests verts
|
|
44
|
+
|
|
45
|
+
## Anti-Patterns à Éviter
|
|
46
|
+
|
|
47
|
+
| Anti-Pattern | Description | Correction |
|
|
48
|
+
|--------------|-------------|------------|
|
|
49
|
+
| Code avant test | Écrire la fonction avant le test | Supprimer et recommencer par le test |
|
|
50
|
+
| Tests multiples | Écrire 3 tests avant tout code | Un test → code → suivant |
|
|
51
|
+
| Gold plating | Ajouter des fonctionnalités non testées | Supprimer ou écrire un test d'abord |
|
|
52
|
+
| Commit rouge | Committer avec des tests qui échouent | Interdit — corriger d'abord |
|
|
53
|
+
| Test après coup | Écrire le test après le code "pour couvrir" | Recommmencer par le test |
|
|
54
|
+
|
|
55
|
+
## Sortie Attendue
|
|
56
|
+
|
|
57
|
+
Après chaque cycle TDD complet :
|
|
58
|
+
- [ ] Test écrit et documenté
|
|
59
|
+
- [ ] Test passe (GREEN)
|
|
60
|
+
- [ ] Code refactorisé si nécessaire
|
|
61
|
+
- [ ] Tous les tests du projet passent
|
|
62
|
+
- [ ] Commit avec message descriptif
|
|
63
|
+
|
|
64
|
+
## Exemple d'Utilisation
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
// 1. RED — Test qui échoue
|
|
68
|
+
describe('calculateTotal', () => {
|
|
69
|
+
it('should return 0 for empty cart', () => {
|
|
70
|
+
expect(calculateTotal([])).toBe(0);
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
// → Exécuter → Échec (fonction n'existe pas) ✅
|
|
74
|
+
|
|
75
|
+
// 2. GREEN — Minimum de code
|
|
76
|
+
function calculateTotal(items) {
|
|
77
|
+
return items.length === 0 ? 0 : null;
|
|
78
|
+
}
|
|
79
|
+
// → Exécuter → Succès ✅
|
|
80
|
+
|
|
81
|
+
// 3. REFACTOR — Améliorer
|
|
82
|
+
function calculateTotal(items) {
|
|
83
|
+
if (!items || items.length === 0) return 0;
|
|
84
|
+
// ... suite du logic
|
|
85
|
+
}
|
|
86
|
+
// → Exécuter → Succès ✅
|
|
87
|
+
// → Commit ✅
|
|
88
|
+
```
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Verification Before Completion
|
|
2
|
+
|
|
3
|
+
> Ne jamais marquer une tâche comme terminée sans vérification systématique.
|
|
4
|
+
|
|
5
|
+
## Triggers
|
|
6
|
+
- L'agent s'apprête à dire "c'est fini" ou "task complete"
|
|
7
|
+
- Toutes les tâches d'un plan ont été exécutées
|
|
8
|
+
- Avant un commit ou un merge
|
|
9
|
+
- L'utilisateur demande "est-ce que c'est terminé ?"
|
|
10
|
+
|
|
11
|
+
## Instructions
|
|
12
|
+
|
|
13
|
+
### 1. Vérification des Tests
|
|
14
|
+
```bash
|
|
15
|
+
# Exécuter toute la suite de tests
|
|
16
|
+
npm test
|
|
17
|
+
|
|
18
|
+
# Ou le framework spécifique au projet
|
|
19
|
+
# pytest, make test, etc.
|
|
20
|
+
```
|
|
21
|
+
- [ ] **TOUS** les tests passent (pas seulement les nouveaux)
|
|
22
|
+
- [ ] Pas de tests ignorés/skipped sans raison valable
|
|
23
|
+
- [ ] Coverage n'a pas diminué (si outils de coverage)
|
|
24
|
+
|
|
25
|
+
### 2. Vérification du Linting
|
|
26
|
+
```bash
|
|
27
|
+
npm run lint
|
|
28
|
+
# ou l'équivalent du projet
|
|
29
|
+
```
|
|
30
|
+
- [ ] Pas d'erreurs de lint
|
|
31
|
+
- [ ] Pas de warnings critiques
|
|
32
|
+
- [ ] Formatage correct (prettier, black, etc.)
|
|
33
|
+
|
|
34
|
+
### 3. Vérification du Build
|
|
35
|
+
```bash
|
|
36
|
+
npm run build
|
|
37
|
+
# ou compilation du projet
|
|
38
|
+
```
|
|
39
|
+
- [ ] Le build passe sans erreurs
|
|
40
|
+
- [ ] Pas de warnings de dépréciation critiques
|
|
41
|
+
- [ ] Les types sont corrects (TypeScript, etc.)
|
|
42
|
+
|
|
43
|
+
### 4. Vérification du Plan
|
|
44
|
+
- [ ] Toutes les tâches du plan sont cochées
|
|
45
|
+
- [ ] Le code produit correspond au plan
|
|
46
|
+
- [ ] Pas de fonctionnalité oubliée ou partiellement implémentée
|
|
47
|
+
|
|
48
|
+
### 5. Vérification Git
|
|
49
|
+
```bash
|
|
50
|
+
git status
|
|
51
|
+
git diff --stat
|
|
52
|
+
```
|
|
53
|
+
- [ ] Tous les fichiers modifiés sont identifiés
|
|
54
|
+
- [ ] Pas de fichiers temporaires ou de debug
|
|
55
|
+
- [ ] Le message de commit est descriptif
|
|
56
|
+
|
|
57
|
+
## Règles
|
|
58
|
+
|
|
59
|
+
1. **TOUJOURS tout vérifier** — pas de raccourci
|
|
60
|
+
2. **Tests = preuve唯一** — "ça devrait marcher" n'est pas acceptable
|
|
61
|
+
3. **Linting obligatoire** — le code doit être propre
|
|
62
|
+
3. **Build = non-négociable** — pas de completion si le build échoue
|
|
63
|
+
4. **Plan = référence** — tout ce qui est dans le plan doit être fait
|
|
64
|
+
|
|
65
|
+
## Sortie Attendue
|
|
66
|
+
|
|
67
|
+
```markdown
|
|
68
|
+
✅ Vérification Before Completion
|
|
69
|
+
|
|
70
|
+
Tests: ✅ 47/47 passent
|
|
71
|
+
Lint: ✅ Aucune erreur
|
|
72
|
+
Build: ✅ Succès
|
|
73
|
+
Plan: ✅ 6/6 tâches complétées
|
|
74
|
+
Git: ✅ 3 fichiers modifiés, 0 temporaire
|
|
75
|
+
|
|
76
|
+
🎉 TÂCHE TERMINÉE — Prêt pour l'étape suivante
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Si Quelque Chose Échoue
|
|
80
|
+
|
|
81
|
+
```markdown
|
|
82
|
+
❌ Vérification Before Completion — BLOQUÉ
|
|
83
|
+
|
|
84
|
+
Tests: ❌ 2 échecs
|
|
85
|
+
- `cache.test.ts:45` — expected 0 but received undefined
|
|
86
|
+
- `cache.test.ts:52` — timeout after 5000ms
|
|
87
|
+
|
|
88
|
+
Lint: ✅ Aucune erreur
|
|
89
|
+
Build: ✅ Succès
|
|
90
|
+
Plan: ✅ 6/6 tâches complétées
|
|
91
|
+
|
|
92
|
+
🔧 Action requise: corriger les tests échoués avant de continuer.
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Exemple d'Utilisation
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
L'agent: "J'ai terminé l'implémentation du cache."
|
|
99
|
+
|
|
100
|
+
→ Trigger automatique: Verification Before Completion
|
|
101
|
+
|
|
102
|
+
1. $ npm test → 47/47 ✅
|
|
103
|
+
2. $ npm run lint → Clean ✅
|
|
104
|
+
3. $ npm run build → Success ✅
|
|
105
|
+
4. Vérification plan → 6/6 tasks ✅
|
|
106
|
+
5. $ git status → 3 fichiers modifiés ✅
|
|
107
|
+
|
|
108
|
+
✅ TOUT EST VÉRIFIÉ — La tâche est réellement terminée.
|
|
109
|
+
```
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# Writing Plans
|
|
2
|
+
|
|
3
|
+
> Découper le travail en tâches de 2-5 minutes avec chemins exacts, snippets de code et étapes de vérification.
|
|
4
|
+
|
|
5
|
+
## Triggers
|
|
6
|
+
- Un design doc a été validé par l'utilisateur
|
|
7
|
+
- L'utilisateur demande de planifier un travail
|
|
8
|
+
- L'agent a compris le scope et est prêt à détailler l'exécution
|
|
9
|
+
|
|
10
|
+
## Instructions
|
|
11
|
+
|
|
12
|
+
### 1. Analyser le Design Doc
|
|
13
|
+
- Identifier les composants/entités principaux
|
|
14
|
+
- Lister les dépendances entre les composants
|
|
15
|
+
- Déterminer l'ordre d'implémentation (TDD : tests d'abord)
|
|
16
|
+
|
|
17
|
+
### 2. Découper en Tâches Atomiques
|
|
18
|
+
Chaque tâche DOIT :
|
|
19
|
+
- Être réalisable en **2-5 minutes**
|
|
20
|
+
- Avoir un **résultat vérifiable** clair
|
|
21
|
+
- Spécifier le **chemin exact** du fichier à créer/modifier
|
|
22
|
+
- Inclure un **snippet de départ** si pertinent
|
|
23
|
+
- Définir les **tests de vérification**
|
|
24
|
+
|
|
25
|
+
### 3. Formater le Plan
|
|
26
|
+
|
|
27
|
+
```markdown
|
|
28
|
+
# Plan d'Exécution: [Nom]
|
|
29
|
+
|
|
30
|
+
## Tâche 1: [Nom de la tâche]
|
|
31
|
+
- **Fichier(s):** `src/path/to/file.ts`
|
|
32
|
+
- **Type:** Test / Implementation / Refactor
|
|
33
|
+
- **Description:** Ce qui doit être fait
|
|
34
|
+
- **Snippet de départ:**
|
|
35
|
+
```typescript
|
|
36
|
+
// code initial
|
|
37
|
+
```
|
|
38
|
+
- **Vérification:** `npm test -- --grep "nom du test"`
|
|
39
|
+
- **Dépendances:** Aucune (ou tâche X)
|
|
40
|
+
|
|
41
|
+
## Tâche 2: [Nom de la tâche]
|
|
42
|
+
...
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### 4. Ordonnancer
|
|
46
|
+
- Les tests AVANT l'implémentation (TDD)
|
|
47
|
+
- Les dépendances avant les dépendants
|
|
48
|
+
- Les tâches parallélisables identifiées pour subagent dispatch
|
|
49
|
+
|
|
50
|
+
## Règles
|
|
51
|
+
|
|
52
|
+
1. **Granularité fine** — 2-5 minutes max par tâche
|
|
53
|
+
2. **Chemins exacts** — pas de "un fichier quelques part"
|
|
54
|
+
3. **Vérification explicite** — comment savoir que c'est fini
|
|
55
|
+
4. **Ordre TDD** — tests avant implementation
|
|
56
|
+
5. **Identifier le parallélisme** — quelles tâches peuvent être dispatchées
|
|
57
|
+
|
|
58
|
+
## Sortie Attendue
|
|
59
|
+
|
|
60
|
+
- [ ] Plan complet avec toutes les tâches
|
|
61
|
+
- [ ] Chaque tâche a un fichier, description, snippet et vérification
|
|
62
|
+
- [ ] Ordre d'exécution défini
|
|
63
|
+
- [ ] Tâches parallélisables identifiées
|
|
64
|
+
- [ ] Plan validé par l'utilisateur
|
|
65
|
+
|
|
66
|
+
## Exemple d'Utilisation
|
|
67
|
+
|
|
68
|
+
```markdown
|
|
69
|
+
# Plan: Système de Cache API
|
|
70
|
+
|
|
71
|
+
## Tâche 1: Test - Cache create/empty
|
|
72
|
+
- **Fichier:** `src/cache/__tests__/cache.test.ts`
|
|
73
|
+
- **Type:** Test
|
|
74
|
+
- **Description:** Tester que new Cache() est vide
|
|
75
|
+
- **Snippet:**
|
|
76
|
+
```typescript
|
|
77
|
+
import { Cache } from '../cache';
|
|
78
|
+
describe('Cache', () => {
|
|
79
|
+
it('should be empty when created', () => {
|
|
80
|
+
const cache = new Cache();
|
|
81
|
+
expect(cache.size()).toBe(0);
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
```
|
|
85
|
+
- **Vérification:** `npm test -- --grep "empty when created"`
|
|
86
|
+
- **Dépendances:** Aucune
|
|
87
|
+
|
|
88
|
+
## Tâche 2: Implémenter Cache class
|
|
89
|
+
- **Fichier:** `src/cache/cache.ts`
|
|
90
|
+
- **Type:** Implementation
|
|
91
|
+
- **Description:** Classe Cache avec Map interne
|
|
92
|
+
- **Snippet:**
|
|
93
|
+
```typescript
|
|
94
|
+
export class Cache {
|
|
95
|
+
private store = new Map<string, any>();
|
|
96
|
+
size(): number { return this.store.size; }
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
- **Vérification:** Test de la tâche 1 passe
|
|
100
|
+
- **Dépendances:** Tâche 1
|
|
101
|
+
```
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# Writing Skills
|
|
2
|
+
|
|
3
|
+
> Comment créer, tester et documenter un nouveau skill pour Qwen Superpowers.
|
|
4
|
+
|
|
5
|
+
## Triggers
|
|
6
|
+
- L'utilisateur veut créer un nouveau skill
|
|
7
|
+
- L'agent identifie un comportement réutilisable qui mérite un skill
|
|
8
|
+
- Amélioration ou extension de la librairie de skills
|
|
9
|
+
|
|
10
|
+
## Instructions
|
|
11
|
+
|
|
12
|
+
### 1. Identifier le Besoin
|
|
13
|
+
- Quel comportement ou processus veut-on standardiser ?
|
|
14
|
+
- Quand ce skill doit-il être déclenché ?
|
|
15
|
+
- Qu'est-ce qui le distingue des skills existants ?
|
|
16
|
+
|
|
17
|
+
### 2. Créer la Structure
|
|
18
|
+
```
|
|
19
|
+
skills/<nom-du-skill>/
|
|
20
|
+
├── SKILL.md # Description, triggers, instructions, règles
|
|
21
|
+
├── examples/ # (optionnel) Exemples d'utilisation
|
|
22
|
+
└── tests/ # (optionnel) Tests de validation du skill
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Utiliser la CLI : `qwen-powers create <nom-du-skill>`
|
|
26
|
+
|
|
27
|
+
### 3. Rédiger le SKILL.md
|
|
28
|
+
|
|
29
|
+
```markdown
|
|
30
|
+
# [Nom du Skill]
|
|
31
|
+
|
|
32
|
+
> Description en une phrase.
|
|
33
|
+
|
|
34
|
+
## Triggers
|
|
35
|
+
- Quand utiliser ce skill ?
|
|
36
|
+
- Quels motifs ou contextes déclenchent ce skill ?
|
|
37
|
+
|
|
38
|
+
## Instructions
|
|
39
|
+
1. Étape 1 — description détaillée
|
|
40
|
+
2. Étape 2 — description détaillée
|
|
41
|
+
3. Étape 3 — description détaillée
|
|
42
|
+
|
|
43
|
+
## Règles
|
|
44
|
+
- Règle 1 — non-négociable
|
|
45
|
+
- Règle 2 — importante
|
|
46
|
+
- Règle 3 — recommandée
|
|
47
|
+
|
|
48
|
+
## Sortie attendue
|
|
49
|
+
- [ ] Élément vérifiable 1
|
|
50
|
+
- [ ] Élément vérifiable 2
|
|
51
|
+
- [ ] Élément vérifiable 3
|
|
52
|
+
|
|
53
|
+
## Exemple d'utilisation
|
|
54
|
+
\`\`\`
|
|
55
|
+
Exemple concret avec entrée et sortie attendues.
|
|
56
|
+
\`\`\`
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### 4. Tester le Skill
|
|
60
|
+
1. Activer le skill: `qwen-powers enable <nom>`
|
|
61
|
+
2. Demander à l'agent de l'utiliser dans un scénario réel
|
|
62
|
+
3. Vérifier que les sorties sont conformes
|
|
63
|
+
4. Ajuster les instructions si nécessaire
|
|
64
|
+
|
|
65
|
+
### 5. Documenter
|
|
66
|
+
- Ajouter des exemples dans `examples/`
|
|
67
|
+
- Documenter les cas limites connus
|
|
68
|
+
- Lister les dépendances vers d'autres skills
|
|
69
|
+
|
|
70
|
+
## Règles
|
|
71
|
+
|
|
72
|
+
1. **Un skill = une responsabilité** — pas de skill fourre-tout
|
|
73
|
+
2. **Triggers explicites** — quand exactement ce skill doit s'activer
|
|
74
|
+
3. **Instructions actionnables** — étapes concrètes, pas de théorie
|
|
75
|
+
4. **Sortie vérifiable** — on doit pouvoir vérifier si le skill a bien été exécuté
|
|
76
|
+
5. **Compatible TDD** — si le skill touche au code, il doit respecter le TDD
|
|
77
|
+
|
|
78
|
+
## Sortie Attendue
|
|
79
|
+
|
|
80
|
+
- [ ] SKILL.md complet avec toutes les sections
|
|
81
|
+
- [ ] Triggers clairs et détectables
|
|
82
|
+
- [ ] Instructions étape par étape
|
|
83
|
+
- [ ] Règles non-négociables listées
|
|
84
|
+
- [ ] Sortie vérifiable définie
|
|
85
|
+
- [ ] Exemple d'utilisation documenté
|
|
86
|
+
|
|
87
|
+
## Exemple : Création du Skill "API-Design"
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
$ qwen-powers create api-design
|
|
91
|
+
✓ Skill 'api-design' créé dans: skills/api-design
|
|
92
|
+
|
|
93
|
+
# Puis éditer skills/api-design/SKILL.md avec le contenu approprié
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
```markdown
|
|
97
|
+
# API Design
|
|
98
|
+
|
|
99
|
+
> Concevoir des APIs RESTful cohérentes et documentées.
|
|
100
|
+
|
|
101
|
+
## Triggers
|
|
102
|
+
- L'utilisateur demande de créer une nouvelle API
|
|
103
|
+
- Refactoring d'une API existante
|
|
104
|
+
- Discussion sur les endpoints ou le contrat API
|
|
105
|
+
|
|
106
|
+
## Instructions
|
|
107
|
+
1. Identifier les ressources et leurs relations
|
|
108
|
+
2. Définir les endpoints (GET, POST, PUT, DELETE)
|
|
109
|
+
3. Spécifier les schemas d'entrée/sortie
|
|
110
|
+
4. Documenter les codes de réponse HTTP
|
|
111
|
+
...
|
|
112
|
+
```
|