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.
- package/LICENSE +21 -0
- package/README.md +186 -0
- package/bin/leadcode.js +2 -0
- package/dist/analyzers/constants.d.ts +3 -0
- package/dist/analyzers/constants.d.ts.map +1 -0
- package/dist/analyzers/constants.js +14 -0
- package/dist/analyzers/constants.js.map +1 -0
- package/dist/analyzers/dependencies.d.ts +8 -0
- package/dist/analyzers/dependencies.d.ts.map +1 -0
- package/dist/analyzers/dependencies.js +13 -0
- package/dist/analyzers/dependencies.js.map +1 -0
- package/dist/analyzers/detection.d.ts +6 -0
- package/dist/analyzers/detection.d.ts.map +1 -0
- package/dist/analyzers/detection.js +334 -0
- package/dist/analyzers/detection.js.map +1 -0
- package/dist/analyzers/patterns.d.ts +12 -0
- package/dist/analyzers/patterns.d.ts.map +1 -0
- package/dist/analyzers/patterns.js +84 -0
- package/dist/analyzers/patterns.js.map +1 -0
- package/dist/analyzers/structure.d.ts +3 -0
- package/dist/analyzers/structure.d.ts.map +1 -0
- package/dist/analyzers/structure.js +217 -0
- package/dist/analyzers/structure.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +64 -0
- package/dist/index.js.map +1 -0
- package/dist/rules/auth.d.ts +3 -0
- package/dist/rules/auth.d.ts.map +1 -0
- package/dist/rules/auth.js +48 -0
- package/dist/rules/auth.js.map +1 -0
- package/dist/rules/cross-stack.d.ts +3 -0
- package/dist/rules/cross-stack.d.ts.map +1 -0
- package/dist/rules/cross-stack.js +320 -0
- package/dist/rules/cross-stack.js.map +1 -0
- package/dist/rules/drizzle.d.ts +3 -0
- package/dist/rules/drizzle.d.ts.map +1 -0
- package/dist/rules/drizzle.js +43 -0
- package/dist/rules/drizzle.js.map +1 -0
- package/dist/rules/index.d.ts +7 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/rules/index.js +104 -0
- package/dist/rules/index.js.map +1 -0
- package/dist/rules/nextjs.d.ts +4 -0
- package/dist/rules/nextjs.d.ts.map +1 -0
- package/dist/rules/nextjs.js +86 -0
- package/dist/rules/nextjs.js.map +1 -0
- package/dist/rules/node.d.ts +3 -0
- package/dist/rules/node.d.ts.map +1 -0
- package/dist/rules/node.js +61 -0
- package/dist/rules/node.js.map +1 -0
- package/dist/rules/prisma.d.ts +3 -0
- package/dist/rules/prisma.d.ts.map +1 -0
- package/dist/rules/prisma.js +44 -0
- package/dist/rules/prisma.js.map +1 -0
- package/dist/rules/react.d.ts +3 -0
- package/dist/rules/react.d.ts.map +1 -0
- package/dist/rules/react.js +58 -0
- package/dist/rules/react.js.map +1 -0
- package/dist/rules/state.d.ts +3 -0
- package/dist/rules/state.d.ts.map +1 -0
- package/dist/rules/state.js +54 -0
- package/dist/rules/state.js.map +1 -0
- package/dist/rules/tailwind.d.ts +3 -0
- package/dist/rules/tailwind.d.ts.map +1 -0
- package/dist/rules/tailwind.js +41 -0
- package/dist/rules/tailwind.js.map +1 -0
- package/dist/rules/trpc.d.ts +3 -0
- package/dist/rules/trpc.d.ts.map +1 -0
- package/dist/rules/trpc.js +35 -0
- package/dist/rules/trpc.js.map +1 -0
- package/dist/rules/typescript.d.ts +3 -0
- package/dist/rules/typescript.d.ts.map +1 -0
- package/dist/rules/typescript.js +54 -0
- package/dist/rules/typescript.js.map +1 -0
- package/dist/rules/validation.d.ts +3 -0
- package/dist/rules/validation.d.ts.map +1 -0
- package/dist/rules/validation.js +38 -0
- package/dist/rules/validation.js.map +1 -0
- package/dist/templates/claude-md.d.ts +4 -0
- package/dist/templates/claude-md.d.ts.map +1 -0
- package/dist/templates/claude-md.js +309 -0
- package/dist/templates/claude-md.js.map +1 -0
- package/dist/tools/analyze-repo.d.ts +3 -0
- package/dist/tools/analyze-repo.d.ts.map +1 -0
- package/dist/tools/analyze-repo.js +68 -0
- package/dist/tools/analyze-repo.js.map +1 -0
- package/dist/tools/detect-gaps.d.ts +3 -0
- package/dist/tools/detect-gaps.d.ts.map +1 -0
- package/dist/tools/detect-gaps.js +34 -0
- package/dist/tools/detect-gaps.js.map +1 -0
- package/dist/tools/generate-claude-md.d.ts +3 -0
- package/dist/tools/generate-claude-md.d.ts.map +1 -0
- package/dist/tools/generate-claude-md.js +70 -0
- package/dist/tools/generate-claude-md.js.map +1 -0
- package/dist/tools/suggest.d.ts +3 -0
- package/dist/tools/suggest.d.ts.map +1 -0
- package/dist/tools/suggest.js +340 -0
- package/dist/tools/suggest.js.map +1 -0
- package/dist/tools/update-claude-md.d.ts +3 -0
- package/dist/tools/update-claude-md.d.ts.map +1 -0
- package/dist/tools/update-claude-md.js +108 -0
- package/dist/tools/update-claude-md.js.map +1 -0
- package/dist/tools/validate-claude-md.d.ts +3 -0
- package/dist/tools/validate-claude-md.d.ts.map +1 -0
- package/dist/tools/validate-claude-md.js +137 -0
- package/dist/tools/validate-claude-md.js.map +1 -0
- package/dist/types.d.ts +116 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +55 -0
package/dist/types.d.ts
ADDED
|
@@ -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 @@
|
|
|
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
|
+
}
|