@atlashub/smartstack-cli 2.1.0 → 2.3.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/.documentation/business-analyse.html +1503 -1058
- package/dist/index.js +92 -55
- package/dist/index.js.map +1 -1
- package/package.json +10 -7
- package/templates/agents/ba-reader.md +250 -0
- package/templates/agents/ba-writer.md +210 -0
- package/templates/agents/docs-context-reader.md +51 -33
- package/templates/skills/_shared.md +2 -0
- package/templates/skills/business-analyse/SKILL.md +120 -108
- package/templates/skills/business-analyse/_shared.md +136 -146
- package/templates/skills/business-analyse/patterns/suggestion-catalog.md +478 -0
- package/templates/skills/business-analyse/questionnaire/01-context.md +3 -15
- package/templates/skills/business-analyse/questionnaire/03-scope.md +7 -7
- package/templates/skills/business-analyse/questionnaire/08-performance.md +7 -21
- package/templates/skills/business-analyse/questionnaire/09-constraints.md +0 -13
- package/templates/skills/business-analyse/questionnaire/10-documentation.md +0 -13
- package/templates/skills/business-analyse/questionnaire/12-migration.md +1 -1
- package/templates/skills/business-analyse/questionnaire.md +72 -76
- package/templates/skills/business-analyse/react/components.md +317 -154
- package/templates/skills/business-analyse/react/i18n-template.md +167 -106
- package/templates/skills/business-analyse/react/schema.md +474 -107
- package/templates/skills/business-analyse/schemas/feature-schema.json +860 -0
- package/templates/skills/business-analyse/steps/step-00-init.md +395 -285
- package/templates/skills/business-analyse/steps/step-01-analyse.md +523 -0
- package/templates/skills/business-analyse/steps/step-02-specify.md +899 -0
- package/templates/skills/business-analyse/steps/step-03-validate.md +1009 -0
- package/templates/skills/business-analyse/steps/step-04-handoff.md +1802 -0
- package/templates/skills/business-analyse/templates/tpl-handoff.md +49 -64
- package/templates/skills/business-analyse/steps/step-01-discover.md +0 -737
- package/templates/skills/business-analyse/steps/step-02-analyse.md +0 -299
- package/templates/skills/business-analyse/steps/step-03-specify.md +0 -472
- package/templates/skills/business-analyse/steps/step-04-validate.md +0 -335
- package/templates/skills/business-analyse/steps/step-05-handoff.md +0 -741
- package/templates/skills/business-analyse/steps/step-06-doc-html.md +0 -320
- package/templates/skills/business-analyse/templates/00-context.md +0 -105
- package/templates/skills/business-analyse/templates/tpl-brd.md +0 -97
- package/templates/skills/business-analyse/templates/tpl-discovery.md +0 -78
- package/templates/skills/business-analyse/tracking/change-template.md +0 -30
|
@@ -26,10 +26,12 @@
|
|
|
26
26
|
<span class="breadcrumb-separator">›</span>
|
|
27
27
|
<span class="breadcrumb-current">Business Analyse</span>
|
|
28
28
|
</nav>
|
|
29
|
+
<!-- Language Select -->
|
|
29
30
|
<select class="lang-select" id="lang-select" onchange="setLanguage(this.value); localStorage.setItem('doc-language', this.value);">
|
|
30
31
|
<option value="fr">FR</option>
|
|
31
32
|
<option value="en">EN</option>
|
|
32
33
|
</select>
|
|
34
|
+
<!-- Search -->
|
|
33
35
|
<div class="header-search">
|
|
34
36
|
<div class="search-input-wrapper">
|
|
35
37
|
<span class="search-icon">🔍</span>
|
|
@@ -95,31 +97,31 @@
|
|
|
95
97
|
</a>
|
|
96
98
|
<nav class="sidebar-toc">
|
|
97
99
|
<a href="#introduction" class="sidebar-toc-link">Introduction</a>
|
|
98
|
-
<a href="#
|
|
99
|
-
|
|
100
|
-
<span data-lang="
|
|
101
|
-
<span data-lang="en">Automatic Mode</span>
|
|
100
|
+
<a href="#architecture" class="sidebar-toc-link">
|
|
101
|
+
<span data-lang="fr">Architecture JSON-First</span>
|
|
102
|
+
<span data-lang="en">JSON-First Architecture</span>
|
|
102
103
|
</a>
|
|
103
|
-
<a href="#
|
|
104
|
-
|
|
105
|
-
<span data-lang="
|
|
104
|
+
<a href="#quick-start" class="sidebar-toc-link">Quick Start</a>
|
|
105
|
+
<a href="#use-cases" class="sidebar-toc-link">
|
|
106
|
+
<span data-lang="fr">4 Cas d'usage</span>
|
|
107
|
+
<span data-lang="en">4 Use Cases</span>
|
|
106
108
|
</a>
|
|
107
|
-
<a href="#
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
<a href="#phase-3" class="sidebar-toc-link">3. Analyse</a>
|
|
111
|
-
<a href="#phase-4" class="sidebar-toc-link">4. Specify</a>
|
|
112
|
-
<a href="#phase-5" class="sidebar-toc-link">5. Validate</a>
|
|
113
|
-
<a href="#phase-6" class="sidebar-toc-link">6. Handoff</a>
|
|
114
|
-
<a href="#phase-7" class="sidebar-toc-link">7. Doc-HTML</a>
|
|
115
|
-
<a href="#utilities" class="sidebar-toc-link">
|
|
116
|
-
<span data-lang="fr">Utilitaires</span>
|
|
117
|
-
<span data-lang="en">Utilities</span>
|
|
109
|
+
<a href="#flags" class="sidebar-toc-link">
|
|
110
|
+
<span data-lang="fr">Flags & Modes</span>
|
|
111
|
+
<span data-lang="en">Flags & Modes</span>
|
|
118
112
|
</a>
|
|
113
|
+
<a href="#workflow" class="sidebar-toc-link">Workflow</a>
|
|
114
|
+
<a href="#step-00" class="sidebar-toc-link">00. Init</a>
|
|
115
|
+
<a href="#step-01" class="sidebar-toc-link">01. Analyse</a>
|
|
116
|
+
<a href="#step-02" class="sidebar-toc-link">02. Specify</a>
|
|
117
|
+
<a href="#step-03" class="sidebar-toc-link">03. Validate</a>
|
|
118
|
+
<a href="#step-04" class="sidebar-toc-link">04. Handoff</a>
|
|
119
|
+
<a href="#questionnaire" class="sidebar-toc-link">Questionnaire</a>
|
|
120
|
+
<a href="#versioning" class="sidebar-toc-link">Versioning</a>
|
|
119
121
|
<a href="#agents" class="sidebar-toc-link">Agents</a>
|
|
120
|
-
<a href="#
|
|
121
|
-
<span data-lang="fr">
|
|
122
|
-
<span data-lang="en">
|
|
122
|
+
<a href="#output" class="sidebar-toc-link">
|
|
123
|
+
<span data-lang="fr">Sorties</span>
|
|
124
|
+
<span data-lang="en">Output</span>
|
|
123
125
|
</a>
|
|
124
126
|
<a href="#example" class="sidebar-toc-link">
|
|
125
127
|
<span data-lang="fr">Exemple</span>
|
|
@@ -152,6 +154,10 @@
|
|
|
152
154
|
<span class="icon">🔗</span>
|
|
153
155
|
<span class="nav-text">Hooks</span>
|
|
154
156
|
</a>
|
|
157
|
+
<a href="test-web.html" class="nav-item">
|
|
158
|
+
<span class="icon">🌐</span>
|
|
159
|
+
<span class="nav-text">Test Web</span>
|
|
160
|
+
</a>
|
|
155
161
|
</div>
|
|
156
162
|
</nav>
|
|
157
163
|
</aside>
|
|
@@ -160,14 +166,16 @@
|
|
|
160
166
|
<main class="main-content">
|
|
161
167
|
<div class="content-full">
|
|
162
168
|
|
|
163
|
-
<!--
|
|
169
|
+
<!-- ============================================ -->
|
|
170
|
+
<!-- INTRODUCTION -->
|
|
171
|
+
<!-- ============================================ -->
|
|
164
172
|
<section id="introduction">
|
|
165
173
|
<h2>Introduction</h2>
|
|
166
174
|
<p data-lang="fr">
|
|
167
|
-
Le
|
|
175
|
+
Le skill <strong>Business Analyse v3.0</strong> est un workflow VibeCoding en <strong>5 etapes</strong> qui transforme un besoin utilisateur en specification fonctionnelle complete, prete pour l'implementation. Il repose sur une <strong>architecture JSON-First</strong> ou un unique fichier <code>feature.json</code> est enrichi progressivement a chaque etape.
|
|
168
176
|
</p>
|
|
169
177
|
<p data-lang="en">
|
|
170
|
-
The <strong>Business Analyse
|
|
178
|
+
The <strong>Business Analyse v3.0</strong> skill is a VibeCoding workflow in <strong>5 steps</strong> that transforms a user need into a complete functional specification, ready for implementation. It relies on a <strong>JSON-First architecture</strong> where a single <code>feature.json</code> file is progressively enriched at each step.
|
|
171
179
|
</p>
|
|
172
180
|
|
|
173
181
|
<div class="alert alert-warning">
|
|
@@ -176,10 +184,10 @@
|
|
|
176
184
|
<h5 data-lang="fr">Principe fondamental</h5>
|
|
177
185
|
<h5 data-lang="en">Core Principle</h5>
|
|
178
186
|
<p data-lang="fr">
|
|
179
|
-
<strong>Comprendre avant de specifier.</strong> Les
|
|
187
|
+
<strong>Comprendre avant de specifier.</strong> Les etapes 00-01 se concentrent sur la DECOUVERTE (langage utilisateur), les etapes 02-04 sur la SPECIFICATION et le HANDOFF (langage technique).
|
|
180
188
|
</p>
|
|
181
189
|
<p data-lang="en">
|
|
182
|
-
<strong>Understand before specifying.</strong>
|
|
190
|
+
<strong>Understand before specifying.</strong> Steps 00-01 focus on DISCOVERY (user language), steps 02-04 on SPECIFICATION and HANDOFF (technical language).
|
|
183
191
|
</p>
|
|
184
192
|
</div>
|
|
185
193
|
</div>
|
|
@@ -189,1314 +197,1751 @@
|
|
|
189
197
|
<div class="alert-content">
|
|
190
198
|
<h5>ULTRATHINK</h5>
|
|
191
199
|
<p data-lang="fr">
|
|
192
|
-
Les
|
|
200
|
+
Les etapes critiques (01 Analyse, 02 Specify, 04 Handoff) utilisent <strong>ULTRATHINK</strong> avec le modele Opus pour une reflexion approfondie. Les etapes simples (00 Init, 03 Validate) utilisent Haiku pour la rapidite.
|
|
193
201
|
</p>
|
|
194
202
|
<p data-lang="en">
|
|
195
|
-
Critical
|
|
203
|
+
Critical steps (01 Analyse, 02 Specify, 04 Handoff) use <strong>ULTRATHINK</strong> with the Opus model for deep reasoning. Simple steps (00 Init, 03 Validate) use Haiku for speed.
|
|
196
204
|
</p>
|
|
197
205
|
</div>
|
|
198
206
|
</div>
|
|
199
|
-
</section>
|
|
200
207
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
</h2>
|
|
207
|
-
|
|
208
|
-
<div class="command-card">
|
|
209
|
-
<div class="command-header">
|
|
210
|
-
<code class="command-name">/business-analyse</code>
|
|
211
|
-
<span class="badge badge-purple">ORCHESTRATE</span>
|
|
212
|
-
</div>
|
|
213
|
-
<div class="command-body">
|
|
208
|
+
<div class="alert alert-info">
|
|
209
|
+
<span class="alert-icon">📊</span>
|
|
210
|
+
<div class="alert-content">
|
|
211
|
+
<h5 data-lang="fr">4 cas d'usage</h5>
|
|
212
|
+
<h5 data-lang="en">4 Use Cases</h5>
|
|
214
213
|
<p data-lang="fr">
|
|
215
|
-
|
|
214
|
+
Le skill supporte 4 modes : <strong>Nouvelle feature</strong> (workflow complet), <strong>Question</strong> (interroger une feature existante), <strong>Refactoring</strong> (creer une version delta), <strong>Micro-feature</strong> (analyse minimale).
|
|
216
215
|
</p>
|
|
217
216
|
<p data-lang="en">
|
|
218
|
-
|
|
217
|
+
The skill supports 4 modes: <strong>New feature</strong> (full workflow), <strong>Question</strong> (query an existing feature), <strong>Refactoring</strong> (create a delta version), <strong>Micro-feature</strong> (minimal analysis).
|
|
219
218
|
</p>
|
|
220
|
-
|
|
221
|
-
<div class="code-block">
|
|
222
|
-
<button class="copy-btn">Copy</button>
|
|
223
|
-
<pre><code>/business-analyse [feature-name] [options]</code></pre>
|
|
224
|
-
</div>
|
|
225
|
-
|
|
226
|
-
<h4>
|
|
227
|
-
<span data-lang="fr">Niveaux de granularite</span>
|
|
228
|
-
<span data-lang="en">Granularity Levels</span>
|
|
229
|
-
</h4>
|
|
230
|
-
<table class="reference-table">
|
|
231
|
-
<thead>
|
|
232
|
-
<tr>
|
|
233
|
-
<th>
|
|
234
|
-
<span data-lang="fr">Niveau</span>
|
|
235
|
-
<span data-lang="en">Level</span>
|
|
236
|
-
</th>
|
|
237
|
-
<th>
|
|
238
|
-
<span data-lang="fr">Couverture</span>
|
|
239
|
-
<span data-lang="en">Coverage</span>
|
|
240
|
-
</th>
|
|
241
|
-
<th>Description</th>
|
|
242
|
-
</tr>
|
|
243
|
-
</thead>
|
|
244
|
-
<tbody>
|
|
245
|
-
<tr>
|
|
246
|
-
<td><strong>Muscles</strong></td>
|
|
247
|
-
<td>
|
|
248
|
-
<span data-lang="fr">Phases principales</span>
|
|
249
|
-
<span data-lang="en">Main phases</span>
|
|
250
|
-
</td>
|
|
251
|
-
<td>
|
|
252
|
-
<span data-lang="fr">Phases 0-6, haute vue d'ensemble</span>
|
|
253
|
-
<span data-lang="en">Phases 0-6, high overview</span>
|
|
254
|
-
</td>
|
|
255
|
-
</tr>
|
|
256
|
-
<tr>
|
|
257
|
-
<td><strong>Section</strong></td>
|
|
258
|
-
<td>
|
|
259
|
-
<span data-lang="fr">Toutes phases</span>
|
|
260
|
-
<span data-lang="en">All phases</span>
|
|
261
|
-
</td>
|
|
262
|
-
<td>
|
|
263
|
-
<span data-lang="fr">Phases 0-7 avec details complets</span>
|
|
264
|
-
<span data-lang="en">Phases 0-7 with full details</span>
|
|
265
|
-
</td>
|
|
266
|
-
</tr>
|
|
267
|
-
<tr>
|
|
268
|
-
<td><strong>Resources</strong></td>
|
|
269
|
-
<td>
|
|
270
|
-
<span data-lang="fr">Etendu</span>
|
|
271
|
-
<span data-lang="en">Extended</span>
|
|
272
|
-
</td>
|
|
273
|
-
<td>
|
|
274
|
-
<span data-lang="fr">Phases 0-7 + agents, hooks, ressources</span>
|
|
275
|
-
<span data-lang="en">Phases 0-7 + agents, hooks, resources</span>
|
|
276
|
-
</td>
|
|
277
|
-
</tr>
|
|
278
|
-
</tbody>
|
|
279
|
-
</table>
|
|
280
|
-
|
|
281
|
-
<h4>Workflow Complet</h4>
|
|
282
|
-
<div class="svg-diagram" style="max-width: 100%; overflow-x: auto;">
|
|
283
|
-
<svg viewBox="0 0 560 260" xmlns="http://www.w3.org/2000/svg" style="font-family: 'Inter', system-ui, sans-serif; min-width: 480px;">
|
|
284
|
-
<defs>
|
|
285
|
-
<marker id="arrowAuto" markerWidth="12" markerHeight="10" refX="10" refY="5" orient="auto" markerUnits="userSpaceOnUse">
|
|
286
|
-
<path d="M0,0 L12,5 L0,10 L3,5 Z" fill="#94a3b8"/>
|
|
287
|
-
</marker>
|
|
288
|
-
<filter id="shadowAuto" x="-10%" y="-10%" width="120%" height="130%">
|
|
289
|
-
<feDropShadow dx="0" dy="2" stdDeviation="3" flood-opacity="0.3"/>
|
|
290
|
-
</filter>
|
|
291
|
-
</defs>
|
|
292
|
-
|
|
293
|
-
<!-- BA Box -->
|
|
294
|
-
<g transform="translate(20, 80)" filter="url(#shadowAuto)">
|
|
295
|
-
<rect x="0" y="0" width="100" height="60" rx="6" fill="#1e3a5f" stroke="#3b82f6" stroke-width="2"/>
|
|
296
|
-
<text x="50" y="22" text-anchor="middle" fill="#f1f5f9" font-size="12" font-weight="700">Business</text>
|
|
297
|
-
<text x="50" y="38" text-anchor="middle" fill="#93c5fd" font-size="10">Analyse</text>
|
|
298
|
-
</g>
|
|
299
|
-
<path d="M120,110 L160,110" stroke="#94a3b8" stroke-width="3" marker-end="url(#arrowAuto)"/>
|
|
300
|
-
|
|
301
|
-
<!-- Ralph Loop Box -->
|
|
302
|
-
<g transform="translate(160, 80)" filter="url(#shadowAuto)">
|
|
303
|
-
<rect x="0" y="0" width="100" height="60" rx="6" fill="#134e4a" stroke="#0d9488" stroke-width="2"/>
|
|
304
|
-
<text x="50" y="22" text-anchor="middle" fill="#f1f5f9" font-size="12" font-weight="700">Ralph</text>
|
|
305
|
-
<text x="50" y="38" text-anchor="middle" fill="#5eead4" font-size="10">Loop</text>
|
|
306
|
-
</g>
|
|
307
|
-
<path d="M260,110 L300,110" stroke="#94a3b8" stroke-width="3" marker-end="url(#arrowAuto)"/>
|
|
308
|
-
|
|
309
|
-
<!-- Implementation Box -->
|
|
310
|
-
<g transform="translate(300, 80)" filter="url(#shadowAuto)">
|
|
311
|
-
<rect x="0" y="0" width="100" height="60" rx="6" fill="#7c2d12" stroke="#ea580c" stroke-width="2"/>
|
|
312
|
-
<text x="50" y="22" text-anchor="middle" fill="#f1f5f9" font-size="12" font-weight="700">Claude</text>
|
|
313
|
-
<text x="50" y="38" text-anchor="middle" fill="#fdba74" font-size="10">Code</text>
|
|
314
|
-
</g>
|
|
315
|
-
<path d="M400,110 L440,110" stroke="#94a3b8" stroke-width="3" marker-end="url(#arrowAuto)"/>
|
|
316
|
-
|
|
317
|
-
<!-- Documentation Box -->
|
|
318
|
-
<g transform="translate(440, 80)" filter="url(#shadowAuto)">
|
|
319
|
-
<rect x="0" y="0" width="100" height="60" rx="6" fill="#3b0764" stroke="#d946ef" stroke-width="2"/>
|
|
320
|
-
<text x="50" y="22" text-anchor="middle" fill="#f1f5f9" font-size="12" font-weight="700">HTML</text>
|
|
321
|
-
<text x="50" y="38" text-anchor="middle" fill="#e879f9" font-size="10">Docs</text>
|
|
322
|
-
</g>
|
|
323
|
-
|
|
324
|
-
<!-- Arrow labels -->
|
|
325
|
-
<text x="140" y="70" text-anchor="middle" fill="#94a3b8" font-size="9" font-weight="600">Phases 1-6</text>
|
|
326
|
-
<text x="280" y="70" text-anchor="middle" fill="#94a3b8" font-size="9" font-weight="600">Brief</text>
|
|
327
|
-
<text x="420" y="70" text-anchor="middle" fill="#94a3b8" font-size="9" font-weight="600">Code</text>
|
|
328
|
-
<text x="540" y="70" text-anchor="middle" fill="#94a3b8" font-size="9" font-weight="600">Phase 7</text>
|
|
329
|
-
|
|
330
|
-
<!-- Output legend -->
|
|
331
|
-
<text x="20" y="170" fill="#94a3b8" font-size="10" font-weight="700" data-lang="fr">Fichiers generes</text>
|
|
332
|
-
<text x="20" y="170" fill="#94a3b8" font-size="10" font-weight="700" data-lang="en">Generated files</text>
|
|
333
|
-
|
|
334
|
-
<text x="20" y="190" fill="#64748b" font-size="9">.claude/ba/[feature]/01-06-*.md (phases)</text>
|
|
335
|
-
<text x="20" y="205" fill="#64748b" font-size="9">.claude/ba/[feature]/07-documentation.html (docs)</text>
|
|
336
|
-
<text x="20" y="220" fill="#64748b" font-size="9">Implementation logs & artifacts</text>
|
|
337
|
-
</svg>
|
|
338
|
-
</div>
|
|
339
219
|
</div>
|
|
340
220
|
</div>
|
|
341
221
|
</section>
|
|
342
222
|
|
|
343
|
-
<!--
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
<
|
|
348
|
-
<
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
<marker id="arrowH" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto" markerUnits="userSpaceOnUse">
|
|
352
|
-
<path d="M0,0 L10,4 L0,8 L2,4 Z" fill="#94a3b8"/>
|
|
353
|
-
</marker>
|
|
354
|
-
<!-- Arrow pointing DOWN (gray) - fixed orientation -->
|
|
355
|
-
<marker id="arrowDown" markerWidth="8" markerHeight="10" refX="4" refY="9" orient="0" markerUnits="userSpaceOnUse">
|
|
356
|
-
<path d="M0,0 L4,10 L8,0 L4,2 Z" fill="#94a3b8"/>
|
|
357
|
-
</marker>
|
|
358
|
-
<!-- Arrow pointing LEFT (red) - fixed orientation -->
|
|
359
|
-
<marker id="arrowLeft" markerWidth="10" markerHeight="8" refX="1" refY="4" orient="0" markerUnits="userSpaceOnUse">
|
|
360
|
-
<path d="M10,0 L0,4 L10,8 L8,4 Z" fill="#f87171"/>
|
|
361
|
-
</marker>
|
|
362
|
-
<filter id="shadowH" x="-10%" y="-10%" width="120%" height="130%">
|
|
363
|
-
<feDropShadow dx="0" dy="2" stdDeviation="2" flood-opacity="0.25"/>
|
|
364
|
-
</filter>
|
|
365
|
-
</defs>
|
|
223
|
+
<!-- ============================================ -->
|
|
224
|
+
<!-- ARCHITECTURE JSON-FIRST -->
|
|
225
|
+
<!-- ============================================ -->
|
|
226
|
+
<section id="architecture">
|
|
227
|
+
<h2>
|
|
228
|
+
<span data-lang="fr">Architecture JSON-First</span>
|
|
229
|
+
<span data-lang="en">JSON-First Architecture</span>
|
|
230
|
+
</h2>
|
|
366
231
|
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
<!-- HOW Swimlane (bottom) - extended width -->
|
|
374
|
-
<rect x="10" y="140" width="1020" height="90" rx="8" fill="rgba(13, 148, 136, 0.06)" stroke="rgba(13, 148, 136, 0.25)" stroke-width="1"/>
|
|
375
|
-
<rect x="10" y="140" width="50" height="90" rx="8" fill="rgba(13, 148, 136, 0.12)"/>
|
|
376
|
-
<text x="35" y="190" text-anchor="middle" fill="#0d9488" font-size="11" font-weight="700" transform="rotate(-90, 35, 190)" data-lang="fr">COMMENT</text>
|
|
377
|
-
<text x="35" y="190" text-anchor="middle" fill="#0d9488" font-size="11" font-weight="700" transform="rotate(-90, 35, 190)" data-lang="en">HOW</text>
|
|
378
|
-
|
|
379
|
-
<!-- Start node - centered above Demande -->
|
|
380
|
-
<circle cx="115" cy="20" r="10" fill="#1e293b" stroke="#64748b" stroke-width="2"/>
|
|
381
|
-
<circle cx="115" cy="20" r="4" fill="#94a3b8"/>
|
|
382
|
-
<path d="M115,30 L115,48" stroke="#94a3b8" stroke-width="2" marker-end="url(#arrowDown)"/>
|
|
383
|
-
|
|
384
|
-
<!-- User Request - Demande -->
|
|
385
|
-
<g transform="translate(70, 55)" filter="url(#shadowH)">
|
|
386
|
-
<rect x="0" y="0" width="90" height="30" rx="15" fill="#334155" stroke="#475569" stroke-width="1"/>
|
|
387
|
-
<text x="45" y="19" text-anchor="middle" fill="#f1f5f9" font-size="9" font-weight="500" data-lang="fr">Demande</text>
|
|
388
|
-
<text x="45" y="19" text-anchor="middle" fill="#f1f5f9" font-size="9" font-weight="500" data-lang="en">Request</text>
|
|
389
|
-
</g>
|
|
390
|
-
<path d="M160,70 L195,70" stroke="#94a3b8" stroke-width="2" marker-end="url(#arrowH)"/>
|
|
232
|
+
<p data-lang="fr">
|
|
233
|
+
Contrairement a l'ancienne approche multi-fichiers markdown, la v3.0 utilise un <strong>unique fichier <code>feature.json</code></strong> enrichi progressivement par chaque etape. Cela reduit le contexte de ~70% par phase et elimine les fichiers intermediaires.
|
|
234
|
+
</p>
|
|
235
|
+
<p data-lang="en">
|
|
236
|
+
Unlike the previous multi-file markdown approach, v3.0 uses a <strong>single <code>feature.json</code> file</strong> progressively enriched by each step. This reduces context by ~70% per phase and eliminates intermediate files.
|
|
237
|
+
</p>
|
|
391
238
|
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
239
|
+
<div class="code-block">
|
|
240
|
+
<button class="copy-btn">Copy</button>
|
|
241
|
+
<pre><code>docs/business/{app}/{module}/business-analyse/
|
|
242
|
+
├── v1.0/
|
|
243
|
+
│ └── feature.json ← Single enriched JSON (progressively filled)
|
|
244
|
+
├── v1.1/
|
|
245
|
+
│ └── feature.json ← Delta version (refactoring)
|
|
246
|
+
└── v2.0/
|
|
247
|
+
└── feature.json ← Major revision
|
|
248
|
+
|
|
249
|
+
.ralph/
|
|
250
|
+
├── prd.json ← Task breakdown (generated by step-04)
|
|
251
|
+
└── progress.txt ← Progress tracker</code></pre>
|
|
252
|
+
</div>
|
|
399
253
|
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
<rect x="0" y="0" width="130" height="40" rx="5" fill="#1e3a5f" stroke="#3b82f6" stroke-width="2"/>
|
|
403
|
-
<text x="65" y="16" text-anchor="middle" fill="#f1f5f9" font-size="11" font-weight="700">3. ANALYSE</text>
|
|
404
|
-
<text x="65" y="30" text-anchor="middle" fill="#93c5fd" font-size="8">BRD</text>
|
|
405
|
-
</g>
|
|
254
|
+
<h4 data-lang="fr">Enrichissement progressif</h4>
|
|
255
|
+
<h4 data-lang="en">Progressive enrichment</h4>
|
|
406
256
|
|
|
407
|
-
|
|
408
|
-
|
|
257
|
+
<div class="table-container">
|
|
258
|
+
<table class="reference-table">
|
|
259
|
+
<thead>
|
|
260
|
+
<tr>
|
|
261
|
+
<th>
|
|
262
|
+
<span data-lang="fr">Etape</span>
|
|
263
|
+
<span data-lang="en">Step</span>
|
|
264
|
+
</th>
|
|
265
|
+
<th>
|
|
266
|
+
<span data-lang="fr">Sections enrichies</span>
|
|
267
|
+
<span data-lang="en">Enriched sections</span>
|
|
268
|
+
</th>
|
|
269
|
+
<th>Status</th>
|
|
270
|
+
<th>
|
|
271
|
+
<span data-lang="fr">Modele</span>
|
|
272
|
+
<span data-lang="en">Model</span>
|
|
273
|
+
</th>
|
|
274
|
+
</tr>
|
|
275
|
+
</thead>
|
|
276
|
+
<tbody>
|
|
277
|
+
<tr>
|
|
278
|
+
<td><strong>00 - Init</strong></td>
|
|
279
|
+
<td><code>metadata</code></td>
|
|
280
|
+
<td><span class="badge badge-blue">draft</span></td>
|
|
281
|
+
<td>Haiku</td>
|
|
282
|
+
</tr>
|
|
283
|
+
<tr>
|
|
284
|
+
<td><strong>01 - Analyse</strong></td>
|
|
285
|
+
<td><code>discovery</code>, <code>analysis</code>, <code>suggestions</code></td>
|
|
286
|
+
<td><span class="badge badge-purple">analysed</span></td>
|
|
287
|
+
<td>Opus</td>
|
|
288
|
+
</tr>
|
|
289
|
+
<tr>
|
|
290
|
+
<td><strong>02 - Specify</strong></td>
|
|
291
|
+
<td><code>specification</code></td>
|
|
292
|
+
<td><span class="badge badge-teal">specified</span></td>
|
|
293
|
+
<td>Sonnet</td>
|
|
294
|
+
</tr>
|
|
295
|
+
<tr>
|
|
296
|
+
<td><strong>03 - Validate</strong></td>
|
|
297
|
+
<td><code>validation</code></td>
|
|
298
|
+
<td><span class="badge badge-green">approved</span></td>
|
|
299
|
+
<td>Haiku</td>
|
|
300
|
+
</tr>
|
|
301
|
+
<tr>
|
|
302
|
+
<td><strong>04 - Handoff</strong></td>
|
|
303
|
+
<td><code>handoff</code></td>
|
|
304
|
+
<td><span class="badge badge-orange">handed-off</span></td>
|
|
305
|
+
<td>Opus</td>
|
|
306
|
+
</tr>
|
|
307
|
+
</tbody>
|
|
308
|
+
</table>
|
|
309
|
+
</div>
|
|
409
310
|
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
<rect x="0" y="0" width="130" height="40" rx="5" fill="#134e4a" stroke="#0d9488" stroke-width="2"/>
|
|
413
|
-
<text x="65" y="16" text-anchor="middle" fill="#f1f5f9" font-size="11" font-weight="700">4. SPECIFY</text>
|
|
414
|
-
<text x="65" y="30" text-anchor="middle" fill="#5eead4" font-size="8">FRD</text>
|
|
415
|
-
</g>
|
|
416
|
-
<path d="M330,185 L360,185" stroke="#94a3b8" stroke-width="2" marker-end="url(#arrowH)"/>
|
|
311
|
+
<h4 data-lang="fr">Structure du feature.json</h4>
|
|
312
|
+
<h4 data-lang="en">feature.json structure</h4>
|
|
417
313
|
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
314
|
+
<div class="code-block">
|
|
315
|
+
<button class="copy-btn">Copy</button>
|
|
316
|
+
<pre><code>{
|
|
317
|
+
"id": "FEAT-001",
|
|
318
|
+
"version": "1.0",
|
|
319
|
+
"status": "draft | analysed | specified | approved | handed-off",
|
|
320
|
+
"metadata": {
|
|
321
|
+
"title": "...",
|
|
322
|
+
"application": "...",
|
|
323
|
+
"module": "...",
|
|
324
|
+
"language": "fr",
|
|
325
|
+
"featureType": "data-centric | integration | ui-centric | workflow | reporting | full-module | micro",
|
|
326
|
+
"steps": {
|
|
327
|
+
"init": { "status": "completed", "startedAt": "...", "completedAt": "..." },
|
|
328
|
+
"analyse": { "status": "in-progress" },
|
|
329
|
+
"specify": { "status": "pending" },
|
|
330
|
+
"validate": { "status": "pending" },
|
|
331
|
+
"handoff": { "status": "pending" }
|
|
332
|
+
}
|
|
333
|
+
},
|
|
334
|
+
"discovery": { "codebaseContext": {}, "questionnaire": {} },
|
|
335
|
+
"analysis": { "businessRules": [], "entities": [], "objectives": [], "risks": [] },
|
|
336
|
+
"specification": { "actors": [], "useCases": [], "requirements": [], "permissions": {} },
|
|
337
|
+
"validation": { "completeness": {}, "consistency": {}, "decision": "APPROVED" },
|
|
338
|
+
"handoff": { "fileMapping": {}, "apiEndpoints": [], "testPlan": {} },
|
|
339
|
+
"suggestions": [],
|
|
340
|
+
"changelog": []
|
|
341
|
+
}</code></pre>
|
|
342
|
+
</div>
|
|
446
343
|
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
344
|
+
<div class="alert alert-info">
|
|
345
|
+
<span class="alert-icon">📚</span>
|
|
346
|
+
<div class="alert-content">
|
|
347
|
+
<h5>Schema JSON</h5>
|
|
348
|
+
<p data-lang="fr">
|
|
349
|
+
Le schema complet est defini dans <code>schemas/feature-schema.json</code> (JSON Schema 2020-12). Toutes les ecritures sont validees par le <code>ba-writer</code> agent.
|
|
350
|
+
</p>
|
|
351
|
+
<p data-lang="en">
|
|
352
|
+
The complete schema is defined in <code>schemas/feature-schema.json</code> (JSON Schema 2020-12). All writes are validated by the <code>ba-writer</code> agent.
|
|
353
|
+
</p>
|
|
354
|
+
</div>
|
|
355
|
+
</div>
|
|
356
|
+
</section>
|
|
454
357
|
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
358
|
+
<!-- ============================================ -->
|
|
359
|
+
<!-- QUICK START -->
|
|
360
|
+
<!-- ============================================ -->
|
|
361
|
+
<section id="quick-start">
|
|
362
|
+
<h2>Quick Start</h2>
|
|
460
363
|
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
364
|
+
<div class="command-card">
|
|
365
|
+
<div class="command-header">
|
|
366
|
+
<code class="command-name">/business-analyse</code>
|
|
367
|
+
<span class="badge badge-purple">SKILL</span>
|
|
368
|
+
</div>
|
|
369
|
+
<div class="command-body">
|
|
370
|
+
<p data-lang="fr">
|
|
371
|
+
Lancez l'analyse metier complete ou choisissez un mode specifique selon votre besoin.
|
|
372
|
+
</p>
|
|
373
|
+
<p data-lang="en">
|
|
374
|
+
Launch the complete business analysis or choose a specific mode based on your need.
|
|
375
|
+
</p>
|
|
465
376
|
|
|
466
|
-
|
|
467
|
-
<
|
|
468
|
-
|
|
469
|
-
|
|
377
|
+
<div class="code-block">
|
|
378
|
+
<button class="copy-btn">Copy</button>
|
|
379
|
+
<pre><code>/business-analyse [description] [flags]</code></pre>
|
|
380
|
+
</div>
|
|
470
381
|
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
<text x="170" y="0" fill="#94a3b8" font-size="9" data-lang="fr">COMMENT</text>
|
|
474
|
-
<text x="170" y="0" fill="#94a3b8" font-size="9" data-lang="en">HOW</text>
|
|
382
|
+
<h4 data-lang="fr">Exemples rapides</h4>
|
|
383
|
+
<h4 data-lang="en">Quick examples</h4>
|
|
475
384
|
|
|
476
|
-
|
|
477
|
-
<
|
|
478
|
-
|
|
385
|
+
<div class="code-block">
|
|
386
|
+
<button class="copy-btn">Copy</button>
|
|
387
|
+
<pre><code># Nouvelle feature (workflow complet 5 etapes)
|
|
388
|
+
/business-analyse Order management module
|
|
479
389
|
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
<text x="345" y="0" fill="#94a3b8" font-size="9">Flow</text>
|
|
390
|
+
# Question sur une feature existante
|
|
391
|
+
/business-analyse -q FEAT-001 "What permissions does the manager have?"
|
|
483
392
|
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
<text x="415" y="0" fill="#94a3b8" font-size="9">Loop</text>
|
|
487
|
-
</g>
|
|
393
|
+
# Refactoring (delta sur feature existante)
|
|
394
|
+
/business-analyse -r FEAT-001 "Add export PDF functionality"
|
|
488
395
|
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
<text x="130" y="0" fill="#94a3b8" font-size="8">01-business-requirements.md → 05-implementation-brief.md → 06-documentation.html</text>
|
|
494
|
-
</g>
|
|
495
|
-
</svg>
|
|
396
|
+
# Micro-feature (analyse minimale)
|
|
397
|
+
/business-analyse -m Add a status field to orders</code></pre>
|
|
398
|
+
</div>
|
|
399
|
+
</div>
|
|
496
400
|
</div>
|
|
497
401
|
</section>
|
|
498
402
|
|
|
499
|
-
<!--
|
|
500
|
-
|
|
403
|
+
<!-- ============================================ -->
|
|
404
|
+
<!-- 4 USE CASES -->
|
|
405
|
+
<!-- ============================================ -->
|
|
406
|
+
<section id="use-cases">
|
|
501
407
|
<h2>
|
|
502
|
-
<span data-lang="fr">
|
|
503
|
-
<span data-lang="en">
|
|
408
|
+
<span data-lang="fr">4 Cas d'usage</span>
|
|
409
|
+
<span data-lang="en">4 Use Cases</span>
|
|
504
410
|
</h2>
|
|
505
411
|
|
|
506
412
|
<div class="table-container">
|
|
507
|
-
<table>
|
|
413
|
+
<table class="reference-table">
|
|
508
414
|
<thead>
|
|
509
415
|
<tr>
|
|
510
|
-
<th
|
|
511
|
-
|
|
416
|
+
<th>
|
|
417
|
+
<span data-lang="fr">Cas d'usage</span>
|
|
418
|
+
<span data-lang="en">Use Case</span>
|
|
419
|
+
</th>
|
|
420
|
+
<th>Flag</th>
|
|
512
421
|
<th>
|
|
513
422
|
<span data-lang="fr">Commande</span>
|
|
514
423
|
<span data-lang="en">Command</span>
|
|
515
424
|
</th>
|
|
516
425
|
<th>
|
|
517
|
-
<span data-lang="fr">
|
|
518
|
-
<span data-lang="en">
|
|
426
|
+
<span data-lang="fr">Parcours</span>
|
|
427
|
+
<span data-lang="en">Flow</span>
|
|
519
428
|
</th>
|
|
520
|
-
<th>Mission</th>
|
|
521
429
|
<th>
|
|
522
|
-
<span data-lang="fr">
|
|
523
|
-
<span data-lang="en">Output
|
|
430
|
+
<span data-lang="fr">Sortie</span>
|
|
431
|
+
<span data-lang="en">Output</span>
|
|
524
432
|
</th>
|
|
525
433
|
</tr>
|
|
526
434
|
</thead>
|
|
527
435
|
<tbody>
|
|
528
|
-
<tr
|
|
529
|
-
<td><strong>
|
|
530
|
-
<td><
|
|
531
|
-
<td><code
|
|
532
|
-
<td>
|
|
533
|
-
<td>
|
|
534
|
-
<span data-lang="fr">Orchestration automatique complete</span>
|
|
535
|
-
<span data-lang="en">Complete automatic orchestration</span>
|
|
536
|
-
</td>
|
|
537
|
-
<td>—</td>
|
|
436
|
+
<tr>
|
|
437
|
+
<td><strong data-lang="fr">Nouvelle feature</strong><strong data-lang="en">New feature</strong></td>
|
|
438
|
+
<td><span data-lang="fr">(aucun)</span><span data-lang="en">(none)</span></td>
|
|
439
|
+
<td><code>/business-analyse Order module</code></td>
|
|
440
|
+
<td>00 → 01 → 02 → 03 → 04</td>
|
|
441
|
+
<td><code>feature.json</code> v1.0 + <code>prd.json</code></td>
|
|
538
442
|
</tr>
|
|
539
|
-
<tr
|
|
540
|
-
<td><strong>
|
|
541
|
-
<td><
|
|
542
|
-
<td><code
|
|
543
|
-
<td>
|
|
443
|
+
<tr>
|
|
444
|
+
<td><strong>Question</strong></td>
|
|
445
|
+
<td><code>-q</code></td>
|
|
446
|
+
<td><code>/business-analyse -q FEAT-001 "..."</code></td>
|
|
447
|
+
<td>00 → ba-reader → EXIT</td>
|
|
544
448
|
<td>
|
|
545
|
-
<span data-lang="fr">
|
|
546
|
-
<span data-lang="en">
|
|
449
|
+
<span data-lang="fr">Reponse textuelle</span>
|
|
450
|
+
<span data-lang="en">Text answer</span>
|
|
547
451
|
</td>
|
|
548
|
-
<td>—</td>
|
|
549
452
|
</tr>
|
|
550
|
-
<tr
|
|
551
|
-
<td><strong>
|
|
552
|
-
<td><
|
|
553
|
-
<td><code
|
|
554
|
-
<td>
|
|
453
|
+
<tr>
|
|
454
|
+
<td><strong>Refactoring</strong></td>
|
|
455
|
+
<td><code>-r</code></td>
|
|
456
|
+
<td><code>/business-analyse -r FEAT-001 "Add PDF"</code></td>
|
|
457
|
+
<td>00 (delta) → 01 → 02 → 03 → 04</td>
|
|
458
|
+
<td><code>feature.json</code> v1.1 + <code>prd.json</code></td>
|
|
459
|
+
</tr>
|
|
460
|
+
<tr>
|
|
461
|
+
<td><strong>Micro-feature</strong></td>
|
|
462
|
+
<td><code>-m</code></td>
|
|
463
|
+
<td><code>/business-analyse -m Add status field</code></td>
|
|
464
|
+
<td>00 → 01 (4 Q) → 02 (min) → 03 (auto) → 04</td>
|
|
465
|
+
<td><code>feature.json</code> v1.0 (micro)</td>
|
|
466
|
+
</tr>
|
|
467
|
+
</tbody>
|
|
468
|
+
</table>
|
|
469
|
+
</div>
|
|
470
|
+
|
|
471
|
+
<h4 data-lang="fr">Routage des cas d'usage</h4>
|
|
472
|
+
<h4 data-lang="en">Use case routing</h4>
|
|
473
|
+
|
|
474
|
+
<div class="code-block">
|
|
475
|
+
<button class="copy-btn">Copy</button>
|
|
476
|
+
<pre><code>question (-q) → ba-reader.answerQuestion() → EXIT
|
|
477
|
+
refactor (-r) → ba-writer.createVersion() → step-01 (delta) → ... → step-04
|
|
478
|
+
micro (-m) → step-00 (minimal) → step-01 (micro) → ... → step-04
|
|
479
|
+
default → step-00 → step-01 (full) → ... → step-04</code></pre>
|
|
480
|
+
</div>
|
|
481
|
+
</section>
|
|
482
|
+
|
|
483
|
+
<!-- ============================================ -->
|
|
484
|
+
<!-- FLAGS & MODES -->
|
|
485
|
+
<!-- ============================================ -->
|
|
486
|
+
<section id="flags">
|
|
487
|
+
<h2>Flags & Modes</h2>
|
|
488
|
+
|
|
489
|
+
<div class="table-container">
|
|
490
|
+
<table class="reference-table">
|
|
491
|
+
<thead>
|
|
492
|
+
<tr>
|
|
493
|
+
<th>Flag</th>
|
|
494
|
+
<th>Long</th>
|
|
495
|
+
<th>
|
|
496
|
+
<span data-lang="fr">Effet</span>
|
|
497
|
+
<span data-lang="en">Effect</span>
|
|
498
|
+
</th>
|
|
499
|
+
</tr>
|
|
500
|
+
</thead>
|
|
501
|
+
<tbody>
|
|
502
|
+
<tr>
|
|
503
|
+
<td><code>-a</code></td>
|
|
504
|
+
<td><code>--auto</code></td>
|
|
555
505
|
<td>
|
|
556
|
-
<span data-lang="fr">
|
|
557
|
-
<span data-lang="en">
|
|
506
|
+
<span data-lang="fr">Mode autonome : saute les confirmations utilisateur</span>
|
|
507
|
+
<span data-lang="en">Autonomous mode: skip user confirmations</span>
|
|
558
508
|
</td>
|
|
559
|
-
<td><code>01-business-requirements.md</code></td>
|
|
560
509
|
</tr>
|
|
561
|
-
<tr
|
|
562
|
-
<td><
|
|
563
|
-
<td><
|
|
564
|
-
<td><code>:3-analyse</code></td>
|
|
565
|
-
<td>Sonnet/ULTRATHINK</td>
|
|
510
|
+
<tr>
|
|
511
|
+
<td><code>-e</code></td>
|
|
512
|
+
<td><code>--economy</code></td>
|
|
566
513
|
<td>
|
|
567
|
-
<span data-lang="fr">
|
|
568
|
-
<span data-lang="en">
|
|
514
|
+
<span data-lang="fr">Mode economique : pas de sous-agents, utilise Glob/Grep directement</span>
|
|
515
|
+
<span data-lang="en">Economy mode: no subagents, uses Glob/Grep directly</span>
|
|
569
516
|
</td>
|
|
570
|
-
<td><code>02-enriched-requirements.md</code></td>
|
|
571
517
|
</tr>
|
|
572
|
-
<tr
|
|
573
|
-
<td><
|
|
574
|
-
<td><
|
|
575
|
-
<td><code>:4-specify</code></td>
|
|
576
|
-
<td>Sonnet/ULTRATHINK</td>
|
|
518
|
+
<tr>
|
|
519
|
+
<td><code>-q FEAT-ID "text"</code></td>
|
|
520
|
+
<td><code>--question</code></td>
|
|
577
521
|
<td>
|
|
578
|
-
<span data-lang="fr">
|
|
579
|
-
<span data-lang="en">
|
|
522
|
+
<span data-lang="fr">Mode question : interroge une feature existante (lecture seule, EXIT)</span>
|
|
523
|
+
<span data-lang="en">Question mode: query an existing feature (read-only, EXIT)</span>
|
|
580
524
|
</td>
|
|
581
|
-
<td><code>03-functional-spec.md</code></td>
|
|
582
525
|
</tr>
|
|
583
|
-
<tr
|
|
584
|
-
<td><
|
|
585
|
-
<td><
|
|
586
|
-
<td><code>:5-validate</code></td>
|
|
587
|
-
<td>Haiku</td>
|
|
526
|
+
<tr>
|
|
527
|
+
<td><code>-r FEAT-ID "text"</code></td>
|
|
528
|
+
<td><code>--refactor</code></td>
|
|
588
529
|
<td>
|
|
589
|
-
<span data-lang="fr">
|
|
590
|
-
<span data-lang="en">
|
|
530
|
+
<span data-lang="fr">Mode refactoring : cree une version delta (v1.0 → v1.1)</span>
|
|
531
|
+
<span data-lang="en">Refactoring mode: creates a delta version (v1.0 → v1.1)</span>
|
|
591
532
|
</td>
|
|
592
|
-
<td><code>04-feedback-v[N].md</code></td>
|
|
593
533
|
</tr>
|
|
594
|
-
<tr
|
|
595
|
-
<td><
|
|
596
|
-
<td><
|
|
597
|
-
<td><code>:6-handoff</code></td>
|
|
598
|
-
<td>OPUS/ULTRATHINK</td>
|
|
534
|
+
<tr>
|
|
535
|
+
<td><code>-m</code></td>
|
|
536
|
+
<td><code>--micro</code></td>
|
|
599
537
|
<td>
|
|
600
|
-
<span data-lang="fr">
|
|
601
|
-
<span data-lang="en">
|
|
538
|
+
<span data-lang="fr">Micro-feature : analyse minimale (4 questions max)</span>
|
|
539
|
+
<span data-lang="en">Micro-feature: minimal analysis (4 questions max)</span>
|
|
602
540
|
</td>
|
|
603
|
-
<td><code>05-implementation-brief.md</code></td>
|
|
604
541
|
</tr>
|
|
605
|
-
<tr
|
|
606
|
-
<td><
|
|
607
|
-
<td><
|
|
608
|
-
<td><code>:7-doc-html</code></td>
|
|
609
|
-
<td>Sonnet</td>
|
|
542
|
+
<tr>
|
|
543
|
+
<td><code>-i</code></td>
|
|
544
|
+
<td><code>--interactive</code></td>
|
|
610
545
|
<td>
|
|
611
|
-
<span data-lang="fr">
|
|
612
|
-
<span data-lang="en">
|
|
546
|
+
<span data-lang="fr">Mode interactif : configuration guidee des flags</span>
|
|
547
|
+
<span data-lang="en">Interactive mode: guided flag configuration</span>
|
|
613
548
|
</td>
|
|
614
|
-
<td><code>06-documentation.html</code></td>
|
|
615
549
|
</tr>
|
|
616
550
|
</tbody>
|
|
617
551
|
</table>
|
|
618
552
|
</div>
|
|
619
553
|
</section>
|
|
620
554
|
|
|
621
|
-
<!--
|
|
622
|
-
|
|
623
|
-
|
|
555
|
+
<!-- ============================================ -->
|
|
556
|
+
<!-- WORKFLOW -->
|
|
557
|
+
<!-- ============================================ -->
|
|
558
|
+
<section id="workflow">
|
|
559
|
+
<h2>Workflow</h2>
|
|
560
|
+
|
|
561
|
+
<div class="svg-diagram">
|
|
562
|
+
<svg viewBox="0 0 800 350" xmlns="http://www.w3.org/2000/svg" style="font-family: 'Inter', system-ui, sans-serif;">
|
|
563
|
+
<defs>
|
|
564
|
+
<linearGradient id="initGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
565
|
+
<stop offset="0%" style="stop-color:#64748b"/>
|
|
566
|
+
<stop offset="100%" style="stop-color:#475569"/>
|
|
567
|
+
</linearGradient>
|
|
568
|
+
<linearGradient id="analyseGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
569
|
+
<stop offset="0%" style="stop-color:#3b82f6"/>
|
|
570
|
+
<stop offset="100%" style="stop-color:#1d4ed8"/>
|
|
571
|
+
</linearGradient>
|
|
572
|
+
<linearGradient id="specifyGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
573
|
+
<stop offset="0%" style="stop-color:#8b5cf6"/>
|
|
574
|
+
<stop offset="100%" style="stop-color:#6d28d9"/>
|
|
575
|
+
</linearGradient>
|
|
576
|
+
<linearGradient id="validateGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
577
|
+
<stop offset="0%" style="stop-color:#22c55e"/>
|
|
578
|
+
<stop offset="100%" style="stop-color:#15803d"/>
|
|
579
|
+
</linearGradient>
|
|
580
|
+
<linearGradient id="handoffGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
581
|
+
<stop offset="0%" style="stop-color:#f97316"/>
|
|
582
|
+
<stop offset="100%" style="stop-color:#c2410c"/>
|
|
583
|
+
</linearGradient>
|
|
584
|
+
<linearGradient id="jsonGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
585
|
+
<stop offset="0%" style="stop-color:#0d9488"/>
|
|
586
|
+
<stop offset="100%" style="stop-color:#0f766e"/>
|
|
587
|
+
</linearGradient>
|
|
588
|
+
<filter id="glow3" x="-20%" y="-20%" width="140%" height="140%">
|
|
589
|
+
<feGaussianBlur stdDeviation="2" result="coloredBlur"/>
|
|
590
|
+
<feMerge>
|
|
591
|
+
<feMergeNode in="coloredBlur"/>
|
|
592
|
+
<feMergeNode in="SourceGraphic"/>
|
|
593
|
+
</feMerge>
|
|
594
|
+
</filter>
|
|
595
|
+
</defs>
|
|
596
|
+
|
|
597
|
+
<!-- Background label: DISCOVERY -->
|
|
598
|
+
<rect x="30" y="15" width="290" height="25" rx="4" fill="rgba(59,130,246,0.15)" stroke="rgba(59,130,246,0.3)" stroke-width="1"/>
|
|
599
|
+
<text x="175" y="32" text-anchor="middle" fill="#60a5fa" font-size="11" font-weight="600">DISCOVERY</text>
|
|
600
|
+
|
|
601
|
+
<!-- Background label: SPECIFICATION -->
|
|
602
|
+
<rect x="345" y="15" width="430" height="25" rx="4" fill="rgba(139,92,246,0.15)" stroke="rgba(139,92,246,0.3)" stroke-width="1"/>
|
|
603
|
+
<text x="560" y="32" text-anchor="middle" fill="#a78bfa" font-size="11" font-weight="600">SPECIFICATION & HANDOFF</text>
|
|
604
|
+
|
|
605
|
+
<!-- Step 00: Init -->
|
|
606
|
+
<g transform="translate(30, 60)" filter="url(#glow3)">
|
|
607
|
+
<rect x="0" y="0" width="130" height="80" rx="10" fill="url(#initGrad)"/>
|
|
608
|
+
<text x="65" y="25" text-anchor="middle" fill="white" font-size="10" font-weight="700">STEP 00</text>
|
|
609
|
+
<text x="65" y="42" text-anchor="middle" fill="white" font-size="13" font-weight="600">Init</text>
|
|
610
|
+
<text x="65" y="60" text-anchor="middle" fill="rgba(255,255,255,0.6)" font-size="9">Parse flags</text>
|
|
611
|
+
<text x="65" y="72" text-anchor="middle" fill="rgba(255,255,255,0.6)" font-size="9">Create feature.json</text>
|
|
612
|
+
</g>
|
|
613
|
+
|
|
614
|
+
<!-- Arrow 00 → 01 -->
|
|
615
|
+
<line x1="165" y1="100" x2="190" y2="100" stroke="#94a3b8" stroke-width="2"/>
|
|
616
|
+
<polygon points="190,95 200,100 190,105" fill="#94a3b8"/>
|
|
617
|
+
|
|
618
|
+
<!-- Step 01: Analyse -->
|
|
619
|
+
<g transform="translate(200, 60)" filter="url(#glow3)">
|
|
620
|
+
<rect x="0" y="0" width="130" height="80" rx="10" fill="url(#analyseGrad)"/>
|
|
621
|
+
<text x="65" y="25" text-anchor="middle" fill="white" font-size="10" font-weight="700">STEP 01</text>
|
|
622
|
+
<text x="65" y="42" text-anchor="middle" fill="white" font-size="13" font-weight="600">Analyse</text>
|
|
623
|
+
<text x="65" y="60" text-anchor="middle" fill="rgba(255,255,255,0.6)" font-size="9">Questionnaire</text>
|
|
624
|
+
<text x="65" y="72" text-anchor="middle" fill="rgba(255,255,255,0.6)" font-size="9">Business rules</text>
|
|
625
|
+
</g>
|
|
626
|
+
|
|
627
|
+
<!-- Arrow 01 → 02 -->
|
|
628
|
+
<line x1="335" y1="100" x2="360" y2="100" stroke="#94a3b8" stroke-width="2"/>
|
|
629
|
+
<polygon points="360,95 370,100 360,105" fill="#94a3b8"/>
|
|
630
|
+
|
|
631
|
+
<!-- Step 02: Specify -->
|
|
632
|
+
<g transform="translate(370, 60)" filter="url(#glow3)">
|
|
633
|
+
<rect x="0" y="0" width="130" height="80" rx="10" fill="url(#specifyGrad)"/>
|
|
634
|
+
<text x="65" y="25" text-anchor="middle" fill="white" font-size="10" font-weight="700">STEP 02</text>
|
|
635
|
+
<text x="65" y="42" text-anchor="middle" fill="white" font-size="13" font-weight="600">Specify</text>
|
|
636
|
+
<text x="65" y="60" text-anchor="middle" fill="rgba(255,255,255,0.6)" font-size="9">Use cases, FRD</text>
|
|
637
|
+
<text x="65" y="72" text-anchor="middle" fill="rgba(255,255,255,0.6)" font-size="9">Permissions, Gherkin</text>
|
|
638
|
+
</g>
|
|
639
|
+
|
|
640
|
+
<!-- Arrow 02 → 03 -->
|
|
641
|
+
<line x1="505" y1="100" x2="530" y2="100" stroke="#94a3b8" stroke-width="2"/>
|
|
642
|
+
<polygon points="530,95 540,100 530,105" fill="#94a3b8"/>
|
|
643
|
+
|
|
644
|
+
<!-- Step 03: Validate -->
|
|
645
|
+
<g transform="translate(540, 60)" filter="url(#glow3)">
|
|
646
|
+
<rect x="0" y="0" width="130" height="80" rx="10" fill="url(#validateGrad)"/>
|
|
647
|
+
<text x="65" y="25" text-anchor="middle" fill="white" font-size="10" font-weight="700">STEP 03</text>
|
|
648
|
+
<text x="65" y="42" text-anchor="middle" fill="white" font-size="13" font-weight="600">Validate</text>
|
|
649
|
+
<text x="65" y="60" text-anchor="middle" fill="rgba(255,255,255,0.6)" font-size="9">Quality gate</text>
|
|
650
|
+
<text x="65" y="72" text-anchor="middle" fill="rgba(255,255,255,0.6)" font-size="9">APPROVED / REJECTED</text>
|
|
651
|
+
</g>
|
|
652
|
+
|
|
653
|
+
<!-- Arrow 03 → 04 -->
|
|
654
|
+
<line x1="675" y1="100" x2="700" y2="100" stroke="#94a3b8" stroke-width="2"/>
|
|
655
|
+
<polygon points="700,95 710,100 700,105" fill="#94a3b8"/>
|
|
656
|
+
|
|
657
|
+
<!-- Step 04: Handoff -->
|
|
658
|
+
<g transform="translate(640, 60)" filter="url(#glow3)">
|
|
659
|
+
<rect x="65" y="0" width="130" height="80" rx="10" fill="url(#handoffGrad)"/>
|
|
660
|
+
<text x="130" y="25" text-anchor="middle" fill="white" font-size="10" font-weight="700">STEP 04</text>
|
|
661
|
+
<text x="130" y="42" text-anchor="middle" fill="white" font-size="13" font-weight="600">Handoff</text>
|
|
662
|
+
<text x="130" y="60" text-anchor="middle" fill="rgba(255,255,255,0.6)" font-size="9">Dev brief</text>
|
|
663
|
+
<text x="130" y="72" text-anchor="middle" fill="rgba(255,255,255,0.6)" font-size="9">prd.json + progress</text>
|
|
664
|
+
</g>
|
|
665
|
+
|
|
666
|
+
<!-- Central: feature.json -->
|
|
667
|
+
<g transform="translate(260, 190)">
|
|
668
|
+
<rect x="0" y="0" width="280" height="60" rx="10" fill="url(#jsonGrad)" stroke="#2dd4bf" stroke-width="2"/>
|
|
669
|
+
<text x="140" y="25" text-anchor="middle" fill="white" font-size="14" font-weight="700">feature.json</text>
|
|
670
|
+
<text x="140" y="42" text-anchor="middle" fill="rgba(255,255,255,0.7)" font-size="10">Single source of truth - progressively enriched</text>
|
|
671
|
+
</g>
|
|
672
|
+
|
|
673
|
+
<!-- Arrows from steps to feature.json -->
|
|
674
|
+
<line x1="95" y1="145" x2="300" y2="190" stroke="#2dd4bf" stroke-width="1.5" stroke-dasharray="4,3" opacity="0.6"/>
|
|
675
|
+
<line x1="265" y1="145" x2="370" y2="190" stroke="#2dd4bf" stroke-width="1.5" stroke-dasharray="4,3" opacity="0.6"/>
|
|
676
|
+
<line x1="435" y1="145" x2="430" y2="190" stroke="#2dd4bf" stroke-width="1.5" stroke-dasharray="4,3" opacity="0.6"/>
|
|
677
|
+
<line x1="605" y1="145" x2="490" y2="190" stroke="#2dd4bf" stroke-width="1.5" stroke-dasharray="4,3" opacity="0.6"/>
|
|
678
|
+
<line x1="770" y1="145" x2="530" y2="190" stroke="#2dd4bf" stroke-width="1.5" stroke-dasharray="4,3" opacity="0.6"/>
|
|
679
|
+
|
|
680
|
+
<!-- Rejection loop from Validate back to Specify -->
|
|
681
|
+
<path d="M 570 145 Q 570 170 500 170 Q 435 170 435 145" fill="none" stroke="#ef4444" stroke-width="1.5" stroke-dasharray="5,3"/>
|
|
682
|
+
<polygon points="432,150 435,140 438,150" fill="#ef4444"/>
|
|
683
|
+
<text x="505" y="166" text-anchor="middle" fill="#ef4444" font-size="9" font-weight="500">REJECTED</text>
|
|
684
|
+
|
|
685
|
+
<!-- Legend -->
|
|
686
|
+
<g transform="translate(30, 280)">
|
|
687
|
+
<rect x="0" y="0" width="760" height="55" rx="8" fill="rgba(30,41,59,0.8)" stroke="#334155" stroke-width="1"/>
|
|
688
|
+
<text x="20" y="18" fill="#94a3b8" font-size="10" font-weight="600">LEGEND:</text>
|
|
689
|
+
|
|
690
|
+
<rect x="20" y="28" width="12" height="12" rx="3" fill="url(#initGrad)"/>
|
|
691
|
+
<text x="38" y="39" fill="#94a3b8" font-size="9">Haiku (fast)</text>
|
|
692
|
+
|
|
693
|
+
<rect x="130" y="28" width="12" height="12" rx="3" fill="url(#analyseGrad)"/>
|
|
694
|
+
<text x="148" y="39" fill="#94a3b8" font-size="9">Opus (ULTRATHINK)</text>
|
|
695
|
+
|
|
696
|
+
<rect x="280" y="28" width="12" height="12" rx="3" fill="url(#specifyGrad)"/>
|
|
697
|
+
<text x="298" y="39" fill="#94a3b8" font-size="9">Sonnet (detail)</text>
|
|
698
|
+
|
|
699
|
+
<rect x="410" y="28" width="12" height="12" rx="3" fill="url(#validateGrad)"/>
|
|
700
|
+
<text x="428" y="39" fill="#94a3b8" font-size="9">Haiku (binary gate)</text>
|
|
701
|
+
|
|
702
|
+
<rect x="560" y="28" width="12" height="12" rx="3" fill="url(#handoffGrad)"/>
|
|
703
|
+
<text x="578" y="39" fill="#94a3b8" font-size="9">Opus (zero-ambiguity)</text>
|
|
704
|
+
</g>
|
|
705
|
+
</svg>
|
|
706
|
+
</div>
|
|
707
|
+
</section>
|
|
708
|
+
|
|
709
|
+
<!-- ============================================ -->
|
|
710
|
+
<!-- STEP 00: INIT -->
|
|
711
|
+
<!-- ============================================ -->
|
|
712
|
+
<section id="step-00">
|
|
713
|
+
<h2>Step 00 — Init</h2>
|
|
714
|
+
|
|
624
715
|
<div class="command-card">
|
|
625
716
|
<div class="command-header">
|
|
626
|
-
<code class="command-name"
|
|
627
|
-
<span class="badge badge-
|
|
717
|
+
<code class="command-name">step-00-init</code>
|
|
718
|
+
<span class="badge badge-blue">Haiku</span>
|
|
719
|
+
<span class="badge badge-teal">
|
|
720
|
+
<span data-lang="fr">Rapide</span>
|
|
721
|
+
<span data-lang="en">Fast</span>
|
|
722
|
+
</span>
|
|
628
723
|
</div>
|
|
629
724
|
<div class="command-body">
|
|
630
725
|
<p data-lang="fr">
|
|
631
|
-
<strong>Mission
|
|
726
|
+
<strong>Mission :</strong> Parser les flags, router vers le bon cas d'usage, creer le <code>feature.json</code> initial.
|
|
632
727
|
</p>
|
|
633
728
|
<p data-lang="en">
|
|
634
|
-
<strong>Mission
|
|
729
|
+
<strong>Mission:</strong> Parse flags, route to the correct use case, create the initial <code>feature.json</code>.
|
|
635
730
|
</p>
|
|
636
731
|
|
|
637
|
-
<
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
732
|
+
<h4 data-lang="fr">Actions principales</h4>
|
|
733
|
+
<h4 data-lang="en">Main actions</h4>
|
|
734
|
+
<ol>
|
|
735
|
+
<li data-lang="fr">Parser les flags de commande (<code>-a</code>, <code>-e</code>, <code>-q</code>, <code>-r</code>, <code>-m</code>, <code>-i</code>)</li>
|
|
736
|
+
<li data-lang="en">Parse command flags (<code>-a</code>, <code>-e</code>, <code>-q</code>, <code>-r</code>, <code>-m</code>, <code>-i</code>)</li>
|
|
641
737
|
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
/business-analyse 0-orchestrate [feature-name] --granularity=section
|
|
645
|
-
/business-analyse 0-orchestrate [feature-name] --granularity=resources</code></pre>
|
|
646
|
-
</div>
|
|
738
|
+
<li data-lang="fr">Router vers le handler (question / refactor / micro / new)</li>
|
|
739
|
+
<li data-lang="en">Route to handler (question / refactor / micro / new)</li>
|
|
647
740
|
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
<li data-lang="fr">
|
|
652
|
-
<li data-lang="en">
|
|
653
|
-
|
|
654
|
-
<li data-lang="
|
|
655
|
-
<li data-lang="
|
|
656
|
-
|
|
657
|
-
<li data-lang="fr">
|
|
658
|
-
<li data-lang="en">
|
|
659
|
-
|
|
660
|
-
<li data-lang="
|
|
661
|
-
<li data-lang="
|
|
662
|
-
|
|
663
|
-
<li data-lang="fr">Lance Phase 7 (DOC-HTML) pour generer la documentation</li>
|
|
664
|
-
<li data-lang="en">Launches Phase 7 (DOC-HTML) to generate documentation</li>
|
|
665
|
-
</ul>
|
|
741
|
+
<li data-lang="fr">Health check MCP (non-bloquant)</li>
|
|
742
|
+
<li data-lang="en">MCP health check (non-blocking)</li>
|
|
743
|
+
|
|
744
|
+
<li data-lang="fr">Determiner application et module cible</li>
|
|
745
|
+
<li data-lang="en">Determine target application and module</li>
|
|
746
|
+
|
|
747
|
+
<li data-lang="fr">Generer l'ID feature (<code>FEAT-NNN</code>)</li>
|
|
748
|
+
<li data-lang="en">Generate feature ID (<code>FEAT-NNN</code>)</li>
|
|
749
|
+
|
|
750
|
+
<li data-lang="fr">Creer le dossier de sortie et le <code>feature.json</code> initial via <code>ba-writer</code></li>
|
|
751
|
+
<li data-lang="en">Create output directory and initial <code>feature.json</code> via <code>ba-writer</code></li>
|
|
752
|
+
|
|
753
|
+
<li data-lang="fr">Mettre a jour <code>.business-analyse/config.json</code></li>
|
|
754
|
+
<li data-lang="en">Update <code>.business-analyse/config.json</code></li>
|
|
755
|
+
</ol>
|
|
666
756
|
|
|
667
757
|
<div class="alert alert-info">
|
|
668
|
-
<span class="alert-icon">&#
|
|
758
|
+
<span class="alert-icon">🔄</span>
|
|
669
759
|
<div class="alert-content">
|
|
760
|
+
<h5 data-lang="fr">Mode Question (-q)</h5>
|
|
761
|
+
<h5 data-lang="en">Question Mode (-q)</h5>
|
|
670
762
|
<p data-lang="fr">
|
|
671
|
-
|
|
763
|
+
Le mode question charge le <code>ba-reader</code>, repond a la question depuis le <code>feature.json</code> existant, puis termine immediatement (EXIT). Aucun fichier n'est modifie.
|
|
672
764
|
</p>
|
|
673
765
|
<p data-lang="en">
|
|
674
|
-
|
|
766
|
+
Question mode loads the <code>ba-reader</code>, answers the question from the existing <code>feature.json</code>, then exits immediately (EXIT). No files are modified.
|
|
675
767
|
</p>
|
|
676
768
|
</div>
|
|
677
769
|
</div>
|
|
770
|
+
|
|
771
|
+
<p data-lang="fr"><strong>Sortie :</strong> <code>feature.json</code> (status: <code>draft</code>)</p>
|
|
772
|
+
<p data-lang="en"><strong>Output:</strong> <code>feature.json</code> (status: <code>draft</code>)</p>
|
|
678
773
|
</div>
|
|
679
774
|
</div>
|
|
680
775
|
</section>
|
|
681
776
|
|
|
682
|
-
<!--
|
|
683
|
-
|
|
684
|
-
|
|
777
|
+
<!-- ============================================ -->
|
|
778
|
+
<!-- STEP 01: ANALYSE -->
|
|
779
|
+
<!-- ============================================ -->
|
|
780
|
+
<section id="step-01">
|
|
781
|
+
<h2>Step 01 — Analyse</h2>
|
|
782
|
+
|
|
685
783
|
<div class="command-card">
|
|
686
784
|
<div class="command-header">
|
|
687
|
-
<code class="command-name"
|
|
688
|
-
<span class="badge badge-
|
|
785
|
+
<code class="command-name">step-01-analyse</code>
|
|
786
|
+
<span class="badge badge-purple">Opus</span>
|
|
787
|
+
<span class="badge badge-orange">ULTRATHINK</span>
|
|
689
788
|
</div>
|
|
690
789
|
<div class="command-body">
|
|
691
790
|
<p data-lang="fr">
|
|
692
|
-
<strong>Mission
|
|
791
|
+
<strong>Mission :</strong> Decouverte fusionnee + analyse metier (BRD). Exploration du codebase, questionnaire progressif, regles metier, entites, suggestions proactives.
|
|
693
792
|
</p>
|
|
694
793
|
<p data-lang="en">
|
|
695
|
-
<strong>Mission
|
|
794
|
+
<strong>Mission:</strong> Merged discovery + business analysis (BRD). Codebase exploration, progressive questionnaire, business rules, entities, proactive suggestions.
|
|
696
795
|
</p>
|
|
697
796
|
|
|
698
|
-
<
|
|
699
|
-
|
|
700
|
-
|
|
797
|
+
<h4 data-lang="fr">Detection du type de feature</h4>
|
|
798
|
+
<h4 data-lang="en">Feature type detection</h4>
|
|
799
|
+
|
|
800
|
+
<div class="table-container">
|
|
801
|
+
<table class="reference-table">
|
|
802
|
+
<thead>
|
|
803
|
+
<tr>
|
|
804
|
+
<th>Type</th>
|
|
805
|
+
<th>
|
|
806
|
+
<span data-lang="fr">Mots-cles</span>
|
|
807
|
+
<span data-lang="en">Keywords</span>
|
|
808
|
+
</th>
|
|
809
|
+
<th>
|
|
810
|
+
<span data-lang="fr">Categories questionnaire</span>
|
|
811
|
+
<span data-lang="en">Questionnaire categories</span>
|
|
812
|
+
</th>
|
|
813
|
+
</tr>
|
|
814
|
+
</thead>
|
|
815
|
+
<tbody>
|
|
816
|
+
<tr>
|
|
817
|
+
<td><strong>Data-centric</strong></td>
|
|
818
|
+
<td>management, CRUD, entity</td>
|
|
819
|
+
<td>01, 02, 03, 04, 06, 11</td>
|
|
820
|
+
</tr>
|
|
821
|
+
<tr>
|
|
822
|
+
<td><strong>Integration</strong></td>
|
|
823
|
+
<td>API, sync, import/export</td>
|
|
824
|
+
<td>01, 02, 03, 05, 06</td>
|
|
825
|
+
</tr>
|
|
826
|
+
<tr>
|
|
827
|
+
<td><strong>UI-centric</strong></td>
|
|
828
|
+
<td>screen, form, dashboard</td>
|
|
829
|
+
<td>01, 02, 03, 06, 07</td>
|
|
830
|
+
</tr>
|
|
831
|
+
<tr>
|
|
832
|
+
<td><strong>Workflow</strong></td>
|
|
833
|
+
<td>process, validation, steps</td>
|
|
834
|
+
<td>01, 02, 03, 06, 09</td>
|
|
835
|
+
</tr>
|
|
836
|
+
<tr>
|
|
837
|
+
<td><strong>Reporting</strong></td>
|
|
838
|
+
<td>report, export, KPI</td>
|
|
839
|
+
<td>01, 02, 03, 04, 08</td>
|
|
840
|
+
</tr>
|
|
841
|
+
<tr>
|
|
842
|
+
<td><strong>Full-module</strong></td>
|
|
843
|
+
<td>
|
|
844
|
+
<span data-lang="fr">(complet)</span>
|
|
845
|
+
<span data-lang="en">(comprehensive)</span>
|
|
846
|
+
</td>
|
|
847
|
+
<td>
|
|
848
|
+
<span data-lang="fr">Toutes (01-13)</span>
|
|
849
|
+
<span data-lang="en">All (01-13)</span>
|
|
850
|
+
</td>
|
|
851
|
+
</tr>
|
|
852
|
+
<tr>
|
|
853
|
+
<td><strong>Micro</strong></td>
|
|
854
|
+
<td><code>-m</code> flag</td>
|
|
855
|
+
<td>01, 02, 03, 06</td>
|
|
856
|
+
</tr>
|
|
857
|
+
</tbody>
|
|
858
|
+
</table>
|
|
701
859
|
</div>
|
|
702
860
|
|
|
703
|
-
<h4 data-lang="fr">
|
|
704
|
-
<h4 data-lang="en">
|
|
705
|
-
<ul>
|
|
706
|
-
<li data-lang="fr">Dossier <code>.claude/ba/[feature-name]/</code></li>
|
|
707
|
-
<li data-lang="en">Folder <code>.claude/ba/[feature-name]/</code></li>
|
|
708
|
-
<li data-lang="fr">Fichiers de template pour chaque phase</li>
|
|
709
|
-
<li data-lang="en">Template files for each phase</li>
|
|
710
|
-
<li data-lang="fr">Configuration et metadata</li>
|
|
711
|
-
<li data-lang="en">Configuration and metadata</li>
|
|
712
|
-
</ul>
|
|
713
|
-
</div>
|
|
714
|
-
</div>
|
|
715
|
-
</section>
|
|
716
|
-
|
|
717
|
-
<!-- Phase 2: Discover -->
|
|
718
|
-
<section id="phase-2">
|
|
719
|
-
<h2>Phase 2: DISCOVER</h2>
|
|
720
|
-
<div class="command-card">
|
|
721
|
-
<div class="command-header">
|
|
722
|
-
<code class="command-name">/business-analyse 2-discover</code>
|
|
723
|
-
<span class="badge badge-blue">OPUS/ULTRATHINK</span>
|
|
724
|
-
</div>
|
|
725
|
-
<div class="command-body">
|
|
726
|
-
<p data-lang="fr">
|
|
727
|
-
<strong>Mission</strong> : Comprendre le vrai besoin utilisateur avant toute exploration technique.
|
|
728
|
-
</p>
|
|
729
|
-
<p data-lang="en">
|
|
730
|
-
<strong>Mission</strong>: Understand the real user need before any technical exploration.
|
|
731
|
-
</p>
|
|
861
|
+
<h4 data-lang="fr">Pre-recherche codebase (3 phases)</h4>
|
|
862
|
+
<h4 data-lang="en">Codebase pre-research (3 phases)</h4>
|
|
732
863
|
|
|
733
|
-
<h4 data-lang="fr">Etapes</h4>
|
|
734
|
-
<h4 data-lang="en">Steps</h4>
|
|
735
864
|
<ol>
|
|
736
|
-
<li data-lang="fr"><strong>
|
|
737
|
-
<li data-lang="en"><strong>
|
|
738
|
-
|
|
739
|
-
<li data-lang="
|
|
740
|
-
<li data-lang="
|
|
741
|
-
|
|
865
|
+
<li data-lang="fr"><strong>Phase 3a :</strong> Appels MCP (<code>analyze_extension_points</code>, <code>api_docs</code>, <code>validate_conventions</code>)</li>
|
|
866
|
+
<li data-lang="en"><strong>Phase 3a:</strong> MCP calls (<code>analyze_extension_points</code>, <code>api_docs</code>, <code>validate_conventions</code>)</li>
|
|
867
|
+
|
|
868
|
+
<li data-lang="fr"><strong>Phase 3b :</strong> Agents paralleles (entites, integrations, patterns UI) — desactive en mode <code>-e</code></li>
|
|
869
|
+
<li data-lang="en"><strong>Phase 3b:</strong> Parallel agents (entities, integrations, UI patterns) — disabled in <code>-e</code> mode</li>
|
|
870
|
+
|
|
871
|
+
<li data-lang="fr"><strong>Phase 3c :</strong> Mode economique (<code>-e</code>) — Glob/Grep directement</li>
|
|
872
|
+
<li data-lang="en"><strong>Phase 3c:</strong> Economy mode (<code>-e</code>) — Glob/Grep directly</li>
|
|
742
873
|
</ol>
|
|
743
874
|
|
|
744
|
-
<
|
|
745
|
-
|
|
746
|
-
|
|
875
|
+
<h4 data-lang="fr">5 techniques d'elicitation</h4>
|
|
876
|
+
<h4 data-lang="en">5 elicitation techniques</h4>
|
|
877
|
+
|
|
878
|
+
<div class="table-container">
|
|
879
|
+
<table class="reference-table">
|
|
880
|
+
<thead>
|
|
881
|
+
<tr>
|
|
882
|
+
<th>#</th>
|
|
883
|
+
<th>Technique</th>
|
|
884
|
+
<th>
|
|
885
|
+
<span data-lang="fr">Objectif</span>
|
|
886
|
+
<span data-lang="en">Purpose</span>
|
|
887
|
+
</th>
|
|
888
|
+
</tr>
|
|
889
|
+
</thead>
|
|
890
|
+
<tbody>
|
|
891
|
+
<tr>
|
|
892
|
+
<td>1</td>
|
|
893
|
+
<td>Solution → Problem</td>
|
|
894
|
+
<td>
|
|
895
|
+
<span data-lang="fr">Recadrer si l'utilisateur decrit une solution</span>
|
|
896
|
+
<span data-lang="en">Reframe if user describes a solution</span>
|
|
897
|
+
</td>
|
|
898
|
+
</tr>
|
|
899
|
+
<tr>
|
|
900
|
+
<td>2</td>
|
|
901
|
+
<td>5 Whys</td>
|
|
902
|
+
<td>
|
|
903
|
+
<span data-lang="fr">Analyse de cause racine</span>
|
|
904
|
+
<span data-lang="en">Root cause analysis</span>
|
|
905
|
+
</td>
|
|
906
|
+
</tr>
|
|
907
|
+
<tr>
|
|
908
|
+
<td>3</td>
|
|
909
|
+
<td>
|
|
910
|
+
<span data-lang="fr">Scenario concret</span>
|
|
911
|
+
<span data-lang="en">Concrete scenario</span>
|
|
912
|
+
</td>
|
|
913
|
+
<td>
|
|
914
|
+
<span data-lang="fr">Extraire un exemple reel</span>
|
|
915
|
+
<span data-lang="en">Extract a real-world example</span>
|
|
916
|
+
</td>
|
|
917
|
+
</tr>
|
|
918
|
+
<tr>
|
|
919
|
+
<td>4</td>
|
|
920
|
+
<td>
|
|
921
|
+
<span data-lang="fr">Test d'absence</span>
|
|
922
|
+
<span data-lang="en">Absence test</span>
|
|
923
|
+
</td>
|
|
924
|
+
<td>
|
|
925
|
+
<span data-lang="fr">Que se passe-t-il sans cette feature ?</span>
|
|
926
|
+
<span data-lang="en">What happens without this feature?</span>
|
|
927
|
+
</td>
|
|
928
|
+
</tr>
|
|
929
|
+
<tr>
|
|
930
|
+
<td>5</td>
|
|
931
|
+
<td>
|
|
932
|
+
<span data-lang="fr">Sondage de completude</span>
|
|
933
|
+
<span data-lang="en">Completeness probing</span>
|
|
934
|
+
</td>
|
|
935
|
+
<td>
|
|
936
|
+
<span data-lang="fr">Challenger chaque reponse de type liste</span>
|
|
937
|
+
<span data-lang="en">Challenge every list-type answer</span>
|
|
938
|
+
</td>
|
|
939
|
+
</tr>
|
|
940
|
+
</tbody>
|
|
941
|
+
</table>
|
|
747
942
|
</div>
|
|
748
943
|
|
|
749
|
-
<h4>
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
<
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
</
|
|
763
|
-
<
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
<span data-lang="fr">Note feature existante a etendre</span>
|
|
775
|
-
<span data-lang="en">Note existing feature to extend</span>
|
|
776
|
-
</td>
|
|
777
|
-
</tr>
|
|
778
|
-
<tr>
|
|
779
|
-
<td><strong>NEW</strong></td>
|
|
780
|
-
<td>
|
|
781
|
-
<span data-lang="fr">Proceder normalement</span>
|
|
782
|
-
<span data-lang="en">Proceed normally</span>
|
|
783
|
-
</td>
|
|
784
|
-
</tr>
|
|
785
|
-
</tbody>
|
|
786
|
-
</table>
|
|
944
|
+
<h4 data-lang="fr">Sorties produites</h4>
|
|
945
|
+
<h4 data-lang="en">Produced outputs</h4>
|
|
946
|
+
|
|
947
|
+
<ul>
|
|
948
|
+
<li data-lang="fr"><strong>Regles metier</strong> (BR-{category}-NNN) avec priorite MUST/SHOULD/COULD</li>
|
|
949
|
+
<li data-lang="en"><strong>Business rules</strong> (BR-{category}-NNN) with MUST/SHOULD/COULD priority</li>
|
|
950
|
+
|
|
951
|
+
<li data-lang="fr"><strong>Entites</strong> (vue metier uniquement, pas de champs techniques)</li>
|
|
952
|
+
<li data-lang="en"><strong>Entities</strong> (business view only, no technical fields)</li>
|
|
953
|
+
|
|
954
|
+
<li data-lang="fr"><strong>Objectifs mesurables</strong> (OBJ-NNN)</li>
|
|
955
|
+
<li data-lang="en"><strong>Measurable objectives</strong> (OBJ-NNN)</li>
|
|
956
|
+
|
|
957
|
+
<li data-lang="fr"><strong>Flux de processus</strong> (points d'entree, decisions, actions)</li>
|
|
958
|
+
<li data-lang="en"><strong>Process flows</strong> (entry points, decisions, actions)</li>
|
|
959
|
+
|
|
960
|
+
<li data-lang="fr"><strong>Suggestions proactives</strong> depuis le catalogue de patterns</li>
|
|
961
|
+
<li data-lang="en"><strong>Proactive suggestions</strong> from the pattern catalog</li>
|
|
962
|
+
|
|
963
|
+
<li data-lang="fr"><strong>Analyse de risques</strong> (probabilite x impact)</li>
|
|
964
|
+
<li data-lang="en"><strong>Risk analysis</strong> (probability x impact)</li>
|
|
965
|
+
</ul>
|
|
966
|
+
|
|
967
|
+
<p data-lang="fr"><strong>Sortie :</strong> <code>feature.json</code> enrichi avec <code>discovery</code>, <code>analysis</code>, <code>suggestions</code> (status: <code>analysed</code>)</p>
|
|
968
|
+
<p data-lang="en"><strong>Output:</strong> <code>feature.json</code> enriched with <code>discovery</code>, <code>analysis</code>, <code>suggestions</code> (status: <code>analysed</code>)</p>
|
|
787
969
|
</div>
|
|
788
970
|
</div>
|
|
789
971
|
</section>
|
|
790
972
|
|
|
791
|
-
<!--
|
|
792
|
-
|
|
793
|
-
|
|
973
|
+
<!-- ============================================ -->
|
|
974
|
+
<!-- STEP 02: SPECIFY -->
|
|
975
|
+
<!-- ============================================ -->
|
|
976
|
+
<section id="step-02">
|
|
977
|
+
<h2>Step 02 — Specify</h2>
|
|
978
|
+
|
|
794
979
|
<div class="command-card">
|
|
795
980
|
<div class="command-header">
|
|
796
|
-
<code class="command-name"
|
|
797
|
-
<span class="badge badge-
|
|
981
|
+
<code class="command-name">step-02-specify</code>
|
|
982
|
+
<span class="badge badge-purple">Sonnet</span>
|
|
983
|
+
<span class="badge badge-teal">FRD</span>
|
|
798
984
|
</div>
|
|
799
985
|
<div class="command-body">
|
|
800
986
|
<p data-lang="fr">
|
|
801
|
-
<strong>Mission
|
|
987
|
+
<strong>Mission :</strong> Specification detaillee — cas d'usage (UC), exigences fonctionnelles (FR), acteurs, permissions, wireframes, scenarios Gherkin, validations, cycle de vie, SeedData.
|
|
802
988
|
</p>
|
|
803
989
|
<p data-lang="en">
|
|
804
|
-
<strong>Mission
|
|
990
|
+
<strong>Mission:</strong> Detailed specification — use cases (UC), functional requirements (FR), actors, permissions, wireframes, Gherkin scenarios, validations, lifecycle, SeedData.
|
|
805
991
|
</p>
|
|
806
992
|
|
|
807
|
-
<
|
|
808
|
-
|
|
809
|
-
|
|
993
|
+
<h4 data-lang="fr">Sections specifiees</h4>
|
|
994
|
+
<h4 data-lang="en">Specified sections</h4>
|
|
995
|
+
|
|
996
|
+
<div class="table-container">
|
|
997
|
+
<table class="reference-table">
|
|
998
|
+
<thead>
|
|
999
|
+
<tr>
|
|
1000
|
+
<th>Section</th>
|
|
1001
|
+
<th>
|
|
1002
|
+
<span data-lang="fr">Contenu</span>
|
|
1003
|
+
<span data-lang="en">Content</span>
|
|
1004
|
+
</th>
|
|
1005
|
+
<th>Format</th>
|
|
1006
|
+
</tr>
|
|
1007
|
+
</thead>
|
|
1008
|
+
<tbody>
|
|
1009
|
+
<tr>
|
|
1010
|
+
<td>
|
|
1011
|
+
<span data-lang="fr">Acteurs & Permissions</span>
|
|
1012
|
+
<span data-lang="en">Actors & Permissions</span>
|
|
1013
|
+
</td>
|
|
1014
|
+
<td>
|
|
1015
|
+
<span data-lang="fr">Matrice acteurs x ressources x operations</span>
|
|
1016
|
+
<span data-lang="en">Actors x resources x operations matrix</span>
|
|
1017
|
+
</td>
|
|
1018
|
+
<td>Read, Create, Update, Delete, Approve, Delegate, Execute</td>
|
|
1019
|
+
</tr>
|
|
1020
|
+
<tr>
|
|
1021
|
+
<td>
|
|
1022
|
+
<span data-lang="fr">Cas d'usage</span>
|
|
1023
|
+
<span data-lang="en">Use Cases</span>
|
|
1024
|
+
</td>
|
|
1025
|
+
<td>UC-001, UC-002...</td>
|
|
1026
|
+
<td>
|
|
1027
|
+
<span data-lang="fr">Lies aux BR, categories CRUD/Workflow/Reports</span>
|
|
1028
|
+
<span data-lang="en">Linked to BRs, CRUD/Workflow/Reports categories</span>
|
|
1029
|
+
</td>
|
|
1030
|
+
</tr>
|
|
1031
|
+
<tr>
|
|
1032
|
+
<td>
|
|
1033
|
+
<span data-lang="fr">Exigences fonctionnelles</span>
|
|
1034
|
+
<span data-lang="en">Functional Requirements</span>
|
|
1035
|
+
</td>
|
|
1036
|
+
<td>FR-001, FR-002...</td>
|
|
1037
|
+
<td>
|
|
1038
|
+
<span data-lang="fr">Priorite MoSCoW, lies aux UC et BR</span>
|
|
1039
|
+
<span data-lang="en">MoSCoW priority, linked to UCs and BRs</span>
|
|
1040
|
+
</td>
|
|
1041
|
+
</tr>
|
|
1042
|
+
<tr>
|
|
1043
|
+
<td>SeedData</td>
|
|
1044
|
+
<td>
|
|
1045
|
+
<span data-lang="fr">5 tables obligatoires par module</span>
|
|
1046
|
+
<span data-lang="en">5 mandatory tables per module</span>
|
|
1047
|
+
</td>
|
|
1048
|
+
<td>Status, Priority, Category, Type, Department</td>
|
|
1049
|
+
</tr>
|
|
1050
|
+
<tr>
|
|
1051
|
+
<td>Navigation</td>
|
|
1052
|
+
<td>
|
|
1053
|
+
<span data-lang="fr">Hierarchie 3 niveaux</span>
|
|
1054
|
+
<span data-lang="en">3-level hierarchy</span>
|
|
1055
|
+
</td>
|
|
1056
|
+
<td>Level 1 → Level 2 → Level 3</td>
|
|
1057
|
+
</tr>
|
|
1058
|
+
<tr>
|
|
1059
|
+
<td>Wireframes</td>
|
|
1060
|
+
<td>
|
|
1061
|
+
<span data-lang="fr">Ecrans cles (List, Create, Detail)</span>
|
|
1062
|
+
<span data-lang="en">Key screens (List, Create, Detail)</span>
|
|
1063
|
+
</td>
|
|
1064
|
+
<td>Layout, components, actions</td>
|
|
1065
|
+
</tr>
|
|
1066
|
+
<tr>
|
|
1067
|
+
<td>
|
|
1068
|
+
<span data-lang="fr">Scenarios Gherkin</span>
|
|
1069
|
+
<span data-lang="en">Gherkin Scenarios</span>
|
|
1070
|
+
</td>
|
|
1071
|
+
<td>Given / When / Then</td>
|
|
1072
|
+
<td>
|
|
1073
|
+
<span data-lang="fr">Happy path, alternatives, erreurs</span>
|
|
1074
|
+
<span data-lang="en">Happy path, alternatives, errors</span>
|
|
1075
|
+
</td>
|
|
1076
|
+
</tr>
|
|
1077
|
+
<tr>
|
|
1078
|
+
<td>
|
|
1079
|
+
<span data-lang="fr">Cycle de vie</span>
|
|
1080
|
+
<span data-lang="en">Data Lifecycle</span>
|
|
1081
|
+
</td>
|
|
1082
|
+
<td>
|
|
1083
|
+
<span data-lang="fr">Machine a etats par entite</span>
|
|
1084
|
+
<span data-lang="en">State machine per entity</span>
|
|
1085
|
+
</td>
|
|
1086
|
+
<td>
|
|
1087
|
+
<span data-lang="fr">Transitions, visibilite, permissions par etat</span>
|
|
1088
|
+
<span data-lang="en">Transitions, visibility, permissions per state</span>
|
|
1089
|
+
</td>
|
|
1090
|
+
</tr>
|
|
1091
|
+
</tbody>
|
|
1092
|
+
</table>
|
|
810
1093
|
</div>
|
|
811
1094
|
|
|
812
|
-
<h4 data-lang="fr">Analyse des gaps</h4>
|
|
813
|
-
<h4 data-lang="en">Gap Analysis</h4>
|
|
814
|
-
<ul>
|
|
815
|
-
<li data-lang="fr"><strong>Feasibility Check</strong> : Ce que l'utilisateur veut vs ce que le systeme peut faire</li>
|
|
816
|
-
<li data-lang="en"><strong>Feasibility Check</strong>: What user wants vs what system can do</li>
|
|
817
|
-
<li data-lang="fr"><strong>Conflicts</strong> : Contradictions entre besoin et contraintes techniques</li>
|
|
818
|
-
<li data-lang="en"><strong>Conflicts</strong>: Contradictions between need and technical constraints</li>
|
|
819
|
-
<li data-lang="fr"><strong>Opportunities</strong> : Features existantes qui peuvent aider</li>
|
|
820
|
-
<li data-lang="en"><strong>Opportunities</strong>: Existing features that can help</li>
|
|
821
|
-
</ul>
|
|
822
|
-
|
|
823
1095
|
<div class="alert alert-warning">
|
|
824
1096
|
<span class="alert-icon">⚠</span>
|
|
825
1097
|
<div class="alert-content">
|
|
1098
|
+
<h5 data-lang="fr">5 SeedData obligatoires</h5>
|
|
1099
|
+
<h5 data-lang="en">5 Mandatory SeedData</h5>
|
|
826
1100
|
<p data-lang="fr">
|
|
827
|
-
|
|
1101
|
+
Sans ces 5 fichiers, le module est invisible et retourne 403 :
|
|
1102
|
+
<code>NavigationModuleConfiguration</code>,
|
|
1103
|
+
<code>NavigationTranslationConfiguration</code>,
|
|
1104
|
+
<code>PermissionConfiguration</code>,
|
|
1105
|
+
<code>Permissions.cs</code>,
|
|
1106
|
+
<code>RolePermissionConfiguration</code>.
|
|
828
1107
|
</p>
|
|
829
1108
|
<p data-lang="en">
|
|
830
|
-
|
|
1109
|
+
Without these 5 files, the module is invisible and returns 403:
|
|
1110
|
+
<code>NavigationModuleConfiguration</code>,
|
|
1111
|
+
<code>NavigationTranslationConfiguration</code>,
|
|
1112
|
+
<code>PermissionConfiguration</code>,
|
|
1113
|
+
<code>Permissions.cs</code>,
|
|
1114
|
+
<code>RolePermissionConfiguration</code>.
|
|
831
1115
|
</p>
|
|
832
1116
|
</div>
|
|
833
1117
|
</div>
|
|
1118
|
+
|
|
1119
|
+
<p data-lang="fr"><strong>Sortie :</strong> <code>feature.json</code> enrichi avec <code>specification</code> (status: <code>specified</code>)</p>
|
|
1120
|
+
<p data-lang="en"><strong>Output:</strong> <code>feature.json</code> enriched with <code>specification</code> (status: <code>specified</code>)</p>
|
|
834
1121
|
</div>
|
|
835
1122
|
</div>
|
|
836
1123
|
</section>
|
|
837
1124
|
|
|
838
|
-
<!--
|
|
839
|
-
|
|
840
|
-
|
|
1125
|
+
<!-- ============================================ -->
|
|
1126
|
+
<!-- STEP 03: VALIDATE -->
|
|
1127
|
+
<!-- ============================================ -->
|
|
1128
|
+
<section id="step-03">
|
|
1129
|
+
<h2>Step 03 — Validate</h2>
|
|
1130
|
+
|
|
841
1131
|
<div class="command-card">
|
|
842
1132
|
<div class="command-header">
|
|
843
|
-
<code class="command-name"
|
|
844
|
-
<span class="badge badge-
|
|
1133
|
+
<code class="command-name">step-03-validate</code>
|
|
1134
|
+
<span class="badge badge-green">Haiku</span>
|
|
1135
|
+
<span class="badge badge-blue">
|
|
1136
|
+
<span data-lang="fr">Porte qualite</span>
|
|
1137
|
+
<span data-lang="en">Quality gate</span>
|
|
1138
|
+
</span>
|
|
845
1139
|
</div>
|
|
846
1140
|
<div class="command-body">
|
|
847
1141
|
<p data-lang="fr">
|
|
848
|
-
<strong>Mission
|
|
1142
|
+
<strong>Mission :</strong> Porte qualite avant le handoff — decision binaire APPROVED / REJECTED.
|
|
849
1143
|
</p>
|
|
850
1144
|
<p data-lang="en">
|
|
851
|
-
<strong>Mission
|
|
1145
|
+
<strong>Mission:</strong> Quality gate before handoff — binary decision APPROVED / REJECTED.
|
|
852
1146
|
</p>
|
|
853
1147
|
|
|
854
|
-
<
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
1148
|
+
<h4 data-lang="fr">Controles effectues</h4>
|
|
1149
|
+
<h4 data-lang="en">Checks performed</h4>
|
|
1150
|
+
|
|
1151
|
+
<div class="table-container">
|
|
1152
|
+
<table class="reference-table">
|
|
1153
|
+
<thead>
|
|
1154
|
+
<tr>
|
|
1155
|
+
<th>
|
|
1156
|
+
<span data-lang="fr">Controle</span>
|
|
1157
|
+
<span data-lang="en">Check</span>
|
|
1158
|
+
</th>
|
|
1159
|
+
<th>
|
|
1160
|
+
<span data-lang="fr">Verification</span>
|
|
1161
|
+
<span data-lang="en">Verification</span>
|
|
1162
|
+
</th>
|
|
1163
|
+
<th>
|
|
1164
|
+
<span data-lang="fr">Impact si echec</span>
|
|
1165
|
+
<span data-lang="en">Impact on failure</span>
|
|
1166
|
+
</th>
|
|
1167
|
+
</tr>
|
|
1168
|
+
</thead>
|
|
1169
|
+
<tbody>
|
|
1170
|
+
<tr>
|
|
1171
|
+
<td>
|
|
1172
|
+
<span data-lang="fr">Completude</span>
|
|
1173
|
+
<span data-lang="en">Completeness</span>
|
|
1174
|
+
</td>
|
|
1175
|
+
<td>
|
|
1176
|
+
<span data-lang="fr">Toutes sections requises presentes</span>
|
|
1177
|
+
<span data-lang="en">All required sections present</span>
|
|
1178
|
+
</td>
|
|
1179
|
+
<td><span class="badge badge-red">REJECT</span></td>
|
|
1180
|
+
</tr>
|
|
1181
|
+
<tr>
|
|
1182
|
+
<td>
|
|
1183
|
+
<span data-lang="fr">Coherence</span>
|
|
1184
|
+
<span data-lang="en">Consistency</span>
|
|
1185
|
+
</td>
|
|
1186
|
+
<td>UC ↔ FR, FR ↔ BR, Actor ↔ Permission</td>
|
|
1187
|
+
<td>
|
|
1188
|
+
<span class="badge badge-red">REJECT</span> (error) /
|
|
1189
|
+
<span class="badge badge-orange">WARN</span> (warning)
|
|
1190
|
+
</td>
|
|
1191
|
+
</tr>
|
|
1192
|
+
<tr>
|
|
1193
|
+
<td>
|
|
1194
|
+
<span data-lang="fr">Conventions SmartStack</span>
|
|
1195
|
+
<span data-lang="en">SmartStack conventions</span>
|
|
1196
|
+
</td>
|
|
1197
|
+
<td>
|
|
1198
|
+
<span data-lang="fr">Nommage PascalCase, UC-NNN, FR-NNN, BR-NNN</span>
|
|
1199
|
+
<span data-lang="en">Naming PascalCase, UC-NNN, FR-NNN, BR-NNN</span>
|
|
1200
|
+
</td>
|
|
1201
|
+
<td><span class="badge badge-red">REJECT</span></td>
|
|
1202
|
+
</tr>
|
|
1203
|
+
<tr>
|
|
1204
|
+
<td>
|
|
1205
|
+
<span data-lang="fr">Risques</span>
|
|
1206
|
+
<span data-lang="en">Risks</span>
|
|
1207
|
+
</td>
|
|
1208
|
+
<td>
|
|
1209
|
+
<span data-lang="fr">Scope creep, securite, complexite</span>
|
|
1210
|
+
<span data-lang="en">Scope creep, security, complexity</span>
|
|
1211
|
+
</td>
|
|
1212
|
+
<td>
|
|
1213
|
+
<span class="badge badge-red">REJECT</span> (critical) /
|
|
1214
|
+
<span class="badge badge-orange">USER</span> (high)
|
|
1215
|
+
</td>
|
|
1216
|
+
</tr>
|
|
1217
|
+
<tr>
|
|
1218
|
+
<td>RBAC</td>
|
|
1219
|
+
<td>
|
|
1220
|
+
<span data-lang="fr">Guest ⊂ User ⊂ Manager ⊂ Admin</span>
|
|
1221
|
+
<span data-lang="en">Guest ⊂ User ⊂ Manager ⊂ Admin</span>
|
|
1222
|
+
</td>
|
|
1223
|
+
<td><span class="badge badge-red">REJECT</span></td>
|
|
1224
|
+
</tr>
|
|
1225
|
+
</tbody>
|
|
1226
|
+
</table>
|
|
864
1227
|
</div>
|
|
865
1228
|
|
|
866
|
-
<h4>
|
|
867
|
-
|
|
868
|
-
<span data-lang="en">Dynamic sections</span>
|
|
869
|
-
</h4>
|
|
870
|
-
<table class="reference-table">
|
|
871
|
-
<thead>
|
|
872
|
-
<tr>
|
|
873
|
-
<th>Section</th>
|
|
874
|
-
<th>
|
|
875
|
-
<span data-lang="fr">Incluse quand</span>
|
|
876
|
-
<span data-lang="en">Included when</span>
|
|
877
|
-
</th>
|
|
878
|
-
</tr>
|
|
879
|
-
</thead>
|
|
880
|
-
<tbody>
|
|
881
|
-
<tr>
|
|
882
|
-
<td>Context</td>
|
|
883
|
-
<td>
|
|
884
|
-
<span data-lang="fr">Toujours</span>
|
|
885
|
-
<span data-lang="en">Always</span>
|
|
886
|
-
</td>
|
|
887
|
-
</tr>
|
|
888
|
-
<tr>
|
|
889
|
-
<td>Functional Requirements</td>
|
|
890
|
-
<td>
|
|
891
|
-
<span data-lang="fr">Toujours</span>
|
|
892
|
-
<span data-lang="en">Always</span>
|
|
893
|
-
</td>
|
|
894
|
-
</tr>
|
|
895
|
-
<tr>
|
|
896
|
-
<td>Data Model</td>
|
|
897
|
-
<td>
|
|
898
|
-
<span data-lang="fr">Changements DB</span>
|
|
899
|
-
<span data-lang="en">DB changes</span>
|
|
900
|
-
</td>
|
|
901
|
-
</tr>
|
|
902
|
-
<tr>
|
|
903
|
-
<td>UI Specification</td>
|
|
904
|
-
<td>
|
|
905
|
-
<span data-lang="fr">Changements UI</span>
|
|
906
|
-
<span data-lang="en">UI changes</span>
|
|
907
|
-
</td>
|
|
908
|
-
</tr>
|
|
909
|
-
<tr>
|
|
910
|
-
<td>Navigation</td>
|
|
911
|
-
<td>
|
|
912
|
-
<span data-lang="fr">Nouvelle page</span>
|
|
913
|
-
<span data-lang="en">New page</span>
|
|
914
|
-
</td>
|
|
915
|
-
</tr>
|
|
916
|
-
<tr>
|
|
917
|
-
<td>Permissions</td>
|
|
918
|
-
<td>
|
|
919
|
-
<span data-lang="fr">Nouvelles permissions</span>
|
|
920
|
-
<span data-lang="en">New permissions</span>
|
|
921
|
-
</td>
|
|
922
|
-
</tr>
|
|
923
|
-
<tr>
|
|
924
|
-
<td>User Flow</td>
|
|
925
|
-
<td>
|
|
926
|
-
<span data-lang="fr">Workflow complexe</span>
|
|
927
|
-
<span data-lang="en">Complex workflow</span>
|
|
928
|
-
</td>
|
|
929
|
-
</tr>
|
|
930
|
-
<tr>
|
|
931
|
-
<td>API Specification</td>
|
|
932
|
-
<td>
|
|
933
|
-
<span data-lang="fr">Changements backend</span>
|
|
934
|
-
<span data-lang="en">Backend changes</span>
|
|
935
|
-
</td>
|
|
936
|
-
</tr>
|
|
937
|
-
<tr>
|
|
938
|
-
<td>Acceptance Criteria</td>
|
|
939
|
-
<td>
|
|
940
|
-
<span data-lang="fr">Toujours</span>
|
|
941
|
-
<span data-lang="en">Always</span>
|
|
942
|
-
</td>
|
|
943
|
-
</tr>
|
|
944
|
-
</tbody>
|
|
945
|
-
</table>
|
|
946
|
-
|
|
947
|
-
<h4>Options</h4>
|
|
948
|
-
<table class="reference-table">
|
|
949
|
-
<thead>
|
|
950
|
-
<tr>
|
|
951
|
-
<th>Option</th>
|
|
952
|
-
<th>
|
|
953
|
-
<span data-lang="fr">Effet</span>
|
|
954
|
-
<span data-lang="en">Effect</span>
|
|
955
|
-
</th>
|
|
956
|
-
<th>Tokens</th>
|
|
957
|
-
</tr>
|
|
958
|
-
</thead>
|
|
959
|
-
<tbody>
|
|
960
|
-
<tr>
|
|
961
|
-
<td><code>--mockup</code></td>
|
|
962
|
-
<td>
|
|
963
|
-
<span data-lang="fr">Maquette HTML avec CSS projet</span>
|
|
964
|
-
<span data-lang="en">HTML mockup with project CSS</span>
|
|
965
|
-
</td>
|
|
966
|
-
<td>+2,000</td>
|
|
967
|
-
</tr>
|
|
968
|
-
<tr>
|
|
969
|
-
<td><code>--plantuml</code></td>
|
|
970
|
-
<td>
|
|
971
|
-
<span data-lang="fr">Diagrammes ER/sequence</span>
|
|
972
|
-
<span data-lang="en">ER/sequence diagrams</span>
|
|
973
|
-
</td>
|
|
974
|
-
<td>+800</td>
|
|
975
|
-
</tr>
|
|
976
|
-
</tbody>
|
|
977
|
-
</table>
|
|
978
|
-
</div>
|
|
979
|
-
</div>
|
|
980
|
-
</section>
|
|
1229
|
+
<h4 data-lang="fr">En cas de rejet</h4>
|
|
1230
|
+
<h4 data-lang="en">On rejection</h4>
|
|
981
1231
|
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
<div class="command-card">
|
|
986
|
-
<div class="command-header">
|
|
987
|
-
<code class="command-name">/business-analyse 5-validate</code>
|
|
988
|
-
<span class="badge badge-teal">Haiku</span>
|
|
989
|
-
</div>
|
|
990
|
-
<div class="command-body">
|
|
991
|
-
<p data-lang="fr">
|
|
992
|
-
<strong>Mission</strong> : Presenter le FRD a l'utilisateur et collecter son feedback.
|
|
993
|
-
</p>
|
|
994
|
-
<p data-lang="en">
|
|
995
|
-
<strong>Mission</strong>: Present FRD to user and collect feedback.
|
|
996
|
-
</p>
|
|
1232
|
+
<ul>
|
|
1233
|
+
<li data-lang="fr"><strong>Auto-revision :</strong> corrections automatiques (orphelins, nommage, references invalides)</li>
|
|
1234
|
+
<li data-lang="en"><strong>Auto-revise:</strong> automatic corrections (orphans, naming, invalid references)</li>
|
|
997
1235
|
|
|
998
|
-
|
|
999
|
-
<
|
|
1000
|
-
<pre><code>/business-analyse 5-validate [feature-name]</code></pre>
|
|
1001
|
-
</div>
|
|
1236
|
+
<li data-lang="fr"><strong>Revision manuelle :</strong> retour a step-02</li>
|
|
1237
|
+
<li data-lang="en"><strong>Manual revision:</strong> return to step-02</li>
|
|
1002
1238
|
|
|
1003
|
-
|
|
1004
|
-
<
|
|
1005
|
-
|
|
1006
|
-
</h4>
|
|
1007
|
-
<table class="reference-table">
|
|
1008
|
-
<thead>
|
|
1009
|
-
<tr>
|
|
1010
|
-
<th>Option</th>
|
|
1011
|
-
<th>Action</th>
|
|
1012
|
-
</tr>
|
|
1013
|
-
</thead>
|
|
1014
|
-
<tbody>
|
|
1015
|
-
<tr style="background: rgba(34, 197, 94, 0.1);">
|
|
1016
|
-
<td><strong>APPROVED</strong></td>
|
|
1017
|
-
<td>
|
|
1018
|
-
<span data-lang="fr">Passer a Phase 6 (Handoff)</span>
|
|
1019
|
-
<span data-lang="en">Proceed to Phase 6 (Handoff)</span>
|
|
1020
|
-
</td>
|
|
1021
|
-
</tr>
|
|
1022
|
-
<tr style="background: rgba(234, 179, 8, 0.1);">
|
|
1023
|
-
<td><strong>MINOR CHANGES</strong></td>
|
|
1024
|
-
<td>
|
|
1025
|
-
<span data-lang="fr">Modifications directes dans le FRD</span>
|
|
1026
|
-
<span data-lang="en">Direct modifications in FRD</span>
|
|
1027
|
-
</td>
|
|
1028
|
-
</tr>
|
|
1029
|
-
<tr style="background: rgba(239, 68, 68, 0.1);">
|
|
1030
|
-
<td><strong>MAJOR CHANGES</strong></td>
|
|
1031
|
-
<td>
|
|
1032
|
-
<span data-lang="fr">Retour a Phase 3 (Analyse)</span>
|
|
1033
|
-
<span data-lang="en">Return to Phase 3 (Analyse)</span>
|
|
1034
|
-
</td>
|
|
1035
|
-
</tr>
|
|
1036
|
-
<tr style="background: rgba(107, 114, 128, 0.1);">
|
|
1037
|
-
<td><strong>REJECTED</strong></td>
|
|
1038
|
-
<td>
|
|
1039
|
-
<span data-lang="fr">Archiver et recommencer</span>
|
|
1040
|
-
<span data-lang="en">Archive and start over</span>
|
|
1041
|
-
</td>
|
|
1042
|
-
</tr>
|
|
1043
|
-
</tbody>
|
|
1044
|
-
</table>
|
|
1239
|
+
<li data-lang="fr"><strong>Force-approve :</strong> override avec avertissement</li>
|
|
1240
|
+
<li data-lang="en"><strong>Force-approve:</strong> override with warning</li>
|
|
1241
|
+
</ul>
|
|
1045
1242
|
|
|
1046
1243
|
<div class="alert alert-info">
|
|
1047
|
-
<span class="alert-icon">&#
|
|
1244
|
+
<span class="alert-icon">⚡</span>
|
|
1048
1245
|
<div class="alert-content">
|
|
1049
|
-
<h5 data-lang="fr">
|
|
1050
|
-
<h5 data-lang="en">
|
|
1246
|
+
<h5 data-lang="fr">Mode Micro</h5>
|
|
1247
|
+
<h5 data-lang="en">Micro Mode</h5>
|
|
1051
1248
|
<p data-lang="fr">
|
|
1052
|
-
En
|
|
1249
|
+
En mode micro (<code>-m</code>), la validation est automatique — auto-approve sans interaction utilisateur.
|
|
1053
1250
|
</p>
|
|
1054
1251
|
<p data-lang="en">
|
|
1055
|
-
|
|
1252
|
+
In micro mode (<code>-m</code>), validation is automatic — auto-approve without user interaction.
|
|
1056
1253
|
</p>
|
|
1057
1254
|
</div>
|
|
1058
1255
|
</div>
|
|
1256
|
+
|
|
1257
|
+
<p data-lang="fr"><strong>Sortie :</strong> <code>feature.json</code> enrichi avec <code>validation</code> (status: <code>approved</code>)</p>
|
|
1258
|
+
<p data-lang="en"><strong>Output:</strong> <code>feature.json</code> enriched with <code>validation</code> (status: <code>approved</code>)</p>
|
|
1059
1259
|
</div>
|
|
1060
1260
|
</div>
|
|
1061
1261
|
</section>
|
|
1062
1262
|
|
|
1063
|
-
<!--
|
|
1064
|
-
|
|
1065
|
-
|
|
1263
|
+
<!-- ============================================ -->
|
|
1264
|
+
<!-- STEP 04: HANDOFF -->
|
|
1265
|
+
<!-- ============================================ -->
|
|
1266
|
+
<section id="step-04">
|
|
1267
|
+
<h2>Step 04 — Handoff</h2>
|
|
1268
|
+
|
|
1066
1269
|
<div class="command-card">
|
|
1067
1270
|
<div class="command-header">
|
|
1068
|
-
<code class="command-name"
|
|
1069
|
-
<span class="badge badge-
|
|
1271
|
+
<code class="command-name">step-04-handoff</code>
|
|
1272
|
+
<span class="badge badge-orange">Opus</span>
|
|
1273
|
+
<span class="badge badge-purple">ULTRATHINK</span>
|
|
1070
1274
|
</div>
|
|
1071
1275
|
<div class="command-body">
|
|
1072
1276
|
<p data-lang="fr">
|
|
1073
|
-
<strong>Mission
|
|
1277
|
+
<strong>Mission :</strong> Generer le package de handoff pour le developpement — mapping fichiers, endpoints API, plan de tests, i18n, et generation du <code>prd.json</code> pour Ralph Loop.
|
|
1074
1278
|
</p>
|
|
1075
1279
|
<p data-lang="en">
|
|
1076
|
-
<strong>Mission
|
|
1280
|
+
<strong>Mission:</strong> Generate the development handoff package — file mapping, API endpoints, test plan, i18n, and <code>prd.json</code> generation for Ralph Loop.
|
|
1077
1281
|
</p>
|
|
1078
1282
|
|
|
1079
|
-
<
|
|
1080
|
-
|
|
1081
|
-
|
|
1283
|
+
<h4 data-lang="fr">Contenu du handoff</h4>
|
|
1284
|
+
<h4 data-lang="en">Handoff content</h4>
|
|
1285
|
+
|
|
1286
|
+
<div class="table-container">
|
|
1287
|
+
<table class="reference-table">
|
|
1288
|
+
<thead>
|
|
1289
|
+
<tr>
|
|
1290
|
+
<th>Section</th>
|
|
1291
|
+
<th>
|
|
1292
|
+
<span data-lang="fr">Contenu</span>
|
|
1293
|
+
<span data-lang="en">Content</span>
|
|
1294
|
+
</th>
|
|
1295
|
+
</tr>
|
|
1296
|
+
</thead>
|
|
1297
|
+
<tbody>
|
|
1298
|
+
<tr>
|
|
1299
|
+
<td>
|
|
1300
|
+
<span data-lang="fr">Mapping fichiers</span>
|
|
1301
|
+
<span data-lang="en">File mapping</span>
|
|
1302
|
+
</td>
|
|
1303
|
+
<td>
|
|
1304
|
+
<span data-lang="fr">Backend (Entity, Service, Controller, Repository, Migration, Tests) + Frontend (Pages, Components, API Client, Redux)</span>
|
|
1305
|
+
<span data-lang="en">Backend (Entity, Service, Controller, Repository, Migration, Tests) + Frontend (Pages, Components, API Client, Redux)</span>
|
|
1306
|
+
</td>
|
|
1307
|
+
</tr>
|
|
1308
|
+
<tr>
|
|
1309
|
+
<td>
|
|
1310
|
+
<span data-lang="fr">Sequence d'implementation</span>
|
|
1311
|
+
<span data-lang="en">Implementation sequence</span>
|
|
1312
|
+
</td>
|
|
1313
|
+
<td>Domain → SeedData → Application → Infrastructure → API → Frontend</td>
|
|
1314
|
+
</tr>
|
|
1315
|
+
<tr>
|
|
1316
|
+
<td>
|
|
1317
|
+
<span data-lang="fr">Endpoints API</span>
|
|
1318
|
+
<span data-lang="en">API endpoints</span>
|
|
1319
|
+
</td>
|
|
1320
|
+
<td>
|
|
1321
|
+
<span data-lang="fr">Routes RESTful pour tous les UC, parametres, corps de reponse, codes d'erreur</span>
|
|
1322
|
+
<span data-lang="en">RESTful routes for all UCs, parameters, response bodies, error codes</span>
|
|
1323
|
+
</td>
|
|
1324
|
+
</tr>
|
|
1325
|
+
<tr>
|
|
1326
|
+
<td>
|
|
1327
|
+
<span data-lang="fr">Plan de tests</span>
|
|
1328
|
+
<span data-lang="en">Test plan</span>
|
|
1329
|
+
</td>
|
|
1330
|
+
<td>
|
|
1331
|
+
<span data-lang="fr">Tests unitaires, integration, E2E</span>
|
|
1332
|
+
<span data-lang="en">Unit, integration, E2E tests</span>
|
|
1333
|
+
</td>
|
|
1334
|
+
</tr>
|
|
1335
|
+
<tr>
|
|
1336
|
+
<td>i18n</td>
|
|
1337
|
+
<td>
|
|
1338
|
+
<span data-lang="fr">Cles de traduction (en, fr, it, de) pour menus, titres, champs, validations, messages</span>
|
|
1339
|
+
<span data-lang="en">Translation keys (en, fr, it, de) for menus, titles, fields, validations, messages</span>
|
|
1340
|
+
</td>
|
|
1341
|
+
</tr>
|
|
1342
|
+
<tr>
|
|
1343
|
+
<td>
|
|
1344
|
+
<span data-lang="fr">Regles metier → Code</span>
|
|
1345
|
+
<span data-lang="en">Business rules → Code</span>
|
|
1346
|
+
</td>
|
|
1347
|
+
<td>
|
|
1348
|
+
<span data-lang="fr">Points d'implementation par BR (Domain, Infrastructure, API, Frontend)</span>
|
|
1349
|
+
<span data-lang="en">Implementation points per BR (Domain, Infrastructure, API, Frontend)</span>
|
|
1350
|
+
</td>
|
|
1351
|
+
</tr>
|
|
1352
|
+
</tbody>
|
|
1353
|
+
</table>
|
|
1082
1354
|
</div>
|
|
1083
1355
|
|
|
1084
|
-
<h4 data-lang="fr">
|
|
1085
|
-
<h4 data-lang="en">
|
|
1356
|
+
<h4 data-lang="fr">Fichiers generes</h4>
|
|
1357
|
+
<h4 data-lang="en">Generated files</h4>
|
|
1086
1358
|
|
|
1087
1359
|
<div class="code-block">
|
|
1088
1360
|
<button class="copy-btn">Copy</button>
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
### Backend
|
|
1094
|
-
|
|
1095
|
-
CREATE `src/Domain/Entities/Feature.cs`
|
|
1096
|
-
COPY: `src/Domain/Entities/User.cs`
|
|
1097
|
-
CHANGE: class name, properties per spec
|
|
1098
|
-
|
|
1099
|
-
MODIFY `src/Infrastructure/Data/AppDbContext.cs`
|
|
1100
|
-
AT: line 45
|
|
1101
|
-
ADD: `public DbSet<Feature> Features => Set<Feature>();`
|
|
1102
|
-
|
|
1103
|
-
### Frontend
|
|
1104
|
-
|
|
1105
|
-
CREATE `src/app/module/feature/feature.component.ts`
|
|
1106
|
-
RUN FIRST: `ng generate component module/feature`
|
|
1107
|
-
COPY PATTERN: `src/app/existing/existing.component.ts`
|
|
1108
|
-
|
|
1109
|
-
## Commands
|
|
1110
|
-
|
|
1111
|
-
```bash
|
|
1112
|
-
dotnet build src/Api
|
|
1113
|
-
dotnet ef migrations add AddFeatureTable
|
|
1114
|
-
npm run build
|
|
1115
|
-
npm run lint
|
|
1116
|
-
```
|
|
1117
|
-
|
|
1118
|
-
## Verify
|
|
1119
|
-
|
|
1120
|
-
- [ ] Build passes
|
|
1121
|
-
- [ ] Navigate to /feature works
|
|
1122
|
-
- [ ] CRUD operations work</code></pre>
|
|
1123
|
-
</div>
|
|
1124
|
-
|
|
1125
|
-
<div class="alert alert-success">
|
|
1126
|
-
<span class="alert-icon">🚀</span>
|
|
1127
|
-
<div class="alert-content">
|
|
1128
|
-
<h5 data-lang="fr">Pret pour implementation</h5>
|
|
1129
|
-
<h5 data-lang="en">Ready for implementation</h5>
|
|
1130
|
-
<p data-lang="fr">
|
|
1131
|
-
Le brief peut etre passe directement a <code>/implement</code> pour une execution oneshot.
|
|
1132
|
-
</p>
|
|
1133
|
-
<p data-lang="en">
|
|
1134
|
-
The brief can be passed directly to <code>/implement</code> for oneshot execution.
|
|
1135
|
-
</p>
|
|
1136
|
-
<div class="code-block" style="margin-top: 0.5rem;">
|
|
1137
|
-
<pre><code>/implement .claude/ba/[feature]/06-implementation-brief.md</code></pre>
|
|
1138
|
-
</div>
|
|
1139
|
-
</div>
|
|
1361
|
+
<pre><code>.ralph/
|
|
1362
|
+
├── prd.json # v2.0.0 schema, 15 tasks across 9 layers
|
|
1363
|
+
└── progress.txt # Progress tracker with daily update template</code></pre>
|
|
1140
1364
|
</div>
|
|
1141
|
-
</div>
|
|
1142
|
-
</div>
|
|
1143
|
-
</section>
|
|
1144
|
-
|
|
1145
|
-
<!-- Phase 7: Doc-HTML -->
|
|
1146
|
-
<section id="phase-7">
|
|
1147
|
-
<h2>Phase 7: DOC-HTML</h2>
|
|
1148
|
-
<div class="command-card">
|
|
1149
|
-
<div class="command-header">
|
|
1150
|
-
<code class="command-name">/business-analyse 7-doc-html</code>
|
|
1151
|
-
<span class="badge badge-purple">Sonnet</span>
|
|
1152
|
-
</div>
|
|
1153
|
-
<div class="command-body">
|
|
1154
|
-
<p data-lang="fr">
|
|
1155
|
-
<strong>Mission</strong> : Generer une documentation HTML auto-generee et polishe a partir de tous les fichiers du workflow Business Analyse.
|
|
1156
|
-
</p>
|
|
1157
|
-
<p data-lang="en">
|
|
1158
|
-
<strong>Mission</strong>: Generate polished auto-generated HTML documentation from all Business Analyse workflow files.
|
|
1159
|
-
</p>
|
|
1160
1365
|
|
|
1161
|
-
<
|
|
1162
|
-
|
|
1163
|
-
<pre><code># Generate documentation
|
|
1164
|
-
/business-analyse 7-doc-html [feature-name]
|
|
1165
|
-
|
|
1166
|
-
# With specific template
|
|
1167
|
-
/business-analyse 7-doc-html [feature-name] --template=standard
|
|
1168
|
-
/business-analyse 7-doc-html [feature-name] --template=detailed
|
|
1169
|
-
/business-analyse 7-doc-html [feature-name] --template=minimal</code></pre>
|
|
1170
|
-
</div>
|
|
1366
|
+
<h4 data-lang="fr">Choix utilisateur au final</h4>
|
|
1367
|
+
<h4 data-lang="en">User choices at the end</h4>
|
|
1171
1368
|
|
|
1172
|
-
<h4 data-lang="fr">Documentation generee</h4>
|
|
1173
|
-
<h4 data-lang="en">Generated Documentation</h4>
|
|
1174
1369
|
<ul>
|
|
1175
|
-
<li
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
<li
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
<li
|
|
1184
|
-
|
|
1370
|
+
<li><strong>Feature Full</strong> —
|
|
1371
|
+
<span data-lang="fr">Scaffolding rapide (~70-80% couverture)</span>
|
|
1372
|
+
<span data-lang="en">Fast scaffolding (~70-80% coverage)</span>
|
|
1373
|
+
</li>
|
|
1374
|
+
<li><strong>Ralph Loop</strong> —
|
|
1375
|
+
<span data-lang="fr">Developpement iteratif (~95-100% couverture)</span>
|
|
1376
|
+
<span data-lang="en">Iterative development (~95-100% coverage)</span>
|
|
1377
|
+
</li>
|
|
1378
|
+
<li><strong>End BA</strong> —
|
|
1379
|
+
<span data-lang="fr">Developpement manuel</span>
|
|
1380
|
+
<span data-lang="en">Manual development</span>
|
|
1381
|
+
</li>
|
|
1185
1382
|
</ul>
|
|
1186
1383
|
|
|
1187
|
-
<
|
|
1188
|
-
|
|
1189
|
-
<div class="alert-content">
|
|
1190
|
-
<h5 data-lang="fr">Documentation persistante</h5>
|
|
1191
|
-
<h5 data-lang="en">Persistent Documentation</h5>
|
|
1192
|
-
<p data-lang="fr">
|
|
1193
|
-
Le fichier HTML est stocke dans <code>.claude/ba/[feature]/06-documentation.html</code> pour reference et partage futur.
|
|
1194
|
-
</p>
|
|
1195
|
-
<p data-lang="en">
|
|
1196
|
-
The HTML file is stored in <code>.claude/ba/[feature]/06-documentation.html</code> for future reference and sharing.
|
|
1197
|
-
</p>
|
|
1198
|
-
</div>
|
|
1199
|
-
</div>
|
|
1384
|
+
<p data-lang="fr"><strong>Sortie :</strong> <code>feature.json</code> enrichi avec <code>handoff</code> (status: <code>handed-off</code>) + <code>.ralph/prd.json</code> + <code>.ralph/progress.txt</code></p>
|
|
1385
|
+
<p data-lang="en"><strong>Output:</strong> <code>feature.json</code> enriched with <code>handoff</code> (status: <code>handed-off</code>) + <code>.ralph/prd.json</code> + <code>.ralph/progress.txt</code></p>
|
|
1200
1386
|
</div>
|
|
1201
1387
|
</div>
|
|
1202
1388
|
</section>
|
|
1203
1389
|
|
|
1204
|
-
<!--
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
</h2>
|
|
1390
|
+
<!-- ============================================ -->
|
|
1391
|
+
<!-- QUESTIONNAIRE -->
|
|
1392
|
+
<!-- ============================================ -->
|
|
1393
|
+
<section id="questionnaire">
|
|
1394
|
+
<h2>Questionnaire</h2>
|
|
1210
1395
|
|
|
1211
|
-
<
|
|
1212
|
-
<
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
</
|
|
1216
|
-
|
|
1396
|
+
<p data-lang="fr">
|
|
1397
|
+
Le questionnaire est compose de <strong>13 categories</strong> chargees progressivement selon le type de feature detecte. Le chargement intelligent reduit le nombre de questions posees tout en garantissant la couverture.
|
|
1398
|
+
</p>
|
|
1399
|
+
<p data-lang="en">
|
|
1400
|
+
The questionnaire consists of <strong>13 categories</strong> loaded progressively based on the detected feature type. Smart loading reduces the number of questions asked while ensuring coverage.
|
|
1401
|
+
</p>
|
|
1402
|
+
|
|
1403
|
+
<div class="table-container">
|
|
1404
|
+
<table class="reference-table">
|
|
1405
|
+
<thead>
|
|
1406
|
+
<tr>
|
|
1407
|
+
<th>#</th>
|
|
1408
|
+
<th>
|
|
1409
|
+
<span data-lang="fr">Categorie</span>
|
|
1410
|
+
<span data-lang="en">Category</span>
|
|
1411
|
+
</th>
|
|
1412
|
+
<th>
|
|
1413
|
+
<span data-lang="fr">Questions</span>
|
|
1414
|
+
<span data-lang="en">Questions</span>
|
|
1415
|
+
</th>
|
|
1416
|
+
<th>
|
|
1417
|
+
<span data-lang="fr">Charge quand</span>
|
|
1418
|
+
<span data-lang="en">Loaded when</span>
|
|
1419
|
+
</th>
|
|
1420
|
+
</tr>
|
|
1421
|
+
</thead>
|
|
1422
|
+
<tbody>
|
|
1423
|
+
<tr>
|
|
1424
|
+
<td>01</td>
|
|
1425
|
+
<td>Context</td>
|
|
1426
|
+
<td>4</td>
|
|
1427
|
+
<td><span class="badge badge-green">
|
|
1428
|
+
<span data-lang="fr">Toujours</span>
|
|
1429
|
+
<span data-lang="en">Always</span>
|
|
1430
|
+
</span></td>
|
|
1431
|
+
</tr>
|
|
1432
|
+
<tr>
|
|
1433
|
+
<td>02</td>
|
|
1434
|
+
<td>Stakeholders</td>
|
|
1435
|
+
<td>8</td>
|
|
1436
|
+
<td><span class="badge badge-green">
|
|
1437
|
+
<span data-lang="fr">Toujours</span>
|
|
1438
|
+
<span data-lang="en">Always</span>
|
|
1439
|
+
</span></td>
|
|
1440
|
+
</tr>
|
|
1441
|
+
<tr>
|
|
1442
|
+
<td>03</td>
|
|
1443
|
+
<td>Scope</td>
|
|
1444
|
+
<td>8</td>
|
|
1445
|
+
<td><span class="badge badge-green">
|
|
1446
|
+
<span data-lang="fr">Toujours</span>
|
|
1447
|
+
<span data-lang="en">Always</span>
|
|
1448
|
+
</span></td>
|
|
1449
|
+
</tr>
|
|
1450
|
+
<tr>
|
|
1451
|
+
<td>04</td>
|
|
1452
|
+
<td>Data</td>
|
|
1453
|
+
<td>8</td>
|
|
1454
|
+
<td><span class="badge badge-blue">Data-centric / Full</span></td>
|
|
1455
|
+
</tr>
|
|
1456
|
+
<tr>
|
|
1457
|
+
<td>05</td>
|
|
1458
|
+
<td>Integrations</td>
|
|
1459
|
+
<td>8</td>
|
|
1460
|
+
<td><span class="badge badge-blue">Integration / Full</span></td>
|
|
1461
|
+
</tr>
|
|
1462
|
+
<tr>
|
|
1463
|
+
<td>06</td>
|
|
1464
|
+
<td>Security</td>
|
|
1465
|
+
<td>8</td>
|
|
1466
|
+
<td><span class="badge badge-green">
|
|
1467
|
+
<span data-lang="fr">Toujours (minimal)</span>
|
|
1468
|
+
<span data-lang="en">Always (minimal)</span>
|
|
1469
|
+
</span></td>
|
|
1470
|
+
</tr>
|
|
1471
|
+
<tr>
|
|
1472
|
+
<td>07</td>
|
|
1473
|
+
<td>UI</td>
|
|
1474
|
+
<td>8</td>
|
|
1475
|
+
<td><span class="badge badge-blue">UI-centric / Full</span></td>
|
|
1476
|
+
</tr>
|
|
1477
|
+
<tr>
|
|
1478
|
+
<td>08</td>
|
|
1479
|
+
<td>Performance</td>
|
|
1480
|
+
<td>4</td>
|
|
1481
|
+
<td><span class="badge badge-blue">Reporting / Critical</span></td>
|
|
1482
|
+
</tr>
|
|
1483
|
+
<tr>
|
|
1484
|
+
<td>09</td>
|
|
1485
|
+
<td>Constraints</td>
|
|
1486
|
+
<td>4</td>
|
|
1487
|
+
<td><span class="badge badge-teal">
|
|
1488
|
+
<span data-lang="fr">Si contraintes</span>
|
|
1489
|
+
<span data-lang="en">If constraints</span>
|
|
1490
|
+
</span></td>
|
|
1491
|
+
</tr>
|
|
1492
|
+
<tr>
|
|
1493
|
+
<td>10</td>
|
|
1494
|
+
<td>Documentation</td>
|
|
1495
|
+
<td>4</td>
|
|
1496
|
+
<td><span class="badge badge-teal">
|
|
1497
|
+
<span data-lang="fr">Si doc requise</span>
|
|
1498
|
+
<span data-lang="en">If doc required</span>
|
|
1499
|
+
</span></td>
|
|
1500
|
+
</tr>
|
|
1501
|
+
<tr>
|
|
1502
|
+
<td>11</td>
|
|
1503
|
+
<td>Data Lifecycle</td>
|
|
1504
|
+
<td>8</td>
|
|
1505
|
+
<td><span class="badge badge-teal">
|
|
1506
|
+
<span data-lang="fr">Conditionnel</span>
|
|
1507
|
+
<span data-lang="en">Conditional</span>
|
|
1508
|
+
</span></td>
|
|
1509
|
+
</tr>
|
|
1510
|
+
<tr>
|
|
1511
|
+
<td>12</td>
|
|
1512
|
+
<td>Migration</td>
|
|
1513
|
+
<td>8</td>
|
|
1514
|
+
<td><span class="badge badge-teal">
|
|
1515
|
+
<span data-lang="fr">Conditionnel</span>
|
|
1516
|
+
<span data-lang="en">Conditional</span>
|
|
1517
|
+
</span></td>
|
|
1518
|
+
</tr>
|
|
1519
|
+
<tr>
|
|
1520
|
+
<td>13</td>
|
|
1521
|
+
<td>Cross-Module</td>
|
|
1522
|
+
<td>8</td>
|
|
1523
|
+
<td><span class="badge badge-teal">
|
|
1524
|
+
<span data-lang="fr">Conditionnel</span>
|
|
1525
|
+
<span data-lang="en">Conditional</span>
|
|
1526
|
+
</span></td>
|
|
1527
|
+
</tr>
|
|
1528
|
+
</tbody>
|
|
1529
|
+
</table>
|
|
1530
|
+
</div>
|
|
1531
|
+
|
|
1532
|
+
<div class="alert alert-info">
|
|
1533
|
+
<span class="alert-icon">💬</span>
|
|
1534
|
+
<div class="alert-content">
|
|
1535
|
+
<h5 data-lang="fr">Protocole d'elicitation</h5>
|
|
1536
|
+
<h5 data-lang="en">Elicitation protocol</h5>
|
|
1217
1537
|
<p data-lang="fr">
|
|
1218
|
-
|
|
1538
|
+
Les questions sont posees par lots de <strong>max 4</strong> via <code>AskUserQuestion</code>. Apres chaque categorie, un resume est affiche pour validation. Les reponses vagues declenchent des questions de suivi ciblees.
|
|
1219
1539
|
</p>
|
|
1220
1540
|
<p data-lang="en">
|
|
1221
|
-
|
|
1541
|
+
Questions are asked in batches of <strong>max 4</strong> via <code>AskUserQuestion</code>. After each category, a summary is displayed for validation. Vague answers trigger targeted follow-up questions.
|
|
1222
1542
|
</p>
|
|
1223
|
-
<div class="code-block">
|
|
1224
|
-
<button class="copy-btn">Copy</button>
|
|
1225
|
-
<pre><code>/business-analyse bug [bug-description]</code></pre>
|
|
1226
|
-
</div>
|
|
1227
1543
|
</div>
|
|
1228
1544
|
</div>
|
|
1229
1545
|
|
|
1230
|
-
<div class="
|
|
1231
|
-
<
|
|
1232
|
-
|
|
1233
|
-
<
|
|
1234
|
-
|
|
1235
|
-
<div class="command-body">
|
|
1546
|
+
<div class="alert alert-warning">
|
|
1547
|
+
<span class="alert-icon">⚡</span>
|
|
1548
|
+
<div class="alert-content">
|
|
1549
|
+
<h5 data-lang="fr">Mode Micro</h5>
|
|
1550
|
+
<h5 data-lang="en">Micro Mode</h5>
|
|
1236
1551
|
<p data-lang="fr">
|
|
1237
|
-
|
|
1552
|
+
En mode micro (<code>-m</code>), seule la categorie 01 (Context) est chargee avec <strong>4 questions maximum</strong>.
|
|
1238
1553
|
</p>
|
|
1239
1554
|
<p data-lang="en">
|
|
1240
|
-
|
|
1555
|
+
In micro mode (<code>-m</code>), only category 01 (Context) is loaded with <strong>4 questions maximum</strong>.
|
|
1241
1556
|
</p>
|
|
1242
|
-
<div class="code-block">
|
|
1243
|
-
<button class="copy-btn">Copy</button>
|
|
1244
|
-
<pre><code>/business-analyse hotfix [fix-description]</code></pre>
|
|
1245
|
-
</div>
|
|
1246
1557
|
</div>
|
|
1247
1558
|
</div>
|
|
1559
|
+
</section>
|
|
1248
1560
|
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1561
|
+
<!-- ============================================ -->
|
|
1562
|
+
<!-- VERSIONING -->
|
|
1563
|
+
<!-- ============================================ -->
|
|
1564
|
+
<section id="versioning">
|
|
1565
|
+
<h2>Versioning</h2>
|
|
1566
|
+
|
|
1567
|
+
<p data-lang="fr">
|
|
1568
|
+
Chaque feature suit un systeme de versioning semantique. Les versions sont stockees dans des dossiers separes pour permettre le suivi de l'evolution.
|
|
1569
|
+
</p>
|
|
1570
|
+
<p data-lang="en">
|
|
1571
|
+
Each feature follows a semantic versioning system. Versions are stored in separate folders to track evolution.
|
|
1572
|
+
</p>
|
|
1573
|
+
|
|
1574
|
+
<div class="table-container">
|
|
1575
|
+
<table class="reference-table">
|
|
1576
|
+
<thead>
|
|
1577
|
+
<tr>
|
|
1578
|
+
<th>
|
|
1579
|
+
<span data-lang="fr">Cas</span>
|
|
1580
|
+
<span data-lang="en">Case</span>
|
|
1581
|
+
</th>
|
|
1582
|
+
<th>Version</th>
|
|
1583
|
+
<th>
|
|
1584
|
+
<span data-lang="fr">Declencheur</span>
|
|
1585
|
+
<span data-lang="en">Trigger</span>
|
|
1586
|
+
</th>
|
|
1587
|
+
</tr>
|
|
1588
|
+
</thead>
|
|
1589
|
+
<tbody>
|
|
1590
|
+
<tr>
|
|
1591
|
+
<td>
|
|
1592
|
+
<span data-lang="fr">Nouvelle feature</span>
|
|
1593
|
+
<span data-lang="en">New feature</span>
|
|
1594
|
+
</td>
|
|
1595
|
+
<td><code>v1.0</code></td>
|
|
1596
|
+
<td><code>/business-analyse Order module</code></td>
|
|
1597
|
+
</tr>
|
|
1598
|
+
<tr>
|
|
1599
|
+
<td>
|
|
1600
|
+
<span data-lang="fr">Refactoring mineur</span>
|
|
1601
|
+
<span data-lang="en">Minor refactoring</span>
|
|
1602
|
+
</td>
|
|
1603
|
+
<td><code>v1.1</code>, <code>v1.2</code>...</td>
|
|
1604
|
+
<td><code>/business-analyse -r FEAT-001 "Add PDF export"</code></td>
|
|
1605
|
+
</tr>
|
|
1606
|
+
<tr>
|
|
1607
|
+
<td>
|
|
1608
|
+
<span data-lang="fr">Revision majeure</span>
|
|
1609
|
+
<span data-lang="en">Major revision</span>
|
|
1610
|
+
</td>
|
|
1611
|
+
<td><code>v2.0</code></td>
|
|
1612
|
+
<td>
|
|
1613
|
+
<span data-lang="fr">Changement d'architecture ou de perimetre</span>
|
|
1614
|
+
<span data-lang="en">Architecture or scope change</span>
|
|
1615
|
+
</td>
|
|
1616
|
+
</tr>
|
|
1617
|
+
</tbody>
|
|
1618
|
+
</table>
|
|
1619
|
+
</div>
|
|
1620
|
+
|
|
1621
|
+
<div class="code-block">
|
|
1622
|
+
<button class="copy-btn">Copy</button>
|
|
1623
|
+
<pre><code>docs/business/{app}/{module}/business-analyse/
|
|
1624
|
+
├── v1.0/feature.json # Initial version
|
|
1625
|
+
├── v1.1/feature.json # Delta: "Add PDF export" (previousVersion: v1.0)
|
|
1626
|
+
├── v1.2/feature.json # Delta: "Add bulk import" (previousVersion: v1.1)
|
|
1627
|
+
└── v2.0/feature.json # Major revision</code></pre>
|
|
1628
|
+
</div>
|
|
1629
|
+
|
|
1630
|
+
<p data-lang="fr">
|
|
1631
|
+
En mode refactoring (<code>-r</code>), le <code>feature.json</code> de la version delta contient un champ <code>previousVersion</code> et un <code>changeReason</code> pour tracer l'evolution.
|
|
1632
|
+
</p>
|
|
1633
|
+
<p data-lang="en">
|
|
1634
|
+
In refactoring mode (<code>-r</code>), the delta version's <code>feature.json</code> contains a <code>previousVersion</code> and <code>changeReason</code> field to track evolution.
|
|
1635
|
+
</p>
|
|
1636
|
+
</section>
|
|
1637
|
+
|
|
1638
|
+
<!-- ============================================ -->
|
|
1639
|
+
<!-- AGENTS -->
|
|
1640
|
+
<!-- ============================================ -->
|
|
1641
|
+
<section id="agents">
|
|
1642
|
+
<h2>Agents</h2>
|
|
1643
|
+
|
|
1644
|
+
<p data-lang="fr">
|
|
1645
|
+
Le skill Business Analyse utilise des agents specialises pour la gestion du <code>feature.json</code>.
|
|
1646
|
+
</p>
|
|
1647
|
+
<p data-lang="en">
|
|
1648
|
+
The Business Analyse skill uses specialized agents for <code>feature.json</code> management.
|
|
1649
|
+
</p>
|
|
1650
|
+
|
|
1651
|
+
<div class="table-container">
|
|
1652
|
+
<table class="reference-table">
|
|
1653
|
+
<thead>
|
|
1654
|
+
<tr>
|
|
1655
|
+
<th>Agent</th>
|
|
1656
|
+
<th>
|
|
1657
|
+
<span data-lang="fr">Role</span>
|
|
1658
|
+
<span data-lang="en">Role</span>
|
|
1659
|
+
</th>
|
|
1660
|
+
<th>
|
|
1661
|
+
<span data-lang="fr">Methodes principales</span>
|
|
1662
|
+
<span data-lang="en">Key methods</span>
|
|
1663
|
+
</th>
|
|
1664
|
+
<th>
|
|
1665
|
+
<span data-lang="fr">Utilise dans</span>
|
|
1666
|
+
<span data-lang="en">Used in</span>
|
|
1667
|
+
</th>
|
|
1668
|
+
</tr>
|
|
1669
|
+
</thead>
|
|
1670
|
+
<tbody>
|
|
1671
|
+
<tr>
|
|
1672
|
+
<td><strong>ba-writer</strong></td>
|
|
1673
|
+
<td>
|
|
1674
|
+
<span data-lang="fr">Ecrit et met a jour le feature.json</span>
|
|
1675
|
+
<span data-lang="en">Writes and updates feature.json</span>
|
|
1676
|
+
</td>
|
|
1677
|
+
<td><code>createFeature</code>, <code>enrichSection</code>, <code>updateStatus</code>, <code>createVersion</code></td>
|
|
1678
|
+
<td>
|
|
1679
|
+
<span data-lang="fr">Toutes les etapes (00-04)</span>
|
|
1680
|
+
<span data-lang="en">All steps (00-04)</span>
|
|
1681
|
+
</td>
|
|
1682
|
+
</tr>
|
|
1683
|
+
<tr>
|
|
1684
|
+
<td><strong>ba-reader</strong></td>
|
|
1685
|
+
<td>
|
|
1686
|
+
<span data-lang="fr">Lit le feature.json pour le contexte</span>
|
|
1687
|
+
<span data-lang="en">Reads feature.json for context</span>
|
|
1688
|
+
</td>
|
|
1689
|
+
<td><code>findFeature</code>, <code>readSection</code>, <code>answerQuestion</code>, <code>getSummaryForSkill</code></td>
|
|
1690
|
+
<td>
|
|
1691
|
+
<span data-lang="fr">Toutes les etapes (00-04) + mode -q</span>
|
|
1692
|
+
<span data-lang="en">All steps (00-04) + -q mode</span>
|
|
1693
|
+
</td>
|
|
1694
|
+
</tr>
|
|
1695
|
+
</tbody>
|
|
1696
|
+
</table>
|
|
1697
|
+
</div>
|
|
1698
|
+
|
|
1699
|
+
<div class="alert alert-info">
|
|
1700
|
+
<span class="alert-icon">🤖</span>
|
|
1701
|
+
<div class="alert-content">
|
|
1702
|
+
<h5 data-lang="fr">Mode economique</h5>
|
|
1703
|
+
<h5 data-lang="en">Economy mode</h5>
|
|
1255
1704
|
<p data-lang="fr">
|
|
1256
|
-
|
|
1705
|
+
En mode <code>-e</code>, les sous-agents d'exploration (recherche codebase) sont desactives. Seuls <code>ba-writer</code> et <code>ba-reader</code> restent actifs. Les recherches utilisent directement Glob/Grep.
|
|
1257
1706
|
</p>
|
|
1258
1707
|
<p data-lang="en">
|
|
1259
|
-
|
|
1708
|
+
In <code>-e</code> mode, exploration subagents (codebase search) are disabled. Only <code>ba-writer</code> and <code>ba-reader</code> remain active. Searches use Glob/Grep directly.
|
|
1260
1709
|
</p>
|
|
1261
|
-
<div class="code-block">
|
|
1262
|
-
<button class="copy-btn">Copy</button>
|
|
1263
|
-
<pre><code>/business-analyse change-request [change-description]</code></pre>
|
|
1264
|
-
</div>
|
|
1265
1710
|
</div>
|
|
1266
1711
|
</div>
|
|
1267
1712
|
</section>
|
|
1268
1713
|
|
|
1269
|
-
<!--
|
|
1270
|
-
|
|
1714
|
+
<!-- ============================================ -->
|
|
1715
|
+
<!-- OUTPUT -->
|
|
1716
|
+
<!-- ============================================ -->
|
|
1717
|
+
<section id="output">
|
|
1271
1718
|
<h2>
|
|
1272
|
-
<span data-lang="fr">
|
|
1273
|
-
<span data-lang="en">
|
|
1719
|
+
<span data-lang="fr">Sorties</span>
|
|
1720
|
+
<span data-lang="en">Output</span>
|
|
1274
1721
|
</h2>
|
|
1275
1722
|
|
|
1276
|
-
<
|
|
1277
|
-
|
|
1278
|
-
<tr>
|
|
1279
|
-
<th>Agent</th>
|
|
1280
|
-
<th>Mission</th>
|
|
1281
|
-
<th>
|
|
1282
|
-
<span data-lang="fr">Utilise en</span>
|
|
1283
|
-
<span data-lang="en">Used in</span>
|
|
1284
|
-
</th>
|
|
1285
|
-
</tr>
|
|
1286
|
-
</thead>
|
|
1287
|
-
<tbody>
|
|
1288
|
-
<tr style="background: rgba(139, 92, 246, 0.1);">
|
|
1289
|
-
<td><code>ba-similarity</code></td>
|
|
1290
|
-
<td>
|
|
1291
|
-
<span data-lang="fr">Detecte les features similaires ou doublons</span>
|
|
1292
|
-
<span data-lang="en">Detects similar features or duplicates</span>
|
|
1293
|
-
</td>
|
|
1294
|
-
<td>Phase 2</td>
|
|
1295
|
-
</tr>
|
|
1296
|
-
<tr>
|
|
1297
|
-
<td><code>explore-api</code></td>
|
|
1298
|
-
<td>
|
|
1299
|
-
<span data-lang="fr">Endpoints, controllers, DTOs, patterns API</span>
|
|
1300
|
-
<span data-lang="en">Endpoints, controllers, DTOs, API patterns</span>
|
|
1301
|
-
</td>
|
|
1302
|
-
<td>Phase 3</td>
|
|
1303
|
-
</tr>
|
|
1304
|
-
<tr>
|
|
1305
|
-
<td><code>explore-schema</code></td>
|
|
1306
|
-
<td>
|
|
1307
|
-
<span data-lang="fr">Schema DB, entites, configurations</span>
|
|
1308
|
-
<span data-lang="en">DB schema, entities, configurations</span>
|
|
1309
|
-
</td>
|
|
1310
|
-
<td>Phase 3</td>
|
|
1311
|
-
</tr>
|
|
1312
|
-
<tr>
|
|
1313
|
-
<td><code>explore-permissions</code></td>
|
|
1314
|
-
<td>
|
|
1315
|
-
<span data-lang="fr">RBAC, roles, autorisations</span>
|
|
1316
|
-
<span data-lang="en">RBAC, roles, authorizations</span>
|
|
1317
|
-
</td>
|
|
1318
|
-
<td>Phase 3</td>
|
|
1319
|
-
</tr>
|
|
1320
|
-
<tr>
|
|
1321
|
-
<td><code>explore-navigation</code></td>
|
|
1322
|
-
<td>
|
|
1323
|
-
<span data-lang="fr">Menus, routes, pages</span>
|
|
1324
|
-
<span data-lang="en">Menus, routes, pages</span>
|
|
1325
|
-
</td>
|
|
1326
|
-
<td>Phase 3</td>
|
|
1327
|
-
</tr>
|
|
1328
|
-
<tr>
|
|
1329
|
-
<td><code>explore-theme</code></td>
|
|
1330
|
-
<td>
|
|
1331
|
-
<span data-lang="fr">UI patterns, composants, design system</span>
|
|
1332
|
-
<span data-lang="en">UI patterns, components, design system</span>
|
|
1333
|
-
</td>
|
|
1334
|
-
<td>Phase 3</td>
|
|
1335
|
-
</tr>
|
|
1336
|
-
</tbody>
|
|
1337
|
-
</table>
|
|
1338
|
-
</section>
|
|
1339
|
-
|
|
1340
|
-
<!-- Files -->
|
|
1341
|
-
<section id="files">
|
|
1342
|
-
<h2>
|
|
1343
|
-
<span data-lang="fr">Structure des fichiers</span>
|
|
1344
|
-
<span data-lang="en">File Structure</span>
|
|
1345
|
-
</h2>
|
|
1346
|
-
|
|
1347
|
-
<div class="code-block">
|
|
1348
|
-
<button class="copy-btn">Copy</button>
|
|
1349
|
-
<pre><code>.claude/ba/
|
|
1350
|
-
└── [feature-name]/
|
|
1351
|
-
├── 01-business-requirements.md # Phase 2: DISCOVER
|
|
1352
|
-
├── 02-enriched-requirements.md # Phase 3: ANALYSE
|
|
1353
|
-
├── 03-functional-spec.md # Phase 4: SPECIFY
|
|
1354
|
-
├── 04-feedback-v1.md # Phase 5: VALIDATE (si changes)
|
|
1355
|
-
├── 04-feedback-v2.md # (iterations)
|
|
1356
|
-
├── 05-implementation-brief.md # Phase 6: HANDOFF
|
|
1357
|
-
└── 06-documentation.html # Phase 7: DOC-HTML</code></pre>
|
|
1358
|
-
</div>
|
|
1723
|
+
<h4 data-lang="fr">Fichiers produits</h4>
|
|
1724
|
+
<h4 data-lang="en">Produced files</h4>
|
|
1359
1725
|
|
|
1360
1726
|
<div class="table-container">
|
|
1361
|
-
<table>
|
|
1727
|
+
<table class="reference-table">
|
|
1362
1728
|
<thead>
|
|
1363
1729
|
<tr>
|
|
1364
1730
|
<th>
|
|
1365
1731
|
<span data-lang="fr">Fichier</span>
|
|
1366
1732
|
<span data-lang="en">File</span>
|
|
1367
1733
|
</th>
|
|
1734
|
+
<th>
|
|
1735
|
+
<span data-lang="fr">Emplacement</span>
|
|
1736
|
+
<span data-lang="en">Location</span>
|
|
1737
|
+
</th>
|
|
1368
1738
|
<th>
|
|
1369
1739
|
<span data-lang="fr">Genere par</span>
|
|
1370
1740
|
<span data-lang="en">Generated by</span>
|
|
1371
1741
|
</th>
|
|
1372
1742
|
<th>
|
|
1373
|
-
<span data-lang="fr">
|
|
1374
|
-
<span data-lang="en">
|
|
1743
|
+
<span data-lang="fr">Contenu</span>
|
|
1744
|
+
<span data-lang="en">Content</span>
|
|
1375
1745
|
</th>
|
|
1376
1746
|
</tr>
|
|
1377
1747
|
</thead>
|
|
1378
1748
|
<tbody>
|
|
1379
1749
|
<tr>
|
|
1380
|
-
<td><
|
|
1381
|
-
<td>
|
|
1382
|
-
<td>
|
|
1750
|
+
<td><strong>feature.json</strong></td>
|
|
1751
|
+
<td><code>docs/business/{app}/{module}/business-analyse/v{X.Y}/</code></td>
|
|
1752
|
+
<td>
|
|
1753
|
+
<span data-lang="fr">Toutes les etapes</span>
|
|
1754
|
+
<span data-lang="en">All steps</span>
|
|
1755
|
+
</td>
|
|
1756
|
+
<td>
|
|
1757
|
+
<span data-lang="fr">Source unique de verite — enrichi progressivement</span>
|
|
1758
|
+
<span data-lang="en">Single source of truth — progressively enriched</span>
|
|
1759
|
+
</td>
|
|
1760
|
+
</tr>
|
|
1761
|
+
<tr>
|
|
1762
|
+
<td><strong>prd.json</strong></td>
|
|
1763
|
+
<td><code>.ralph/prd.json</code></td>
|
|
1764
|
+
<td>Step 04</td>
|
|
1765
|
+
<td>
|
|
1766
|
+
<span data-lang="fr">Decomposition en 15 taches sur 9 couches (schema v2.0.0)</span>
|
|
1767
|
+
<span data-lang="en">Breakdown into 15 tasks across 9 layers (v2.0.0 schema)</span>
|
|
1768
|
+
</td>
|
|
1769
|
+
</tr>
|
|
1770
|
+
<tr>
|
|
1771
|
+
<td><strong>progress.txt</strong></td>
|
|
1772
|
+
<td><code>.ralph/progress.txt</code></td>
|
|
1773
|
+
<td>Step 04</td>
|
|
1774
|
+
<td>
|
|
1775
|
+
<span data-lang="fr">Suivi de progression avec template de mise a jour quotidienne</span>
|
|
1776
|
+
<span data-lang="en">Progress tracker with daily update template</span>
|
|
1777
|
+
</td>
|
|
1778
|
+
</tr>
|
|
1779
|
+
</tbody>
|
|
1780
|
+
</table>
|
|
1781
|
+
</div>
|
|
1782
|
+
|
|
1783
|
+
<h4 data-lang="fr">Templates et schemas</h4>
|
|
1784
|
+
<h4 data-lang="en">Templates and schemas</h4>
|
|
1785
|
+
|
|
1786
|
+
<div class="table-container">
|
|
1787
|
+
<table class="reference-table">
|
|
1788
|
+
<thead>
|
|
1789
|
+
<tr>
|
|
1790
|
+
<th>
|
|
1791
|
+
<span data-lang="fr">Fichier</span>
|
|
1792
|
+
<span data-lang="en">File</span>
|
|
1793
|
+
</th>
|
|
1794
|
+
<th>
|
|
1795
|
+
<span data-lang="fr">Objectif</span>
|
|
1796
|
+
<span data-lang="en">Purpose</span>
|
|
1797
|
+
</th>
|
|
1798
|
+
<th>
|
|
1799
|
+
<span data-lang="fr">Utilise dans</span>
|
|
1800
|
+
<span data-lang="en">Used in</span>
|
|
1801
|
+
</th>
|
|
1383
1802
|
</tr>
|
|
1803
|
+
</thead>
|
|
1804
|
+
<tbody>
|
|
1384
1805
|
<tr>
|
|
1385
|
-
<td><code>
|
|
1386
|
-
<td>
|
|
1387
|
-
|
|
1806
|
+
<td><code>schemas/feature-schema.json</code></td>
|
|
1807
|
+
<td>
|
|
1808
|
+
<span data-lang="fr">Schema de validation JSON (JSON Schema 2020-12)</span>
|
|
1809
|
+
<span data-lang="en">JSON validation schema (JSON Schema 2020-12)</span>
|
|
1810
|
+
</td>
|
|
1811
|
+
<td>
|
|
1812
|
+
<span data-lang="fr">Toutes les etapes</span>
|
|
1813
|
+
<span data-lang="en">All steps</span>
|
|
1814
|
+
</td>
|
|
1388
1815
|
</tr>
|
|
1389
1816
|
<tr>
|
|
1390
|
-
<td><code>
|
|
1391
|
-
<td>Phase 4</td>
|
|
1817
|
+
<td><code>templates/tpl-frd.md</code></td>
|
|
1392
1818
|
<td>
|
|
1393
|
-
<span data-lang="fr">
|
|
1394
|
-
<span data-lang="en">
|
|
1819
|
+
<span data-lang="fr">Template de specification fonctionnelle (reference)</span>
|
|
1820
|
+
<span data-lang="en">Functional requirements document template (reference)</span>
|
|
1395
1821
|
</td>
|
|
1822
|
+
<td>Step 02</td>
|
|
1396
1823
|
</tr>
|
|
1397
1824
|
<tr>
|
|
1398
|
-
<td><code>
|
|
1399
|
-
<td>
|
|
1400
|
-
|
|
1825
|
+
<td><code>templates/tpl-handoff.md</code></td>
|
|
1826
|
+
<td>
|
|
1827
|
+
<span data-lang="fr">Template de handoff developpement (reference)</span>
|
|
1828
|
+
<span data-lang="en">Development handoff template (reference)</span>
|
|
1829
|
+
</td>
|
|
1830
|
+
<td>Step 04</td>
|
|
1401
1831
|
</tr>
|
|
1402
1832
|
<tr>
|
|
1403
|
-
<td><code>
|
|
1404
|
-
<td>
|
|
1405
|
-
|
|
1833
|
+
<td><code>patterns/suggestion-catalog.md</code></td>
|
|
1834
|
+
<td>
|
|
1835
|
+
<span data-lang="fr">Catalogue de suggestions proactives</span>
|
|
1836
|
+
<span data-lang="en">Proactive suggestions catalog</span>
|
|
1837
|
+
</td>
|
|
1838
|
+
<td>Step 01</td>
|
|
1406
1839
|
</tr>
|
|
1407
1840
|
<tr>
|
|
1408
|
-
<td><code>
|
|
1409
|
-
<td>Phase 7</td>
|
|
1841
|
+
<td><code>questionnaire/*.md</code></td>
|
|
1410
1842
|
<td>
|
|
1411
|
-
<span data-lang="fr">
|
|
1412
|
-
<span data-lang="en">
|
|
1843
|
+
<span data-lang="fr">13 categories de questionnaire</span>
|
|
1844
|
+
<span data-lang="en">13 questionnaire categories</span>
|
|
1413
1845
|
</td>
|
|
1846
|
+
<td>Step 01</td>
|
|
1414
1847
|
</tr>
|
|
1415
1848
|
</tbody>
|
|
1416
1849
|
</table>
|
|
1417
1850
|
</div>
|
|
1418
1851
|
</section>
|
|
1419
1852
|
|
|
1420
|
-
<!--
|
|
1853
|
+
<!-- ============================================ -->
|
|
1854
|
+
<!-- EXAMPLE -->
|
|
1855
|
+
<!-- ============================================ -->
|
|
1421
1856
|
<section id="example">
|
|
1422
1857
|
<h2>
|
|
1423
1858
|
<span data-lang="fr">Exemple complet</span>
|
|
1424
|
-
<span data-lang="en">Complete
|
|
1859
|
+
<span data-lang="en">Complete example</span>
|
|
1425
1860
|
</h2>
|
|
1426
1861
|
|
|
1862
|
+
<h4 data-lang="fr">Nouvelle feature : Module Commandes</h4>
|
|
1863
|
+
<h4 data-lang="en">New feature: Orders Module</h4>
|
|
1864
|
+
|
|
1427
1865
|
<div class="code-block">
|
|
1428
1866
|
<button class="copy-btn">Copy</button>
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
# → Phase 0 orchestre tout automatiquement
|
|
1433
|
-
# → Phases 1-7 s'executent en sequence
|
|
1434
|
-
# → Cree tous les fichiers et la documentation
|
|
1435
|
-
|
|
1436
|
-
---
|
|
1437
|
-
|
|
1438
|
-
# Option 2: Phases individuelles pour plus de controle
|
|
1439
|
-
|
|
1440
|
-
# Phase 1: Initialiser la structure
|
|
1441
|
-
/business-analyse 1-init user-management
|
|
1442
|
-
|
|
1443
|
-
# Phase 2: Decouvrir le besoin
|
|
1444
|
-
/business-analyse 2-discover Je veux gerer les utilisateurs avec des roles
|
|
1445
|
-
|
|
1446
|
-
# → Questions d'elicitation posees
|
|
1447
|
-
# → Agent ba-similarity verifie les doublons
|
|
1448
|
-
# → Cree: .claude/ba/user-management/01-business-requirements.md
|
|
1449
|
-
|
|
1450
|
-
# Phase 3: Analyser et enrichir
|
|
1451
|
-
/business-analyse 3-analyse user-management
|
|
1452
|
-
|
|
1453
|
-
# → Fusionne besoin + contexte technique
|
|
1454
|
-
# → Identifie gaps et conflits
|
|
1455
|
-
# → Cree: .claude/ba/user-management/02-enriched-requirements.md
|
|
1456
|
-
|
|
1457
|
-
# Phase 4: Specifier (FRD)
|
|
1458
|
-
/business-analyse 4-specify user-management --plantuml
|
|
1459
|
-
|
|
1460
|
-
# → Genere le FRD complet avec diagrammes
|
|
1461
|
-
# → Cree: .claude/ba/user-management/03-functional-spec.md
|
|
1867
|
+
<pre><code>/business-analyse Order management module</code></pre>
|
|
1868
|
+
</div>
|
|
1462
1869
|
|
|
1463
|
-
|
|
1464
|
-
|
|
1870
|
+
<div class="steps-list">
|
|
1871
|
+
<div class="step-item">
|
|
1872
|
+
<div class="step-number">00</div>
|
|
1873
|
+
<div class="step-content">
|
|
1874
|
+
<strong>Init</strong> —
|
|
1875
|
+
<span data-lang="fr">Parse flags, cree <code>FEAT-001</code>, initialise <code>feature.json</code> (v1.0, status: draft)</span>
|
|
1876
|
+
<span data-lang="en">Parse flags, create <code>FEAT-001</code>, initialize <code>feature.json</code> (v1.0, status: draft)</span>
|
|
1877
|
+
</div>
|
|
1878
|
+
</div>
|
|
1879
|
+
<div class="step-item">
|
|
1880
|
+
<div class="step-number">01</div>
|
|
1881
|
+
<div class="step-content">
|
|
1882
|
+
<strong>Analyse</strong> —
|
|
1883
|
+
<span data-lang="fr">Type detecte: <code>data-centric</code>. Questionnaire categories 01, 02, 03, 04, 06, 11. Extraction de 12 regles metier, 3 entites, 2 risques. 4 suggestions proactives presentees.</span>
|
|
1884
|
+
<span data-lang="en">Type detected: <code>data-centric</code>. Questionnaire categories 01, 02, 03, 04, 06, 11. Extraction of 12 business rules, 3 entities, 2 risks. 4 proactive suggestions presented.</span>
|
|
1885
|
+
</div>
|
|
1886
|
+
</div>
|
|
1887
|
+
<div class="step-item">
|
|
1888
|
+
<div class="step-number">02</div>
|
|
1889
|
+
<div class="step-content">
|
|
1890
|
+
<strong>Specify</strong> —
|
|
1891
|
+
<span data-lang="fr">8 UC, 15 FR, matrice permissions 4 roles, 5 SeedData, wireframes List/Create/Detail, 12 scenarios Gherkin, machine a etats (Draft → Confirmed → Shipped → Delivered).</span>
|
|
1892
|
+
<span data-lang="en">8 UCs, 15 FRs, 4-role permission matrix, 5 SeedData, List/Create/Detail wireframes, 12 Gherkin scenarios, state machine (Draft → Confirmed → Shipped → Delivered).</span>
|
|
1893
|
+
</div>
|
|
1894
|
+
</div>
|
|
1895
|
+
<div class="step-item">
|
|
1896
|
+
<div class="step-number">03</div>
|
|
1897
|
+
<div class="step-content">
|
|
1898
|
+
<strong>Validate</strong> —
|
|
1899
|
+
<span data-lang="fr">Completude OK, coherence OK (8 UC ↔ 15 FR ↔ 12 BR), conventions OK. Decision: <strong>APPROVED</strong>.</span>
|
|
1900
|
+
<span data-lang="en">Completeness OK, consistency OK (8 UCs ↔ 15 FRs ↔ 12 BRs), conventions OK. Decision: <strong>APPROVED</strong>.</span>
|
|
1901
|
+
</div>
|
|
1902
|
+
</div>
|
|
1903
|
+
<div class="step-item">
|
|
1904
|
+
<div class="step-number">04</div>
|
|
1905
|
+
<div class="step-content">
|
|
1906
|
+
<strong>Handoff</strong> —
|
|
1907
|
+
<span data-lang="fr">Mapping de 25 fichiers (backend + frontend), 8 endpoints API, plan de tests (18 unit, 8 integration, 4 E2E), cles i18n (4 langues). Generation de <code>prd.json</code> (15 taches, ~28h).</span>
|
|
1908
|
+
<span data-lang="en">25 files mapped (backend + frontend), 8 API endpoints, test plan (18 unit, 8 integration, 4 E2E), i18n keys (4 languages). Generated <code>prd.json</code> (15 tasks, ~28h).</span>
|
|
1909
|
+
</div>
|
|
1910
|
+
</div>
|
|
1911
|
+
</div>
|
|
1465
1912
|
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
# → Si MAJOR CHANGES → Retour Phase 3
|
|
1913
|
+
<h4 data-lang="fr">Resultat final</h4>
|
|
1914
|
+
<h4 data-lang="en">Final result</h4>
|
|
1469
1915
|
|
|
1470
|
-
|
|
1471
|
-
|
|
1916
|
+
<div class="code-block">
|
|
1917
|
+
<button class="copy-btn">Copy</button>
|
|
1918
|
+
<pre><code>docs/business/MyApp/Orders/business-analyse/v1.0/feature.json # Complete BA
|
|
1919
|
+
.ralph/prd.json # 15 tasks for Ralph Loop
|
|
1920
|
+
.ralph/progress.txt # Progress tracker</code></pre>
|
|
1921
|
+
</div>
|
|
1472
1922
|
|
|
1473
|
-
|
|
1474
|
-
|
|
1923
|
+
<h4 data-lang="fr">Ensuite : Refactoring</h4>
|
|
1924
|
+
<h4 data-lang="en">Next: Refactoring</h4>
|
|
1475
1925
|
|
|
1476
|
-
|
|
1477
|
-
|
|
1926
|
+
<div class="code-block">
|
|
1927
|
+
<button class="copy-btn">Copy</button>
|
|
1928
|
+
<pre><code># Ajouter l'export PDF (cree v1.1)
|
|
1929
|
+
/business-analyse -r FEAT-001 "Add PDF export functionality"
|
|
1478
1930
|
|
|
1479
|
-
#
|
|
1480
|
-
|
|
1931
|
+
# Resultat :
|
|
1932
|
+
docs/business/MyApp/Orders/business-analyse/v1.1/feature.json # Delta version
|
|
1933
|
+
# previousVersion: "1.0", changeReason: "Add PDF export functionality"</code></pre>
|
|
1934
|
+
</div>
|
|
1481
1935
|
|
|
1482
|
-
|
|
1483
|
-
|
|
1936
|
+
<h4 data-lang="fr">Ensuite : Question</h4>
|
|
1937
|
+
<h4 data-lang="en">Next: Question</h4>
|
|
1484
1938
|
|
|
1485
|
-
|
|
1486
|
-
|
|
1939
|
+
<div class="code-block">
|
|
1940
|
+
<button class="copy-btn">Copy</button>
|
|
1941
|
+
<pre><code># Interroger la feature existante
|
|
1942
|
+
/business-analyse -q FEAT-001 "What permissions does the manager have?"
|
|
1487
1943
|
|
|
1488
|
-
|
|
1489
|
-
<span class="alert-icon">🎯</span>
|
|
1490
|
-
<div class="alert-content">
|
|
1491
|
-
<h5 data-lang="fr">Conseil</h5>
|
|
1492
|
-
<h5 data-lang="en">Pro Tip</h5>
|
|
1493
|
-
<p data-lang="fr">
|
|
1494
|
-
Les fichiers dans <code>.claude/ba/</code> constituent un historique precieux. Conservez-les pour documenter les evolutions futures et faciliter la maintenance.
|
|
1495
|
-
</p>
|
|
1496
|
-
<p data-lang="en">
|
|
1497
|
-
Files in <code>.claude/ba/</code> are valuable history. Keep them to document future evolutions and facilitate maintenance.
|
|
1498
|
-
</p>
|
|
1499
|
-
</div>
|
|
1944
|
+
# Reponse textuelle depuis feature.json → EXIT (aucun fichier modifie)</code></pre>
|
|
1500
1945
|
</div>
|
|
1501
1946
|
</section>
|
|
1502
1947
|
|