@atlashub/smartstack-cli 1.13.2 → 1.14.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 (210) hide show
  1. package/.documentation/agents.html +1 -1
  2. package/.documentation/apex.html +1 -1
  3. package/.documentation/business-analyse.html +1 -1
  4. package/.documentation/cli-commands.html +3 -3
  5. package/.documentation/commands.html +1 -1
  6. package/.documentation/efcore.html +1 -1
  7. package/.documentation/gitflow.html +1 -1
  8. package/.documentation/hooks.html +1 -1
  9. package/.documentation/index.html +1 -1
  10. package/.documentation/init.html +3 -3
  11. package/.documentation/installation.html +1001 -352
  12. package/.documentation/ralph-loop.html +1 -1
  13. package/.documentation/test-web.html +1 -1
  14. package/README.md +88 -20
  15. package/dist/index.js +276 -85
  16. package/dist/index.js.map +1 -1
  17. package/package.json +1 -1
  18. package/templates/agents/code-reviewer.md +163 -0
  19. package/templates/agents/efcore/db-deploy.md +25 -7
  20. package/templates/agents/efcore/db-reset.md +31 -10
  21. package/templates/agents/efcore/db-status.md +22 -5
  22. package/templates/agents/efcore/migration.md +69 -19
  23. package/templates/agents/gitflow/cleanup.md +8 -1
  24. package/templates/agents/gitflow/commit.md +7 -5
  25. package/templates/agents/gitflow/finish.md +6 -4
  26. package/templates/agents/gitflow/pr.md +8 -1
  27. package/templates/agents/gitflow/start.md +1 -1
  28. package/templates/commands/check-version.md +267 -0
  29. package/templates/commands/efcore/_shared.md +30 -1
  30. package/templates/commands/efcore/db-reset.md +18 -6
  31. package/templates/commands/gitflow/OPTIMIZATIONS.md +206 -0
  32. package/templates/commands/refactor.md +164 -0
  33. package/templates/project/DependencyInjection.Application.cs.template +25 -0
  34. package/templates/project/DependencyInjection.Infrastructure.cs.template +61 -0
  35. package/templates/project/DesignTimeExtensionsDbContextFactory.cs.template +70 -0
  36. package/templates/project/ExampleEntity.cs.template +116 -0
  37. package/templates/project/ExampleEntityConfiguration.cs.template +64 -0
  38. package/templates/project/ExampleService.cs.template +146 -0
  39. package/templates/project/ExtensionsDbContext.cs.template +41 -0
  40. package/templates/project/IExtensionsDbContext.cs.template +22 -0
  41. package/templates/project/Program.cs.template +47 -0
  42. package/templates/project/README.md +79 -0
  43. package/templates/ralph/README.md +10 -8
  44. package/templates/ralph/ralph.config.yaml +2 -2
  45. package/templates/skills/_shared.md +44 -44
  46. package/templates/skills/ai-prompt/SKILL.md +55 -55
  47. package/templates/skills/apex/SKILL.md +235 -0
  48. package/templates/skills/apex/steps/step-00-init.md +203 -0
  49. package/templates/skills/apex/steps/step-01-analyze.md +210 -0
  50. package/templates/skills/apex/steps/step-02-plan.md +217 -0
  51. package/templates/skills/apex/steps/step-03-execute.md +178 -0
  52. package/templates/skills/apex/steps/step-04-validate.md +217 -0
  53. package/templates/skills/apex/steps/step-05-examine.md +207 -0
  54. package/templates/skills/apex/steps/step-06-resolve.md +181 -0
  55. package/templates/skills/apex/steps/step-07-tests.md +206 -0
  56. package/templates/skills/apex/steps/step-08-run-tests.md +207 -0
  57. package/templates/skills/apex/templates/00-context.md +46 -0
  58. package/templates/skills/apex/templates/01-analyze.md +63 -0
  59. package/templates/skills/apex/templates/02-plan.md +63 -0
  60. package/templates/skills/apex/templates/03-execute.md +34 -0
  61. package/templates/skills/apex/templates/04-validate.md +61 -0
  62. package/templates/skills/apex/templates/05-examine.md +58 -0
  63. package/templates/skills/apex/templates/06-resolve.md +39 -0
  64. package/templates/skills/apex/templates/07-tests.md +56 -0
  65. package/templates/skills/apex/templates/08-run-tests.md +41 -0
  66. package/templates/skills/apex/templates/README.md +69 -0
  67. package/templates/skills/application/SKILL.md +50 -50
  68. package/templates/skills/application/templates-backend.md +25 -25
  69. package/templates/skills/application/templates-frontend.md +43 -43
  70. package/templates/skills/application/templates-i18n.md +29 -29
  71. package/templates/skills/application/templates-seed.md +77 -77
  72. package/templates/skills/business-analyse/SKILL.md +223 -0
  73. package/templates/skills/business-analyse/_shared.md +258 -0
  74. package/templates/skills/business-analyse/questionnaire/01-context.md +33 -0
  75. package/templates/skills/business-analyse/questionnaire/02-stakeholders.md +35 -0
  76. package/templates/skills/business-analyse/questionnaire/03-scope.md +35 -0
  77. package/templates/skills/business-analyse/questionnaire/04-data.md +36 -0
  78. package/templates/skills/business-analyse/questionnaire/05-integrations.md +36 -0
  79. package/templates/skills/business-analyse/questionnaire/06-security.md +40 -0
  80. package/templates/skills/business-analyse/questionnaire/07-ui.md +36 -0
  81. package/templates/skills/business-analyse/questionnaire/08-performance.md +35 -0
  82. package/templates/skills/business-analyse/questionnaire/09-constraints.md +35 -0
  83. package/templates/skills/business-analyse/questionnaire/10-documentation.md +35 -0
  84. package/templates/skills/business-analyse/questionnaire.md +177 -177
  85. package/templates/skills/business-analyse/react/components.md +340 -0
  86. package/templates/skills/business-analyse/react/i18n-template.md +245 -0
  87. package/templates/skills/business-analyse/react/schema.md +151 -0
  88. package/templates/skills/business-analyse/steps/step-00-init.md +293 -0
  89. package/templates/skills/business-analyse/steps/step-01-discover.md +267 -0
  90. package/templates/skills/business-analyse/steps/step-02-analyse.md +243 -0
  91. package/templates/skills/business-analyse/steps/step-03-specify.md +317 -0
  92. package/templates/skills/business-analyse/steps/step-04-validate.md +239 -0
  93. package/templates/skills/business-analyse/steps/step-05-handoff.md +336 -0
  94. package/templates/skills/business-analyse/steps/step-06-doc-html.md +261 -0
  95. package/templates/skills/business-analyse/templates/00-context.md +105 -0
  96. package/templates/skills/business-analyse/templates/frd-brd.md +97 -0
  97. package/templates/skills/business-analyse/templates/frd-discovery.md +78 -0
  98. package/templates/skills/business-analyse/templates/frd-handoff.md +118 -0
  99. package/templates/skills/business-analyse/templates/frd-spec.md +168 -0
  100. package/templates/skills/business-analyse/templates-frd.md +217 -217
  101. package/templates/skills/business-analyse/templates-react.md +26 -26
  102. package/templates/skills/controller/SKILL.md +141 -92
  103. package/templates/skills/controller/postman-templates.md +15 -15
  104. package/templates/skills/controller/steps/step-00-init.md +191 -0
  105. package/templates/skills/controller/steps/step-01-analyze.md +146 -0
  106. package/templates/skills/controller/steps/step-02-plan.md +176 -0
  107. package/templates/skills/controller/steps/step-03-generate.md +219 -0
  108. package/templates/skills/controller/steps/step-04-perms.md +219 -0
  109. package/templates/skills/controller/steps/step-05-validate.md +107 -0
  110. package/templates/skills/controller/templates.md +77 -77
  111. package/templates/skills/documentation/SKILL.md +79 -79
  112. package/templates/skills/feature-full/SKILL.md +38 -38
  113. package/templates/skills/gitflow/SKILL.md +277 -0
  114. package/templates/{commands → skills}/gitflow/_shared.md +20 -20
  115. package/templates/skills/gitflow/phases/abort.md +173 -0
  116. package/templates/skills/gitflow/phases/cleanup.md +226 -0
  117. package/templates/skills/gitflow/phases/status.md +178 -0
  118. package/templates/skills/gitflow/steps/step-commit.md +255 -0
  119. package/templates/skills/gitflow/steps/step-finish.md +255 -0
  120. package/templates/skills/gitflow/steps/step-init.md +209 -0
  121. package/templates/skills/gitflow/steps/step-merge.md +225 -0
  122. package/templates/skills/gitflow/steps/step-plan.md +208 -0
  123. package/templates/skills/gitflow/steps/step-pr.md +235 -0
  124. package/templates/skills/gitflow/steps/step-start.md +234 -0
  125. package/templates/skills/gitflow/steps/step-sync.md +200 -0
  126. package/templates/skills/gitflow/templates/config.json +53 -0
  127. package/templates/skills/notification/SKILL.md +51 -51
  128. package/templates/skills/ralph-loop/SKILL.md +228 -0
  129. package/templates/skills/ralph-loop/steps/step-00-init.md +201 -0
  130. package/templates/skills/ralph-loop/steps/step-01-task.md +169 -0
  131. package/templates/skills/ralph-loop/steps/step-02-execute.md +173 -0
  132. package/templates/skills/ralph-loop/steps/step-03-commit.md +170 -0
  133. package/templates/skills/ralph-loop/steps/step-04-check.md +162 -0
  134. package/templates/skills/ralph-loop/steps/step-05-report.md +181 -0
  135. package/templates/skills/review-code/SKILL.md +219 -0
  136. package/templates/skills/review-code/references/clean-code-principles.md +140 -0
  137. package/templates/skills/review-code/references/code-quality-metrics.md +174 -0
  138. package/templates/skills/review-code/references/feedback-patterns.md +149 -0
  139. package/templates/skills/review-code/references/security-checklist.md +127 -0
  140. package/templates/skills/ui-components/SKILL.md +54 -54
  141. package/templates/skills/workflow/SKILL.md +46 -46
  142. package/templates/commands/ai-prompt.md +0 -315
  143. package/templates/commands/apex/1-analyze.md +0 -100
  144. package/templates/commands/apex/2-plan.md +0 -145
  145. package/templates/commands/apex/3-execute.md +0 -171
  146. package/templates/commands/apex/4-examine.md +0 -116
  147. package/templates/commands/apex/5-tasks.md +0 -209
  148. package/templates/commands/apex.md +0 -76
  149. package/templates/commands/application/create.md +0 -362
  150. package/templates/commands/application/templates-backend.md +0 -463
  151. package/templates/commands/application/templates-frontend.md +0 -517
  152. package/templates/commands/application/templates-i18n.md +0 -478
  153. package/templates/commands/application/templates-seed.md +0 -362
  154. package/templates/commands/application.md +0 -303
  155. package/templates/commands/business-analyse/0-orchestrate.md +0 -156
  156. package/templates/commands/business-analyse/1-init.md +0 -99
  157. package/templates/commands/business-analyse/2-discover.md +0 -143
  158. package/templates/commands/business-analyse/3-analyse.md +0 -106
  159. package/templates/commands/business-analyse/4-specify.md +0 -133
  160. package/templates/commands/business-analyse/5-validate.md +0 -132
  161. package/templates/commands/business-analyse/6-handoff.md +0 -157
  162. package/templates/commands/business-analyse/7-doc-html.md +0 -103
  163. package/templates/commands/business-analyse/_shared.md +0 -176
  164. package/templates/commands/business-analyse/bug.md +0 -118
  165. package/templates/commands/business-analyse/change-request.md +0 -144
  166. package/templates/commands/business-analyse/hotfix.md +0 -116
  167. package/templates/commands/business-analyse.md +0 -121
  168. package/templates/commands/controller/create.md +0 -216
  169. package/templates/commands/controller/postman-templates.md +0 -528
  170. package/templates/commands/controller/templates.md +0 -600
  171. package/templates/commands/controller.md +0 -337
  172. package/templates/commands/create/agent.md +0 -138
  173. package/templates/commands/create/command.md +0 -166
  174. package/templates/commands/create/hook.md +0 -234
  175. package/templates/commands/create/plugin.md +0 -329
  176. package/templates/commands/create/project.md +0 -508
  177. package/templates/commands/create/skill.md +0 -199
  178. package/templates/commands/create.md +0 -220
  179. package/templates/commands/documentation/module.md +0 -202
  180. package/templates/commands/documentation/templates.md +0 -432
  181. package/templates/commands/documentation.md +0 -190
  182. package/templates/commands/epct.md +0 -69
  183. package/templates/commands/explain.md +0 -186
  184. package/templates/commands/feature-full.md +0 -267
  185. package/templates/commands/gitflow/1-init.md +0 -188
  186. package/templates/commands/gitflow/10-start.md +0 -190
  187. package/templates/commands/gitflow/11-finish.md +0 -382
  188. package/templates/commands/gitflow/12-cleanup.md +0 -103
  189. package/templates/commands/gitflow/13-sync.md +0 -216
  190. package/templates/commands/gitflow/14-rebase.md +0 -251
  191. package/templates/commands/gitflow/2-status.md +0 -122
  192. package/templates/commands/gitflow/3-commit.md +0 -209
  193. package/templates/commands/gitflow/4-plan.md +0 -174
  194. package/templates/commands/gitflow/5-exec.md +0 -202
  195. package/templates/commands/gitflow/6-abort.md +0 -121
  196. package/templates/commands/gitflow/7-pull-request.md +0 -176
  197. package/templates/commands/gitflow/8-review.md +0 -113
  198. package/templates/commands/gitflow/9-merge.md +0 -157
  199. package/templates/commands/gitflow.md +0 -128
  200. package/templates/commands/implement.md +0 -663
  201. package/templates/commands/init.md +0 -567
  202. package/templates/commands/mcp-integration.md +0 -330
  203. package/templates/commands/notification.md +0 -129
  204. package/templates/commands/oneshot.md +0 -57
  205. package/templates/commands/quickstart.md +0 -154
  206. package/templates/commands/ralph-loop/cancel-ralph.md +0 -18
  207. package/templates/commands/ralph-loop/help.md +0 -126
  208. package/templates/commands/ralph-loop/ralph-loop.md +0 -120
  209. package/templates/commands/review.md +0 -106
  210. package/templates/commands/workflow.md +0 -193
@@ -5,14 +5,327 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Installation - SmartStack CLI</title>
7
7
  <link rel="stylesheet" href="css/styles.css">
8
+ <style>
9
+ /* Installation-specific styles */
10
+ .platform-selector {
11
+ display: flex;
12
+ gap: 1rem;
13
+ margin-bottom: 2rem;
14
+ }
15
+ .platform-btn {
16
+ flex: 1;
17
+ padding: 1rem 1.5rem;
18
+ border: 2px solid var(--border);
19
+ border-radius: 8px;
20
+ background: var(--bg-card);
21
+ color: var(--text);
22
+ cursor: pointer;
23
+ transition: all 0.2s ease;
24
+ display: flex;
25
+ align-items: center;
26
+ gap: 0.75rem;
27
+ font-size: 1rem;
28
+ font-weight: 500;
29
+ }
30
+ .platform-btn:hover {
31
+ border-color: var(--primary);
32
+ background: var(--bg-hover);
33
+ }
34
+ .platform-btn.active {
35
+ border-color: var(--primary);
36
+ background: rgba(59, 130, 246, 0.1);
37
+ }
38
+ .platform-btn .platform-icon {
39
+ font-size: 1.5rem;
40
+ }
41
+ .platform-content {
42
+ display: none;
43
+ }
44
+ .platform-content.active {
45
+ display: block;
46
+ }
47
+
48
+ /* OS Selector */
49
+ .os-selector {
50
+ display: flex;
51
+ gap: 0.5rem;
52
+ margin-bottom: 1rem;
53
+ }
54
+ .os-btn {
55
+ padding: 0.5rem 1rem;
56
+ border: 1px solid var(--border);
57
+ border-radius: 6px;
58
+ background: var(--bg-card);
59
+ color: var(--text);
60
+ cursor: pointer;
61
+ transition: all 0.2s ease;
62
+ font-size: 0.9rem;
63
+ }
64
+ .os-btn:hover {
65
+ border-color: var(--primary);
66
+ }
67
+ .os-btn.active {
68
+ border-color: var(--primary);
69
+ background: rgba(59, 130, 246, 0.1);
70
+ font-weight: 500;
71
+ }
72
+ .os-content {
73
+ display: none;
74
+ }
75
+ .os-content.active {
76
+ display: block;
77
+ }
78
+
79
+ /* Settings panel */
80
+ .settings-panel {
81
+ background: var(--bg-card);
82
+ border: 1px solid var(--border);
83
+ border-radius: 8px;
84
+ padding: 1.5rem;
85
+ margin-bottom: 2rem;
86
+ }
87
+ .settings-row {
88
+ display: flex;
89
+ gap: 2rem;
90
+ flex-wrap: wrap;
91
+ }
92
+ .settings-group {
93
+ flex: 1;
94
+ min-width: 200px;
95
+ }
96
+ .settings-label {
97
+ font-weight: 600;
98
+ color: var(--text);
99
+ margin-bottom: 0.75rem;
100
+ display: block;
101
+ }
102
+
103
+ /* Tutorial section */
104
+ .tutorial-section {
105
+ background: var(--bg-card);
106
+ border: 1px solid var(--border);
107
+ border-radius: 8px;
108
+ padding: 1.5rem;
109
+ margin-bottom: 1.5rem;
110
+ }
111
+ .tutorial-section h4 {
112
+ color: var(--text);
113
+ margin: 0 0 1rem 0;
114
+ display: flex;
115
+ align-items: center;
116
+ gap: 0.5rem;
117
+ }
118
+ .tutorial-section h4 .step-badge {
119
+ background: var(--primary);
120
+ color: white;
121
+ padding: 0.25rem 0.75rem;
122
+ border-radius: 4px;
123
+ font-size: 0.8rem;
124
+ }
125
+ .tutorial-note {
126
+ background: rgba(59, 130, 246, 0.1);
127
+ border-left: 3px solid var(--primary);
128
+ padding: 1rem;
129
+ margin: 1rem 0;
130
+ border-radius: 0 4px 4px 0;
131
+ }
132
+ .tutorial-note p {
133
+ margin: 0;
134
+ color: var(--text);
135
+ }
136
+
137
+ /* API Key Input */
138
+ .api-key-section {
139
+ margin: 1.5rem 0;
140
+ padding: 1rem;
141
+ background: var(--bg-card);
142
+ border-radius: 8px;
143
+ border: 1px solid var(--border);
144
+ }
145
+ .api-key-input-wrapper {
146
+ display: flex;
147
+ gap: 0.5rem;
148
+ margin-top: 0.5rem;
149
+ }
150
+ .api-key-input {
151
+ flex: 1;
152
+ padding: 0.5rem 0.75rem;
153
+ border: 1px solid var(--border);
154
+ border-radius: 4px;
155
+ background: var(--bg-input);
156
+ color: var(--text);
157
+ font-family: monospace;
158
+ }
159
+ .api-key-input:focus {
160
+ outline: none;
161
+ border-color: var(--primary);
162
+ }
163
+ .api-key-save-btn {
164
+ padding: 0.5rem 1rem;
165
+ background: var(--primary);
166
+ color: white;
167
+ border: none;
168
+ border-radius: 4px;
169
+ cursor: pointer;
170
+ font-weight: 500;
171
+ }
172
+ .api-key-save-btn:hover {
173
+ background: var(--primary-hover);
174
+ }
175
+
176
+ /* Progress bar */
177
+ .progress-container {
178
+ margin: 2rem 0;
179
+ padding: 1.5rem;
180
+ background: var(--bg-card);
181
+ border-radius: 8px;
182
+ border: 1px solid var(--border);
183
+ }
184
+ .progress-header {
185
+ display: flex;
186
+ justify-content: space-between;
187
+ align-items: center;
188
+ margin-bottom: 1rem;
189
+ }
190
+ .progress-title {
191
+ font-weight: 600;
192
+ color: var(--text);
193
+ }
194
+ .progress-count {
195
+ color: var(--text-muted);
196
+ font-size: 0.9rem;
197
+ }
198
+ .progress-bar {
199
+ height: 8px;
200
+ background: var(--bg-hover);
201
+ border-radius: 4px;
202
+ overflow: hidden;
203
+ }
204
+ .progress-fill {
205
+ height: 100%;
206
+ background: linear-gradient(90deg, var(--primary), var(--success));
207
+ border-radius: 4px;
208
+ transition: width 0.3s ease;
209
+ }
210
+
211
+ /* Checklist */
212
+ .checklist {
213
+ list-style: none;
214
+ padding: 0;
215
+ margin: 0;
216
+ }
217
+ .checklist-item {
218
+ display: flex;
219
+ align-items: flex-start;
220
+ gap: 1rem;
221
+ padding: 1.5rem;
222
+ margin-bottom: 1rem;
223
+ background: var(--bg-card);
224
+ border: 1px solid var(--border);
225
+ border-radius: 8px;
226
+ transition: all 0.2s ease;
227
+ }
228
+ .checklist-item:hover {
229
+ border-color: var(--primary);
230
+ }
231
+ .checklist-item.completed {
232
+ border-color: var(--success);
233
+ background: rgba(34, 197, 94, 0.05);
234
+ }
235
+ .checklist-checkbox {
236
+ width: 24px;
237
+ height: 24px;
238
+ min-width: 24px;
239
+ border: 2px solid var(--border);
240
+ border-radius: 50%;
241
+ cursor: pointer;
242
+ display: flex;
243
+ align-items: center;
244
+ justify-content: center;
245
+ transition: all 0.2s ease;
246
+ margin-top: 0.2rem;
247
+ }
248
+ .checklist-checkbox:hover {
249
+ border-color: var(--primary);
250
+ }
251
+ .checklist-item.completed .checklist-checkbox {
252
+ background: var(--success);
253
+ border-color: var(--success);
254
+ }
255
+ .checklist-checkbox::after {
256
+ content: '';
257
+ display: none;
258
+ }
259
+ .checklist-item.completed .checklist-checkbox::after {
260
+ content: '\2713';
261
+ display: block;
262
+ color: white;
263
+ font-weight: bold;
264
+ }
265
+ .checklist-content {
266
+ flex: 1;
267
+ }
268
+ .checklist-title {
269
+ font-weight: 600;
270
+ margin-bottom: 0.5rem;
271
+ color: var(--text);
272
+ }
273
+ .checklist-description {
274
+ color: var(--text-muted);
275
+ font-size: 0.9rem;
276
+ line-height: 1.5;
277
+ }
278
+ .checklist-number {
279
+ width: 28px;
280
+ height: 28px;
281
+ min-width: 28px;
282
+ background: var(--primary);
283
+ color: white;
284
+ border-radius: 50%;
285
+ display: flex;
286
+ align-items: center;
287
+ justify-content: center;
288
+ font-weight: 600;
289
+ font-size: 0.85rem;
290
+ }
291
+ .checklist-item.completed .checklist-number {
292
+ background: var(--success);
293
+ }
294
+
295
+ /* Dynamic command display */
296
+ .dynamic-command {
297
+ transition: all 0.2s ease;
298
+ }
299
+ .command-highlight {
300
+ background: rgba(59, 130, 246, 0.2);
301
+ padding: 0 2px;
302
+ border-radius: 2px;
303
+ }
304
+
305
+ /* Reset button */
306
+ .reset-progress-btn {
307
+ margin-top: 1rem;
308
+ padding: 0.5rem 1rem;
309
+ background: transparent;
310
+ color: var(--text-muted);
311
+ border: 1px solid var(--border);
312
+ border-radius: 4px;
313
+ cursor: pointer;
314
+ font-size: 0.85rem;
315
+ }
316
+ .reset-progress-btn:hover {
317
+ background: var(--bg-hover);
318
+ color: var(--text);
319
+ }
320
+ </style>
8
321
  </head>
9
322
  <body>
10
323
  <div class="app-container">
11
- <!-- Global Header (single unified element) -->
324
+ <!-- Global Header -->
12
325
  <header class="global-header">
13
326
  <div class="logo">SS</div>
14
327
  <span class="site-title">SmartStack CLI</span>
15
- <span class="version-badge">v1.5.0</span>
328
+ <span class="version-badge">v1.14.0</span>
16
329
  <div class="header-divider"></div>
17
330
  <span class="page-title">Installation</span>
18
331
  <nav class="breadcrumb">
@@ -25,8 +338,8 @@
25
338
  </nav>
26
339
  <!-- Language Select -->
27
340
  <select class="lang-select" id="lang-select" onchange="setLanguage(this.value); localStorage.setItem('doc-language', this.value);">
28
- <option value="fr">🇫🇷 FR</option>
29
- <option value="en">🇬🇧 EN</option>
341
+ <option value="fr">&#127467;&#127479; FR</option>
342
+ <option value="en">&#127468;&#127463; EN</option>
30
343
  </select>
31
344
  <!-- Search -->
32
345
  <div class="header-search">
@@ -128,417 +441,565 @@
128
441
  <!-- Main Content -->
129
442
  <main class="main-content">
130
443
  <div class="content content-wide">
131
- <!-- Prerequisites -->
132
- <section id="prerequisites">
444
+
445
+ <!-- Introduction -->
446
+ <section id="introduction">
133
447
  <h2>
134
- <span data-lang="fr">Prerequis</span>
135
- <span data-lang="en">Prerequisites</span>
448
+ <span data-lang="fr">Installation de SmartStack CLI</span>
449
+ <span data-lang="en">SmartStack CLI Installation</span>
136
450
  </h2>
451
+ <p data-lang="fr">
452
+ Suivez cette checklist interactive pour installer SmartStack CLI et configurer votre environnement de developpement.
453
+ Votre progression est automatiquement sauvegardee.
454
+ </p>
455
+ <p data-lang="en">
456
+ Follow this interactive checklist to install SmartStack CLI and configure your development environment.
457
+ Your progress is automatically saved.
458
+ </p>
459
+ </section>
137
460
 
138
- <div class="feature-grid">
139
- <div class="feature-item">
140
- <span class="feature-icon">&#128215;</span>
141
- <span class="feature-text"><strong>Node.js</strong> &gt;= 18.0.0</span>
142
- </div>
143
- <div class="feature-item">
144
- <span class="feature-icon">&#128230;</span>
145
- <span class="feature-text"><strong>npm</strong> &gt;= 8.0.0</span>
146
- </div>
147
- <div class="feature-item">
148
- <span class="feature-icon">&#129302;</span>
149
- <span class="feature-text"><strong>Claude Code</strong> (CLI d'Anthropic)</span>
150
- </div>
461
+ <!-- Progress Bar -->
462
+ <div class="progress-container">
463
+ <div class="progress-header">
464
+ <span class="progress-title">
465
+ <span data-lang="fr">Progression</span>
466
+ <span data-lang="en">Progress</span>
467
+ </span>
468
+ <span class="progress-count" id="progress-count">0/7</span>
469
+ </div>
470
+ <div class="progress-bar">
471
+ <div class="progress-fill" id="progress-fill" style="width: 0%"></div>
151
472
  </div>
473
+ <button class="reset-progress-btn" onclick="resetProgress()">
474
+ <span data-lang="fr">Reinitialiser la progression</span>
475
+ <span data-lang="en">Reset progress</span>
476
+ </button>
477
+ </div>
478
+
479
+ <!-- Configuration Panel -->
480
+ <section id="config-panel">
481
+ <h3>
482
+ <span data-lang="fr">Configuration</span>
483
+ <span data-lang="en">Configuration</span>
484
+ </h3>
485
+ <p data-lang="fr">Selectionnez votre environnement pour afficher les commandes adaptees :</p>
486
+ <p data-lang="en">Select your environment to display adapted commands:</p>
152
487
 
153
- <div class="code-block">
154
- <button class="copy-btn">Copy</button>
155
- <pre><code># Verifier les versions
156
- node --version # v18.x.x ou superieur
157
- npm --version # v8.x.x ou superieur</code></pre>
488
+ <div class="settings-panel">
489
+ <div class="settings-row">
490
+ <div class="settings-group">
491
+ <span class="settings-label">
492
+ <span data-lang="fr">Systeme d'exploitation</span>
493
+ <span data-lang="en">Operating System</span>
494
+ </span>
495
+ <div class="os-selector">
496
+ <button class="os-btn active" data-os="windows" onclick="setOS('windows')">Windows</button>
497
+ <button class="os-btn" data-os="macos" onclick="setOS('macos')">macOS</button>
498
+ <button class="os-btn" data-os="linux" onclick="setOS('linux')">Linux</button>
499
+ </div>
500
+ </div>
501
+ <div class="settings-group">
502
+ <span class="settings-label">
503
+ <span data-lang="fr">Plateforme Git</span>
504
+ <span data-lang="en">Git Platform</span>
505
+ </span>
506
+ <div class="platform-selector">
507
+ <button class="platform-btn active" data-platform="github" onclick="setPlatform('github')">
508
+ <span class="platform-icon">&#128025;</span>
509
+ <span>GitHub</span>
510
+ </button>
511
+ <button class="platform-btn" data-platform="azure" onclick="setPlatform('azure')">
512
+ <span class="platform-icon">&#9729;</span>
513
+ <span>Azure DevOps</span>
514
+ </button>
515
+ </div>
516
+ </div>
517
+ </div>
158
518
  </div>
159
519
  </section>
160
520
 
161
- <!-- Quick Install -->
162
- <section id="quick-install">
163
- <h2>
164
- <span data-lang="fr">Installation rapide</span>
165
- <span data-lang="en">Quick Install</span>
166
- </h2>
521
+ <!-- Installation Checklist -->
522
+ <section id="checklist">
523
+ <h3>
524
+ <span data-lang="fr">Checklist d'installation</span>
525
+ <span data-lang="en">Installation Checklist</span>
526
+ </h3>
167
527
 
168
- <div class="code-block">
169
- <button class="copy-btn">Copy</button>
170
- <pre><code># Installer le package
171
- npm install -g @atlashub/smartstack-cli
528
+ <ul class="checklist" id="installation-checklist">
529
+ <!-- Step 1: Node.js -->
530
+ <li class="checklist-item" data-step="1">
531
+ <span class="checklist-number">1</span>
532
+ <div class="checklist-checkbox" onclick="toggleStep(1)"></div>
533
+ <div class="checklist-content">
534
+ <div class="checklist-title">
535
+ <span data-lang="fr">Installer Node.js</span>
536
+ <span data-lang="en">Install Node.js</span>
537
+ </div>
538
+ <div class="checklist-description">
539
+ <p data-lang="fr">Telechargez et installez Node.js (version 18 ou superieure recommandee).</p>
540
+ <p data-lang="en">Download and install Node.js (version 18 or higher recommended).</p>
541
+ <div class="code-block">
542
+ <button class="copy-btn">Copy</button>
543
+ <pre><code>node --version # Verifier l'installation</code></pre>
544
+ </div>
545
+ <p><a href="https://nodejs.org/" target="_blank">https://nodejs.org/</a></p>
546
+ </div>
547
+ </div>
548
+ </li>
172
549
 
173
- # Installer les commandes
174
- smartstack-cli install</code></pre>
175
- </div>
176
- </section>
550
+ <!-- Step 2: Git -->
551
+ <li class="checklist-item" data-step="2">
552
+ <span class="checklist-number">2</span>
553
+ <div class="checklist-checkbox" onclick="toggleStep(2)"></div>
554
+ <div class="checklist-content">
555
+ <div class="checklist-title">
556
+ <span data-lang="fr">Configurer Git</span>
557
+ <span data-lang="en">Configure Git</span>
558
+ </div>
559
+ <div class="checklist-description">
560
+ <!-- GitHub content -->
561
+ <div class="platform-content github-content active">
562
+ <p data-lang="fr">Configurez Git avec SSH pour GitHub. Ajoutez votre cle SSH dans les parametres GitHub.</p>
563
+ <p data-lang="en">Configure Git with SSH for GitHub. Add your SSH key in GitHub settings.</p>
177
564
 
178
- <!-- Global Installation -->
179
- <section id="global">
180
- <h2>
181
- <span data-lang="fr">Installation globale (recommandee)</span>
182
- <span data-lang="en">Global Installation (recommended)</span>
183
- </h2>
565
+ <!-- Windows -->
566
+ <div class="os-content windows-content active">
567
+ <div class="code-block">
568
+ <button class="copy-btn">Copy</button>
569
+ <pre><code># Generer une cle SSH (PowerShell)
570
+ ssh-keygen -t ed25519 -C "your_email@example.com"
184
571
 
185
- <p data-lang="fr">
186
- L'installation globale installe les commandes dans <code>~/.claude</code>, les rendant disponibles dans tous vos projets.
187
- </p>
188
- <p data-lang="en">
189
- Global installation installs commands to <code>~/.claude</code>, making them available in all your projects.
190
- </p>
572
+ # Demarrer le service SSH Agent
573
+ Get-Service ssh-agent | Set-Service -StartupType Automatic
574
+ Start-Service ssh-agent
575
+ ssh-add $env:USERPROFILE\.ssh\id_ed25519
576
+
577
+ # Afficher la cle publique a copier
578
+ Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub</code></pre>
579
+ </div>
580
+ </div>
581
+ <!-- macOS -->
582
+ <div class="os-content macos-content">
583
+ <div class="code-block">
584
+ <button class="copy-btn">Copy</button>
585
+ <pre><code># Generer une cle SSH
586
+ ssh-keygen -t ed25519 -C "your_email@example.com"
587
+
588
+ # Ajouter au Keychain
589
+ ssh-add --apple-use-keychain ~/.ssh/id_ed25519
590
+
591
+ # Afficher la cle publique a copier
592
+ cat ~/.ssh/id_ed25519.pub | pbcopy # Copie directement</code></pre>
593
+ </div>
594
+ </div>
595
+ <!-- Linux -->
596
+ <div class="os-content linux-content">
597
+ <div class="code-block">
598
+ <button class="copy-btn">Copy</button>
599
+ <pre><code># Generer une cle SSH
600
+ ssh-keygen -t ed25519 -C "your_email@example.com"
601
+
602
+ # Demarrer l'agent SSH
603
+ eval "$(ssh-agent -s)"
604
+ ssh-add ~/.ssh/id_ed25519
605
+
606
+ # Afficher la cle publique a copier
607
+ cat ~/.ssh/id_ed25519.pub</code></pre>
608
+ </div>
609
+ </div>
191
610
 
192
- <ol class="steps-list">
193
- <li>
194
- <div class="step-content">
195
- <h5 data-lang="fr">Installer le package npm</h5>
196
- <h5 data-lang="en">Install npm package</h5>
197
- <div class="code-block">
198
- <button class="copy-btn">Copy</button>
199
- <pre><code>npm install -g @atlashub/smartstack-cli</code></pre>
611
+ <p data-lang="fr">Ajoutez votre cle SSH ici : <a href="https://github.com/settings/keys" target="_blank">https://github.com/settings/keys</a></p>
612
+ <p data-lang="en">Add your SSH key here: <a href="https://github.com/settings/keys" target="_blank">https://github.com/settings/keys</a></p>
613
+ </div>
614
+ <!-- Azure DevOps content -->
615
+ <div class="platform-content azure-content">
616
+ <p data-lang="fr">Configurez Git avec HTTPS et Git Credential Manager pour Azure DevOps.</p>
617
+ <p data-lang="en">Configure Git with HTTPS and Git Credential Manager for Azure DevOps.</p>
618
+
619
+ <!-- Windows -->
620
+ <div class="os-content windows-content active">
621
+ <div class="code-block">
622
+ <button class="copy-btn">Copy</button>
623
+ <pre><code># Git Credential Manager est inclus avec Git for Windows
624
+ # Verifiez qu'il est configure :
625
+ git config --global credential.helper manager</code></pre>
626
+ </div>
627
+ <p data-lang="fr" style="margin-top: 0.5rem; color: var(--text-muted);">Git Credential Manager est installe automatiquement avec Git for Windows.</p>
628
+ <p data-lang="en" style="margin-top: 0.5rem; color: var(--text-muted);">Git Credential Manager is installed automatically with Git for Windows.</p>
629
+ </div>
630
+ <!-- macOS -->
631
+ <div class="os-content macos-content">
632
+ <div class="code-block">
633
+ <button class="copy-btn">Copy</button>
634
+ <pre><code># Installer Git Credential Manager via Homebrew
635
+ brew install --cask git-credential-manager
636
+
637
+ # Configurer le credential helper
638
+ git config --global credential.helper manager</code></pre>
639
+ </div>
640
+ </div>
641
+ <!-- Linux -->
642
+ <div class="os-content linux-content">
643
+ <div class="code-block">
644
+ <button class="copy-btn">Copy</button>
645
+ <pre><code># Installer Git Credential Manager
646
+ # Telechargez le .deb depuis: https://github.com/git-ecosystem/git-credential-manager/releases
647
+ sudo dpkg -i gcm-linux_amd64.deb
648
+
649
+ # Configurer le credential helper
650
+ git config --global credential.helper manager</code></pre>
651
+ </div>
652
+ </div>
653
+
654
+ <p data-lang="fr" style="margin-top: 1rem;">Git Credential Manager gerera automatiquement l'authentification via le navigateur lors du clone avec <code>/gitflow:10-start</code>.</p>
655
+ <p data-lang="en" style="margin-top: 1rem;">Git Credential Manager will automatically handle authentication via browser when cloning with <code>/gitflow:10-start</code>.</p>
656
+ </div>
200
657
  </div>
201
658
  </div>
202
659
  </li>
203
- <li>
204
- <div class="step-content">
205
- <h5 data-lang="fr">Activer votre licence</h5>
206
- <h5 data-lang="en">Activate your license</h5>
207
- <div class="code-block">
208
- <button class="copy-btn">Copy</button>
209
- <pre><code>smartstack-cli activate YOUR-LICENSE-KEY</code></pre>
660
+
661
+ <!-- Step 3: Claude Code CLI -->
662
+ <li class="checklist-item" data-step="3">
663
+ <span class="checklist-number">3</span>
664
+ <div class="checklist-checkbox" onclick="toggleStep(3)"></div>
665
+ <div class="checklist-content">
666
+ <div class="checklist-title">
667
+ <span data-lang="fr">Installer Claude Code CLI</span>
668
+ <span data-lang="en">Install Claude Code CLI</span>
669
+ </div>
670
+ <div class="checklist-description">
671
+ <p data-lang="fr">Installez Claude Code CLI globalement avec npm.</p>
672
+ <p data-lang="en">Install Claude Code CLI globally with npm.</p>
673
+ <div class="code-block">
674
+ <button class="copy-btn">Copy</button>
675
+ <pre><code>npm install -g @anthropic-ai/claude-code</code></pre>
676
+ </div>
210
677
  </div>
211
678
  </div>
212
679
  </li>
213
- <li>
214
- <div class="step-content">
215
- <h5 data-lang="fr">Installer les commandes</h5>
216
- <h5 data-lang="en">Install commands</h5>
217
- <div class="code-block">
218
- <button class="copy-btn">Copy</button>
219
- <pre><code>smartstack-cli install</code></pre>
680
+
681
+ <!-- Step 4: SmartStack CLI -->
682
+ <li class="checklist-item" data-step="4">
683
+ <span class="checklist-number">4</span>
684
+ <div class="checklist-checkbox" onclick="toggleStep(4)"></div>
685
+ <div class="checklist-content">
686
+ <div class="checklist-title">
687
+ <span data-lang="fr">Installer SmartStack CLI</span>
688
+ <span data-lang="en">Install SmartStack CLI</span>
689
+ </div>
690
+ <div class="checklist-description">
691
+ <p data-lang="fr">Installez SmartStack CLI globalement avec npm.</p>
692
+ <p data-lang="en">Install SmartStack CLI globally with npm.</p>
693
+ <div class="code-block">
694
+ <button class="copy-btn">Copy</button>
695
+ <pre><code>npm install -g @atlashub/smartstack-cli</code></pre>
696
+ </div>
697
+ <p data-lang="fr">Verifiez l'installation :</p>
698
+ <p data-lang="en">Verify installation:</p>
699
+ <div class="code-block">
700
+ <button class="copy-btn">Copy</button>
701
+ <pre><code>smartstack --version</code></pre>
702
+ </div>
220
703
  </div>
221
704
  </div>
222
705
  </li>
223
- <li>
224
- <div class="step-content">
225
- <h5 data-lang="fr">Verifier l'installation</h5>
226
- <h5 data-lang="en">Verify installation</h5>
227
- <div class="code-block">
228
- <button class="copy-btn">Copy</button>
229
- <pre><code>smartstack-cli status</code></pre>
706
+
707
+ <!-- Step 5: SmartStack MCP Server -->
708
+ <li class="checklist-item" data-step="5">
709
+ <span class="checklist-number">5</span>
710
+ <div class="checklist-checkbox" onclick="toggleStep(5)"></div>
711
+ <div class="checklist-content">
712
+ <div class="checklist-title">
713
+ <span data-lang="fr">Installer SmartStack MCP Server</span>
714
+ <span data-lang="en">Install SmartStack MCP Server</span>
715
+ </div>
716
+ <div class="checklist-description">
717
+ <p data-lang="fr">Installez le serveur MCP SmartStack pour la validation des conventions et le scaffolding.</p>
718
+ <p data-lang="en">Install the SmartStack MCP server for conventions validation and scaffolding.</p>
719
+ <div class="code-block">
720
+ <button class="copy-btn">Copy</button>
721
+ <pre><code># Etape 1: Installer le package globalement
722
+ npm install -g @atlashub/smartstack-mcp
723
+
724
+ # Etape 2: Enregistrer le serveur MCP dans Claude
725
+ claude mcp add smartstack -- npx @atlashub/smartstack-mcp</code></pre>
726
+ </div>
230
727
  </div>
231
728
  </div>
232
729
  </li>
233
- </ol>
234
- </section>
235
730
 
236
- <!-- Local Installation -->
237
- <section id="local">
238
- <h2>
239
- <span data-lang="fr">Installation locale (projet)</span>
240
- <span data-lang="en">Local Installation (project)</span>
241
- </h2>
731
+ <!-- Step 6: Context7 MCP Server -->
732
+ <li class="checklist-item" data-step="6">
733
+ <span class="checklist-number">6</span>
734
+ <div class="checklist-checkbox" onclick="toggleStep(6)"></div>
735
+ <div class="checklist-content">
736
+ <div class="checklist-title">
737
+ <span data-lang="fr">Installer Context7 MCP Server</span>
738
+ <span data-lang="en">Install Context7 MCP Server</span>
739
+ </div>
740
+ <div class="checklist-description">
741
+ <p data-lang="fr">Installez le serveur MCP Context7 pour acceder a la documentation des bibliotheques.</p>
742
+ <p data-lang="en">Install the Context7 MCP server to access library documentation.</p>
242
743
 
243
- <p data-lang="fr">
244
- L'installation locale installe les commandes dans <code>./.claude</code> du projet courant. Utile pour personnaliser les commandes par projet.
245
- </p>
246
- <p data-lang="en">
247
- Local installation installs commands to <code>./.claude</code> in the current project. Useful for customizing commands per project.
248
- </p>
744
+ <!-- API Key Input -->
745
+ <div class="api-key-section">
746
+ <label data-lang="fr"><strong>Cle API Context7</strong> (optionnel - ameliore les performances)</label>
747
+ <label data-lang="en"><strong>Context7 API Key</strong> (optional - improves performance)</label>
748
+ <div class="api-key-input-wrapper">
749
+ <input type="text" class="api-key-input" id="context7-api-key" placeholder="ctx7_xxxxxxxx">
750
+ <button class="api-key-save-btn" onclick="saveApiKey()">
751
+ <span data-lang="fr">Sauvegarder</span>
752
+ <span data-lang="en">Save</span>
753
+ </button>
754
+ </div>
755
+ <small style="color: var(--text-muted); margin-top: 0.5rem; display: block;">
756
+ <span data-lang="fr">Obtenez une cle API sur <a href="https://context7.com" target="_blank">context7.com</a></span>
757
+ <span data-lang="en">Get an API key at <a href="https://context7.com" target="_blank">context7.com</a></span>
758
+ </small>
759
+ </div>
249
760
 
250
- <div class="code-block">
251
- <button class="copy-btn">Copy</button>
252
- <pre><code># Dans votre projet
253
- npm install -D @atlashub/smartstack-cli
761
+ <div class="code-block">
762
+ <button class="copy-btn">Copy</button>
763
+ <pre><code id="context7-command"># Sans cle API
764
+ claude mcp add context7 -- npx @upstash/context7-mcp</code></pre>
765
+ </div>
766
+ </div>
767
+ </div>
768
+ </li>
254
769
 
255
- # Installer localement
256
- npx smartstack-cli install --local</code></pre>
257
- </div>
770
+ <!-- Step 7: Verification -->
771
+ <li class="checklist-item" data-step="7">
772
+ <span class="checklist-number">7</span>
773
+ <div class="checklist-checkbox" onclick="toggleStep(7)"></div>
774
+ <div class="checklist-content">
775
+ <div class="checklist-title">
776
+ <span data-lang="fr">Verifier l'installation</span>
777
+ <span data-lang="en">Verify Installation</span>
778
+ </div>
779
+ <div class="checklist-description">
780
+ <p data-lang="fr">Verifiez que tout est correctement installe.</p>
781
+ <p data-lang="en">Verify that everything is correctly installed.</p>
782
+ <div class="code-block">
783
+ <button class="copy-btn">Copy</button>
784
+ <pre><code># Verifier les versions
785
+ node --version
786
+ claude --version
787
+ smartstack --version
258
788
 
259
- <div class="alert alert-warning">
260
- <span class="alert-icon">&#9888;</span>
261
- <div class="alert-content">
262
- <h5 data-lang="fr">Ajoutez .claude au .gitignore</h5>
263
- <h5 data-lang="en">Add .claude to .gitignore</h5>
264
- <p data-lang="fr">
265
- Si vous installez localement, pensez a ajouter <code>.claude/</code> a votre <code>.gitignore</code> pour eviter de commiter les fichiers de configuration.
266
- </p>
267
- <p data-lang="en">
268
- If you install locally, consider adding <code>.claude/</code> to your <code>.gitignore</code> to avoid committing configuration files.
269
- </p>
270
- </div>
271
- </div>
789
+ # Verifier les serveurs MCP
790
+ claude mcp list</code></pre>
791
+ </div>
792
+ <div class="alert alert-success" style="margin-top: 1rem;">
793
+ <span class="alert-icon">&#9989;</span>
794
+ <div class="alert-content">
795
+ <p data-lang="fr">Felicitations ! Vous pouvez maintenant :</p>
796
+ <p data-lang="en">Congratulations! You can now:</p>
797
+ <ul style="margin: 0.5rem 0 0 1rem;">
798
+ <li data-lang="fr">Creer un nouveau projet : <code>smartstack init MyProject</code></li>
799
+ <li data-lang="en">Create a new project: <code>smartstack init MyProject</code></li>
800
+ <li data-lang="fr">Ou initialiser sur un projet existant : <code>smartstack init .</code></li>
801
+ <li data-lang="en">Or initialize on an existing project: <code>smartstack init .</code></li>
802
+ </ul>
803
+ </div>
804
+ </div>
805
+ </div>
806
+ </div>
807
+ </li>
808
+ </ul>
272
809
  </section>
273
810
 
274
- <!-- MCP Servers -->
275
- <section id="mcp-servers">
276
- <h2>
277
- <span data-lang="fr">Serveurs MCP (recommande)</span>
278
- <span data-lang="en">MCP Servers (recommended)</span>
279
- </h2>
280
-
281
- <p data-lang="fr">
282
- Les serveurs MCP (Model Context Protocol) enrichissent SmartStack avec des fonctionnalites avancees : validation de conventions, scaffolding, documentation en temps reel.
283
- </p>
284
- <p data-lang="en">
285
- MCP servers (Model Context Protocol) enhance SmartStack with advanced features: conventions validation, scaffolding, real-time documentation.
286
- </p>
811
+ <!-- Next Steps - Tutorial -->
812
+ <section id="next-steps">
813
+ <h3>
814
+ <span data-lang="fr">Demarrer votre premier projet</span>
815
+ <span data-lang="en">Start your first project</span>
816
+ </h3>
287
817
 
288
- <div class="table-container">
289
- <table>
290
- <thead>
291
- <tr>
292
- <th>Serveur</th>
293
- <th>
294
- <span data-lang="fr">Fonction</span>
295
- <span data-lang="en">Function</span>
296
- </th>
297
- </tr>
298
- </thead>
299
- <tbody>
300
- <tr>
301
- <td><strong>SmartStack MCP</strong></td>
302
- <td>
303
- <span data-lang="fr">Validation conventions, scaffolding, API docs</span>
304
- <span data-lang="en">Conventions validation, scaffolding, API docs</span>
305
- </td>
306
- </tr>
307
- <tr>
308
- <td><strong>Context7 MCP</strong></td>
309
- <td>
310
- <span data-lang="fr">Documentation libraries, exemples de code</span>
311
- <span data-lang="en">Library documentation, code examples</span>
312
- </td>
313
- </tr>
314
- </tbody>
315
- </table>
818
+ <div class="alert alert-info" style="margin-bottom: 1.5rem;">
819
+ <span class="alert-icon">&#128161;</span>
820
+ <div class="alert-content">
821
+ <p data-lang="fr">Felicitations ! L'installation est terminee. Voici comment demarrer votre premier projet SmartStack.</p>
822
+ <p data-lang="en">Congratulations! Installation is complete. Here's how to start your first SmartStack project.</p>
823
+ </div>
316
824
  </div>
317
825
 
318
- <h3 data-lang="fr">Installation</h3>
319
- <h3 data-lang="en">Installation</h3>
826
+ <!-- Step A: Create repo -->
827
+ <div class="tutorial-section">
828
+ <h4>
829
+ <span class="step-badge">A</span>
830
+ <span data-lang="fr">Creer le repository Git</span>
831
+ <span data-lang="en">Create the Git repository</span>
832
+ </h4>
320
833
 
321
- <div class="code-block">
322
- <button class="copy-btn">Copy</button>
323
- <pre><code># SmartStack MCP
324
- claude mcp add smartstack
834
+ <p data-lang="fr">Avant d'initialiser SmartStack, vous devez creer un repository sur votre plateforme Git.</p>
835
+ <p data-lang="en">Before initializing SmartStack, you need to create a repository on your Git platform.</p>
325
836
 
326
- # Context7 MCP (remplacez YOUR_API_KEY par votre cle)
327
- claude mcp add context7 -- npx @upstash/context7-mcp -- --api-key YOUR_API_KEY</code></pre>
328
- </div>
837
+ <div class="platform-content github-content active">
838
+ <ol style="margin: 1rem 0 1rem 1.5rem; color: var(--text-muted);">
839
+ <li data-lang="fr">Allez sur <a href="https://github.com/new" target="_blank">github.com/new</a></li>
840
+ <li data-lang="en">Go to <a href="https://github.com/new" target="_blank">github.com/new</a></li>
841
+ <li data-lang="fr">Nommez votre repository (ex: <code>MonProjet</code>)</li>
842
+ <li data-lang="en">Name your repository (e.g., <code>MyProject</code>)</li>
843
+ <li data-lang="fr">Laissez-le <strong>vide</strong> (pas de README, .gitignore, ou license)</li>
844
+ <li data-lang="en">Leave it <strong>empty</strong> (no README, .gitignore, or license)</li>
845
+ <li data-lang="fr">Cliquez sur "Create repository"</li>
846
+ <li data-lang="en">Click "Create repository"</li>
847
+ </ol>
848
+ </div>
329
849
 
330
- <div class="alert alert-warning">
331
- <span class="alert-icon">&#9888;</span>
332
- <div class="alert-content">
333
- <h5 data-lang="fr">Cle API Context7</h5>
334
- <h5 data-lang="en">Context7 API Key</h5>
335
- <p data-lang="fr">
336
- Obtenez votre cle API gratuite sur <a href="https://context7.io" target="_blank">context7.io</a>
337
- </p>
338
- <p data-lang="en">
339
- Get your free API key at <a href="https://context7.io" target="_blank">context7.io</a>
340
- </p>
850
+ <div class="platform-content azure-content">
851
+ <ol style="margin: 1rem 0 1rem 1.5rem; color: var(--text-muted);">
852
+ <li data-lang="fr">Allez dans votre projet Azure DevOps</li>
853
+ <li data-lang="en">Go to your Azure DevOps project</li>
854
+ <li data-lang="fr">Repos &gt; "New repository"</li>
855
+ <li data-lang="en">Repos &gt; "New repository"</li>
856
+ <li data-lang="fr">Nommez votre repository (ex: <code>MonProjet</code>)</li>
857
+ <li data-lang="en">Name your repository (e.g., <code>MyProject</code>)</li>
858
+ <li data-lang="fr">Decochez "Add a README"</li>
859
+ <li data-lang="en">Uncheck "Add a README"</li>
860
+ <li data-lang="fr">Cliquez sur "Create"</li>
861
+ <li data-lang="en">Click "Create"</li>
862
+ </ol>
341
863
  </div>
342
- </div>
343
864
 
344
- <div class="alert alert-info">
345
- <span class="alert-icon">&#128161;</span>
346
- <div class="alert-content">
347
- <h5 data-lang="fr">Verifier l'installation</h5>
348
- <h5 data-lang="en">Verify installation</h5>
349
- <p><code>claude mcp list</code></p>
865
+ <div class="tutorial-note">
866
+ <p data-lang="fr"><strong>Pourquoi un repo vide ?</strong> SmartStack va initialiser la structure du projet avec les bons fichiers. Un repo pre-rempli pourrait creer des conflits.</p>
867
+ <p data-lang="en"><strong>Why an empty repo?</strong> SmartStack will initialize the project structure with the correct files. A pre-filled repo could create conflicts.</p>
350
868
  </div>
351
869
  </div>
352
- </section>
353
870
 
354
- <!-- Installation Options -->
355
- <section id="options">
356
- <h2>
357
- <span data-lang="fr">Options d'installation</span>
358
- <span data-lang="en">Installation Options</span>
359
- </h2>
871
+ <!-- Step B: Initialize GitFlow -->
872
+ <div class="tutorial-section">
873
+ <h4>
874
+ <span class="step-badge">B</span>
875
+ <span data-lang="fr">Initialiser GitFlow</span>
876
+ <span data-lang="en">Initialize GitFlow</span>
877
+ </h4>
360
878
 
361
- <div class="table-container">
362
- <table>
363
- <thead>
364
- <tr>
365
- <th>Option</th>
366
- <th>
367
- <span data-lang="fr">Description</span>
368
- <span data-lang="en">Description</span>
369
- </th>
370
- </tr>
371
- </thead>
372
- <tbody>
373
- <tr>
374
- <td><code>--local</code></td>
375
- <td>
376
- <span data-lang="fr">Installer dans le projet courant (./.claude)</span>
377
- <span data-lang="en">Install in current project (./.claude)</span>
378
- </td>
379
- </tr>
380
- <tr>
381
- <td><code>--commands-only</code></td>
382
- <td>
383
- <span data-lang="fr">Installer uniquement les commandes</span>
384
- <span data-lang="en">Install commands only</span>
385
- </td>
386
- </tr>
387
- <tr>
388
- <td><code>--agents-only</code></td>
389
- <td>
390
- <span data-lang="fr">Installer uniquement les agents</span>
391
- <span data-lang="en">Install agents only</span>
392
- </td>
393
- </tr>
394
- <tr>
395
- <td><code>--hooks-only</code></td>
396
- <td>
397
- <span data-lang="fr">Installer uniquement les hooks</span>
398
- <span data-lang="en">Install hooks only</span>
399
- </td>
400
- </tr>
401
- <tr>
402
- <td><code>--force</code></td>
403
- <td>
404
- <span data-lang="fr">Forcer la reecriture des fichiers existants</span>
405
- <span data-lang="en">Force overwrite existing files</span>
406
- </td>
407
- </tr>
408
- <tr>
409
- <td><code>--no-config</code></td>
410
- <td>
411
- <span data-lang="fr">Ne pas creer le fichier de configuration</span>
412
- <span data-lang="en">Skip config file creation</span>
413
- </td>
414
- </tr>
415
- </tbody>
416
- </table>
417
- </div>
418
- </section>
879
+ <p data-lang="fr">Ouvrez Claude Code dans un dossier vide et lancez l'initialisation GitFlow :</p>
880
+ <p data-lang="en">Open Claude Code in an empty folder and launch GitFlow initialization:</p>
419
881
 
420
- <!-- Directory Structure -->
421
- <section id="structure">
422
- <h2>
423
- <span data-lang="fr">Structure des fichiers</span>
424
- <span data-lang="en">File Structure</span>
425
- </h2>
882
+ <div class="code-block">
883
+ <button class="copy-btn">Copy</button>
884
+ <pre><code># Dans Claude Code, tapez :
885
+ /gitflow:1-init</code></pre>
886
+ </div>
887
+
888
+ <p data-lang="fr" style="margin-top: 1rem;">L'assistant vous guidera pour :</p>
889
+ <p data-lang="en" style="margin-top: 1rem;">The assistant will guide you to:</p>
426
890
 
427
- <p data-lang="fr">Apres installation, la structure suivante est creee :</p>
428
- <p data-lang="en">After installation, the following structure is created:</p>
429
-
430
- <div class="code-block">
431
- <pre><code>~/.claude/ # Installation globale
432
- ├── commands/ # Commandes slash
433
- │ ├── gitflow.md # Orchestrateur GitFlow
434
- │ ├── gitflow/ # Phases GitFlow
435
- │ │ ├── 1-init.md
436
- │ │ ├── 2-status.md
437
- │ │ ├── 3-commit.md
438
- │ │ ├── 4-plan.md
439
- │ │ ├── 5-exec.md
440
- │ │ ├── 6-abort.md
441
- │ │ ├── 10-start.md
442
- │ │ └── 11-finish.md
443
- │ ├── apex.md # Orchestrateur APEX
444
- │ ├── apex/ # Phases APEX
445
- │ ├── git/ # Commandes Git
446
- │ └── prompts/ # Generateurs de prompts
447
- ├── agents/ # Agents specialises
448
- │ ├── explore-codebase.md
449
- │ ├── explore-docs.md
450
- │ ├── websearch.md
451
- │ ├── snipper.md
452
- │ ├── fix-grammar.md
453
- │ └── action.md
454
- ├── hooks/ # Hooks Claude Code
455
- │ └── hooks.json
456
- └── gitflow/ # Donnees GitFlow
457
- ├── config.json # Configuration
458
- ├── plans/ # Plans d'integration
459
- ├── logs/ # Logs d'operations
460
- └── migrations/ # Suivi des migrations
461
- └── history.json</code></pre>
891
+ <ul style="margin: 0.5rem 0 1rem 1.5rem; color: var(--text-muted);">
892
+ <li data-lang="fr">Cloner votre repository</li>
893
+ <li data-lang="en">Clone your repository</li>
894
+ <li data-lang="fr">Configurer les branches (main, develop)</li>
895
+ <li data-lang="en">Configure branches (main, develop)</li>
896
+ <li data-lang="fr">Definir les conventions de versioning</li>
897
+ <li data-lang="en">Define versioning conventions</li>
898
+ </ul>
899
+
900
+ <div class="tutorial-note">
901
+ <p data-lang="fr"><strong>Conseil :</strong> Repondez aux questions de l'assistant. Il adaptera la configuration a vos besoins.</p>
902
+ <p data-lang="en"><strong>Tip:</strong> Answer the assistant's questions. It will adapt the configuration to your needs.</p>
903
+ </div>
462
904
  </div>
463
- </section>
464
905
 
465
- <!-- Uninstall -->
466
- <section id="uninstall">
467
- <h2>
468
- <span data-lang="fr">Desinstallation</span>
469
- <span data-lang="en">Uninstallation</span>
470
- </h2>
906
+ <!-- Step C: Initialize SmartStack -->
907
+ <div class="tutorial-section">
908
+ <h4>
909
+ <span class="step-badge">C</span>
910
+ <span data-lang="fr">Initialiser SmartStack</span>
911
+ <span data-lang="en">Initialize SmartStack</span>
912
+ </h4>
471
913
 
472
- <div class="code-block">
473
- <button class="copy-btn">Copy</button>
474
- <pre><code># Desinstaller tous les composants
475
- smartstack-cli uninstall
914
+ <p data-lang="fr">Une fois GitFlow configure, initialisez la structure du projet SmartStack :</p>
915
+ <p data-lang="en">Once GitFlow is configured, initialize the SmartStack project structure:</p>
476
916
 
477
- # Desinstaller des composants specifiques
478
- smartstack-cli uninstall --commands-only
479
- smartstack-cli uninstall --agents-only
480
- smartstack-cli uninstall --hooks-only
917
+ <div class="code-block">
918
+ <button class="copy-btn">Copy</button>
919
+ <pre><code># Pour un nouveau projet .NET (cree la structure Clean Architecture)
920
+ smartstack init MonProjet
481
921
 
482
- # Garder le fichier de configuration
483
- smartstack-cli uninstall --keep-config
922
+ # OU pour un projet existant (ajoute seulement les outils SmartStack)
923
+ smartstack init .</code></pre>
924
+ </div>
925
+
926
+ <p data-lang="fr" style="margin-top: 1rem;">Cette commande va :</p>
927
+ <p data-lang="en" style="margin-top: 1rem;">This command will:</p>
484
928
 
485
- # Sans confirmation
486
- smartstack-cli uninstall --yes</code></pre>
929
+ <ul style="margin: 0.5rem 0 1rem 1.5rem; color: var(--text-muted);">
930
+ <li data-lang="fr">Creer la structure Clean Architecture (.NET)</li>
931
+ <li data-lang="en">Create the Clean Architecture structure (.NET)</li>
932
+ <li data-lang="fr">Installer les skills et agents SmartStack</li>
933
+ <li data-lang="en">Install SmartStack skills and agents</li>
934
+ <li data-lang="fr">Configurer les hooks Claude Code</li>
935
+ <li data-lang="en">Configure Claude Code hooks</li>
936
+ <li data-lang="fr">Verifier les serveurs MCP</li>
937
+ <li data-lang="en">Verify MCP servers</li>
938
+ </ul>
487
939
  </div>
488
- </section>
489
940
 
490
- <!-- Update -->
491
- <section id="update">
492
- <h2>
493
- <span data-lang="fr">Mise a jour</span>
494
- <span data-lang="en">Update</span>
495
- </h2>
941
+ <!-- Step D: Start working -->
942
+ <div class="tutorial-section">
943
+ <h4>
944
+ <span class="step-badge">D</span>
945
+ <span data-lang="fr">Commencer a travailler</span>
946
+ <span data-lang="en">Start working</span>
947
+ </h4>
496
948
 
497
- <div class="code-block">
498
- <button class="copy-btn">Copy</button>
499
- <pre><code># Mettre a jour le package npm
500
- npm update -g @atlashub/smartstack-cli
949
+ <p data-lang="fr">Votre environnement est pret ! Pour commencer une nouvelle fonctionnalite :</p>
950
+ <p data-lang="en">Your environment is ready! To start a new feature:</p>
501
951
 
502
- # Mettre a jour les commandes installees
503
- smartstack-cli update</code></pre>
504
- </div>
505
- </section>
952
+ <div class="code-block">
953
+ <button class="copy-btn">Copy</button>
954
+ <pre><code># Creer une branche feature
955
+ /gitflow:10-start feature ma-fonctionnalite
506
956
 
507
- <!-- Troubleshooting -->
508
- <section id="troubleshooting">
509
- <h2>
510
- <span data-lang="fr">Resolution de problemes</span>
511
- <span data-lang="en">Troubleshooting</span>
512
- </h2>
957
+ # Commiter vos changements
958
+ /gitflow:3-commit
513
959
 
514
- <div class="alert alert-warning">
515
- <span class="alert-icon">&#9888;</span>
516
- <div class="alert-content">
517
- <h5 data-lang="fr">Erreur de permission</h5>
518
- <h5 data-lang="en">Permission error</h5>
519
- <p data-lang="fr">
520
- Si vous obtenez une erreur de permission lors de l'installation globale, utilisez <code>sudo</code> ou configurez npm pour utiliser un repertoire utilisateur.
521
- </p>
522
- <p data-lang="en">
523
- If you get a permission error during global installation, use <code>sudo</code> or configure npm to use a user directory.
524
- </p>
960
+ # Finaliser la feature
961
+ /gitflow:11-finish</code></pre>
525
962
  </div>
526
963
  </div>
527
964
 
528
- <div class="alert alert-info">
529
- <span class="alert-icon">&#128161;</span>
530
- <div class="alert-content">
531
- <h5 data-lang="fr">Commandes non reconnues</h5>
532
- <h5 data-lang="en">Commands not recognized</h5>
533
- <p data-lang="fr">
534
- Assurez-vous que le repertoire npm global est dans votre PATH. Verifiez avec <code>npm bin -g</code>.
535
- </p>
536
- <p data-lang="en">
537
- Make sure the npm global directory is in your PATH. Check with <code>npm bin -g</code>.
538
- </p>
539
- </div>
965
+ <!-- Links to documentation -->
966
+ <h4 style="margin-top: 2rem;">
967
+ <span data-lang="fr">Documentation complementaire</span>
968
+ <span data-lang="en">Additional documentation</span>
969
+ </h4>
970
+
971
+ <div class="feature-grid">
972
+ <a href="init.html" class="feature-item" style="text-decoration: none;">
973
+ <span class="feature-icon">&#128640;</span>
974
+ <span class="feature-text">
975
+ <span data-lang="fr">Commande Init</span>
976
+ <span data-lang="en">Init Command</span>
977
+ </span>
978
+ </a>
979
+ <a href="gitflow.html" class="feature-item" style="text-decoration: none;">
980
+ <span class="feature-icon">&#128256;</span>
981
+ <span class="feature-text">
982
+ <span data-lang="fr">Guide GitFlow</span>
983
+ <span data-lang="en">GitFlow Guide</span>
984
+ </span>
985
+ </a>
986
+ <a href="efcore.html" class="feature-item" style="text-decoration: none;">
987
+ <span class="feature-icon">&#128452;</span>
988
+ <span class="feature-text">
989
+ <span data-lang="fr">Migrations EF Core</span>
990
+ <span data-lang="en">EF Core Migrations</span>
991
+ </span>
992
+ </a>
993
+ <a href="apex.html" class="feature-item" style="text-decoration: none;">
994
+ <span class="feature-icon">&#127919;</span>
995
+ <span class="feature-text">
996
+ <span data-lang="fr">Methodologie APEX</span>
997
+ <span data-lang="en">APEX Methodology</span>
998
+ </span>
999
+ </a>
540
1000
  </div>
541
1001
  </section>
1002
+
542
1003
  </div>
543
1004
  </main>
544
1005
  </div>
@@ -549,5 +1010,193 @@ smartstack-cli update</code></pre>
549
1010
  <div class="overlay"></div>
550
1011
 
551
1012
  <script src="js/app.js"></script>
1013
+ <script>
1014
+ // Installation page specific scripts
1015
+ var STORAGE_KEY = 'smartstack-install-progress';
1016
+ var completedSteps = [];
1017
+
1018
+ // Initialize on page load
1019
+ document.addEventListener('DOMContentLoaded', function() {
1020
+ loadProgress();
1021
+ loadApiKey();
1022
+ loadPlatform();
1023
+ loadOS();
1024
+ updateProgressBar();
1025
+ });
1026
+
1027
+ // OS switching
1028
+ function setOS(os) {
1029
+ // Update buttons
1030
+ var buttons = document.querySelectorAll('.os-btn');
1031
+ buttons.forEach(function(btn) {
1032
+ btn.classList.remove('active');
1033
+ if (btn.dataset.os === os) {
1034
+ btn.classList.add('active');
1035
+ }
1036
+ });
1037
+
1038
+ // Update content visibility
1039
+ var windowsContent = document.querySelectorAll('.windows-content');
1040
+ var macosContent = document.querySelectorAll('.macos-content');
1041
+ var linuxContent = document.querySelectorAll('.linux-content');
1042
+
1043
+ windowsContent.forEach(function(el) {
1044
+ el.classList.toggle('active', os === 'windows');
1045
+ });
1046
+ macosContent.forEach(function(el) {
1047
+ el.classList.toggle('active', os === 'macos');
1048
+ });
1049
+ linuxContent.forEach(function(el) {
1050
+ el.classList.toggle('active', os === 'linux');
1051
+ });
1052
+
1053
+ // Save preference
1054
+ localStorage.setItem('smartstack-os', os);
1055
+ }
1056
+
1057
+ function loadOS() {
1058
+ // Try to detect OS
1059
+ var detectedOS = 'windows';
1060
+ var userAgent = navigator.userAgent.toLowerCase();
1061
+ if (userAgent.indexOf('mac') !== -1) {
1062
+ detectedOS = 'macos';
1063
+ } else if (userAgent.indexOf('linux') !== -1) {
1064
+ detectedOS = 'linux';
1065
+ }
1066
+
1067
+ var savedOS = localStorage.getItem('smartstack-os') || detectedOS;
1068
+ setOS(savedOS);
1069
+ }
1070
+
1071
+ // Platform switching
1072
+ function setPlatform(platform) {
1073
+ // Update buttons
1074
+ var buttons = document.querySelectorAll('.platform-btn');
1075
+ buttons.forEach(function(btn) {
1076
+ btn.classList.remove('active');
1077
+ if (btn.dataset.platform === platform) {
1078
+ btn.classList.add('active');
1079
+ }
1080
+ });
1081
+
1082
+ // Update content visibility
1083
+ var githubContent = document.querySelectorAll('.github-content');
1084
+ var azureContent = document.querySelectorAll('.azure-content');
1085
+
1086
+ githubContent.forEach(function(el) {
1087
+ el.classList.toggle('active', platform === 'github');
1088
+ });
1089
+ azureContent.forEach(function(el) {
1090
+ el.classList.toggle('active', platform === 'azure');
1091
+ });
1092
+
1093
+ // Save preference
1094
+ localStorage.setItem('smartstack-platform', platform);
1095
+ }
1096
+
1097
+ function loadPlatform() {
1098
+ var platform = localStorage.getItem('smartstack-platform') || 'github';
1099
+ setPlatform(platform);
1100
+ }
1101
+
1102
+ // Checklist management
1103
+ function toggleStep(stepNumber) {
1104
+ var index = completedSteps.indexOf(stepNumber);
1105
+ if (index === -1) {
1106
+ completedSteps.push(stepNumber);
1107
+ } else {
1108
+ completedSteps.splice(index, 1);
1109
+ }
1110
+ saveProgress();
1111
+ updateUI();
1112
+ }
1113
+
1114
+ function saveProgress() {
1115
+ localStorage.setItem(STORAGE_KEY, JSON.stringify(completedSteps));
1116
+ }
1117
+
1118
+ function loadProgress() {
1119
+ var saved = localStorage.getItem(STORAGE_KEY);
1120
+ if (saved) {
1121
+ try {
1122
+ completedSteps = JSON.parse(saved);
1123
+ } catch (e) {
1124
+ completedSteps = [];
1125
+ }
1126
+ }
1127
+ updateUI();
1128
+ }
1129
+
1130
+ function resetProgress() {
1131
+ completedSteps = [];
1132
+ saveProgress();
1133
+ updateUI();
1134
+ }
1135
+
1136
+ function updateUI() {
1137
+ var items = document.querySelectorAll('.checklist-item');
1138
+ items.forEach(function(item) {
1139
+ var step = parseInt(item.dataset.step);
1140
+ if (completedSteps.indexOf(step) !== -1) {
1141
+ item.classList.add('completed');
1142
+ } else {
1143
+ item.classList.remove('completed');
1144
+ }
1145
+ });
1146
+ updateProgressBar();
1147
+ }
1148
+
1149
+ function updateProgressBar() {
1150
+ var total = 7;
1151
+ var completed = completedSteps.length;
1152
+ var percentage = (completed / total) * 100;
1153
+
1154
+ var progressFill = document.getElementById('progress-fill');
1155
+ var progressCount = document.getElementById('progress-count');
1156
+
1157
+ if (progressFill) {
1158
+ progressFill.style.width = percentage + '%';
1159
+ }
1160
+ if (progressCount) {
1161
+ progressCount.textContent = completed + '/' + total;
1162
+ }
1163
+ }
1164
+
1165
+ // API Key management
1166
+ function saveApiKey() {
1167
+ var input = document.getElementById('context7-api-key');
1168
+ var apiKey = input.value.trim();
1169
+
1170
+ if (apiKey) {
1171
+ localStorage.setItem('context7-api-key', apiKey);
1172
+ updateContext7Command(apiKey);
1173
+ } else {
1174
+ localStorage.removeItem('context7-api-key');
1175
+ updateContext7Command('');
1176
+ }
1177
+ }
1178
+
1179
+ function loadApiKey() {
1180
+ var apiKey = localStorage.getItem('context7-api-key');
1181
+ if (apiKey) {
1182
+ var input = document.getElementById('context7-api-key');
1183
+ if (input) {
1184
+ input.value = apiKey;
1185
+ }
1186
+ updateContext7Command(apiKey);
1187
+ }
1188
+ }
1189
+
1190
+ function updateContext7Command(apiKey) {
1191
+ var commandEl = document.getElementById('context7-command');
1192
+ if (commandEl) {
1193
+ if (apiKey) {
1194
+ commandEl.textContent = '# Avec cle API\nclaude mcp add context7 -e CONTEXT7_API_KEY=' + apiKey + ' -- npx @upstash/context7-mcp';
1195
+ } else {
1196
+ commandEl.textContent = '# Sans cle API\nclaude mcp add context7 -- npx @upstash/context7-mcp';
1197
+ }
1198
+ }
1199
+ }
1200
+ </script>
552
1201
  </body>
553
1202
  </html>