leadcode 1.3.0 → 1.5.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 +36 -50
- package/dist/analyzers/patterns.d.ts +9 -0
- package/dist/analyzers/patterns.d.ts.map +1 -1
- package/dist/analyzers/patterns.js +208 -6
- package/dist/analyzers/patterns.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +0 -65
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/fr.d.ts.map +1 -1
- package/dist/i18n/fr.js +0 -65
- package/dist/i18n/fr.js.map +1 -1
- package/dist/i18n/types.d.ts +0 -59
- package/dist/i18n/types.d.ts.map +1 -1
- package/dist/templates/claude-md.d.ts.map +1 -1
- package/dist/templates/claude-md.js +93 -174
- package/dist/templates/claude-md.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# LeadCode
|
|
2
2
|
|
|
3
|
-
**Your virtual Lead Tech for Claude Code.** An MCP server that analyzes your codebase,
|
|
3
|
+
**Your virtual Lead Tech for Claude Code.** An MCP server that analyzes your codebase, then guides Claude to fetch up-to-date documentation via [Context7](https://context7.com) and community best practices via WebSearch — producing a tailored, concise `CLAUDE.md` so Claude Code understands your project like a senior engineer would.
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/leadcode)
|
|
6
6
|
[](https://opensource.org/licenses/MIT)
|
|
@@ -17,25 +17,30 @@ Claude Code is powerful, but its output quality depends on context. Without clea
|
|
|
17
17
|
- Forget auth checks on new routes
|
|
18
18
|
- Use inline styles when your project uses Tailwind
|
|
19
19
|
|
|
20
|
-
**LeadCode fixes this.** It scans your project, detects
|
|
20
|
+
**LeadCode fixes this.** It scans your project, detects your stack, and orchestrates Claude to fetch official docs + community best practices for each technology — then synthesizes everything into a compact `CLAUDE.md` with actionable rules.
|
|
21
21
|
|
|
22
22
|
## How It Works
|
|
23
23
|
|
|
24
24
|
```
|
|
25
|
-
Your Project ──→ LeadCode (
|
|
25
|
+
Your Project ──→ LeadCode (analyze) ──→ Claude reads tech-queries resource
|
|
26
|
+
↓
|
|
27
|
+
Context7 MCP (official docs × N techs)
|
|
28
|
+
WebSearch (best practices, architecture, gotchas)
|
|
29
|
+
↓
|
|
30
|
+
Claude synthesizes 3-5 rules per tech
|
|
31
|
+
↓
|
|
32
|
+
LeadCode (generate) ──→ CLAUDE.md
|
|
26
33
|
```
|
|
27
34
|
|
|
28
35
|
1. **Analyze** — Scans `package.json`, directory structure, and source code patterns
|
|
29
36
|
2. **Detect** — Identifies your stack across 25+ categories (framework, ORM, auth, CSS, testing, i18n, etc.)
|
|
30
|
-
3. **Fetch
|
|
31
|
-
4. **Generate** — Writes a structured `CLAUDE.md` with
|
|
37
|
+
3. **Fetch & Synthesize** — Claude reads the tech-queries mapping, calls Context7 for official docs and WebSearch for community knowledge, then synthesizes into concise actionable rules
|
|
38
|
+
4. **Generate** — Writes a structured `CLAUDE.md` (~100-150 lines) with version-specific conventions
|
|
32
39
|
|
|
33
40
|
## Installation
|
|
34
41
|
|
|
35
42
|
LeadCode requires **two MCP servers**: LeadCode itself and Context7 (for documentation fetching).
|
|
36
43
|
|
|
37
|
-
**Two commands:**
|
|
38
|
-
|
|
39
44
|
```bash
|
|
40
45
|
claude mcp add --scope project leadcode -- npx -y leadcode@latest
|
|
41
46
|
claude mcp add --scope project context7 -- npx -y @upstash/context7-mcp@latest
|
|
@@ -45,14 +50,6 @@ Restart Claude Code and you're ready.
|
|
|
45
50
|
|
|
46
51
|
> Use `--scope user` instead of `--scope project` to install globally across all your projects.
|
|
47
52
|
|
|
48
|
-
**Optional:** Set a Context7 API key for higher rate limits (free tier works without it):
|
|
49
|
-
|
|
50
|
-
```bash
|
|
51
|
-
export CONTEXT7_API_KEY=your_key_here
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
Get a key at [context7.com/dashboard](https://context7.com/dashboard).
|
|
55
|
-
|
|
56
53
|
## Usage
|
|
57
54
|
|
|
58
55
|
### Quick Start (Recommended)
|
|
@@ -63,30 +60,34 @@ Use the built-in prompt in Claude Code:
|
|
|
63
60
|
Use the setup-project prompt with /path/to/your/project
|
|
64
61
|
```
|
|
65
62
|
|
|
66
|
-
This walks through the full workflow: analyze → fetch docs → generate `CLAUDE.md`.
|
|
67
|
-
|
|
68
|
-
### Manual Tool Usage
|
|
69
|
-
|
|
70
|
-
Each tool can be called individually:
|
|
63
|
+
This walks through the full workflow: analyze → fetch docs → synthesize → generate `CLAUDE.md`.
|
|
71
64
|
|
|
72
|
-
|
|
73
|
-
Scans a project and returns structured facts — framework, dependencies, directory structure, detected stack.
|
|
65
|
+
Or simply ask naturally:
|
|
74
66
|
|
|
75
67
|
```
|
|
76
|
-
|
|
68
|
+
Generate a CLAUDE.md for this project
|
|
77
69
|
```
|
|
78
70
|
|
|
79
|
-
|
|
80
|
-
|
|
71
|
+
### Available Tools
|
|
72
|
+
|
|
73
|
+
#### `analyze-repo`
|
|
74
|
+
Scans a project and returns structured facts — framework, dependencies, directory structure, detected stack.
|
|
81
75
|
|
|
82
76
|
#### `generate-claude-md`
|
|
83
|
-
Generates and writes `CLAUDE.md` to the project root
|
|
77
|
+
Generates and writes `CLAUDE.md` to the project root. Accepts pre-synthesized documentation from Claude's orchestration of Context7 + WebSearch.
|
|
84
78
|
|
|
85
79
|
#### `validate-claude-md`
|
|
86
80
|
Checks if an existing `CLAUDE.md` is still in sync with the project. Detects drifts after adding dependencies or changing structure.
|
|
87
81
|
|
|
88
|
-
|
|
89
|
-
|
|
82
|
+
### Available Prompts
|
|
83
|
+
|
|
84
|
+
- **`setup-project`** — Full workflow to generate a CLAUDE.md from scratch
|
|
85
|
+
- **`update-project`** — Re-analyzes and regenerates while preserving your Project Decisions
|
|
86
|
+
- **`validate-project`** — Checks if your CLAUDE.md is still up to date
|
|
87
|
+
|
|
88
|
+
### Resources
|
|
89
|
+
|
|
90
|
+
- **`leadcode://tech-queries`** — Mapping of detected technologies to Context7 library names and recommended queries. Used by Claude during the orchestration flow.
|
|
90
91
|
|
|
91
92
|
## What Gets Detected
|
|
92
93
|
|
|
@@ -116,7 +117,6 @@ Next.js (App/Pages Router), Nuxt, Remix, Astro, SvelteKit, SolidStart, Vite+Reac
|
|
|
116
117
|
| Database | PostgreSQL, MySQL, SQLite, MongoDB, Supabase, PlanetScale, Redis |
|
|
117
118
|
| API Style | tRPC, GraphQL |
|
|
118
119
|
| Monorepo | Turborepo, Nx, Lerna |
|
|
119
|
-
| Deployment | Vercel |
|
|
120
120
|
| Runtime | Node, Bun, Deno |
|
|
121
121
|
|
|
122
122
|
### Code Patterns
|
|
@@ -124,34 +124,21 @@ Next.js (App/Pages Router), Nuxt, Remix, Astro, SvelteKit, SolidStart, Vite+Reac
|
|
|
124
124
|
- `'use server'` file count
|
|
125
125
|
- Path alias usage (`@/` or `~/`)
|
|
126
126
|
- Barrel file patterns
|
|
127
|
-
- Large files (>300 lines)
|
|
128
|
-
- `console.log` count
|
|
129
127
|
|
|
130
128
|
## What Gets Generated
|
|
131
129
|
|
|
132
|
-
The `CLAUDE.md`
|
|
133
|
-
|
|
134
|
-
1. **Architecture Overview** — Framework, data layer, auth, project size
|
|
135
|
-
2. **Stack** — All detected technologies with versions
|
|
136
|
-
3. **Project Structure** — Directories, special files
|
|
137
|
-
4. **Available Scripts** — `npm run` commands
|
|
138
|
-
5. **Per-Technology Conventions** — Up-to-date best practices from official docs (via Context7)
|
|
139
|
-
6. **Cross-Stack Rules** — Best practices for technology combinations (e.g., Next.js + Prisma, Zod + react-hook-form)
|
|
140
|
-
7. **File & Naming Conventions** — kebab-case, PascalCase rules
|
|
141
|
-
8. **Import Ordering** — Node builtins → external → internal → relative → types
|
|
142
|
-
9. **Existing Code Patterns** — Patterns detected in your code to respect
|
|
143
|
-
10. **Claude Code Instructions** — Dynamic instructions based on your stack
|
|
144
|
-
|
|
145
|
-
### Cross-Technology Documentation
|
|
146
|
-
|
|
147
|
-
LeadCode fetches specific documentation for technology pairs detected in your project:
|
|
130
|
+
The `CLAUDE.md` is organized into:
|
|
148
131
|
|
|
149
|
-
|
|
132
|
+
1. **Architecture Overview** — Framework, data layer, auth, project size, structure, scripts, code patterns
|
|
133
|
+
2. **Per-Technology Sections** — 3-5 concise, actionable rules per tech (from Context7 official docs + WebSearch)
|
|
134
|
+
3. **Cross-Stack Conventions** — Unified rules for how all detected technologies work together
|
|
135
|
+
4. **Conventions** — File naming and import ordering
|
|
136
|
+
5. **Project Decisions** — User choices preserved across regenerations
|
|
150
137
|
|
|
151
138
|
## Requirements
|
|
152
139
|
|
|
153
140
|
- **Node.js** >= 18
|
|
154
|
-
- **Context7 MCP server** installed alongside LeadCode
|
|
141
|
+
- **Context7 MCP server** installed alongside LeadCode (for documentation fetching)
|
|
155
142
|
- The target project must have a `package.json`
|
|
156
143
|
- Currently optimized for JavaScript/TypeScript projects
|
|
157
144
|
|
|
@@ -161,7 +148,6 @@ LeadCode fetches specific documentation for technology pairs detected in your pr
|
|
|
161
148
|
- **Single package.json** — Monorepo support detects the tool but analyzes only the root
|
|
162
149
|
- **No lint config reading** — Detects ESLint/Biome but doesn't parse their rules
|
|
163
150
|
- **No CI/CD detection** — GitHub Actions, etc. are not analyzed
|
|
164
|
-
- **Requires Context7** — Documentation quality depends on Context7's library coverage
|
|
165
151
|
|
|
166
152
|
## Contributing
|
|
167
153
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export type NamingStyle = "kebab-case" | "camelCase" | "PascalCase" | "snake_case" | "mixed";
|
|
1
2
|
export interface CodePatterns {
|
|
2
3
|
useClientCount: number;
|
|
3
4
|
useServerCount: number;
|
|
@@ -7,6 +8,14 @@ export interface CodePatterns {
|
|
|
7
8
|
usesPathAlias: boolean;
|
|
8
9
|
largeFiles: string[];
|
|
9
10
|
consoleLogCount: number;
|
|
11
|
+
fileNamingStyle: NamingStyle;
|
|
12
|
+
hasReactFiles: boolean;
|
|
13
|
+
importOrder: string[] | null;
|
|
14
|
+
indentation: {
|
|
15
|
+
style: "spaces" | "tabs";
|
|
16
|
+
size?: number;
|
|
17
|
+
} | null;
|
|
18
|
+
quoteStyle: "single" | "double" | "mixed" | null;
|
|
10
19
|
}
|
|
11
20
|
export declare function analyzePatterns(projectPath: string): Promise<CodePatterns>;
|
|
12
21
|
//# sourceMappingURL=patterns.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../src/analyzers/patterns.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../src/analyzers/patterns.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,WAAW,GAAG,YAAY,GAAG,YAAY,GAAG,OAAO,CAAC;AAE7F,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IAExB,eAAe,EAAE,WAAW,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE;QAAE,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAChE,UAAU,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC;CAClD;AAyPD,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CA8DhF"}
|
|
@@ -1,7 +1,86 @@
|
|
|
1
1
|
import { readdir, readFile } from "node:fs/promises";
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { IGNORE_DIRS as IGNORE, SOURCE_EXTS } from "./constants.js";
|
|
4
|
-
|
|
4
|
+
const NODE_BUILTINS = new Set([
|
|
5
|
+
"assert", "buffer", "child_process", "cluster", "crypto", "dgram", "dns",
|
|
6
|
+
"events", "fs", "http", "http2", "https", "net", "os", "path", "perf_hooks",
|
|
7
|
+
"process", "querystring", "readline", "stream", "string_decoder", "timers",
|
|
8
|
+
"tls", "tty", "url", "util", "v8", "vm", "worker_threads", "zlib",
|
|
9
|
+
]);
|
|
10
|
+
function classifyFileName(name) {
|
|
11
|
+
const stem = name.replace(/\.[^.]+$/, "");
|
|
12
|
+
// Skip index files — not meaningful for naming style
|
|
13
|
+
if (stem === "index")
|
|
14
|
+
return "";
|
|
15
|
+
if (/^[a-z][a-z0-9]*(-[a-z0-9]+)+$/.test(stem))
|
|
16
|
+
return "kebab-case";
|
|
17
|
+
if (/^[a-z][a-z0-9]*(_[a-z0-9]+)+$/.test(stem))
|
|
18
|
+
return "snake_case";
|
|
19
|
+
if (/^[A-Z][a-zA-Z0-9]*$/.test(stem))
|
|
20
|
+
return "PascalCase";
|
|
21
|
+
if (/^[a-z][a-zA-Z0-9]*$/.test(stem))
|
|
22
|
+
return "camelCase";
|
|
23
|
+
return "";
|
|
24
|
+
}
|
|
25
|
+
function classifyImport(specifier) {
|
|
26
|
+
if (specifier.startsWith("node:"))
|
|
27
|
+
return "builtin";
|
|
28
|
+
if (NODE_BUILTINS.has(specifier.split("/")[0]))
|
|
29
|
+
return "builtin";
|
|
30
|
+
if (specifier.startsWith("@/") || specifier.startsWith("~/"))
|
|
31
|
+
return "alias";
|
|
32
|
+
if (specifier.startsWith("."))
|
|
33
|
+
return "relative";
|
|
34
|
+
return "external";
|
|
35
|
+
}
|
|
36
|
+
function extractImportOrder(content) {
|
|
37
|
+
const importRegex = /^(import\s+type\s+.*?from\s+|import\s+.*?from\s+)(['"])(.*?)\2/gm;
|
|
38
|
+
const categories = [];
|
|
39
|
+
let match;
|
|
40
|
+
while ((match = importRegex.exec(content)) !== null) {
|
|
41
|
+
const isTypeImport = match[1].startsWith("import type");
|
|
42
|
+
const specifier = match[3];
|
|
43
|
+
if (isTypeImport) {
|
|
44
|
+
categories.push("type");
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
categories.push(classifyImport(specifier));
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (categories.length < 3)
|
|
51
|
+
return null;
|
|
52
|
+
// Deduplicate consecutive same categories to get the order pattern
|
|
53
|
+
const order = [];
|
|
54
|
+
for (const cat of categories) {
|
|
55
|
+
if (order[order.length - 1] !== cat) {
|
|
56
|
+
order.push(cat);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return order;
|
|
60
|
+
}
|
|
61
|
+
function detectIndentation(content) {
|
|
62
|
+
const lines = content.split("\n").slice(0, 50);
|
|
63
|
+
let tabs = 0;
|
|
64
|
+
let spaces = 0;
|
|
65
|
+
let spaceSize = 0;
|
|
66
|
+
for (const line of lines) {
|
|
67
|
+
if (line.startsWith("\t"))
|
|
68
|
+
tabs++;
|
|
69
|
+
else if (line.startsWith(" ")) {
|
|
70
|
+
spaces++;
|
|
71
|
+
const indent = line.match(/^( +)/);
|
|
72
|
+
if (indent && spaceSize === 0)
|
|
73
|
+
spaceSize = indent[1].length;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (tabs === 0 && spaces === 0)
|
|
77
|
+
return null;
|
|
78
|
+
if (tabs > spaces)
|
|
79
|
+
return { style: "tabs" };
|
|
80
|
+
const size = spaceSize <= 2 ? 2 : 4;
|
|
81
|
+
return { style: "spaces", size };
|
|
82
|
+
}
|
|
83
|
+
async function scanDir(dir, patterns, counters, maxDepth = 6) {
|
|
5
84
|
if (maxDepth <= 0)
|
|
6
85
|
return;
|
|
7
86
|
let entries;
|
|
@@ -15,12 +94,17 @@ async function scanDir(dir, patterns, maxDepth = 6) {
|
|
|
15
94
|
if (IGNORE.has(entry.name) || entry.name.startsWith("."))
|
|
16
95
|
continue;
|
|
17
96
|
if (entry.isDirectory()) {
|
|
18
|
-
await scanDir(join(dir, entry.name), patterns, maxDepth - 1);
|
|
97
|
+
await scanDir(join(dir, entry.name), patterns, counters, maxDepth - 1);
|
|
19
98
|
continue;
|
|
20
99
|
}
|
|
21
100
|
const ext = entry.name.split(".").pop() ?? "";
|
|
22
101
|
if (!SOURCE_EXTS.has(ext))
|
|
23
102
|
continue;
|
|
103
|
+
// File naming classification
|
|
104
|
+
const style = classifyFileName(entry.name);
|
|
105
|
+
if (style) {
|
|
106
|
+
counters.namingCounts[style] = (counters.namingCounts[style] ?? 0) + 1;
|
|
107
|
+
}
|
|
24
108
|
const filePath = join(dir, entry.name);
|
|
25
109
|
let content;
|
|
26
110
|
try {
|
|
@@ -57,12 +141,88 @@ async function scanDir(dir, patterns, maxDepth = 6) {
|
|
|
57
141
|
patterns.largeFiles.push(filePath);
|
|
58
142
|
}
|
|
59
143
|
// Console.log count
|
|
60
|
-
const
|
|
61
|
-
if (
|
|
62
|
-
patterns.consoleLogCount +=
|
|
144
|
+
const consoleMatches = content.match(/console\.log\(/g);
|
|
145
|
+
if (consoleMatches) {
|
|
146
|
+
patterns.consoleLogCount += consoleMatches.length;
|
|
147
|
+
}
|
|
148
|
+
// Quote style from imports
|
|
149
|
+
const singleQ = (content.match(/from\s+'/g) ?? []).length;
|
|
150
|
+
const doubleQ = (content.match(/from\s+"/g) ?? []).length;
|
|
151
|
+
counters.singleQuotes += singleQ;
|
|
152
|
+
counters.doubleQuotes += doubleQ;
|
|
153
|
+
// Indentation sample (first 20 files with indentation)
|
|
154
|
+
if (counters.tabIndents + counters.spaceIndents < 20) {
|
|
155
|
+
const indent = detectIndentation(content);
|
|
156
|
+
if (indent) {
|
|
157
|
+
if (indent.style === "tabs")
|
|
158
|
+
counters.tabIndents++;
|
|
159
|
+
else {
|
|
160
|
+
counters.spaceIndents++;
|
|
161
|
+
if (indent.size)
|
|
162
|
+
counters.spaceSizes.push(indent.size);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
// Import order sample (first 30 files with imports)
|
|
167
|
+
if (counters.importOrderSamples.length < 30) {
|
|
168
|
+
const order = extractImportOrder(content);
|
|
169
|
+
if (order)
|
|
170
|
+
counters.importOrderSamples.push(order);
|
|
63
171
|
}
|
|
64
172
|
}
|
|
65
173
|
}
|
|
174
|
+
const IMPORT_CATEGORY_LABELS = {
|
|
175
|
+
builtin: "Node builtins",
|
|
176
|
+
external: "external packages",
|
|
177
|
+
alias: "internal aliases (@/)",
|
|
178
|
+
relative: "relative imports",
|
|
179
|
+
type: "type imports",
|
|
180
|
+
};
|
|
181
|
+
function resolveImportOrder(samples) {
|
|
182
|
+
if (samples.length < 3)
|
|
183
|
+
return null;
|
|
184
|
+
// Count how often each category appears at each position
|
|
185
|
+
const positionCounts = {
|
|
186
|
+
builtin: [], external: [], alias: [], relative: [], type: [],
|
|
187
|
+
};
|
|
188
|
+
for (const sample of samples) {
|
|
189
|
+
for (let i = 0; i < sample.length; i++) {
|
|
190
|
+
const cat = sample[i];
|
|
191
|
+
if (!positionCounts[cat][i])
|
|
192
|
+
positionCounts[cat][i] = 0;
|
|
193
|
+
positionCounts[cat][i]++;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
// Find the most common categories (present in >20% of samples)
|
|
197
|
+
const threshold = samples.length * 0.2;
|
|
198
|
+
const presentCategories = Object.keys(positionCounts).filter(cat => positionCounts[cat].reduce((a, b) => a + b, 0) > threshold);
|
|
199
|
+
// Sort by average position
|
|
200
|
+
const avgPos = (cat) => {
|
|
201
|
+
const counts = positionCounts[cat];
|
|
202
|
+
let total = 0, weight = 0;
|
|
203
|
+
for (let i = 0; i < counts.length; i++) {
|
|
204
|
+
if (counts[i]) {
|
|
205
|
+
total += i * counts[i];
|
|
206
|
+
weight += counts[i];
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return weight > 0 ? total / weight : 999;
|
|
210
|
+
};
|
|
211
|
+
presentCategories.sort((a, b) => avgPos(a) - avgPos(b));
|
|
212
|
+
if (presentCategories.length < 2)
|
|
213
|
+
return null;
|
|
214
|
+
return presentCategories.map(c => IMPORT_CATEGORY_LABELS[c]);
|
|
215
|
+
}
|
|
216
|
+
function resolveNamingStyle(counts) {
|
|
217
|
+
const total = Object.values(counts).reduce((a, b) => a + b, 0);
|
|
218
|
+
if (total === 0)
|
|
219
|
+
return "mixed";
|
|
220
|
+
const sorted = Object.entries(counts).sort((a, b) => b[1] - a[1]);
|
|
221
|
+
const [topStyle, topCount] = sorted[0];
|
|
222
|
+
if (topCount / total >= 0.6)
|
|
223
|
+
return topStyle;
|
|
224
|
+
return "mixed";
|
|
225
|
+
}
|
|
66
226
|
export async function analyzePatterns(projectPath) {
|
|
67
227
|
const patterns = {
|
|
68
228
|
useClientCount: 0,
|
|
@@ -73,12 +233,54 @@ export async function analyzePatterns(projectPath) {
|
|
|
73
233
|
usesPathAlias: false,
|
|
74
234
|
largeFiles: [],
|
|
75
235
|
consoleLogCount: 0,
|
|
236
|
+
fileNamingStyle: "mixed",
|
|
237
|
+
hasReactFiles: false,
|
|
238
|
+
importOrder: null,
|
|
239
|
+
indentation: null,
|
|
240
|
+
quoteStyle: null,
|
|
76
241
|
};
|
|
77
|
-
|
|
242
|
+
const counters = {
|
|
243
|
+
namingCounts: {},
|
|
244
|
+
singleQuotes: 0,
|
|
245
|
+
doubleQuotes: 0,
|
|
246
|
+
tabIndents: 0,
|
|
247
|
+
spaceIndents: 0,
|
|
248
|
+
spaceSizes: [],
|
|
249
|
+
importOrderSamples: [],
|
|
250
|
+
};
|
|
251
|
+
await scanDir(projectPath, patterns, counters);
|
|
252
|
+
// Derive computed fields
|
|
78
253
|
patterns.clientRatio =
|
|
79
254
|
patterns.totalComponents > 0
|
|
80
255
|
? patterns.useClientCount / patterns.totalComponents
|
|
81
256
|
: 0;
|
|
257
|
+
patterns.hasReactFiles = patterns.totalComponents > 0;
|
|
258
|
+
patterns.fileNamingStyle = resolveNamingStyle(counters.namingCounts);
|
|
259
|
+
patterns.importOrder = resolveImportOrder(counters.importOrderSamples);
|
|
260
|
+
// Quote style
|
|
261
|
+
const totalQuotes = counters.singleQuotes + counters.doubleQuotes;
|
|
262
|
+
if (totalQuotes > 0) {
|
|
263
|
+
const singleRatio = counters.singleQuotes / totalQuotes;
|
|
264
|
+
if (singleRatio > 0.8)
|
|
265
|
+
patterns.quoteStyle = "single";
|
|
266
|
+
else if (singleRatio < 0.2)
|
|
267
|
+
patterns.quoteStyle = "double";
|
|
268
|
+
else
|
|
269
|
+
patterns.quoteStyle = "mixed";
|
|
270
|
+
}
|
|
271
|
+
// Indentation
|
|
272
|
+
const totalIndent = counters.tabIndents + counters.spaceIndents;
|
|
273
|
+
if (totalIndent > 0) {
|
|
274
|
+
if (counters.tabIndents > counters.spaceIndents) {
|
|
275
|
+
patterns.indentation = { style: "tabs" };
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
const avgSize = counters.spaceSizes.length > 0
|
|
279
|
+
? Math.round(counters.spaceSizes.reduce((a, b) => a + b, 0) / counters.spaceSizes.length)
|
|
280
|
+
: 2;
|
|
281
|
+
patterns.indentation = { style: "spaces", size: avgSize <= 2 ? 2 : 4 };
|
|
282
|
+
}
|
|
283
|
+
}
|
|
82
284
|
return patterns;
|
|
83
285
|
}
|
|
84
286
|
//# sourceMappingURL=patterns.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../src/analyzers/patterns.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../src/analyzers/patterns.ts"],"names":[],"mappings":"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"}
|
package/dist/i18n/en.d.ts.map
CHANGED
|
@@ -1 +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,
|
|
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,QA8DhB,CAAC"}
|
package/dist/i18n/en.js
CHANGED
|
@@ -7,14 +7,7 @@ export const en = {
|
|
|
7
7
|
},
|
|
8
8
|
sections: {
|
|
9
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
10
|
projectDecisions: "Project Decisions",
|
|
16
|
-
existingPatterns: "Existing Code Patterns",
|
|
17
|
-
claudeInstructions: "Claude Code Instructions",
|
|
18
11
|
},
|
|
19
12
|
architecture: {
|
|
20
13
|
frontendBackend: "Frontend + Backend",
|
|
@@ -41,32 +34,6 @@ export const en = {
|
|
|
41
34
|
sizeVeryLarge: "Very large",
|
|
42
35
|
sourceFiles: "source files",
|
|
43
36
|
},
|
|
44
|
-
stackLabels: {
|
|
45
|
-
framework: "Framework",
|
|
46
|
-
orm: "ORM",
|
|
47
|
-
database: "Database",
|
|
48
|
-
auth: "Auth",
|
|
49
|
-
validation: "Validation",
|
|
50
|
-
css: "CSS",
|
|
51
|
-
uiComponents: "UI Components",
|
|
52
|
-
testing: "Testing",
|
|
53
|
-
stateManagement: "State Management",
|
|
54
|
-
dataFetching: "Data Fetching",
|
|
55
|
-
formLibrary: "Forms",
|
|
56
|
-
apiStyle: "API Style",
|
|
57
|
-
i18n: "i18n",
|
|
58
|
-
payments: "Payments",
|
|
59
|
-
email: "Email",
|
|
60
|
-
realtime: "Realtime",
|
|
61
|
-
cms: "CMS/Content",
|
|
62
|
-
fileUpload: "File Upload",
|
|
63
|
-
jobs: "Jobs/Queue",
|
|
64
|
-
monorepo: "Monorepo",
|
|
65
|
-
deployment: "Deployment",
|
|
66
|
-
linter: "Linter",
|
|
67
|
-
formatter: "Formatter",
|
|
68
|
-
runtime: "Runtime",
|
|
69
|
-
},
|
|
70
37
|
structure: {
|
|
71
38
|
srcDir: "Source code in `src/`",
|
|
72
39
|
appRouter: "App Router: `app/`",
|
|
@@ -84,38 +51,6 @@ export const en = {
|
|
|
84
51
|
reactProviders: "React providers: `providers/`",
|
|
85
52
|
prismaSchema: "Prisma schema: `prisma/schema.prisma`",
|
|
86
53
|
},
|
|
87
|
-
naming: {
|
|
88
|
-
files: "**Files**: kebab-case (e.g., `user-profile.ts`, `auth-utils.ts`)",
|
|
89
|
-
reactComponents: "**React components**: PascalCase filename matching component name (e.g., `UserProfile.tsx` exports `UserProfile`)",
|
|
90
|
-
hooks: "**Hooks**: camelCase prefixed with `use` (e.g., `useAuth.ts`)",
|
|
91
|
-
constants: "**Constants/config**: SCREAMING_SNAKE_CASE for values, kebab-case for files",
|
|
92
|
-
newFilesSrc: "**New files**: Place in `src/` following the existing directory structure",
|
|
93
|
-
},
|
|
94
|
-
importOrder: [
|
|
95
|
-
"1. Node.js builtins (node:fs, node:path)",
|
|
96
|
-
"2. External packages (react, next, etc.)",
|
|
97
|
-
"3. Internal aliases (@/ or ~/)",
|
|
98
|
-
"4. Relative imports (../ and ./)",
|
|
99
|
-
"5. Type imports (import type { ... })",
|
|
100
|
-
],
|
|
101
|
-
instructions: {
|
|
102
|
-
followAll: "Follow ALL rules in this document without exception.",
|
|
103
|
-
respectStructure: "When creating new files, respect the existing project structure and naming conventions.",
|
|
104
|
-
checkPrecedent: "When unsure about a pattern, check existing code for precedent before inventing new patterns.",
|
|
105
|
-
neverNewDeps: "Never introduce new dependencies without being explicitly asked.",
|
|
106
|
-
smallChanges: "Prefer small, focused changes over large refactors.",
|
|
107
|
-
serverComponents: "Default to Server Components. Only add 'use client' when the component needs interactivity.",
|
|
108
|
-
appRouterPages: "Place new pages in app/ following the existing route structure.",
|
|
109
|
-
serverActions: "Use Server Actions for mutations, Route Handlers for API endpoints.",
|
|
110
|
-
prismaAfterChange: "After changing schema.prisma, always run `npx prisma migrate dev` and `npx prisma generate`.",
|
|
111
|
-
drizzleAfterChange: "After changing Drizzle schemas, run `npx drizzle-kit generate` to create migrations.",
|
|
112
|
-
zodValidate: "Validate all inputs at API boundaries with Zod. Parse, don't validate.",
|
|
113
|
-
tailwindClasses: "Use Tailwind utility classes for styling. Use cn() for conditional classes.",
|
|
114
|
-
shadcnComponents: "Use shadcn/ui components from components/ui/ as building blocks.",
|
|
115
|
-
runTests: "Run tests with the project's {testing} setup before marking work as done.",
|
|
116
|
-
runLinter: "Run {linter} before committing. Fix all warnings.",
|
|
117
|
-
i18nStrings: "All user-facing strings must go through the i18n system. Never hardcode text.",
|
|
118
|
-
},
|
|
119
54
|
patterns: {
|
|
120
55
|
clientServerRatio: "**Client/Server ratio**: {clientCount} client components out of {totalCount} total ({clientPercent}% client)",
|
|
121
56
|
serverActions: "**Server Actions**: {count} files with 'use server'",
|
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,8KAA8K;YACrL,KAAK,EAAE,mDAAmD;SAC3D;QACD,QAAQ,EAAE;YACR,oBAAoB,EAAE,uBAAuB;YAC7C,
|
|
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,8KAA8K;YACrL,KAAK,EAAE,mDAAmD;SAC3D;QACD,QAAQ,EAAE;YACR,oBAAoB,EAAE,uBAAuB;YAC7C,gBAAgB,EAAE,mBAAmB;SACtC;QACD,YAAY,EAAE;YACZ,eAAe,EAAE,oBAAoB;YACrC,cAAc,EAAE,4BAA4B;YAC5C,QAAQ,EAAE,UAAU;YACpB,YAAY,EAAE,qBAAqB;YACnC,SAAS,EAAE,WAAW;YACtB,SAAS,EAAE,YAAY;YACvB,QAAQ,EAAE,UAAU;YACpB,cAAc,EAAE,gBAAgB;YAChC,GAAG,EAAE,KAAK;YACV,WAAW,EAAE,cAAc;YAC3B,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,SAAS;YAClB,cAAc,EAAE,iBAAiB;YACjC,UAAU,EAAE,aAAa;YACzB,WAAW,EAAE,cAAc;YAC3B,SAAS,EAAE,OAAO;YAClB,UAAU,EAAE,QAAQ;YACpB,SAAS,EAAE,OAAO;YAClB,aAAa,EAAE,YAAY;YAC3B,WAAW,EAAE,cAAc;SAC5B;QACD,SAAS,EAAE;YACT,MAAM,EAAE,uBAAuB;YAC/B,SAAS,EAAE,oBAAoB;YAC/B,WAAW,EAAE,wBAAwB;YACrC,SAAS,EAAE,oBAAoB;YAC/B,UAAU,EAAE,uBAAuB;YACnC,UAAU,EAAE,2BAA2B;YACvC,WAAW,EAAE,0BAA0B;YACvC,QAAQ,EAAE,uBAAuB;YACjC,WAAW,EAAE,wBAAwB;YACrC,WAAW,EAAE,wBAAwB;YACrC,iBAAiB,EAAE,gCAAgC;YACnD,eAAe,EAAE,4BAA4B;YAC7C,aAAa,EAAE,0BAA0B;YACzC,cAAc,EAAE,+BAA+B;YAC/C,YAAY,EAAE,uCAAuC;SACtD;QACD,QAAQ,EAAE;YACR,iBAAiB,EAAE,8GAA8G;YACjI,aAAa,EAAE,qDAAqD;YACpE,WAAW,EAAE,mEAAmE;YAChF,WAAW,EAAE,0EAA0E;YACvF,UAAU,EAAE,oEAAoE;YAChF,WAAW,EAAE,yEAAyE;SACvF;KACF;CACF,CAAC"}
|
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,QA8DhB,CAAC"}
|
package/dist/i18n/fr.js
CHANGED
|
@@ -7,14 +7,7 @@ export const fr = {
|
|
|
7
7
|
},
|
|
8
8
|
sections: {
|
|
9
9
|
architectureOverview: "Vue d'ensemble de l'architecture",
|
|
10
|
-
stack: "Stack technique",
|
|
11
|
-
projectStructure: "Structure du projet",
|
|
12
|
-
availableScripts: "Scripts disponibles",
|
|
13
|
-
fileNaming: "Conventions de nommage",
|
|
14
|
-
importOrdering: "Ordre des imports",
|
|
15
10
|
projectDecisions: "Décisions du projet",
|
|
16
|
-
existingPatterns: "Patterns existants",
|
|
17
|
-
claudeInstructions: "Instructions pour Claude Code",
|
|
18
11
|
},
|
|
19
12
|
architecture: {
|
|
20
13
|
frontendBackend: "Frontend + Backend",
|
|
@@ -41,32 +34,6 @@ export const fr = {
|
|
|
41
34
|
sizeVeryLarge: "Très grand",
|
|
42
35
|
sourceFiles: "fichiers source",
|
|
43
36
|
},
|
|
44
|
-
stackLabels: {
|
|
45
|
-
framework: "Framework",
|
|
46
|
-
orm: "ORM",
|
|
47
|
-
database: "Base de données",
|
|
48
|
-
auth: "Auth",
|
|
49
|
-
validation: "Validation",
|
|
50
|
-
css: "CSS",
|
|
51
|
-
uiComponents: "Composants UI",
|
|
52
|
-
testing: "Tests",
|
|
53
|
-
stateManagement: "Gestion d'état",
|
|
54
|
-
dataFetching: "Data Fetching",
|
|
55
|
-
formLibrary: "Formulaires",
|
|
56
|
-
apiStyle: "Style d'API",
|
|
57
|
-
i18n: "i18n",
|
|
58
|
-
payments: "Paiements",
|
|
59
|
-
email: "Email",
|
|
60
|
-
realtime: "Temps réel",
|
|
61
|
-
cms: "CMS/Contenu",
|
|
62
|
-
fileUpload: "Upload de fichiers",
|
|
63
|
-
jobs: "Jobs/Queue",
|
|
64
|
-
monorepo: "Monorepo",
|
|
65
|
-
deployment: "Déploiement",
|
|
66
|
-
linter: "Linter",
|
|
67
|
-
formatter: "Formatter",
|
|
68
|
-
runtime: "Runtime",
|
|
69
|
-
},
|
|
70
37
|
structure: {
|
|
71
38
|
srcDir: "Code source dans `src/`",
|
|
72
39
|
appRouter: "App Router : `app/`",
|
|
@@ -84,38 +51,6 @@ export const fr = {
|
|
|
84
51
|
reactProviders: "Providers React : `providers/`",
|
|
85
52
|
prismaSchema: "Schéma Prisma : `prisma/schema.prisma`",
|
|
86
53
|
},
|
|
87
|
-
naming: {
|
|
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`)",
|
|
91
|
-
constants: "**Constantes/config** : SCREAMING_SNAKE_CASE pour les valeurs, kebab-case pour les fichiers",
|
|
92
|
-
newFilesSrc: "**Nouveaux fichiers** : Placer dans `src/` en suivant la structure existante",
|
|
93
|
-
},
|
|
94
|
-
importOrder: [
|
|
95
|
-
"1. Builtins Node.js (node:fs, node:path)",
|
|
96
|
-
"2. Packages externes (react, next, etc.)",
|
|
97
|
-
"3. Alias internes (@/ ou ~/)",
|
|
98
|
-
"4. Imports relatifs (../ et ./)",
|
|
99
|
-
"5. Imports de types (import type { ... })",
|
|
100
|
-
],
|
|
101
|
-
instructions: {
|
|
102
|
-
followAll: "Suivre TOUTES les règles de ce document sans exception.",
|
|
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é.",
|
|
108
|
-
appRouterPages: "Placer les nouvelles pages dans app/ en suivant la structure de routes existante.",
|
|
109
|
-
serverActions: "Utiliser les Server Actions pour les mutations, les Route Handlers pour les endpoints API.",
|
|
110
|
-
prismaAfterChange: "Après modification de schema.prisma, toujours exécuter `npx prisma migrate dev` et `npx prisma generate`.",
|
|
111
|
-
drizzleAfterChange: "Après modification des schémas Drizzle, exécuter `npx drizzle-kit generate` pour créer les migrations.",
|
|
112
|
-
zodValidate: "Valider toutes les entrées aux frontières API avec Zod. Parser, ne pas valider.",
|
|
113
|
-
tailwindClasses: "Utiliser les classes utilitaires Tailwind pour le style. Utiliser cn() pour les classes conditionnelles.",
|
|
114
|
-
shadcnComponents: "Utiliser les composants shadcn/ui de components/ui/ comme briques de base.",
|
|
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.",
|
|
117
|
-
i18nStrings: "Toutes les chaînes visibles par l'utilisateur doivent passer par le système i18n. Ne jamais coder en dur.",
|
|
118
|
-
},
|
|
119
54
|
patterns: {
|
|
120
55
|
clientServerRatio: "**Ratio Client/Serveur** : {clientCount} composants client sur {totalCount} total ({clientPercent}% client)",
|
|
121
56
|
serverActions: "**Server Actions** : {count} fichiers avec 'use server'",
|
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,2LAA2L;YAClM,KAAK,EAAE,yEAAyE;SACjF;QACD,QAAQ,EAAE;YACR,oBAAoB,EAAE,kCAAkC;YACxD,
|
|
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,2LAA2L;YAClM,KAAK,EAAE,yEAAyE;SACjF;QACD,QAAQ,EAAE;YACR,oBAAoB,EAAE,kCAAkC;YACxD,gBAAgB,EAAE,qBAAqB;SACxC;QACD,YAAY,EAAE;YACZ,eAAe,EAAE,oBAAoB;YACrC,cAAc,EAAE,4BAA4B;YAC5C,QAAQ,EAAE,UAAU;YACpB,YAAY,EAAE,qBAAqB;YACnC,SAAS,EAAE,WAAW;YACtB,SAAS,EAAE,gBAAgB;YAC3B,QAAQ,EAAE,iBAAiB;YAC3B,cAAc,EAAE,kBAAkB;YAClC,GAAG,EAAE,KAAK;YACV,WAAW,EAAE,aAAa;YAC1B,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,WAAW;YACrB,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,SAAS;YAClB,cAAc,EAAE,gBAAgB;YAChC,UAAU,EAAE,oBAAoB;YAChC,WAAW,EAAE,kBAAkB;YAC/B,SAAS,EAAE,OAAO;YAClB,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,OAAO;YAClB,aAAa,EAAE,YAAY;YAC3B,WAAW,EAAE,iBAAiB;SAC/B;QACD,SAAS,EAAE;YACT,MAAM,EAAE,yBAAyB;YACjC,SAAS,EAAE,qBAAqB;YAChC,WAAW,EAAE,yBAAyB;YACtC,SAAS,EAAE,sBAAsB;YACjC,UAAU,EAAE,sBAAsB;YAClC,UAAU,EAAE,4BAA4B;YACxC,WAAW,EAAE,+BAA+B;YAC5C,QAAQ,EAAE,wBAAwB;YAClC,WAAW,EAAE,gCAAgC;YAC7C,WAAW,EAAE,0BAA0B;YACvC,iBAAiB,EAAE,oCAAoC;YACvD,eAAe,EAAE,iCAAiC;YAClD,aAAa,EAAE,2BAA2B;YAC1C,cAAc,EAAE,gCAAgC;YAChD,YAAY,EAAE,wCAAwC;SACvD;QACD,QAAQ,EAAE;YACR,iBAAiB,EAAE,6GAA6G;YAChI,aAAa,EAAE,yDAAyD;YACxE,WAAW,EAAE,0FAA0F;YACvG,WAAW,EAAE,qFAAqF;YAClG,UAAU,EAAE,8EAA8E;YAC1F,WAAW,EAAE,+EAA+E;SAC7F;KACF;CACF,CAAC"}
|
package/dist/i18n/types.d.ts
CHANGED
|
@@ -7,14 +7,7 @@ export interface TemplateMessages {
|
|
|
7
7
|
};
|
|
8
8
|
sections: {
|
|
9
9
|
architectureOverview: string;
|
|
10
|
-
stack: string;
|
|
11
|
-
projectStructure: string;
|
|
12
|
-
availableScripts: string;
|
|
13
|
-
fileNaming: string;
|
|
14
|
-
importOrdering: string;
|
|
15
10
|
projectDecisions: string;
|
|
16
|
-
existingPatterns: string;
|
|
17
|
-
claudeInstructions: string;
|
|
18
11
|
};
|
|
19
12
|
architecture: {
|
|
20
13
|
frontendBackend: string;
|
|
@@ -41,32 +34,6 @@ export interface TemplateMessages {
|
|
|
41
34
|
sizeVeryLarge: string;
|
|
42
35
|
sourceFiles: string;
|
|
43
36
|
};
|
|
44
|
-
stackLabels: {
|
|
45
|
-
framework: string;
|
|
46
|
-
orm: string;
|
|
47
|
-
database: string;
|
|
48
|
-
auth: string;
|
|
49
|
-
validation: string;
|
|
50
|
-
css: string;
|
|
51
|
-
uiComponents: string;
|
|
52
|
-
testing: string;
|
|
53
|
-
stateManagement: string;
|
|
54
|
-
dataFetching: string;
|
|
55
|
-
formLibrary: string;
|
|
56
|
-
apiStyle: string;
|
|
57
|
-
i18n: string;
|
|
58
|
-
payments: string;
|
|
59
|
-
email: string;
|
|
60
|
-
realtime: string;
|
|
61
|
-
cms: string;
|
|
62
|
-
fileUpload: string;
|
|
63
|
-
jobs: string;
|
|
64
|
-
monorepo: string;
|
|
65
|
-
deployment: string;
|
|
66
|
-
linter: string;
|
|
67
|
-
formatter: string;
|
|
68
|
-
runtime: string;
|
|
69
|
-
};
|
|
70
37
|
structure: {
|
|
71
38
|
srcDir: string;
|
|
72
39
|
appRouter: string;
|
|
@@ -84,32 +51,6 @@ export interface TemplateMessages {
|
|
|
84
51
|
reactProviders: string;
|
|
85
52
|
prismaSchema: string;
|
|
86
53
|
};
|
|
87
|
-
naming: {
|
|
88
|
-
files: string;
|
|
89
|
-
reactComponents: string;
|
|
90
|
-
hooks: string;
|
|
91
|
-
constants: string;
|
|
92
|
-
newFilesSrc: string;
|
|
93
|
-
};
|
|
94
|
-
importOrder: string[];
|
|
95
|
-
instructions: {
|
|
96
|
-
followAll: string;
|
|
97
|
-
respectStructure: string;
|
|
98
|
-
checkPrecedent: string;
|
|
99
|
-
neverNewDeps: string;
|
|
100
|
-
smallChanges: string;
|
|
101
|
-
serverComponents: string;
|
|
102
|
-
appRouterPages: string;
|
|
103
|
-
serverActions: string;
|
|
104
|
-
prismaAfterChange: string;
|
|
105
|
-
drizzleAfterChange: string;
|
|
106
|
-
zodValidate: string;
|
|
107
|
-
tailwindClasses: string;
|
|
108
|
-
shadcnComponents: string;
|
|
109
|
-
runTests: string;
|
|
110
|
-
runLinter: string;
|
|
111
|
-
i18nStrings: string;
|
|
112
|
-
};
|
|
113
54
|
patterns: {
|
|
114
55
|
clientServerRatio: string;
|
|
115
56
|
serverActions: string;
|
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,gBAAgB;IAC/B,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,QAAQ,EAAE;QACR,oBAAoB,EAAE,MAAM,CAAC;QAC7B,
|
|
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,gBAAgB;IAC/B,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,QAAQ,EAAE;QACR,oBAAoB,EAAE,MAAM,CAAC;QAC7B,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,YAAY,EAAE;QACZ,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,GAAG,EAAE,MAAM,CAAC;QACZ,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,SAAS,EAAE;QACT,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,QAAQ,EAAE;QACR,iBAAiB,EAAE,MAAM,CAAC;QAC1B,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,gBAAgB,CAAC;CAC7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-md.d.ts","sourceRoot":"","sources":["../../src/templates/claude-md.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"claude-md.d.ts","sourceRoot":"","sources":["../../src/templates/claude-md.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAmG/C,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,QAAQ,CAAC,EAAE,YAAY,EACvB,MAAM,GAAE,MAAa,GACpB,MAAM,CA2JR"}
|
|
@@ -51,39 +51,6 @@ function describeArchitecture(analysis, locale) {
|
|
|
51
51
|
}
|
|
52
52
|
return lines;
|
|
53
53
|
}
|
|
54
|
-
function buildDynamicInstructions(analysis, locale) {
|
|
55
|
-
const m = getMessages(locale).templates.instructions;
|
|
56
|
-
const lines = [];
|
|
57
|
-
const f = analysis.framework;
|
|
58
|
-
const d = analysis.detected;
|
|
59
|
-
lines.push(`- ${m.followAll}`);
|
|
60
|
-
lines.push(`- ${m.respectStructure}`);
|
|
61
|
-
lines.push(`- ${m.checkPrecedent}`);
|
|
62
|
-
lines.push(`- ${m.neverNewDeps}`);
|
|
63
|
-
lines.push(`- ${m.smallChanges}`);
|
|
64
|
-
if (f?.name === "next" && f.variant === "app-router") {
|
|
65
|
-
lines.push(`- ${m.serverComponents}`);
|
|
66
|
-
lines.push(`- ${m.appRouterPages}`);
|
|
67
|
-
lines.push(`- ${m.serverActions}`);
|
|
68
|
-
}
|
|
69
|
-
if (d.orm === "prisma")
|
|
70
|
-
lines.push(`- ${m.prismaAfterChange}`);
|
|
71
|
-
else if (d.orm === "drizzle")
|
|
72
|
-
lines.push(`- ${m.drizzleAfterChange}`);
|
|
73
|
-
if (d.validation === "zod")
|
|
74
|
-
lines.push(`- ${m.zodValidate}`);
|
|
75
|
-
if (d.css === "tailwind")
|
|
76
|
-
lines.push(`- ${m.tailwindClasses}`);
|
|
77
|
-
if (d.uiComponents === "shadcn")
|
|
78
|
-
lines.push(`- ${m.shadcnComponents}`);
|
|
79
|
-
if (d.testing)
|
|
80
|
-
lines.push(`- ${interpolate(m.runTests, { testing: d.testing })}`);
|
|
81
|
-
if (d.linter)
|
|
82
|
-
lines.push(`- ${interpolate(m.runLinter, { linter: d.linter })}`);
|
|
83
|
-
if (d.i18n)
|
|
84
|
-
lines.push(`- ${m.i18nStrings}`);
|
|
85
|
-
return lines;
|
|
86
|
-
}
|
|
87
54
|
/** Format a tech name for display as section header */
|
|
88
55
|
function techDisplayName(tech) {
|
|
89
56
|
const names = {
|
|
@@ -139,127 +106,98 @@ function techDisplayName(tech) {
|
|
|
139
106
|
export function generateClaudeMd(analysis, docs, choices, patterns, locale = "en") {
|
|
140
107
|
const m = getMessages(locale).templates;
|
|
141
108
|
const lines = [];
|
|
109
|
+
const d = analysis.detected;
|
|
110
|
+
const s = analysis.structure;
|
|
142
111
|
// Header
|
|
143
112
|
lines.push(`# ${interpolate(m.header.title, { name: analysis.projectName })}`);
|
|
144
113
|
lines.push("");
|
|
145
114
|
lines.push(`> ${m.header.meta1}`);
|
|
146
115
|
lines.push(`> ${m.header.meta2}`);
|
|
147
116
|
lines.push("");
|
|
148
|
-
//
|
|
149
|
-
|
|
150
|
-
if (archLines.length > 0) {
|
|
151
|
-
lines.push(`## ${m.sections.architectureOverview}`);
|
|
152
|
-
lines.push("");
|
|
153
|
-
lines.push(...archLines);
|
|
154
|
-
lines.push("");
|
|
155
|
-
}
|
|
156
|
-
// Stack details
|
|
157
|
-
lines.push(`## ${m.sections.stack}`);
|
|
117
|
+
// Project overview: architecture + stack + structure in one section
|
|
118
|
+
lines.push(`## ${m.sections.architectureOverview}`);
|
|
158
119
|
lines.push("");
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
lines.push(`- **${m.stackLabels.framework}**: ${analysis.framework.name} ${analysis.framework.version}${variant}`);
|
|
162
|
-
}
|
|
163
|
-
const d = analysis.detected;
|
|
164
|
-
if (d.orm)
|
|
165
|
-
lines.push(`- **${m.stackLabels.orm}**: ${d.orm}`);
|
|
166
|
-
if (d.database)
|
|
167
|
-
lines.push(`- **${m.stackLabels.database}**: ${d.database}`);
|
|
168
|
-
if (d.auth)
|
|
169
|
-
lines.push(`- **${m.stackLabels.auth}**: ${d.auth}`);
|
|
170
|
-
if (d.validation)
|
|
171
|
-
lines.push(`- **${m.stackLabels.validation}**: ${d.validation}`);
|
|
172
|
-
if (d.css)
|
|
173
|
-
lines.push(`- **${m.stackLabels.css}**: ${d.css}`);
|
|
174
|
-
if (d.uiComponents)
|
|
175
|
-
lines.push(`- **${m.stackLabels.uiComponents}**: ${d.uiComponents}`);
|
|
176
|
-
if (d.testing)
|
|
177
|
-
lines.push(`- **${m.stackLabels.testing}**: ${d.testing}`);
|
|
178
|
-
if (d.stateManagement)
|
|
179
|
-
lines.push(`- **${m.stackLabels.stateManagement}**: ${d.stateManagement}`);
|
|
180
|
-
if (d.dataFetching)
|
|
181
|
-
lines.push(`- **${m.stackLabels.dataFetching}**: ${d.dataFetching}`);
|
|
182
|
-
if (d.formLibrary)
|
|
183
|
-
lines.push(`- **${m.stackLabels.formLibrary}**: ${d.formLibrary}`);
|
|
184
|
-
if (d.apiStyle)
|
|
185
|
-
lines.push(`- **${m.stackLabels.apiStyle}**: ${d.apiStyle}`);
|
|
186
|
-
if (d.i18n)
|
|
187
|
-
lines.push(`- **${m.stackLabels.i18n}**: ${d.i18n}`);
|
|
188
|
-
if (d.payments)
|
|
189
|
-
lines.push(`- **${m.stackLabels.payments}**: ${d.payments}`);
|
|
190
|
-
if (d.email)
|
|
191
|
-
lines.push(`- **${m.stackLabels.email}**: ${d.email}`);
|
|
192
|
-
if (d.realtime)
|
|
193
|
-
lines.push(`- **${m.stackLabels.realtime}**: ${d.realtime}`);
|
|
194
|
-
if (d.cms)
|
|
195
|
-
lines.push(`- **${m.stackLabels.cms}**: ${d.cms}`);
|
|
196
|
-
if (d.fileUpload)
|
|
197
|
-
lines.push(`- **${m.stackLabels.fileUpload}**: ${d.fileUpload}`);
|
|
198
|
-
if (d.jobs)
|
|
199
|
-
lines.push(`- **${m.stackLabels.jobs}**: ${d.jobs}`);
|
|
200
|
-
if (d.monorepo)
|
|
201
|
-
lines.push(`- **${m.stackLabels.monorepo}**: ${d.monorepo}`);
|
|
202
|
-
if (d.deployment)
|
|
203
|
-
lines.push(`- **${m.stackLabels.deployment}**: ${d.deployment}`);
|
|
204
|
-
if (d.linter)
|
|
205
|
-
lines.push(`- **${m.stackLabels.linter}**: ${d.linter}`);
|
|
206
|
-
if (d.formatter)
|
|
207
|
-
lines.push(`- **${m.stackLabels.formatter}**: ${d.formatter}`);
|
|
208
|
-
if (d.runtime && d.runtime !== "node")
|
|
209
|
-
lines.push(`- **${m.stackLabels.runtime}**: ${d.runtime}`);
|
|
210
|
-
lines.push("");
|
|
211
|
-
// Project structure
|
|
212
|
-
lines.push(`## ${m.sections.projectStructure}`);
|
|
120
|
+
const archLines = describeArchitecture(analysis, locale);
|
|
121
|
+
lines.push(...archLines);
|
|
213
122
|
lines.push("");
|
|
214
|
-
|
|
123
|
+
// Structure
|
|
124
|
+
const structLines = [];
|
|
215
125
|
if (s.hasSrcDir)
|
|
216
|
-
|
|
126
|
+
structLines.push(m.structure.srcDir);
|
|
217
127
|
if (s.hasAppDir)
|
|
218
|
-
|
|
128
|
+
structLines.push(m.structure.appRouter);
|
|
219
129
|
if (s.hasPagesDir)
|
|
220
|
-
|
|
130
|
+
structLines.push(m.structure.pagesRouter);
|
|
221
131
|
if (s.hasApiRoutes)
|
|
222
|
-
|
|
132
|
+
structLines.push(m.structure.apiRoutes);
|
|
223
133
|
if (s.hasMiddleware)
|
|
224
|
-
|
|
134
|
+
structLines.push(m.structure.middleware);
|
|
225
135
|
if (s.hasComponentsDir)
|
|
226
|
-
|
|
136
|
+
structLines.push(m.structure.components);
|
|
227
137
|
if (s.hasLibDir)
|
|
228
|
-
|
|
138
|
+
structLines.push(m.structure.sharedUtils);
|
|
229
139
|
if (s.hasServicesDir)
|
|
230
|
-
|
|
140
|
+
structLines.push(m.structure.services);
|
|
231
141
|
if (s.hasHooksDir)
|
|
232
|
-
|
|
142
|
+
structLines.push(m.structure.customHooks);
|
|
233
143
|
if (s.hasStoreDir)
|
|
234
|
-
|
|
144
|
+
structLines.push(m.structure.stateStores);
|
|
235
145
|
if (s.hasSchemasDir)
|
|
236
|
-
|
|
146
|
+
structLines.push(m.structure.validationSchemas);
|
|
237
147
|
if (s.hasTypesDir)
|
|
238
|
-
|
|
148
|
+
structLines.push(m.structure.typeDefinitions);
|
|
239
149
|
if (s.hasConfigDir)
|
|
240
|
-
|
|
150
|
+
structLines.push(m.structure.configuration);
|
|
241
151
|
if (s.hasProvidersDir)
|
|
242
|
-
|
|
152
|
+
structLines.push(m.structure.reactProviders);
|
|
243
153
|
if (s.hasPrismaSchema)
|
|
244
|
-
|
|
245
|
-
|
|
154
|
+
structLines.push(m.structure.prismaSchema);
|
|
155
|
+
if (structLines.length > 0) {
|
|
156
|
+
lines.push("**Structure:**");
|
|
157
|
+
for (const sl of structLines)
|
|
158
|
+
lines.push(`- ${sl}`);
|
|
159
|
+
lines.push("");
|
|
160
|
+
}
|
|
246
161
|
// Scripts
|
|
247
162
|
const scripts = Object.entries(analysis.scripts);
|
|
248
163
|
if (scripts.length > 0) {
|
|
249
|
-
lines.push(
|
|
250
|
-
lines.push("");
|
|
164
|
+
lines.push("**Scripts:**");
|
|
251
165
|
for (const [name, cmd] of scripts) {
|
|
252
166
|
lines.push(`- \`npm run ${name}\` → \`${cmd}\``);
|
|
253
167
|
}
|
|
254
168
|
lines.push("");
|
|
255
169
|
}
|
|
256
|
-
//
|
|
170
|
+
// Existing code patterns (merged into overview)
|
|
171
|
+
if (patterns) {
|
|
172
|
+
const patternLines = [];
|
|
173
|
+
if (patterns.totalComponents > 0) {
|
|
174
|
+
patternLines.push(interpolate(m.patterns.clientServerRatio, {
|
|
175
|
+
clientCount: patterns.useClientCount,
|
|
176
|
+
totalCount: patterns.totalComponents,
|
|
177
|
+
clientPercent: Math.round(patterns.clientRatio * 100),
|
|
178
|
+
}));
|
|
179
|
+
}
|
|
180
|
+
if (patterns.useServerCount > 0) {
|
|
181
|
+
patternLines.push(interpolate(m.patterns.serverActions, { count: patterns.useServerCount }));
|
|
182
|
+
}
|
|
183
|
+
if (patterns.usesPathAlias)
|
|
184
|
+
patternLines.push(m.patterns.pathAliases);
|
|
185
|
+
if (patterns.hasBarrelFiles)
|
|
186
|
+
patternLines.push(m.patterns.barrelFiles);
|
|
187
|
+
if (patternLines.length > 0) {
|
|
188
|
+
lines.push("**Codebase patterns:**");
|
|
189
|
+
for (const pl of patternLines)
|
|
190
|
+
lines.push(`- ${pl}`);
|
|
191
|
+
lines.push("");
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
// Per-tech documentation (from Context7 + WebSearch)
|
|
257
195
|
const techEntries = Object.entries(docs.techDocs);
|
|
258
196
|
if (techEntries.length > 0) {
|
|
259
197
|
for (const [tech, docContent] of techEntries) {
|
|
260
198
|
if (!docContent.trim())
|
|
261
199
|
continue;
|
|
262
|
-
lines.push(`## ${techDisplayName(tech)}
|
|
200
|
+
lines.push(`## ${techDisplayName(tech)}`);
|
|
263
201
|
lines.push("");
|
|
264
202
|
lines.push(docContent.trim());
|
|
265
203
|
lines.push("");
|
|
@@ -279,25 +217,44 @@ export function generateClaudeMd(analysis, docs, choices, patterns, locale = "en
|
|
|
279
217
|
lines.push("");
|
|
280
218
|
}
|
|
281
219
|
}
|
|
282
|
-
//
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
220
|
+
// Conventions: fully auto-detected from codebase
|
|
221
|
+
if (patterns) {
|
|
222
|
+
const convLines = [];
|
|
223
|
+
if (patterns.fileNamingStyle !== "mixed") {
|
|
224
|
+
convLines.push(`- File naming: ${patterns.fileNamingStyle}`);
|
|
225
|
+
}
|
|
226
|
+
if (patterns.hasReactFiles) {
|
|
227
|
+
convLines.push("- React components: PascalCase filename = component name");
|
|
228
|
+
convLines.push("- Hooks: camelCase prefixed with `use`");
|
|
229
|
+
}
|
|
230
|
+
if (patterns.usesPathAlias) {
|
|
231
|
+
convLines.push("- Imports use @/ or ~/ path aliases");
|
|
232
|
+
}
|
|
233
|
+
if (patterns.hasBarrelFiles) {
|
|
234
|
+
convLines.push("- Barrel files: index.ts re-exports — follow this pattern");
|
|
235
|
+
}
|
|
236
|
+
if (patterns.importOrder) {
|
|
237
|
+
convLines.push(`- Import order: ${patterns.importOrder.join(" → ")}`);
|
|
238
|
+
}
|
|
239
|
+
if (patterns.indentation) {
|
|
240
|
+
const desc = patterns.indentation.style === "tabs"
|
|
241
|
+
? "Tabs"
|
|
242
|
+
: `${patterns.indentation.size} spaces`;
|
|
243
|
+
convLines.push(`- Indentation: ${desc}`);
|
|
244
|
+
}
|
|
245
|
+
if (patterns.quoteStyle && patterns.quoteStyle !== "mixed") {
|
|
246
|
+
convLines.push(`- Quotes: ${patterns.quoteStyle}`);
|
|
247
|
+
}
|
|
248
|
+
if (s.hasSrcDir) {
|
|
249
|
+
convLines.push("- New files go in `src/`");
|
|
250
|
+
}
|
|
251
|
+
if (convLines.length > 0) {
|
|
252
|
+
lines.push("## Conventions");
|
|
253
|
+
lines.push("");
|
|
254
|
+
lines.push(...convLines);
|
|
255
|
+
lines.push("");
|
|
256
|
+
}
|
|
298
257
|
}
|
|
299
|
-
lines.push("```");
|
|
300
|
-
lines.push("");
|
|
301
258
|
// User choices
|
|
302
259
|
const choiceEntries = Object.entries(choices);
|
|
303
260
|
if (choiceEntries.length > 0) {
|
|
@@ -308,44 +265,6 @@ export function generateClaudeMd(analysis, docs, choices, patterns, locale = "en
|
|
|
308
265
|
}
|
|
309
266
|
lines.push("");
|
|
310
267
|
}
|
|
311
|
-
// Existing code patterns
|
|
312
|
-
if (patterns) {
|
|
313
|
-
const patternLines = [];
|
|
314
|
-
if (patterns.totalComponents > 0) {
|
|
315
|
-
patternLines.push(`- ${interpolate(m.patterns.clientServerRatio, {
|
|
316
|
-
clientCount: patterns.useClientCount,
|
|
317
|
-
totalCount: patterns.totalComponents,
|
|
318
|
-
clientPercent: Math.round(patterns.clientRatio * 100),
|
|
319
|
-
})}`);
|
|
320
|
-
}
|
|
321
|
-
if (patterns.useServerCount > 0) {
|
|
322
|
-
patternLines.push(`- ${interpolate(m.patterns.serverActions, { count: patterns.useServerCount })}`);
|
|
323
|
-
}
|
|
324
|
-
if (patterns.usesPathAlias)
|
|
325
|
-
patternLines.push(`- ${m.patterns.pathAliases}`);
|
|
326
|
-
if (patterns.hasBarrelFiles)
|
|
327
|
-
patternLines.push(`- ${m.patterns.barrelFiles}`);
|
|
328
|
-
if (patterns.largeFiles.length > 0) {
|
|
329
|
-
patternLines.push(`- ${interpolate(m.patterns.largeFiles, { count: patterns.largeFiles.length })}`);
|
|
330
|
-
}
|
|
331
|
-
if (patterns.consoleLogCount > 0) {
|
|
332
|
-
patternLines.push(`- ${interpolate(m.patterns.consoleLogs, { count: patterns.consoleLogCount })}`);
|
|
333
|
-
}
|
|
334
|
-
if (patternLines.length > 0) {
|
|
335
|
-
lines.push(`## ${m.sections.existingPatterns}`);
|
|
336
|
-
lines.push("");
|
|
337
|
-
lines.push(...patternLines);
|
|
338
|
-
lines.push("");
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
// Dynamic Claude Code instructions
|
|
342
|
-
lines.push(`## ${m.sections.claudeInstructions}`);
|
|
343
|
-
lines.push("");
|
|
344
|
-
const instructions = buildDynamicInstructions(analysis, locale);
|
|
345
|
-
for (const instr of instructions) {
|
|
346
|
-
lines.push(instr);
|
|
347
|
-
}
|
|
348
|
-
lines.push("");
|
|
349
268
|
return lines.join("\n");
|
|
350
269
|
}
|
|
351
270
|
//# sourceMappingURL=claude-md.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-md.js","sourceRoot":"","sources":["../../src/templates/claude-md.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"claude-md.js","sourceRoot":"","sources":["../../src/templates/claude-md.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "leadcode",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Virtual Lead Tech MCP server for Claude Code – analyzes repos,
|
|
3
|
+
"version": "1.5.0",
|
|
4
|
+
"description": "Virtual Lead Tech MCP server for Claude Code – analyzes repos, fetches docs via Context7, and generates tailored CLAUDE.md files",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"leadcode": "./bin/leadcode.js"
|