@atlashub/smartstack-cli 1.13.2 → 1.14.1
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/agents.html +1 -1
- package/.documentation/apex.html +1 -1
- package/.documentation/business-analyse.html +1 -1
- package/.documentation/cli-commands.html +3 -3
- package/.documentation/commands.html +1 -1
- package/.documentation/efcore.html +1 -1
- package/.documentation/gitflow.html +231 -236
- package/.documentation/hooks.html +1 -1
- package/.documentation/index.html +1 -1
- package/.documentation/init.html +3 -3
- package/.documentation/installation.html +1075 -351
- package/.documentation/ralph-loop.html +1 -1
- package/.documentation/test-web.html +1 -1
- package/README.md +88 -20
- package/config/default-config.json +10 -1
- package/dist/index.js +276 -85
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/templates/agents/code-reviewer.md +163 -0
- package/templates/agents/efcore/db-deploy.md +25 -7
- package/templates/agents/efcore/db-reset.md +31 -10
- package/templates/agents/efcore/db-status.md +22 -5
- package/templates/agents/efcore/migration.md +70 -20
- package/templates/agents/gitflow/cleanup.md +8 -1
- package/templates/agents/gitflow/commit.md +7 -5
- package/templates/agents/gitflow/finish.md +6 -4
- package/templates/agents/gitflow/pr.md +8 -1
- package/templates/agents/gitflow/start.md +1 -1
- package/templates/commands/check-version.md +267 -0
- package/templates/commands/efcore/_shared.md +31 -2
- package/templates/commands/efcore/db-reset.md +18 -6
- package/templates/commands/efcore/migration.md +1 -1
- package/templates/commands/efcore/rebase-snapshot.md +1 -1
- package/templates/commands/efcore/squash.md +1 -0
- package/templates/commands/refactor.md +164 -0
- package/templates/project/DependencyInjection.Application.cs.template +25 -0
- package/templates/project/DependencyInjection.Infrastructure.cs.template +61 -0
- package/templates/project/DesignTimeExtensionsDbContextFactory.cs.template +70 -0
- package/templates/project/ExampleEntity.cs.template +116 -0
- package/templates/project/ExampleEntityConfiguration.cs.template +64 -0
- package/templates/project/ExampleService.cs.template +146 -0
- package/templates/project/ExtensionsDbContext.cs.template +41 -0
- package/templates/project/IExtensionsDbContext.cs.template +22 -0
- package/templates/project/Program.cs.template +47 -0
- package/templates/project/README.md +79 -0
- package/templates/ralph/README.md +10 -8
- package/templates/ralph/ralph.config.yaml +2 -2
- package/templates/skills/_shared.md +44 -44
- package/templates/skills/ai-prompt/SKILL.md +55 -55
- package/templates/skills/apex/SKILL.md +235 -0
- package/templates/skills/apex/steps/step-00-init.md +203 -0
- package/templates/skills/apex/steps/step-01-analyze.md +210 -0
- package/templates/skills/apex/steps/step-02-plan.md +217 -0
- package/templates/skills/apex/steps/step-03-execute.md +178 -0
- package/templates/skills/apex/steps/step-04-validate.md +217 -0
- package/templates/skills/apex/steps/step-05-examine.md +207 -0
- package/templates/skills/apex/steps/step-06-resolve.md +181 -0
- package/templates/skills/apex/steps/step-07-tests.md +206 -0
- package/templates/skills/apex/steps/step-08-run-tests.md +207 -0
- package/templates/skills/apex/templates/00-context.md +46 -0
- package/templates/skills/apex/templates/01-analyze.md +63 -0
- package/templates/skills/apex/templates/02-plan.md +63 -0
- package/templates/skills/apex/templates/03-execute.md +34 -0
- package/templates/skills/apex/templates/04-validate.md +61 -0
- package/templates/skills/apex/templates/05-examine.md +58 -0
- package/templates/skills/apex/templates/06-resolve.md +39 -0
- package/templates/skills/apex/templates/07-tests.md +56 -0
- package/templates/skills/apex/templates/08-run-tests.md +41 -0
- package/templates/skills/apex/templates/README.md +69 -0
- package/templates/skills/application/SKILL.md +50 -50
- package/templates/skills/application/templates-backend.md +25 -25
- package/templates/skills/application/templates-frontend.md +43 -43
- package/templates/skills/application/templates-i18n.md +29 -29
- package/templates/skills/application/templates-seed.md +77 -77
- package/templates/skills/business-analyse/SKILL.md +223 -0
- package/templates/skills/business-analyse/_shared.md +258 -0
- package/templates/skills/business-analyse/questionnaire/01-context.md +33 -0
- package/templates/skills/business-analyse/questionnaire/02-stakeholders.md +35 -0
- package/templates/skills/business-analyse/questionnaire/03-scope.md +35 -0
- package/templates/skills/business-analyse/questionnaire/04-data.md +36 -0
- package/templates/skills/business-analyse/questionnaire/05-integrations.md +36 -0
- package/templates/skills/business-analyse/questionnaire/06-security.md +40 -0
- package/templates/skills/business-analyse/questionnaire/07-ui.md +36 -0
- package/templates/skills/business-analyse/questionnaire/08-performance.md +35 -0
- package/templates/skills/business-analyse/questionnaire/09-constraints.md +35 -0
- package/templates/skills/business-analyse/questionnaire/10-documentation.md +35 -0
- package/templates/skills/business-analyse/questionnaire.md +177 -177
- package/templates/skills/business-analyse/react/components.md +340 -0
- package/templates/skills/business-analyse/react/i18n-template.md +245 -0
- package/templates/skills/business-analyse/react/schema.md +151 -0
- package/templates/skills/business-analyse/steps/step-00-init.md +293 -0
- package/templates/skills/business-analyse/steps/step-01-discover.md +267 -0
- package/templates/skills/business-analyse/steps/step-02-analyse.md +243 -0
- package/templates/skills/business-analyse/steps/step-03-specify.md +317 -0
- package/templates/skills/business-analyse/steps/step-04-validate.md +239 -0
- package/templates/skills/business-analyse/steps/step-05-handoff.md +336 -0
- package/templates/skills/business-analyse/steps/step-06-doc-html.md +261 -0
- package/templates/skills/business-analyse/templates/00-context.md +105 -0
- package/templates/skills/business-analyse/templates/frd-brd.md +97 -0
- package/templates/skills/business-analyse/templates/frd-discovery.md +78 -0
- package/templates/skills/business-analyse/templates/frd-handoff.md +118 -0
- package/templates/skills/business-analyse/templates/frd-spec.md +168 -0
- package/templates/skills/business-analyse/templates-frd.md +217 -217
- package/templates/skills/business-analyse/templates-react.md +26 -26
- package/templates/skills/controller/SKILL.md +141 -92
- package/templates/skills/controller/postman-templates.md +15 -15
- package/templates/skills/controller/steps/step-00-init.md +191 -0
- package/templates/skills/controller/steps/step-01-analyze.md +146 -0
- package/templates/skills/controller/steps/step-02-plan.md +176 -0
- package/templates/skills/controller/steps/step-03-generate.md +219 -0
- package/templates/skills/controller/steps/step-04-perms.md +219 -0
- package/templates/skills/controller/steps/step-05-validate.md +107 -0
- package/templates/skills/controller/templates.md +77 -77
- package/templates/skills/documentation/SKILL.md +79 -79
- package/templates/skills/feature-full/SKILL.md +38 -38
- package/templates/skills/gitflow/SKILL.md +277 -0
- package/templates/{commands → skills}/gitflow/_shared.md +20 -20
- package/templates/skills/gitflow/phases/abort.md +173 -0
- package/templates/skills/gitflow/phases/cleanup.md +226 -0
- package/templates/skills/gitflow/phases/status.md +178 -0
- package/templates/skills/gitflow/steps/step-commit.md +255 -0
- package/templates/skills/gitflow/steps/step-finish.md +255 -0
- package/templates/skills/gitflow/steps/step-init.md +209 -0
- package/templates/skills/gitflow/steps/step-merge.md +225 -0
- package/templates/skills/gitflow/steps/step-plan.md +208 -0
- package/templates/skills/gitflow/steps/step-pr.md +235 -0
- package/templates/skills/gitflow/steps/step-start.md +334 -0
- package/templates/skills/gitflow/steps/step-sync.md +200 -0
- package/templates/skills/gitflow/templates/config.json +53 -0
- package/templates/skills/notification/SKILL.md +51 -51
- package/templates/skills/ralph-loop/SKILL.md +228 -0
- package/templates/skills/ralph-loop/steps/step-00-init.md +201 -0
- package/templates/skills/ralph-loop/steps/step-01-task.md +169 -0
- package/templates/skills/ralph-loop/steps/step-02-execute.md +173 -0
- package/templates/skills/ralph-loop/steps/step-03-commit.md +170 -0
- package/templates/skills/ralph-loop/steps/step-04-check.md +162 -0
- package/templates/skills/ralph-loop/steps/step-05-report.md +181 -0
- package/templates/skills/review-code/SKILL.md +219 -0
- package/templates/skills/review-code/references/clean-code-principles.md +140 -0
- package/templates/skills/review-code/references/code-quality-metrics.md +174 -0
- package/templates/skills/review-code/references/feedback-patterns.md +149 -0
- package/templates/skills/review-code/references/security-checklist.md +127 -0
- package/templates/skills/ui-components/SKILL.md +54 -54
- package/templates/skills/workflow/SKILL.md +46 -46
- package/templates/commands/ai-prompt.md +0 -315
- package/templates/commands/apex/1-analyze.md +0 -100
- package/templates/commands/apex/2-plan.md +0 -145
- package/templates/commands/apex/3-execute.md +0 -171
- package/templates/commands/apex/4-examine.md +0 -116
- package/templates/commands/apex/5-tasks.md +0 -209
- package/templates/commands/apex.md +0 -76
- package/templates/commands/application/create.md +0 -362
- package/templates/commands/application/templates-backend.md +0 -463
- package/templates/commands/application/templates-frontend.md +0 -517
- package/templates/commands/application/templates-i18n.md +0 -478
- package/templates/commands/application/templates-seed.md +0 -362
- package/templates/commands/application.md +0 -303
- package/templates/commands/business-analyse/0-orchestrate.md +0 -156
- package/templates/commands/business-analyse/1-init.md +0 -99
- package/templates/commands/business-analyse/2-discover.md +0 -143
- package/templates/commands/business-analyse/3-analyse.md +0 -106
- package/templates/commands/business-analyse/4-specify.md +0 -133
- package/templates/commands/business-analyse/5-validate.md +0 -132
- package/templates/commands/business-analyse/6-handoff.md +0 -157
- package/templates/commands/business-analyse/7-doc-html.md +0 -103
- package/templates/commands/business-analyse/_shared.md +0 -176
- package/templates/commands/business-analyse/bug.md +0 -118
- package/templates/commands/business-analyse/change-request.md +0 -144
- package/templates/commands/business-analyse/hotfix.md +0 -116
- package/templates/commands/business-analyse.md +0 -121
- package/templates/commands/controller/create.md +0 -216
- package/templates/commands/controller/postman-templates.md +0 -528
- package/templates/commands/controller/templates.md +0 -600
- package/templates/commands/controller.md +0 -337
- package/templates/commands/create/agent.md +0 -138
- package/templates/commands/create/command.md +0 -166
- package/templates/commands/create/hook.md +0 -234
- package/templates/commands/create/plugin.md +0 -329
- package/templates/commands/create/project.md +0 -508
- package/templates/commands/create/skill.md +0 -199
- package/templates/commands/create.md +0 -220
- package/templates/commands/documentation/module.md +0 -202
- package/templates/commands/documentation/templates.md +0 -432
- package/templates/commands/documentation.md +0 -190
- package/templates/commands/epct.md +0 -69
- package/templates/commands/explain.md +0 -186
- package/templates/commands/feature-full.md +0 -267
- package/templates/commands/gitflow/1-init.md +0 -188
- package/templates/commands/gitflow/10-start.md +0 -190
- package/templates/commands/gitflow/11-finish.md +0 -382
- package/templates/commands/gitflow/12-cleanup.md +0 -103
- package/templates/commands/gitflow/13-sync.md +0 -216
- package/templates/commands/gitflow/14-rebase.md +0 -251
- package/templates/commands/gitflow/2-status.md +0 -122
- package/templates/commands/gitflow/3-commit.md +0 -209
- package/templates/commands/gitflow/4-plan.md +0 -174
- package/templates/commands/gitflow/5-exec.md +0 -202
- package/templates/commands/gitflow/6-abort.md +0 -121
- package/templates/commands/gitflow/7-pull-request.md +0 -176
- package/templates/commands/gitflow/8-review.md +0 -113
- package/templates/commands/gitflow/9-merge.md +0 -157
- package/templates/commands/gitflow.md +0 -128
- package/templates/commands/implement.md +0 -663
- package/templates/commands/init.md +0 -567
- package/templates/commands/mcp-integration.md +0 -330
- package/templates/commands/notification.md +0 -129
- package/templates/commands/oneshot.md +0 -57
- package/templates/commands/quickstart.md +0 -154
- package/templates/commands/ralph-loop/cancel-ralph.md +0 -18
- package/templates/commands/ralph-loop/help.md +0 -126
- package/templates/commands/ralph-loop/ralph-loop.md +0 -120
- package/templates/commands/review.md +0 -106
- package/templates/commands/workflow.md +0 -193
- package/templates/gitflow/config.json +0 -138
|
@@ -5,14 +5,343 @@
|
|
|
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: 0.875rem 1rem;
|
|
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
|
+
justify-content: center;
|
|
27
|
+
gap: 0.5rem;
|
|
28
|
+
font-size: 0.95rem;
|
|
29
|
+
font-weight: 500;
|
|
30
|
+
min-height: 52px;
|
|
31
|
+
}
|
|
32
|
+
.platform-btn:hover {
|
|
33
|
+
border-color: var(--primary);
|
|
34
|
+
background: var(--bg-hover);
|
|
35
|
+
}
|
|
36
|
+
.platform-btn.active {
|
|
37
|
+
border-color: var(--primary);
|
|
38
|
+
background: rgba(59, 130, 246, 0.1);
|
|
39
|
+
}
|
|
40
|
+
.platform-btn .platform-icon {
|
|
41
|
+
font-size: 1.25rem;
|
|
42
|
+
}
|
|
43
|
+
.platform-content {
|
|
44
|
+
display: none;
|
|
45
|
+
}
|
|
46
|
+
.platform-content.active {
|
|
47
|
+
display: block;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* OS Selector */
|
|
51
|
+
.os-selector {
|
|
52
|
+
display: flex;
|
|
53
|
+
gap: 0.75rem;
|
|
54
|
+
}
|
|
55
|
+
.os-btn {
|
|
56
|
+
flex: 1;
|
|
57
|
+
padding: 0.875rem 1rem;
|
|
58
|
+
border: 2px solid var(--border);
|
|
59
|
+
border-radius: 8px;
|
|
60
|
+
background: var(--bg-card);
|
|
61
|
+
color: var(--text);
|
|
62
|
+
cursor: pointer;
|
|
63
|
+
transition: all 0.2s ease;
|
|
64
|
+
font-size: 0.95rem;
|
|
65
|
+
font-weight: 500;
|
|
66
|
+
display: flex;
|
|
67
|
+
align-items: center;
|
|
68
|
+
justify-content: center;
|
|
69
|
+
gap: 0.5rem;
|
|
70
|
+
min-height: 52px;
|
|
71
|
+
}
|
|
72
|
+
.os-btn:hover {
|
|
73
|
+
border-color: var(--primary);
|
|
74
|
+
background: var(--bg-hover);
|
|
75
|
+
}
|
|
76
|
+
.os-btn.active {
|
|
77
|
+
border-color: var(--primary);
|
|
78
|
+
background: rgba(59, 130, 246, 0.1);
|
|
79
|
+
}
|
|
80
|
+
.os-btn .os-icon {
|
|
81
|
+
font-size: 1.25rem;
|
|
82
|
+
}
|
|
83
|
+
.os-content {
|
|
84
|
+
display: none;
|
|
85
|
+
}
|
|
86
|
+
.os-content.active {
|
|
87
|
+
display: block;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/* Settings panel */
|
|
91
|
+
.settings-panel {
|
|
92
|
+
background: var(--bg-card);
|
|
93
|
+
border: 1px solid var(--border);
|
|
94
|
+
border-radius: 12px;
|
|
95
|
+
padding: 1.5rem;
|
|
96
|
+
margin-bottom: 2rem;
|
|
97
|
+
}
|
|
98
|
+
.settings-row {
|
|
99
|
+
display: flex;
|
|
100
|
+
gap: 2rem;
|
|
101
|
+
flex-wrap: wrap;
|
|
102
|
+
}
|
|
103
|
+
.settings-group {
|
|
104
|
+
flex: 1;
|
|
105
|
+
min-width: 280px;
|
|
106
|
+
}
|
|
107
|
+
.settings-label {
|
|
108
|
+
font-weight: 600;
|
|
109
|
+
color: var(--text);
|
|
110
|
+
margin-bottom: 0.75rem;
|
|
111
|
+
display: flex;
|
|
112
|
+
align-items: center;
|
|
113
|
+
gap: 0.5rem;
|
|
114
|
+
}
|
|
115
|
+
.settings-label .label-icon {
|
|
116
|
+
font-size: 1.1rem;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/* Tutorial section */
|
|
120
|
+
.tutorial-section {
|
|
121
|
+
background: var(--bg-card);
|
|
122
|
+
border: 1px solid var(--border);
|
|
123
|
+
border-radius: 8px;
|
|
124
|
+
padding: 1.5rem;
|
|
125
|
+
margin-bottom: 1.5rem;
|
|
126
|
+
}
|
|
127
|
+
.tutorial-section h4 {
|
|
128
|
+
color: var(--text);
|
|
129
|
+
margin: 0 0 1rem 0;
|
|
130
|
+
display: flex;
|
|
131
|
+
align-items: center;
|
|
132
|
+
gap: 0.5rem;
|
|
133
|
+
}
|
|
134
|
+
.tutorial-section h4 .step-badge {
|
|
135
|
+
background: var(--primary);
|
|
136
|
+
color: white;
|
|
137
|
+
padding: 0.25rem 0.75rem;
|
|
138
|
+
border-radius: 4px;
|
|
139
|
+
font-size: 0.8rem;
|
|
140
|
+
}
|
|
141
|
+
.tutorial-note {
|
|
142
|
+
background: rgba(59, 130, 246, 0.1);
|
|
143
|
+
border-left: 3px solid var(--primary);
|
|
144
|
+
padding: 1rem;
|
|
145
|
+
margin: 1rem 0;
|
|
146
|
+
border-radius: 0 4px 4px 0;
|
|
147
|
+
}
|
|
148
|
+
.tutorial-note p {
|
|
149
|
+
margin: 0;
|
|
150
|
+
color: var(--text);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/* API Key Input */
|
|
154
|
+
.api-key-section {
|
|
155
|
+
margin: 1.5rem 0;
|
|
156
|
+
padding: 1rem;
|
|
157
|
+
background: var(--bg-card);
|
|
158
|
+
border-radius: 8px;
|
|
159
|
+
border: 1px solid var(--border);
|
|
160
|
+
}
|
|
161
|
+
.api-key-input-wrapper {
|
|
162
|
+
display: flex;
|
|
163
|
+
gap: 0.5rem;
|
|
164
|
+
margin-top: 0.5rem;
|
|
165
|
+
}
|
|
166
|
+
.api-key-input {
|
|
167
|
+
flex: 1;
|
|
168
|
+
padding: 0.5rem 0.75rem;
|
|
169
|
+
border: 1px solid var(--border);
|
|
170
|
+
border-radius: 4px;
|
|
171
|
+
background: var(--bg-input);
|
|
172
|
+
color: var(--text);
|
|
173
|
+
font-family: monospace;
|
|
174
|
+
}
|
|
175
|
+
.api-key-input:focus {
|
|
176
|
+
outline: none;
|
|
177
|
+
border-color: var(--primary);
|
|
178
|
+
}
|
|
179
|
+
.api-key-save-btn {
|
|
180
|
+
padding: 0.5rem 1rem;
|
|
181
|
+
background: var(--primary);
|
|
182
|
+
color: white;
|
|
183
|
+
border: none;
|
|
184
|
+
border-radius: 4px;
|
|
185
|
+
cursor: pointer;
|
|
186
|
+
font-weight: 500;
|
|
187
|
+
}
|
|
188
|
+
.api-key-save-btn:hover {
|
|
189
|
+
background: var(--primary-hover);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/* Progress bar */
|
|
193
|
+
.progress-container {
|
|
194
|
+
margin: 2rem 0;
|
|
195
|
+
padding: 1.5rem;
|
|
196
|
+
background: var(--bg-card);
|
|
197
|
+
border-radius: 8px;
|
|
198
|
+
border: 1px solid var(--border);
|
|
199
|
+
}
|
|
200
|
+
.progress-header {
|
|
201
|
+
display: flex;
|
|
202
|
+
justify-content: space-between;
|
|
203
|
+
align-items: center;
|
|
204
|
+
margin-bottom: 1rem;
|
|
205
|
+
}
|
|
206
|
+
.progress-title {
|
|
207
|
+
font-weight: 600;
|
|
208
|
+
color: var(--text);
|
|
209
|
+
}
|
|
210
|
+
.progress-count {
|
|
211
|
+
color: var(--text-muted);
|
|
212
|
+
font-size: 0.9rem;
|
|
213
|
+
}
|
|
214
|
+
.progress-bar {
|
|
215
|
+
height: 8px;
|
|
216
|
+
background: var(--bg-hover);
|
|
217
|
+
border-radius: 4px;
|
|
218
|
+
overflow: hidden;
|
|
219
|
+
}
|
|
220
|
+
.progress-fill {
|
|
221
|
+
height: 100%;
|
|
222
|
+
background: linear-gradient(90deg, var(--primary), var(--success));
|
|
223
|
+
border-radius: 4px;
|
|
224
|
+
transition: width 0.3s ease;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/* Checklist */
|
|
228
|
+
.checklist {
|
|
229
|
+
list-style: none;
|
|
230
|
+
padding: 0;
|
|
231
|
+
margin: 0;
|
|
232
|
+
}
|
|
233
|
+
.checklist-item {
|
|
234
|
+
display: flex;
|
|
235
|
+
align-items: flex-start;
|
|
236
|
+
gap: 1rem;
|
|
237
|
+
padding: 1.5rem;
|
|
238
|
+
margin-bottom: 1rem;
|
|
239
|
+
background: var(--bg-card);
|
|
240
|
+
border: 1px solid var(--border);
|
|
241
|
+
border-radius: 8px;
|
|
242
|
+
transition: all 0.2s ease;
|
|
243
|
+
}
|
|
244
|
+
.checklist-item:hover {
|
|
245
|
+
border-color: var(--primary);
|
|
246
|
+
}
|
|
247
|
+
.checklist-item.completed {
|
|
248
|
+
border-color: var(--success);
|
|
249
|
+
background: rgba(34, 197, 94, 0.05);
|
|
250
|
+
}
|
|
251
|
+
.checklist-checkbox {
|
|
252
|
+
width: 24px;
|
|
253
|
+
height: 24px;
|
|
254
|
+
min-width: 24px;
|
|
255
|
+
border: 2px solid var(--border);
|
|
256
|
+
border-radius: 50%;
|
|
257
|
+
cursor: pointer;
|
|
258
|
+
display: flex;
|
|
259
|
+
align-items: center;
|
|
260
|
+
justify-content: center;
|
|
261
|
+
transition: all 0.2s ease;
|
|
262
|
+
margin-top: 0.2rem;
|
|
263
|
+
}
|
|
264
|
+
.checklist-checkbox:hover {
|
|
265
|
+
border-color: var(--primary);
|
|
266
|
+
}
|
|
267
|
+
.checklist-item.completed .checklist-checkbox {
|
|
268
|
+
background: var(--success);
|
|
269
|
+
border-color: var(--success);
|
|
270
|
+
}
|
|
271
|
+
.checklist-checkbox::after {
|
|
272
|
+
content: '';
|
|
273
|
+
display: none;
|
|
274
|
+
}
|
|
275
|
+
.checklist-item.completed .checklist-checkbox::after {
|
|
276
|
+
content: '\2713';
|
|
277
|
+
display: block;
|
|
278
|
+
color: white;
|
|
279
|
+
font-weight: bold;
|
|
280
|
+
}
|
|
281
|
+
.checklist-content {
|
|
282
|
+
flex: 1;
|
|
283
|
+
}
|
|
284
|
+
.checklist-title {
|
|
285
|
+
font-weight: 600;
|
|
286
|
+
margin-bottom: 0.5rem;
|
|
287
|
+
color: var(--text);
|
|
288
|
+
}
|
|
289
|
+
.checklist-description {
|
|
290
|
+
color: var(--text-muted);
|
|
291
|
+
font-size: 0.9rem;
|
|
292
|
+
line-height: 1.5;
|
|
293
|
+
}
|
|
294
|
+
.checklist-number {
|
|
295
|
+
width: 28px;
|
|
296
|
+
height: 28px;
|
|
297
|
+
min-width: 28px;
|
|
298
|
+
background: var(--primary);
|
|
299
|
+
color: white;
|
|
300
|
+
border-radius: 50%;
|
|
301
|
+
display: flex;
|
|
302
|
+
align-items: center;
|
|
303
|
+
justify-content: center;
|
|
304
|
+
font-weight: 600;
|
|
305
|
+
font-size: 0.85rem;
|
|
306
|
+
}
|
|
307
|
+
.checklist-item.completed .checklist-number {
|
|
308
|
+
background: var(--success);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
/* Dynamic command display */
|
|
312
|
+
.dynamic-command {
|
|
313
|
+
transition: all 0.2s ease;
|
|
314
|
+
}
|
|
315
|
+
.command-highlight {
|
|
316
|
+
background: rgba(59, 130, 246, 0.2);
|
|
317
|
+
padding: 0 2px;
|
|
318
|
+
border-radius: 2px;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
/* Reset button */
|
|
322
|
+
.reset-progress-btn {
|
|
323
|
+
margin-top: 1rem;
|
|
324
|
+
padding: 0.5rem 1rem;
|
|
325
|
+
background: transparent;
|
|
326
|
+
color: var(--text-muted);
|
|
327
|
+
border: 1px solid var(--border);
|
|
328
|
+
border-radius: 4px;
|
|
329
|
+
cursor: pointer;
|
|
330
|
+
font-size: 0.85rem;
|
|
331
|
+
}
|
|
332
|
+
.reset-progress-btn:hover {
|
|
333
|
+
background: var(--bg-hover);
|
|
334
|
+
color: var(--text);
|
|
335
|
+
}
|
|
336
|
+
</style>
|
|
8
337
|
</head>
|
|
9
338
|
<body>
|
|
10
339
|
<div class="app-container">
|
|
11
|
-
<!-- Global Header
|
|
340
|
+
<!-- Global Header -->
|
|
12
341
|
<header class="global-header">
|
|
13
342
|
<div class="logo">SS</div>
|
|
14
343
|
<span class="site-title">SmartStack CLI</span>
|
|
15
|
-
<span class="version-badge">v1.
|
|
344
|
+
<span class="version-badge">v1.14.0</span>
|
|
16
345
|
<div class="header-divider"></div>
|
|
17
346
|
<span class="page-title">Installation</span>
|
|
18
347
|
<nav class="breadcrumb">
|
|
@@ -25,8 +354,8 @@
|
|
|
25
354
|
</nav>
|
|
26
355
|
<!-- Language Select -->
|
|
27
356
|
<select class="lang-select" id="lang-select" onchange="setLanguage(this.value); localStorage.setItem('doc-language', this.value);">
|
|
28
|
-
<option value="fr"
|
|
29
|
-
<option value="en"
|
|
357
|
+
<option value="fr">🇫🇷 FR</option>
|
|
358
|
+
<option value="en">🇬🇧 EN</option>
|
|
30
359
|
</select>
|
|
31
360
|
<!-- Search -->
|
|
32
361
|
<div class="header-search">
|
|
@@ -128,417 +457,624 @@
|
|
|
128
457
|
<!-- Main Content -->
|
|
129
458
|
<main class="main-content">
|
|
130
459
|
<div class="content content-wide">
|
|
131
|
-
|
|
132
|
-
|
|
460
|
+
|
|
461
|
+
<!-- Introduction -->
|
|
462
|
+
<section id="introduction">
|
|
133
463
|
<h2>
|
|
134
|
-
<span data-lang="fr">
|
|
135
|
-
<span data-lang="en">
|
|
464
|
+
<span data-lang="fr">Installation de SmartStack CLI</span>
|
|
465
|
+
<span data-lang="en">SmartStack CLI Installation</span>
|
|
136
466
|
</h2>
|
|
467
|
+
<p data-lang="fr">
|
|
468
|
+
Suivez cette checklist interactive pour installer SmartStack CLI et configurer votre environnement de developpement.
|
|
469
|
+
Votre progression est automatiquement sauvegardee.
|
|
470
|
+
</p>
|
|
471
|
+
<p data-lang="en">
|
|
472
|
+
Follow this interactive checklist to install SmartStack CLI and configure your development environment.
|
|
473
|
+
Your progress is automatically saved.
|
|
474
|
+
</p>
|
|
475
|
+
</section>
|
|
137
476
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
</div>
|
|
147
|
-
<div class="feature-item">
|
|
148
|
-
<span class="feature-icon">🤖</span>
|
|
149
|
-
<span class="feature-text"><strong>Claude Code</strong> (CLI d'Anthropic)</span>
|
|
150
|
-
</div>
|
|
477
|
+
<!-- Progress Bar -->
|
|
478
|
+
<div class="progress-container">
|
|
479
|
+
<div class="progress-header">
|
|
480
|
+
<span class="progress-title">
|
|
481
|
+
<span data-lang="fr">Progression</span>
|
|
482
|
+
<span data-lang="en">Progress</span>
|
|
483
|
+
</span>
|
|
484
|
+
<span class="progress-count" id="progress-count">0/7</span>
|
|
151
485
|
</div>
|
|
486
|
+
<div class="progress-bar">
|
|
487
|
+
<div class="progress-fill" id="progress-fill" style="width: 0%"></div>
|
|
488
|
+
</div>
|
|
489
|
+
<button class="reset-progress-btn" onclick="resetProgress()">
|
|
490
|
+
<span data-lang="fr">Reinitialiser la progression</span>
|
|
491
|
+
<span data-lang="en">Reset progress</span>
|
|
492
|
+
</button>
|
|
493
|
+
</div>
|
|
152
494
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
495
|
+
<!-- Configuration Panel -->
|
|
496
|
+
<section id="config-panel">
|
|
497
|
+
<h3>
|
|
498
|
+
<span data-lang="fr">Configuration</span>
|
|
499
|
+
<span data-lang="en">Configuration</span>
|
|
500
|
+
</h3>
|
|
501
|
+
<p data-lang="fr">Selectionnez votre environnement pour afficher les commandes adaptees :</p>
|
|
502
|
+
<p data-lang="en">Select your environment to display adapted commands:</p>
|
|
503
|
+
|
|
504
|
+
<div class="settings-panel">
|
|
505
|
+
<div class="settings-row">
|
|
506
|
+
<div class="settings-group">
|
|
507
|
+
<span class="settings-label">
|
|
508
|
+
<span class="label-icon">💻</span>
|
|
509
|
+
<span data-lang="fr">Systeme d'exploitation</span>
|
|
510
|
+
<span data-lang="en">Operating System</span>
|
|
511
|
+
</span>
|
|
512
|
+
<div class="os-selector">
|
|
513
|
+
<button class="os-btn active" data-os="windows" onclick="setOS('windows')">
|
|
514
|
+
<span class="os-icon">🪟</span>
|
|
515
|
+
<span>Windows</span>
|
|
516
|
+
</button>
|
|
517
|
+
<button class="os-btn" data-os="macos" onclick="setOS('macos')">
|
|
518
|
+
<span class="os-icon">🍎</span>
|
|
519
|
+
<span>macOS</span>
|
|
520
|
+
</button>
|
|
521
|
+
<button class="os-btn" data-os="linux" onclick="setOS('linux')">
|
|
522
|
+
<span class="os-icon">🐧</span>
|
|
523
|
+
<span>Linux</span>
|
|
524
|
+
</button>
|
|
525
|
+
</div>
|
|
526
|
+
</div>
|
|
527
|
+
<div class="settings-group">
|
|
528
|
+
<span class="settings-label">
|
|
529
|
+
<span class="label-icon">🔀</span>
|
|
530
|
+
<span data-lang="fr">Plateforme Git</span>
|
|
531
|
+
<span data-lang="en">Git Platform</span>
|
|
532
|
+
</span>
|
|
533
|
+
<div class="platform-selector">
|
|
534
|
+
<button class="platform-btn active" data-platform="github" onclick="setPlatform('github')">
|
|
535
|
+
<span class="platform-icon">🐙</span>
|
|
536
|
+
<span>GitHub</span>
|
|
537
|
+
</button>
|
|
538
|
+
<button class="platform-btn" data-platform="azure" onclick="setPlatform('azure')">
|
|
539
|
+
<span class="platform-icon">☁</span>
|
|
540
|
+
<span>Azure DevOps</span>
|
|
541
|
+
</button>
|
|
542
|
+
</div>
|
|
543
|
+
</div>
|
|
544
|
+
</div>
|
|
158
545
|
</div>
|
|
159
546
|
</section>
|
|
160
547
|
|
|
161
|
-
<!--
|
|
162
|
-
<section id="
|
|
163
|
-
<
|
|
164
|
-
<span data-lang="fr">
|
|
165
|
-
<span data-lang="en">
|
|
166
|
-
</
|
|
548
|
+
<!-- Installation Checklist -->
|
|
549
|
+
<section id="checklist">
|
|
550
|
+
<h3>
|
|
551
|
+
<span data-lang="fr">Checklist d'installation</span>
|
|
552
|
+
<span data-lang="en">Installation Checklist</span>
|
|
553
|
+
</h3>
|
|
167
554
|
|
|
168
|
-
<
|
|
169
|
-
|
|
170
|
-
<
|
|
171
|
-
|
|
555
|
+
<ul class="checklist" id="installation-checklist">
|
|
556
|
+
<!-- Step 1: Node.js -->
|
|
557
|
+
<li class="checklist-item" data-step="1">
|
|
558
|
+
<span class="checklist-number">1</span>
|
|
559
|
+
<div class="checklist-checkbox" onclick="toggleStep(1)"></div>
|
|
560
|
+
<div class="checklist-content">
|
|
561
|
+
<div class="checklist-title">
|
|
562
|
+
<span data-lang="fr">Installer Node.js</span>
|
|
563
|
+
<span data-lang="en">Install Node.js</span>
|
|
564
|
+
</div>
|
|
565
|
+
<div class="checklist-description">
|
|
566
|
+
<p data-lang="fr">Telechargez et installez Node.js (version 18 ou superieure recommandee).</p>
|
|
567
|
+
<p data-lang="en">Download and install Node.js (version 18 or higher recommended).</p>
|
|
568
|
+
<div class="code-block">
|
|
569
|
+
<button class="copy-btn">Copy</button>
|
|
570
|
+
<pre><code>node --version # Verifier l'installation</code></pre>
|
|
571
|
+
</div>
|
|
572
|
+
<p><a href="https://nodejs.org/" target="_blank">https://nodejs.org/</a></p>
|
|
573
|
+
</div>
|
|
574
|
+
</div>
|
|
575
|
+
</li>
|
|
172
576
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
577
|
+
<!-- Step 2: Git -->
|
|
578
|
+
<li class="checklist-item" data-step="2">
|
|
579
|
+
<span class="checklist-number">2</span>
|
|
580
|
+
<div class="checklist-checkbox" onclick="toggleStep(2)"></div>
|
|
581
|
+
<div class="checklist-content">
|
|
582
|
+
<div class="checklist-title">
|
|
583
|
+
<span data-lang="fr">Configurer Git</span>
|
|
584
|
+
<span data-lang="en">Configure Git</span>
|
|
585
|
+
</div>
|
|
586
|
+
<div class="checklist-description">
|
|
587
|
+
<!-- GitHub content -->
|
|
588
|
+
<div class="platform-content github-content active">
|
|
589
|
+
<p data-lang="fr">Configurez Git avec SSH pour GitHub. Ajoutez votre cle SSH dans les parametres GitHub.</p>
|
|
590
|
+
<p data-lang="en">Configure Git with SSH for GitHub. Add your SSH key in GitHub settings.</p>
|
|
177
591
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
592
|
+
<!-- Windows -->
|
|
593
|
+
<div class="os-content windows-content active">
|
|
594
|
+
<div class="code-block">
|
|
595
|
+
<button class="copy-btn">Copy</button>
|
|
596
|
+
<pre><code># Generer une cle SSH (PowerShell)
|
|
597
|
+
ssh-keygen -t ed25519 -C "your_email@example.com"
|
|
184
598
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
599
|
+
# Demarrer le service SSH Agent
|
|
600
|
+
Get-Service ssh-agent | Set-Service -StartupType Automatic
|
|
601
|
+
Start-Service ssh-agent
|
|
602
|
+
ssh-add $env:USERPROFILE\.ssh\id_ed25519
|
|
603
|
+
|
|
604
|
+
# Afficher la cle publique a copier
|
|
605
|
+
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub</code></pre>
|
|
606
|
+
</div>
|
|
607
|
+
</div>
|
|
608
|
+
<!-- macOS -->
|
|
609
|
+
<div class="os-content macos-content">
|
|
610
|
+
<div class="code-block">
|
|
611
|
+
<button class="copy-btn">Copy</button>
|
|
612
|
+
<pre><code># Generer une cle SSH
|
|
613
|
+
ssh-keygen -t ed25519 -C "your_email@example.com"
|
|
614
|
+
|
|
615
|
+
# Ajouter au Keychain
|
|
616
|
+
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
|
|
617
|
+
|
|
618
|
+
# Afficher la cle publique a copier
|
|
619
|
+
cat ~/.ssh/id_ed25519.pub | pbcopy # Copie directement</code></pre>
|
|
620
|
+
</div>
|
|
621
|
+
</div>
|
|
622
|
+
<!-- Linux -->
|
|
623
|
+
<div class="os-content linux-content">
|
|
624
|
+
<div class="code-block">
|
|
625
|
+
<button class="copy-btn">Copy</button>
|
|
626
|
+
<pre><code># Generer une cle SSH
|
|
627
|
+
ssh-keygen -t ed25519 -C "your_email@example.com"
|
|
628
|
+
|
|
629
|
+
# Demarrer l'agent SSH
|
|
630
|
+
eval "$(ssh-agent -s)"
|
|
631
|
+
ssh-add ~/.ssh/id_ed25519
|
|
632
|
+
|
|
633
|
+
# Afficher la cle publique a copier
|
|
634
|
+
cat ~/.ssh/id_ed25519.pub</code></pre>
|
|
635
|
+
</div>
|
|
636
|
+
</div>
|
|
637
|
+
|
|
638
|
+
<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>
|
|
639
|
+
<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>
|
|
640
|
+
</div>
|
|
641
|
+
<!-- Azure DevOps content -->
|
|
642
|
+
<div class="platform-content azure-content">
|
|
643
|
+
<p data-lang="fr">Configurez Git avec HTTPS et Git Credential Manager pour Azure DevOps.</p>
|
|
644
|
+
<p data-lang="en">Configure Git with HTTPS and Git Credential Manager for Azure DevOps.</p>
|
|
645
|
+
|
|
646
|
+
<!-- Windows -->
|
|
647
|
+
<div class="os-content windows-content active">
|
|
648
|
+
<div class="code-block">
|
|
649
|
+
<button class="copy-btn">Copy</button>
|
|
650
|
+
<pre><code># Git Credential Manager est inclus avec Git for Windows
|
|
651
|
+
# Verifiez qu'il est configure :
|
|
652
|
+
git config --global credential.helper manager</code></pre>
|
|
653
|
+
</div>
|
|
654
|
+
<p data-lang="fr" style="margin-top: 0.5rem; color: var(--text-muted);">Git Credential Manager est installe automatiquement avec Git for Windows.</p>
|
|
655
|
+
<p data-lang="en" style="margin-top: 0.5rem; color: var(--text-muted);">Git Credential Manager is installed automatically with Git for Windows.</p>
|
|
656
|
+
</div>
|
|
657
|
+
<!-- macOS -->
|
|
658
|
+
<div class="os-content macos-content">
|
|
659
|
+
<div class="code-block">
|
|
660
|
+
<button class="copy-btn">Copy</button>
|
|
661
|
+
<pre><code># Installer Git Credential Manager via Homebrew
|
|
662
|
+
brew install --cask git-credential-manager
|
|
663
|
+
|
|
664
|
+
# Configurer le credential helper
|
|
665
|
+
git config --global credential.helper manager</code></pre>
|
|
666
|
+
</div>
|
|
667
|
+
</div>
|
|
668
|
+
<!-- Linux -->
|
|
669
|
+
<div class="os-content linux-content">
|
|
670
|
+
<div class="code-block">
|
|
671
|
+
<button class="copy-btn">Copy</button>
|
|
672
|
+
<pre><code># Installer Git Credential Manager
|
|
673
|
+
# Telechargez le .deb depuis: https://github.com/git-ecosystem/git-credential-manager/releases
|
|
674
|
+
sudo dpkg -i gcm-linux_amd64.deb
|
|
191
675
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
676
|
+
# Configurer le credential helper
|
|
677
|
+
git config --global credential.helper manager</code></pre>
|
|
678
|
+
</div>
|
|
679
|
+
</div>
|
|
680
|
+
|
|
681
|
+
<div class="tutorial-note" style="margin-top: 1rem;">
|
|
682
|
+
<p data-lang="fr"><strong>Pas besoin de <code>az login</code></strong> - Git Credential Manager ouvrira automatiquement votre navigateur pour vous authentifier avec votre compte Azure AD lors de la premiere operation Git (clone, push, etc.).</p>
|
|
683
|
+
<p data-lang="en"><strong>No need for <code>az login</code></strong> - Git Credential Manager will automatically open your browser to authenticate with your Azure AD account on the first Git operation (clone, push, etc.).</p>
|
|
684
|
+
</div>
|
|
685
|
+
</div>
|
|
200
686
|
</div>
|
|
201
687
|
</div>
|
|
202
688
|
</li>
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
689
|
+
|
|
690
|
+
<!-- Step 3: Claude Code CLI -->
|
|
691
|
+
<li class="checklist-item" data-step="3">
|
|
692
|
+
<span class="checklist-number">3</span>
|
|
693
|
+
<div class="checklist-checkbox" onclick="toggleStep(3)"></div>
|
|
694
|
+
<div class="checklist-content">
|
|
695
|
+
<div class="checklist-title">
|
|
696
|
+
<span data-lang="fr">Installer Claude Code CLI</span>
|
|
697
|
+
<span data-lang="en">Install Claude Code CLI</span>
|
|
698
|
+
</div>
|
|
699
|
+
<div class="checklist-description">
|
|
700
|
+
<p data-lang="fr">Installez Claude Code CLI globalement avec npm.</p>
|
|
701
|
+
<p data-lang="en">Install Claude Code CLI globally with npm.</p>
|
|
702
|
+
<div class="code-block">
|
|
703
|
+
<button class="copy-btn">Copy</button>
|
|
704
|
+
<pre><code>npm install -g @anthropic-ai/claude-code</code></pre>
|
|
705
|
+
</div>
|
|
210
706
|
</div>
|
|
211
707
|
</div>
|
|
212
708
|
</li>
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
709
|
+
|
|
710
|
+
<!-- Step 4: SmartStack CLI -->
|
|
711
|
+
<li class="checklist-item" data-step="4">
|
|
712
|
+
<span class="checklist-number">4</span>
|
|
713
|
+
<div class="checklist-checkbox" onclick="toggleStep(4)"></div>
|
|
714
|
+
<div class="checklist-content">
|
|
715
|
+
<div class="checklist-title">
|
|
716
|
+
<span data-lang="fr">Installer SmartStack CLI</span>
|
|
717
|
+
<span data-lang="en">Install SmartStack CLI</span>
|
|
718
|
+
</div>
|
|
719
|
+
<div class="checklist-description">
|
|
720
|
+
<p data-lang="fr">Installez SmartStack CLI globalement avec npm.</p>
|
|
721
|
+
<p data-lang="en">Install SmartStack CLI globally with npm.</p>
|
|
722
|
+
<div class="code-block">
|
|
723
|
+
<button class="copy-btn">Copy</button>
|
|
724
|
+
<pre><code>npm install -g @atlashub/smartstack-cli</code></pre>
|
|
725
|
+
</div>
|
|
726
|
+
<p data-lang="fr">Verifiez l'installation :</p>
|
|
727
|
+
<p data-lang="en">Verify installation:</p>
|
|
728
|
+
<div class="code-block">
|
|
729
|
+
<button class="copy-btn">Copy</button>
|
|
730
|
+
<pre><code>smartstack --version</code></pre>
|
|
731
|
+
</div>
|
|
220
732
|
</div>
|
|
221
733
|
</div>
|
|
222
734
|
</li>
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
735
|
+
|
|
736
|
+
<!-- Step 5: SmartStack MCP Server -->
|
|
737
|
+
<li class="checklist-item" data-step="5">
|
|
738
|
+
<span class="checklist-number">5</span>
|
|
739
|
+
<div class="checklist-checkbox" onclick="toggleStep(5)"></div>
|
|
740
|
+
<div class="checklist-content">
|
|
741
|
+
<div class="checklist-title">
|
|
742
|
+
<span data-lang="fr">Installer SmartStack MCP Server</span>
|
|
743
|
+
<span data-lang="en">Install SmartStack MCP Server</span>
|
|
744
|
+
</div>
|
|
745
|
+
<div class="checklist-description">
|
|
746
|
+
<p data-lang="fr">Installez le serveur MCP SmartStack pour la validation des conventions et le scaffolding.</p>
|
|
747
|
+
<p data-lang="en">Install the SmartStack MCP server for conventions validation and scaffolding.</p>
|
|
748
|
+
<div class="code-block">
|
|
749
|
+
<button class="copy-btn">Copy</button>
|
|
750
|
+
<pre><code># Etape 1: Installer le package globalement
|
|
751
|
+
npm install -g @atlashub/smartstack-mcp
|
|
752
|
+
|
|
753
|
+
# Etape 2: Enregistrer le serveur MCP dans Claude
|
|
754
|
+
claude mcp add smartstack -- npx @atlashub/smartstack-mcp</code></pre>
|
|
755
|
+
</div>
|
|
230
756
|
</div>
|
|
231
757
|
</div>
|
|
232
758
|
</li>
|
|
233
|
-
</ol>
|
|
234
|
-
</section>
|
|
235
759
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
760
|
+
<!-- Step 6: Context7 MCP Server -->
|
|
761
|
+
<li class="checklist-item" data-step="6">
|
|
762
|
+
<span class="checklist-number">6</span>
|
|
763
|
+
<div class="checklist-checkbox" onclick="toggleStep(6)"></div>
|
|
764
|
+
<div class="checklist-content">
|
|
765
|
+
<div class="checklist-title">
|
|
766
|
+
<span data-lang="fr">Installer Context7 MCP Server</span>
|
|
767
|
+
<span data-lang="en">Install Context7 MCP Server</span>
|
|
768
|
+
</div>
|
|
769
|
+
<div class="checklist-description">
|
|
770
|
+
<p data-lang="fr">Installez le serveur MCP Context7 pour acceder a la documentation des bibliotheques.</p>
|
|
771
|
+
<p data-lang="en">Install the Context7 MCP server to access library documentation.</p>
|
|
242
772
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
773
|
+
<!-- API Key Input -->
|
|
774
|
+
<div class="api-key-section">
|
|
775
|
+
<label data-lang="fr"><strong>Cle API Context7</strong> (optionnel - ameliore les performances)</label>
|
|
776
|
+
<label data-lang="en"><strong>Context7 API Key</strong> (optional - improves performance)</label>
|
|
777
|
+
<div class="api-key-input-wrapper">
|
|
778
|
+
<input type="text" class="api-key-input" id="context7-api-key" placeholder="ctx7_xxxxxxxx">
|
|
779
|
+
<button class="api-key-save-btn" onclick="saveApiKey()">
|
|
780
|
+
<span data-lang="fr">Sauvegarder</span>
|
|
781
|
+
<span data-lang="en">Save</span>
|
|
782
|
+
</button>
|
|
783
|
+
</div>
|
|
784
|
+
<small style="color: var(--text-muted); margin-top: 0.5rem; display: block;">
|
|
785
|
+
<span data-lang="fr">Obtenez une cle API sur <a href="https://context7.com" target="_blank">context7.com</a></span>
|
|
786
|
+
<span data-lang="en">Get an API key at <a href="https://context7.com" target="_blank">context7.com</a></span>
|
|
787
|
+
</small>
|
|
788
|
+
</div>
|
|
249
789
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
790
|
+
<div class="code-block">
|
|
791
|
+
<button class="copy-btn">Copy</button>
|
|
792
|
+
<pre><code id="context7-command"># Sans cle API
|
|
793
|
+
claude mcp add context7 -- npx @upstash/context7-mcp</code></pre>
|
|
794
|
+
</div>
|
|
795
|
+
</div>
|
|
796
|
+
</div>
|
|
797
|
+
</li>
|
|
254
798
|
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
799
|
+
<!-- Step 7: Verification -->
|
|
800
|
+
<li class="checklist-item" data-step="7">
|
|
801
|
+
<span class="checklist-number">7</span>
|
|
802
|
+
<div class="checklist-checkbox" onclick="toggleStep(7)"></div>
|
|
803
|
+
<div class="checklist-content">
|
|
804
|
+
<div class="checklist-title">
|
|
805
|
+
<span data-lang="fr">Verifier l'installation</span>
|
|
806
|
+
<span data-lang="en">Verify Installation</span>
|
|
807
|
+
</div>
|
|
808
|
+
<div class="checklist-description">
|
|
809
|
+
<p data-lang="fr">Verifiez que tout est correctement installe.</p>
|
|
810
|
+
<p data-lang="en">Verify that everything is correctly installed.</p>
|
|
811
|
+
<div class="code-block">
|
|
812
|
+
<button class="copy-btn">Copy</button>
|
|
813
|
+
<pre><code># Verifier les versions
|
|
814
|
+
node --version
|
|
815
|
+
claude --version
|
|
816
|
+
smartstack --version
|
|
258
817
|
|
|
259
|
-
|
|
260
|
-
|
|
818
|
+
# Verifier les serveurs MCP
|
|
819
|
+
claude mcp list</code></pre>
|
|
820
|
+
</div>
|
|
821
|
+
<div class="alert alert-success" style="margin-top: 1rem;">
|
|
822
|
+
<span class="alert-icon">✅</span>
|
|
823
|
+
<div class="alert-content">
|
|
824
|
+
<p data-lang="fr">Felicitations ! Vous pouvez maintenant :</p>
|
|
825
|
+
<p data-lang="en">Congratulations! You can now:</p>
|
|
826
|
+
<ul style="margin: 0.5rem 0 0 1rem;">
|
|
827
|
+
<li data-lang="fr">Creer un nouveau projet : <code>smartstack init MyProject</code></li>
|
|
828
|
+
<li data-lang="en">Create a new project: <code>smartstack init MyProject</code></li>
|
|
829
|
+
<li data-lang="fr">Ou initialiser sur un projet existant : <code>smartstack init .</code></li>
|
|
830
|
+
<li data-lang="en">Or initialize on an existing project: <code>smartstack init .</code></li>
|
|
831
|
+
</ul>
|
|
832
|
+
</div>
|
|
833
|
+
</div>
|
|
834
|
+
</div>
|
|
835
|
+
</div>
|
|
836
|
+
</li>
|
|
837
|
+
</ul>
|
|
838
|
+
</section>
|
|
839
|
+
|
|
840
|
+
<!-- Next Steps - Tutorial -->
|
|
841
|
+
<section id="next-steps">
|
|
842
|
+
<h3>
|
|
843
|
+
<span data-lang="fr">Demarrer votre premier projet</span>
|
|
844
|
+
<span data-lang="en">Start your first project</span>
|
|
845
|
+
</h3>
|
|
846
|
+
|
|
847
|
+
<div class="alert alert-success" style="margin-bottom: 1.5rem;">
|
|
848
|
+
<span class="alert-icon">✅</span>
|
|
261
849
|
<div class="alert-content">
|
|
262
|
-
<
|
|
263
|
-
<
|
|
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>
|
|
850
|
+
<p data-lang="fr"><strong>Vous lisez cette doc dans votre projet ?</strong> Vous etes deja pret ! Les etapes A, B, C sont deja faites. <a href="#step-d" style="color: var(--success); font-weight: 600;">Passez directement a l'etape D →</a></p>
|
|
851
|
+
<p data-lang="en"><strong>Reading this doc in your project?</strong> You're already set! Steps A, B, C are done. <a href="#step-d" style="color: var(--success); font-weight: 600;">Skip to step D →</a></p>
|
|
270
852
|
</div>
|
|
271
853
|
</div>
|
|
272
|
-
</section>
|
|
273
854
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
<h2>
|
|
277
|
-
<span data-lang="fr">Serveurs MCP (recommande)</span>
|
|
278
|
-
<span data-lang="en">MCP Servers (recommended)</span>
|
|
279
|
-
</h2>
|
|
855
|
+
<p data-lang="fr" style="color: var(--text-muted); font-size: 0.9rem; margin-bottom: 1.5rem;">Les etapes A, B, C ci-dessous sont pour reference si vous devez configurer un nouveau projet.</p>
|
|
856
|
+
<p data-lang="en" style="color: var(--text-muted); font-size: 0.9rem; margin-bottom: 1.5rem;">Steps A, B, C below are for reference if you need to set up a new project.</p>
|
|
280
857
|
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
858
|
+
<!-- Step A: Create repo -->
|
|
859
|
+
<div class="tutorial-section">
|
|
860
|
+
<h4>
|
|
861
|
+
<span class="step-badge">A</span>
|
|
862
|
+
<span data-lang="fr">Creer le repository Git</span>
|
|
863
|
+
<span data-lang="en">Create the Git repository</span>
|
|
864
|
+
</h4>
|
|
287
865
|
|
|
288
|
-
|
|
289
|
-
<
|
|
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>
|
|
316
|
-
</div>
|
|
866
|
+
<p data-lang="fr">Avant d'initialiser SmartStack, vous devez creer un repository sur votre plateforme Git.</p>
|
|
867
|
+
<p data-lang="en">Before initializing SmartStack, you need to create a repository on your Git platform.</p>
|
|
317
868
|
|
|
318
|
-
|
|
319
|
-
|
|
869
|
+
<div class="platform-content github-content active">
|
|
870
|
+
<ol style="margin: 1rem 0 1rem 1.5rem; color: var(--text-muted);">
|
|
871
|
+
<li data-lang="fr">Allez sur <a href="https://github.com/new" target="_blank">github.com/new</a></li>
|
|
872
|
+
<li data-lang="en">Go to <a href="https://github.com/new" target="_blank">github.com/new</a></li>
|
|
873
|
+
<li data-lang="fr">Nommez votre repository (ex: <code>MonProjet</code>)</li>
|
|
874
|
+
<li data-lang="en">Name your repository (e.g., <code>MyProject</code>)</li>
|
|
875
|
+
<li data-lang="fr">Laissez-le <strong>vide</strong> (pas de README, .gitignore, ou license)</li>
|
|
876
|
+
<li data-lang="en">Leave it <strong>empty</strong> (no README, .gitignore, or license)</li>
|
|
877
|
+
<li data-lang="fr">Cliquez sur "Create repository"</li>
|
|
878
|
+
<li data-lang="en">Click "Create repository"</li>
|
|
879
|
+
</ol>
|
|
880
|
+
</div>
|
|
320
881
|
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
882
|
+
<div class="platform-content azure-content">
|
|
883
|
+
<ol style="margin: 1rem 0 1rem 1.5rem; color: var(--text-muted);">
|
|
884
|
+
<li data-lang="fr">Allez dans votre projet Azure DevOps</li>
|
|
885
|
+
<li data-lang="en">Go to your Azure DevOps project</li>
|
|
886
|
+
<li data-lang="fr">Repos > "New repository"</li>
|
|
887
|
+
<li data-lang="en">Repos > "New repository"</li>
|
|
888
|
+
<li data-lang="fr">Nommez votre repository (ex: <code>MonProjet</code>)</li>
|
|
889
|
+
<li data-lang="en">Name your repository (e.g., <code>MyProject</code>)</li>
|
|
890
|
+
<li data-lang="fr">Decochez "Add a README"</li>
|
|
891
|
+
<li data-lang="en">Uncheck "Add a README"</li>
|
|
892
|
+
<li data-lang="fr">Cliquez sur "Create"</li>
|
|
893
|
+
<li data-lang="en">Click "Create"</li>
|
|
894
|
+
</ol>
|
|
895
|
+
</div>
|
|
325
896
|
|
|
326
|
-
|
|
327
|
-
|
|
897
|
+
<div class="tutorial-note">
|
|
898
|
+
<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>
|
|
899
|
+
<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>
|
|
900
|
+
</div>
|
|
328
901
|
</div>
|
|
329
902
|
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
<
|
|
333
|
-
<
|
|
334
|
-
<
|
|
335
|
-
<
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
903
|
+
<!-- Step B: Initialize GitFlow -->
|
|
904
|
+
<div class="tutorial-section">
|
|
905
|
+
<h4>
|
|
906
|
+
<span class="step-badge">B</span>
|
|
907
|
+
<span data-lang="fr">Initialiser GitFlow</span>
|
|
908
|
+
<span data-lang="en">Initialize GitFlow</span>
|
|
909
|
+
</h4>
|
|
910
|
+
|
|
911
|
+
<p data-lang="fr">Ouvrez Claude Code dans un dossier vide et lancez l'initialisation GitFlow :</p>
|
|
912
|
+
<p data-lang="en">Open Claude Code in an empty folder and launch GitFlow initialization:</p>
|
|
913
|
+
|
|
914
|
+
<div class="code-block">
|
|
915
|
+
<button class="copy-btn">Copy</button>
|
|
916
|
+
<pre><code># Dans Claude Code, tapez :
|
|
917
|
+
/gitflow:1-init</code></pre>
|
|
341
918
|
</div>
|
|
342
|
-
</div>
|
|
343
919
|
|
|
344
|
-
|
|
345
|
-
<
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
<
|
|
349
|
-
<
|
|
920
|
+
<p data-lang="fr" style="margin-top: 1rem;">L'assistant vous guidera pour :</p>
|
|
921
|
+
<p data-lang="en" style="margin-top: 1rem;">The assistant will guide you to:</p>
|
|
922
|
+
|
|
923
|
+
<ul style="margin: 0.5rem 0 1rem 1.5rem; color: var(--text-muted);">
|
|
924
|
+
<li data-lang="fr">Cloner votre repository</li>
|
|
925
|
+
<li data-lang="en">Clone your repository</li>
|
|
926
|
+
<li data-lang="fr">Configurer les branches (main, develop)</li>
|
|
927
|
+
<li data-lang="en">Configure branches (main, develop)</li>
|
|
928
|
+
<li data-lang="fr">Definir les conventions de versioning</li>
|
|
929
|
+
<li data-lang="en">Define versioning conventions</li>
|
|
930
|
+
</ul>
|
|
931
|
+
|
|
932
|
+
<div class="tutorial-note">
|
|
933
|
+
<p data-lang="fr"><strong>Conseil :</strong> Repondez aux questions de l'assistant. Il adaptera la configuration a vos besoins.</p>
|
|
934
|
+
<p data-lang="en"><strong>Tip:</strong> Answer the assistant's questions. It will adapt the configuration to your needs.</p>
|
|
350
935
|
</div>
|
|
351
936
|
</div>
|
|
352
|
-
</section>
|
|
353
937
|
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
938
|
+
<!-- Step C: Initialize SmartStack -->
|
|
939
|
+
<div class="tutorial-section">
|
|
940
|
+
<h4>
|
|
941
|
+
<span class="step-badge">C</span>
|
|
942
|
+
<span data-lang="fr">Installer les outils SmartStack</span>
|
|
943
|
+
<span data-lang="en">Install SmartStack tools</span>
|
|
944
|
+
</h4>
|
|
360
945
|
|
|
361
|
-
|
|
362
|
-
<
|
|
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>
|
|
946
|
+
<p data-lang="fr">Vous etes maintenant dans votre projet clone. Installez les outils SmartStack :</p>
|
|
947
|
+
<p data-lang="en">You are now in your cloned project. Install SmartStack tools:</p>
|
|
419
948
|
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
</h2>
|
|
949
|
+
<div class="code-block">
|
|
950
|
+
<button class="copy-btn">Copy</button>
|
|
951
|
+
<pre><code># Depuis la racine de votre projet clone
|
|
952
|
+
smartstack init .</code></pre>
|
|
953
|
+
</div>
|
|
426
954
|
|
|
427
|
-
|
|
428
|
-
|
|
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>
|
|
462
|
-
</div>
|
|
463
|
-
</section>
|
|
955
|
+
<p data-lang="fr" style="margin-top: 1rem;">Cette commande va :</p>
|
|
956
|
+
<p data-lang="en" style="margin-top: 1rem;">This command will:</p>
|
|
464
957
|
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
958
|
+
<ul style="margin: 0.5rem 0 1rem 1.5rem; color: var(--text-muted);">
|
|
959
|
+
<li data-lang="fr">Installer les skills et agents SmartStack</li>
|
|
960
|
+
<li data-lang="en">Install SmartStack skills and agents</li>
|
|
961
|
+
<li data-lang="fr">Configurer les hooks Claude Code</li>
|
|
962
|
+
<li data-lang="en">Configure Claude Code hooks</li>
|
|
963
|
+
<li data-lang="fr">Generer le fichier <code>CLAUDE.md</code> avec les regles du projet</li>
|
|
964
|
+
<li data-lang="en">Generate the <code>CLAUDE.md</code> file with project rules</li>
|
|
965
|
+
<li data-lang="fr">Generer cette documentation (<code>.documentation/</code>)</li>
|
|
966
|
+
<li data-lang="en">Generate this documentation (<code>.documentation/</code>)</li>
|
|
967
|
+
<li data-lang="fr">Verifier les serveurs MCP</li>
|
|
968
|
+
<li data-lang="en">Verify MCP servers</li>
|
|
969
|
+
</ul>
|
|
471
970
|
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
971
|
+
<div class="tutorial-note">
|
|
972
|
+
<p data-lang="fr"><strong>Nouveau projet .NET ?</strong> Si vous partez de zero et voulez creer la structure Clean Architecture, utilisez plutot <code>smartstack init MonProjet</code> avant l'etape A (sans creer de repo au prealable).</p>
|
|
973
|
+
<p data-lang="en"><strong>New .NET project?</strong> If you're starting from scratch and want to create the Clean Architecture structure, use <code>smartstack init MyProject</code> before step A (without creating a repo beforehand).</p>
|
|
974
|
+
</div>
|
|
975
|
+
</div>
|
|
476
976
|
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
977
|
+
<!-- Step D: Start working -->
|
|
978
|
+
<div class="tutorial-section" id="step-d">
|
|
979
|
+
<h4>
|
|
980
|
+
<span class="step-badge">D</span>
|
|
981
|
+
<span data-lang="fr">Commencer a travailler</span>
|
|
982
|
+
<span data-lang="en">Start working</span>
|
|
983
|
+
</h4>
|
|
481
984
|
|
|
482
|
-
|
|
483
|
-
|
|
985
|
+
<p data-lang="fr">Votre environnement est pret ! Le workflow GitFlow vous guide selon votre objectif :</p>
|
|
986
|
+
<p data-lang="en">Your environment is ready! The GitFlow workflow guides you based on your goal:</p>
|
|
484
987
|
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
988
|
+
<!-- Mini decision guide -->
|
|
989
|
+
<div style="display: flex; gap: 1rem; flex-wrap: wrap; margin: 1.5rem 0;">
|
|
990
|
+
<div style="flex: 1; min-width: 200px; padding: 1rem; background: rgba(34, 197, 94, 0.1); border: 1px solid #22c55e; border-radius: 8px;">
|
|
991
|
+
<div style="font-weight: 600; color: #22c55e; margin-bottom: 0.5rem;">
|
|
992
|
+
<span data-lang="fr">Nouvelle fonctionnalite</span>
|
|
993
|
+
<span data-lang="en">New feature</span>
|
|
994
|
+
</div>
|
|
995
|
+
<code style="font-size: 0.85rem;">/gitflow:10-start feature {nom}</code>
|
|
996
|
+
</div>
|
|
997
|
+
<div style="flex: 1; min-width: 200px; padding: 1rem; background: rgba(234, 179, 8, 0.1); border: 1px solid #eab308; border-radius: 8px;">
|
|
998
|
+
<div style="font-weight: 600; color: #eab308; margin-bottom: 0.5rem;">
|
|
999
|
+
<span data-lang="fr">Deployer en prod</span>
|
|
1000
|
+
<span data-lang="en">Deploy to prod</span>
|
|
1001
|
+
</div>
|
|
1002
|
+
<code style="font-size: 0.85rem;">/gitflow:10-start release</code>
|
|
1003
|
+
</div>
|
|
1004
|
+
<div style="flex: 1; min-width: 200px; padding: 1rem; background: rgba(236, 72, 153, 0.1); border: 1px solid #ec4899; border-radius: 8px;">
|
|
1005
|
+
<div style="font-weight: 600; color: #ec4899; margin-bottom: 0.5rem;">
|
|
1006
|
+
<span data-lang="fr">Bug urgent prod</span>
|
|
1007
|
+
<span data-lang="en">Urgent prod bug</span>
|
|
1008
|
+
</div>
|
|
1009
|
+
<code style="font-size: 0.85rem;">/gitflow:10-start hotfix {nom}</code>
|
|
1010
|
+
</div>
|
|
1011
|
+
</div>
|
|
489
1012
|
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
<h2>
|
|
493
|
-
<span data-lang="fr">Mise a jour</span>
|
|
494
|
-
<span data-lang="en">Update</span>
|
|
495
|
-
</h2>
|
|
1013
|
+
<p data-lang="fr" style="margin-top: 1rem;">Cycle de travail type :</p>
|
|
1014
|
+
<p data-lang="en" style="margin-top: 1rem;">Typical work cycle:</p>
|
|
496
1015
|
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
1016
|
+
<div class="code-block">
|
|
1017
|
+
<button class="copy-btn">Copy</button>
|
|
1018
|
+
<pre><code># 1. Demarrer une branche
|
|
1019
|
+
/gitflow:10-start feature ma-fonctionnalite
|
|
501
1020
|
|
|
502
|
-
#
|
|
503
|
-
|
|
504
|
-
</div>
|
|
505
|
-
</section>
|
|
1021
|
+
# 2. Coder... puis commiter regulierement
|
|
1022
|
+
/gitflow:3-commit
|
|
506
1023
|
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
<h2>
|
|
510
|
-
<span data-lang="fr">Resolution de problemes</span>
|
|
511
|
-
<span data-lang="en">Troubleshooting</span>
|
|
512
|
-
</h2>
|
|
1024
|
+
# 3. Creer une Pull Request quand c'est pret
|
|
1025
|
+
/gitflow:7-pull-request
|
|
513
1026
|
|
|
514
|
-
|
|
515
|
-
|
|
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>
|
|
1027
|
+
# 4. Finaliser apres le merge
|
|
1028
|
+
/gitflow:11-finish</code></pre>
|
|
525
1029
|
</div>
|
|
526
|
-
</div>
|
|
527
1030
|
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
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>
|
|
1031
|
+
<div class="alert alert-info" style="margin-top: 1rem;">
|
|
1032
|
+
<span class="alert-icon">📚</span>
|
|
1033
|
+
<div class="alert-content">
|
|
1034
|
+
<p data-lang="fr"><strong>Guide complet :</strong> Consultez le <a href="gitflow.html#workflow-decision" style="color: var(--primary);">schema decisonnel GitFlow</a> pour visualiser le workflow complet et choisir la bonne commande selon votre situation.</p>
|
|
1035
|
+
<p data-lang="en"><strong>Complete guide:</strong> See the <a href="gitflow.html#workflow-decision" style="color: var(--primary);">GitFlow decision diagram</a> to visualize the complete workflow and choose the right command for your situation.</p>
|
|
1036
|
+
</div>
|
|
539
1037
|
</div>
|
|
540
1038
|
</div>
|
|
1039
|
+
|
|
1040
|
+
<!-- Links to documentation -->
|
|
1041
|
+
<h4 style="margin-top: 2rem;">
|
|
1042
|
+
<span data-lang="fr">Documentation complementaire</span>
|
|
1043
|
+
<span data-lang="en">Additional documentation</span>
|
|
1044
|
+
</h4>
|
|
1045
|
+
|
|
1046
|
+
<div class="feature-grid">
|
|
1047
|
+
<a href="init.html" class="feature-item" style="text-decoration: none;">
|
|
1048
|
+
<span class="feature-icon">🚀</span>
|
|
1049
|
+
<span class="feature-text">
|
|
1050
|
+
<span data-lang="fr">Commande Init</span>
|
|
1051
|
+
<span data-lang="en">Init Command</span>
|
|
1052
|
+
</span>
|
|
1053
|
+
</a>
|
|
1054
|
+
<a href="gitflow.html" class="feature-item" style="text-decoration: none;">
|
|
1055
|
+
<span class="feature-icon">🔀</span>
|
|
1056
|
+
<span class="feature-text">
|
|
1057
|
+
<span data-lang="fr">Guide GitFlow</span>
|
|
1058
|
+
<span data-lang="en">GitFlow Guide</span>
|
|
1059
|
+
</span>
|
|
1060
|
+
</a>
|
|
1061
|
+
<a href="efcore.html" class="feature-item" style="text-decoration: none;">
|
|
1062
|
+
<span class="feature-icon">🗄</span>
|
|
1063
|
+
<span class="feature-text">
|
|
1064
|
+
<span data-lang="fr">Migrations EF Core</span>
|
|
1065
|
+
<span data-lang="en">EF Core Migrations</span>
|
|
1066
|
+
</span>
|
|
1067
|
+
</a>
|
|
1068
|
+
<a href="apex.html" class="feature-item" style="text-decoration: none;">
|
|
1069
|
+
<span class="feature-icon">🎯</span>
|
|
1070
|
+
<span class="feature-text">
|
|
1071
|
+
<span data-lang="fr">Methodologie APEX</span>
|
|
1072
|
+
<span data-lang="en">APEX Methodology</span>
|
|
1073
|
+
</span>
|
|
1074
|
+
</a>
|
|
1075
|
+
</div>
|
|
541
1076
|
</section>
|
|
1077
|
+
|
|
542
1078
|
</div>
|
|
543
1079
|
</main>
|
|
544
1080
|
</div>
|
|
@@ -549,5 +1085,193 @@ smartstack-cli update</code></pre>
|
|
|
549
1085
|
<div class="overlay"></div>
|
|
550
1086
|
|
|
551
1087
|
<script src="js/app.js"></script>
|
|
1088
|
+
<script>
|
|
1089
|
+
// Installation page specific scripts
|
|
1090
|
+
var STORAGE_KEY = 'smartstack-install-progress';
|
|
1091
|
+
var completedSteps = [];
|
|
1092
|
+
|
|
1093
|
+
// Initialize on page load
|
|
1094
|
+
document.addEventListener('DOMContentLoaded', function() {
|
|
1095
|
+
loadProgress();
|
|
1096
|
+
loadApiKey();
|
|
1097
|
+
loadPlatform();
|
|
1098
|
+
loadOS();
|
|
1099
|
+
updateProgressBar();
|
|
1100
|
+
});
|
|
1101
|
+
|
|
1102
|
+
// OS switching
|
|
1103
|
+
function setOS(os) {
|
|
1104
|
+
// Update buttons
|
|
1105
|
+
var buttons = document.querySelectorAll('.os-btn');
|
|
1106
|
+
buttons.forEach(function(btn) {
|
|
1107
|
+
btn.classList.remove('active');
|
|
1108
|
+
if (btn.dataset.os === os) {
|
|
1109
|
+
btn.classList.add('active');
|
|
1110
|
+
}
|
|
1111
|
+
});
|
|
1112
|
+
|
|
1113
|
+
// Update content visibility
|
|
1114
|
+
var windowsContent = document.querySelectorAll('.windows-content');
|
|
1115
|
+
var macosContent = document.querySelectorAll('.macos-content');
|
|
1116
|
+
var linuxContent = document.querySelectorAll('.linux-content');
|
|
1117
|
+
|
|
1118
|
+
windowsContent.forEach(function(el) {
|
|
1119
|
+
el.classList.toggle('active', os === 'windows');
|
|
1120
|
+
});
|
|
1121
|
+
macosContent.forEach(function(el) {
|
|
1122
|
+
el.classList.toggle('active', os === 'macos');
|
|
1123
|
+
});
|
|
1124
|
+
linuxContent.forEach(function(el) {
|
|
1125
|
+
el.classList.toggle('active', os === 'linux');
|
|
1126
|
+
});
|
|
1127
|
+
|
|
1128
|
+
// Save preference
|
|
1129
|
+
localStorage.setItem('smartstack-os', os);
|
|
1130
|
+
}
|
|
1131
|
+
|
|
1132
|
+
function loadOS() {
|
|
1133
|
+
// Try to detect OS
|
|
1134
|
+
var detectedOS = 'windows';
|
|
1135
|
+
var userAgent = navigator.userAgent.toLowerCase();
|
|
1136
|
+
if (userAgent.indexOf('mac') !== -1) {
|
|
1137
|
+
detectedOS = 'macos';
|
|
1138
|
+
} else if (userAgent.indexOf('linux') !== -1) {
|
|
1139
|
+
detectedOS = 'linux';
|
|
1140
|
+
}
|
|
1141
|
+
|
|
1142
|
+
var savedOS = localStorage.getItem('smartstack-os') || detectedOS;
|
|
1143
|
+
setOS(savedOS);
|
|
1144
|
+
}
|
|
1145
|
+
|
|
1146
|
+
// Platform switching
|
|
1147
|
+
function setPlatform(platform) {
|
|
1148
|
+
// Update buttons
|
|
1149
|
+
var buttons = document.querySelectorAll('.platform-btn');
|
|
1150
|
+
buttons.forEach(function(btn) {
|
|
1151
|
+
btn.classList.remove('active');
|
|
1152
|
+
if (btn.dataset.platform === platform) {
|
|
1153
|
+
btn.classList.add('active');
|
|
1154
|
+
}
|
|
1155
|
+
});
|
|
1156
|
+
|
|
1157
|
+
// Update content visibility
|
|
1158
|
+
var githubContent = document.querySelectorAll('.github-content');
|
|
1159
|
+
var azureContent = document.querySelectorAll('.azure-content');
|
|
1160
|
+
|
|
1161
|
+
githubContent.forEach(function(el) {
|
|
1162
|
+
el.classList.toggle('active', platform === 'github');
|
|
1163
|
+
});
|
|
1164
|
+
azureContent.forEach(function(el) {
|
|
1165
|
+
el.classList.toggle('active', platform === 'azure');
|
|
1166
|
+
});
|
|
1167
|
+
|
|
1168
|
+
// Save preference
|
|
1169
|
+
localStorage.setItem('smartstack-platform', platform);
|
|
1170
|
+
}
|
|
1171
|
+
|
|
1172
|
+
function loadPlatform() {
|
|
1173
|
+
var platform = localStorage.getItem('smartstack-platform') || 'github';
|
|
1174
|
+
setPlatform(platform);
|
|
1175
|
+
}
|
|
1176
|
+
|
|
1177
|
+
// Checklist management
|
|
1178
|
+
function toggleStep(stepNumber) {
|
|
1179
|
+
var index = completedSteps.indexOf(stepNumber);
|
|
1180
|
+
if (index === -1) {
|
|
1181
|
+
completedSteps.push(stepNumber);
|
|
1182
|
+
} else {
|
|
1183
|
+
completedSteps.splice(index, 1);
|
|
1184
|
+
}
|
|
1185
|
+
saveProgress();
|
|
1186
|
+
updateUI();
|
|
1187
|
+
}
|
|
1188
|
+
|
|
1189
|
+
function saveProgress() {
|
|
1190
|
+
localStorage.setItem(STORAGE_KEY, JSON.stringify(completedSteps));
|
|
1191
|
+
}
|
|
1192
|
+
|
|
1193
|
+
function loadProgress() {
|
|
1194
|
+
var saved = localStorage.getItem(STORAGE_KEY);
|
|
1195
|
+
if (saved) {
|
|
1196
|
+
try {
|
|
1197
|
+
completedSteps = JSON.parse(saved);
|
|
1198
|
+
} catch (e) {
|
|
1199
|
+
completedSteps = [];
|
|
1200
|
+
}
|
|
1201
|
+
}
|
|
1202
|
+
updateUI();
|
|
1203
|
+
}
|
|
1204
|
+
|
|
1205
|
+
function resetProgress() {
|
|
1206
|
+
completedSteps = [];
|
|
1207
|
+
saveProgress();
|
|
1208
|
+
updateUI();
|
|
1209
|
+
}
|
|
1210
|
+
|
|
1211
|
+
function updateUI() {
|
|
1212
|
+
var items = document.querySelectorAll('.checklist-item');
|
|
1213
|
+
items.forEach(function(item) {
|
|
1214
|
+
var step = parseInt(item.dataset.step);
|
|
1215
|
+
if (completedSteps.indexOf(step) !== -1) {
|
|
1216
|
+
item.classList.add('completed');
|
|
1217
|
+
} else {
|
|
1218
|
+
item.classList.remove('completed');
|
|
1219
|
+
}
|
|
1220
|
+
});
|
|
1221
|
+
updateProgressBar();
|
|
1222
|
+
}
|
|
1223
|
+
|
|
1224
|
+
function updateProgressBar() {
|
|
1225
|
+
var total = 7;
|
|
1226
|
+
var completed = completedSteps.length;
|
|
1227
|
+
var percentage = (completed / total) * 100;
|
|
1228
|
+
|
|
1229
|
+
var progressFill = document.getElementById('progress-fill');
|
|
1230
|
+
var progressCount = document.getElementById('progress-count');
|
|
1231
|
+
|
|
1232
|
+
if (progressFill) {
|
|
1233
|
+
progressFill.style.width = percentage + '%';
|
|
1234
|
+
}
|
|
1235
|
+
if (progressCount) {
|
|
1236
|
+
progressCount.textContent = completed + '/' + total;
|
|
1237
|
+
}
|
|
1238
|
+
}
|
|
1239
|
+
|
|
1240
|
+
// API Key management
|
|
1241
|
+
function saveApiKey() {
|
|
1242
|
+
var input = document.getElementById('context7-api-key');
|
|
1243
|
+
var apiKey = input.value.trim();
|
|
1244
|
+
|
|
1245
|
+
if (apiKey) {
|
|
1246
|
+
localStorage.setItem('context7-api-key', apiKey);
|
|
1247
|
+
updateContext7Command(apiKey);
|
|
1248
|
+
} else {
|
|
1249
|
+
localStorage.removeItem('context7-api-key');
|
|
1250
|
+
updateContext7Command('');
|
|
1251
|
+
}
|
|
1252
|
+
}
|
|
1253
|
+
|
|
1254
|
+
function loadApiKey() {
|
|
1255
|
+
var apiKey = localStorage.getItem('context7-api-key');
|
|
1256
|
+
if (apiKey) {
|
|
1257
|
+
var input = document.getElementById('context7-api-key');
|
|
1258
|
+
if (input) {
|
|
1259
|
+
input.value = apiKey;
|
|
1260
|
+
}
|
|
1261
|
+
updateContext7Command(apiKey);
|
|
1262
|
+
}
|
|
1263
|
+
}
|
|
1264
|
+
|
|
1265
|
+
function updateContext7Command(apiKey) {
|
|
1266
|
+
var commandEl = document.getElementById('context7-command');
|
|
1267
|
+
if (commandEl) {
|
|
1268
|
+
if (apiKey) {
|
|
1269
|
+
commandEl.textContent = '# Avec cle API\nclaude mcp add context7 -e CONTEXT7_API_KEY=' + apiKey + ' -- npx @upstash/context7-mcp';
|
|
1270
|
+
} else {
|
|
1271
|
+
commandEl.textContent = '# Sans cle API\nclaude mcp add context7 -- npx @upstash/context7-mcp';
|
|
1272
|
+
}
|
|
1273
|
+
}
|
|
1274
|
+
}
|
|
1275
|
+
</script>
|
|
552
1276
|
</body>
|
|
553
1277
|
</html>
|