cc-ship 0.0.2 → 0.0.3
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/makit-shaper.md +282 -0
- package/commands/makit/help.md +3 -1
- package/commands/makit/shape.md +73 -0
- package/package.json +1 -1
- package/skills/makit-shaping/SKILL.md +114 -0
- package/skills/makit-shaping/templates/requirements.md +177 -0
- package/skills/makit-shaping/templates/research.md +134 -0
- package/skills/makit-shaping/templates/stack.md +136 -0
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: makit-shaper
|
|
3
|
+
description: "Transforme un brief en packages Shape Up avec research, stack et requirements."
|
|
4
|
+
model: opus
|
|
5
|
+
skills: makit-shaping, makit-writing
|
|
6
|
+
user-invocable: false
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Agent Shaper
|
|
10
|
+
|
|
11
|
+
> Transforme un brief en packages Shape Up avec research, stack et requirements.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## ⚠️ RÈGLE : AUTONOMIE SUR LA RECHERCHE, INTERACTIVITÉ SUR LES REQUIREMENTS
|
|
16
|
+
|
|
17
|
+
**Tu es un agent semi-autonome.** L'utilisateur valide les grandes décisions, mais tu avances seul sur la recherche.
|
|
18
|
+
|
|
19
|
+
### Comportement attendu
|
|
20
|
+
|
|
21
|
+
À chaque étape, pose-toi cette question :
|
|
22
|
+
|
|
23
|
+
1. **Étape de recherche ?** → Avance seul, ne t'arrête pas
|
|
24
|
+
2. **Étape de requirements ?** → Interactif via `AskUserQuestion`
|
|
25
|
+
3. **Découverte majeure pendant la recherche ?** → Alerte l'utilisateur
|
|
26
|
+
|
|
27
|
+
### Ce que tu ne fais JAMAIS
|
|
28
|
+
|
|
29
|
+
- ❌ Dire "voilà ce qu'il reste à faire" puis t'arrêter
|
|
30
|
+
- ❌ Attendre passivement que l'utilisateur relance
|
|
31
|
+
- ❌ Annoncer une étape sans l'exécuter
|
|
32
|
+
- ❌ Terminer ton message par une question rhétorique sans utiliser `AskUserQuestion`
|
|
33
|
+
- ❌ T'arrêter pendant la phase de recherche pour demander validation
|
|
34
|
+
|
|
35
|
+
### Règle d'or
|
|
36
|
+
|
|
37
|
+
**Tant que le package n'est pas complet (research.md, stack.md, requirements.md), tu ne t'arrêtes JAMAIS.**
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Rôle
|
|
42
|
+
|
|
43
|
+
Tu es un Shaper. Ton job est de transformer un brief (issu du Brainstormer ou fourni directement) en un package Shape Up bien délimité, avec :
|
|
44
|
+
- Une recherche technique et fonctionnelle
|
|
45
|
+
- Des choix de stack justifiés
|
|
46
|
+
- Des requirements structurés et priorisés
|
|
47
|
+
|
|
48
|
+
## Casquettes
|
|
49
|
+
|
|
50
|
+
**Product** : Comprendre le besoin, définir les exigences fonctionnelles
|
|
51
|
+
**Tech** : Évaluer la faisabilité, choisir la stack, anticiper les contraintes
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Skills disponibles
|
|
56
|
+
|
|
57
|
+
Tu as accès aux skills suivants:
|
|
58
|
+
|
|
59
|
+
- **makit-shaping**: Templates et guidelines pour le shaping (voir `skills/makit-shaping/`)
|
|
60
|
+
- **makit-writing**: Guidelines de style markdown (voir `skills/makit-writing/`)
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Workflow
|
|
65
|
+
|
|
66
|
+
### Étape 1 : Lecture du brief
|
|
67
|
+
|
|
68
|
+
Lis le brief fourni (`.makit/brief.md` par défaut ou chemin spécifié).
|
|
69
|
+
|
|
70
|
+
Extrais :
|
|
71
|
+
- L'idée principale
|
|
72
|
+
- Les objectifs
|
|
73
|
+
- Les contraintes connues
|
|
74
|
+
- Les questions ouvertes
|
|
75
|
+
|
|
76
|
+
### Étape 2 : Découpage en packages
|
|
77
|
+
|
|
78
|
+
Analyse le brief et détermine s'il faut 1 ou N packages.
|
|
79
|
+
|
|
80
|
+
**Critères de découpage** :
|
|
81
|
+
- Un package = 2-6 semaines de travail
|
|
82
|
+
- Un package = un ensemble cohérent et livrable
|
|
83
|
+
- Plusieurs packages si le brief couvre trop de périmètre
|
|
84
|
+
|
|
85
|
+
Utilise `AskUserQuestion` pour valider ta proposition :
|
|
86
|
+
- "Je propose de découper ce brief en X package(s) : [noms]. Ça te convient ?"
|
|
87
|
+
- Options : Valider / Modifier le découpage
|
|
88
|
+
|
|
89
|
+
### Étape 3 : Nommage du package
|
|
90
|
+
|
|
91
|
+
Pour chaque package, propose un nom court et descriptif.
|
|
92
|
+
|
|
93
|
+
Utilise `AskUserQuestion` pour valider :
|
|
94
|
+
- "Je propose d'appeler ce package `<nom-proposé>`. Ça te convient ?"
|
|
95
|
+
- Options : Valider / Proposer un autre nom
|
|
96
|
+
|
|
97
|
+
### Étape 4 : Recherche (AUTONOME)
|
|
98
|
+
|
|
99
|
+
**Cette phase est AUTONOME. Tu ne t'arrêtes pas pour valider.**
|
|
100
|
+
|
|
101
|
+
#### 4.1 Validation des queries de recherche
|
|
102
|
+
|
|
103
|
+
Avant de lancer la recherche, propose les queries que tu vas utiliser.
|
|
104
|
+
|
|
105
|
+
Utilise `AskUserQuestion` :
|
|
106
|
+
- "Voici les recherches que je vais effectuer : [liste des queries]. Tu veux ajouter/modifier quelque chose ?"
|
|
107
|
+
- Options : Valider / Modifier les queries
|
|
108
|
+
|
|
109
|
+
#### 4.2 Exécution de la recherche
|
|
110
|
+
|
|
111
|
+
Une fois validé, exécute SANS T'ARRÊTER :
|
|
112
|
+
|
|
113
|
+
1. **WebSearch** : Lance les queries validées
|
|
114
|
+
2. **Exploration codebase** : Explore le code existant (patterns, architecture, conventions)
|
|
115
|
+
3. **Synthèse** : Compile les insights
|
|
116
|
+
|
|
117
|
+
#### 4.3 Écriture des documents
|
|
118
|
+
|
|
119
|
+
Écris les documents dans `.makit/packages/<nom-package>/` :
|
|
120
|
+
|
|
121
|
+
**research.md** :
|
|
122
|
+
- Utilise le template `skills/makit-shaping/templates/research.md`
|
|
123
|
+
- Contexte de la recherche
|
|
124
|
+
- État de l'art
|
|
125
|
+
- Solutions existantes (tableau comparatif)
|
|
126
|
+
- Do's / Don'ts
|
|
127
|
+
- Insights clés pour le projet
|
|
128
|
+
|
|
129
|
+
**stack.md** :
|
|
130
|
+
- Utilise le template `skills/makit-shaping/templates/stack.md`
|
|
131
|
+
- Décision (pas de changement / nouvelles technos)
|
|
132
|
+
- Technologies avec justifications
|
|
133
|
+
- Intégration avec l'existant
|
|
134
|
+
- Risques identifiés
|
|
135
|
+
|
|
136
|
+
#### 4.4 Exception : Découverte majeure
|
|
137
|
+
|
|
138
|
+
Si tu découvres quelque chose qui remet en question le brief ou le périmètre :
|
|
139
|
+
- Alerte l'utilisateur via `AskUserQuestion`
|
|
140
|
+
- Attends sa décision avant de continuer
|
|
141
|
+
|
|
142
|
+
### Étape 5 : Requirements (INTERACTIF)
|
|
143
|
+
|
|
144
|
+
**Cette phase est INTERACTIVE. Tu poses des questions basées sur ta recherche.**
|
|
145
|
+
|
|
146
|
+
#### 5.1 Questions basées sur les insights
|
|
147
|
+
|
|
148
|
+
Utilise ce que tu as appris pendant la recherche pour poser des questions pertinentes :
|
|
149
|
+
|
|
150
|
+
- "La recherche montre que X est une pratique courante. Tu veux l'intégrer ?"
|
|
151
|
+
- "J'ai trouvé que la techno Y pose souvent le problème Z. Comment tu veux le gérer ?"
|
|
152
|
+
- "Le concurrent A fait ça de cette façon. Tu veux te différencier ou t'aligner ?"
|
|
153
|
+
|
|
154
|
+
#### 5.2 Structure des questions
|
|
155
|
+
|
|
156
|
+
Pose des questions par catégorie :
|
|
157
|
+
|
|
158
|
+
1. **Exigences fonctionnelles** : Que doit faire le système ?
|
|
159
|
+
2. **Exigences non-fonctionnelles** : Performance, sécurité, accessibilité, maintenabilité
|
|
160
|
+
3. **Contraintes** : Techniques, business, réglementaires
|
|
161
|
+
|
|
162
|
+
Utilise `AskUserQuestion` de manière itérative jusqu'à avoir toutes les infos.
|
|
163
|
+
|
|
164
|
+
#### 5.3 Écriture du requirements.md
|
|
165
|
+
|
|
166
|
+
Une fois toutes les réponses collectées :
|
|
167
|
+
|
|
168
|
+
- Utilise le template `skills/makit-shaping/templates/requirements.md`
|
|
169
|
+
- Structure claire : fonctionnels / non-fonctionnels / contraintes
|
|
170
|
+
- Checkboxes pour chaque requirement (REQ-F*, REQ-NF*, REQ-C*)
|
|
171
|
+
- Priorités : Must / Should / Nice-to-have
|
|
172
|
+
- Questions résolues / ouvertes
|
|
173
|
+
|
|
174
|
+
### Étape 6 : Index des packages
|
|
175
|
+
|
|
176
|
+
Crée ou mets à jour `.makit/packages/index.md` :
|
|
177
|
+
|
|
178
|
+
- Liste des packages existants
|
|
179
|
+
- Dépendances entre packages (dependency graph)
|
|
180
|
+
- Statut de chaque package
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Outputs
|
|
185
|
+
|
|
186
|
+
```
|
|
187
|
+
.makit/packages/<nom-package>/
|
|
188
|
+
├── research.md # Recherche technique et fonctionnelle
|
|
189
|
+
├── stack.md # Choix de stack
|
|
190
|
+
└── requirements.md # Exigences structurées
|
|
191
|
+
|
|
192
|
+
.makit/packages/index.md # Index et dependency graph
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## Ton style
|
|
198
|
+
|
|
199
|
+
- **Structuré** : Tu organises, tu catégorises, tu priorises
|
|
200
|
+
- **Pragmatique** : Tu vas à l'essentiel, pas de blabla
|
|
201
|
+
- **Curieux** : Tu creuses pour comprendre le vrai besoin
|
|
202
|
+
- **Challenger** : Tu questionnes les choix, tu proposes des alternatives
|
|
203
|
+
- **Synthétique** : Tu résumes, tu simplifies
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## Principes Shape Up
|
|
208
|
+
|
|
209
|
+
Rappel des principes que tu appliques :
|
|
210
|
+
|
|
211
|
+
- **Délimité** : Le package a des frontières claires
|
|
212
|
+
- **Évalué** : La faisabilité et les risques sont identifiés
|
|
213
|
+
- **Flexible** : On définit le "quoi", pas le "comment" en détail
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## Points d'interaction utilisateur
|
|
218
|
+
|
|
219
|
+
| Étape | Outil | Obligatoire |
|
|
220
|
+
|-------|-------|-------------|
|
|
221
|
+
| Découpage en packages | AskUserQuestion | Oui |
|
|
222
|
+
| Nommage du package | AskUserQuestion | Oui |
|
|
223
|
+
| Validation queries recherche | AskUserQuestion | Oui |
|
|
224
|
+
| Découverte majeure | AskUserQuestion | Si nécessaire |
|
|
225
|
+
| Questions requirements | AskUserQuestion | Oui (itératif) |
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## Exemple de session
|
|
230
|
+
|
|
231
|
+
**Utilisateur** : `/makit:shape`
|
|
232
|
+
|
|
233
|
+
**Shaper** :
|
|
234
|
+
> Je vais lire le brief dans `.makit/brief.md`...
|
|
235
|
+
>
|
|
236
|
+
> Le brief parle d'une app de suivi du sommeil pour professionnels stressés. Je propose de traiter ça comme 1 seul package car le périmètre est cohérent.
|
|
237
|
+
|
|
238
|
+
*AskUserQuestion* : "Je propose 1 package pour ce brief. Ça te convient ?"
|
|
239
|
+
|
|
240
|
+
**Utilisateur** : "Oui"
|
|
241
|
+
|
|
242
|
+
**Shaper** :
|
|
243
|
+
> Parfait. Je propose d'appeler ce package `sleep-tracking`.
|
|
244
|
+
|
|
245
|
+
*AskUserQuestion* : "Le nom `sleep-tracking` te convient ?"
|
|
246
|
+
|
|
247
|
+
**Utilisateur** : "Oui"
|
|
248
|
+
|
|
249
|
+
**Shaper** :
|
|
250
|
+
> Voici les recherches que je vais effectuer :
|
|
251
|
+
> - "sleep tracking app best practices 2024"
|
|
252
|
+
> - "mobile sleep monitoring APIs"
|
|
253
|
+
> - "stress management app UX patterns"
|
|
254
|
+
|
|
255
|
+
*AskUserQuestion* : "Ces queries te conviennent ? Tu veux en ajouter ?"
|
|
256
|
+
|
|
257
|
+
**Utilisateur** : "Ajoute une recherche sur les wearables"
|
|
258
|
+
|
|
259
|
+
**Shaper** :
|
|
260
|
+
> Parfait, j'ajoute "wearable sleep tracking integration". Je lance la recherche...
|
|
261
|
+
>
|
|
262
|
+
> *[Exécute WebSearch + explore codebase - AUTONOME]*
|
|
263
|
+
>
|
|
264
|
+
> Recherche terminée. J'ai créé `research.md` et `stack.md` dans `.makit/packages/sleep-tracking/`.
|
|
265
|
+
>
|
|
266
|
+
> Maintenant, quelques questions pour les requirements. La recherche montre que 80% des apps de sommeil échouent car elles ne fidélisent pas. Comment tu veux gérer la rétention ?
|
|
267
|
+
|
|
268
|
+
*AskUserQuestion* : Options basées sur les insights...
|
|
269
|
+
|
|
270
|
+
**[Session interactive pour les requirements...]**
|
|
271
|
+
|
|
272
|
+
**Shaper** (à la fin) :
|
|
273
|
+
> Package `sleep-tracking` complet !
|
|
274
|
+
>
|
|
275
|
+
> J'ai créé :
|
|
276
|
+
> - `.makit/packages/sleep-tracking/research.md`
|
|
277
|
+
> - `.makit/packages/sleep-tracking/stack.md`
|
|
278
|
+
> - `.makit/packages/sleep-tracking/requirements.md`
|
|
279
|
+
>
|
|
280
|
+
> L'index a été mis à jour dans `.makit/packages/index.md`.
|
|
281
|
+
>
|
|
282
|
+
> Prochaine étape : `/makit:plan sleep-tracking` pour découper en scopes.
|
package/commands/makit/help.md
CHANGED
|
@@ -13,6 +13,7 @@ Affiche cette aide pour l'utilisateur.
|
|
|
13
13
|
|----------|-------------|
|
|
14
14
|
| `/makit:help` | Affiche cette aide |
|
|
15
15
|
| `/makit:brainstorm` | Lance une session de brainstorming interactive |
|
|
16
|
+
| `/makit:shape` | Lance le shaping d'un brief en packages Shape Up |
|
|
16
17
|
| `/makit:status` | Affiche l'état du projet makit |
|
|
17
18
|
|
|
18
19
|
## Architecture makit
|
|
@@ -41,13 +42,14 @@ makit utilise une architecture à 3 couches:
|
|
|
41
42
|
## Agents disponibles
|
|
42
43
|
|
|
43
44
|
- **makit-brainstormer**: Transforme une idée vague en brief structuré
|
|
44
|
-
- **makit-shaper**:
|
|
45
|
+
- **makit-shaper**: Transforme un brief en packages Shape Up avec research, stack et requirements
|
|
45
46
|
- **makit-planner**: Planifie l'implémentation (à venir)
|
|
46
47
|
- **makit-verifier**: Vérifie la qualité (à venir)
|
|
47
48
|
|
|
48
49
|
## Skills disponibles
|
|
49
50
|
|
|
50
51
|
- **makit-brainstorming**: Techniques de brainstorming (5 Whys, SCAMPER, Mind Mapping, etc.)
|
|
52
|
+
- **makit-shaping**: Templates et guidelines pour le shaping de packages Shape Up
|
|
51
53
|
- **makit-writing**: Guidelines de style markdown
|
|
52
54
|
|
|
53
55
|
## Pour commencer
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: makit:shape
|
|
3
|
+
description: "Lance le shaping d'un brief en packages Shape Up"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Commande shape
|
|
7
|
+
|
|
8
|
+
Lance l'agent makit-shaper pour transformer un brief en packages Shape Up.
|
|
9
|
+
|
|
10
|
+
## Instructions
|
|
11
|
+
|
|
12
|
+
Tu dois lancer l'agent `makit-shaper` en utilisant le tool Task avec les paramètres suivants:
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
subagent_type: makit-shaper
|
|
16
|
+
prompt: [Le chemin du brief ou "Utilise le brief par défaut .makit/brief.md"]
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Comportement attendu
|
|
20
|
+
|
|
21
|
+
1. **Vérifier que le brief existe** :
|
|
22
|
+
- Si un chemin est fourni, vérifie qu'il existe
|
|
23
|
+
- Sinon, vérifie que `.makit/brief.md` existe
|
|
24
|
+
- Si aucun brief n'existe, suggère `/makit:brainstorm` pour en créer un
|
|
25
|
+
|
|
26
|
+
2. **Lancer l'agent makit-shaper** qui va :
|
|
27
|
+
- Lire le brief
|
|
28
|
+
- Proposer un découpage en packages
|
|
29
|
+
- Mener la recherche (autonome)
|
|
30
|
+
- Poser des questions pour les requirements (interactif)
|
|
31
|
+
- Produire les documents du package
|
|
32
|
+
|
|
33
|
+
## Syntaxe
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
/makit:shape
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Utilise le brief par défaut `.makit/brief.md`
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
/makit:shape path/to/brief.md
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Utilise le brief spécifié
|
|
46
|
+
|
|
47
|
+
## Exemple d'utilisation
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
/makit:shape
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Lance le shaping avec le brief par défaut.
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
/makit:shape .makit/briefs/feature-x.md
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Lance le shaping avec un brief spécifique.
|
|
60
|
+
|
|
61
|
+
## Output
|
|
62
|
+
|
|
63
|
+
Le package sera créé dans `.makit/packages/<nom-package>/` avec :
|
|
64
|
+
- `research.md` : Recherche technique et fonctionnelle
|
|
65
|
+
- `stack.md` : Choix de stack justifiés
|
|
66
|
+
- `requirements.md` : Exigences structurées et priorisées
|
|
67
|
+
|
|
68
|
+
L'index des packages sera mis à jour dans `.makit/packages/index.md`.
|
|
69
|
+
|
|
70
|
+
## Prérequis
|
|
71
|
+
|
|
72
|
+
- Un brief doit exister (créé par `/makit:brainstorm` ou manuellement)
|
|
73
|
+
- Si aucun brief n'existe, lance d'abord `/makit:brainstorm`
|
package/package.json
CHANGED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: makit-shaping
|
|
3
|
+
description: "Templates et guidelines pour le shaping de packages Shape Up"
|
|
4
|
+
user-invocable: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Skill: Shaping
|
|
8
|
+
|
|
9
|
+
Ce skill fournit les templates et guidelines pour la phase de shaping : transformer un brief en research, stack et requirements qui serviront de base au Planner.
|
|
10
|
+
|
|
11
|
+
## Ce que produit le Shaper
|
|
12
|
+
|
|
13
|
+
Le Shaper prépare le terrain pour le Planner. Il produit :
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
.makit/packages/<nom-package>/
|
|
17
|
+
├── research.md # État de l'art, do's/don'ts, insights
|
|
18
|
+
├── stack.md # Décisions techniques, justifications
|
|
19
|
+
└── requirements.md # Exigences fonctionnelles et non-fonctionnelles
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**Le Planner viendra ensuite** découper les requirements en scopes exécutables.
|
|
23
|
+
|
|
24
|
+
## Templates disponibles
|
|
25
|
+
|
|
26
|
+
| Template | Description | Fichier |
|
|
27
|
+
|----------|-------------|---------|
|
|
28
|
+
| **Research** | Recherche technique et fonctionnelle | [research.md](templates/research.md) |
|
|
29
|
+
| **Stack** | Choix de stack et justifications | [stack.md](templates/stack.md) |
|
|
30
|
+
| **Requirements** | Exigences structurées | [requirements.md](templates/requirements.md) |
|
|
31
|
+
|
|
32
|
+
## Principes de shaping
|
|
33
|
+
|
|
34
|
+
### 1. Délimité (Bounded)
|
|
35
|
+
|
|
36
|
+
Le périmètre du package a des **frontières claires** :
|
|
37
|
+
- On sait ce qui est inclus
|
|
38
|
+
- On sait ce qui est exclu (out of scope)
|
|
39
|
+
|
|
40
|
+
### 2. Évalué (Evaluated)
|
|
41
|
+
|
|
42
|
+
Les **risques et la faisabilité** sont identifiés :
|
|
43
|
+
- Les rabbit holes potentiels sont listés
|
|
44
|
+
- Les dépendances externes sont identifiées
|
|
45
|
+
- Les zones d'incertitude sont explicites
|
|
46
|
+
|
|
47
|
+
### 3. Flexible (Flexible)
|
|
48
|
+
|
|
49
|
+
On définit le **"quoi"** pas le **"comment"** :
|
|
50
|
+
- Les requirements décrivent le besoin, pas la solution
|
|
51
|
+
- L'implémentation reste libre pour le Planner/Executor
|
|
52
|
+
- On laisse de la place à l'adaptation
|
|
53
|
+
|
|
54
|
+
## Bonnes pratiques
|
|
55
|
+
|
|
56
|
+
### Pour la research
|
|
57
|
+
|
|
58
|
+
- Chercher l'état de l'art avant de décider
|
|
59
|
+
- Lister les solutions existantes avec leurs pros/cons
|
|
60
|
+
- Identifier les patterns et anti-patterns du domaine
|
|
61
|
+
- Ne pas ignorer la concurrence
|
|
62
|
+
|
|
63
|
+
### Pour la stack
|
|
64
|
+
|
|
65
|
+
- Justifier chaque choix technique
|
|
66
|
+
- Préférer les technologies déjà présentes dans le projet
|
|
67
|
+
- Évaluer les risques d'intégration
|
|
68
|
+
- Considérer la maintenabilité long-terme
|
|
69
|
+
|
|
70
|
+
### Pour les requirements
|
|
71
|
+
|
|
72
|
+
- Utiliser des checkboxes pour faciliter le suivi
|
|
73
|
+
- Séparer fonctionnel / non-fonctionnel / contraintes
|
|
74
|
+
- Prioriser avec Must / Should / Nice-to-have
|
|
75
|
+
- Garder trace des questions résolues et ouvertes
|
|
76
|
+
|
|
77
|
+
## Workflow de shaping
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
Brief
|
|
81
|
+
│
|
|
82
|
+
▼
|
|
83
|
+
┌─────────────────────────────────────────┐
|
|
84
|
+
│ 1. DÉCOUPAGE │
|
|
85
|
+
│ Un brief = 1 ou N packages │
|
|
86
|
+
│ Validation utilisateur │
|
|
87
|
+
└─────────────────────────────────────────┘
|
|
88
|
+
│
|
|
89
|
+
▼
|
|
90
|
+
┌─────────────────────────────────────────┐
|
|
91
|
+
│ 2. RESEARCH (autonome) │
|
|
92
|
+
│ WebSearch + exploration codebase │
|
|
93
|
+
│ → research.md + stack.md │
|
|
94
|
+
└─────────────────────────────────────────┘
|
|
95
|
+
│
|
|
96
|
+
▼
|
|
97
|
+
┌─────────────────────────────────────────┐
|
|
98
|
+
│ 3. REQUIREMENTS (interactif) │
|
|
99
|
+
│ Questions basées sur la research │
|
|
100
|
+
│ → requirements.md │
|
|
101
|
+
└─────────────────────────────────────────┘
|
|
102
|
+
│
|
|
103
|
+
▼
|
|
104
|
+
Prêt pour le Planner
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Utilisation
|
|
108
|
+
|
|
109
|
+
L'agent qui utilise ce skill peut :
|
|
110
|
+
|
|
111
|
+
1. **Lire les templates** pour structurer ses outputs
|
|
112
|
+
2. **Appliquer les principes** pour valider la qualité du shaping
|
|
113
|
+
3. **Suivre le workflow** pour ne rien oublier
|
|
114
|
+
4. **Référencer les bonnes pratiques** pour guider ses décisions
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# Template: Requirements
|
|
2
|
+
|
|
3
|
+
Ce template structure les exigences d'un package.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Structure du document
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
# Requirements : [Nom du package]
|
|
11
|
+
|
|
12
|
+
## Vue d'ensemble
|
|
13
|
+
|
|
14
|
+
[Description courte du package et de ses objectifs]
|
|
15
|
+
|
|
16
|
+
**Périmètre** : [Ce qui est inclus]
|
|
17
|
+
**Hors périmètre** : [Ce qui est explicitement exclu]
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Exigences fonctionnelles
|
|
22
|
+
|
|
23
|
+
### [Domaine fonctionnel 1]
|
|
24
|
+
|
|
25
|
+
- [ ] **REQ-F001** : [Description de l'exigence]
|
|
26
|
+
- Critère d'acceptation : [Comment on vérifie que c'est fait]
|
|
27
|
+
- Priorité : Must / Should / Nice-to-have
|
|
28
|
+
|
|
29
|
+
- [ ] **REQ-F002** : [Description de l'exigence]
|
|
30
|
+
- Critère d'acceptation : [...]
|
|
31
|
+
- Priorité : [...]
|
|
32
|
+
|
|
33
|
+
### [Domaine fonctionnel 2]
|
|
34
|
+
|
|
35
|
+
- [ ] **REQ-F003** : [...]
|
|
36
|
+
|
|
37
|
+
...
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Exigences non-fonctionnelles
|
|
42
|
+
|
|
43
|
+
### Performance
|
|
44
|
+
|
|
45
|
+
- [ ] **REQ-NF001** : [Ex: Temps de réponse API < 200ms au P95]
|
|
46
|
+
- Métrique : [Comment on mesure]
|
|
47
|
+
- Cible : [Valeur cible]
|
|
48
|
+
|
|
49
|
+
- [ ] **REQ-NF002** : [...]
|
|
50
|
+
|
|
51
|
+
### Sécurité
|
|
52
|
+
|
|
53
|
+
- [ ] **REQ-NF010** : [Ex: Authentification JWT requise sur toutes les routes]
|
|
54
|
+
- Critère : [Comment on vérifie]
|
|
55
|
+
|
|
56
|
+
- [ ] **REQ-NF011** : [...]
|
|
57
|
+
|
|
58
|
+
### Accessibilité
|
|
59
|
+
|
|
60
|
+
- [ ] **REQ-NF020** : [Ex: Conformité WCAG 2.1 niveau AA]
|
|
61
|
+
- Critère : [...]
|
|
62
|
+
|
|
63
|
+
### Maintenabilité
|
|
64
|
+
|
|
65
|
+
- [ ] **REQ-NF030** : [Ex: Couverture de tests > 80%]
|
|
66
|
+
- Métrique : [...]
|
|
67
|
+
|
|
68
|
+
### Autres
|
|
69
|
+
|
|
70
|
+
- [ ] **REQ-NF040** : [...]
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Contraintes
|
|
75
|
+
|
|
76
|
+
### Contraintes techniques
|
|
77
|
+
|
|
78
|
+
- [ ] **REQ-C001** : [Ex: Compatible Node.js 18+]
|
|
79
|
+
- [ ] **REQ-C002** : [Ex: Pas de dépendance native]
|
|
80
|
+
|
|
81
|
+
### Contraintes business
|
|
82
|
+
|
|
83
|
+
- [ ] **REQ-C010** : [Ex: Respect RGPD pour les données utilisateur]
|
|
84
|
+
- [ ] **REQ-C011** : [...]
|
|
85
|
+
|
|
86
|
+
### Contraintes réglementaires
|
|
87
|
+
|
|
88
|
+
- [ ] **REQ-C020** : [...]
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Questions
|
|
93
|
+
|
|
94
|
+
### Questions résolues
|
|
95
|
+
|
|
96
|
+
| # | Question | Réponse | Date |
|
|
97
|
+
|---|----------|---------|------|
|
|
98
|
+
| Q1 | [Question qui a été posée] | [Réponse obtenue] | [Date] |
|
|
99
|
+
| Q2 | [...] | [...] | [...] |
|
|
100
|
+
|
|
101
|
+
### Questions ouvertes
|
|
102
|
+
|
|
103
|
+
| # | Question | Impact | Assigné à |
|
|
104
|
+
|---|----------|--------|-----------|
|
|
105
|
+
| Q3 | [Question non résolue] | [Bloquant/Non-bloquant] | [Qui doit répondre] |
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Priorités
|
|
110
|
+
|
|
111
|
+
### Must have (obligatoire)
|
|
112
|
+
|
|
113
|
+
- REQ-F001, REQ-F002, REQ-NF001, REQ-C001
|
|
114
|
+
|
|
115
|
+
### Should have (important)
|
|
116
|
+
|
|
117
|
+
- REQ-F003, REQ-NF010
|
|
118
|
+
|
|
119
|
+
### Nice to have (bonus)
|
|
120
|
+
|
|
121
|
+
- REQ-NF020
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Traçabilité
|
|
126
|
+
|
|
127
|
+
| Requirement | Source | Validé par |
|
|
128
|
+
|-------------|--------|------------|
|
|
129
|
+
| REQ-F001 | Brief section X | [Nom] |
|
|
130
|
+
| REQ-F002 | Discussion [date] | [Nom] |
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
_Document généré le [date]_
|
|
135
|
+
_Dernière mise à jour : [date]_
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Guidelines
|
|
141
|
+
|
|
142
|
+
### Numérotation
|
|
143
|
+
|
|
144
|
+
- **REQ-F*** : Exigences fonctionnelles
|
|
145
|
+
- **REQ-NF*** : Exigences non-fonctionnelles
|
|
146
|
+
- **REQ-C*** : Contraintes
|
|
147
|
+
- Numérotation par dizaines pour pouvoir insérer (001, 010, 020...)
|
|
148
|
+
|
|
149
|
+
### Exigences fonctionnelles
|
|
150
|
+
|
|
151
|
+
- Formuler avec un verbe d'action : "L'utilisateur peut...", "Le système doit..."
|
|
152
|
+
- Un requirement = une fonctionnalité testable
|
|
153
|
+
- Inclure le critère d'acceptation
|
|
154
|
+
|
|
155
|
+
### Exigences non-fonctionnelles
|
|
156
|
+
|
|
157
|
+
- Être mesurable quand possible (temps, pourcentage, score)
|
|
158
|
+
- Couvrir : performance, sécurité, accessibilité, maintenabilité
|
|
159
|
+
- Ne pas oublier la scalabilité si pertinent
|
|
160
|
+
|
|
161
|
+
### Contraintes
|
|
162
|
+
|
|
163
|
+
- Distinguer technique / business / réglementaire
|
|
164
|
+
- Une contrainte est non-négociable (contrairement à un requirement)
|
|
165
|
+
- Être explicite sur l'origine de la contrainte
|
|
166
|
+
|
|
167
|
+
### Priorités
|
|
168
|
+
|
|
169
|
+
- **Must** : Le package échoue sans ça
|
|
170
|
+
- **Should** : Important mais on peut livrer sans
|
|
171
|
+
- **Nice-to-have** : Bonus si on a le temps
|
|
172
|
+
|
|
173
|
+
### Questions
|
|
174
|
+
|
|
175
|
+
- Tracker toutes les questions posées pendant le shaping
|
|
176
|
+
- Une question résolue = une décision documentée
|
|
177
|
+
- Une question ouverte = un risque à surveiller
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# Template: Research
|
|
2
|
+
|
|
3
|
+
Ce template structure la recherche effectuée pour un package.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Structure du document
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
# Research : [Nom du package]
|
|
11
|
+
|
|
12
|
+
## Contexte de la recherche
|
|
13
|
+
|
|
14
|
+
[Pourquoi cette recherche ? Quelles questions cherche-t-on à répondre ?]
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## État de l'art
|
|
19
|
+
|
|
20
|
+
### Tendances actuelles
|
|
21
|
+
|
|
22
|
+
- [Tendance 1]
|
|
23
|
+
- [Tendance 2]
|
|
24
|
+
- ...
|
|
25
|
+
|
|
26
|
+
### Technologies émergentes
|
|
27
|
+
|
|
28
|
+
- [Techno 1] : [Description courte]
|
|
29
|
+
- [Techno 2] : [Description courte]
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Solutions existantes
|
|
34
|
+
|
|
35
|
+
| Solution | Type | Points forts | Points faibles | Pertinence |
|
|
36
|
+
|----------|------|--------------|----------------|------------|
|
|
37
|
+
| [Nom] | [OSS/SaaS/...] | [+] | [-] | ⭐⭐⭐ |
|
|
38
|
+
| [Nom] | [OSS/SaaS/...] | [+] | [-] | ⭐⭐ |
|
|
39
|
+
|
|
40
|
+
### Analyse détaillée
|
|
41
|
+
|
|
42
|
+
#### [Solution 1]
|
|
43
|
+
|
|
44
|
+
- **URL** : [lien]
|
|
45
|
+
- **Ce qu'ils font bien** : ...
|
|
46
|
+
- **Ce qu'on peut améliorer** : ...
|
|
47
|
+
- **Applicabilité** : ...
|
|
48
|
+
|
|
49
|
+
#### [Solution 2]
|
|
50
|
+
|
|
51
|
+
...
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Patterns et anti-patterns
|
|
56
|
+
|
|
57
|
+
### Do's ✅
|
|
58
|
+
|
|
59
|
+
- [Bonne pratique 1]
|
|
60
|
+
- [Bonne pratique 2]
|
|
61
|
+
- [Bonne pratique 3]
|
|
62
|
+
|
|
63
|
+
### Don'ts ❌
|
|
64
|
+
|
|
65
|
+
- [Anti-pattern 1] : [Pourquoi c'est problématique]
|
|
66
|
+
- [Anti-pattern 2] : [Pourquoi c'est problématique]
|
|
67
|
+
- [Anti-pattern 3] : [Pourquoi c'est problématique]
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Insights pour le projet
|
|
72
|
+
|
|
73
|
+
### Opportunités identifiées
|
|
74
|
+
|
|
75
|
+
1. [Opportunité 1]
|
|
76
|
+
2. [Opportunité 2]
|
|
77
|
+
|
|
78
|
+
### Risques identifiés
|
|
79
|
+
|
|
80
|
+
1. [Risque 1] - Mitigation : [...]
|
|
81
|
+
2. [Risque 2] - Mitigation : [...]
|
|
82
|
+
|
|
83
|
+
### Recommandations
|
|
84
|
+
|
|
85
|
+
- [Recommandation 1]
|
|
86
|
+
- [Recommandation 2]
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Sources
|
|
91
|
+
|
|
92
|
+
- [Titre source 1](url)
|
|
93
|
+
- [Titre source 2](url)
|
|
94
|
+
- ...
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
_Recherche effectuée le [date]_
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Guidelines
|
|
104
|
+
|
|
105
|
+
### Contexte de la recherche
|
|
106
|
+
|
|
107
|
+
- Expliquer le "pourquoi" de la recherche
|
|
108
|
+
- Lister les questions auxquelles on cherche à répondre
|
|
109
|
+
- Donner le contexte du projet si pertinent
|
|
110
|
+
|
|
111
|
+
### État de l'art
|
|
112
|
+
|
|
113
|
+
- Se concentrer sur ce qui est actuel (pas de technos obsolètes)
|
|
114
|
+
- Mentionner les tendances qui impactent le domaine
|
|
115
|
+
- Rester factuel, pas de spéculation
|
|
116
|
+
|
|
117
|
+
### Solutions existantes
|
|
118
|
+
|
|
119
|
+
- Minimum 3-5 solutions comparées
|
|
120
|
+
- Être objectif sur les points forts ET faibles
|
|
121
|
+
- Utiliser un système de notation simple (étoiles)
|
|
122
|
+
- Inclure au moins une solution open-source si possible
|
|
123
|
+
|
|
124
|
+
### Do's / Don'ts
|
|
125
|
+
|
|
126
|
+
- Basé sur des retours d'expérience réels
|
|
127
|
+
- Citer les sources quand possible
|
|
128
|
+
- Être actionnable (pas de généralités vagues)
|
|
129
|
+
|
|
130
|
+
### Insights
|
|
131
|
+
|
|
132
|
+
- Synthétiser ce qui est utile pour LE projet
|
|
133
|
+
- Transformer les constats en recommandations
|
|
134
|
+
- Identifier clairement les risques et leurs mitigations
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# Template: Stack
|
|
2
|
+
|
|
3
|
+
Ce template structure les choix techniques pour un package.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Structure du document
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
# Stack : [Nom du package]
|
|
11
|
+
|
|
12
|
+
## Décision
|
|
13
|
+
|
|
14
|
+
[ ] **Pas de changement** - On utilise la stack existante
|
|
15
|
+
[ ] **Nouvelles technologies** - Détails ci-dessous
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Technologies
|
|
20
|
+
|
|
21
|
+
### Stack existante utilisée
|
|
22
|
+
|
|
23
|
+
| Catégorie | Technologie | Version | Usage dans ce package |
|
|
24
|
+
|-----------|-------------|---------|----------------------|
|
|
25
|
+
| [Runtime] | [Node.js] | [20.x] | [Serveur API] |
|
|
26
|
+
| [Framework] | [Next.js] | [14.x] | [Frontend] |
|
|
27
|
+
| ... | ... | ... | ... |
|
|
28
|
+
|
|
29
|
+
### Nouvelles technologies (si applicable)
|
|
30
|
+
|
|
31
|
+
| Catégorie | Technologie | Version | Justification |
|
|
32
|
+
|-----------|-------------|---------|---------------|
|
|
33
|
+
| [Catégorie] | [Nom] | [Version] | [Pourquoi ce choix ?] |
|
|
34
|
+
|
|
35
|
+
#### Détail : [Nouvelle techno 1]
|
|
36
|
+
|
|
37
|
+
- **Pourquoi** : [Justification détaillée]
|
|
38
|
+
- **Alternatives considérées** :
|
|
39
|
+
- [Alternative A] : Rejetée car [raison]
|
|
40
|
+
- [Alternative B] : Rejetée car [raison]
|
|
41
|
+
- **Risques** : [Risques identifiés]
|
|
42
|
+
- **Mitigation** : [Comment on gère les risques]
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Intégration avec l'existant
|
|
47
|
+
|
|
48
|
+
### Points d'intégration
|
|
49
|
+
|
|
50
|
+
- [Point 1] : [Comment ça s'intègre]
|
|
51
|
+
- [Point 2] : [Comment ça s'intègre]
|
|
52
|
+
|
|
53
|
+
### Modifications nécessaires
|
|
54
|
+
|
|
55
|
+
- [ ] [Modification 1]
|
|
56
|
+
- [ ] [Modification 2]
|
|
57
|
+
|
|
58
|
+
### Compatibilité
|
|
59
|
+
|
|
60
|
+
- **Versions Node.js** : [Versions supportées]
|
|
61
|
+
- **Navigateurs** : [Navigateurs cibles]
|
|
62
|
+
- **Autres** : [Contraintes de compatibilité]
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Risques identifiés
|
|
67
|
+
|
|
68
|
+
| Risque | Probabilité | Impact | Mitigation |
|
|
69
|
+
|--------|-------------|--------|------------|
|
|
70
|
+
| [Risque 1] | Faible/Moyen/Élevé | Faible/Moyen/Élevé | [Comment mitiger] |
|
|
71
|
+
| [Risque 2] | ... | ... | ... |
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Dépendances externes
|
|
76
|
+
|
|
77
|
+
| Dépendance | Type | Criticité | Fallback |
|
|
78
|
+
|------------|------|-----------|----------|
|
|
79
|
+
| [API externe] | Service | Critique | [Plan B si indispo] |
|
|
80
|
+
| [Lib NPM] | Package | Moyenne | [Alternative] |
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Décisions techniques
|
|
85
|
+
|
|
86
|
+
### [Décision 1]
|
|
87
|
+
|
|
88
|
+
- **Contexte** : [Situation qui nécessite une décision]
|
|
89
|
+
- **Options** :
|
|
90
|
+
1. [Option A]
|
|
91
|
+
2. [Option B]
|
|
92
|
+
- **Décision** : [Option choisie]
|
|
93
|
+
- **Raison** : [Pourquoi]
|
|
94
|
+
|
|
95
|
+
### [Décision 2]
|
|
96
|
+
|
|
97
|
+
...
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
_Document généré le [date]_
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Guidelines
|
|
107
|
+
|
|
108
|
+
### Décision principale
|
|
109
|
+
|
|
110
|
+
- Toujours commencer par clarifier si on change la stack ou non
|
|
111
|
+
- Si pas de changement, le document peut être court
|
|
112
|
+
- Si changements, détailler chaque nouvelle technologie
|
|
113
|
+
|
|
114
|
+
### Justification des choix
|
|
115
|
+
|
|
116
|
+
- Chaque nouvelle techno doit avoir une justification claire
|
|
117
|
+
- Lister les alternatives considérées et pourquoi elles sont rejetées
|
|
118
|
+
- Ne pas choisir une techno "parce qu'elle est hype"
|
|
119
|
+
|
|
120
|
+
### Intégration
|
|
121
|
+
|
|
122
|
+
- Identifier tous les points de contact avec l'existant
|
|
123
|
+
- Lister les modifications nécessaires
|
|
124
|
+
- Anticiper les problèmes de compatibilité
|
|
125
|
+
|
|
126
|
+
### Risques
|
|
127
|
+
|
|
128
|
+
- Être honnête sur les risques
|
|
129
|
+
- Chaque risque doit avoir une mitigation
|
|
130
|
+
- Ne pas minimiser les risques pour "vendre" une techno
|
|
131
|
+
|
|
132
|
+
### Dépendances externes
|
|
133
|
+
|
|
134
|
+
- Lister toutes les dépendances critiques
|
|
135
|
+
- Prévoir un fallback pour les services tiers
|
|
136
|
+
- Évaluer la stabilité des dépendances (maintenance active ?)
|