leadcode 0.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.
Files changed (112) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +186 -0
  3. package/bin/leadcode.js +2 -0
  4. package/dist/analyzers/constants.d.ts +3 -0
  5. package/dist/analyzers/constants.d.ts.map +1 -0
  6. package/dist/analyzers/constants.js +14 -0
  7. package/dist/analyzers/constants.js.map +1 -0
  8. package/dist/analyzers/dependencies.d.ts +8 -0
  9. package/dist/analyzers/dependencies.d.ts.map +1 -0
  10. package/dist/analyzers/dependencies.js +13 -0
  11. package/dist/analyzers/dependencies.js.map +1 -0
  12. package/dist/analyzers/detection.d.ts +6 -0
  13. package/dist/analyzers/detection.d.ts.map +1 -0
  14. package/dist/analyzers/detection.js +334 -0
  15. package/dist/analyzers/detection.js.map +1 -0
  16. package/dist/analyzers/patterns.d.ts +12 -0
  17. package/dist/analyzers/patterns.d.ts.map +1 -0
  18. package/dist/analyzers/patterns.js +84 -0
  19. package/dist/analyzers/patterns.js.map +1 -0
  20. package/dist/analyzers/structure.d.ts +3 -0
  21. package/dist/analyzers/structure.d.ts.map +1 -0
  22. package/dist/analyzers/structure.js +217 -0
  23. package/dist/analyzers/structure.js.map +1 -0
  24. package/dist/index.d.ts +2 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +64 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/rules/auth.d.ts +3 -0
  29. package/dist/rules/auth.d.ts.map +1 -0
  30. package/dist/rules/auth.js +48 -0
  31. package/dist/rules/auth.js.map +1 -0
  32. package/dist/rules/cross-stack.d.ts +3 -0
  33. package/dist/rules/cross-stack.d.ts.map +1 -0
  34. package/dist/rules/cross-stack.js +320 -0
  35. package/dist/rules/cross-stack.js.map +1 -0
  36. package/dist/rules/drizzle.d.ts +3 -0
  37. package/dist/rules/drizzle.d.ts.map +1 -0
  38. package/dist/rules/drizzle.js +43 -0
  39. package/dist/rules/drizzle.js.map +1 -0
  40. package/dist/rules/index.d.ts +7 -0
  41. package/dist/rules/index.d.ts.map +1 -0
  42. package/dist/rules/index.js +104 -0
  43. package/dist/rules/index.js.map +1 -0
  44. package/dist/rules/nextjs.d.ts +4 -0
  45. package/dist/rules/nextjs.d.ts.map +1 -0
  46. package/dist/rules/nextjs.js +86 -0
  47. package/dist/rules/nextjs.js.map +1 -0
  48. package/dist/rules/node.d.ts +3 -0
  49. package/dist/rules/node.d.ts.map +1 -0
  50. package/dist/rules/node.js +61 -0
  51. package/dist/rules/node.js.map +1 -0
  52. package/dist/rules/prisma.d.ts +3 -0
  53. package/dist/rules/prisma.d.ts.map +1 -0
  54. package/dist/rules/prisma.js +44 -0
  55. package/dist/rules/prisma.js.map +1 -0
  56. package/dist/rules/react.d.ts +3 -0
  57. package/dist/rules/react.d.ts.map +1 -0
  58. package/dist/rules/react.js +58 -0
  59. package/dist/rules/react.js.map +1 -0
  60. package/dist/rules/state.d.ts +3 -0
  61. package/dist/rules/state.d.ts.map +1 -0
  62. package/dist/rules/state.js +54 -0
  63. package/dist/rules/state.js.map +1 -0
  64. package/dist/rules/tailwind.d.ts +3 -0
  65. package/dist/rules/tailwind.d.ts.map +1 -0
  66. package/dist/rules/tailwind.js +41 -0
  67. package/dist/rules/tailwind.js.map +1 -0
  68. package/dist/rules/trpc.d.ts +3 -0
  69. package/dist/rules/trpc.d.ts.map +1 -0
  70. package/dist/rules/trpc.js +35 -0
  71. package/dist/rules/trpc.js.map +1 -0
  72. package/dist/rules/typescript.d.ts +3 -0
  73. package/dist/rules/typescript.d.ts.map +1 -0
  74. package/dist/rules/typescript.js +54 -0
  75. package/dist/rules/typescript.js.map +1 -0
  76. package/dist/rules/validation.d.ts +3 -0
  77. package/dist/rules/validation.d.ts.map +1 -0
  78. package/dist/rules/validation.js +38 -0
  79. package/dist/rules/validation.js.map +1 -0
  80. package/dist/templates/claude-md.d.ts +4 -0
  81. package/dist/templates/claude-md.d.ts.map +1 -0
  82. package/dist/templates/claude-md.js +309 -0
  83. package/dist/templates/claude-md.js.map +1 -0
  84. package/dist/tools/analyze-repo.d.ts +3 -0
  85. package/dist/tools/analyze-repo.d.ts.map +1 -0
  86. package/dist/tools/analyze-repo.js +68 -0
  87. package/dist/tools/analyze-repo.js.map +1 -0
  88. package/dist/tools/detect-gaps.d.ts +3 -0
  89. package/dist/tools/detect-gaps.d.ts.map +1 -0
  90. package/dist/tools/detect-gaps.js +34 -0
  91. package/dist/tools/detect-gaps.js.map +1 -0
  92. package/dist/tools/generate-claude-md.d.ts +3 -0
  93. package/dist/tools/generate-claude-md.d.ts.map +1 -0
  94. package/dist/tools/generate-claude-md.js +70 -0
  95. package/dist/tools/generate-claude-md.js.map +1 -0
  96. package/dist/tools/suggest.d.ts +3 -0
  97. package/dist/tools/suggest.d.ts.map +1 -0
  98. package/dist/tools/suggest.js +340 -0
  99. package/dist/tools/suggest.js.map +1 -0
  100. package/dist/tools/update-claude-md.d.ts +3 -0
  101. package/dist/tools/update-claude-md.d.ts.map +1 -0
  102. package/dist/tools/update-claude-md.js +108 -0
  103. package/dist/tools/update-claude-md.js.map +1 -0
  104. package/dist/tools/validate-claude-md.d.ts +3 -0
  105. package/dist/tools/validate-claude-md.d.ts.map +1 -0
  106. package/dist/tools/validate-claude-md.js +137 -0
  107. package/dist/tools/validate-claude-md.js.map +1 -0
  108. package/dist/types.d.ts +116 -0
  109. package/dist/types.d.ts.map +1 -0
  110. package/dist/types.js +2 -0
  111. package/dist/types.js.map +1 -0
  112. package/package.json +55 -0
@@ -0,0 +1,116 @@
1
+ export interface FrameworkInfo {
2
+ name: string;
3
+ version: string;
4
+ variant?: string;
5
+ }
6
+ export interface StructureInfo {
7
+ hasSrcDir: boolean;
8
+ hasAppDir: boolean;
9
+ hasPagesDir: boolean;
10
+ hasApiRoutes: boolean;
11
+ hasMiddleware: boolean;
12
+ hasPublicDir: boolean;
13
+ hasLibDir: boolean;
14
+ hasUtilsDir: boolean;
15
+ hasServicesDir: boolean;
16
+ hasComponentsDir: boolean;
17
+ hasHooksDir: boolean;
18
+ topLevelDirs: string[];
19
+ hasErrorBoundary: boolean;
20
+ hasLoadingStates: boolean;
21
+ hasNotFound: boolean;
22
+ hasMetadata: boolean;
23
+ hasPrismaSchema: boolean;
24
+ hasDockerfile: boolean;
25
+ hasEnvExample: boolean;
26
+ hasEnvValidation: boolean;
27
+ hasTsConfig: boolean;
28
+ hasTestsDir: boolean;
29
+ hasSchemasDir: boolean;
30
+ hasActionsDir: boolean;
31
+ hasQueriesDir: boolean;
32
+ hasConfigDir: boolean;
33
+ hasProvidersDir: boolean;
34
+ hasStoreDir: boolean;
35
+ hasTypesDir: boolean;
36
+ detectedRuntime: "node" | "bun" | "deno";
37
+ approximateFileCount: number;
38
+ }
39
+ export interface DetectedStack {
40
+ orm: string | null;
41
+ auth: string | null;
42
+ validation: string | null;
43
+ css: string | null;
44
+ testing: string | null;
45
+ stateManagement: string | null;
46
+ apiStyle: string | null;
47
+ bundler: string | null;
48
+ linter: string | null;
49
+ formatter: string | null;
50
+ i18n: string | null;
51
+ runtime: string | null;
52
+ monorepo: string | null;
53
+ deployment: string | null;
54
+ database: string | null;
55
+ email: string | null;
56
+ fileUpload: string | null;
57
+ payments: string | null;
58
+ realtime: string | null;
59
+ cms: string | null;
60
+ jobs: string | null;
61
+ uiComponents: string | null;
62
+ }
63
+ export interface RepoAnalysis {
64
+ projectPath: string;
65
+ projectName: string;
66
+ framework: FrameworkInfo | null;
67
+ dependencies: Record<string, string>;
68
+ devDependencies: Record<string, string>;
69
+ scripts: Record<string, string>;
70
+ structure: StructureInfo;
71
+ detected: DetectedStack;
72
+ }
73
+ export interface Gap {
74
+ category: string;
75
+ severity: "high" | "medium" | "low";
76
+ message: string;
77
+ details?: string;
78
+ }
79
+ export interface SuggestionOption {
80
+ level: "simple" | "clean" | "scalable";
81
+ description: string;
82
+ pros: string[];
83
+ cons: string[];
84
+ claudeImpact: string;
85
+ }
86
+ export interface Suggestion {
87
+ topic: string;
88
+ options: SuggestionOption[];
89
+ }
90
+ export interface GapCheck {
91
+ category: string;
92
+ severity: "high" | "medium" | "low";
93
+ check: (analysis: RepoAnalysis) => boolean;
94
+ message: string;
95
+ details?: string;
96
+ }
97
+ export interface Convention {
98
+ id: string;
99
+ description: string;
100
+ rule: string;
101
+ }
102
+ export interface CrossRef {
103
+ techs: string[];
104
+ conventions: Convention[];
105
+ interdictions: string[];
106
+ }
107
+ export interface Rule {
108
+ id: string;
109
+ name: string;
110
+ applies: (analysis: RepoAnalysis) => boolean;
111
+ gaps: GapCheck[];
112
+ conventions: Convention[];
113
+ interdictions: string[];
114
+ crossRefs: CrossRef[];
115
+ }
116
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "leadcode",
3
+ "version": "0.1.0",
4
+ "description": "Virtual Lead Tech MCP server for Claude Code – analyzes repos, detects gaps, and generates structured CLAUDE.md files",
5
+ "type": "module",
6
+ "bin": {
7
+ "leadcode": "./bin/leadcode.js"
8
+ },
9
+ "main": "./dist/index.js",
10
+ "files": [
11
+ "dist",
12
+ "bin"
13
+ ],
14
+ "scripts": {
15
+ "build": "tsc",
16
+ "dev": "tsc --watch",
17
+ "start": "node dist/index.js"
18
+ },
19
+ "keywords": [
20
+ "mcp",
21
+ "mcp-server",
22
+ "claude",
23
+ "claude-code",
24
+ "lead-tech",
25
+ "context",
26
+ "vibe-coding",
27
+ "conventions",
28
+ "code-quality",
29
+ "developer-tools"
30
+ ],
31
+ "author": {
32
+ "name": "Jules Toussenel",
33
+ "url": "https://github.com/Julxoo"
34
+ },
35
+ "repository": {
36
+ "type": "git",
37
+ "url": "https://github.com/Julxoo/LeadCode.git"
38
+ },
39
+ "bugs": {
40
+ "url": "https://github.com/Julxoo/LeadCode/issues"
41
+ },
42
+ "homepage": "https://github.com/Julxoo/LeadCode#readme",
43
+ "license": "MIT",
44
+ "dependencies": {
45
+ "@modelcontextprotocol/sdk": "^1.12.1",
46
+ "zod": "^3.24.0"
47
+ },
48
+ "devDependencies": {
49
+ "@types/node": "^22.0.0",
50
+ "typescript": "^5.7.0"
51
+ },
52
+ "engines": {
53
+ "node": ">=18"
54
+ }
55
+ }