@atlashub/smartstack-cli 1.4.0 → 1.5.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.
Files changed (66) hide show
  1. package/.documentation/agents.html +8 -4
  2. package/.documentation/apex.html +8 -4
  3. package/.documentation/business-analyse.html +833 -406
  4. package/.documentation/commands.html +8 -4
  5. package/.documentation/css/styles.css +153 -15
  6. package/.documentation/efcore.html +8 -4
  7. package/.documentation/gitflow.html +795 -230
  8. package/.documentation/hooks.html +8 -4
  9. package/.documentation/index.html +13 -9
  10. package/.documentation/installation.html +23 -19
  11. package/.documentation/ralph-loop.html +530 -0
  12. package/.documentation/test-web.html +8 -4
  13. package/README.md +52 -10
  14. package/dist/index.js +813 -283
  15. package/dist/index.js.map +1 -1
  16. package/package.json +1 -1
  17. package/templates/agents/efcore/conflicts.md +44 -17
  18. package/templates/agents/efcore/db-status.md +27 -6
  19. package/templates/agents/efcore/scan.md +43 -13
  20. package/templates/commands/ai-prompt.md +315 -315
  21. package/templates/commands/application/create.md +362 -362
  22. package/templates/commands/controller/create.md +216 -216
  23. package/templates/commands/controller.md +59 -0
  24. package/templates/commands/create/agent.md +138 -0
  25. package/templates/commands/create/command.md +166 -0
  26. package/templates/commands/create/hook.md +234 -0
  27. package/templates/commands/create/plugin.md +329 -0
  28. package/templates/commands/create/project.md +507 -0
  29. package/templates/commands/create/skill.md +199 -0
  30. package/templates/commands/create.md +220 -0
  31. package/templates/commands/documentation/module.md +202 -202
  32. package/templates/commands/efcore/_env-check.md +153 -153
  33. package/templates/commands/efcore/conflicts.md +109 -192
  34. package/templates/commands/efcore/db-status.md +101 -89
  35. package/templates/commands/efcore/migration.md +23 -11
  36. package/templates/commands/efcore/scan.md +115 -119
  37. package/templates/commands/efcore.md +54 -6
  38. package/templates/commands/feature-full.md +267 -267
  39. package/templates/commands/gitflow/11-finish.md +145 -11
  40. package/templates/commands/gitflow/13-sync.md +216 -216
  41. package/templates/commands/gitflow/14-rebase.md +251 -251
  42. package/templates/commands/gitflow/2-status.md +120 -10
  43. package/templates/commands/gitflow/3-commit.md +150 -0
  44. package/templates/commands/gitflow/7-pull-request.md +134 -5
  45. package/templates/commands/gitflow/9-merge.md +142 -1
  46. package/templates/commands/implement.md +663 -663
  47. package/templates/commands/init.md +562 -0
  48. package/templates/commands/mcp-integration.md +330 -0
  49. package/templates/commands/notification.md +129 -129
  50. package/templates/commands/validate.md +233 -0
  51. package/templates/commands/workflow.md +193 -193
  52. package/templates/skills/ai-prompt/SKILL.md +778 -778
  53. package/templates/skills/application/SKILL.md +563 -563
  54. package/templates/skills/application/templates-backend.md +450 -450
  55. package/templates/skills/application/templates-frontend.md +531 -531
  56. package/templates/skills/application/templates-i18n.md +520 -520
  57. package/templates/skills/application/templates-seed.md +647 -647
  58. package/templates/skills/controller/SKILL.md +240 -240
  59. package/templates/skills/controller/postman-templates.md +614 -614
  60. package/templates/skills/controller/templates.md +1468 -1468
  61. package/templates/skills/documentation/SKILL.md +133 -133
  62. package/templates/skills/documentation/templates.md +476 -476
  63. package/templates/skills/feature-full/SKILL.md +838 -838
  64. package/templates/skills/notification/SKILL.md +555 -555
  65. package/templates/skills/ui-components/SKILL.md +870 -870
  66. package/templates/skills/workflow/SKILL.md +582 -582
@@ -0,0 +1,562 @@
1
+ ---
2
+ description: Initialize a new SmartStack project with backend (.NET) and frontend (React)
3
+ args: [project_name]
4
+ ---
5
+
6
+ # SmartStack Init - Project Scaffolding
7
+
8
+ You are an expert in SmartStack architecture. Initialize a new project based on the SmartStack template.
9
+
10
+ > **CLAUDE INSTRUCTION:** The `AskUserQuestion({...})` blocks below are instructions for using the `AskUserQuestion` tool **interactively**. You MUST execute the tool with these parameters to get the user's response BEFORE continuing. DO NOT display this code - WAIT for the response.
11
+
12
+ **Argument:** `$ARGUMENTS` = project name (required)
13
+
14
+ ---
15
+
16
+ ## ETAPE 0: VALIDATION PRE-INIT
17
+
18
+ ### 0.1 Verification des serveurs MCP
19
+
20
+ > **CRITIQUE:** Les serveurs MCP SmartStack et Context7 sont requis pour le developpement optimal avec SmartStack.
21
+
22
+ **Verifier les MCP installes:**
23
+ ```bash
24
+ # Lister les serveurs MCP actifs
25
+ claude mcp list
26
+ ```
27
+
28
+ **MCP requis:**
29
+
30
+ | Serveur | Fonction | Installation |
31
+ |---------|----------|--------------|
32
+ | **SmartStack MCP** | Validation conventions, scaffolding, API docs | `claude mcp add smartstack` |
33
+ | **Context7 MCP** | Documentation libraries, exemples de code | `claude mcp add context7` |
34
+
35
+ **Si un MCP manque:**
36
+ ```
37
+ ┌──────────────────────────────────────────────────────────────────────────────┐
38
+ │ ⚠️ MCP SERVERS MISSING │
39
+ ├──────────────────────────────────────────────────────────────────────────────┤
40
+ │ Les serveurs MCP suivants ne sont pas installes: │
41
+ │ • SmartStack MCP │
42
+ │ • Context7 MCP │
43
+ │ │
44
+ │ INSTALLATION: │
45
+ │ → SmartStack MCP: claude mcp add smartstack │
46
+ │ → Context7 MCP: claude mcp add context7 │
47
+ └──────────────────────────────────────────────────────────────────────────────┘
48
+ ```
49
+
50
+ **Demander confirmation si MCP manquants:**
51
+ ```javascript
52
+ if (mcpMissing.length > 0) {
53
+ AskUserQuestion({
54
+ questions: [{
55
+ question: "Des serveurs MCP sont manquants. Continuer sans eux ?",
56
+ header: "MCP",
57
+ options: [
58
+ { label: "Non, installer d'abord", description: "Recommande - installer les MCP avant de continuer" },
59
+ { label: "Oui, continuer", description: "Le projet sera cree mais certaines fonctionnalites seront limitees" }
60
+ ],
61
+ multiSelect: false
62
+ }]
63
+ })
64
+ }
65
+ ```
66
+
67
+ ### 0.2 Verification des prerequis systeme
68
+
69
+ ```bash
70
+ # Verifier .NET SDK
71
+ dotnet --version
72
+
73
+ # Verifier Node.js
74
+ node --version
75
+
76
+ # Verifier npm
77
+ npm --version
78
+ ```
79
+
80
+ **Si un prerequis manque:**
81
+ ```
82
+ PREREQUIS MANQUANTS
83
+ ==========================================
84
+ [ ] .NET 10.0+ SDK
85
+ [ ] Node.js 18+
86
+ [ ] npm 9+
87
+
88
+ Installez les prerequis avant de continuer.
89
+ ```
90
+
91
+ ### 0.3 Verification du repertoire
92
+
93
+ ```bash
94
+ # Verifier que le repertoire cible n'existe pas
95
+ if [ -d "$PROJECT_NAME" ]; then
96
+ echo "Le repertoire '$PROJECT_NAME' existe deja."
97
+ exit 1
98
+ fi
99
+ ```
100
+
101
+ ---
102
+
103
+ ## ETAPE 1: CONFIGURATION DU PROJET
104
+
105
+ ### 1.1 Collecter les informations
106
+
107
+ ```javascript
108
+ AskUserQuestion({
109
+ questions: [
110
+ {
111
+ question: "Quel type de projet voulez-vous creer ?",
112
+ header: "Type",
113
+ options: [
114
+ { label: "Full Stack", description: "Backend .NET + Frontend React (Recommande)" },
115
+ { label: "Backend Only", description: "API .NET uniquement" },
116
+ { label: "Frontend Only", description: "Application React uniquement" }
117
+ ],
118
+ multiSelect: false
119
+ },
120
+ {
121
+ question: "Quelle base de donnees utiliser ?",
122
+ header: "Database",
123
+ options: [
124
+ { label: "SQL Server", description: "Microsoft SQL Server (Recommande)" },
125
+ { label: "PostgreSQL", description: "PostgreSQL avec Npgsql" },
126
+ { label: "SQLite", description: "SQLite pour developpement local" }
127
+ ],
128
+ multiSelect: false
129
+ },
130
+ {
131
+ question: "Quels modules SmartStack activer ?",
132
+ header: "Modules",
133
+ options: [
134
+ { label: "Auth", description: "Authentication JWT + OAuth (Google, Microsoft)" },
135
+ { label: "Navigation", description: "Menu dynamique et navigation" },
136
+ { label: "AI", description: "Integration OpenAI/Claude" },
137
+ { label: "Notifications", description: "Notifications temps reel (SignalR)" }
138
+ ],
139
+ multiSelect: true
140
+ }
141
+ ]
142
+ })
143
+ ```
144
+
145
+ ---
146
+
147
+ ## ETAPE 2: CREATION DE LA STRUCTURE
148
+
149
+ ### 2.1 Structure Backend (.NET)
150
+
151
+ ```
152
+ {ProjectName}/
153
+ ├── src/
154
+ │ ├── {ProjectName}.Domain/
155
+ │ │ ├── Entities/
156
+ │ │ ├── Interfaces/
157
+ │ │ └── {ProjectName}.Domain.csproj
158
+ │ ├── {ProjectName}.Application/
159
+ │ │ ├── Services/
160
+ │ │ ├── DTOs/
161
+ │ │ └── {ProjectName}.Application.csproj
162
+ │ ├── {ProjectName}.Infrastructure/
163
+ │ │ ├── Data/
164
+ │ │ │ └── {ProjectName}DbContext.cs
165
+ │ │ ├── Repositories/
166
+ │ │ └── {ProjectName}.Infrastructure.csproj
167
+ │ └── {ProjectName}.Api/
168
+ │ ├── Controllers/
169
+ │ ├── Program.cs
170
+ │ └── {ProjectName}.Api.csproj
171
+ ├── tests/
172
+ │ └── {ProjectName}.Tests/
173
+ ├── web/
174
+ │ └── {projectname}-web/
175
+ │ ├── src/
176
+ │ ├── package.json
177
+ │ └── vite.config.ts
178
+ ├── {ProjectName}.sln
179
+ ├── Directory.Build.props
180
+ └── README.md
181
+ ```
182
+
183
+ ### 2.2 Creer la solution .NET
184
+
185
+ ```bash
186
+ # Creer le repertoire
187
+ mkdir -p "$PROJECT_NAME"
188
+ cd "$PROJECT_NAME"
189
+
190
+ # Creer la solution
191
+ dotnet new sln -n "$PROJECT_NAME"
192
+
193
+ # Creer les projets
194
+ dotnet new classlib -n "$PROJECT_NAME.Domain" -o "src/$PROJECT_NAME.Domain"
195
+ dotnet new classlib -n "$PROJECT_NAME.Application" -o "src/$PROJECT_NAME.Application"
196
+ dotnet new classlib -n "$PROJECT_NAME.Infrastructure" -o "src/$PROJECT_NAME.Infrastructure"
197
+ dotnet new webapi -n "$PROJECT_NAME.Api" -o "src/$PROJECT_NAME.Api"
198
+
199
+ # Ajouter a la solution
200
+ dotnet sln add "src/$PROJECT_NAME.Domain"
201
+ dotnet sln add "src/$PROJECT_NAME.Application"
202
+ dotnet sln add "src/$PROJECT_NAME.Infrastructure"
203
+ dotnet sln add "src/$PROJECT_NAME.Api"
204
+
205
+ # Ajouter les references entre projets
206
+ dotnet add "src/$PROJECT_NAME.Application" reference "src/$PROJECT_NAME.Domain"
207
+ dotnet add "src/$PROJECT_NAME.Infrastructure" reference "src/$PROJECT_NAME.Domain"
208
+ dotnet add "src/$PROJECT_NAME.Infrastructure" reference "src/$PROJECT_NAME.Application"
209
+ dotnet add "src/$PROJECT_NAME.Api" reference "src/$PROJECT_NAME.Application"
210
+ dotnet add "src/$PROJECT_NAME.Api" reference "src/$PROJECT_NAME.Infrastructure"
211
+ ```
212
+
213
+ ### 2.3 Installer les packages SmartStack (NuGet)
214
+
215
+ ```bash
216
+ # SmartStack packages
217
+ dotnet add "src/$PROJECT_NAME.Domain" package SmartStack.Domain
218
+ dotnet add "src/$PROJECT_NAME.Application" package SmartStack.Application
219
+ dotnet add "src/$PROJECT_NAME.Infrastructure" package SmartStack.Infrastructure
220
+ dotnet add "src/$PROJECT_NAME.Api" package SmartStack.Api.Core
221
+
222
+ # EF Core (selon base de donnees selectionnee)
223
+ # SQL Server:
224
+ dotnet add "src/$PROJECT_NAME.Infrastructure" package Microsoft.EntityFrameworkCore.SqlServer
225
+
226
+ # PostgreSQL:
227
+ # dotnet add "src/$PROJECT_NAME.Infrastructure" package Npgsql.EntityFrameworkCore.PostgreSQL
228
+
229
+ # SQLite:
230
+ # dotnet add "src/$PROJECT_NAME.Infrastructure" package Microsoft.EntityFrameworkCore.Sqlite
231
+
232
+ # Tools
233
+ dotnet add "src/$PROJECT_NAME.Infrastructure" package Microsoft.EntityFrameworkCore.Design
234
+ ```
235
+
236
+ ---
237
+
238
+ ## ETAPE 3: CREATION DU FRONTEND (si Full Stack)
239
+
240
+ ### 3.1 Creer le projet React
241
+
242
+ ```bash
243
+ mkdir -p "web/${PROJECT_NAME_LOWER}-web"
244
+ cd "web/${PROJECT_NAME_LOWER}-web"
245
+
246
+ # Initialiser avec Vite
247
+ npm create vite@latest . -- --template react-ts
248
+
249
+ # Installer les dependances
250
+ npm install
251
+
252
+ # Installer SmartStack React
253
+ npm install @atlashub/smartstack-react
254
+
255
+ # Installer les peer dependencies
256
+ npm install axios react-router-dom i18next react-i18next
257
+
258
+ # Installer Tailwind CSS
259
+ npm install -D tailwindcss @tailwindcss/vite
260
+ ```
261
+
262
+ ### 3.2 Configurer le projet React
263
+
264
+ Creer `vite.config.ts`:
265
+ ```typescript
266
+ import { defineConfig } from 'vite'
267
+ import react from '@vitejs/plugin-react'
268
+ import tailwindcss from '@tailwindcss/vite'
269
+
270
+ export default defineConfig({
271
+ plugins: [react(), tailwindcss()],
272
+ server: {
273
+ port: 5173,
274
+ proxy: {
275
+ '/api': {
276
+ target: 'https://localhost:5001',
277
+ changeOrigin: true,
278
+ secure: false
279
+ }
280
+ }
281
+ }
282
+ })
283
+ ```
284
+
285
+ Creer `src/main.tsx`:
286
+ ```tsx
287
+ import { StrictMode } from 'react'
288
+ import { createRoot } from 'react-dom/client'
289
+ import { BrowserRouter } from 'react-router-dom'
290
+ import { SmartStackProvider } from '@atlashub/smartstack-react'
291
+ import '@atlashub/smartstack-react/styles'
292
+ import App from './App'
293
+
294
+ createRoot(document.getElementById('root')!).render(
295
+ <StrictMode>
296
+ <BrowserRouter>
297
+ <SmartStackProvider apiUrl="https://localhost:5001/api">
298
+ <App />
299
+ </SmartStackProvider>
300
+ </BrowserRouter>
301
+ </StrictMode>
302
+ )
303
+ ```
304
+
305
+ ---
306
+
307
+ ## ETAPE 4: CONFIGURATION
308
+
309
+ ### 4.1 Creer Directory.Build.props
310
+
311
+ ```xml
312
+ <Project>
313
+ <PropertyGroup>
314
+ <TargetFramework>net10.0</TargetFramework>
315
+ <Nullable>enable</Nullable>
316
+ <ImplicitUsings>enable</ImplicitUsings>
317
+ <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
318
+ </PropertyGroup>
319
+ </Project>
320
+ ```
321
+
322
+ ### 4.2 Configurer appsettings.json
323
+
324
+ ```json
325
+ {
326
+ "ConnectionStrings": {
327
+ "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database={ProjectName};Trusted_Connection=True;MultipleActiveResultSets=true"
328
+ },
329
+ "SmartStack": {
330
+ "Modules": {
331
+ "Auth": true,
332
+ "Navigation": true,
333
+ "AI": false,
334
+ "Notifications": true
335
+ }
336
+ },
337
+ "Jwt": {
338
+ "Secret": "CHANGE_THIS_SECRET_IN_PRODUCTION_MIN_32_CHARS",
339
+ "Issuer": "{ProjectName}",
340
+ "Audience": "{ProjectName}",
341
+ "ExpirationMinutes": 60
342
+ },
343
+ "Logging": {
344
+ "LogLevel": {
345
+ "Default": "Information"
346
+ }
347
+ }
348
+ }
349
+ ```
350
+
351
+ ### 4.3 Configurer Program.cs
352
+
353
+ ```csharp
354
+ using SmartStack.Api.Core;
355
+ using SmartStack.Infrastructure;
356
+ using {ProjectName}.Infrastructure.Data;
357
+
358
+ var builder = WebApplication.CreateBuilder(args);
359
+
360
+ // SmartStack services
361
+ builder.Services.AddSmartStackCore(builder.Configuration);
362
+ builder.Services.AddSmartStackInfrastructure<{ProjectName}DbContext>(builder.Configuration);
363
+
364
+ // Add controllers
365
+ builder.Services.AddControllers();
366
+ builder.Services.AddEndpointsApiExplorer();
367
+ builder.Services.AddOpenApi();
368
+
369
+ var app = builder.Build();
370
+
371
+ // SmartStack middleware
372
+ app.UseSmartStackMiddleware();
373
+
374
+ if (app.Environment.IsDevelopment())
375
+ {
376
+ app.MapOpenApi();
377
+ app.UseScalar();
378
+ }
379
+
380
+ app.UseHttpsRedirection();
381
+ app.UseAuthentication();
382
+ app.UseAuthorization();
383
+ app.MapControllers();
384
+
385
+ app.Run();
386
+ ```
387
+
388
+ ### 4.4 Creer le DbContext
389
+
390
+ ```csharp
391
+ using Microsoft.EntityFrameworkCore;
392
+ using SmartStack.Infrastructure.Data;
393
+
394
+ namespace {ProjectName}.Infrastructure.Data;
395
+
396
+ public class {ProjectName}DbContext : SmartStackDbContext
397
+ {
398
+ public {ProjectName}DbContext(DbContextOptions<{ProjectName}DbContext> options)
399
+ : base(options)
400
+ {
401
+ }
402
+
403
+ protected override void OnModelCreating(ModelBuilder modelBuilder)
404
+ {
405
+ base.OnModelCreating(modelBuilder);
406
+
407
+ // Add your entity configurations here
408
+ }
409
+ }
410
+ ```
411
+
412
+ ---
413
+
414
+ ## ETAPE 5: INITIALISATION GIT
415
+
416
+ ```bash
417
+ cd "$PROJECT_NAME"
418
+
419
+ # Initialiser Git
420
+ git init
421
+
422
+ # Creer .gitignore
423
+ cat > .gitignore << 'EOF'
424
+ ## .NET
425
+ bin/
426
+ obj/
427
+ *.user
428
+ *.suo
429
+ .vs/
430
+
431
+ ## Node
432
+ node_modules/
433
+ dist/
434
+
435
+ ## IDE
436
+ .idea/
437
+ .vscode/
438
+
439
+ ## Environment
440
+ *.env
441
+ *.env.local
442
+ appsettings.*.json
443
+ !appsettings.json
444
+ !appsettings.Development.json
445
+
446
+ ## Build
447
+ *.log
448
+ EOF
449
+
450
+ # Premier commit
451
+ git add .
452
+ git commit -m "chore: initial SmartStack project setup"
453
+ ```
454
+
455
+ ---
456
+
457
+ ## ETAPE 6: VERIFICATION
458
+
459
+ ### 6.1 Build Backend
460
+
461
+ ```bash
462
+ dotnet restore
463
+ dotnet build
464
+ ```
465
+
466
+ ### 6.2 Build Frontend (si applicable)
467
+
468
+ ```bash
469
+ cd "web/${PROJECT_NAME_LOWER}-web"
470
+ npm run build
471
+ ```
472
+
473
+ ---
474
+
475
+ ## RESUME FINAL
476
+
477
+ ```
478
+ ================================================================================
479
+ SMARTSTACK PROJECT INITIALIZED
480
+ ================================================================================
481
+
482
+ Projet: {ProjectName}
483
+ Type: {Full Stack|Backend Only|Frontend Only}
484
+ Database: {SQL Server|PostgreSQL|SQLite}
485
+ Modules: {Auth, Navigation, ...}
486
+
487
+ STRUCTURE CREEE:
488
+ src/
489
+ ├── {ProjectName}.Domain/
490
+ ├── {ProjectName}.Application/
491
+ ├── {ProjectName}.Infrastructure/
492
+ └── {ProjectName}.Api/
493
+ web/
494
+ └── {projectname}-web/
495
+
496
+ PACKAGES INSTALLES:
497
+ NuGet:
498
+ ✓ SmartStack.Domain
499
+ ✓ SmartStack.Application
500
+ ✓ SmartStack.Infrastructure
501
+ ✓ SmartStack.Api.Core
502
+ npm:
503
+ ✓ @atlashub/smartstack-react
504
+ ✓ tailwindcss
505
+
506
+ PROCHAINES ETAPES:
507
+ 1. Configurer la connection string dans appsettings.json
508
+ 2. Creer la migration initiale:
509
+ dotnet ef migrations add InitialCreate -p src/{ProjectName}.Infrastructure -s src/{ProjectName}.Api
510
+ 3. Appliquer la migration:
511
+ dotnet ef database update -p src/{ProjectName}.Infrastructure -s src/{ProjectName}.Api
512
+ 4. Lancer le backend:
513
+ dotnet run --project src/{ProjectName}.Api
514
+ 5. Lancer le frontend:
515
+ cd web/{projectname}-web && npm run dev
516
+
517
+ DOCUMENTATION:
518
+ - SmartStack: https://docs.smartstack.app
519
+ - API Reference: https://localhost:5001/scalar
520
+
521
+ ================================================================================
522
+ ```
523
+
524
+ ---
525
+
526
+ ## MODES
527
+
528
+ | Commande | Action |
529
+ |----------|--------|
530
+ | `smartstack init {name}` | Creer projet avec wizard interactif |
531
+ | `smartstack init {name} --full-stack` | Full stack (defaut) |
532
+ | `smartstack init {name} --backend` | Backend .NET uniquement |
533
+ | `smartstack init {name} --frontend` | Frontend React uniquement |
534
+ | `smartstack init {name} --db sqlserver` | Specifier la DB |
535
+ | `smartstack init {name} --dry-run` | Simulation |
536
+ | `smartstack init {name} --skip-mcp-check` | Ignorer verification MCP |
537
+
538
+ ---
539
+
540
+ ## MCP SERVERS
541
+
542
+ Les projets SmartStack utilisent les serveurs MCP pour ameliorer l'experience de developpement:
543
+
544
+ ### SmartStack MCP
545
+
546
+ Fournit:
547
+ - `validate_conventions` - Valide les conventions SQL, migrations, services, namespaces
548
+ - `check_migrations` - Analyse les conflits EF Core entre branches
549
+ - `scaffold_extension` - Genere du code (services, entites, controllers, components)
550
+ - `api_docs` - Documentation API Swagger/OpenAPI
551
+
552
+ ### Context7 MCP
553
+
554
+ Fournit:
555
+ - `resolve-library-id` - Trouve l'ID Context7 d'une bibliotheque
556
+ - `query-docs` - Recupere la documentation et exemples de code a jour
557
+
558
+ **Installation:**
559
+ ```bash
560
+ claude mcp add smartstack
561
+ claude mcp add context7
562
+ ```