leadcode 0.1.1 → 0.2.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 CHANGED
@@ -33,37 +33,23 @@ Your Project ──→ LeadCode ──→ CLAUDE.md ──→ Claude Code knows
33
33
 
34
34
  ## Installation
35
35
 
36
- ```bash
37
- npm install -g leadcode
38
- ```
39
-
40
- ### Configure with Claude Code
36
+ LeadCode is an MCP server — it's used through Claude Code, not as a standalone CLI.
41
37
 
42
- Add LeadCode to your MCP config. In `~/.claude/claude_code_config.json`:
43
-
44
- ```json
45
- {
46
- "mcpServers": {
47
- "leadcode": {
48
- "command": "leadcode"
49
- }
50
- }
51
- }
52
- ```
53
-
54
- Or if installed locally in a project:
38
+ Add LeadCode to your MCP config. Either globally in `~/.claude/claude_code_config.json`, or per-project in `.mcp.json`:
55
39
 
56
40
  ```json
57
41
  {
58
42
  "mcpServers": {
59
43
  "leadcode": {
60
44
  "command": "npx",
61
- "args": ["leadcode"]
45
+ "args": ["-y", "leadcode"]
62
46
  }
63
47
  }
64
48
  }
65
49
  ```
66
50
 
51
+ Then restart Claude Code. LeadCode's tools will be available automatically.
52
+
67
53
  ## Usage
68
54
 
69
55
  ### Quick Start (Recommended)
@@ -0,0 +1,3 @@
1
+ import type { Messages } from "./types.js";
2
+ export declare const en: Messages;
3
+ //# sourceMappingURL=en.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,eAAO,MAAM,EAAE,EAAE,QAkXhB,CAAC"}
@@ -0,0 +1,368 @@
1
+ export const en = {
2
+ templates: {
3
+ header: {
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.",
6
+ meta2: "Modify as needed, then commit to version control.",
7
+ },
8
+ sections: {
9
+ architectureOverview: "Architecture Overview",
10
+ stack: "Stack",
11
+ projectStructure: "Project Structure",
12
+ availableScripts: "Available Scripts",
13
+ fileNaming: "File & Naming Conventions",
14
+ importOrdering: "Import Ordering",
15
+ conventions: "Conventions (MUST follow)",
16
+ crossStackRules: "Cross-Stack Rules (CRITICAL)",
17
+ interdictions: "Interdictions (NEVER do)",
18
+ projectDecisions: "Project Decisions",
19
+ existingPatterns: "Existing Code Patterns",
20
+ claudeInstructions: "Claude Code Instructions",
21
+ },
22
+ architecture: {
23
+ frontendBackend: "Frontend + Backend",
24
+ fullStackReact: "full-stack React framework",
25
+ frontend: "Frontend",
26
+ reactSpaVite: "React SPA with Vite",
27
+ framework: "Framework",
28
+ dataLayer: "Data Layer",
29
+ database: "Database",
30
+ authentication: "Authentication",
31
+ api: "API",
32
+ clientState: "Client State",
33
+ i18n: "i18n",
34
+ payments: "Payments",
35
+ realtime: "Realtime",
36
+ email: "Email",
37
+ content: "Content",
38
+ backgroundJobs: "Background Jobs",
39
+ fileUpload: "File Upload",
40
+ projectSize: "Project Size",
41
+ sizeSmall: "Small",
42
+ sizeMedium: "Medium",
43
+ sizeLarge: "Large",
44
+ sizeVeryLarge: "Very large",
45
+ sourceFiles: "source files",
46
+ },
47
+ stackLabels: {
48
+ framework: "Framework",
49
+ orm: "ORM",
50
+ database: "Database",
51
+ auth: "Auth",
52
+ validation: "Validation",
53
+ css: "CSS",
54
+ uiComponents: "UI Components",
55
+ testing: "Testing",
56
+ stateManagement: "State Management",
57
+ apiStyle: "API Style",
58
+ i18n: "i18n",
59
+ payments: "Payments",
60
+ email: "Email",
61
+ realtime: "Realtime",
62
+ cms: "CMS/Content",
63
+ fileUpload: "File Upload",
64
+ jobs: "Jobs/Queue",
65
+ monorepo: "Monorepo",
66
+ deployment: "Deployment",
67
+ linter: "Linter",
68
+ formatter: "Formatter",
69
+ runtime: "Runtime",
70
+ },
71
+ structure: {
72
+ srcDir: "Source code in `src/`",
73
+ appRouter: "App Router: `app/`",
74
+ pagesRouter: "Pages Router: `pages/`",
75
+ apiRoutes: "API routes present",
76
+ middleware: "Middleware configured",
77
+ components: "Components: `components/`",
78
+ sharedUtils: "Shared utilities: `lib/`",
79
+ services: "Services: `services/`",
80
+ customHooks: "Custom hooks: `hooks/`",
81
+ stateStores: "State stores: `store/`",
82
+ validationSchemas: "Validation schemas: `schemas/`",
83
+ typeDefinitions: "Type definitions: `types/`",
84
+ configuration: "Configuration: `config/`",
85
+ reactProviders: "React providers: `providers/`",
86
+ prismaSchema: "Prisma schema: `prisma/schema.prisma`",
87
+ },
88
+ naming: {
89
+ files: "**Files**: kebab-case (e.g., `user-profile.ts`, `auth-utils.ts`)",
90
+ reactComponents: "**React components**: PascalCase filename matching component name (e.g., `UserProfile.tsx` exports `UserProfile`)",
91
+ hooks: "**Hooks**: camelCase prefixed with `use` (e.g., `useAuth.ts`)",
92
+ constants: "**Constants/config**: SCREAMING_SNAKE_CASE for values, kebab-case for files",
93
+ newFilesSrc: "**New files**: Place in `src/` following the existing directory structure",
94
+ },
95
+ importOrder: [
96
+ "1. Node.js builtins (node:fs, node:path)",
97
+ "2. External packages (react, next, etc.)",
98
+ "3. Internal aliases (@/ or ~/)",
99
+ "4. Relative imports (../ and ./)",
100
+ "5. Type imports (import type { ... })",
101
+ ],
102
+ instructions: {
103
+ followAll: "Follow ALL rules in this document without exception.",
104
+ respectStructure: "When creating new files, respect the existing project structure and naming conventions.",
105
+ checkPrecedent: "When unsure about a pattern, check existing code for precedent before inventing new patterns.",
106
+ neverNewDeps: "Never introduce new dependencies without being explicitly asked.",
107
+ smallChanges: "Prefer small, focused changes over large refactors.",
108
+ serverComponents: "Default to Server Components. Only add 'use client' when the component needs interactivity.",
109
+ appRouterPages: "Place new pages in app/ following the existing route structure.",
110
+ serverActions: "Use Server Actions for mutations, Route Handlers for API endpoints.",
111
+ prismaAfterChange: "After changing schema.prisma, always run `npx prisma migrate dev` and `npx prisma generate`.",
112
+ drizzleAfterChange: "After changing Drizzle schemas, run `npx drizzle-kit generate` to create migrations.",
113
+ zodValidate: "Validate all inputs at API boundaries with Zod. Parse, don't validate.",
114
+ tailwindClasses: "Use Tailwind utility classes for styling. Use cn() for conditional classes.",
115
+ shadcnComponents: "Use shadcn/ui components from components/ui/ as building blocks.",
116
+ runTests: "Run tests with the project's {testing} setup before marking work as done.",
117
+ runLinter: "Run {linter} before committing. Fix all warnings.",
118
+ i18nStrings: "All user-facing strings must go through the i18n system. Never hardcode text.",
119
+ },
120
+ patterns: {
121
+ clientServerRatio: "**Client/Server ratio**: {clientCount} client components out of {totalCount} total ({clientPercent}% client)",
122
+ serverActions: "**Server Actions**: {count} files with 'use server'",
123
+ pathAliases: "**Path aliases**: Project uses @/ or ~/ imports — keep using them",
124
+ barrelFiles: "**Barrel files**: Project uses index.ts re-exports — follow this pattern",
125
+ largeFiles: "**Large files** (>300 lines): {count} file(s) — consider splitting",
126
+ consoleLogs: "**Console.log**: {count} occurrences found — clean up before production",
127
+ },
128
+ },
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
+ };
368
+ //# sourceMappingURL=en.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Messages } from "./types.js";
2
+ export declare const fr: Messages;
3
+ //# sourceMappingURL=fr.d.ts.map
@@ -0,0 +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,QAkXhB,CAAC"}