brainforge-ai 1.1.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +314 -31
- package/dist/commands/serve.js +16 -16
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +9 -0
- package/dist/commands/update.js.map +1 -1
- package/dist/core/dashboardTemplate.js +317 -317
- package/dist/core/fileSystem.d.ts.map +1 -1
- package/dist/core/fileSystem.js +316 -309
- package/dist/core/fileSystem.js.map +1 -1
- package/dist/core/templates.d.ts +1 -0
- package/dist/core/templates.d.ts.map +1 -1
- package/dist/core/templates.js +8386 -1129
- package/dist/core/templates.js.map +1 -1
- package/package.json +54 -54
package/dist/core/fileSystem.js
CHANGED
|
@@ -87,159 +87,166 @@ async function createBrainforgeStructure(config, cwd = process.cwd()) {
|
|
|
87
87
|
await fs_extra_1.default.writeFile(filePath, content);
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
|
+
// Write Claude Code skills to .claude/skills/
|
|
91
|
+
const claudeSkillsDir = path_1.default.join(cwd, '.claude', 'skills');
|
|
92
|
+
await fs_extra_1.default.ensureDir(claudeSkillsDir);
|
|
93
|
+
const skills = (0, templates_1.getSkillTemplates)(config);
|
|
94
|
+
for (const [filename, content] of Object.entries(skills)) {
|
|
95
|
+
await fs_extra_1.default.writeFile(path_1.default.join(claudeSkillsDir, filename), content);
|
|
96
|
+
}
|
|
90
97
|
}
|
|
91
98
|
function generateProjectMd(config) {
|
|
92
|
-
return `# Project: ${config.projectName}
|
|
93
|
-
|
|
94
|
-
**Description:** ${config.description || '_To be filled_'}
|
|
95
|
-
**Type:** ${config.projectType}
|
|
96
|
-
**Stack:** ${config.stack.join(', ')}
|
|
97
|
-
**User Level:** ${config.userLevel}
|
|
98
|
-
**Code Level:** ${config.codeLevel}
|
|
99
|
-
**Academic:** ${config.isAcademic ? 'Yes' : 'No'}
|
|
100
|
-
**Created:** ${config.createdAt}
|
|
101
|
-
|
|
102
|
-
## Features
|
|
103
|
-
|
|
104
|
-
- Docker: ${config.useDocker ? 'Yes' : 'No'}
|
|
105
|
-
- Database: ${config.useDatabase ? 'Yes' : 'No'}
|
|
106
|
-
- Authentication: ${config.useAuth ? 'Yes' : 'No'}
|
|
107
|
-
- Admin Dashboard: ${config.useAdminDashboard ? 'Yes' : 'No'}
|
|
108
|
-
- Responsive: ${config.useResponsive ? 'Yes' : 'No'}
|
|
109
|
-
|
|
110
|
-
## Goal
|
|
111
|
-
|
|
112
|
-
_Describe the main goal of the project here._
|
|
113
|
-
|
|
114
|
-
## Scope
|
|
115
|
-
|
|
116
|
-
_Define what is in scope and what is out of scope._
|
|
117
|
-
|
|
118
|
-
## Success Criteria
|
|
119
|
-
|
|
120
|
-
- [ ] Core features working
|
|
121
|
-
- [ ] Tested and reviewed
|
|
122
|
-
- [ ] Documented
|
|
99
|
+
return `# Project: ${config.projectName}
|
|
100
|
+
|
|
101
|
+
**Description:** ${config.description || '_To be filled_'}
|
|
102
|
+
**Type:** ${config.projectType}
|
|
103
|
+
**Stack:** ${config.stack.join(', ')}
|
|
104
|
+
**User Level:** ${config.userLevel}
|
|
105
|
+
**Code Level:** ${config.codeLevel}
|
|
106
|
+
**Academic:** ${config.isAcademic ? 'Yes' : 'No'}
|
|
107
|
+
**Created:** ${config.createdAt}
|
|
108
|
+
|
|
109
|
+
## Features
|
|
110
|
+
|
|
111
|
+
- Docker: ${config.useDocker ? 'Yes' : 'No'}
|
|
112
|
+
- Database: ${config.useDatabase ? 'Yes' : 'No'}
|
|
113
|
+
- Authentication: ${config.useAuth ? 'Yes' : 'No'}
|
|
114
|
+
- Admin Dashboard: ${config.useAdminDashboard ? 'Yes' : 'No'}
|
|
115
|
+
- Responsive: ${config.useResponsive ? 'Yes' : 'No'}
|
|
116
|
+
|
|
117
|
+
## Goal
|
|
118
|
+
|
|
119
|
+
_Describe the main goal of the project here._
|
|
120
|
+
|
|
121
|
+
## Scope
|
|
122
|
+
|
|
123
|
+
_Define what is in scope and what is out of scope._
|
|
124
|
+
|
|
125
|
+
## Success Criteria
|
|
126
|
+
|
|
127
|
+
- [ ] Core features working
|
|
128
|
+
- [ ] Tested and reviewed
|
|
129
|
+
- [ ] Documented
|
|
123
130
|
`;
|
|
124
131
|
}
|
|
125
132
|
function generateQuestionsMd(config) {
|
|
126
|
-
return `# Project Questions
|
|
127
|
-
|
|
128
|
-
_Answered during init_
|
|
129
|
-
|
|
130
|
-
| Question | Answer |
|
|
131
|
-
|----------|--------|
|
|
132
|
-
| Project type | ${config.projectType} |
|
|
133
|
-
| Stack | ${config.stack.join(', ')} |
|
|
134
|
-
| User level | ${config.userLevel} |
|
|
135
|
-
| Code level | ${config.codeLevel} |
|
|
136
|
-
| Docker | ${config.useDocker ? 'Yes' : 'No'} |
|
|
137
|
-
| Database | ${config.useDatabase ? 'Yes' : 'No'} |
|
|
138
|
-
| Authentication | ${config.useAuth ? 'Yes' : 'No'} |
|
|
139
|
-
| Admin dashboard | ${config.useAdminDashboard ? 'Yes' : 'No'} |
|
|
140
|
-
| Responsive | ${config.useResponsive ? 'Yes' : 'No'} |
|
|
141
|
-
| Academic project | ${config.isAcademic ? 'Yes' : 'No'} |
|
|
142
|
-
|
|
143
|
-
## Open Questions
|
|
144
|
-
|
|
145
|
-
_Add questions that need clarification here._
|
|
146
|
-
|
|
147
|
-
- [ ] ?
|
|
133
|
+
return `# Project Questions
|
|
134
|
+
|
|
135
|
+
_Answered during init_
|
|
136
|
+
|
|
137
|
+
| Question | Answer |
|
|
138
|
+
|----------|--------|
|
|
139
|
+
| Project type | ${config.projectType} |
|
|
140
|
+
| Stack | ${config.stack.join(', ')} |
|
|
141
|
+
| User level | ${config.userLevel} |
|
|
142
|
+
| Code level | ${config.codeLevel} |
|
|
143
|
+
| Docker | ${config.useDocker ? 'Yes' : 'No'} |
|
|
144
|
+
| Database | ${config.useDatabase ? 'Yes' : 'No'} |
|
|
145
|
+
| Authentication | ${config.useAuth ? 'Yes' : 'No'} |
|
|
146
|
+
| Admin dashboard | ${config.useAdminDashboard ? 'Yes' : 'No'} |
|
|
147
|
+
| Responsive | ${config.useResponsive ? 'Yes' : 'No'} |
|
|
148
|
+
| Academic project | ${config.isAcademic ? 'Yes' : 'No'} |
|
|
149
|
+
|
|
150
|
+
## Open Questions
|
|
151
|
+
|
|
152
|
+
_Add questions that need clarification here._
|
|
153
|
+
|
|
154
|
+
- [ ] ?
|
|
148
155
|
`;
|
|
149
156
|
}
|
|
150
157
|
function generateDecisionsMd() {
|
|
151
|
-
return `# Architecture Decisions
|
|
152
|
-
|
|
153
|
-
_Decisions taken during the project_
|
|
154
|
-
|
|
155
|
-
## Format
|
|
156
|
-
|
|
157
|
-
\`\`\`
|
|
158
|
-
- [YYYY-MM-DD] Decision title
|
|
159
|
-
Context: why this decision was needed
|
|
160
|
-
Choice: what was decided
|
|
161
|
-
Reason: why this option
|
|
162
|
-
\`\`\`
|
|
163
|
-
|
|
164
|
-
## Decisions
|
|
165
|
-
|
|
166
|
-
- [${new Date().toISOString().slice(0, 10)}] Project initialized with BrainForge
|
|
167
|
-
Context: Starting a new project
|
|
168
|
-
Choice: Using BrainForge CLI
|
|
169
|
-
Reason: Structured, AI-assisted development workflow
|
|
158
|
+
return `# Architecture Decisions
|
|
159
|
+
|
|
160
|
+
_Decisions taken during the project_
|
|
161
|
+
|
|
162
|
+
## Format
|
|
163
|
+
|
|
164
|
+
\`\`\`
|
|
165
|
+
- [YYYY-MM-DD] Decision title
|
|
166
|
+
Context: why this decision was needed
|
|
167
|
+
Choice: what was decided
|
|
168
|
+
Reason: why this option
|
|
169
|
+
\`\`\`
|
|
170
|
+
|
|
171
|
+
## Decisions
|
|
172
|
+
|
|
173
|
+
- [${new Date().toISOString().slice(0, 10)}] Project initialized with BrainForge
|
|
174
|
+
Context: Starting a new project
|
|
175
|
+
Choice: Using BrainForge CLI
|
|
176
|
+
Reason: Structured, AI-assisted development workflow
|
|
170
177
|
`;
|
|
171
178
|
}
|
|
172
179
|
function generateRoadmapMd(config) {
|
|
173
|
-
return `# Project Roadmap: ${config.projectName}
|
|
174
|
-
|
|
175
|
-
_Generated by BrainForge. Run /create-roadmap to generate a detailed roadmap._
|
|
176
|
-
|
|
177
|
-
## Epic 1: Foundation
|
|
178
|
-
|
|
179
|
-
### Feature 1.1: Project Setup
|
|
180
|
-
- Task: Initialize project structure
|
|
181
|
-
- Subtask: Create folder structure
|
|
182
|
-
- Subtask: Configure environment
|
|
183
|
-
- Task: Setup stack
|
|
184
|
-
- Subtask: Install dependencies
|
|
185
|
-
- Subtask: Configure tools
|
|
186
|
-
|
|
187
|
-
### Feature 1.2: Core Architecture
|
|
188
|
-
- Task: Define data models
|
|
189
|
-
- Task: Setup routing/navigation
|
|
190
|
-
|
|
191
|
-
## Epic 2: Core Features
|
|
192
|
-
|
|
193
|
-
### Feature 2.1: Main Functionality
|
|
194
|
-
- Task: Implement primary feature
|
|
195
|
-
- Task: Connect to data source
|
|
196
|
-
|
|
197
|
-
### Feature 2.2: UI/UX
|
|
198
|
-
- Task: Build main screens
|
|
199
|
-
- Task: Make responsive
|
|
200
|
-
|
|
201
|
-
## Epic 3: Quality & Delivery
|
|
202
|
-
|
|
203
|
-
### Feature 3.1: Testing
|
|
204
|
-
- Task: Unit tests
|
|
205
|
-
- Task: Integration tests
|
|
206
|
-
|
|
207
|
-
### Feature 3.2: Documentation
|
|
208
|
-
- Task: Write README
|
|
209
|
-
- Task: Prepare presentation
|
|
210
|
-
|
|
211
|
-
## Phase Summary
|
|
212
|
-
|
|
213
|
-
| Phase | Epic | Status |
|
|
214
|
-
|-------|------|--------|
|
|
215
|
-
| Phase 01 | Foundation | pending |
|
|
216
|
-
| Phase 02 | Core Features | pending |
|
|
180
|
+
return `# Project Roadmap: ${config.projectName}
|
|
181
|
+
|
|
182
|
+
_Generated by BrainForge. Run /create-roadmap to generate a detailed roadmap._
|
|
183
|
+
|
|
184
|
+
## Epic 1: Foundation
|
|
185
|
+
|
|
186
|
+
### Feature 1.1: Project Setup
|
|
187
|
+
- Task: Initialize project structure
|
|
188
|
+
- Subtask: Create folder structure
|
|
189
|
+
- Subtask: Configure environment
|
|
190
|
+
- Task: Setup stack
|
|
191
|
+
- Subtask: Install dependencies
|
|
192
|
+
- Subtask: Configure tools
|
|
193
|
+
|
|
194
|
+
### Feature 1.2: Core Architecture
|
|
195
|
+
- Task: Define data models
|
|
196
|
+
- Task: Setup routing/navigation
|
|
197
|
+
|
|
198
|
+
## Epic 2: Core Features
|
|
199
|
+
|
|
200
|
+
### Feature 2.1: Main Functionality
|
|
201
|
+
- Task: Implement primary feature
|
|
202
|
+
- Task: Connect to data source
|
|
203
|
+
|
|
204
|
+
### Feature 2.2: UI/UX
|
|
205
|
+
- Task: Build main screens
|
|
206
|
+
- Task: Make responsive
|
|
207
|
+
|
|
208
|
+
## Epic 3: Quality & Delivery
|
|
209
|
+
|
|
210
|
+
### Feature 3.1: Testing
|
|
211
|
+
- Task: Unit tests
|
|
212
|
+
- Task: Integration tests
|
|
213
|
+
|
|
214
|
+
### Feature 3.2: Documentation
|
|
215
|
+
- Task: Write README
|
|
216
|
+
- Task: Prepare presentation
|
|
217
|
+
|
|
218
|
+
## Phase Summary
|
|
219
|
+
|
|
220
|
+
| Phase | Epic | Status |
|
|
221
|
+
|-------|------|--------|
|
|
222
|
+
| Phase 01 | Foundation | pending |
|
|
223
|
+
| Phase 02 | Core Features | pending |
|
|
217
224
|
`;
|
|
218
225
|
}
|
|
219
226
|
function generateArchitectureMd(config) {
|
|
220
|
-
return `# Architecture Memory
|
|
221
|
-
|
|
222
|
-
**Stack:** ${config.stack.join(', ')}
|
|
223
|
-
**Pattern:** _To be defined_
|
|
224
|
-
|
|
225
|
-
## Folder Structure
|
|
226
|
-
|
|
227
|
-
\`\`\`
|
|
228
|
-
project/
|
|
229
|
-
_Update this as you build_
|
|
230
|
-
\`\`\`
|
|
231
|
-
|
|
232
|
-
## Key Decisions
|
|
233
|
-
|
|
234
|
-
_Add architecture decisions here as the project evolves._
|
|
235
|
-
|
|
236
|
-
## Data Flow
|
|
237
|
-
|
|
238
|
-
_Describe how data flows through your application._
|
|
239
|
-
|
|
240
|
-
## External Services
|
|
241
|
-
|
|
242
|
-
_List any external APIs, databases, or services._
|
|
227
|
+
return `# Architecture Memory
|
|
228
|
+
|
|
229
|
+
**Stack:** ${config.stack.join(', ')}
|
|
230
|
+
**Pattern:** _To be defined_
|
|
231
|
+
|
|
232
|
+
## Folder Structure
|
|
233
|
+
|
|
234
|
+
\`\`\`
|
|
235
|
+
project/
|
|
236
|
+
_Update this as you build_
|
|
237
|
+
\`\`\`
|
|
238
|
+
|
|
239
|
+
## Key Decisions
|
|
240
|
+
|
|
241
|
+
_Add architecture decisions here as the project evolves._
|
|
242
|
+
|
|
243
|
+
## Data Flow
|
|
244
|
+
|
|
245
|
+
_Describe how data flows through your application._
|
|
246
|
+
|
|
247
|
+
## External Services
|
|
248
|
+
|
|
249
|
+
_List any external APIs, databases, or services._
|
|
243
250
|
`;
|
|
244
251
|
}
|
|
245
252
|
function generateCodingStyleMd(config) {
|
|
@@ -280,189 +287,189 @@ function generateCodingStyleMd(config) {
|
|
|
280
287
|
],
|
|
281
288
|
};
|
|
282
289
|
const levelRules = rules[config.codeLevel] || rules['intermediate'];
|
|
283
|
-
return `# Coding Style Guide
|
|
284
|
-
|
|
285
|
-
**Level:** ${config.codeLevel}
|
|
286
|
-
**User Level:** ${config.userLevel}
|
|
287
|
-
|
|
288
|
-
## Rules
|
|
289
|
-
|
|
290
|
-
${levelRules.map((r) => `- ${r}`).join('\n')}
|
|
291
|
-
|
|
292
|
-
## Stack Conventions
|
|
293
|
-
|
|
294
|
-
**Stack:** ${config.stack.join(', ')}
|
|
295
|
-
|
|
296
|
-
_Update this section with conventions specific to your stack._
|
|
297
|
-
|
|
298
|
-
## What to Avoid
|
|
299
|
-
|
|
300
|
-
- Over-engineered abstractions
|
|
301
|
-
- Premature optimization
|
|
302
|
-
- Unnecessary dependencies
|
|
303
|
-
- Magic strings/numbers without constants
|
|
304
|
-
- Dead code
|
|
305
|
-
|
|
306
|
-
## Code Level Engine
|
|
307
|
-
|
|
308
|
-
\`\`\`
|
|
309
|
-
beginner → simple, direct, few files, FR comments
|
|
310
|
-
intermediate → clean, modular, good practices
|
|
311
|
-
professional → strict, tested, secure, scalable
|
|
312
|
-
academic-realistic → clean but natural, explainable, no enterprise patterns
|
|
313
|
-
\`\`\`
|
|
290
|
+
return `# Coding Style Guide
|
|
291
|
+
|
|
292
|
+
**Level:** ${config.codeLevel}
|
|
293
|
+
**User Level:** ${config.userLevel}
|
|
294
|
+
|
|
295
|
+
## Rules
|
|
296
|
+
|
|
297
|
+
${levelRules.map((r) => `- ${r}`).join('\n')}
|
|
298
|
+
|
|
299
|
+
## Stack Conventions
|
|
300
|
+
|
|
301
|
+
**Stack:** ${config.stack.join(', ')}
|
|
302
|
+
|
|
303
|
+
_Update this section with conventions specific to your stack._
|
|
304
|
+
|
|
305
|
+
## What to Avoid
|
|
306
|
+
|
|
307
|
+
- Over-engineered abstractions
|
|
308
|
+
- Premature optimization
|
|
309
|
+
- Unnecessary dependencies
|
|
310
|
+
- Magic strings/numbers without constants
|
|
311
|
+
- Dead code
|
|
312
|
+
|
|
313
|
+
## Code Level Engine
|
|
314
|
+
|
|
315
|
+
\`\`\`
|
|
316
|
+
beginner → simple, direct, few files, FR comments
|
|
317
|
+
intermediate → clean, modular, good practices
|
|
318
|
+
professional → strict, tested, secure, scalable
|
|
319
|
+
academic-realistic → clean but natural, explainable, no enterprise patterns
|
|
320
|
+
\`\`\`
|
|
314
321
|
`;
|
|
315
322
|
}
|
|
316
323
|
function generateKnownBugsMd() {
|
|
317
|
-
return `# Known Bugs
|
|
318
|
-
|
|
319
|
-
_Updated automatically during /debug-issue and /review-phase_
|
|
320
|
-
|
|
321
|
-
## Active
|
|
322
|
-
|
|
323
|
-
_No bugs tracked yet._
|
|
324
|
-
|
|
325
|
-
## Resolved
|
|
326
|
-
|
|
327
|
-
_No resolved bugs yet._
|
|
328
|
-
|
|
329
|
-
## Format
|
|
330
|
-
|
|
331
|
-
\`\`\`
|
|
332
|
-
- [YYYY-MM-DD] Bug title
|
|
333
|
-
File: path/to/file.ts
|
|
334
|
-
Description: what happens
|
|
335
|
-
Status: active | resolved
|
|
336
|
-
Fix: how it was fixed (if resolved)
|
|
337
|
-
\`\`\`
|
|
324
|
+
return `# Known Bugs
|
|
325
|
+
|
|
326
|
+
_Updated automatically during /debug-issue and /review-phase_
|
|
327
|
+
|
|
328
|
+
## Active
|
|
329
|
+
|
|
330
|
+
_No bugs tracked yet._
|
|
331
|
+
|
|
332
|
+
## Resolved
|
|
333
|
+
|
|
334
|
+
_No resolved bugs yet._
|
|
335
|
+
|
|
336
|
+
## Format
|
|
337
|
+
|
|
338
|
+
\`\`\`
|
|
339
|
+
- [YYYY-MM-DD] Bug title
|
|
340
|
+
File: path/to/file.ts
|
|
341
|
+
Description: what happens
|
|
342
|
+
Status: active | resolved
|
|
343
|
+
Fix: how it was fixed (if resolved)
|
|
344
|
+
\`\`\`
|
|
338
345
|
`;
|
|
339
346
|
}
|
|
340
347
|
function generateGlossaryMd() {
|
|
341
|
-
return `# Project Glossary
|
|
342
|
-
|
|
343
|
-
_Define domain terms and technical jargon here._
|
|
344
|
-
|
|
345
|
-
| Term | Definition |
|
|
346
|
-
|------|------------|
|
|
347
|
-
| BrainForge | The CLI tool managing this project |
|
|
348
|
-
| Phase | A structured development step with a clear goal |
|
|
349
|
-
| Checkpoint | A git commit marking a stable state |
|
|
350
|
-
| Code Level | The complexity target for generated/written code |
|
|
351
|
-
|
|
352
|
-
_Add more terms as your project grows._
|
|
348
|
+
return `# Project Glossary
|
|
349
|
+
|
|
350
|
+
_Define domain terms and technical jargon here._
|
|
351
|
+
|
|
352
|
+
| Term | Definition |
|
|
353
|
+
|------|------------|
|
|
354
|
+
| BrainForge | The CLI tool managing this project |
|
|
355
|
+
| Phase | A structured development step with a clear goal |
|
|
356
|
+
| Checkpoint | A git commit marking a stable state |
|
|
357
|
+
| Code Level | The complexity target for generated/written code |
|
|
358
|
+
|
|
359
|
+
_Add more terms as your project grows._
|
|
353
360
|
`;
|
|
354
361
|
}
|
|
355
362
|
function generateDesignSystemMd(config) {
|
|
356
|
-
return `# Design System
|
|
357
|
-
|
|
358
|
-
**Project:** ${config.projectName}
|
|
359
|
-
**Style:** Modern, clean, minimal
|
|
360
|
-
|
|
361
|
-
## Colors
|
|
362
|
-
|
|
363
|
-
\`\`\`css
|
|
364
|
-
--color-primary: #6366f1;
|
|
365
|
-
--color-secondary: #8b5cf6;
|
|
366
|
-
--color-success: #22c55e;
|
|
367
|
-
--color-warning: #f59e0b;
|
|
368
|
-
--color-error: #ef4444;
|
|
369
|
-
--color-bg: #0f172a;
|
|
370
|
-
--color-surface: #1e293b;
|
|
371
|
-
--color-text: #f1f5f9;
|
|
372
|
-
--color-muted: #94a3b8;
|
|
373
|
-
\`\`\`
|
|
374
|
-
|
|
375
|
-
## Typography
|
|
376
|
-
|
|
377
|
-
- Headings: Inter, system-ui
|
|
378
|
-
- Body: Inter, system-ui
|
|
379
|
-
- Code: JetBrains Mono, monospace
|
|
380
|
-
- Base size: 16px
|
|
381
|
-
|
|
382
|
-
## Spacing
|
|
383
|
-
|
|
384
|
-
Use multiples of 4px: 4, 8, 12, 16, 24, 32, 48, 64
|
|
385
|
-
|
|
386
|
-
## Components
|
|
387
|
-
|
|
388
|
-
- Buttons: rounded-md, padding 8px 16px
|
|
389
|
-
- Cards: rounded-lg, shadow-md, bg surface
|
|
390
|
-
- Inputs: border, rounded-md, focus ring primary
|
|
391
|
-
- Badges: small, rounded-full
|
|
392
|
-
|
|
393
|
-
## Responsive Rules
|
|
394
|
-
|
|
395
|
-
- Mobile first
|
|
396
|
-
- Breakpoints: 640px (sm), 768px (md), 1024px (lg), 1280px (xl)
|
|
397
|
-
- Max container width: 1280px
|
|
398
|
-
|
|
399
|
-
## Dark Mode
|
|
400
|
-
|
|
401
|
-
Default dark. Light mode optional via class toggle.
|
|
402
|
-
|
|
403
|
-
## Animations
|
|
404
|
-
|
|
405
|
-
- Transitions: 150ms ease
|
|
406
|
-
- Hover effects: subtle scale or color shift
|
|
407
|
-
- No flashy animations — keep it professional
|
|
363
|
+
return `# Design System
|
|
364
|
+
|
|
365
|
+
**Project:** ${config.projectName}
|
|
366
|
+
**Style:** Modern, clean, minimal
|
|
367
|
+
|
|
368
|
+
## Colors
|
|
369
|
+
|
|
370
|
+
\`\`\`css
|
|
371
|
+
--color-primary: #6366f1;
|
|
372
|
+
--color-secondary: #8b5cf6;
|
|
373
|
+
--color-success: #22c55e;
|
|
374
|
+
--color-warning: #f59e0b;
|
|
375
|
+
--color-error: #ef4444;
|
|
376
|
+
--color-bg: #0f172a;
|
|
377
|
+
--color-surface: #1e293b;
|
|
378
|
+
--color-text: #f1f5f9;
|
|
379
|
+
--color-muted: #94a3b8;
|
|
380
|
+
\`\`\`
|
|
381
|
+
|
|
382
|
+
## Typography
|
|
383
|
+
|
|
384
|
+
- Headings: Inter, system-ui
|
|
385
|
+
- Body: Inter, system-ui
|
|
386
|
+
- Code: JetBrains Mono, monospace
|
|
387
|
+
- Base size: 16px
|
|
388
|
+
|
|
389
|
+
## Spacing
|
|
390
|
+
|
|
391
|
+
Use multiples of 4px: 4, 8, 12, 16, 24, 32, 48, 64
|
|
392
|
+
|
|
393
|
+
## Components
|
|
394
|
+
|
|
395
|
+
- Buttons: rounded-md, padding 8px 16px
|
|
396
|
+
- Cards: rounded-lg, shadow-md, bg surface
|
|
397
|
+
- Inputs: border, rounded-md, focus ring primary
|
|
398
|
+
- Badges: small, rounded-full
|
|
399
|
+
|
|
400
|
+
## Responsive Rules
|
|
401
|
+
|
|
402
|
+
- Mobile first
|
|
403
|
+
- Breakpoints: 640px (sm), 768px (md), 1024px (lg), 1280px (xl)
|
|
404
|
+
- Max container width: 1280px
|
|
405
|
+
|
|
406
|
+
## Dark Mode
|
|
407
|
+
|
|
408
|
+
Default dark. Light mode optional via class toggle.
|
|
409
|
+
|
|
410
|
+
## Animations
|
|
411
|
+
|
|
412
|
+
- Transitions: 150ms ease
|
|
413
|
+
- Hover effects: subtle scale or color shift
|
|
414
|
+
- No flashy animations — keep it professional
|
|
408
415
|
`;
|
|
409
416
|
}
|
|
410
417
|
function generatePhaseMd(phaseNum, title, config) {
|
|
411
418
|
const padded = String(phaseNum).padStart(2, '0');
|
|
412
|
-
return `# Phase ${padded}: ${title}
|
|
413
|
-
|
|
414
|
-
**Status:** pending
|
|
415
|
-
**Project:** ${config.projectName}
|
|
416
|
-
**Stack:** ${config.stack.join(', ')}
|
|
417
|
-
**Code Level:** ${config.codeLevel}
|
|
418
|
-
|
|
419
|
-
## Objective
|
|
420
|
-
|
|
421
|
-
_Describe what this phase must accomplish._
|
|
422
|
-
|
|
423
|
-
## Context
|
|
424
|
-
|
|
425
|
-
_What should be already done before this phase starts?_
|
|
426
|
-
|
|
427
|
-
## Files Likely Involved
|
|
428
|
-
|
|
429
|
-
_List the files that will be created or modified._
|
|
430
|
-
|
|
431
|
-
\`\`\`
|
|
432
|
-
_To be filled during /initiate-phase_
|
|
433
|
-
\`\`\`
|
|
434
|
-
|
|
435
|
-
## Dependencies
|
|
436
|
-
|
|
437
|
-
- Depends on: Phase ${phaseNum === 1 ? 'none' : '0' + (phaseNum - 1)}
|
|
438
|
-
- Blocking: Phase ${String(phaseNum + 1).padStart(2, '0')}
|
|
439
|
-
|
|
440
|
-
## Execution Plan
|
|
441
|
-
|
|
442
|
-
_Generated by /initiate-phase_
|
|
443
|
-
|
|
444
|
-
- [ ] Step 1
|
|
445
|
-
- [ ] Step 2
|
|
446
|
-
- [ ] Step 3
|
|
447
|
-
|
|
448
|
-
## Validation Criteria
|
|
449
|
-
|
|
450
|
-
- [ ] Feature works as expected
|
|
451
|
-
- [ ] No obvious bugs
|
|
452
|
-
- [ ] Code matches level: ${config.codeLevel}
|
|
453
|
-
- [ ] Committed with checkpoint
|
|
454
|
-
|
|
455
|
-
## Risks
|
|
456
|
-
|
|
457
|
-
- _Add risks here_
|
|
458
|
-
|
|
459
|
-
## Difficulty
|
|
460
|
-
|
|
461
|
-
**Level:** medium
|
|
462
|
-
|
|
463
|
-
## Notes
|
|
464
|
-
|
|
465
|
-
_Add notes during execution_
|
|
419
|
+
return `# Phase ${padded}: ${title}
|
|
420
|
+
|
|
421
|
+
**Status:** pending
|
|
422
|
+
**Project:** ${config.projectName}
|
|
423
|
+
**Stack:** ${config.stack.join(', ')}
|
|
424
|
+
**Code Level:** ${config.codeLevel}
|
|
425
|
+
|
|
426
|
+
## Objective
|
|
427
|
+
|
|
428
|
+
_Describe what this phase must accomplish._
|
|
429
|
+
|
|
430
|
+
## Context
|
|
431
|
+
|
|
432
|
+
_What should be already done before this phase starts?_
|
|
433
|
+
|
|
434
|
+
## Files Likely Involved
|
|
435
|
+
|
|
436
|
+
_List the files that will be created or modified._
|
|
437
|
+
|
|
438
|
+
\`\`\`
|
|
439
|
+
_To be filled during /initiate-phase_
|
|
440
|
+
\`\`\`
|
|
441
|
+
|
|
442
|
+
## Dependencies
|
|
443
|
+
|
|
444
|
+
- Depends on: Phase ${phaseNum === 1 ? 'none' : '0' + (phaseNum - 1)}
|
|
445
|
+
- Blocking: Phase ${String(phaseNum + 1).padStart(2, '0')}
|
|
446
|
+
|
|
447
|
+
## Execution Plan
|
|
448
|
+
|
|
449
|
+
_Generated by /initiate-phase_
|
|
450
|
+
|
|
451
|
+
- [ ] Step 1
|
|
452
|
+
- [ ] Step 2
|
|
453
|
+
- [ ] Step 3
|
|
454
|
+
|
|
455
|
+
## Validation Criteria
|
|
456
|
+
|
|
457
|
+
- [ ] Feature works as expected
|
|
458
|
+
- [ ] No obvious bugs
|
|
459
|
+
- [ ] Code matches level: ${config.codeLevel}
|
|
460
|
+
- [ ] Committed with checkpoint
|
|
461
|
+
|
|
462
|
+
## Risks
|
|
463
|
+
|
|
464
|
+
- _Add risks here_
|
|
465
|
+
|
|
466
|
+
## Difficulty
|
|
467
|
+
|
|
468
|
+
**Level:** medium
|
|
469
|
+
|
|
470
|
+
## Notes
|
|
471
|
+
|
|
472
|
+
_Add notes during execution_
|
|
466
473
|
`;
|
|
467
474
|
}
|
|
468
475
|
//# sourceMappingURL=fileSystem.js.map
|