leadcode 0.2.1 → 1.0.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/dist/analyzers/detection.d.ts.map +1 -1
- package/dist/analyzers/detection.js +55 -5
- 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/index.d.ts +5 -0
- package/dist/context7/index.d.ts.map +1 -0
- package/dist/context7/index.js +3 -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 +3 -242
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/fr.d.ts.map +1 -1
- package/dist/i18n/fr.js +21 -260
- package/dist/i18n/fr.js.map +1 -1
- package/dist/i18n/types.d.ts +2 -232
- package/dist/i18n/types.d.ts.map +1 -1
- package/dist/index.js +13 -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 +97 -65
- package/dist/templates/claude-md.js.map +1 -1
- package/dist/tools/fetch-docs.d.ts +13 -0
- package/dist/tools/fetch-docs.d.ts.map +1 -0
- package/dist/tools/fetch-docs.js +141 -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 +12 -12
- 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 +63 -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 +2 -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 -54
- 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/en.js
CHANGED
|
@@ -2,7 +2,7 @@ export const en = {
|
|
|
2
2
|
templates: {
|
|
3
3
|
header: {
|
|
4
4
|
title: "{name} — Project Rules",
|
|
5
|
-
meta1: "Auto-generated by [LeadCode](https://github.com/Julxoo/LeadCode). This file is the source of truth for Claude Code.",
|
|
5
|
+
meta1: "Auto-generated by [LeadCode](https://github.com/Julxoo/LeadCode) with documentation from [Context7](https://context7.com). This file is the source of truth for Claude Code.",
|
|
6
6
|
meta2: "Modify as needed, then commit to version control.",
|
|
7
7
|
},
|
|
8
8
|
sections: {
|
|
@@ -12,9 +12,6 @@ export const en = {
|
|
|
12
12
|
availableScripts: "Available Scripts",
|
|
13
13
|
fileNaming: "File & Naming Conventions",
|
|
14
14
|
importOrdering: "Import Ordering",
|
|
15
|
-
conventions: "Conventions (MUST follow)",
|
|
16
|
-
crossStackRules: "Cross-Stack Rules (CRITICAL)",
|
|
17
|
-
interdictions: "Interdictions (NEVER do)",
|
|
18
15
|
projectDecisions: "Project Decisions",
|
|
19
16
|
existingPatterns: "Existing Code Patterns",
|
|
20
17
|
claudeInstructions: "Claude Code Instructions",
|
|
@@ -54,6 +51,8 @@ export const en = {
|
|
|
54
51
|
uiComponents: "UI Components",
|
|
55
52
|
testing: "Testing",
|
|
56
53
|
stateManagement: "State Management",
|
|
54
|
+
dataFetching: "Data Fetching",
|
|
55
|
+
formLibrary: "Forms",
|
|
57
56
|
apiStyle: "API Style",
|
|
58
57
|
i18n: "i18n",
|
|
59
58
|
payments: "Payments",
|
|
@@ -126,243 +125,5 @@ export const en = {
|
|
|
126
125
|
consoleLogs: "**Console.log**: {count} occurrences found — clean up before production",
|
|
127
126
|
},
|
|
128
127
|
},
|
|
129
|
-
suggestions: {
|
|
130
|
-
testing: {
|
|
131
|
-
topic: "Testing Strategy",
|
|
132
|
-
simple: {
|
|
133
|
-
description: "Add Vitest for unit tests only",
|
|
134
|
-
pros: ["Fast setup", "Lightweight", "Great DX"],
|
|
135
|
-
cons: ["No E2E coverage"],
|
|
136
|
-
claudeImpact: "Claude will generate unit tests alongside new functions when asked.",
|
|
137
|
-
},
|
|
138
|
-
clean: {
|
|
139
|
-
description: "Vitest + Testing Library for component tests",
|
|
140
|
-
pros: ["Unit + component coverage", "Tests user behavior"],
|
|
141
|
-
cons: ["More setup", "Slower component tests"],
|
|
142
|
-
claudeImpact: "Claude will generate both unit and component tests with proper render/assert patterns.",
|
|
143
|
-
},
|
|
144
|
-
scalable: {
|
|
145
|
-
description: "Vitest + Testing Library + Playwright for E2E",
|
|
146
|
-
pros: ["Full coverage pyramid", "Catches integration bugs"],
|
|
147
|
-
cons: ["Significant setup", "Slower CI"],
|
|
148
|
-
claudeImpact: "Claude will generate tests at all levels and respect the testing pyramid.",
|
|
149
|
-
},
|
|
150
|
-
},
|
|
151
|
-
inputValidation: {
|
|
152
|
-
topic: "Input Validation",
|
|
153
|
-
simple: {
|
|
154
|
-
description: "Add Zod for manual validation in API routes",
|
|
155
|
-
pros: ["Minimal", "TypeScript-native"],
|
|
156
|
-
cons: ["Must remember to validate each route"],
|
|
157
|
-
claudeImpact: "Claude will add z.object().parse() in API routes when reminded.",
|
|
158
|
-
},
|
|
159
|
-
clean: {
|
|
160
|
-
description: "Zod with shared schemas directory and middleware",
|
|
161
|
-
pros: ["DRY schemas", "Consistent validation"],
|
|
162
|
-
cons: ["More structure upfront"],
|
|
163
|
-
claudeImpact: "Claude will import shared schemas and validate automatically in every route.",
|
|
164
|
-
},
|
|
165
|
-
},
|
|
166
|
-
errorHandling: {
|
|
167
|
-
topic: "Error Handling",
|
|
168
|
-
simple: {
|
|
169
|
-
description: "Add error.tsx in each route segment",
|
|
170
|
-
pros: ["Quick", "Follows Next.js conventions"],
|
|
171
|
-
cons: ["No structured error logging"],
|
|
172
|
-
claudeImpact: "Claude will create error.tsx files and handle errors gracefully.",
|
|
173
|
-
},
|
|
174
|
-
clean: {
|
|
175
|
-
description: "Error boundaries + centralized error utilities + structured logging",
|
|
176
|
-
pros: ["Consistent error format", "Debuggable"],
|
|
177
|
-
cons: ["More setup"],
|
|
178
|
-
claudeImpact: "Claude will use the error utilities consistently and produce debuggable error responses.",
|
|
179
|
-
},
|
|
180
|
-
},
|
|
181
|
-
schemaOrg: {
|
|
182
|
-
topic: "Schema Organization",
|
|
183
|
-
simple: {
|
|
184
|
-
description: "Co-locate schemas next to their API routes",
|
|
185
|
-
pros: ["Easy to find", "No indirection"],
|
|
186
|
-
cons: ["Schemas get duplicated across routes"],
|
|
187
|
-
claudeImpact: "Claude will duplicate schemas when the same data is used in multiple routes.",
|
|
188
|
-
},
|
|
189
|
-
clean: {
|
|
190
|
-
description: "Shared /lib/schemas/ directory",
|
|
191
|
-
pros: ["Single source of truth", "DRY"],
|
|
192
|
-
cons: ["One more directory to manage"],
|
|
193
|
-
claudeImpact: "Claude will find and reuse schemas consistently across routes and forms.",
|
|
194
|
-
},
|
|
195
|
-
},
|
|
196
|
-
componentStructure: {
|
|
197
|
-
topic: "Component Organization",
|
|
198
|
-
simple: {
|
|
199
|
-
description: "Flat /components directory",
|
|
200
|
-
pros: ["Simple", "Works for small projects"],
|
|
201
|
-
cons: ["Gets messy at scale"],
|
|
202
|
-
claudeImpact: "Claude will place all components in one directory.",
|
|
203
|
-
},
|
|
204
|
-
clean: {
|
|
205
|
-
description: "Feature-based organization: /components/ui/ + /components/[feature]/",
|
|
206
|
-
pros: ["Scales well", "Clear ownership"],
|
|
207
|
-
cons: ["More directories"],
|
|
208
|
-
claudeImpact: "Claude will organize components by feature and reuse UI primitives.",
|
|
209
|
-
},
|
|
210
|
-
},
|
|
211
|
-
authMiddleware: {
|
|
212
|
-
topic: "Route Protection",
|
|
213
|
-
simple: {
|
|
214
|
-
description: "Check auth in each Server Component/route handler",
|
|
215
|
-
pros: ["Explicit", "Easy to understand"],
|
|
216
|
-
cons: ["Easy to forget on new routes"],
|
|
217
|
-
claudeImpact: "Claude may forget auth checks on new routes unless reminded.",
|
|
218
|
-
},
|
|
219
|
-
clean: {
|
|
220
|
-
description: "middleware.ts with route matcher + per-route checks as backup",
|
|
221
|
-
pros: ["Centralized", "Defense in depth"],
|
|
222
|
-
cons: ["Middleware can be tricky to debug"],
|
|
223
|
-
claudeImpact: "Claude will add routes to the protected matcher and still add server-side checks.",
|
|
224
|
-
},
|
|
225
|
-
},
|
|
226
|
-
loadingStates: {
|
|
227
|
-
topic: "Loading States",
|
|
228
|
-
simple: {
|
|
229
|
-
description: "Add a single loading.tsx at the root app/ level",
|
|
230
|
-
pros: ["Quick", "Covers all routes"],
|
|
231
|
-
cons: ["Same loading UI everywhere"],
|
|
232
|
-
claudeImpact: "Claude will see the pattern and create loading.tsx for new route segments.",
|
|
233
|
-
},
|
|
234
|
-
clean: {
|
|
235
|
-
description: "Per-segment loading.tsx with skeleton UIs matching each page layout",
|
|
236
|
-
pros: ["Better UX", "Layout-aware skeletons"],
|
|
237
|
-
cons: ["More files to maintain"],
|
|
238
|
-
claudeImpact: "Claude will create matching skeleton UIs for each new route segment.",
|
|
239
|
-
},
|
|
240
|
-
},
|
|
241
|
-
metadata: {
|
|
242
|
-
topic: "SEO & Metadata",
|
|
243
|
-
simple: {
|
|
244
|
-
description: "Static metadata export in each page.tsx",
|
|
245
|
-
pros: ["Simple", "Covers basic SEO"],
|
|
246
|
-
cons: ["No dynamic metadata for dynamic routes"],
|
|
247
|
-
claudeImpact: "Claude will add export const metadata to new pages.",
|
|
248
|
-
},
|
|
249
|
-
clean: {
|
|
250
|
-
description: "generateMetadata for dynamic pages + static metadata for others",
|
|
251
|
-
pros: ["Dynamic title/description per route", "Full SEO control"],
|
|
252
|
-
cons: ["More boilerplate per page"],
|
|
253
|
-
claudeImpact: "Claude will generate proper generateMetadata functions with dynamic data.",
|
|
254
|
-
},
|
|
255
|
-
},
|
|
256
|
-
prismaClient: {
|
|
257
|
-
topic: "Prisma Client Singleton",
|
|
258
|
-
simple: {
|
|
259
|
-
description: "globalThis pattern in lib/prisma.ts",
|
|
260
|
-
pros: ["Standard approach", "Prevents hot-reload leaks"],
|
|
261
|
-
cons: ["Requires discipline to always import from there"],
|
|
262
|
-
claudeImpact: "Claude will import from lib/prisma.ts consistently.",
|
|
263
|
-
},
|
|
264
|
-
},
|
|
265
|
-
authSession: {
|
|
266
|
-
topic: "Auth Utility",
|
|
267
|
-
simple: {
|
|
268
|
-
description: "Create lib/auth.ts with getCurrentUser() function",
|
|
269
|
-
pros: ["Centralized", "Easy to use"],
|
|
270
|
-
cons: ["Must remember to use it"],
|
|
271
|
-
claudeImpact: "Claude will call getCurrentUser() in Server Components and Route Handlers.",
|
|
272
|
-
},
|
|
273
|
-
clean: {
|
|
274
|
-
description: "lib/auth.ts with getCurrentUser() + requireAuth() that throws on no session",
|
|
275
|
-
pros: ["Fail-safe", "Clear intent"],
|
|
276
|
-
cons: ["Slightly more code"],
|
|
277
|
-
claudeImpact: "Claude will use requireAuth() at the top of protected routes automatically.",
|
|
278
|
-
},
|
|
279
|
-
},
|
|
280
|
-
envValidation: {
|
|
281
|
-
topic: "Environment Variable Validation",
|
|
282
|
-
simple: {
|
|
283
|
-
description: "Manual Zod validation in env.ts",
|
|
284
|
-
pros: ["No extra deps", "Full control"],
|
|
285
|
-
cons: ["Manual maintenance"],
|
|
286
|
-
claudeImpact: "Claude will import env vars from env.ts and never use process.env directly.",
|
|
287
|
-
},
|
|
288
|
-
clean: {
|
|
289
|
-
description: "Use @t3-oss/env-nextjs for type-safe env with client/server separation",
|
|
290
|
-
pros: ["Type-safe", "Client/server boundary enforcement"],
|
|
291
|
-
cons: ["Extra dependency"],
|
|
292
|
-
claudeImpact: "Claude will import from env.mjs and respect client/server env boundaries.",
|
|
293
|
-
},
|
|
294
|
-
},
|
|
295
|
-
typesDir: {
|
|
296
|
-
topic: "Shared Types Organization",
|
|
297
|
-
simple: {
|
|
298
|
-
description: "Create a types/ directory with domain-specific type files",
|
|
299
|
-
pros: ["Clear location for shared types"],
|
|
300
|
-
cons: ["One more directory"],
|
|
301
|
-
claudeImpact: "Claude will place shared types in types/ and import from there.",
|
|
302
|
-
},
|
|
303
|
-
},
|
|
304
|
-
storeOrg: {
|
|
305
|
-
topic: "Store Organization",
|
|
306
|
-
simple: {
|
|
307
|
-
description: "Create a store/ directory with one file per store",
|
|
308
|
-
pros: ["Simple", "Easy to find"],
|
|
309
|
-
cons: ["Flat structure"],
|
|
310
|
-
claudeImpact: "Claude will create stores in store/ with clear naming.",
|
|
311
|
-
},
|
|
312
|
-
},
|
|
313
|
-
drizzleSchema: {
|
|
314
|
-
topic: "Drizzle Schema Organization",
|
|
315
|
-
simple: {
|
|
316
|
-
description: "All schemas in db/schema.ts",
|
|
317
|
-
pros: ["Simple for small projects"],
|
|
318
|
-
cons: ["Gets large fast"],
|
|
319
|
-
claudeImpact: "Claude will add new tables to the single schema file.",
|
|
320
|
-
},
|
|
321
|
-
clean: {
|
|
322
|
-
description: "db/schema/ directory with one file per domain entity + index.ts barrel",
|
|
323
|
-
pros: ["Scales well", "Easy to find"],
|
|
324
|
-
cons: ["More files"],
|
|
325
|
-
claudeImpact: "Claude will create new schema files per entity and export from index.ts.",
|
|
326
|
-
},
|
|
327
|
-
},
|
|
328
|
-
genericFix: "Address: {message}",
|
|
329
|
-
genericPros: ["Fixes the gap"],
|
|
330
|
-
genericCons: ["May need further refinement"],
|
|
331
|
-
genericClaudeImpact: "Claude will follow the convention once documented in CLAUDE.md.",
|
|
332
|
-
},
|
|
333
|
-
validation: {
|
|
334
|
-
noClaudeMd: "No CLAUDE.md found at {path}. Use generate-claude-md first.",
|
|
335
|
-
frameworkVersionOutdated: "Framework version {version} not found in CLAUDE.md. Version may have been updated.",
|
|
336
|
-
techMissing: "{label}: {value} is in the project but not mentioned in CLAUDE.md.",
|
|
337
|
-
conventionMissing: 'Convention "{description}" is applicable but not in CLAUDE.md.',
|
|
338
|
-
crossStackMissing: "Cross-stack rule for {combo} is applicable but not in CLAUDE.md.",
|
|
339
|
-
gapStillExists: "High-severity gap still exists: {message}",
|
|
340
|
-
inSync: "CLAUDE.md is in sync with the project.",
|
|
341
|
-
driftsFound: "Found {count} drift(s). Consider running generate-claude-md to update.",
|
|
342
|
-
},
|
|
343
|
-
tools: {
|
|
344
|
-
generateSuccess: "CLAUDE.md generated successfully",
|
|
345
|
-
updateSuccess: "CLAUDE.md updated successfully",
|
|
346
|
-
dirNotFound: "Project directory not found: {path}",
|
|
347
|
-
},
|
|
348
|
-
prompts: {
|
|
349
|
-
setupTitle: "Full LeadCode workflow: analyze repo → detect gaps → suggest conventions → generate CLAUDE.md",
|
|
350
|
-
setupSteps: [
|
|
351
|
-
"1. Call analyze-repo to scan the project and get a full technical analysis.",
|
|
352
|
-
"2. Call detect-gaps with the analysis to identify structural gaps.",
|
|
353
|
-
"3. Call suggest-conventions with the analysis and gaps to get improvement options.",
|
|
354
|
-
"4. Present the analysis, gaps, and suggestions to me in a clear summary.",
|
|
355
|
-
"5. Ask me which options I prefer for each gap (simple / clean / scalable).",
|
|
356
|
-
"6. Once I've chosen, call generate-claude-md with my choices to create the CLAUDE.md file.",
|
|
357
|
-
"",
|
|
358
|
-
"Be thorough and explain each gap and suggestion clearly.",
|
|
359
|
-
],
|
|
360
|
-
validateTitle: "Check if an existing CLAUDE.md is still in sync with the project",
|
|
361
|
-
validateSteps: [
|
|
362
|
-
"1. Call validate-claude-md to check for drifts between the CLAUDE.md and actual project state.",
|
|
363
|
-
"2. Present any drifts found with clear explanations.",
|
|
364
|
-
"3. If drifts are found, suggest whether to regenerate or manually fix the CLAUDE.md.",
|
|
365
|
-
],
|
|
366
|
-
},
|
|
367
128
|
};
|
|
368
129
|
//# sourceMappingURL=en.js.map
|
package/dist/i18n/en.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,EAAE,GAAa;IAC1B,SAAS,EAAE;QACT,MAAM,EAAE;YACN,KAAK,EAAE,wBAAwB;YAC/B,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"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"}
|
package/dist/i18n/fr.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fr.d.ts","sourceRoot":"","sources":["../../src/i18n/fr.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,eAAO,MAAM,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"fr.d.ts","sourceRoot":"","sources":["../../src/i18n/fr.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,eAAO,MAAM,EAAE,EAAE,QA+HhB,CAAC"}
|
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",
|
|
@@ -54,6 +51,8 @@ export const fr = {
|
|
|
54
51
|
uiComponents: "Composants UI",
|
|
55
52
|
testing: "Tests",
|
|
56
53
|
stateManagement: "Gestion d'état",
|
|
54
|
+
dataFetching: "Data Fetching",
|
|
55
|
+
formLibrary: "Formulaires",
|
|
57
56
|
apiStyle: "Style d'API",
|
|
58
57
|
i18n: "i18n",
|
|
59
58
|
payments: "Paiements",
|
|
@@ -61,7 +60,7 @@ export const fr = {
|
|
|
61
60
|
realtime: "Temps réel",
|
|
62
61
|
cms: "CMS/Contenu",
|
|
63
62
|
fileUpload: "Upload de fichiers",
|
|
64
|
-
jobs: "Jobs/
|
|
63
|
+
jobs: "Jobs/Queue",
|
|
65
64
|
monorepo: "Monorepo",
|
|
66
65
|
deployment: "Déploiement",
|
|
67
66
|
linter: "Linter",
|
|
@@ -86,11 +85,11 @@ export const fr = {
|
|
|
86
85
|
prismaSchema: "Schéma Prisma : `prisma/schema.prisma`",
|
|
87
86
|
},
|
|
88
87
|
naming: {
|
|
89
|
-
files: "**Fichiers** : kebab-case (ex
|
|
90
|
-
reactComponents: "**Composants React** : PascalCase
|
|
91
|
-
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`)",
|
|
92
91
|
constants: "**Constantes/config** : SCREAMING_SNAKE_CASE pour les valeurs, kebab-case pour les fichiers",
|
|
93
|
-
newFilesSrc: "**Nouveaux fichiers** : Placer dans `src/` en
|
|
92
|
+
newFilesSrc: "**Nouveaux fichiers** : Placer dans `src/` en suivant la structure existante",
|
|
94
93
|
},
|
|
95
94
|
importOrder: [
|
|
96
95
|
"1. Builtins Node.js (node:fs, node:path)",
|
|
@@ -101,268 +100,30 @@ export const fr = {
|
|
|
101
100
|
],
|
|
102
101
|
instructions: {
|
|
103
102
|
followAll: "Suivre TOUTES les règles de ce document sans exception.",
|
|
104
|
-
respectStructure: "Lors de la création de
|
|
105
|
-
checkPrecedent: "En cas de doute sur un pattern, vérifier le code existant avant d'
|
|
106
|
-
neverNewDeps: "Ne jamais
|
|
107
|
-
smallChanges: "Préférer
|
|
108
|
-
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é.",
|
|
109
108
|
appRouterPages: "Placer les nouvelles pages dans app/ en suivant la structure de routes existante.",
|
|
110
109
|
serverActions: "Utiliser les Server Actions pour les mutations, les Route Handlers pour les endpoints API.",
|
|
111
110
|
prismaAfterChange: "Après modification de schema.prisma, toujours exécuter `npx prisma migrate dev` et `npx prisma generate`.",
|
|
112
111
|
drizzleAfterChange: "Après modification des schémas Drizzle, exécuter `npx drizzle-kit generate` pour créer les migrations.",
|
|
113
|
-
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.",
|
|
114
113
|
tailwindClasses: "Utiliser les classes utilitaires Tailwind pour le style. Utiliser cn() pour les classes conditionnelles.",
|
|
115
114
|
shadcnComponents: "Utiliser les composants shadcn/ui de components/ui/ comme briques de base.",
|
|
116
|
-
runTests: "Lancer les tests avec {testing} avant de considérer le travail terminé.",
|
|
117
|
-
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.",
|
|
118
117
|
i18nStrings: "Toutes les chaînes visibles par l'utilisateur doivent passer par le système i18n. Ne jamais coder en dur.",
|
|
119
118
|
},
|
|
120
119
|
patterns: {
|
|
121
|
-
clientServerRatio: "**Ratio Client/Serveur** : {clientCount} composants client sur {totalCount}
|
|
120
|
+
clientServerRatio: "**Ratio Client/Serveur** : {clientCount} composants client sur {totalCount} total ({clientPercent}% client)",
|
|
122
121
|
serverActions: "**Server Actions** : {count} fichiers avec 'use server'",
|
|
123
122
|
pathAliases: "**Alias de chemins** : Le projet utilise les imports @/ ou ~/ — continuer à les utiliser",
|
|
124
|
-
barrelFiles: "**Fichiers barrel** : Le projet utilise
|
|
125
|
-
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",
|
|
126
125
|
consoleLogs: "**Console.log** : {count} occurrences trouvées — nettoyer avant la production",
|
|
127
126
|
},
|
|
128
127
|
},
|
|
129
|
-
suggestions: {
|
|
130
|
-
testing: {
|
|
131
|
-
topic: "Stratégie de tests",
|
|
132
|
-
simple: {
|
|
133
|
-
description: "Ajouter Vitest pour les tests unitaires uniquement",
|
|
134
|
-
pros: ["Mise en place rapide", "Léger", "Excellente DX"],
|
|
135
|
-
cons: ["Pas de couverture E2E"],
|
|
136
|
-
claudeImpact: "Claude générera des tests unitaires à côté des nouvelles fonctions quand on le demande.",
|
|
137
|
-
},
|
|
138
|
-
clean: {
|
|
139
|
-
description: "Vitest + Testing Library pour les tests de composants",
|
|
140
|
-
pros: ["Couverture unitaire + composants", "Teste le comportement utilisateur"],
|
|
141
|
-
cons: ["Plus de configuration", "Tests de composants plus lents"],
|
|
142
|
-
claudeImpact: "Claude générera des tests unitaires et de composants avec les bons patterns render/assert.",
|
|
143
|
-
},
|
|
144
|
-
scalable: {
|
|
145
|
-
description: "Vitest + Testing Library + Playwright pour le E2E",
|
|
146
|
-
pros: ["Pyramide de tests complète", "Détecte les bugs d'intégration"],
|
|
147
|
-
cons: ["Configuration conséquente", "CI plus lente"],
|
|
148
|
-
claudeImpact: "Claude générera des tests à tous les niveaux en respectant la pyramide de tests.",
|
|
149
|
-
},
|
|
150
|
-
},
|
|
151
|
-
inputValidation: {
|
|
152
|
-
topic: "Validation des entrées",
|
|
153
|
-
simple: {
|
|
154
|
-
description: "Ajouter Zod pour la validation manuelle dans les routes API",
|
|
155
|
-
pros: ["Minimal", "Natif TypeScript"],
|
|
156
|
-
cons: ["Il faut penser à valider chaque route"],
|
|
157
|
-
claudeImpact: "Claude ajoutera z.object().parse() dans les routes API quand on le rappelle.",
|
|
158
|
-
},
|
|
159
|
-
clean: {
|
|
160
|
-
description: "Zod avec un dossier de schémas partagés et un middleware",
|
|
161
|
-
pros: ["Schémas DRY", "Validation cohérente"],
|
|
162
|
-
cons: ["Plus de structure au départ"],
|
|
163
|
-
claudeImpact: "Claude importera les schémas partagés et validera automatiquement dans chaque route.",
|
|
164
|
-
},
|
|
165
|
-
},
|
|
166
|
-
errorHandling: {
|
|
167
|
-
topic: "Gestion des erreurs",
|
|
168
|
-
simple: {
|
|
169
|
-
description: "Ajouter error.tsx dans chaque segment de route",
|
|
170
|
-
pros: ["Rapide", "Suit les conventions Next.js"],
|
|
171
|
-
cons: ["Pas de logging structuré des erreurs"],
|
|
172
|
-
claudeImpact: "Claude créera des fichiers error.tsx et gérera les erreurs proprement.",
|
|
173
|
-
},
|
|
174
|
-
clean: {
|
|
175
|
-
description: "Error boundaries + utilitaires d'erreur centralisés + logging structuré",
|
|
176
|
-
pros: ["Format d'erreur cohérent", "Débugable"],
|
|
177
|
-
cons: ["Plus de mise en place"],
|
|
178
|
-
claudeImpact: "Claude utilisera les utilitaires d'erreur de manière cohérente et produira des réponses d'erreur débugables.",
|
|
179
|
-
},
|
|
180
|
-
},
|
|
181
|
-
schemaOrg: {
|
|
182
|
-
topic: "Organisation des schémas",
|
|
183
|
-
simple: {
|
|
184
|
-
description: "Co-localiser les schémas à côté de leurs routes API",
|
|
185
|
-
pros: ["Facile à trouver", "Pas d'indirection"],
|
|
186
|
-
cons: ["Les schémas se dupliquent entre les routes"],
|
|
187
|
-
claudeImpact: "Claude dupliquera les schémas quand les mêmes données sont utilisées dans plusieurs routes.",
|
|
188
|
-
},
|
|
189
|
-
clean: {
|
|
190
|
-
description: "Dossier partagé /lib/schemas/",
|
|
191
|
-
pros: ["Source unique de vérité", "DRY"],
|
|
192
|
-
cons: ["Un dossier de plus à gérer"],
|
|
193
|
-
claudeImpact: "Claude trouvera et réutilisera les schémas de manière cohérente entre les routes et les formulaires.",
|
|
194
|
-
},
|
|
195
|
-
},
|
|
196
|
-
componentStructure: {
|
|
197
|
-
topic: "Organisation des composants",
|
|
198
|
-
simple: {
|
|
199
|
-
description: "Dossier /components à plat",
|
|
200
|
-
pros: ["Simple", "Fonctionne pour les petits projets"],
|
|
201
|
-
cons: ["Devient le bazar à l'échelle"],
|
|
202
|
-
claudeImpact: "Claude placera tous les composants dans un seul dossier.",
|
|
203
|
-
},
|
|
204
|
-
clean: {
|
|
205
|
-
description: "Organisation par feature : /components/ui/ + /components/[feature]/",
|
|
206
|
-
pros: ["Passe à l'échelle", "Propriété claire"],
|
|
207
|
-
cons: ["Plus de dossiers"],
|
|
208
|
-
claudeImpact: "Claude organisera les composants par feature et réutilisera les primitives UI.",
|
|
209
|
-
},
|
|
210
|
-
},
|
|
211
|
-
authMiddleware: {
|
|
212
|
-
topic: "Protection des routes",
|
|
213
|
-
simple: {
|
|
214
|
-
description: "Vérifier l'auth dans chaque Server Component/route handler",
|
|
215
|
-
pros: ["Explicite", "Facile à comprendre"],
|
|
216
|
-
cons: ["Facile d'oublier sur les nouvelles routes"],
|
|
217
|
-
claudeImpact: "Claude risque d'oublier les checks d'auth sur les nouvelles routes si on ne le rappelle pas.",
|
|
218
|
-
},
|
|
219
|
-
clean: {
|
|
220
|
-
description: "middleware.ts avec route matcher + vérifications par route en backup",
|
|
221
|
-
pros: ["Centralisé", "Défense en profondeur"],
|
|
222
|
-
cons: ["Le middleware peut être difficile à débuguer"],
|
|
223
|
-
claudeImpact: "Claude ajoutera les routes au matcher protégé et conservera les vérifications côté serveur.",
|
|
224
|
-
},
|
|
225
|
-
},
|
|
226
|
-
loadingStates: {
|
|
227
|
-
topic: "États de chargement",
|
|
228
|
-
simple: {
|
|
229
|
-
description: "Ajouter un seul loading.tsx à la racine de app/",
|
|
230
|
-
pros: ["Rapide", "Couvre toutes les routes"],
|
|
231
|
-
cons: ["Même UI de chargement partout"],
|
|
232
|
-
claudeImpact: "Claude verra le pattern et créera des loading.tsx pour les nouveaux segments de route.",
|
|
233
|
-
},
|
|
234
|
-
clean: {
|
|
235
|
-
description: "loading.tsx par segment avec des skeleton UIs adaptées à chaque page",
|
|
236
|
-
pros: ["Meilleure UX", "Skeletons adaptés au layout"],
|
|
237
|
-
cons: ["Plus de fichiers à maintenir"],
|
|
238
|
-
claudeImpact: "Claude créera des skeleton UIs correspondant à chaque nouveau segment de route.",
|
|
239
|
-
},
|
|
240
|
-
},
|
|
241
|
-
metadata: {
|
|
242
|
-
topic: "SEO & Métadonnées",
|
|
243
|
-
simple: {
|
|
244
|
-
description: "Export statique des métadonnées dans chaque page.tsx",
|
|
245
|
-
pros: ["Simple", "Couvre le SEO de base"],
|
|
246
|
-
cons: ["Pas de métadonnées dynamiques pour les routes dynamiques"],
|
|
247
|
-
claudeImpact: "Claude ajoutera export const metadata aux nouvelles pages.",
|
|
248
|
-
},
|
|
249
|
-
clean: {
|
|
250
|
-
description: "generateMetadata pour les pages dynamiques + métadonnées statiques pour le reste",
|
|
251
|
-
pros: ["Titre/description dynamique par route", "Contrôle SEO complet"],
|
|
252
|
-
cons: ["Plus de boilerplate par page"],
|
|
253
|
-
claudeImpact: "Claude générera les fonctions generateMetadata avec les données dynamiques.",
|
|
254
|
-
},
|
|
255
|
-
},
|
|
256
|
-
prismaClient: {
|
|
257
|
-
topic: "Singleton Prisma Client",
|
|
258
|
-
simple: {
|
|
259
|
-
description: "Pattern globalThis dans lib/prisma.ts",
|
|
260
|
-
pros: ["Approche standard", "Évite les fuites de hot-reload"],
|
|
261
|
-
cons: ["Nécessite de la discipline pour toujours importer depuis ce fichier"],
|
|
262
|
-
claudeImpact: "Claude importera depuis lib/prisma.ts de manière cohérente.",
|
|
263
|
-
},
|
|
264
|
-
},
|
|
265
|
-
authSession: {
|
|
266
|
-
topic: "Utilitaire d'authentification",
|
|
267
|
-
simple: {
|
|
268
|
-
description: "Créer lib/auth.ts avec une fonction getCurrentUser()",
|
|
269
|
-
pros: ["Centralisé", "Facile à utiliser"],
|
|
270
|
-
cons: ["Il faut penser à l'utiliser"],
|
|
271
|
-
claudeImpact: "Claude appellera getCurrentUser() dans les Server Components et Route Handlers.",
|
|
272
|
-
},
|
|
273
|
-
clean: {
|
|
274
|
-
description: "lib/auth.ts avec getCurrentUser() + requireAuth() qui throw si pas de session",
|
|
275
|
-
pros: ["Sécurisé par défaut", "Intention claire"],
|
|
276
|
-
cons: ["Un peu plus de code"],
|
|
277
|
-
claudeImpact: "Claude utilisera requireAuth() en haut des routes protégées automatiquement.",
|
|
278
|
-
},
|
|
279
|
-
},
|
|
280
|
-
envValidation: {
|
|
281
|
-
topic: "Validation des variables d'environnement",
|
|
282
|
-
simple: {
|
|
283
|
-
description: "Validation manuelle avec Zod dans env.ts",
|
|
284
|
-
pros: ["Pas de dépendance supplémentaire", "Contrôle total"],
|
|
285
|
-
cons: ["Maintenance manuelle"],
|
|
286
|
-
claudeImpact: "Claude importera les variables d'env depuis env.ts et n'utilisera jamais process.env directement.",
|
|
287
|
-
},
|
|
288
|
-
clean: {
|
|
289
|
-
description: "Utiliser @t3-oss/env-nextjs pour un env typé avec séparation client/serveur",
|
|
290
|
-
pros: ["Typé", "Séparation client/serveur forcée"],
|
|
291
|
-
cons: ["Dépendance supplémentaire"],
|
|
292
|
-
claudeImpact: "Claude importera depuis env.mjs et respectera les frontières client/serveur.",
|
|
293
|
-
},
|
|
294
|
-
},
|
|
295
|
-
typesDir: {
|
|
296
|
-
topic: "Organisation des types partagés",
|
|
297
|
-
simple: {
|
|
298
|
-
description: "Créer un dossier types/ avec des fichiers de types par domaine",
|
|
299
|
-
pros: ["Emplacement clair pour les types partagés"],
|
|
300
|
-
cons: ["Un dossier de plus"],
|
|
301
|
-
claudeImpact: "Claude placera les types partagés dans types/ et importera depuis ce dossier.",
|
|
302
|
-
},
|
|
303
|
-
},
|
|
304
|
-
storeOrg: {
|
|
305
|
-
topic: "Organisation des stores",
|
|
306
|
-
simple: {
|
|
307
|
-
description: "Créer un dossier store/ avec un fichier par store",
|
|
308
|
-
pros: ["Simple", "Facile à trouver"],
|
|
309
|
-
cons: ["Structure à plat"],
|
|
310
|
-
claudeImpact: "Claude créera les stores dans store/ avec un nommage clair.",
|
|
311
|
-
},
|
|
312
|
-
},
|
|
313
|
-
drizzleSchema: {
|
|
314
|
-
topic: "Organisation des schémas Drizzle",
|
|
315
|
-
simple: {
|
|
316
|
-
description: "Tous les schémas dans db/schema.ts",
|
|
317
|
-
pros: ["Simple pour les petits projets"],
|
|
318
|
-
cons: ["Grossit vite"],
|
|
319
|
-
claudeImpact: "Claude ajoutera les nouvelles tables dans le fichier de schéma unique.",
|
|
320
|
-
},
|
|
321
|
-
clean: {
|
|
322
|
-
description: "Dossier db/schema/ avec un fichier par entité + barrel index.ts",
|
|
323
|
-
pros: ["Passe à l'échelle", "Facile à trouver"],
|
|
324
|
-
cons: ["Plus de fichiers"],
|
|
325
|
-
claudeImpact: "Claude créera de nouveaux fichiers de schéma par entité et les exportera depuis index.ts.",
|
|
326
|
-
},
|
|
327
|
-
},
|
|
328
|
-
genericFix: "Corriger : {message}",
|
|
329
|
-
genericPros: ["Corrige le problème"],
|
|
330
|
-
genericCons: ["Peut nécessiter des ajustements"],
|
|
331
|
-
genericClaudeImpact: "Claude suivra la convention une fois documentée dans le CLAUDE.md.",
|
|
332
|
-
},
|
|
333
|
-
validation: {
|
|
334
|
-
noClaudeMd: "Aucun CLAUDE.md trouvé à {path}. Utilisez generate-claude-md d'abord.",
|
|
335
|
-
frameworkVersionOutdated: "La version {version} du framework n'est pas dans le CLAUDE.md. La version a peut-être été mise à jour.",
|
|
336
|
-
techMissing: "{label} : {value} est dans le projet mais pas mentionné dans le CLAUDE.md.",
|
|
337
|
-
conventionMissing: "La convention « {description} » est applicable mais absente du CLAUDE.md.",
|
|
338
|
-
crossStackMissing: "La règle cross-stack pour {combo} est applicable mais absente du CLAUDE.md.",
|
|
339
|
-
gapStillExists: "Un gap de haute sévérité persiste : {message}",
|
|
340
|
-
inSync: "Le CLAUDE.md est synchronisé avec le projet.",
|
|
341
|
-
driftsFound: "{count} décalage(s) trouvé(s). Envisagez de lancer generate-claude-md pour mettre à jour.",
|
|
342
|
-
},
|
|
343
|
-
tools: {
|
|
344
|
-
generateSuccess: "CLAUDE.md généré avec succès",
|
|
345
|
-
updateSuccess: "CLAUDE.md mis à jour avec succès",
|
|
346
|
-
dirNotFound: "Dossier du projet introuvable : {path}",
|
|
347
|
-
},
|
|
348
|
-
prompts: {
|
|
349
|
-
setupTitle: "Workflow complet LeadCode : analyser le repo → détecter les manques → proposer des conventions → générer le CLAUDE.md",
|
|
350
|
-
setupSteps: [
|
|
351
|
-
"1. Lance analyze-repo pour scanner le projet et obtenir une analyse technique complète.",
|
|
352
|
-
"2. Lance detect-gaps pour identifier les manques structurels.",
|
|
353
|
-
"3. Lance suggest-conventions pour proposer des améliorations.",
|
|
354
|
-
"4. Présente un résumé clair : ce qui est détecté, ce qui manque, et les options disponibles.",
|
|
355
|
-
"5. Demande-moi mes préférences pour chaque point (simple / clean / scalable).",
|
|
356
|
-
"6. Une fois mes choix faits, lance generate-claude-md pour créer le CLAUDE.md.",
|
|
357
|
-
"",
|
|
358
|
-
"Explique chaque étape simplement et clairement.",
|
|
359
|
-
],
|
|
360
|
-
validateTitle: "Vérifier si le CLAUDE.md est encore synchronisé avec le projet",
|
|
361
|
-
validateSteps: [
|
|
362
|
-
"1. Lance validate-claude-md pour vérifier les décalages entre le CLAUDE.md et l'état réel du projet.",
|
|
363
|
-
"2. Présente les décalages trouvés avec des explications claires.",
|
|
364
|
-
"3. Si des décalages existent, suggère s'il faut régénérer ou corriger manuellement le CLAUDE.md.",
|
|
365
|
-
],
|
|
366
|
-
},
|
|
367
128
|
};
|
|
368
129
|
//# sourceMappingURL=fr.js.map
|