@nexus-framework/cli 0.1.4 → 0.2.1
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 +133 -40
- package/dist/cli.js +5 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/adopt.d.ts +4 -2
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +47 -8
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +1 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/generators/ai-config.d.ts.map +1 -1
- package/dist/generators/ai-config.js +208 -55
- package/dist/generators/ai-config.js.map +1 -1
- package/dist/generators/docs.d.ts +10 -1
- package/dist/generators/docs.d.ts.map +1 -1
- package/dist/generators/docs.js +40 -65
- package/dist/generators/docs.js.map +1 -1
- package/dist/generators/index.d.ts +2 -1
- package/dist/generators/index.d.ts.map +1 -1
- package/dist/generators/index.js +49 -7
- package/dist/generators/index.js.map +1 -1
- package/dist/generators/spring-boot.d.ts +12 -0
- package/dist/generators/spring-boot.d.ts.map +1 -0
- package/dist/generators/spring-boot.js +220 -0
- package/dist/generators/spring-boot.js.map +1 -0
- package/dist/generators/structure.d.ts +1 -0
- package/dist/generators/structure.d.ts.map +1 -1
- package/dist/generators/structure.js +90 -24
- package/dist/generators/structure.js.map +1 -1
- package/dist/prompts/adoption.d.ts +35 -0
- package/dist/prompts/adoption.d.ts.map +1 -0
- package/dist/prompts/adoption.js +153 -0
- package/dist/prompts/adoption.js.map +1 -0
- package/dist/prompts/frameworks.d.ts +5 -1
- package/dist/prompts/frameworks.d.ts.map +1 -1
- package/dist/prompts/frameworks.js +48 -0
- package/dist/prompts/frameworks.js.map +1 -1
- package/dist/prompts/index.d.ts +2 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +19 -7
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/persona.d.ts +16 -0
- package/dist/prompts/persona.d.ts.map +1 -0
- package/dist/prompts/persona.js +79 -0
- package/dist/prompts/persona.js.map +1 -0
- package/dist/prompts/project-type.d.ts.map +1 -1
- package/dist/prompts/project-type.js +6 -1
- package/dist/prompts/project-type.js.map +1 -1
- package/dist/types/config.d.ts +31 -2
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +7 -1
- package/dist/types/config.js.map +1 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/file-system.d.ts.map +1 -1
- package/dist/utils/file-system.js +4 -2
- package/dist/utils/file-system.js.map +1 -1
- package/dist/utils/logger.d.ts +2 -2
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +49 -36
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/project-detector.d.ts +20 -4
- package/dist/utils/project-detector.d.ts.map +1 -1
- package/dist/utils/project-detector.js +156 -27
- package/dist/utils/project-detector.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +4 -2
|
@@ -61,25 +61,33 @@ function generateInstructions(config) {
|
|
|
61
61
|
|
|
62
62
|
---
|
|
63
63
|
|
|
64
|
-
##
|
|
64
|
+
## ⚠️ Before You Do Anything — 3 Mandatory Steps
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
You MUST complete these 3 steps before doing ANY work. This is not optional.
|
|
67
67
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
|
|
75
|
-
|
|
68
|
+
**Step 1. Read your brain — \`.nexus/docs/index.md\`**
|
|
69
|
+
|
|
70
|
+
This file is your project brain. It tells you:
|
|
71
|
+
- What has been built (do not recreate it)
|
|
72
|
+
- What to work on next (the "What's Next" section)
|
|
73
|
+
- The current objective and status of every component
|
|
74
|
+
|
|
75
|
+
**Step 2. Scan the knowledge base — \`.nexus/docs/knowledge.md\`**
|
|
76
|
+
|
|
77
|
+
This file is the project's long-term memory. It contains past decisions, bug fixes,
|
|
78
|
+
architecture insights, and gotchas discovered during development. Read the headings
|
|
79
|
+
to find entries relevant to your current task. This prevents you from repeating
|
|
80
|
+
mistakes or contradicting past decisions.
|
|
81
|
+
|
|
82
|
+
**Step 3. Read the relevant spec doc** from \`.nexus/docs/\` (01 through 08).
|
|
76
83
|
|
|
77
84
|
\`\`\`
|
|
78
|
-
RULE: Before EVERY task
|
|
79
|
-
RULE:
|
|
80
|
-
RULE:
|
|
81
|
-
RULE:
|
|
82
|
-
RULE: NEVER ask "what
|
|
85
|
+
RULE: Before EVERY task → read .nexus/docs/index.md (your brain)
|
|
86
|
+
RULE: Before EVERY task → scan .nexus/docs/knowledge.md (your memory)
|
|
87
|
+
RULE: After EVERY task → update .nexus/docs/index.md
|
|
88
|
+
RULE: After EVERY task → append to .nexus/docs/knowledge.md if you learned something
|
|
89
|
+
RULE: NEVER ask "what should we work on?" → the index tells you
|
|
90
|
+
RULE: NEVER invent features → work from the feature backlog in the index
|
|
83
91
|
\`\`\`
|
|
84
92
|
|
|
85
93
|
---
|
|
@@ -95,7 +103,6 @@ STOP. If ANY .nexus/docs/ file has status: template → you MUST populate it FIR
|
|
|
95
103
|
Do NOT skip this step. Do NOT jump straight to the user's request.
|
|
96
104
|
This is a hard requirement, not a suggestion.
|
|
97
105
|
\\\`\\\`\\\`
|
|
98
|
-
\\\`\\\`\\\`
|
|
99
106
|
|
|
100
107
|
### Steps:
|
|
101
108
|
|
|
@@ -197,7 +204,7 @@ but ALWAYS read \\\`.nexus/docs/index.md\\\` before every task.
|
|
|
197
204
|
|-----------|---------|
|
|
198
205
|
| \`src/\` | Application source code |
|
|
199
206
|
| \`tests/\` | Unit, integration, and E2E tests |
|
|
200
|
-
| \`.nexus/docs/\` | NEXUS documentation system (8 files) |
|
|
207
|
+
| \`.nexus/docs/\` | NEXUS documentation system (8 files + brain + knowledge) |
|
|
201
208
|
| \`.nexus/\` | Project metadata, AI config, and manifest |
|
|
202
209
|
| \`public/\` | Static assets |
|
|
203
210
|
| \`.github/\` | CI/CD workflows, PR templates |
|
|
@@ -206,10 +213,12 @@ but ALWAYS read \\\`.nexus/docs/index.md\\\` before every task.
|
|
|
206
213
|
|
|
207
214
|
## NEXUS Documentation System
|
|
208
215
|
|
|
209
|
-
This project includes
|
|
216
|
+
This project includes structured documentation files designed for both humans and AI:
|
|
210
217
|
|
|
211
218
|
| # | File | Purpose |
|
|
212
219
|
|---|------|---------|
|
|
220
|
+
| 🧠 | \`.nexus/docs/index.md\` | **PROJECT BRAIN** — status, backlog, progress, what's next |
|
|
221
|
+
| 📚 | \`.nexus/docs/knowledge.md\` | **KNOWLEDGE BASE** — learned insights, patterns, gotchas |
|
|
213
222
|
| 1 | \`.nexus/docs/01_vision.md\` | Product requirements, user stories, success metrics |
|
|
214
223
|
| 2 | \`.nexus/docs/02_architecture.md\` | System design, tech stack decisions, data flow |
|
|
215
224
|
| 3 | \`.nexus/docs/03_data_contracts.md\` | Database schemas, validation rules, relationships |
|
|
@@ -218,44 +227,82 @@ This project includes 8 structured documentation files designed for both humans
|
|
|
218
227
|
| 6 | \`.nexus/docs/06_test_strategy.md\` | Coverage targets, test types, testing philosophy |
|
|
219
228
|
| 7 | \`.nexus/docs/07_implementation.md\` | Build order, file-by-file implementation plan |
|
|
220
229
|
| 8 | \`.nexus/docs/08_deployment.md\` | Infrastructure, CI/CD, environment configuration |
|
|
221
|
-
| 🧠 | \`.nexus/docs/index.md\` | **PROJECT BRAIN** — status, backlog, progress, what's next |
|
|
222
|
-
| 📚 | \`.nexus/docs/knowledge.md\` | **KNOWLEDGE BASE** — learned insights, patterns, gotchas |
|
|
223
230
|
|
|
224
231
|
**Start with \`.nexus/docs/index.md\`** (your brain), then \`.nexus/docs/01_vision.md\`.
|
|
225
232
|
|
|
226
233
|
---
|
|
227
234
|
|
|
235
|
+
## 📚 Knowledge Base Protocol
|
|
236
|
+
|
|
237
|
+
The knowledge base (\`.nexus/docs/knowledge.md\`) is the project's long-term memory.
|
|
238
|
+
It is **append-only** — entries are never deleted, only added.
|
|
239
|
+
|
|
240
|
+
### When to READ it:
|
|
241
|
+
- **Before every task** — scan the headings for entries relevant to your work
|
|
242
|
+
- **Before architectural decisions** — check for past decisions and their rationale
|
|
243
|
+
- **Before debugging** — check for known gotchas and recurring bug patterns
|
|
244
|
+
- **Before choosing packages or patterns** — check for past evaluations
|
|
245
|
+
|
|
246
|
+
### When to WRITE to it:
|
|
247
|
+
- **After discovering something non-obvious** — a bug root cause, an architecture insight, a package quirk
|
|
248
|
+
- **After making a decision that future agents should know about**
|
|
249
|
+
- **NOT for routine task completion** — that goes in \`index.md\` Progress Log
|
|
250
|
+
|
|
251
|
+
### Entry format:
|
|
252
|
+
\`\`\`
|
|
253
|
+
## [YYYY-MM-DD] category — title
|
|
254
|
+
Description of the discovery. One to three sentences max.
|
|
255
|
+
\`\`\`
|
|
256
|
+
|
|
257
|
+
### Categories:
|
|
258
|
+
| Tag | Use When |
|
|
259
|
+
|-----|----------|
|
|
260
|
+
| \`architecture\` | Design decisions, structural choices, why X over Y |
|
|
261
|
+
| \`bug-fix\` | Recurring bugs, root causes, things to watch for |
|
|
262
|
+
| \`pattern\` | Code patterns that work well (or don't) in this project |
|
|
263
|
+
| \`package\` | Package quirks, version issues, config gotchas |
|
|
264
|
+
| \`performance\` | Bottlenecks found, optimizations applied |
|
|
265
|
+
| \`convention\` | Team/project conventions established during development |
|
|
266
|
+
| \`gotcha\` | Non-obvious traps, edge cases, things that wasted time |
|
|
267
|
+
|
|
268
|
+
### Rules:
|
|
269
|
+
- **NEVER delete entries** — the knowledge base is append-only
|
|
270
|
+
- **Keep entries short** — 1-3 sentences, not essays
|
|
271
|
+
- **Use the format above** — so future agents can scan headings quickly
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
228
275
|
## Workflow — How To Work On This Project
|
|
229
276
|
|
|
230
277
|
### Before EVERY task:
|
|
231
278
|
1. **Read \`.nexus/docs/index.md\`** — check "Current Objective" and "What's Next"
|
|
232
|
-
2. **
|
|
233
|
-
3. **
|
|
279
|
+
2. **Scan \`.nexus/docs/knowledge.md\`** — check for relevant past learnings before making decisions
|
|
280
|
+
3. **Read the relevant spec doc** — find details in the numbered \`.nexus/docs/\` files
|
|
234
281
|
4. **Check \`.nexus/docs/07_implementation.md\`** — find the file-by-file plan
|
|
235
282
|
|
|
236
283
|
### During the task:
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
284
|
+
5. **Write the code** following the architecture in \`.nexus/docs/02_architecture.md\`
|
|
285
|
+
6. **Write tests** — match the strategy in \`.nexus/docs/06_test_strategy.md\`
|
|
286
|
+
7. **Validate** — \`${getValidationCommand(config)}\`
|
|
240
287
|
|
|
241
288
|
### After EVERY task:
|
|
242
|
-
|
|
289
|
+
8. **Update \`.nexus/docs/index.md\`**:
|
|
243
290
|
- Move completed items from "What's Next" to "Progress Log"
|
|
244
291
|
- Update the "Status Matrix" and "What Has Been Built"
|
|
245
292
|
- Set the "Current Objective" to the next priority item
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
293
|
+
9. **Update \`.nexus/docs/07_implementation.md\`** — mark completed files/tasks
|
|
294
|
+
10. **Learn** — if you discovered something non-obvious (bug pattern, architecture insight, package quirk, performance fix), append an entry to \`.nexus/docs/knowledge.md\`
|
|
295
|
+
11. **Commit** — use conventional commits (\`feat:\`, \`fix:\`, etc.)
|
|
296
|
+
12. **Suggest the next task** from \`.nexus/docs/index.md\` "What's Next"
|
|
250
297
|
|
|
251
298
|
### NEVER do this:
|
|
252
299
|
- ❌ Ask "what enhancements would you like?" when the backlog has items
|
|
253
300
|
- ❌ Invent random features not in the backlog
|
|
254
301
|
- ❌ Skip updating the index after completing work
|
|
255
302
|
- ❌ Treat docs as static — they evolve with the project
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
303
|
+
- ❌ Ignore \`.nexus/docs/knowledge.md\` — it prevents repeating mistakes
|
|
304
|
+
- ❌ Delete entries from \`.nexus/docs/knowledge.md\` — it is append-only
|
|
305
|
+
${getPersonaSection(config.persona)}
|
|
259
306
|
*Generated by [NEXUS CLI](https://github.com/GDA-Africa/nexus-cli) v${version} — AI-native project scaffolding by [GDA Africa](https://github.com/GDA-Africa)*
|
|
260
307
|
`;
|
|
261
308
|
return { path: '.nexus/ai/instructions.md', content };
|
|
@@ -286,29 +333,41 @@ function toolInstructionContent(config, toolName) {
|
|
|
286
333
|
|
|
287
334
|
> Auto-generated by [NEXUS CLI](https://github.com/GDA-Africa/nexus-cli) v${version}.
|
|
288
335
|
> This file contains the FULL project-aware instructions — do NOT skip any section.
|
|
336
|
+
> The master copy lives at \`.nexus/ai/instructions.md\`.
|
|
289
337
|
|
|
290
338
|
---
|
|
291
339
|
|
|
292
|
-
##
|
|
340
|
+
## ⚠️ Before You Do Anything — 3 Mandatory Steps
|
|
293
341
|
|
|
294
|
-
|
|
342
|
+
You MUST complete these 3 steps before doing ANY work. This is not optional.
|
|
295
343
|
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
-
|
|
302
|
-
-
|
|
303
|
-
-
|
|
344
|
+
**Step 1. Read your brain — \`.nexus/docs/index.md\`**
|
|
345
|
+
|
|
346
|
+
READ \`.nexus/docs/index.md\` FIRST. EVERY TIME. NO EXCEPTIONS.
|
|
347
|
+
|
|
348
|
+
This file is your project brain. It tells you:
|
|
349
|
+
- What has been built (do not recreate it)
|
|
350
|
+
- What to work on next (the "What's Next" section)
|
|
351
|
+
- The current objective and status of every component
|
|
352
|
+
- The feature backlog — your prioritized roadmap
|
|
353
|
+
- The progress log — your session-by-session memory
|
|
354
|
+
|
|
355
|
+
**Step 2. Scan the knowledge base — \`.nexus/docs/knowledge.md\`**
|
|
356
|
+
|
|
357
|
+
This file is the project's long-term memory. It contains past decisions, bug fixes,
|
|
358
|
+
architecture insights, and gotchas discovered during development. Read the headings
|
|
359
|
+
to find entries relevant to your current task. This prevents you from repeating
|
|
360
|
+
mistakes or contradicting past decisions.
|
|
361
|
+
|
|
362
|
+
**Step 3. Read the relevant spec doc** from \`.nexus/docs/\` (01 through 08).
|
|
304
363
|
|
|
305
364
|
\`\`\`
|
|
306
|
-
RULE: Before EVERY task
|
|
307
|
-
RULE:
|
|
308
|
-
RULE:
|
|
309
|
-
RULE:
|
|
365
|
+
RULE: Before EVERY task → read .nexus/docs/index.md (your brain)
|
|
366
|
+
RULE: Before EVERY task → scan .nexus/docs/knowledge.md (your memory)
|
|
367
|
+
RULE: After EVERY task → update .nexus/docs/index.md
|
|
368
|
+
RULE: After EVERY task → append to .nexus/docs/knowledge.md if you learned something
|
|
310
369
|
RULE: NEVER ask "what enhancements would you like?" → the index has the answer
|
|
311
|
-
RULE: NEVER invent features → work from the feature backlog
|
|
370
|
+
RULE: NEVER invent features → work from the feature backlog in the index
|
|
312
371
|
\`\`\`
|
|
313
372
|
|
|
314
373
|
---
|
|
@@ -392,7 +451,7 @@ This is a hard requirement, not a suggestion.
|
|
|
392
451
|
| # | File | Purpose |
|
|
393
452
|
|---|------|---------|
|
|
394
453
|
| 🧠 | \`.nexus/docs/index.md\` | **PROJECT BRAIN** — status, backlog, progress, what's next |
|
|
395
|
-
| 📚 | \`.nexus/knowledge.md\` | **KNOWLEDGE BASE** — learned insights, patterns, gotchas |
|
|
454
|
+
| 📚 | \`.nexus/docs/knowledge.md\` | **KNOWLEDGE BASE** — learned insights, patterns, gotchas |
|
|
396
455
|
| 1 | \`.nexus/docs/01_vision.md\` | Product requirements, user stories, success metrics |
|
|
397
456
|
| 2 | \`.nexus/docs/02_architecture.md\` | System design, tech stack, data flow |
|
|
398
457
|
| 3 | \`.nexus/docs/03_data_contracts.md\` | Database schemas, validation, relationships |
|
|
@@ -404,11 +463,51 @@ This is a hard requirement, not a suggestion.
|
|
|
404
463
|
|
|
405
464
|
---
|
|
406
465
|
|
|
466
|
+
## 📚 Knowledge Base Protocol
|
|
467
|
+
|
|
468
|
+
The knowledge base (\`.nexus/docs/knowledge.md\`) is the project's long-term memory.
|
|
469
|
+
It is **append-only** — entries are never deleted, only added.
|
|
470
|
+
|
|
471
|
+
### When to READ it:
|
|
472
|
+
- **Before every task** — scan the headings for entries relevant to your work
|
|
473
|
+
- **Before architectural decisions** — check for past decisions and their rationale
|
|
474
|
+
- **Before debugging** — check for known gotchas and recurring bug patterns
|
|
475
|
+
- **Before choosing packages or patterns** — check for past evaluations
|
|
476
|
+
|
|
477
|
+
### When to WRITE to it:
|
|
478
|
+
- **After discovering something non-obvious** — a bug root cause, an architecture insight, a package quirk
|
|
479
|
+
- **After making a decision that future agents should know about**
|
|
480
|
+
- **NOT for routine task completion** — that goes in \`index.md\` Progress Log
|
|
481
|
+
|
|
482
|
+
### Entry format:
|
|
483
|
+
\\\`\\\`\\\`
|
|
484
|
+
## [YYYY-MM-DD] category — title
|
|
485
|
+
Description of the discovery. One to three sentences max.
|
|
486
|
+
\\\`\\\`\\\`
|
|
487
|
+
|
|
488
|
+
### Categories:
|
|
489
|
+
| Tag | Use When |
|
|
490
|
+
|-----|----------|
|
|
491
|
+
| \`architecture\` | Design decisions, structural choices, why X over Y |
|
|
492
|
+
| \`bug-fix\` | Recurring bugs, root causes, things to watch for |
|
|
493
|
+
| \`pattern\` | Code patterns that work well (or don't) in this project |
|
|
494
|
+
| \`package\` | Package quirks, version issues, config gotchas |
|
|
495
|
+
| \`performance\` | Bottlenecks found, optimizations applied |
|
|
496
|
+
| \`convention\` | Team/project conventions established during development |
|
|
497
|
+
| \`gotcha\` | Non-obvious traps, edge cases, things that wasted time |
|
|
498
|
+
|
|
499
|
+
### Rules:
|
|
500
|
+
- **NEVER delete entries** — the knowledge base is append-only
|
|
501
|
+
- **Keep entries short** — 1-3 sentences, not essays
|
|
502
|
+
- **Use the format above** — so future agents can scan headings quickly
|
|
503
|
+
|
|
504
|
+
---
|
|
505
|
+
|
|
407
506
|
## Workflow — How To Work On This Project
|
|
408
507
|
|
|
409
508
|
### Before EVERY task:
|
|
410
509
|
1. **Read \`.nexus/docs/index.md\`** — check "Current Objective" and "What's Next"
|
|
411
|
-
2. **Scan \`.nexus/knowledge.md\`** — check for relevant past learnings
|
|
510
|
+
2. **Scan \`.nexus/docs/knowledge.md\`** — check for relevant past learnings
|
|
412
511
|
3. **Read the relevant spec doc** — find details in the numbered docs
|
|
413
512
|
4. **Check \`.nexus/docs/07_implementation.md\`** — find the file-by-file plan
|
|
414
513
|
|
|
@@ -420,7 +519,7 @@ This is a hard requirement, not a suggestion.
|
|
|
420
519
|
### After EVERY task:
|
|
421
520
|
8. **Update \`.nexus/docs/index.md\`** — move items to Progress Log, update status
|
|
422
521
|
9. **Update \`.nexus/docs/07_implementation.md\`** — mark completed files/tasks
|
|
423
|
-
10. **Learn** — if you discovered something non-obvious, append to \`.nexus/knowledge.md\`
|
|
522
|
+
10. **Learn** — if you discovered something non-obvious, append an entry to \`.nexus/docs/knowledge.md\`
|
|
424
523
|
11. **Commit** — conventional commits (\`feat:\`, \`fix:\`, etc.)
|
|
425
524
|
12. **Suggest the next task** from \`.nexus/docs/index.md\` "What's Next"
|
|
426
525
|
|
|
@@ -429,10 +528,9 @@ This is a hard requirement, not a suggestion.
|
|
|
429
528
|
- ❌ Invent random features not in the backlog
|
|
430
529
|
- ❌ Skip updating the index after completing work
|
|
431
530
|
- ❌ Treat docs as static — they evolve with the project
|
|
432
|
-
- ❌ Ignore \`.nexus/knowledge.md\` — it prevents repeating mistakes
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
531
|
+
- ❌ Ignore \`.nexus/docs/knowledge.md\` — it prevents repeating mistakes
|
|
532
|
+
- ❌ Delete entries from \`.nexus/docs/knowledge.md\` — it is append-only
|
|
533
|
+
${getPersonaSection(config.persona)}
|
|
436
534
|
*Generated by [NEXUS CLI](https://github.com/GDA-Africa/nexus-cli) v${version}*
|
|
437
535
|
`;
|
|
438
536
|
}
|
|
@@ -476,4 +574,59 @@ function getValidationCommand(config) {
|
|
|
476
574
|
const testCmd = config.testFramework !== 'none' ? ` && ${runPrefix} test` : '';
|
|
477
575
|
return `npx tsc --noEmit${testCmd} && ${runPrefix} lint`;
|
|
478
576
|
}
|
|
577
|
+
/**
|
|
578
|
+
* Build the 🎭 Agent Persona instruction section.
|
|
579
|
+
*
|
|
580
|
+
* This block tells the AI agent HOW to communicate with the user.
|
|
581
|
+
* When identity is a non-empty string, the agent refers to itself by that name.
|
|
582
|
+
* Tone descriptions are written for older LLMs — explicit and concrete.
|
|
583
|
+
*/
|
|
584
|
+
function getPersonaSection(persona) {
|
|
585
|
+
const toneGuide = {
|
|
586
|
+
professional: 'Be direct, precise, and business-appropriate. Avoid slang, jokes, and filler. ' +
|
|
587
|
+
'Use clear technical language. Keep responses structured with bullet points or numbered lists when appropriate.',
|
|
588
|
+
friendly: 'Be warm, encouraging, and approachable. Use a conversational tone — like a helpful teammate. ' +
|
|
589
|
+
'Celebrate wins, be supportive when things go wrong, and explain things patiently.',
|
|
590
|
+
witty: 'Be clever and playful. Drop the occasional pun or pop-culture reference — but never at the expense of clarity. ' +
|
|
591
|
+
'Keep the humor light and nerdy. Think "friendly senior dev who happens to be hilarious."',
|
|
592
|
+
zen: 'Be calm, minimalist, and contemplative. Use short sentences. Favor clarity over verbosity. ' +
|
|
593
|
+
'Treat code as craft and the project as a garden to tend. Avoid urgency and noise.',
|
|
594
|
+
pirate: 'Arr! Ye be a swashbuckling code pirate sailing the digital seas. ' +
|
|
595
|
+
'Use nautical metaphors (bugs are "barnacles," deploys are "setting sail," tests are "checking the rigging"). ' +
|
|
596
|
+
'Keep it fun but still technically accurate. Never sacrifice clarity for the bit.',
|
|
597
|
+
};
|
|
598
|
+
const verbosityGuide = {
|
|
599
|
+
concise: 'Keep responses short and focused. Lead with the answer. Skip preamble. ' +
|
|
600
|
+
'Only add context if the user asks or the situation is ambiguous.',
|
|
601
|
+
balanced: 'Provide enough context to understand the "why" without over-explaining. ' +
|
|
602
|
+
'One or two sentences of context, then the solution. Add detail when the topic is complex.',
|
|
603
|
+
detailed: 'Give thorough explanations. Walk through your reasoning. Explain trade-offs. ' +
|
|
604
|
+
'Include examples and edge cases. Great for learning and onboarding.',
|
|
605
|
+
};
|
|
606
|
+
const identityLine = persona.identity
|
|
607
|
+
? `**You are ${persona.identity}** — the AI-powered project partner. Refer to yourself as "${persona.identity}" in responses. ` +
|
|
608
|
+
`When users see the name "${persona.identity}," they know the AI agent has read and understood ` +
|
|
609
|
+
'the NEXUS documentation system. This is your signal that you are synced with the project brain. ' +
|
|
610
|
+
`This name persists across upgrades and repairs — the user chose "${persona.identity}" and it stays.`
|
|
611
|
+
: 'Do not refer to yourself by any special name. Respond as a standard AI assistant.';
|
|
612
|
+
const customLine = persona.customDirective
|
|
613
|
+
? `\n**Custom directive from the developer:** "${persona.customDirective}"\n`
|
|
614
|
+
: '';
|
|
615
|
+
return `
|
|
616
|
+
## 🎭 Agent Persona
|
|
617
|
+
|
|
618
|
+
This section defines how you communicate with the user. Follow these personality directives in ALL responses.
|
|
619
|
+
|
|
620
|
+
### Identity
|
|
621
|
+
${identityLine}
|
|
622
|
+
|
|
623
|
+
### Tone: ${persona.tone}
|
|
624
|
+
${toneGuide[persona.tone] ?? toneGuide['friendly']}
|
|
625
|
+
|
|
626
|
+
### Verbosity: ${persona.verbosity}
|
|
627
|
+
${verbosityGuide[persona.verbosity] ?? verbosityGuide['balanced']}
|
|
628
|
+
${customLine}
|
|
629
|
+
---
|
|
630
|
+
`;
|
|
631
|
+
}
|
|
479
632
|
//# sourceMappingURL=ai-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-config.js","sourceRoot":"","sources":["../../src/generators/ai-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC;;oEAEoE;AAEpE;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAmB;IAClD,MAAM,KAAK,GAAoB,EAAE,CAAC;IAElC,qDAAqD;IACrD,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;IAEzC,6EAA6E;IAC7E,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;IACxC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1C,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;IACvC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC;IAEhD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;oEAEoE;AAEpE,SAAS,oBAAoB,CAAC,MAAmB;IAC/C,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACvE,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;IAC/F,MAAM,eAAe,GACnB,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;IAClF,MAAM,cAAc,GAClB,MAAM,CAAC,gBAAgB,KAAK,MAAM;QAChC,CAAC,CAAC,GAAG,MAAM,CAAC,eAAe,iBAAiB;QAC5C,CAAC,CAAC,GAAG,MAAM,CAAC,gBAAgB,KAAK,MAAM,CAAC,eAAe,GAAG,CAAC;IAE/D,MAAM,OAAO,GAAG,KAAK,MAAM,CAAC,WAAW;;;kFAGyC,OAAO
|
|
1
|
+
{"version":3,"file":"ai-config.js","sourceRoot":"","sources":["../../src/generators/ai-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC;;oEAEoE;AAEpE;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAmB;IAClD,MAAM,KAAK,GAAoB,EAAE,CAAC;IAElC,qDAAqD;IACrD,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;IAEzC,6EAA6E;IAC7E,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;IACxC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1C,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;IACvC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC;IAEhD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;oEAEoE;AAEpE,SAAS,oBAAoB,CAAC,MAAmB;IAC/C,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACvE,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;IAC/F,MAAM,eAAe,GACnB,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;IAClF,MAAM,cAAc,GAClB,MAAM,CAAC,gBAAgB,KAAK,MAAM;QAChC,CAAC,CAAC,GAAG,MAAM,CAAC,eAAe,iBAAiB;QAC5C,CAAC,CAAC,GAAG,MAAM,CAAC,gBAAgB,KAAK,MAAM,CAAC,eAAe,GAAG,CAAC;IAE/D,MAAM,OAAO,GAAG,KAAK,MAAM,CAAC,WAAW;;;kFAGyC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAgG1E,MAAM,CAAC,WAAW;eAClB,MAAM,CAAC,WAAW;oBACb,gBAAgB;wBACZ,MAAM,CAAC,YAAY;kBACzB,cAAc;kBACd,WAAW;0BACH,MAAM,CAAC,cAAc;oCACX,OAAO;;;;;;;;eAQ5B,gBAAgB;;oBAEX,MAAM,CAAC,YAAY;cACzB,cAAc;cACd,WAAW;sBACH,MAAM,CAAC,cAAc;eAC5B,eAAe;;;;;;;;;;;wCAWU,oBAAoB,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAmG9C,oBAAoB,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;EAmBhD,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC;sEACmC,OAAO;CAC5E,CAAC;IAEA,OAAO,EAAE,IAAI,EAAE,2BAA2B,EAAE,OAAO,EAAE,CAAC;AACxD,CAAC;AAED;;;;;;;;;oEASoE;AAEpE;;;;GAIG;AACH,SAAS,sBAAsB,CAAC,MAAmB,EAAE,QAAgB;IACnE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACvE,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;IAC/F,MAAM,eAAe,GACnB,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;IAClF,MAAM,cAAc,GAClB,MAAM,CAAC,gBAAgB,KAAK,MAAM;QAChC,CAAC,CAAC,GAAG,MAAM,CAAC,eAAe,iBAAiB;QAC5C,CAAC,CAAC,GAAG,MAAM,CAAC,gBAAgB,KAAK,MAAM,CAAC,eAAe,GAAG,CAAC;IAE/D,OAAO,KAAK,MAAM,CAAC,WAAW,MAAM,QAAQ;;4EAE8B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA6FxE,MAAM,CAAC,WAAW;WAClB,MAAM,CAAC,WAAW;gBACb,gBAAgB;oBACZ,MAAM,CAAC,YAAY;cACzB,cAAc;cACd,WAAW;sBACH,MAAM,CAAC,cAAc;eAC5B,eAAe;;;;;;;;;;;oCAWM,oBAAoB,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAwE1C,oBAAoB,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;EAgBhD,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC;sEACmC,OAAO;CAC5E,CAAC;AACF,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAmB;IAC9C,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;AACrF,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAmB;IAChD,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,sBAAsB,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC;AACzF,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAmB;IAC7C,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;AACnF,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAmB;IAC3C,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,sBAAsB,CAAC,MAAM,EAAE,4BAA4B,CAAC,EAAE,CAAC;AACtG,CAAC;AAED;;;;oEAIoE;AAEpE,SAAS,2BAA2B,CAAC,MAAmB;IACtD,OAAO,EAAE,IAAI,EAAE,iCAAiC,EAAE,OAAO,EAAE,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,CAAC;AAChH,CAAC;AAED;;oEAEoE;AAEpE,SAAS,mBAAmB,CAAC,SAAiB;IAC5C,MAAM,GAAG,GAA2B;QAClC,MAAM,EAAE,yBAAyB;QACjC,YAAY,EAAE,cAAc;QAC5B,SAAS,EAAE,WAAW;QACtB,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,OAAO;KACf,CAAC;IACF,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;AACrC,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAmB;IAC/C,MAAM,EAAE,GAAG,MAAM,CAAC,cAAc,CAAC;IACjC,MAAM,SAAS,GAAG,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAChD,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,OAAO,mBAAmB,OAAO,OAAO,SAAS,OAAO,CAAC;AAC3D,CAAC;AAED;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,OAAqB;IAC9C,MAAM,SAAS,GAA2B;QACxC,YAAY,EACV,gFAAgF;YAChF,gHAAgH;QAClH,QAAQ,EACN,+FAA+F;YAC/F,mFAAmF;QACrF,KAAK,EACH,iHAAiH;YACjH,0FAA0F;QAC5F,GAAG,EACD,6FAA6F;YAC7F,mFAAmF;QACrF,MAAM,EACJ,mEAAmE;YACnE,+GAA+G;YAC/G,kFAAkF;KACrF,CAAC;IAEF,MAAM,cAAc,GAA2B;QAC7C,OAAO,EACL,yEAAyE;YACzE,kEAAkE;QACpE,QAAQ,EACN,0EAA0E;YAC1E,2FAA2F;QAC7F,QAAQ,EACN,+EAA+E;YAC/E,qEAAqE;KACxE,CAAC;IAEF,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ;QACnC,CAAC,CAAC,aAAa,OAAO,CAAC,QAAQ,8DAA8D,OAAO,CAAC,QAAQ,kBAAkB;YAC7H,4BAA4B,OAAO,CAAC,QAAQ,oDAAoD;YAChG,kGAAkG;YAClG,oEAAoE,OAAO,CAAC,QAAQ,iBAAiB;QACvG,CAAC,CAAC,mFAAmF,CAAC;IAExF,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe;QACxC,CAAC,CAAC,+CAA+C,OAAO,CAAC,eAAe,KAAK;QAC7E,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;;;;;;EAMP,YAAY;;YAEF,OAAO,CAAC,IAAI;EACtB,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC;;iBAEjC,OAAO,CAAC,SAAS;EAChC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,cAAc,CAAC,UAAU,CAAC;EAC/D,UAAU;;CAEX,CAAC;AACF,CAAC"}
|
|
@@ -14,6 +14,15 @@ import type { NexusConfig } from '../types/config.js';
|
|
|
14
14
|
import type { GeneratedFile } from '../types/templates.js';
|
|
15
15
|
/**
|
|
16
16
|
* Generate all NEXUS documentation files for a new project.
|
|
17
|
+
*
|
|
18
|
+
* @param config - Project configuration
|
|
19
|
+
* @param localOnly - Whether to mark as local-only in manifest
|
|
20
|
+
* @param adoptionContext - Optional context from pre-adoption interview (used to pre-fill docs)
|
|
17
21
|
*/
|
|
18
|
-
export declare function generateDocs(config: NexusConfig
|
|
22
|
+
export declare function generateDocs(config: NexusConfig, localOnly?: boolean, adoptionContext?: {
|
|
23
|
+
projectDescription?: string;
|
|
24
|
+
architectureType?: string;
|
|
25
|
+
techStack?: string;
|
|
26
|
+
painPoints?: string;
|
|
27
|
+
}): GeneratedFile[];
|
|
19
28
|
//# sourceMappingURL=docs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/generators/docs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAiB,MAAM,oBAAoB,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AA2C3D
|
|
1
|
+
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/generators/docs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAiB,MAAM,oBAAoB,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AA2C3D;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,WAAW,EACnB,SAAS,UAAQ,EACjB,eAAe,CAAC,EAAE;IAChB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACA,aAAa,EAAE,CAgBjB"}
|
package/dist/generators/docs.js
CHANGED
|
@@ -49,24 +49,33 @@ last_updated: "${now}"
|
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
51
51
|
* Generate all NEXUS documentation files for a new project.
|
|
52
|
+
*
|
|
53
|
+
* @param config - Project configuration
|
|
54
|
+
* @param localOnly - Whether to mark as local-only in manifest
|
|
55
|
+
* @param adoptionContext - Optional context from pre-adoption interview (used to pre-fill docs)
|
|
52
56
|
*/
|
|
53
|
-
export function generateDocs(config) {
|
|
57
|
+
export function generateDocs(config, localOnly = false, adoptionContext) {
|
|
54
58
|
const files = [];
|
|
55
|
-
files.push(generateVision(config));
|
|
56
|
-
files.push(generateArchitecture(config));
|
|
59
|
+
files.push(generateVision(config, adoptionContext));
|
|
60
|
+
files.push(generateArchitecture(config, adoptionContext));
|
|
57
61
|
files.push(generateDataContracts(config));
|
|
58
62
|
files.push(generateApiContracts(config));
|
|
59
63
|
files.push(generateBusinessLogic(config));
|
|
60
64
|
files.push(generateTestStrategy(config));
|
|
61
65
|
files.push(generateImplementation(config));
|
|
62
66
|
files.push(generateDeployment(config));
|
|
63
|
-
files.push(generateProjectIndex(config));
|
|
67
|
+
files.push(generateProjectIndex(config, adoptionContext));
|
|
64
68
|
files.push(generateKnowledge(config));
|
|
65
|
-
files.push(
|
|
66
|
-
files.push(generateNexusManifest(config));
|
|
69
|
+
files.push(generateNexusManifest(config, localOnly));
|
|
67
70
|
return files;
|
|
68
71
|
}
|
|
69
|
-
function generateVision(config) {
|
|
72
|
+
function generateVision(config, adoptionContext) {
|
|
73
|
+
const visionContent = adoptionContext?.projectDescription
|
|
74
|
+
? adoptionContext.projectDescription
|
|
75
|
+
: '<!-- What are you building and why? What problem does it solve? -->';
|
|
76
|
+
const painPointsContent = adoptionContext?.painPoints
|
|
77
|
+
? `\n### Known Pain Points\n${adoptionContext.painPoints}\n`
|
|
78
|
+
: '';
|
|
70
79
|
return {
|
|
71
80
|
path: '.nexus/docs/01_vision.md',
|
|
72
81
|
content: `${frontmatter('01_vision', 'Product Vision & Requirements')}# Product Vision & Requirements
|
|
@@ -76,8 +85,8 @@ function generateVision(config) {
|
|
|
76
85
|
---
|
|
77
86
|
|
|
78
87
|
## 🎯 Product Vision
|
|
79
|
-
|
|
80
|
-
|
|
88
|
+
${visionContent}
|
|
89
|
+
${painPointsContent}
|
|
81
90
|
## 👥 Target Users
|
|
82
91
|
<!-- 2-3 personas: role, goals, pain points, needs -->
|
|
83
92
|
|
|
@@ -93,15 +102,20 @@ function generateVision(config) {
|
|
|
93
102
|
`,
|
|
94
103
|
};
|
|
95
104
|
}
|
|
96
|
-
function generateArchitecture(config) {
|
|
105
|
+
function generateArchitecture(config, adoptionContext) {
|
|
106
|
+
const archTypeContent = adoptionContext?.architectureType
|
|
107
|
+
? `\n**Architecture Type:** ${adoptionContext.architectureType}\n`
|
|
108
|
+
: '';
|
|
109
|
+
const techStackContent = adoptionContext?.techStack
|
|
110
|
+
? `\n### Additional Technologies\n${adoptionContext.techStack}\n`
|
|
111
|
+
: '';
|
|
97
112
|
return {
|
|
98
113
|
path: '.nexus/docs/02_architecture.md',
|
|
99
114
|
content: `${frontmatter('02_architecture', 'System Architecture')}# System Architecture
|
|
100
115
|
|
|
101
116
|
**Project:** ${config.displayName}
|
|
102
117
|
**Framework:** ${config.frontendFramework}
|
|
103
|
-
**Data Strategy:** ${config.dataStrategy}
|
|
104
|
-
|
|
118
|
+
**Data Strategy:** ${config.dataStrategy}${archTypeContent}
|
|
105
119
|
---
|
|
106
120
|
|
|
107
121
|
## 🏗️ Architecture Overview
|
|
@@ -114,7 +128,7 @@ function generateArchitecture(config) {
|
|
|
114
128
|
| Frontend | ${config.frontendFramework} | Selected during project setup |
|
|
115
129
|
| Data | ${config.dataStrategy} | ${config.dataStrategy} strategy |
|
|
116
130
|
| Testing | ${config.testFramework} | Selected during project setup |
|
|
117
|
-
|
|
131
|
+
${techStackContent}
|
|
118
132
|
## 📁 Directory Structure
|
|
119
133
|
<!-- Folder conventions: what goes where and why -->
|
|
120
134
|
|
|
@@ -387,9 +401,16 @@ lint → typecheck → test → build
|
|
|
387
401
|
*
|
|
388
402
|
* The agent must READ this before every task and UPDATE it after.
|
|
389
403
|
* ────────────────────────────────────────────────────────────── */
|
|
390
|
-
function generateProjectIndex(config) {
|
|
404
|
+
function generateProjectIndex(config, adoptionContext) {
|
|
391
405
|
const frameworkDisplay = getFrameworkDisplay(config.frontendFramework);
|
|
392
406
|
const now = new Date().toISOString().split('T')[0];
|
|
407
|
+
// Pre-fill the current objective if we have adoption context
|
|
408
|
+
const activeTask = adoptionContext?.projectDescription
|
|
409
|
+
? 'Review and expand pre-filled vision from adoption interview'
|
|
410
|
+
: "Populate NEXUS docs from user's project vision";
|
|
411
|
+
const statusNote = adoptionContext?.projectDescription
|
|
412
|
+
? '🟡 Partially filled from adoption interview'
|
|
413
|
+
: '🔴 Template';
|
|
393
414
|
return {
|
|
394
415
|
path: '.nexus/docs/index.md',
|
|
395
416
|
content: `${frontmatter('project_index', 'Project Index — AI Agent Brain')}# ${config.displayName} — Project Index
|
|
@@ -412,7 +433,7 @@ function generateProjectIndex(config) {
|
|
|
412
433
|
Update it at the start of every task. -->
|
|
413
434
|
|
|
414
435
|
**Current Phase:** Phase 1 — Foundation
|
|
415
|
-
**Active Task:**
|
|
436
|
+
**Active Task:** ${activeTask}
|
|
416
437
|
**Blocked:** None
|
|
417
438
|
**Next Up:** See "What's Next" section below
|
|
418
439
|
|
|
@@ -424,8 +445,8 @@ function generateProjectIndex(config) {
|
|
|
424
445
|
|
|
425
446
|
| Area | Status | Notes |
|
|
426
447
|
|------|--------|-------|
|
|
427
|
-
| 📋 Vision & Requirements |
|
|
428
|
-
| 🏗️ Architecture |
|
|
448
|
+
| 📋 Vision & Requirements | ${statusNote} | ${adoptionContext?.projectDescription ? 'See .nexus/docs/01_vision.md' : 'Needs user input → `.nexus/docs/01_vision.md`'} |
|
|
449
|
+
| 🏗️ Architecture | ${statusNote} | ${adoptionContext?.projectDescription ? 'See .nexus/docs/02_architecture.md' : 'Auto-fill from codebase → `.nexus/docs/02_architecture.md`'} |
|
|
429
450
|
| 📊 Data Contracts | 🔴 Template | Define from code → \`.nexus/docs/03_data_contracts.md\` |
|
|
430
451
|
| 🔌 API Contracts | 🔴 Template | Define from code → \`.nexus/docs/04_api_contracts.md\` |
|
|
431
452
|
| 📐 Business Logic | 🔴 Template | Needs user input → \`.nexus/docs/05_business_logic.md\` |
|
|
@@ -586,54 +607,7 @@ Optional: Brief supporting detail (1-2 sentences max).
|
|
|
586
607
|
`,
|
|
587
608
|
};
|
|
588
609
|
}
|
|
589
|
-
function
|
|
590
|
-
return {
|
|
591
|
-
path: '.nexus/index.md',
|
|
592
|
-
content: `# NEXUS Project Index
|
|
593
|
-
|
|
594
|
-
**Project:** ${config.displayName}
|
|
595
|
-
**Generated:** ${new Date().toISOString().split('T')[0]}
|
|
596
|
-
**CLI Version:** ${version}
|
|
597
|
-
|
|
598
|
-
---
|
|
599
|
-
|
|
600
|
-
## 🧠 Start Here
|
|
601
|
-
|
|
602
|
-
**AI agents: Read \`.nexus/docs/index.md\` FIRST** — that is your project brain.
|
|
603
|
-
It tracks status, features, progress, and what to work on next.
|
|
604
|
-
|
|
605
|
-
---
|
|
606
|
-
|
|
607
|
-
## 📚 Document Map
|
|
608
|
-
|
|
609
|
-
| Doc | Path | Purpose |
|
|
610
|
-
|-----|------|---------|
|
|
611
|
-
| **🧠 Project Brain** | **\`.nexus/docs/index.md\`** | **Status, backlog, progress, what's next** |
|
|
612
|
-
| Vision | \`.nexus/docs/01_vision.md\` | Product requirements & user stories |
|
|
613
|
-
| Architecture | \`.nexus/docs/02_architecture.md\` | System design & tech stack |
|
|
614
|
-
| Data Contracts | \`.nexus/docs/03_data_contracts.md\` | Database schemas & validation |
|
|
615
|
-
| API Contracts | \`.nexus/docs/04_api_contracts.md\` | Endpoints & interfaces |
|
|
616
|
-
| Business Logic | \`.nexus/docs/05_business_logic.md\` | Rules, algorithms & flows |
|
|
617
|
-
| Test Strategy | \`.nexus/docs/06_test_strategy.md\` | Testing philosophy & coverage |
|
|
618
|
-
| Implementation | \`.nexus/docs/07_implementation.md\` | Build order & file-by-file plan |
|
|
619
|
-
| Deployment | \`.nexus/docs/08_deployment.md\` | Infrastructure & CI/CD |
|
|
620
|
-
| **📚 Knowledge Base** | **\`.nexus/docs/knowledge.md\`** | **Learned insights, patterns & gotchas** |
|
|
621
|
-
|
|
622
|
-
---
|
|
623
|
-
|
|
624
|
-
## 🤖 AI Agent Instructions
|
|
625
|
-
|
|
626
|
-
If you are an AI reading this project:
|
|
627
|
-
|
|
628
|
-
1. **START with \`.nexus/docs/index.md\`** — your project brain, read it before every task
|
|
629
|
-
2. **Read \`.nexus/docs/01_vision.md\`** to understand what this project does
|
|
630
|
-
3. **Check \`.nexus/docs/07_implementation.md\`** for the file-by-file build plan
|
|
631
|
-
4. **After every task, update \`.nexus/docs/index.md\`** — progress log, status, what's next
|
|
632
|
-
5. **Never ask "what should we do next?"** — the index tells you
|
|
633
|
-
`,
|
|
634
|
-
};
|
|
635
|
-
}
|
|
636
|
-
function generateNexusManifest(config) {
|
|
610
|
+
function generateNexusManifest(config, localOnly = false) {
|
|
637
611
|
const manifest = {
|
|
638
612
|
version: '1.0.0',
|
|
639
613
|
generatedAt: new Date().toISOString(),
|
|
@@ -642,6 +616,7 @@ function generateNexusManifest(config) {
|
|
|
642
616
|
version,
|
|
643
617
|
name: '@nexus-framework/cli',
|
|
644
618
|
},
|
|
619
|
+
localOnly,
|
|
645
620
|
};
|
|
646
621
|
return {
|
|
647
622
|
path: '.nexus/manifest.json',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/generators/docs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC;;oEAEoE;AAEpE,SAAS,mBAAmB,CAAC,SAAiB;IAC5C,MAAM,GAAG,GAA2B;QAClC,MAAM,EAAE,yBAAyB;QACjC,YAAY,EAAE,cAAc;QAC5B,SAAS,EAAE,WAAW;QACtB,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,OAAO;KACf,CAAC;IACF,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;AACrC,CAAC;AAED;;oEAEoE;AAEpE;;;;;GAKG;AACH,SAAS,WAAW,CAAC,KAAa,EAAE,KAAa;IAC/C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,OAAO;;OAEF,KAAK;UACF,KAAK;;;iBAGE,GAAG;;;CAGnB,CAAC;AACF,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/generators/docs.ts"],"names":[],"mappings":"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"}
|