mustard-claude 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +198 -0
- package/bin/mustard.js +5 -0
- package/dist/analyzers/llm.d.ts +13 -0
- package/dist/analyzers/llm.js +339 -0
- package/dist/analyzers/llm.js.map +1 -0
- package/dist/analyzers/semantic.d.ts +13 -0
- package/dist/analyzers/semantic.js +215 -0
- package/dist/analyzers/semantic.js.map +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +42 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/init.d.ts +5 -0
- package/dist/commands/init.js +377 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/sync.d.ts +5 -0
- package/dist/commands/sync.js +235 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/update.d.ts +8 -0
- package/dist/commands/update.js +237 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/generators/claude-md-llm.d.ts +5 -0
- package/dist/generators/claude-md-llm.js +101 -0
- package/dist/generators/claude-md-llm.js.map +1 -0
- package/dist/generators/claude-md-template.d.ts +5 -0
- package/dist/generators/claude-md-template.js +273 -0
- package/dist/generators/claude-md-template.js.map +1 -0
- package/dist/generators/commands.d.ts +17 -0
- package/dist/generators/commands.js +845 -0
- package/dist/generators/commands.js.map +1 -0
- package/dist/generators/context.d.ts +11 -0
- package/dist/generators/context.js +621 -0
- package/dist/generators/context.js.map +1 -0
- package/dist/generators/hooks.d.ts +5 -0
- package/dist/generators/hooks.js +128 -0
- package/dist/generators/hooks.js.map +1 -0
- package/dist/generators/index.d.ts +11 -0
- package/dist/generators/index.js +541 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/generators/prompts.d.ts +13 -0
- package/dist/generators/prompts.js +579 -0
- package/dist/generators/prompts.js.map +1 -0
- package/dist/generators/registry.d.ts +5 -0
- package/dist/generators/registry.js +93 -0
- package/dist/generators/registry.js.map +1 -0
- package/dist/scanners/dependencies.d.ts +7 -0
- package/dist/scanners/dependencies.js +195 -0
- package/dist/scanners/dependencies.js.map +1 -0
- package/dist/scanners/index.d.ts +6 -0
- package/dist/scanners/index.js +37 -0
- package/dist/scanners/index.js.map +1 -0
- package/dist/scanners/samples.d.ts +8 -0
- package/dist/scanners/samples.js +193 -0
- package/dist/scanners/samples.js.map +1 -0
- package/dist/scanners/stack.d.ts +5 -0
- package/dist/scanners/stack.js +294 -0
- package/dist/scanners/stack.js.map +1 -0
- package/dist/scanners/structure.d.ts +5 -0
- package/dist/scanners/structure.js +274 -0
- package/dist/scanners/structure.js.map +1 -0
- package/dist/services/grepai.d.ts +25 -0
- package/dist/services/grepai.js +89 -0
- package/dist/services/grepai.js.map +1 -0
- package/dist/services/ollama.d.ts +22 -0
- package/dist/services/ollama.js +86 -0
- package/dist/services/ollama.js.map +1 -0
- package/dist/services/package-manager.d.ts +95 -0
- package/dist/services/package-manager.js +164 -0
- package/dist/services/package-manager.js.map +1 -0
- package/dist/types.d.ts +233 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ProjectInfo, Analysis, GeneratedPrompts, PromptGeneratorOptions, DiscoveredPatterns } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Generate prompt files
|
|
4
|
+
*/
|
|
5
|
+
export declare function generatePrompts(projectInfo: ProjectInfo, analysis: Analysis, options?: PromptGeneratorOptions): Promise<GeneratedPrompts>;
|
|
6
|
+
/**
|
|
7
|
+
* Generate auto-populated context section for a prompt
|
|
8
|
+
*/
|
|
9
|
+
export declare function generateAutoSection(promptType: string, projectInfo: ProjectInfo, analysis: Analysis, patterns: DiscoveredPatterns): string;
|
|
10
|
+
/**
|
|
11
|
+
* Merge auto-generated content with existing prompt, preserving user content
|
|
12
|
+
*/
|
|
13
|
+
export declare function mergePromptContext(existingContent: string, newAutoSection: string): string;
|
|
@@ -0,0 +1,579 @@
|
|
|
1
|
+
import * as llm from '../analyzers/llm.js';
|
|
2
|
+
/**
|
|
3
|
+
* Get the run command for a package manager
|
|
4
|
+
*/
|
|
5
|
+
function getRunCommand(packageManager, script) {
|
|
6
|
+
switch (packageManager) {
|
|
7
|
+
case 'pnpm':
|
|
8
|
+
return `pnpm ${script}`;
|
|
9
|
+
case 'yarn':
|
|
10
|
+
return `yarn ${script}`;
|
|
11
|
+
case 'bun':
|
|
12
|
+
return `bun run ${script}`;
|
|
13
|
+
case 'npm':
|
|
14
|
+
default:
|
|
15
|
+
return `npm run ${script}`;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Generate prompt files
|
|
20
|
+
*/
|
|
21
|
+
export async function generatePrompts(projectInfo, analysis, options = {}) {
|
|
22
|
+
const { useOllama = true, model } = options;
|
|
23
|
+
// Determine which prompts to generate
|
|
24
|
+
const hasBackend = projectInfo.stacks.some(s => ['dotnet', 'node', 'python', 'java', 'go', 'rust'].includes(s.name));
|
|
25
|
+
const hasFrontend = projectInfo.stacks.some(s => ['react', 'nextjs', 'vue', 'angular', 'svelte'].includes(s.name));
|
|
26
|
+
const hasDatabase = projectInfo.stacks.some(s => ['drizzle', 'prisma', 'typeorm', 'sequelize'].includes(s.name));
|
|
27
|
+
// Generate bugfix and review (always template-based)
|
|
28
|
+
const bugfix = generateBugfixTemplate(projectInfo);
|
|
29
|
+
const review = generateReviewTemplate(projectInfo);
|
|
30
|
+
// Generate naming conventions (central reference for L3)
|
|
31
|
+
const naming = generateNamingTemplate(projectInfo);
|
|
32
|
+
const prompts = {
|
|
33
|
+
orchestrator: generateOrchestratorTemplate(projectInfo),
|
|
34
|
+
bugfix,
|
|
35
|
+
review,
|
|
36
|
+
naming
|
|
37
|
+
};
|
|
38
|
+
// If using Ollama, call llm.generatePrompts() ONCE and reuse results
|
|
39
|
+
if (useOllama) {
|
|
40
|
+
try {
|
|
41
|
+
const llmResult = await llm.generatePrompts(projectInfo, analysis, { model });
|
|
42
|
+
if (llmResult.orchestrator)
|
|
43
|
+
prompts.orchestrator = llmResult.orchestrator;
|
|
44
|
+
if (hasBackend && llmResult.backend)
|
|
45
|
+
prompts.backend = llmResult.backend;
|
|
46
|
+
if (hasFrontend && llmResult.frontend)
|
|
47
|
+
prompts.frontend = llmResult.frontend;
|
|
48
|
+
if (hasDatabase && llmResult.database)
|
|
49
|
+
prompts.database = llmResult.database;
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
// Ollama failed - fall through to templates below
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// Fill missing prompts with templates
|
|
56
|
+
if (hasBackend && !prompts.backend) {
|
|
57
|
+
prompts.backend = generateBackendTemplate(projectInfo);
|
|
58
|
+
}
|
|
59
|
+
if (hasFrontend && !prompts.frontend) {
|
|
60
|
+
prompts.frontend = generateFrontendTemplate(projectInfo);
|
|
61
|
+
}
|
|
62
|
+
if (hasDatabase && !prompts.database) {
|
|
63
|
+
prompts.database = generateDatabaseTemplate(projectInfo);
|
|
64
|
+
}
|
|
65
|
+
return prompts;
|
|
66
|
+
}
|
|
67
|
+
// ============== Template Generation ==============
|
|
68
|
+
function generateOrchestratorTemplate(projectInfo) {
|
|
69
|
+
return `# Orchestrator
|
|
70
|
+
|
|
71
|
+
## Identity
|
|
72
|
+
|
|
73
|
+
You are the **Orchestrator**. You coordinate the development pipeline but **DO NOT implement code directly**.
|
|
74
|
+
|
|
75
|
+
## Required Pipeline
|
|
76
|
+
|
|
77
|
+
\`\`\`
|
|
78
|
+
1. EXPLORE → Task(Explore) to analyze requirements
|
|
79
|
+
2. SPEC → Create spec at spec/active/{name}/spec.md
|
|
80
|
+
3. APPROVE → Present spec for user approval
|
|
81
|
+
4. IMPLEMENT → Task(general-purpose) with specialized prompts
|
|
82
|
+
5. REVIEW → Task(general-purpose) with review prompt
|
|
83
|
+
6. COMPLETE → Update registry, move spec to completed/
|
|
84
|
+
\`\`\`
|
|
85
|
+
|
|
86
|
+
## Rules
|
|
87
|
+
|
|
88
|
+
- **NEVER** write code directly
|
|
89
|
+
- **ALWAYS** delegate via Task tool
|
|
90
|
+
- **FOLLOW** the pipeline strictly
|
|
91
|
+
- **PRESENT** spec before implementing
|
|
92
|
+
|
|
93
|
+
## Delegation
|
|
94
|
+
|
|
95
|
+
| Task | subagent_type | model |
|
|
96
|
+
|------|---------------|-------|
|
|
97
|
+
| Explore | Explore | haiku |
|
|
98
|
+
| Backend | general-purpose | opus |
|
|
99
|
+
| Frontend | general-purpose | opus |
|
|
100
|
+
| Database | general-purpose | opus |
|
|
101
|
+
| Review | general-purpose | opus |
|
|
102
|
+
|
|
103
|
+
## Usage Example
|
|
104
|
+
|
|
105
|
+
\`\`\`javascript
|
|
106
|
+
// 1. Explore
|
|
107
|
+
Task({
|
|
108
|
+
subagent_type: "Explore",
|
|
109
|
+
model: "haiku",
|
|
110
|
+
description: "Explore feature X",
|
|
111
|
+
prompt: "Analyze requirements for feature X..."
|
|
112
|
+
})
|
|
113
|
+
|
|
114
|
+
// 2. Implement Backend
|
|
115
|
+
Task({
|
|
116
|
+
subagent_type: "general-purpose",
|
|
117
|
+
model: "opus",
|
|
118
|
+
description: "Implement backend X",
|
|
119
|
+
prompt: \`
|
|
120
|
+
# You are the BACKEND SPECIALIST
|
|
121
|
+
[backend prompt]
|
|
122
|
+
|
|
123
|
+
# TASK
|
|
124
|
+
Implement feature X according to spec...
|
|
125
|
+
\`
|
|
126
|
+
})
|
|
127
|
+
\`\`\`
|
|
128
|
+
`;
|
|
129
|
+
}
|
|
130
|
+
function generateBugfixTemplate(projectInfo) {
|
|
131
|
+
return `# Bugfix Specialist
|
|
132
|
+
|
|
133
|
+
## Identity
|
|
134
|
+
|
|
135
|
+
You are the **Bugfix Specialist**. You diagnose and fix bugs in the code.
|
|
136
|
+
|
|
137
|
+
## Process
|
|
138
|
+
|
|
139
|
+
1. **REPRODUCE** - Understand how the bug manifests
|
|
140
|
+
2. **DIAGNOSE** - Find the root cause using grepai
|
|
141
|
+
3. **FIX** - Apply the minimal necessary fix
|
|
142
|
+
4. **VALIDATE** - Verify the fix works
|
|
143
|
+
|
|
144
|
+
## Rules
|
|
145
|
+
|
|
146
|
+
- **NEVER** make changes unrelated to the bug
|
|
147
|
+
- **ALWAYS** use grepai to search related code
|
|
148
|
+
- **DOCUMENT** the root cause before fixing
|
|
149
|
+
- **TEST** the fix before finalizing
|
|
150
|
+
|
|
151
|
+
## Using grepai
|
|
152
|
+
|
|
153
|
+
\`\`\`javascript
|
|
154
|
+
// Search for code related to the error
|
|
155
|
+
grepai_search({ query: "error message or symptom" })
|
|
156
|
+
|
|
157
|
+
// Trace who calls the buggy function
|
|
158
|
+
grepai_trace_callers({ symbol: "FunctionWithBug" })
|
|
159
|
+
|
|
160
|
+
// Trace what the function calls
|
|
161
|
+
grepai_trace_callees({ symbol: "FunctionWithBug" })
|
|
162
|
+
\`\`\`
|
|
163
|
+
|
|
164
|
+
## Checklist
|
|
165
|
+
|
|
166
|
+
- [ ] Reproduced the bug
|
|
167
|
+
- [ ] Identified root cause
|
|
168
|
+
- [ ] Applied minimal fix
|
|
169
|
+
- [ ] Verified nothing broke
|
|
170
|
+
- [ ] Tested the fix
|
|
171
|
+
`;
|
|
172
|
+
}
|
|
173
|
+
function generateReviewTemplate(projectInfo) {
|
|
174
|
+
return `# Review Specialist
|
|
175
|
+
|
|
176
|
+
## Identity
|
|
177
|
+
|
|
178
|
+
You are the **Review Specialist**. You validate implementations and ensure quality.
|
|
179
|
+
|
|
180
|
+
## Review Checklist
|
|
181
|
+
|
|
182
|
+
### Code
|
|
183
|
+
|
|
184
|
+
- [ ] Follows project naming conventions
|
|
185
|
+
- [ ] Uses dependency injection correctly
|
|
186
|
+
- [ ] Has no duplicate code
|
|
187
|
+
- [ ] Handles errors appropriately
|
|
188
|
+
- [ ] Is testable
|
|
189
|
+
|
|
190
|
+
### Architecture
|
|
191
|
+
|
|
192
|
+
- [ ] Follows established patterns
|
|
193
|
+
- [ ] Does not violate layers (e.g., Service accessing DbContext)
|
|
194
|
+
- [ ] Maintains separation of concerns
|
|
195
|
+
|
|
196
|
+
### Security
|
|
197
|
+
|
|
198
|
+
- [ ] Does not expose sensitive data
|
|
199
|
+
- [ ] Validates inputs appropriately
|
|
200
|
+
- [ ] Uses authentication/authorization when needed
|
|
201
|
+
|
|
202
|
+
### Completeness
|
|
203
|
+
|
|
204
|
+
- [ ] Implements all spec requirements
|
|
205
|
+
- [ ] Updates entity registry if needed
|
|
206
|
+
- [ ] Has no TODOs or commented code
|
|
207
|
+
|
|
208
|
+
## Result
|
|
209
|
+
|
|
210
|
+
After review, respond with:
|
|
211
|
+
- **APPROVED** - If everything is correct
|
|
212
|
+
- **ADJUSTMENTS** - List of issues found
|
|
213
|
+
`;
|
|
214
|
+
}
|
|
215
|
+
function generateBackendTemplate(projectInfo) {
|
|
216
|
+
const backendStack = projectInfo.stacks.find(s => ['dotnet', 'node', 'python', 'java', 'go', 'rust'].includes(s.name));
|
|
217
|
+
const stackName = backendStack?.name ?? 'unknown';
|
|
218
|
+
const stackVersion = backendStack?.version ?? '';
|
|
219
|
+
return `# Backend Specialist
|
|
220
|
+
|
|
221
|
+
## Identity
|
|
222
|
+
|
|
223
|
+
You are the **Backend Specialist**. You implement server-side code.
|
|
224
|
+
|
|
225
|
+
## Stack
|
|
226
|
+
|
|
227
|
+
- **Language/Framework:** ${stackName} ${stackVersion}
|
|
228
|
+
- **Architecture:** ${projectInfo.structure?.architecture?.type ?? 'layered'}
|
|
229
|
+
|
|
230
|
+
## Responsibilities
|
|
231
|
+
|
|
232
|
+
- Implement endpoints/APIs
|
|
233
|
+
- Create services and business logic
|
|
234
|
+
- Configure repositories/data access
|
|
235
|
+
- Manage authentication/authorization
|
|
236
|
+
- Handle errors and validations
|
|
237
|
+
|
|
238
|
+
## Rules
|
|
239
|
+
|
|
240
|
+
${stackName === 'dotnet' ? `
|
|
241
|
+
### .NET Specific
|
|
242
|
+
|
|
243
|
+
- Service does NOT access DbContext directly (use Repository)
|
|
244
|
+
- Service only injects its own Repository + external Services
|
|
245
|
+
- Prefer segregated interfaces (ISP)
|
|
246
|
+
- Validate inputs at the boundary (endpoints)
|
|
247
|
+
- Use DTOs for data transfer
|
|
248
|
+
` : `
|
|
249
|
+
### General
|
|
250
|
+
|
|
251
|
+
- Separate business logic into services
|
|
252
|
+
- Use repository pattern for data access
|
|
253
|
+
- Validate inputs at the boundary
|
|
254
|
+
- Return consistent errors
|
|
255
|
+
`}
|
|
256
|
+
|
|
257
|
+
## File Structure
|
|
258
|
+
|
|
259
|
+
\`\`\`
|
|
260
|
+
${stackName === 'dotnet' ? `
|
|
261
|
+
Modules/
|
|
262
|
+
└── {Entity}/
|
|
263
|
+
├── Endpoints/
|
|
264
|
+
│ ├── Get{Entity}.cs
|
|
265
|
+
│ ├── Create{Entity}.cs
|
|
266
|
+
│ └── ...
|
|
267
|
+
├── Services/
|
|
268
|
+
│ └── {Entity}Service.cs
|
|
269
|
+
├── Mappers/
|
|
270
|
+
│ └── {Entity}Mapper.cs
|
|
271
|
+
└── Interfaces/
|
|
272
|
+
└── I{Entity}Service.cs
|
|
273
|
+
` : `
|
|
274
|
+
src/
|
|
275
|
+
└── modules/
|
|
276
|
+
└── {entity}/
|
|
277
|
+
├── {entity}.controller.ts
|
|
278
|
+
├── {entity}.service.ts
|
|
279
|
+
└── {entity}.repository.ts
|
|
280
|
+
`}
|
|
281
|
+
\`\`\`
|
|
282
|
+
`;
|
|
283
|
+
}
|
|
284
|
+
function generateFrontendTemplate(projectInfo) {
|
|
285
|
+
const frontendStack = projectInfo.stacks.find(s => ['react', 'nextjs', 'vue', 'angular', 'svelte'].includes(s.name));
|
|
286
|
+
const stackName = frontendStack?.name ?? 'react';
|
|
287
|
+
const stackVersion = frontendStack?.version ?? '';
|
|
288
|
+
return `# Frontend Specialist
|
|
289
|
+
|
|
290
|
+
## Identity
|
|
291
|
+
|
|
292
|
+
You are the **Frontend Specialist**. You implement client-side code.
|
|
293
|
+
|
|
294
|
+
## Stack
|
|
295
|
+
|
|
296
|
+
- **Framework:** ${stackName} ${stackVersion}
|
|
297
|
+
|
|
298
|
+
## Responsibilities
|
|
299
|
+
|
|
300
|
+
- Create React/Vue/etc components
|
|
301
|
+
- Implement custom hooks
|
|
302
|
+
- Manage state
|
|
303
|
+
- Integrate with APIs
|
|
304
|
+
- Ensure accessibility
|
|
305
|
+
|
|
306
|
+
## Rules
|
|
307
|
+
|
|
308
|
+
${stackName === 'react' || stackName === 'nextjs' ? `
|
|
309
|
+
### React Specific
|
|
310
|
+
|
|
311
|
+
- Functional components with hooks
|
|
312
|
+
- Custom hooks for reusable logic
|
|
313
|
+
- TypeScript for type safety
|
|
314
|
+
- TanStack Query for data fetching
|
|
315
|
+
- Handle loading/error states
|
|
316
|
+
` : `
|
|
317
|
+
### General
|
|
318
|
+
|
|
319
|
+
- Reusable components
|
|
320
|
+
- Separation of concerns
|
|
321
|
+
- Type safety
|
|
322
|
+
- Async state handling
|
|
323
|
+
`}
|
|
324
|
+
|
|
325
|
+
## File Structure
|
|
326
|
+
|
|
327
|
+
\`\`\`
|
|
328
|
+
${stackName === 'nextjs' ? `
|
|
329
|
+
src/
|
|
330
|
+
├── app/
|
|
331
|
+
│ └── {route}/
|
|
332
|
+
│ └── page.tsx
|
|
333
|
+
└── features/
|
|
334
|
+
└── {entity}/
|
|
335
|
+
├── components/
|
|
336
|
+
├── hooks/
|
|
337
|
+
└── types.ts
|
|
338
|
+
` : `
|
|
339
|
+
src/
|
|
340
|
+
└── features/
|
|
341
|
+
└── {entity}/
|
|
342
|
+
├── components/
|
|
343
|
+
│ ├── {Entity}Form.tsx
|
|
344
|
+
│ ├── {Entity}List.tsx
|
|
345
|
+
│ └── {Entity}Card.tsx
|
|
346
|
+
├── hooks/
|
|
347
|
+
│ └── use{Entity}.ts
|
|
348
|
+
└── pages/
|
|
349
|
+
└── {Entity}Page.tsx
|
|
350
|
+
`}
|
|
351
|
+
\`\`\`
|
|
352
|
+
`;
|
|
353
|
+
}
|
|
354
|
+
function generateDatabaseTemplate(projectInfo) {
|
|
355
|
+
const dbStack = projectInfo.stacks.find(s => ['drizzle', 'prisma', 'typeorm', 'sequelize'].includes(s.name));
|
|
356
|
+
const ormName = dbStack?.name ?? 'drizzle';
|
|
357
|
+
return `# Database Specialist
|
|
358
|
+
|
|
359
|
+
## Identity
|
|
360
|
+
|
|
361
|
+
You are the **Database Specialist**. You manage schemas and migrations.
|
|
362
|
+
|
|
363
|
+
## ORM
|
|
364
|
+
|
|
365
|
+
- **ORM:** ${ormName}
|
|
366
|
+
|
|
367
|
+
## Responsibilities
|
|
368
|
+
|
|
369
|
+
- Create/modify table schemas
|
|
370
|
+
- Manage migrations
|
|
371
|
+
- Define relationships
|
|
372
|
+
- Configure indexes
|
|
373
|
+
|
|
374
|
+
## Rules
|
|
375
|
+
|
|
376
|
+
${ormName === 'drizzle' ? `
|
|
377
|
+
### Drizzle Specific
|
|
378
|
+
|
|
379
|
+
- Schemas in \`schema/{entity}.ts\`
|
|
380
|
+
- Use \`pgTable\` for PostgreSQL
|
|
381
|
+
- Convention: tables in snake_case plural
|
|
382
|
+
- Explicit foreign keys
|
|
383
|
+
- Soft delete with \`deletedAt\`
|
|
384
|
+
` : `
|
|
385
|
+
### General
|
|
386
|
+
|
|
387
|
+
- Table names in snake_case plural
|
|
388
|
+
- Primary keys as UUID or bigint
|
|
389
|
+
- Timestamps (createdAt, updatedAt)
|
|
390
|
+
- Soft delete when appropriate
|
|
391
|
+
`}
|
|
392
|
+
|
|
393
|
+
## Schema Example
|
|
394
|
+
|
|
395
|
+
\`\`\`typescript
|
|
396
|
+
${ormName === 'drizzle' ? `
|
|
397
|
+
import { pgTable, uuid, varchar, timestamp } from 'drizzle-orm/pg-core';
|
|
398
|
+
|
|
399
|
+
export const contracts = pgTable('contracts', {
|
|
400
|
+
id: uuid('id').primaryKey().defaultRandom(),
|
|
401
|
+
name: varchar('name', { length: 255 }).notNull(),
|
|
402
|
+
createdAt: timestamp('created_at').defaultNow().notNull(),
|
|
403
|
+
updatedAt: timestamp('updated_at').defaultNow().notNull(),
|
|
404
|
+
deletedAt: timestamp('deleted_at'),
|
|
405
|
+
});
|
|
406
|
+
` : `
|
|
407
|
+
// Schema example for ${ormName}
|
|
408
|
+
`}
|
|
409
|
+
\`\`\`
|
|
410
|
+
|
|
411
|
+
## Commands
|
|
412
|
+
|
|
413
|
+
- Generate migration: \`${getRunCommand(projectInfo.packageManager, 'db:generate')}\`
|
|
414
|
+
- Run migration: \`${getRunCommand(projectInfo.packageManager, 'db:migrate')}\`
|
|
415
|
+
- Push (dev): \`${getRunCommand(projectInfo.packageManager, 'db:push')}\`
|
|
416
|
+
`;
|
|
417
|
+
}
|
|
418
|
+
function generateNamingTemplate(projectInfo) {
|
|
419
|
+
const classPattern = projectInfo.patterns?.classes ?? 'PascalCase';
|
|
420
|
+
const filePattern = projectInfo.patterns?.files ?? 'kebab-case';
|
|
421
|
+
const folderPattern = projectInfo.patterns?.folders ?? 'plural';
|
|
422
|
+
return `# Naming Conventions Prompt
|
|
423
|
+
|
|
424
|
+
> Central reference for naming conventions (L3).
|
|
425
|
+
> Other prompts (backend, frontend, database) should reference this file.
|
|
426
|
+
|
|
427
|
+
## Rule L3
|
|
428
|
+
|
|
429
|
+
> **L3 - Naming:** All implementations MUST follow the project naming conventions.
|
|
430
|
+
|
|
431
|
+
## Detected Conventions
|
|
432
|
+
|
|
433
|
+
| Type | Pattern |
|
|
434
|
+
|------|---------|
|
|
435
|
+
| Classes | ${classPattern} |
|
|
436
|
+
| Files | ${typeof filePattern === 'object' ? JSON.stringify(filePattern) : filePattern} |
|
|
437
|
+
| Folders | ${folderPattern} |
|
|
438
|
+
|
|
439
|
+
## Quick Reference
|
|
440
|
+
|
|
441
|
+
| Type | Pattern | Example |
|
|
442
|
+
|------|---------|---------|
|
|
443
|
+
| Entity/Class | PascalCase singular | \`Contract\`, \`Person\` |
|
|
444
|
+
| DB Table | snake_case plural | \`contracts\`, \`people\` |
|
|
445
|
+
| DB Column | snake_case | \`created_at\`, \`tenant_id\` |
|
|
446
|
+
| Foreign Key | {table}_id | \`contract_id\` |
|
|
447
|
+
| Index | idx_{table}_{cols} | \`idx_contracts_tenant\` |
|
|
448
|
+
| Endpoint/Route | kebab-case | \`/api/contracts\` |
|
|
449
|
+
| Component | PascalCase | \`ContractForm\` |
|
|
450
|
+
| Hook | use + camelCase | \`useContracts\` |
|
|
451
|
+
| Service | PascalCase + Service | \`ContractService\` |
|
|
452
|
+
|
|
453
|
+
## Entities / Classes
|
|
454
|
+
|
|
455
|
+
\`\`\`
|
|
456
|
+
✅ Contract
|
|
457
|
+
✅ Person
|
|
458
|
+
✅ InvoiceItem
|
|
459
|
+
|
|
460
|
+
❌ Contracts (not plural)
|
|
461
|
+
❌ contract (not lowercase)
|
|
462
|
+
❌ invoice_item (not snake_case)
|
|
463
|
+
\`\`\`
|
|
464
|
+
|
|
465
|
+
## Database Tables
|
|
466
|
+
|
|
467
|
+
\`\`\`
|
|
468
|
+
✅ contracts
|
|
469
|
+
✅ people
|
|
470
|
+
✅ invoice_items
|
|
471
|
+
|
|
472
|
+
❌ Contract (not singular)
|
|
473
|
+
❌ InvoiceItems (not PascalCase)
|
|
474
|
+
\`\`\`
|
|
475
|
+
|
|
476
|
+
## Endpoints / Routes
|
|
477
|
+
|
|
478
|
+
\`\`\`
|
|
479
|
+
✅ /api/contracts
|
|
480
|
+
✅ /api/contracts/{id}
|
|
481
|
+
✅ /api/invoice-items
|
|
482
|
+
|
|
483
|
+
❌ /api/Contracts
|
|
484
|
+
❌ /api/contract
|
|
485
|
+
❌ /api/invoiceItems
|
|
486
|
+
\`\`\`
|
|
487
|
+
|
|
488
|
+
## Hooks (Frontend)
|
|
489
|
+
|
|
490
|
+
\`\`\`
|
|
491
|
+
✅ useContract
|
|
492
|
+
✅ useContracts
|
|
493
|
+
✅ useContractMutations
|
|
494
|
+
|
|
495
|
+
❌ UseContract
|
|
496
|
+
❌ use-contract
|
|
497
|
+
❌ contractHook
|
|
498
|
+
\`\`\`
|
|
499
|
+
|
|
500
|
+
## Abbreviations
|
|
501
|
+
|
|
502
|
+
**Avoid** abbreviations in names:
|
|
503
|
+
|
|
504
|
+
- ✅ Configuration, ❌ Config
|
|
505
|
+
- ✅ Application, ❌ App
|
|
506
|
+
- ✅ Repository, ❌ Repo
|
|
507
|
+
|
|
508
|
+
**Accepted exceptions:** \`Id\`, \`Dto\`, \`Api\`
|
|
509
|
+
|
|
510
|
+
## Validation Checklist (L3)
|
|
511
|
+
|
|
512
|
+
\`\`\`
|
|
513
|
+
□ Class names in PascalCase singular
|
|
514
|
+
□ Table names in snake_case plural
|
|
515
|
+
□ Column names in snake_case
|
|
516
|
+
□ Foreign keys with _id suffix
|
|
517
|
+
□ Endpoints in kebab-case
|
|
518
|
+
□ Hooks with use prefix
|
|
519
|
+
□ No abbreviations (except Id, Dto, Api)
|
|
520
|
+
\`\`\`
|
|
521
|
+
|
|
522
|
+
## See Also
|
|
523
|
+
|
|
524
|
+
- [enforcement.md](../core/enforcement.md) - Rule L3
|
|
525
|
+
- [backend.md](./backend.md) - Backend patterns
|
|
526
|
+
- [frontend.md](./frontend.md) - Frontend patterns
|
|
527
|
+
- [database.md](./database.md) - Database patterns
|
|
528
|
+
`;
|
|
529
|
+
}
|
|
530
|
+
// ============== Sync/Merge Functions ==============
|
|
531
|
+
const AUTO_START = '<!-- MUSTARD:AUTO-START -->';
|
|
532
|
+
const AUTO_END = '<!-- MUSTARD:AUTO-END -->';
|
|
533
|
+
/**
|
|
534
|
+
* Generate auto-populated context section for a prompt
|
|
535
|
+
*/
|
|
536
|
+
export function generateAutoSection(promptType, projectInfo, analysis, patterns) {
|
|
537
|
+
const stacks = projectInfo.stacks.map(s => `${s.name} ${s.version || ''}`).join(', ');
|
|
538
|
+
const entities = patterns.entities?.map(e => e.name).slice(0, 10).join(', ') || 'None detected';
|
|
539
|
+
const architecture = analysis.architecture?.type || projectInfo.structure?.architecture?.type || 'unknown';
|
|
540
|
+
const detectedPatterns = analysis.patterns?.length > 0 ? analysis.patterns.join(', ') : 'Standard';
|
|
541
|
+
return `${AUTO_START}
|
|
542
|
+
## Project Context (Auto-Generated)
|
|
543
|
+
|
|
544
|
+
- **Stacks:** ${stacks}
|
|
545
|
+
- **Architecture:** ${architecture}
|
|
546
|
+
- **Entities:** ${entities}${patterns.entities && patterns.entities.length > 10 ? ` (+${patterns.entities.length - 10} more)` : ''}
|
|
547
|
+
- **Patterns:** ${detectedPatterns}
|
|
548
|
+
|
|
549
|
+
> This section is auto-updated by \`mustard sync\`. Edit content below the marker.
|
|
550
|
+
${AUTO_END}`;
|
|
551
|
+
}
|
|
552
|
+
/**
|
|
553
|
+
* Merge auto-generated content with existing prompt, preserving user content
|
|
554
|
+
*/
|
|
555
|
+
export function mergePromptContext(existingContent, newAutoSection) {
|
|
556
|
+
const hasAutoSection = existingContent.includes(AUTO_START) && existingContent.includes(AUTO_END);
|
|
557
|
+
if (hasAutoSection) {
|
|
558
|
+
// Replace existing auto section
|
|
559
|
+
const regex = new RegExp(`${escapeRegex(AUTO_START)}[\\s\\S]*?${escapeRegex(AUTO_END)}`, 'g');
|
|
560
|
+
return existingContent.replace(regex, newAutoSection);
|
|
561
|
+
}
|
|
562
|
+
else {
|
|
563
|
+
// Insert auto section after the title (first # line)
|
|
564
|
+
const lines = existingContent.split('\n');
|
|
565
|
+
const titleIndex = lines.findIndex(l => l.startsWith('# '));
|
|
566
|
+
if (titleIndex >= 0) {
|
|
567
|
+
lines.splice(titleIndex + 1, 0, '', newAutoSection, '');
|
|
568
|
+
return lines.join('\n');
|
|
569
|
+
}
|
|
570
|
+
else {
|
|
571
|
+
// No title found, prepend
|
|
572
|
+
return newAutoSection + '\n\n' + existingContent;
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
function escapeRegex(str) {
|
|
577
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
578
|
+
}
|
|
579
|
+
//# sourceMappingURL=prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/generators/prompts.ts"],"names":[],"mappings":"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"}
|