leadcode 0.2.2 → 1.1.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/README.md +52 -47
- package/dist/analyzers/detection.d.ts.map +1 -1
- package/dist/analyzers/detection.js +30 -0
- package/dist/analyzers/detection.js.map +1 -1
- package/dist/context7/client.d.ts +17 -0
- package/dist/context7/client.d.ts.map +1 -0
- package/dist/context7/client.js +82 -0
- package/dist/context7/client.js.map +1 -0
- package/dist/context7/fetch-all.d.ts +13 -0
- package/dist/context7/fetch-all.d.ts.map +1 -0
- package/dist/context7/fetch-all.js +104 -0
- package/dist/context7/fetch-all.js.map +1 -0
- package/dist/context7/index.d.ts +7 -0
- package/dist/context7/index.d.ts.map +1 -0
- package/dist/context7/index.js +4 -0
- package/dist/context7/index.js.map +1 -0
- package/dist/context7/queries.d.ts +11 -0
- package/dist/context7/queries.d.ts.map +1 -0
- package/dist/context7/queries.js +229 -0
- package/dist/context7/queries.js.map +1 -0
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +1 -242
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/fr.d.ts.map +1 -1
- package/dist/i18n/fr.js +19 -260
- package/dist/i18n/fr.js.map +1 -1
- package/dist/i18n/types.d.ts +0 -232
- package/dist/i18n/types.d.ts.map +1 -1
- package/dist/index.js +11 -19
- package/dist/index.js.map +1 -1
- package/dist/templates/claude-md.d.ts +3 -2
- package/dist/templates/claude-md.d.ts.map +1 -1
- package/dist/templates/claude-md.js +92 -67
- package/dist/templates/claude-md.js.map +1 -1
- package/dist/tools/fetch-docs.d.ts +3 -0
- package/dist/tools/fetch-docs.d.ts.map +1 -0
- package/dist/tools/fetch-docs.js +39 -0
- package/dist/tools/fetch-docs.js.map +1 -0
- package/dist/tools/generate-claude-md.d.ts.map +1 -1
- package/dist/tools/generate-claude-md.js +10 -11
- package/dist/tools/generate-claude-md.js.map +1 -1
- package/dist/tools/update-claude-md.d.ts.map +1 -1
- package/dist/tools/update-claude-md.js +9 -11
- package/dist/tools/update-claude-md.js.map +1 -1
- package/dist/tools/validate-claude-md.d.ts.map +1 -1
- package/dist/tools/validate-claude-md.js +10 -48
- package/dist/tools/validate-claude-md.js.map +1 -1
- package/dist/types.d.ts +0 -43
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/rules/auth.d.ts +0 -3
- package/dist/rules/auth.d.ts.map +0 -1
- package/dist/rules/auth.js +0 -48
- package/dist/rules/auth.js.map +0 -1
- package/dist/rules/cross-stack.d.ts +0 -3
- package/dist/rules/cross-stack.d.ts.map +0 -1
- package/dist/rules/cross-stack.js +0 -320
- package/dist/rules/cross-stack.js.map +0 -1
- package/dist/rules/drizzle.d.ts +0 -3
- package/dist/rules/drizzle.d.ts.map +0 -1
- package/dist/rules/drizzle.js +0 -43
- package/dist/rules/drizzle.js.map +0 -1
- package/dist/rules/index.d.ts +0 -7
- package/dist/rules/index.d.ts.map +0 -1
- package/dist/rules/index.js +0 -104
- package/dist/rules/index.js.map +0 -1
- package/dist/rules/nextjs.d.ts +0 -4
- package/dist/rules/nextjs.d.ts.map +0 -1
- package/dist/rules/nextjs.js +0 -86
- package/dist/rules/nextjs.js.map +0 -1
- package/dist/rules/node.d.ts +0 -3
- package/dist/rules/node.d.ts.map +0 -1
- package/dist/rules/node.js +0 -61
- package/dist/rules/node.js.map +0 -1
- package/dist/rules/prisma.d.ts +0 -3
- package/dist/rules/prisma.d.ts.map +0 -1
- package/dist/rules/prisma.js +0 -44
- package/dist/rules/prisma.js.map +0 -1
- package/dist/rules/react.d.ts +0 -3
- package/dist/rules/react.d.ts.map +0 -1
- package/dist/rules/react.js +0 -58
- package/dist/rules/react.js.map +0 -1
- package/dist/rules/state.d.ts +0 -3
- package/dist/rules/state.d.ts.map +0 -1
- package/dist/rules/state.js +0 -51
- package/dist/rules/state.js.map +0 -1
- package/dist/rules/tailwind.d.ts +0 -3
- package/dist/rules/tailwind.d.ts.map +0 -1
- package/dist/rules/tailwind.js +0 -41
- package/dist/rules/tailwind.js.map +0 -1
- package/dist/rules/trpc.d.ts +0 -3
- package/dist/rules/trpc.d.ts.map +0 -1
- package/dist/rules/trpc.js +0 -35
- package/dist/rules/trpc.js.map +0 -1
- package/dist/rules/typescript.d.ts +0 -3
- package/dist/rules/typescript.d.ts.map +0 -1
- package/dist/rules/typescript.js +0 -54
- package/dist/rules/typescript.js.map +0 -1
- package/dist/rules/validation.d.ts +0 -3
- package/dist/rules/validation.d.ts.map +0 -1
- package/dist/rules/validation.js +0 -38
- package/dist/rules/validation.js.map +0 -1
- package/dist/tools/detect-gaps.d.ts +0 -3
- package/dist/tools/detect-gaps.d.ts.map +0 -1
- package/dist/tools/detect-gaps.js +0 -34
- package/dist/tools/detect-gaps.js.map +0 -1
- package/dist/tools/suggest.d.ts +0 -3
- package/dist/tools/suggest.d.ts.map +0 -1
- package/dist/tools/suggest.js +0 -99
- package/dist/tools/suggest.js.map +0 -1
package/dist/i18n/fr.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export const fr = {
|
|
2
2
|
templates: {
|
|
3
3
|
header: {
|
|
4
|
-
title: "{name} — Règles du
|
|
5
|
-
meta1: "Généré automatiquement par [LeadCode](https://github.com/Julxoo/LeadCode). Ce fichier est la source de vérité pour Claude Code.",
|
|
4
|
+
title: "{name} — Règles du Projet",
|
|
5
|
+
meta1: "Généré automatiquement par [LeadCode](https://github.com/Julxoo/LeadCode) avec la documentation de [Context7](https://context7.com). Ce fichier est la source de vérité pour Claude Code.",
|
|
6
6
|
meta2: "Modifiez selon vos besoins, puis committez dans le contrôle de version.",
|
|
7
7
|
},
|
|
8
8
|
sections: {
|
|
@@ -12,9 +12,6 @@ export const fr = {
|
|
|
12
12
|
availableScripts: "Scripts disponibles",
|
|
13
13
|
fileNaming: "Conventions de nommage",
|
|
14
14
|
importOrdering: "Ordre des imports",
|
|
15
|
-
conventions: "Conventions (À SUIVRE impérativement)",
|
|
16
|
-
crossStackRules: "Règles cross-stack (CRITIQUE)",
|
|
17
|
-
interdictions: "Interdictions (JAMAIS faire)",
|
|
18
15
|
projectDecisions: "Décisions du projet",
|
|
19
16
|
existingPatterns: "Patterns existants",
|
|
20
17
|
claudeInstructions: "Instructions pour Claude Code",
|
|
@@ -25,7 +22,7 @@ export const fr = {
|
|
|
25
22
|
frontend: "Frontend",
|
|
26
23
|
reactSpaVite: "SPA React avec Vite",
|
|
27
24
|
framework: "Framework",
|
|
28
|
-
dataLayer: "Couche
|
|
25
|
+
dataLayer: "Couche données",
|
|
29
26
|
database: "Base de données",
|
|
30
27
|
authentication: "Authentification",
|
|
31
28
|
api: "API",
|
|
@@ -63,7 +60,7 @@ export const fr = {
|
|
|
63
60
|
realtime: "Temps réel",
|
|
64
61
|
cms: "CMS/Contenu",
|
|
65
62
|
fileUpload: "Upload de fichiers",
|
|
66
|
-
jobs: "Jobs/
|
|
63
|
+
jobs: "Jobs/Queue",
|
|
67
64
|
monorepo: "Monorepo",
|
|
68
65
|
deployment: "Déploiement",
|
|
69
66
|
linter: "Linter",
|
|
@@ -88,11 +85,11 @@ export const fr = {
|
|
|
88
85
|
prismaSchema: "Schéma Prisma : `prisma/schema.prisma`",
|
|
89
86
|
},
|
|
90
87
|
naming: {
|
|
91
|
-
files: "**Fichiers** : kebab-case (ex
|
|
92
|
-
reactComponents: "**Composants React** : PascalCase
|
|
93
|
-
hooks: "**Hooks** : camelCase préfixé par `use` (ex
|
|
88
|
+
files: "**Fichiers** : kebab-case (ex : `user-profile.ts`, `auth-utils.ts`)",
|
|
89
|
+
reactComponents: "**Composants React** : PascalCase correspondant au nom du composant (ex : `UserProfile.tsx` exporte `UserProfile`)",
|
|
90
|
+
hooks: "**Hooks** : camelCase préfixé par `use` (ex : `useAuth.ts`)",
|
|
94
91
|
constants: "**Constantes/config** : SCREAMING_SNAKE_CASE pour les valeurs, kebab-case pour les fichiers",
|
|
95
|
-
newFilesSrc: "**Nouveaux fichiers** : Placer dans `src/` en
|
|
92
|
+
newFilesSrc: "**Nouveaux fichiers** : Placer dans `src/` en suivant la structure existante",
|
|
96
93
|
},
|
|
97
94
|
importOrder: [
|
|
98
95
|
"1. Builtins Node.js (node:fs, node:path)",
|
|
@@ -103,268 +100,30 @@ export const fr = {
|
|
|
103
100
|
],
|
|
104
101
|
instructions: {
|
|
105
102
|
followAll: "Suivre TOUTES les règles de ce document sans exception.",
|
|
106
|
-
respectStructure: "Lors de la création de
|
|
107
|
-
checkPrecedent: "En cas de doute sur un pattern, vérifier le code existant avant d'
|
|
108
|
-
neverNewDeps: "Ne jamais
|
|
109
|
-
smallChanges: "Préférer
|
|
110
|
-
serverComponents: "
|
|
103
|
+
respectStructure: "Lors de la création de fichiers, respecter la structure existante et les conventions de nommage.",
|
|
104
|
+
checkPrecedent: "En cas de doute sur un pattern, vérifier le code existant avant d'inventer de nouveaux patterns.",
|
|
105
|
+
neverNewDeps: "Ne jamais introduire de nouvelles dépendances sans demande explicite.",
|
|
106
|
+
smallChanges: "Préférer les changements petits et ciblés aux gros refactorings.",
|
|
107
|
+
serverComponents: "Utiliser les Server Components par défaut. N'ajouter 'use client' que si le composant a besoin d'interactivité.",
|
|
111
108
|
appRouterPages: "Placer les nouvelles pages dans app/ en suivant la structure de routes existante.",
|
|
112
109
|
serverActions: "Utiliser les Server Actions pour les mutations, les Route Handlers pour les endpoints API.",
|
|
113
110
|
prismaAfterChange: "Après modification de schema.prisma, toujours exécuter `npx prisma migrate dev` et `npx prisma generate`.",
|
|
114
111
|
drizzleAfterChange: "Après modification des schémas Drizzle, exécuter `npx drizzle-kit generate` pour créer les migrations.",
|
|
115
|
-
zodValidate: "Valider toutes les entrées aux frontières API avec Zod. Parser, pas valider.",
|
|
112
|
+
zodValidate: "Valider toutes les entrées aux frontières API avec Zod. Parser, ne pas valider.",
|
|
116
113
|
tailwindClasses: "Utiliser les classes utilitaires Tailwind pour le style. Utiliser cn() pour les classes conditionnelles.",
|
|
117
114
|
shadcnComponents: "Utiliser les composants shadcn/ui de components/ui/ comme briques de base.",
|
|
118
|
-
runTests: "Lancer les tests avec {testing} avant de considérer le travail terminé.",
|
|
119
|
-
runLinter: "Lancer {linter} avant de
|
|
115
|
+
runTests: "Lancer les tests avec {testing} avant de considérer le travail comme terminé.",
|
|
116
|
+
runLinter: "Lancer {linter} avant de commiter. Corriger tous les warnings.",
|
|
120
117
|
i18nStrings: "Toutes les chaînes visibles par l'utilisateur doivent passer par le système i18n. Ne jamais coder en dur.",
|
|
121
118
|
},
|
|
122
119
|
patterns: {
|
|
123
|
-
clientServerRatio: "**Ratio Client/Serveur** : {clientCount} composants client sur {totalCount}
|
|
120
|
+
clientServerRatio: "**Ratio Client/Serveur** : {clientCount} composants client sur {totalCount} total ({clientPercent}% client)",
|
|
124
121
|
serverActions: "**Server Actions** : {count} fichiers avec 'use server'",
|
|
125
122
|
pathAliases: "**Alias de chemins** : Le projet utilise les imports @/ ou ~/ — continuer à les utiliser",
|
|
126
|
-
barrelFiles: "**Fichiers barrel** : Le projet utilise
|
|
127
|
-
largeFiles: "**
|
|
123
|
+
barrelFiles: "**Fichiers barrel** : Le projet utilise des re-exports index.ts — suivre ce pattern",
|
|
124
|
+
largeFiles: "**Gros fichiers** (>300 lignes) : {count} fichier(s) — envisager de découper",
|
|
128
125
|
consoleLogs: "**Console.log** : {count} occurrences trouvées — nettoyer avant la production",
|
|
129
126
|
},
|
|
130
127
|
},
|
|
131
|
-
suggestions: {
|
|
132
|
-
testing: {
|
|
133
|
-
topic: "Stratégie de tests",
|
|
134
|
-
simple: {
|
|
135
|
-
description: "Ajouter Vitest pour les tests unitaires uniquement",
|
|
136
|
-
pros: ["Mise en place rapide", "Léger", "Excellente DX"],
|
|
137
|
-
cons: ["Pas de couverture E2E"],
|
|
138
|
-
claudeImpact: "Claude générera des tests unitaires à côté des nouvelles fonctions quand on le demande.",
|
|
139
|
-
},
|
|
140
|
-
clean: {
|
|
141
|
-
description: "Vitest + Testing Library pour les tests de composants",
|
|
142
|
-
pros: ["Couverture unitaire + composants", "Teste le comportement utilisateur"],
|
|
143
|
-
cons: ["Plus de configuration", "Tests de composants plus lents"],
|
|
144
|
-
claudeImpact: "Claude générera des tests unitaires et de composants avec les bons patterns render/assert.",
|
|
145
|
-
},
|
|
146
|
-
scalable: {
|
|
147
|
-
description: "Vitest + Testing Library + Playwright pour le E2E",
|
|
148
|
-
pros: ["Pyramide de tests complète", "Détecte les bugs d'intégration"],
|
|
149
|
-
cons: ["Configuration conséquente", "CI plus lente"],
|
|
150
|
-
claudeImpact: "Claude générera des tests à tous les niveaux en respectant la pyramide de tests.",
|
|
151
|
-
},
|
|
152
|
-
},
|
|
153
|
-
inputValidation: {
|
|
154
|
-
topic: "Validation des entrées",
|
|
155
|
-
simple: {
|
|
156
|
-
description: "Ajouter Zod pour la validation manuelle dans les routes API",
|
|
157
|
-
pros: ["Minimal", "Natif TypeScript"],
|
|
158
|
-
cons: ["Il faut penser à valider chaque route"],
|
|
159
|
-
claudeImpact: "Claude ajoutera z.object().parse() dans les routes API quand on le rappelle.",
|
|
160
|
-
},
|
|
161
|
-
clean: {
|
|
162
|
-
description: "Zod avec un dossier de schémas partagés et un middleware",
|
|
163
|
-
pros: ["Schémas DRY", "Validation cohérente"],
|
|
164
|
-
cons: ["Plus de structure au départ"],
|
|
165
|
-
claudeImpact: "Claude importera les schémas partagés et validera automatiquement dans chaque route.",
|
|
166
|
-
},
|
|
167
|
-
},
|
|
168
|
-
errorHandling: {
|
|
169
|
-
topic: "Gestion des erreurs",
|
|
170
|
-
simple: {
|
|
171
|
-
description: "Ajouter error.tsx dans chaque segment de route",
|
|
172
|
-
pros: ["Rapide", "Suit les conventions Next.js"],
|
|
173
|
-
cons: ["Pas de logging structuré des erreurs"],
|
|
174
|
-
claudeImpact: "Claude créera des fichiers error.tsx et gérera les erreurs proprement.",
|
|
175
|
-
},
|
|
176
|
-
clean: {
|
|
177
|
-
description: "Error boundaries + utilitaires d'erreur centralisés + logging structuré",
|
|
178
|
-
pros: ["Format d'erreur cohérent", "Débugable"],
|
|
179
|
-
cons: ["Plus de mise en place"],
|
|
180
|
-
claudeImpact: "Claude utilisera les utilitaires d'erreur de manière cohérente et produira des réponses d'erreur débugables.",
|
|
181
|
-
},
|
|
182
|
-
},
|
|
183
|
-
schemaOrg: {
|
|
184
|
-
topic: "Organisation des schémas",
|
|
185
|
-
simple: {
|
|
186
|
-
description: "Co-localiser les schémas à côté de leurs routes API",
|
|
187
|
-
pros: ["Facile à trouver", "Pas d'indirection"],
|
|
188
|
-
cons: ["Les schémas se dupliquent entre les routes"],
|
|
189
|
-
claudeImpact: "Claude dupliquera les schémas quand les mêmes données sont utilisées dans plusieurs routes.",
|
|
190
|
-
},
|
|
191
|
-
clean: {
|
|
192
|
-
description: "Dossier partagé /lib/schemas/",
|
|
193
|
-
pros: ["Source unique de vérité", "DRY"],
|
|
194
|
-
cons: ["Un dossier de plus à gérer"],
|
|
195
|
-
claudeImpact: "Claude trouvera et réutilisera les schémas de manière cohérente entre les routes et les formulaires.",
|
|
196
|
-
},
|
|
197
|
-
},
|
|
198
|
-
componentStructure: {
|
|
199
|
-
topic: "Organisation des composants",
|
|
200
|
-
simple: {
|
|
201
|
-
description: "Dossier /components à plat",
|
|
202
|
-
pros: ["Simple", "Fonctionne pour les petits projets"],
|
|
203
|
-
cons: ["Devient le bazar à l'échelle"],
|
|
204
|
-
claudeImpact: "Claude placera tous les composants dans un seul dossier.",
|
|
205
|
-
},
|
|
206
|
-
clean: {
|
|
207
|
-
description: "Organisation par feature : /components/ui/ + /components/[feature]/",
|
|
208
|
-
pros: ["Passe à l'échelle", "Propriété claire"],
|
|
209
|
-
cons: ["Plus de dossiers"],
|
|
210
|
-
claudeImpact: "Claude organisera les composants par feature et réutilisera les primitives UI.",
|
|
211
|
-
},
|
|
212
|
-
},
|
|
213
|
-
authMiddleware: {
|
|
214
|
-
topic: "Protection des routes",
|
|
215
|
-
simple: {
|
|
216
|
-
description: "Vérifier l'auth dans chaque Server Component/route handler",
|
|
217
|
-
pros: ["Explicite", "Facile à comprendre"],
|
|
218
|
-
cons: ["Facile d'oublier sur les nouvelles routes"],
|
|
219
|
-
claudeImpact: "Claude risque d'oublier les checks d'auth sur les nouvelles routes si on ne le rappelle pas.",
|
|
220
|
-
},
|
|
221
|
-
clean: {
|
|
222
|
-
description: "middleware.ts avec route matcher + vérifications par route en backup",
|
|
223
|
-
pros: ["Centralisé", "Défense en profondeur"],
|
|
224
|
-
cons: ["Le middleware peut être difficile à débuguer"],
|
|
225
|
-
claudeImpact: "Claude ajoutera les routes au matcher protégé et conservera les vérifications côté serveur.",
|
|
226
|
-
},
|
|
227
|
-
},
|
|
228
|
-
loadingStates: {
|
|
229
|
-
topic: "États de chargement",
|
|
230
|
-
simple: {
|
|
231
|
-
description: "Ajouter un seul loading.tsx à la racine de app/",
|
|
232
|
-
pros: ["Rapide", "Couvre toutes les routes"],
|
|
233
|
-
cons: ["Même UI de chargement partout"],
|
|
234
|
-
claudeImpact: "Claude verra le pattern et créera des loading.tsx pour les nouveaux segments de route.",
|
|
235
|
-
},
|
|
236
|
-
clean: {
|
|
237
|
-
description: "loading.tsx par segment avec des skeleton UIs adaptées à chaque page",
|
|
238
|
-
pros: ["Meilleure UX", "Skeletons adaptés au layout"],
|
|
239
|
-
cons: ["Plus de fichiers à maintenir"],
|
|
240
|
-
claudeImpact: "Claude créera des skeleton UIs correspondant à chaque nouveau segment de route.",
|
|
241
|
-
},
|
|
242
|
-
},
|
|
243
|
-
metadata: {
|
|
244
|
-
topic: "SEO & Métadonnées",
|
|
245
|
-
simple: {
|
|
246
|
-
description: "Export statique des métadonnées dans chaque page.tsx",
|
|
247
|
-
pros: ["Simple", "Couvre le SEO de base"],
|
|
248
|
-
cons: ["Pas de métadonnées dynamiques pour les routes dynamiques"],
|
|
249
|
-
claudeImpact: "Claude ajoutera export const metadata aux nouvelles pages.",
|
|
250
|
-
},
|
|
251
|
-
clean: {
|
|
252
|
-
description: "generateMetadata pour les pages dynamiques + métadonnées statiques pour le reste",
|
|
253
|
-
pros: ["Titre/description dynamique par route", "Contrôle SEO complet"],
|
|
254
|
-
cons: ["Plus de boilerplate par page"],
|
|
255
|
-
claudeImpact: "Claude générera les fonctions generateMetadata avec les données dynamiques.",
|
|
256
|
-
},
|
|
257
|
-
},
|
|
258
|
-
prismaClient: {
|
|
259
|
-
topic: "Singleton Prisma Client",
|
|
260
|
-
simple: {
|
|
261
|
-
description: "Pattern globalThis dans lib/prisma.ts",
|
|
262
|
-
pros: ["Approche standard", "Évite les fuites de hot-reload"],
|
|
263
|
-
cons: ["Nécessite de la discipline pour toujours importer depuis ce fichier"],
|
|
264
|
-
claudeImpact: "Claude importera depuis lib/prisma.ts de manière cohérente.",
|
|
265
|
-
},
|
|
266
|
-
},
|
|
267
|
-
authSession: {
|
|
268
|
-
topic: "Utilitaire d'authentification",
|
|
269
|
-
simple: {
|
|
270
|
-
description: "Créer lib/auth.ts avec une fonction getCurrentUser()",
|
|
271
|
-
pros: ["Centralisé", "Facile à utiliser"],
|
|
272
|
-
cons: ["Il faut penser à l'utiliser"],
|
|
273
|
-
claudeImpact: "Claude appellera getCurrentUser() dans les Server Components et Route Handlers.",
|
|
274
|
-
},
|
|
275
|
-
clean: {
|
|
276
|
-
description: "lib/auth.ts avec getCurrentUser() + requireAuth() qui throw si pas de session",
|
|
277
|
-
pros: ["Sécurisé par défaut", "Intention claire"],
|
|
278
|
-
cons: ["Un peu plus de code"],
|
|
279
|
-
claudeImpact: "Claude utilisera requireAuth() en haut des routes protégées automatiquement.",
|
|
280
|
-
},
|
|
281
|
-
},
|
|
282
|
-
envValidation: {
|
|
283
|
-
topic: "Validation des variables d'environnement",
|
|
284
|
-
simple: {
|
|
285
|
-
description: "Validation manuelle avec Zod dans env.ts",
|
|
286
|
-
pros: ["Pas de dépendance supplémentaire", "Contrôle total"],
|
|
287
|
-
cons: ["Maintenance manuelle"],
|
|
288
|
-
claudeImpact: "Claude importera les variables d'env depuis env.ts et n'utilisera jamais process.env directement.",
|
|
289
|
-
},
|
|
290
|
-
clean: {
|
|
291
|
-
description: "Utiliser @t3-oss/env-nextjs pour un env typé avec séparation client/serveur",
|
|
292
|
-
pros: ["Typé", "Séparation client/serveur forcée"],
|
|
293
|
-
cons: ["Dépendance supplémentaire"],
|
|
294
|
-
claudeImpact: "Claude importera depuis env.mjs et respectera les frontières client/serveur.",
|
|
295
|
-
},
|
|
296
|
-
},
|
|
297
|
-
typesDir: {
|
|
298
|
-
topic: "Organisation des types partagés",
|
|
299
|
-
simple: {
|
|
300
|
-
description: "Créer un dossier types/ avec des fichiers de types par domaine",
|
|
301
|
-
pros: ["Emplacement clair pour les types partagés"],
|
|
302
|
-
cons: ["Un dossier de plus"],
|
|
303
|
-
claudeImpact: "Claude placera les types partagés dans types/ et importera depuis ce dossier.",
|
|
304
|
-
},
|
|
305
|
-
},
|
|
306
|
-
storeOrg: {
|
|
307
|
-
topic: "Organisation des stores",
|
|
308
|
-
simple: {
|
|
309
|
-
description: "Créer un dossier store/ avec un fichier par store",
|
|
310
|
-
pros: ["Simple", "Facile à trouver"],
|
|
311
|
-
cons: ["Structure à plat"],
|
|
312
|
-
claudeImpact: "Claude créera les stores dans store/ avec un nommage clair.",
|
|
313
|
-
},
|
|
314
|
-
},
|
|
315
|
-
drizzleSchema: {
|
|
316
|
-
topic: "Organisation des schémas Drizzle",
|
|
317
|
-
simple: {
|
|
318
|
-
description: "Tous les schémas dans db/schema.ts",
|
|
319
|
-
pros: ["Simple pour les petits projets"],
|
|
320
|
-
cons: ["Grossit vite"],
|
|
321
|
-
claudeImpact: "Claude ajoutera les nouvelles tables dans le fichier de schéma unique.",
|
|
322
|
-
},
|
|
323
|
-
clean: {
|
|
324
|
-
description: "Dossier db/schema/ avec un fichier par entité + barrel index.ts",
|
|
325
|
-
pros: ["Passe à l'échelle", "Facile à trouver"],
|
|
326
|
-
cons: ["Plus de fichiers"],
|
|
327
|
-
claudeImpact: "Claude créera de nouveaux fichiers de schéma par entité et les exportera depuis index.ts.",
|
|
328
|
-
},
|
|
329
|
-
},
|
|
330
|
-
genericFix: "Corriger : {message}",
|
|
331
|
-
genericPros: ["Corrige le problème"],
|
|
332
|
-
genericCons: ["Peut nécessiter des ajustements"],
|
|
333
|
-
genericClaudeImpact: "Claude suivra la convention une fois documentée dans le CLAUDE.md.",
|
|
334
|
-
},
|
|
335
|
-
validation: {
|
|
336
|
-
noClaudeMd: "Aucun CLAUDE.md trouvé à {path}. Utilisez generate-claude-md d'abord.",
|
|
337
|
-
frameworkVersionOutdated: "La version {version} du framework n'est pas dans le CLAUDE.md. La version a peut-être été mise à jour.",
|
|
338
|
-
techMissing: "{label} : {value} est dans le projet mais pas mentionné dans le CLAUDE.md.",
|
|
339
|
-
conventionMissing: "La convention « {description} » est applicable mais absente du CLAUDE.md.",
|
|
340
|
-
crossStackMissing: "La règle cross-stack pour {combo} est applicable mais absente du CLAUDE.md.",
|
|
341
|
-
gapStillExists: "Un gap de haute sévérité persiste : {message}",
|
|
342
|
-
inSync: "Le CLAUDE.md est synchronisé avec le projet.",
|
|
343
|
-
driftsFound: "{count} décalage(s) trouvé(s). Envisagez de lancer generate-claude-md pour mettre à jour.",
|
|
344
|
-
},
|
|
345
|
-
tools: {
|
|
346
|
-
generateSuccess: "CLAUDE.md généré avec succès",
|
|
347
|
-
updateSuccess: "CLAUDE.md mis à jour avec succès",
|
|
348
|
-
dirNotFound: "Dossier du projet introuvable : {path}",
|
|
349
|
-
},
|
|
350
|
-
prompts: {
|
|
351
|
-
setupTitle: "Workflow complet LeadCode : analyser le repo → détecter les manques → proposer des conventions → générer le CLAUDE.md",
|
|
352
|
-
setupSteps: [
|
|
353
|
-
"1. Lance analyze-repo pour scanner le projet et obtenir une analyse technique complète.",
|
|
354
|
-
"2. Lance detect-gaps pour identifier les manques structurels.",
|
|
355
|
-
"3. Lance suggest-conventions pour proposer des améliorations.",
|
|
356
|
-
"4. Présente un résumé clair : ce qui est détecté, ce qui manque, et les options disponibles.",
|
|
357
|
-
"5. Demande-moi mes préférences pour chaque point (simple / clean / scalable).",
|
|
358
|
-
"6. Une fois mes choix faits, lance generate-claude-md pour créer le CLAUDE.md.",
|
|
359
|
-
"",
|
|
360
|
-
"Explique chaque étape simplement et clairement.",
|
|
361
|
-
],
|
|
362
|
-
validateTitle: "Vérifier si le CLAUDE.md est encore synchronisé avec le projet",
|
|
363
|
-
validateSteps: [
|
|
364
|
-
"1. Lance validate-claude-md pour vérifier les décalages entre le CLAUDE.md et l'état réel du projet.",
|
|
365
|
-
"2. Présente les décalages trouvés avec des explications claires.",
|
|
366
|
-
"3. Si des décalages existent, suggère s'il faut régénérer ou corriger manuellement le CLAUDE.md.",
|
|
367
|
-
],
|
|
368
|
-
},
|
|
369
128
|
};
|
|
370
129
|
//# sourceMappingURL=fr.js.map
|
package/dist/i18n/fr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fr.js","sourceRoot":"","sources":["../../src/i18n/fr.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,EAAE,GAAa;IAC1B,SAAS,EAAE;QACT,MAAM,EAAE;YACN,KAAK,EAAE,2BAA2B;YAClC,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"fr.js","sourceRoot":"","sources":["../../src/i18n/fr.ts"],"names":[],"mappings":"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"}
|
package/dist/i18n/types.d.ts
CHANGED
|
@@ -1,208 +1,4 @@
|
|
|
1
1
|
export type Locale = "en" | "fr";
|
|
2
|
-
export interface SuggestionMessages {
|
|
3
|
-
testing: {
|
|
4
|
-
topic: string;
|
|
5
|
-
simple: {
|
|
6
|
-
description: string;
|
|
7
|
-
pros: string[];
|
|
8
|
-
cons: string[];
|
|
9
|
-
claudeImpact: string;
|
|
10
|
-
};
|
|
11
|
-
clean: {
|
|
12
|
-
description: string;
|
|
13
|
-
pros: string[];
|
|
14
|
-
cons: string[];
|
|
15
|
-
claudeImpact: string;
|
|
16
|
-
};
|
|
17
|
-
scalable: {
|
|
18
|
-
description: string;
|
|
19
|
-
pros: string[];
|
|
20
|
-
cons: string[];
|
|
21
|
-
claudeImpact: string;
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
inputValidation: {
|
|
25
|
-
topic: string;
|
|
26
|
-
simple: {
|
|
27
|
-
description: string;
|
|
28
|
-
pros: string[];
|
|
29
|
-
cons: string[];
|
|
30
|
-
claudeImpact: string;
|
|
31
|
-
};
|
|
32
|
-
clean: {
|
|
33
|
-
description: string;
|
|
34
|
-
pros: string[];
|
|
35
|
-
cons: string[];
|
|
36
|
-
claudeImpact: string;
|
|
37
|
-
};
|
|
38
|
-
};
|
|
39
|
-
errorHandling: {
|
|
40
|
-
topic: string;
|
|
41
|
-
simple: {
|
|
42
|
-
description: string;
|
|
43
|
-
pros: string[];
|
|
44
|
-
cons: string[];
|
|
45
|
-
claudeImpact: string;
|
|
46
|
-
};
|
|
47
|
-
clean: {
|
|
48
|
-
description: string;
|
|
49
|
-
pros: string[];
|
|
50
|
-
cons: string[];
|
|
51
|
-
claudeImpact: string;
|
|
52
|
-
};
|
|
53
|
-
};
|
|
54
|
-
schemaOrg: {
|
|
55
|
-
topic: string;
|
|
56
|
-
simple: {
|
|
57
|
-
description: string;
|
|
58
|
-
pros: string[];
|
|
59
|
-
cons: string[];
|
|
60
|
-
claudeImpact: string;
|
|
61
|
-
};
|
|
62
|
-
clean: {
|
|
63
|
-
description: string;
|
|
64
|
-
pros: string[];
|
|
65
|
-
cons: string[];
|
|
66
|
-
claudeImpact: string;
|
|
67
|
-
};
|
|
68
|
-
};
|
|
69
|
-
componentStructure: {
|
|
70
|
-
topic: string;
|
|
71
|
-
simple: {
|
|
72
|
-
description: string;
|
|
73
|
-
pros: string[];
|
|
74
|
-
cons: string[];
|
|
75
|
-
claudeImpact: string;
|
|
76
|
-
};
|
|
77
|
-
clean: {
|
|
78
|
-
description: string;
|
|
79
|
-
pros: string[];
|
|
80
|
-
cons: string[];
|
|
81
|
-
claudeImpact: string;
|
|
82
|
-
};
|
|
83
|
-
};
|
|
84
|
-
authMiddleware: {
|
|
85
|
-
topic: string;
|
|
86
|
-
simple: {
|
|
87
|
-
description: string;
|
|
88
|
-
pros: string[];
|
|
89
|
-
cons: string[];
|
|
90
|
-
claudeImpact: string;
|
|
91
|
-
};
|
|
92
|
-
clean: {
|
|
93
|
-
description: string;
|
|
94
|
-
pros: string[];
|
|
95
|
-
cons: string[];
|
|
96
|
-
claudeImpact: string;
|
|
97
|
-
};
|
|
98
|
-
};
|
|
99
|
-
loadingStates: {
|
|
100
|
-
topic: string;
|
|
101
|
-
simple: {
|
|
102
|
-
description: string;
|
|
103
|
-
pros: string[];
|
|
104
|
-
cons: string[];
|
|
105
|
-
claudeImpact: string;
|
|
106
|
-
};
|
|
107
|
-
clean: {
|
|
108
|
-
description: string;
|
|
109
|
-
pros: string[];
|
|
110
|
-
cons: string[];
|
|
111
|
-
claudeImpact: string;
|
|
112
|
-
};
|
|
113
|
-
};
|
|
114
|
-
metadata: {
|
|
115
|
-
topic: string;
|
|
116
|
-
simple: {
|
|
117
|
-
description: string;
|
|
118
|
-
pros: string[];
|
|
119
|
-
cons: string[];
|
|
120
|
-
claudeImpact: string;
|
|
121
|
-
};
|
|
122
|
-
clean: {
|
|
123
|
-
description: string;
|
|
124
|
-
pros: string[];
|
|
125
|
-
cons: string[];
|
|
126
|
-
claudeImpact: string;
|
|
127
|
-
};
|
|
128
|
-
};
|
|
129
|
-
prismaClient: {
|
|
130
|
-
topic: string;
|
|
131
|
-
simple: {
|
|
132
|
-
description: string;
|
|
133
|
-
pros: string[];
|
|
134
|
-
cons: string[];
|
|
135
|
-
claudeImpact: string;
|
|
136
|
-
};
|
|
137
|
-
};
|
|
138
|
-
authSession: {
|
|
139
|
-
topic: string;
|
|
140
|
-
simple: {
|
|
141
|
-
description: string;
|
|
142
|
-
pros: string[];
|
|
143
|
-
cons: string[];
|
|
144
|
-
claudeImpact: string;
|
|
145
|
-
};
|
|
146
|
-
clean: {
|
|
147
|
-
description: string;
|
|
148
|
-
pros: string[];
|
|
149
|
-
cons: string[];
|
|
150
|
-
claudeImpact: string;
|
|
151
|
-
};
|
|
152
|
-
};
|
|
153
|
-
envValidation: {
|
|
154
|
-
topic: string;
|
|
155
|
-
simple: {
|
|
156
|
-
description: string;
|
|
157
|
-
pros: string[];
|
|
158
|
-
cons: string[];
|
|
159
|
-
claudeImpact: string;
|
|
160
|
-
};
|
|
161
|
-
clean: {
|
|
162
|
-
description: string;
|
|
163
|
-
pros: string[];
|
|
164
|
-
cons: string[];
|
|
165
|
-
claudeImpact: string;
|
|
166
|
-
};
|
|
167
|
-
};
|
|
168
|
-
typesDir: {
|
|
169
|
-
topic: string;
|
|
170
|
-
simple: {
|
|
171
|
-
description: string;
|
|
172
|
-
pros: string[];
|
|
173
|
-
cons: string[];
|
|
174
|
-
claudeImpact: string;
|
|
175
|
-
};
|
|
176
|
-
};
|
|
177
|
-
storeOrg: {
|
|
178
|
-
topic: string;
|
|
179
|
-
simple: {
|
|
180
|
-
description: string;
|
|
181
|
-
pros: string[];
|
|
182
|
-
cons: string[];
|
|
183
|
-
claudeImpact: string;
|
|
184
|
-
};
|
|
185
|
-
};
|
|
186
|
-
drizzleSchema: {
|
|
187
|
-
topic: string;
|
|
188
|
-
simple: {
|
|
189
|
-
description: string;
|
|
190
|
-
pros: string[];
|
|
191
|
-
cons: string[];
|
|
192
|
-
claudeImpact: string;
|
|
193
|
-
};
|
|
194
|
-
clean: {
|
|
195
|
-
description: string;
|
|
196
|
-
pros: string[];
|
|
197
|
-
cons: string[];
|
|
198
|
-
claudeImpact: string;
|
|
199
|
-
};
|
|
200
|
-
};
|
|
201
|
-
genericFix: string;
|
|
202
|
-
genericPros: string[];
|
|
203
|
-
genericCons: string[];
|
|
204
|
-
genericClaudeImpact: string;
|
|
205
|
-
}
|
|
206
2
|
export interface TemplateMessages {
|
|
207
3
|
header: {
|
|
208
4
|
title: string;
|
|
@@ -216,9 +12,6 @@ export interface TemplateMessages {
|
|
|
216
12
|
availableScripts: string;
|
|
217
13
|
fileNaming: string;
|
|
218
14
|
importOrdering: string;
|
|
219
|
-
conventions: string;
|
|
220
|
-
crossStackRules: string;
|
|
221
|
-
interdictions: string;
|
|
222
15
|
projectDecisions: string;
|
|
223
16
|
existingPatterns: string;
|
|
224
17
|
claudeInstructions: string;
|
|
@@ -326,32 +119,7 @@ export interface TemplateMessages {
|
|
|
326
119
|
consoleLogs: string;
|
|
327
120
|
};
|
|
328
121
|
}
|
|
329
|
-
export interface ValidationMessages {
|
|
330
|
-
noClaudeMd: string;
|
|
331
|
-
frameworkVersionOutdated: string;
|
|
332
|
-
techMissing: string;
|
|
333
|
-
conventionMissing: string;
|
|
334
|
-
crossStackMissing: string;
|
|
335
|
-
gapStillExists: string;
|
|
336
|
-
inSync: string;
|
|
337
|
-
driftsFound: string;
|
|
338
|
-
}
|
|
339
|
-
export interface ToolMessages {
|
|
340
|
-
generateSuccess: string;
|
|
341
|
-
updateSuccess: string;
|
|
342
|
-
dirNotFound: string;
|
|
343
|
-
}
|
|
344
|
-
export interface PromptMessages {
|
|
345
|
-
setupTitle: string;
|
|
346
|
-
setupSteps: string[];
|
|
347
|
-
validateTitle: string;
|
|
348
|
-
validateSteps: string[];
|
|
349
|
-
}
|
|
350
122
|
export interface Messages {
|
|
351
123
|
templates: TemplateMessages;
|
|
352
|
-
suggestions: SuggestionMessages;
|
|
353
|
-
validation: ValidationMessages;
|
|
354
|
-
tools: ToolMessages;
|
|
355
|
-
prompts: PromptMessages;
|
|
356
124
|
}
|
|
357
125
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/i18n/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/i18n/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjC,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/i18n/types.ts"],"names":[],"mappings":"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"}
|