@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.
- 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 +1 -1
- package/.documentation/hooks.html +1 -1
- package/.documentation/index.html +1 -1
- package/.documentation/init.html +3 -3
- package/.documentation/installation.html +1001 -352
- package/.documentation/ralph-loop.html +1 -1
- package/.documentation/test-web.html +1 -1
- package/README.md +88 -20
- 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 +69 -19
- 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 +30 -1
- package/templates/commands/efcore/db-reset.md +18 -6
- package/templates/commands/gitflow/OPTIMIZATIONS.md +206 -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 +234 -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
|
@@ -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
|
|
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.
|
|
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"
|
|
29
|
-
<option value="en"
|
|
341
|
+
<option value="fr">🇫🇷 FR</option>
|
|
342
|
+
<option value="en">🇬🇧 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
|
-
|
|
132
|
-
|
|
444
|
+
|
|
445
|
+
<!-- Introduction -->
|
|
446
|
+
<section id="introduction">
|
|
133
447
|
<h2>
|
|
134
|
-
<span data-lang="fr">
|
|
135
|
-
<span data-lang="en">
|
|
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
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
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="
|
|
154
|
-
<
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
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">🐙</span>
|
|
509
|
+
<span>GitHub</span>
|
|
510
|
+
</button>
|
|
511
|
+
<button class="platform-btn" data-platform="azure" onclick="setPlatform('azure')">
|
|
512
|
+
<span class="platform-icon">☁</span>
|
|
513
|
+
<span>Azure DevOps</span>
|
|
514
|
+
</button>
|
|
515
|
+
</div>
|
|
516
|
+
</div>
|
|
517
|
+
</div>
|
|
158
518
|
</div>
|
|
159
519
|
</section>
|
|
160
520
|
|
|
161
|
-
<!--
|
|
162
|
-
<section id="
|
|
163
|
-
<
|
|
164
|
-
<span data-lang="fr">
|
|
165
|
-
<span data-lang="en">
|
|
166
|
-
</
|
|
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
|
-
<
|
|
169
|
-
|
|
170
|
-
<
|
|
171
|
-
|
|
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
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
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
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
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
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
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
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
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
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
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
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
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
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
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
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
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
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
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
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
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
|
-
|
|
256
|
-
|
|
257
|
-
|
|
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
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
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">✅</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
|
-
<!--
|
|
275
|
-
<section id="
|
|
276
|
-
<
|
|
277
|
-
<span data-lang="fr">
|
|
278
|
-
<span data-lang="en">
|
|
279
|
-
</
|
|
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="
|
|
289
|
-
<
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
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">💡</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
|
-
|
|
319
|
-
<
|
|
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
|
-
|
|
322
|
-
<
|
|
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
|
-
|
|
327
|
-
|
|
328
|
-
|
|
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
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
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 > "New repository"</li>
|
|
855
|
+
<li data-lang="en">Repos > "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
|
-
|
|
345
|
-
|
|
346
|
-
|
|
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
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
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
|
-
|
|
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>
|
|
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
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
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
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
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
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
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
|
-
|
|
473
|
-
<
|
|
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
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
smartstack
|
|
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
|
-
#
|
|
483
|
-
smartstack
|
|
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
|
-
|
|
486
|
-
|
|
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
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
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
|
-
|
|
498
|
-
<
|
|
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
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
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
|
-
|
|
508
|
-
|
|
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
|
-
|
|
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>
|
|
960
|
+
# Finaliser la feature
|
|
961
|
+
/gitflow:11-finish</code></pre>
|
|
525
962
|
</div>
|
|
526
963
|
</div>
|
|
527
964
|
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
<
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
<
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
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">🚀</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">🔀</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">🗄</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">🎯</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>
|