bmad-method 4.2.0 → 4.4.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/.bmad-core/agents/analyst.md +14 -20
- package/.bmad-core/agents/architect.md +15 -20
- package/.bmad-core/agents/bmad-master.md +18 -26
- package/.bmad-core/agents/bmad-orchestrator.md +16 -28
- package/.bmad-core/agents/dev.md +5 -4
- package/.bmad-core/agents/pm.md +11 -16
- package/.bmad-core/agents/sm.md +20 -25
- package/.bmad-core/bmad-core-config.yml +60 -0
- package/.bmad-core/data/bmad-kb.md +12 -1
- package/.bmad-core/tasks/doc-migration-task.md +91 -146
- package/.bmad-core/tasks/document-project.md +389 -0
- package/.bmad-core/tasks/generate-ai-frontend-prompt.md +41 -48
- package/.bmad-core/tasks/index-docs.md +8 -3
- package/.bmad-core/templates/architecture-tmpl.md +15 -12
- package/.bmad-core/templates/fullstack-architecture-tmpl.md +85 -103
- package/.bmad-core/templates/prd-tmpl.md +1 -1
- package/.bmad-core/templates/simple-project-prd-tmpl.md +461 -0
- package/.bmad-core/templates/story-tmpl.md +2 -2
- package/.bmad-core/utils/workflow-management.md +14 -15
- package/.bmad-core/web-bundles/agents/analyst.txt +26 -21
- package/.bmad-core/web-bundles/agents/architect.txt +605 -233
- package/.bmad-core/web-bundles/agents/bmad-master.txt +457 -1039
- package/.bmad-core/web-bundles/agents/bmad-orchestrator.txt +36 -903
- package/.bmad-core/web-bundles/agents/dev.txt +5 -4
- package/.bmad-core/web-bundles/agents/pm.txt +476 -17
- package/.bmad-core/web-bundles/agents/po.txt +2 -2
- package/.bmad-core/web-bundles/agents/sm.txt +22 -27
- package/.bmad-core/web-bundles/agents/ux-expert.txt +41 -48
- package/.bmad-core/web-bundles/teams/team-all.txt +4394 -4447
- package/.bmad-core/web-bundles/teams/team-fullstack.txt +2760 -2809
- package/.bmad-core/web-bundles/teams/team-no-ui.txt +2718 -2760
- package/.bmad-core/workflows/greenfield-fullstack.yml +3 -3
- package/.claude/commands/analyst.md +14 -20
- package/.claude/commands/architect.md +15 -20
- package/.claude/commands/bmad-master.md +18 -26
- package/.claude/commands/bmad-orchestrator.md +16 -28
- package/.claude/commands/dev.md +5 -4
- package/.claude/commands/pm.md +11 -16
- package/.claude/commands/sm.md +20 -25
- package/.cursor/rules/analyst.mdc +13 -19
- package/.cursor/rules/architect.mdc +14 -19
- package/.cursor/rules/bmad-master.mdc +18 -26
- package/.cursor/rules/bmad-orchestrator.mdc +15 -27
- package/.cursor/rules/dev.mdc +5 -4
- package/.cursor/rules/pm.mdc +11 -16
- package/.cursor/rules/sm.mdc +19 -24
- package/.releaserc.json +2 -1
- package/.vscode/settings.json +4 -0
- package/.windsurf/rules/analyst.md +13 -19
- package/.windsurf/rules/architect.md +14 -19
- package/.windsurf/rules/bmad-master.md +18 -26
- package/.windsurf/rules/bmad-orchestrator.md +15 -27
- package/.windsurf/rules/dev.md +5 -4
- package/.windsurf/rules/pm.md +11 -16
- package/.windsurf/rules/sm.md +19 -24
- package/CHANGELOG.md +120 -2
- package/CONTRIBUTING.md +2 -0
- package/README.md +20 -2
- package/{.bmad-core → creator-tools}/tasks/create-agent.md +10 -12
- package/{.bmad-core/tasks/create-expansion-pack.md → creator-tools/tasks/generate-expansion-pack.md} +8 -6
- package/docs/bmad-workflow-guide.md +161 -0
- package/docs/claude-code-guide.md +119 -0
- package/docs/core-architecture.md +213 -0
- package/docs/cursor-guide.md +127 -0
- package/docs/how-to-contribute-with-pull-requests.md +141 -0
- package/docs/roo-code-guide.md +140 -0
- package/docs/user-guide.md +1044 -0
- package/docs/versioning-and-releases.md +4 -4
- package/docs/windsurf-guide.md +127 -0
- package/expansion-packs/README.md +1 -111
- package/expansion-packs/infrastructure-devops/agents/infra-devops-platform.md +3 -3
- package/expansion-packs/infrastructure-devops/tasks/create-doc.md +74 -0
- package/package.json +19 -13
- package/tools/builders/web-builder.js +16 -15
- package/tools/installer/README.md +2 -2
- package/tools/installer/bin/bmad.js +50 -29
- package/tools/installer/lib/file-manager.js +20 -3
- package/tools/installer/lib/ide-setup.js +11 -1
- package/tools/installer/lib/installer.js +149 -29
- package/tools/installer/package-lock.json +537 -335
- package/tools/installer/package.json +7 -7
- package/tools/lib/dependency-resolver.js +1 -1
- package/tools/semantic-release-sync-installer.js +31 -0
- package/tools/sync-installer-version.js +34 -0
- package/tools/upgraders/v3-to-v4-upgrader.js +18 -13
- package/tools/version-bump.js +33 -26
- package/tools/yaml-format.js +54 -25
- package/.bmad-core/schemas/agent-team-schema.yml +0 -153
- package/.bmad-core/tasks/create-team.md +0 -229
- package/.claude/settings.local.json +0 -22
|
@@ -2,57 +2,50 @@
|
|
|
2
2
|
|
|
3
3
|
## Purpose
|
|
4
4
|
|
|
5
|
-
To generate a masterful, comprehensive, and optimized prompt that can be used with AI-driven frontend development
|
|
5
|
+
To generate a masterful, comprehensive, and optimized prompt that can be used with any AI-driven frontend development tool (e.g., Vercel v0, Lovable.ai, or similar) to scaffold or generate significant portions of a frontend application.
|
|
6
6
|
|
|
7
7
|
## Inputs
|
|
8
8
|
|
|
9
|
-
- Completed UI/UX Specification (`front-end-spec
|
|
10
|
-
- Completed Frontend Architecture Document (`front-end-architecture`)
|
|
11
|
-
- Main System Architecture Document (`architecture` - for API contracts and tech stack)
|
|
12
|
-
- Primary Design Files (Figma, Sketch, etc. - for visual context if the tool can accept it or if descriptions are needed)
|
|
9
|
+
- Completed UI/UX Specification (`front-end-spec`)
|
|
10
|
+
- Completed Frontend Architecture Document (`front-end-architecture`) or a full stack combined architecture such as `architecture.md`
|
|
11
|
+
- Main System Architecture Document (`architecture` - for API contracts and tech stack to give further context)
|
|
13
12
|
|
|
14
13
|
## Key Activities & Instructions
|
|
15
14
|
|
|
16
|
-
1.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
3. **Present and Refine the Master Prompt:**
|
|
55
|
-
- Output the generated prompt in a clear, copy-pasteable format (e.g., a large code block).
|
|
56
|
-
- Explain the structure of the prompt and why certain information was included.
|
|
57
|
-
- Work with the user to refine the prompt based on their knowledge of the target AI tool and any specific nuances they want to emphasize.
|
|
58
|
-
- <important_note>Remind the user that the generated code from the AI tool will likely require review, testing, and further refinement by developers.</important_note>
|
|
15
|
+
### 1. Core Prompting Principles
|
|
16
|
+
|
|
17
|
+
Before generating the prompt, you must understand these core principles for interacting with a generative AI for code.
|
|
18
|
+
|
|
19
|
+
- **Be Explicit and Detailed**: The AI cannot read your mind. Provide as much detail and context as possible. Vague requests lead to generic or incorrect outputs.
|
|
20
|
+
- **Iterate, Don't Expect Perfection**: Generating an entire complex application in one go is rare. The most effective method is to prompt for one component or one section at a time, then build upon the results.
|
|
21
|
+
- **Provide Context First**: Always start by providing the AI with the necessary context, such as the tech stack, existing code snippets, and overall project goals.
|
|
22
|
+
- **Mobile-First Approach**: Frame all UI generation requests with a mobile-first design mindset. Describe the mobile layout first, then provide separate instructions for how it should adapt for tablet and desktop.
|
|
23
|
+
|
|
24
|
+
### 2. The Structured Prompting Framework
|
|
25
|
+
|
|
26
|
+
To ensure the highest quality output, you MUST structure every prompt using the following four-part framework.
|
|
27
|
+
|
|
28
|
+
1. **High-Level Goal**: Start with a clear, concise summary of the overall objective. This orients the AI on the primary task.
|
|
29
|
+
- _Example: "Create a responsive user registration form with client-side validation and API integration."_
|
|
30
|
+
2. **Detailed, Step-by-Step Instructions**: Provide a granular, numbered list of actions the AI should take. Break down complex tasks into smaller, sequential steps. This is the most critical part of the prompt.
|
|
31
|
+
- _Example: "1. Create a new file named `RegistrationForm.js`. 2. Use React hooks for state management. 3. Add styled input fields for 'Name', 'Email', and 'Password'. 4. For the email field, ensure it is a valid email format. 5. On submission, call the API endpoint defined below."_
|
|
32
|
+
3. **Code Examples, Data Structures & Constraints**: Include any relevant snippets of existing code, data structures, or API contracts. This gives the AI concrete examples to work with. Crucially, you must also state what _not_ to do.
|
|
33
|
+
- _Example: "Use this API endpoint: `POST /api/register`. The expected JSON payload is `{ "name": "string", "email": "string", "password": "string" }`. Do NOT include a 'confirm password' field. Use Tailwind CSS for all styling."_
|
|
34
|
+
4. **Define a Strict Scope**: Explicitly define the boundaries of the task. Tell the AI which files it can modify and, more importantly, which files to leave untouched to prevent unintended changes across the codebase.
|
|
35
|
+
- _Example: "You should only create the `RegistrationForm.js` component and add it to the `pages/register.js` file. Do NOT alter the `Navbar.js` component or any other existing page or component."_
|
|
36
|
+
|
|
37
|
+
### 3. Assembling the Master Prompt
|
|
38
|
+
|
|
39
|
+
You will now synthesize the inputs and the above principles into a final, comprehensive prompt.
|
|
40
|
+
|
|
41
|
+
1. **Gather Foundational Context**:
|
|
42
|
+
- Start the prompt with a preamble describing the overall project purpose, the full tech stack (e.g., Next.js, TypeScript, Tailwind CSS), and the primary UI component library being used.
|
|
43
|
+
2. **Describe the Visuals**:
|
|
44
|
+
- If the user has design files (Figma, etc.), instruct them to provide links or screenshots.
|
|
45
|
+
- If not, describe the visual style: color palette, typography, spacing, and overall aesthetic (e.g., "minimalist", "corporate", "playful").
|
|
46
|
+
3. **Build the Prompt using the Structured Framework**:
|
|
47
|
+
- Follow the four-part framework from Section 2 to build out the core request, whether it's for a single component or a full page.
|
|
48
|
+
4. **Present and Refine**:
|
|
49
|
+
- Output the complete, generated prompt in a clear, copy-pasteable format (e.g., a large code block).
|
|
50
|
+
- Explain the structure of the prompt and why certain information was included, referencing the principles above.
|
|
51
|
+
- <important_note>Conclude by reminding the user that all AI-generated code will require careful human review, testing, and refinement to be considered production-ready.</important_note>
|
|
@@ -56,7 +56,7 @@ You are now operating as a Documentation Indexer. Your goal is to ensure all doc
|
|
|
56
56
|
|
|
57
57
|
The index should be organized as follows:
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
`````markdown
|
|
60
60
|
# Documentation Index
|
|
61
61
|
|
|
62
62
|
## Root Documents
|
|
@@ -88,7 +88,8 @@ Documents within the `another-folder/` directory:
|
|
|
88
88
|
### [Nested Document](./another-folder/document.md)
|
|
89
89
|
|
|
90
90
|
Description of nested document.
|
|
91
|
-
|
|
91
|
+
|
|
92
|
+
````text
|
|
92
93
|
|
|
93
94
|
### Index Entry Format
|
|
94
95
|
|
|
@@ -98,7 +99,10 @@ Each entry should follow this format:
|
|
|
98
99
|
### [Document Title](relative/path/to/file.md)
|
|
99
100
|
|
|
100
101
|
Brief description of the document's purpose and contents.
|
|
101
|
-
|
|
102
|
+
````
|
|
103
|
+
`````
|
|
104
|
+
|
|
105
|
+
````
|
|
102
106
|
|
|
103
107
|
### Rules of Operation
|
|
104
108
|
|
|
@@ -176,3 +180,4 @@ Please provide:
|
|
|
176
180
|
5. Whether to include hidden files/folders (starting with `.`)
|
|
177
181
|
|
|
178
182
|
Would you like to proceed with documentation indexing? Please provide the required input above.
|
|
183
|
+
````
|
|
@@ -136,7 +136,7 @@ Common patterns to consider:
|
|
|
136
136
|
|
|
137
137
|
[[LLM: This is the DEFINITIVE technology selection section. Work with the user to make specific choices:
|
|
138
138
|
|
|
139
|
-
1. Review PRD technical assumptions and any preferences from `data#technical-preferences`
|
|
139
|
+
1. Review PRD technical assumptions and any preferences from `data#technical-preferences` or an attached `technical-preferences`
|
|
140
140
|
2. For each category, present 2-3 viable options with pros/cons
|
|
141
141
|
3. Make a clear recommendation based on project needs
|
|
142
142
|
4. Get explicit user approval for each selection
|
|
@@ -341,18 +341,21 @@ Use YAML format for better readability. If no REST API, skip this section.]]
|
|
|
341
341
|
|
|
342
342
|
^^CONDITION: has_rest_api^^
|
|
343
343
|
|
|
344
|
-
|
|
344
|
+
````yaml
|
|
345
345
|
openapi: 3.0.0
|
|
346
346
|
info:
|
|
347
|
-
title:
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
347
|
+
title:
|
|
348
|
+
'[object Object]': null
|
|
349
|
+
version:
|
|
350
|
+
'[object Object]': null
|
|
351
|
+
description:
|
|
352
|
+
'[object Object]': null
|
|
351
353
|
servers:
|
|
352
|
-
- url:
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
354
|
+
- url:
|
|
355
|
+
'[object Object]': null
|
|
356
|
+
description:
|
|
357
|
+
'[object Object]': null
|
|
358
|
+
```text
|
|
356
359
|
|
|
357
360
|
^^/CONDITION: has_rest_api^^
|
|
358
361
|
|
|
@@ -415,7 +418,7 @@ After presenting the structure, apply `tasks#advanced-elicitation` protocol to r
|
|
|
415
418
|
├── {{package-manifest}} # Dependencies manifest
|
|
416
419
|
├── {{config-files}} # Language/framework configs
|
|
417
420
|
└── README.md # Project documentation
|
|
418
|
-
|
|
421
|
+
````
|
|
419
422
|
|
|
420
423
|
@{example: monorepo-structure}
|
|
421
424
|
project-root/
|
|
@@ -463,7 +466,7 @@ Get user input on deployment preferences and CI/CD tool choices.]]
|
|
|
463
466
|
|
|
464
467
|
### Environment Promotion Flow
|
|
465
468
|
|
|
466
|
-
```
|
|
469
|
+
```text
|
|
467
470
|
{{promotion_flow_diagram}}
|
|
468
471
|
```
|
|
469
472
|
|
|
@@ -109,9 +109,9 @@ Document the choice and key services that will be used.]]
|
|
|
109
109
|
|
|
110
110
|
Use appropriate diagram type for clarity.]]
|
|
111
111
|
|
|
112
|
-
|
|
112
|
+
````mermaid
|
|
113
113
|
{{architecture_diagram}}
|
|
114
|
-
```
|
|
114
|
+
```text
|
|
115
115
|
|
|
116
116
|
### Architectural Patterns
|
|
117
117
|
|
|
@@ -222,7 +222,7 @@ After presenting all data models, apply `tasks#advanced-elicitation` protocol]]
|
|
|
222
222
|
model_interface;
|
|
223
223
|
}
|
|
224
224
|
}
|
|
225
|
-
|
|
225
|
+
````
|
|
226
226
|
|
|
227
227
|
**Relationships:**
|
|
228
228
|
|
|
@@ -246,7 +246,7 @@ After presenting all data models, apply `tasks#advanced-elicitation` protocol]]
|
|
|
246
246
|
|
|
247
247
|
**TypeScript Interface:**
|
|
248
248
|
|
|
249
|
-
|
|
249
|
+
````typescript
|
|
250
250
|
interface User {
|
|
251
251
|
id: string;
|
|
252
252
|
email: string;
|
|
@@ -262,7 +262,7 @@ interface UserProfile {
|
|
|
262
262
|
bio?: string;
|
|
263
263
|
preferences: Record<string, any>;
|
|
264
264
|
}
|
|
265
|
-
```
|
|
265
|
+
```text
|
|
266
266
|
|
|
267
267
|
**Relationships:**
|
|
268
268
|
|
|
@@ -286,27 +286,30 @@ Use appropriate format for the chosen API style. If no API (e.g., static site),
|
|
|
286
286
|
|
|
287
287
|
^^CONDITION: has_rest_api^^
|
|
288
288
|
|
|
289
|
-
```
|
|
289
|
+
```yml
|
|
290
290
|
openapi: 3.0.0
|
|
291
291
|
info:
|
|
292
|
-
title:
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
292
|
+
title:
|
|
293
|
+
'[object Object]': null
|
|
294
|
+
version:
|
|
295
|
+
'[object Object]': null
|
|
296
|
+
description:
|
|
297
|
+
'[object Object]': null
|
|
296
298
|
servers:
|
|
297
|
-
- url:
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
299
|
+
- url:
|
|
300
|
+
'[object Object]': null
|
|
301
|
+
description:
|
|
302
|
+
'[object Object]': null
|
|
303
|
+
````
|
|
301
304
|
|
|
302
305
|
^^/CONDITION: has_rest_api^^
|
|
303
306
|
|
|
304
307
|
^^CONDITION: has_graphql_api^^
|
|
305
308
|
|
|
306
|
-
|
|
309
|
+
````graphql
|
|
307
310
|
# GraphQL Schema
|
|
308
311
|
{{graphql_schema}}
|
|
309
|
-
```
|
|
312
|
+
```text
|
|
310
313
|
|
|
311
314
|
^^/CONDITION: has_graphql_api^^
|
|
312
315
|
|
|
@@ -319,7 +322,7 @@ servers:
|
|
|
319
322
|
trpc_routers;
|
|
320
323
|
}
|
|
321
324
|
}
|
|
322
|
-
|
|
325
|
+
````
|
|
323
326
|
|
|
324
327
|
^^/CONDITION: has_trpc_api^^
|
|
325
328
|
|
|
@@ -464,19 +467,19 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
|
|
|
464
467
|
|
|
465
468
|
**Component Organization:**
|
|
466
469
|
|
|
467
|
-
|
|
470
|
+
`````text
|
|
468
471
|
{{component_structure}}
|
|
469
|
-
```
|
|
472
|
+
```text
|
|
470
473
|
|
|
471
474
|
**Component Template:**
|
|
472
475
|
|
|
473
|
-
|
|
476
|
+
````typescript
|
|
474
477
|
{
|
|
475
478
|
{
|
|
476
479
|
component_template;
|
|
477
480
|
}
|
|
478
481
|
}
|
|
479
|
-
```
|
|
482
|
+
```text
|
|
480
483
|
|
|
481
484
|
### State Management Architecture
|
|
482
485
|
|
|
@@ -490,7 +493,7 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
|
|
|
490
493
|
state_structure;
|
|
491
494
|
}
|
|
492
495
|
}
|
|
493
|
-
|
|
496
|
+
`````
|
|
494
497
|
|
|
495
498
|
**State Management Patterns:**
|
|
496
499
|
|
|
@@ -503,19 +506,19 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
|
|
|
503
506
|
|
|
504
507
|
**Route Organization:**
|
|
505
508
|
|
|
506
|
-
|
|
509
|
+
`````text
|
|
507
510
|
{{route_structure}}
|
|
508
|
-
```
|
|
511
|
+
```text
|
|
509
512
|
|
|
510
513
|
**Protected Route Pattern:**
|
|
511
514
|
|
|
512
|
-
|
|
515
|
+
````typescript
|
|
513
516
|
{
|
|
514
517
|
{
|
|
515
518
|
protected_route_example;
|
|
516
519
|
}
|
|
517
520
|
}
|
|
518
|
-
```
|
|
521
|
+
```text
|
|
519
522
|
|
|
520
523
|
### Frontend Services Layer
|
|
521
524
|
|
|
@@ -529,17 +532,17 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
|
|
|
529
532
|
api_client_setup;
|
|
530
533
|
}
|
|
531
534
|
}
|
|
532
|
-
|
|
535
|
+
`````
|
|
533
536
|
|
|
534
537
|
**Service Example:**
|
|
535
538
|
|
|
536
|
-
|
|
539
|
+
````typescript
|
|
537
540
|
{
|
|
538
541
|
{
|
|
539
542
|
service_example;
|
|
540
543
|
}
|
|
541
544
|
}
|
|
542
|
-
```
|
|
545
|
+
```text
|
|
543
546
|
|
|
544
547
|
## Backend Architecture
|
|
545
548
|
|
|
@@ -554,9 +557,11 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
|
|
|
554
557
|
^^CONDITION: serverless^^
|
|
555
558
|
**Function Organization:**
|
|
556
559
|
|
|
557
|
-
|
|
560
|
+
````
|
|
561
|
+
|
|
558
562
|
{{function_structure}}
|
|
559
|
-
|
|
563
|
+
|
|
564
|
+
````text
|
|
560
565
|
|
|
561
566
|
**Function Template:**
|
|
562
567
|
|
|
@@ -566,26 +571,26 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
|
|
|
566
571
|
function_template;
|
|
567
572
|
}
|
|
568
573
|
}
|
|
569
|
-
|
|
574
|
+
````
|
|
570
575
|
|
|
571
576
|
^^/CONDITION: serverless^^
|
|
572
577
|
|
|
573
578
|
^^CONDITION: traditional_server^^
|
|
574
579
|
**Controller/Route Organization:**
|
|
575
580
|
|
|
576
|
-
|
|
581
|
+
`````text
|
|
577
582
|
{{controller_structure}}
|
|
578
|
-
```
|
|
583
|
+
```text
|
|
579
584
|
|
|
580
585
|
**Controller Template:**
|
|
581
586
|
|
|
582
|
-
|
|
587
|
+
````typescript
|
|
583
588
|
{
|
|
584
589
|
{
|
|
585
590
|
controller_template;
|
|
586
591
|
}
|
|
587
592
|
}
|
|
588
|
-
```
|
|
593
|
+
```text
|
|
589
594
|
|
|
590
595
|
^^/CONDITION: traditional_server^^
|
|
591
596
|
|
|
@@ -597,17 +602,17 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
|
|
|
597
602
|
|
|
598
603
|
```sql
|
|
599
604
|
{{database_schema}}
|
|
600
|
-
|
|
605
|
+
`````
|
|
601
606
|
|
|
602
607
|
**Data Access Layer:**
|
|
603
608
|
|
|
604
|
-
|
|
609
|
+
````typescript
|
|
605
610
|
{
|
|
606
611
|
{
|
|
607
612
|
repository_pattern;
|
|
608
613
|
}
|
|
609
614
|
}
|
|
610
|
-
```
|
|
615
|
+
```text
|
|
611
616
|
|
|
612
617
|
### Authentication and Authorization
|
|
613
618
|
|
|
@@ -617,17 +622,17 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
|
|
|
617
622
|
|
|
618
623
|
```mermaid
|
|
619
624
|
{{auth_flow_diagram}}
|
|
620
|
-
|
|
625
|
+
````
|
|
621
626
|
|
|
622
627
|
**Middleware/Guards:**
|
|
623
628
|
|
|
624
|
-
|
|
629
|
+
````typescript
|
|
625
630
|
{
|
|
626
631
|
{
|
|
627
632
|
auth_middleware;
|
|
628
633
|
}
|
|
629
634
|
}
|
|
630
|
-
```
|
|
635
|
+
```text
|
|
631
636
|
|
|
632
637
|
## Unified Project Structure
|
|
633
638
|
|
|
@@ -687,7 +692,7 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
|
|
|
687
692
|
├── package.json # Root package.json
|
|
688
693
|
├── {{monorepo_config}} # Monorepo configuration
|
|
689
694
|
└── README.md
|
|
690
|
-
|
|
695
|
+
````
|
|
691
696
|
|
|
692
697
|
@{example: vercel_structure}
|
|
693
698
|
apps/
|
|
@@ -709,19 +714,19 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
|
|
|
709
714
|
|
|
710
715
|
**Prerequisites:**
|
|
711
716
|
|
|
712
|
-
|
|
717
|
+
````bash
|
|
713
718
|
{{prerequisites_commands}}
|
|
714
|
-
```
|
|
719
|
+
```text
|
|
715
720
|
|
|
716
721
|
**Initial Setup:**
|
|
717
722
|
|
|
718
723
|
```bash
|
|
719
724
|
{{setup_commands}}
|
|
720
|
-
|
|
725
|
+
````
|
|
721
726
|
|
|
722
727
|
**Development Commands:**
|
|
723
728
|
|
|
724
|
-
|
|
729
|
+
````bash
|
|
725
730
|
# Start all services
|
|
726
731
|
{{start_all_command}}
|
|
727
732
|
|
|
@@ -733,7 +738,7 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
|
|
|
733
738
|
|
|
734
739
|
# Run tests
|
|
735
740
|
{{test_commands}}
|
|
736
|
-
```
|
|
741
|
+
```text
|
|
737
742
|
|
|
738
743
|
### Environment Configuration
|
|
739
744
|
|
|
@@ -748,7 +753,7 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
|
|
|
748
753
|
|
|
749
754
|
# Shared
|
|
750
755
|
{{shared_env_vars}}
|
|
751
|
-
|
|
756
|
+
````
|
|
752
757
|
|
|
753
758
|
## Deployment Architecture
|
|
754
759
|
|
|
@@ -771,9 +776,9 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
|
|
|
771
776
|
|
|
772
777
|
### CI/CD Pipeline
|
|
773
778
|
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
```
|
|
779
|
+
````yaml
|
|
780
|
+
'[object Object]': null
|
|
781
|
+
```text
|
|
777
782
|
|
|
778
783
|
### Environments
|
|
779
784
|
|
|
@@ -831,33 +836,42 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
|
|
|
831
836
|
|
|
832
837
|
### Testing Pyramid
|
|
833
838
|
|
|
834
|
-
|
|
839
|
+
````
|
|
840
|
+
|
|
835
841
|
E2E Tests
|
|
836
842
|
/ \
|
|
837
843
|
Integration Tests
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
844
|
+
|
|
845
|
+
/ \
|
|
846
|
+
Frontend Unit Backend Unit
|
|
847
|
+
|
|
848
|
+
```text
|
|
841
849
|
|
|
842
850
|
### Test Organization
|
|
843
851
|
|
|
844
852
|
**Frontend Tests:**
|
|
845
853
|
|
|
846
854
|
```
|
|
855
|
+
|
|
847
856
|
{{frontend_test_structure}}
|
|
848
|
-
|
|
857
|
+
|
|
858
|
+
````text
|
|
849
859
|
|
|
850
860
|
**Backend Tests:**
|
|
851
861
|
|
|
852
|
-
```
|
|
862
|
+
```text
|
|
863
|
+
|
|
853
864
|
{{backend_test_structure}}
|
|
854
|
-
|
|
865
|
+
|
|
866
|
+
```text
|
|
855
867
|
|
|
856
868
|
**E2E Tests:**
|
|
857
869
|
|
|
858
|
-
|
|
870
|
+
````
|
|
871
|
+
|
|
859
872
|
{{e2e_test_structure}}
|
|
860
|
-
|
|
873
|
+
|
|
874
|
+
````text
|
|
861
875
|
|
|
862
876
|
### Test Examples
|
|
863
877
|
|
|
@@ -869,17 +883,17 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
|
|
|
869
883
|
frontend_test_example;
|
|
870
884
|
}
|
|
871
885
|
}
|
|
872
|
-
|
|
886
|
+
````
|
|
873
887
|
|
|
874
888
|
**Backend API Test:**
|
|
875
889
|
|
|
876
|
-
|
|
890
|
+
````typescript
|
|
877
891
|
{
|
|
878
892
|
{
|
|
879
893
|
backend_test_example;
|
|
880
894
|
}
|
|
881
895
|
}
|
|
882
|
-
```
|
|
896
|
+
```text
|
|
883
897
|
|
|
884
898
|
**E2E Test:**
|
|
885
899
|
|
|
@@ -889,7 +903,7 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
|
|
|
889
903
|
e2e_test_example;
|
|
890
904
|
}
|
|
891
905
|
}
|
|
892
|
-
|
|
906
|
+
````
|
|
893
907
|
|
|
894
908
|
## Coding Standards
|
|
895
909
|
|
|
@@ -930,9 +944,9 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
|
|
|
930
944
|
|
|
931
945
|
### Error Flow
|
|
932
946
|
|
|
933
|
-
|
|
947
|
+
````mermaid
|
|
934
948
|
{{error_flow_diagram}}
|
|
935
|
-
```
|
|
949
|
+
```text
|
|
936
950
|
|
|
937
951
|
### Error Response Format
|
|
938
952
|
|
|
@@ -946,17 +960,17 @@ interface ApiError {
|
|
|
946
960
|
requestId: string;
|
|
947
961
|
};
|
|
948
962
|
}
|
|
949
|
-
|
|
963
|
+
````
|
|
950
964
|
|
|
951
965
|
### Frontend Error Handling
|
|
952
966
|
|
|
953
|
-
|
|
967
|
+
````typescript
|
|
954
968
|
{
|
|
955
969
|
{
|
|
956
970
|
frontend_error_handler;
|
|
957
971
|
}
|
|
958
972
|
}
|
|
959
|
-
```
|
|
973
|
+
```text
|
|
960
974
|
|
|
961
975
|
### Backend Error Handling
|
|
962
976
|
|
|
@@ -966,7 +980,7 @@ interface ApiError {
|
|
|
966
980
|
backend_error_handler;
|
|
967
981
|
}
|
|
968
982
|
}
|
|
969
|
-
|
|
983
|
+
````
|
|
970
984
|
|
|
971
985
|
## Monitoring and Observability
|
|
972
986
|
|
|
@@ -1000,35 +1014,3 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
|
|
|
1000
1014
|
## Checklist Results Report
|
|
1001
1015
|
|
|
1002
1016
|
[[LLM: Before running the checklist, offer to output the full architecture document. Once user confirms, execute the `architect-checklist` and populate results here.]]
|
|
1003
|
-
|
|
1004
|
-
## Next Steps
|
|
1005
|
-
|
|
1006
|
-
[[LLM: Provide specific next steps for implementation.]]
|
|
1007
|
-
|
|
1008
|
-
### Implementation Order
|
|
1009
|
-
|
|
1010
|
-
1. **Environment Setup**
|
|
1011
|
-
|
|
1012
|
-
- Initialize monorepo structure
|
|
1013
|
-
- Configure development environment
|
|
1014
|
-
- Set up version control
|
|
1015
|
-
|
|
1016
|
-
2. **Foundation (Epic 1)**
|
|
1017
|
-
|
|
1018
|
-
- Implement authentication flow
|
|
1019
|
-
- Set up database schema
|
|
1020
|
-
- Create basic API structure
|
|
1021
|
-
- Implement core UI components
|
|
1022
|
-
|
|
1023
|
-
3. **Feature Development**
|
|
1024
|
-
- Follow story sequence from PRD
|
|
1025
|
-
- Maintain type safety across stack
|
|
1026
|
-
- Write tests as you go
|
|
1027
|
-
|
|
1028
|
-
### Developer Handoff Prompts
|
|
1029
|
-
|
|
1030
|
-
**For Scrum Master:**
|
|
1031
|
-
"Create stories for {{Project Name}} using the PRD at docs/prd.md and this fullstack architecture at docs/fullstack-architecture.md. Focus on Epic 1 implementation."
|
|
1032
|
-
|
|
1033
|
-
**For Developer:**
|
|
1034
|
-
"Implement Story 1.1 from docs/stories/epic1/story-1.1.md using the fullstack architecture at docs/fullstack-architecture.md. Follow the coding standards and use the defined tech stack."
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
|
|
89
89
|
[[LLM: Gather technical decisions that will guide the Architect. Steps:
|
|
90
90
|
|
|
91
|
-
1. Check if `data#technical-preferences` file exists - use it to pre-populate choices
|
|
91
|
+
1. Check if `data#technical-preferences` or an attached `technical-preferences` file exists - use it to pre-populate choices
|
|
92
92
|
2. Ask user about: languages, frameworks, starter templates, libraries, APIs, deployment targets
|
|
93
93
|
3. For unknowns, offer guidance based on project goals and MVP scope
|
|
94
94
|
4. Document ALL technical choices with rationale (why this choice fits the project)
|