ai-flow-dev 2.2.0 → 2.2.4
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 +28 -24
- package/dist/cli.js +228 -418
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
- package/prompts/backend/flow-build-phase-0.md +286 -4
- package/prompts/backend/flow-build-phase-1.md +19 -0
- package/prompts/backend/flow-build-phase-2.md +19 -0
- package/prompts/backend/flow-build-phase-3.md +19 -0
- package/prompts/backend/flow-build-phase-4.md +19 -0
- package/prompts/backend/flow-build-phase-5.md +19 -0
- package/prompts/backend/flow-build-phase-6.md +19 -0
- package/prompts/backend/flow-build-phase-7.md +19 -0
- package/prompts/backend/flow-build-phase-9.md +14 -0
- package/prompts/backend/flow-build.md +2 -0
- package/prompts/backend/flow-check-review.md +20 -0
- package/prompts/backend/flow-check-test.md +14 -0
- package/prompts/backend/flow-check.md +67 -0
- package/prompts/backend/flow-commit.md +53 -0
- package/prompts/backend/flow-docs-sync.md +55 -53
- package/prompts/backend/flow-work-feature.md +42 -0
- package/prompts/backend/flow-work-fix.md +33 -0
- package/prompts/backend/flow-work-refactor.md +32 -0
- package/prompts/backend/flow-work-resume.md +32 -0
- package/prompts/backend/flow-work.md +129 -0
- package/prompts/frontend/flow-build-phase-0.md +363 -35
- package/prompts/frontend/flow-build-phase-1.md +433 -404
- package/prompts/frontend/flow-build-phase-2.md +508 -872
- package/prompts/frontend/flow-build-phase-3.md +629 -562
- package/prompts/frontend/flow-build-phase-4.md +438 -382
- package/prompts/frontend/flow-build-phase-5.md +559 -362
- package/prompts/frontend/flow-build-phase-6.md +383 -452
- package/prompts/frontend/flow-build-phase-7.md +818 -392
- package/prompts/frontend/flow-build-phase-9.md +14 -0
- package/prompts/frontend/flow-build.md +2 -0
- package/prompts/frontend/flow-check-review.md +20 -0
- package/prompts/frontend/flow-check-test.md +14 -0
- package/prompts/frontend/flow-check.md +67 -0
- package/prompts/frontend/flow-commit.md +53 -0
- package/prompts/frontend/flow-docs-sync.md +39 -35
- package/prompts/frontend/flow-work-feature.md +42 -0
- package/prompts/frontend/flow-work-fix.md +33 -0
- package/prompts/frontend/flow-work-refactor.md +32 -0
- package/prompts/frontend/flow-work-resume.md +32 -0
- package/prompts/frontend/flow-work.md +129 -0
- package/prompts/mobile/flow-build-phase-0.md +366 -37
- package/prompts/mobile/flow-build-phase-1.md +438 -493
- package/prompts/mobile/flow-build-phase-2.md +458 -464
- package/prompts/mobile/flow-build-phase-3.md +613 -487
- package/prompts/mobile/flow-build-phase-4.md +439 -258
- package/prompts/mobile/flow-build-phase-5.md +582 -250
- package/prompts/mobile/flow-build-phase-6.md +389 -359
- package/prompts/mobile/flow-build-phase-7.md +871 -285
- package/prompts/mobile/flow-build-phase-9.md +14 -0
- package/prompts/mobile/flow-build.md +2 -0
- package/prompts/mobile/flow-check-review.md +20 -0
- package/prompts/mobile/flow-check-test.md +14 -0
- package/prompts/mobile/flow-check.md +67 -0
- package/prompts/mobile/flow-commit.md +53 -0
- package/prompts/mobile/flow-docs-sync.md +39 -40
- package/prompts/mobile/flow-work-feature.md +42 -0
- package/prompts/mobile/flow-work-fix.md +33 -0
- package/prompts/mobile/flow-work-refactor.md +32 -0
- package/prompts/mobile/flow-work-resume.md +32 -0
- package/prompts/mobile/flow-work.md +129 -0
- package/prompts/shared/smart-skip-preflight.md +214 -0
- package/templates/AGENT.template.md +13 -3
- package/templates/backend/.clauderules.template +5 -4
- package/templates/backend/.cursorrules.template +1 -1
- package/prompts/backend/flow-dev-commit.md +0 -829
- package/prompts/backend/flow-dev-feature.md +0 -1948
- package/prompts/backend/flow-dev-fix.md +0 -952
- package/prompts/backend/flow-dev-refactor.md +0 -690
- package/prompts/backend/flow-dev-review.md +0 -372
- package/prompts/backend/flow-dev-work.md +0 -1081
|
@@ -1,497 +1,553 @@
|
|
|
1
|
-
|
|
1
|
+
## PHASE 4: Security & Authentication (15-20 min)
|
|
2
2
|
|
|
3
|
-
**
|
|
4
|
-
**Questions:** ~11 questions
|
|
5
|
-
**Output:** docs/styling.md, parts of ai-instructions.md
|
|
6
|
-
---
|
|
7
|
-
## 🎯 Objective
|
|
3
|
+
> **Order for this phase:** 4.1 → 4.2 → 4.3 → 4.4 → 4.5 → 4.6 → 4.7 → 4.8 → 4.9 → 4.10 → 4.11
|
|
8
4
|
|
|
9
|
-
|
|
5
|
+
> **📌 Scope-based behavior:**
|
|
6
|
+
>
|
|
7
|
+
> - **MVP:** Ask 4.1-4.5 only (auth basics + CORS), skip 4.6-4.11 (advanced security), mark as "TBD"
|
|
8
|
+
> - **Production-Ready:** Ask 4.1-4.8 and 4.11, skip or simplify 4.9 (compliance) and 4.10 (audit logging)
|
|
9
|
+
> - **Enterprise:** Ask all questions 4.1-4.11 with emphasis on compliance and audit trails
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
2. Do you need design tokens?
|
|
13
|
-
3. Will you support theming?
|
|
14
|
-
4. What's your responsive strategy?
|
|
15
|
-
5. How will you organize styles?
|
|
16
|
-
---
|
|
17
|
-
## 📋 Questions
|
|
11
|
+
### Objective
|
|
18
12
|
|
|
19
|
-
|
|
13
|
+
Define security policies, authentication, authorization, and compliance requirements.
|
|
20
14
|
|
|
21
|
-
|
|
15
|
+
---
|
|
22
16
|
|
|
23
|
-
|
|
17
|
+
## 🔍 Pre-Flight Check (Smart Skip Logic)
|
|
24
18
|
|
|
25
|
-
|
|
26
|
-
- Pros: Fast prototyping, consistent design, great DX
|
|
27
|
-
- Cons: Verbose HTML, learning curve
|
|
28
|
-
- Best for: Most modern apps
|
|
29
|
-
- Bundle: ~10KB (purged)
|
|
19
|
+
> 📎 **Reference:** See [prompts/shared/smart-skip-preflight.md](../shared/smart-skip-preflight.md) for the complete smart skip logic.
|
|
30
20
|
|
|
31
|
-
|
|
21
|
+
**Execute Pre-Flight Check for Phase 4:**
|
|
32
22
|
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
- Bundle: Variable (your CSS only)
|
|
23
|
+
- **Target File**: `specs/security.md`
|
|
24
|
+
- **Phase Name**: "SECURITY & AUTHENTICATION"
|
|
25
|
+
- **Key Items**: Auth strategy, encryption, security patterns, compliance
|
|
26
|
+
- **Typical Gaps**: Compliance requirements, audit logging, security policies
|
|
38
27
|
|
|
39
|
-
|
|
28
|
+
**Proceed with appropriate scenario based on audit data from `.ai-flow/cache/audit-data.json`**
|
|
40
29
|
|
|
41
|
-
|
|
42
|
-
- Pros: Dynamic styling, props-based theming, scoped by default
|
|
43
|
-
- Cons: Runtime cost, larger bundle
|
|
44
|
-
- Best for: Component libraries, dynamic themes
|
|
45
|
-
- Bundle: ~16KB
|
|
30
|
+
---
|
|
46
31
|
|
|
47
|
-
|
|
32
|
+
## Phase 4 Questions (Full Mode)
|
|
48
33
|
|
|
49
|
-
|
|
50
|
-
- Pros: Better performance than SC, both runtime and compile-time
|
|
51
|
-
- Cons: Still has runtime overhead
|
|
52
|
-
- Best for: Performance-critical CSS-in-JS
|
|
53
|
-
- Bundle: ~11KB
|
|
34
|
+
**4.1 Authentication Method**
|
|
54
35
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
- Features: CSS preprocessor, variables, mixins
|
|
58
|
-
- Pros: Mature, powerful, compile-time
|
|
59
|
-
- Cons: Global scope (without modules), manual optimization
|
|
60
|
-
- Best for: Legacy projects, traditional workflows
|
|
61
|
-
- Bundle: Variable
|
|
62
|
-
|
|
63
|
-
F) **Vanilla Extract**
|
|
64
|
-
|
|
65
|
-
- Features: Zero-runtime CSS-in-TS
|
|
66
|
-
- Pros: Type-safe, no runtime, great DX
|
|
67
|
-
- Cons: Newer, smaller ecosystem
|
|
68
|
-
- Best for: Type safety + performance
|
|
69
|
-
- Bundle: 0KB runtime
|
|
70
|
-
|
|
71
|
-
G) **UnoCSS**
|
|
72
|
-
|
|
73
|
-
- Features: Atomic CSS engine, faster than Tailwind
|
|
74
|
-
- Pros: Extremely fast, flexible, smaller bundle
|
|
75
|
-
- Cons: Newer, smaller community
|
|
76
|
-
- Best for: Performance-critical apps
|
|
77
|
-
- Bundle: ~5KB
|
|
78
|
-
|
|
79
|
-
**Your answer:**
|
|
80
|
-
---
|
|
81
|
-
### Question 4.2: Component Library / UI Kit
|
|
82
|
-
|
|
83
|
-
**Will you use a pre-built component library?**
|
|
84
|
-
|
|
85
|
-
#### React Options
|
|
86
|
-
|
|
87
|
-
A) ⭐ **None (Custom Components)**
|
|
88
|
-
|
|
89
|
-
- Build everything from scratch
|
|
90
|
-
- Best for: Full design control, unique designs
|
|
91
|
-
|
|
92
|
-
B) 🔥 **shadcn/ui** (Unstyled, customizable)
|
|
93
|
-
|
|
94
|
-
- Features: Copy-paste components, Radix UI primitives
|
|
95
|
-
- Best for: Tailwind users, full customization
|
|
96
|
-
|
|
97
|
-
C) **Material UI (MUI)**
|
|
98
|
-
|
|
99
|
-
- Features: Material Design, comprehensive, mature
|
|
100
|
-
- Best for: Google Material Design aesthetic
|
|
101
|
-
- Bundle: ~90KB
|
|
102
|
-
|
|
103
|
-
D) **Chakra UI**
|
|
104
|
-
|
|
105
|
-
- Features: Accessible, composable, themeable
|
|
106
|
-
- Best for: Rapid development, accessibility
|
|
107
|
-
- Bundle: ~50KB
|
|
108
|
-
|
|
109
|
-
E) **Ant Design**
|
|
110
|
-
|
|
111
|
-
- Features: Enterprise-focused, comprehensive
|
|
112
|
-
- Best for: Admin panels, dashboards, Chinese market
|
|
113
|
-
- Bundle: ~120KB
|
|
114
|
-
|
|
115
|
-
F) **Mantine**
|
|
116
|
-
|
|
117
|
-
- Features: Modern, hooks-based, feature-rich
|
|
118
|
-
- Best for: Developer experience, rapid prototyping
|
|
119
|
-
- Bundle: ~40KB
|
|
120
|
-
|
|
121
|
-
#### Vue Options
|
|
122
|
-
|
|
123
|
-
A) **None (Custom Components)**
|
|
124
|
-
B) 🔥 **Vuetify** - Material Design for Vue
|
|
125
|
-
C) **Quasar** - Full framework with components
|
|
126
|
-
D) **PrimeVue** - Rich component library
|
|
127
|
-
E) **Element Plus** - Enterprise UI library
|
|
128
|
-
|
|
129
|
-
#### Angular Options
|
|
130
|
-
|
|
131
|
-
A) **None (Custom Components)**
|
|
132
|
-
B) ⭐ **Angular Material** - Official Material Design
|
|
133
|
-
C) **PrimeNG** - Rich component library
|
|
134
|
-
D) **NG-ZORRO** - Ant Design for Angular
|
|
135
|
-
|
|
136
|
-
**Your answer:**
|
|
137
|
-
---
|
|
138
|
-
### Question 4.3: Design Tokens
|
|
139
|
-
|
|
140
|
-
**Will you use design tokens?**
|
|
141
|
-
|
|
142
|
-
Design tokens = Single source of truth for colors, spacing, typography, etc.
|
|
143
|
-
|
|
144
|
-
A) ⭐ **Yes, comprehensive design tokens** (Recommended)
|
|
145
|
-
|
|
146
|
-
- Define colors, spacing, typography, shadows, etc.
|
|
147
|
-
- Best for: Design consistency, theming support
|
|
148
|
-
- Example: Tailwind config, CSS variables, TypeScript constants
|
|
149
|
-
|
|
150
|
-
B) **Yes, basic tokens only**
|
|
151
|
-
|
|
152
|
-
- Just colors and spacing
|
|
153
|
-
- Best for: Simple apps
|
|
154
|
-
|
|
155
|
-
C) **No tokens**
|
|
156
|
-
|
|
157
|
-
- Hardcoded values
|
|
158
|
-
- Best for: Prototypes, MVPs
|
|
159
|
-
|
|
160
|
-
**Your answer:**
|
|
161
|
-
|
|
162
|
-
**If yes, what will be tokenized?** (Select all that apply)
|
|
163
|
-
|
|
164
|
-
- Colors
|
|
165
|
-
- Spacing (padding, margin, gaps)
|
|
166
|
-
- Typography (fonts, sizes, weights)
|
|
167
|
-
- Shadows
|
|
168
|
-
- Border radius
|
|
169
|
-
- Transitions/animations
|
|
170
|
-
- Breakpoints
|
|
171
|
-
---
|
|
172
|
-
### Question 4.4: Color System
|
|
173
|
-
|
|
174
|
-
**How will you define your color palette?**
|
|
36
|
+
```
|
|
37
|
+
How will users authenticate?
|
|
175
38
|
|
|
176
|
-
A) ⭐
|
|
39
|
+
A) ⭐ JWT (JSON Web Tokens) - Recommended for APIs
|
|
177
40
|
|
|
178
|
-
-
|
|
179
|
-
-
|
|
180
|
-
- Best for: Tailwind CSS, comprehensive palettes
|
|
181
|
-
- Generates: 10 shades per color
|
|
41
|
+
- Stateless, scalable
|
|
42
|
+
- Access + Refresh token pattern
|
|
182
43
|
|
|
183
|
-
B)
|
|
44
|
+
B) 🔥 Session-based - Traditional web apps
|
|
184
45
|
|
|
185
|
-
-
|
|
186
|
-
-
|
|
187
|
-
- Generates: 5-7 colors
|
|
46
|
+
- Server-side sessions
|
|
47
|
+
- Cookie-based
|
|
188
48
|
|
|
189
|
-
C)
|
|
49
|
+
C) ⚡ OAuth 2.0 / OpenID Connect - External providers
|
|
190
50
|
|
|
191
|
-
-
|
|
192
|
-
-
|
|
51
|
+
- "Sign in with Google/GitHub/etc."
|
|
52
|
+
- Delegated authentication
|
|
193
53
|
|
|
194
|
-
|
|
54
|
+
D) 🏆 Multi-factor (MFA) - Enterprise security
|
|
195
55
|
|
|
196
|
-
|
|
56
|
+
- OTP, SMS, authenticator app
|
|
57
|
+
- Required or optional?
|
|
197
58
|
|
|
198
|
-
-
|
|
199
|
-
- Secondary (optional): #**\_\_**
|
|
200
|
-
- Accent (optional): #**\_\_**
|
|
201
|
-
---
|
|
202
|
-
### Question 4.5: Typography System
|
|
59
|
+
E) API Keys - Service-to-service
|
|
203
60
|
|
|
204
|
-
|
|
61
|
+
- Simple, stateless
|
|
62
|
+
- Limited use cases
|
|
205
63
|
|
|
206
|
-
|
|
64
|
+
Your choice: __
|
|
65
|
+
Why?
|
|
66
|
+
```
|
|
207
67
|
|
|
208
|
-
|
|
209
|
-
- Best for: Responsive, scalable typography
|
|
210
|
-
- Example: `text-sm`, `text-lg`
|
|
68
|
+
**4.2 JWT Configuration (if using JWT)**
|
|
211
69
|
|
|
212
|
-
|
|
70
|
+
```
|
|
71
|
+
JWT token configuration:
|
|
72
|
+
|
|
73
|
+
Access Token:
|
|
74
|
+
- Lifetime: __ (recommended: 15min - 1hour)
|
|
75
|
+
- Algorithm: __ (recommended: RS256 or HS256)
|
|
76
|
+
|
|
77
|
+
Refresh Token:
|
|
78
|
+
- Lifetime: __ (recommended: 7-30 days)
|
|
79
|
+
- Storage: [httpOnly cookie / localStorage / database]
|
|
80
|
+
- Rotation strategy: [rotate on use / rotate periodically / no rotation]
|
|
81
|
+
|
|
82
|
+
Token claims to include:
|
|
83
|
+
- userId ✅
|
|
84
|
+
- email ✅
|
|
85
|
+
- roles ✅
|
|
86
|
+
- Custom: __
|
|
87
|
+
```
|
|
213
88
|
|
|
214
|
-
|
|
215
|
-
- Best for: Content-heavy sites, traditional hierarchy
|
|
89
|
+
**4.3 Authorization Model**
|
|
216
90
|
|
|
217
|
-
|
|
91
|
+
```
|
|
92
|
+
How will you manage permissions?
|
|
218
93
|
|
|
219
|
-
|
|
94
|
+
A) ⭐ Role-Based Access Control (RBAC)
|
|
95
|
+
- Users have roles (admin, user, moderator, etc.)
|
|
96
|
+
- Roles have permissions
|
|
97
|
+
- Simple and common
|
|
220
98
|
|
|
221
|
-
|
|
99
|
+
B) 🏆 Attribute-Based Access Control (ABAC)
|
|
100
|
+
- Fine-grained based on attributes
|
|
101
|
+
- Complex rules
|
|
102
|
+
- Enterprise use cases
|
|
222
103
|
|
|
223
|
-
|
|
104
|
+
C) 🔒 Resource-based (Ownership)
|
|
105
|
+
- Users can only access their own resources
|
|
106
|
+
- Simple projects
|
|
224
107
|
|
|
225
|
-
|
|
226
|
-
-
|
|
227
|
-
-
|
|
108
|
+
D) 🌐 Multi-tenant with role hierarchy
|
|
109
|
+
- Organization → Teams → Users
|
|
110
|
+
- Complex enterprise systems
|
|
228
111
|
|
|
229
|
-
|
|
230
|
-
A) Google Fonts CDN
|
|
231
|
-
B) Self-hosted fonts (better performance)
|
|
232
|
-
C) System fonts only (fastest)
|
|
233
|
-
---
|
|
234
|
-
### Question 4.6: Theming Support
|
|
112
|
+
Your choice: __
|
|
235
113
|
|
|
236
|
-
|
|
114
|
+
List the roles you'll need:
|
|
115
|
+
-
|
|
116
|
+
-
|
|
237
117
|
|
|
238
|
-
|
|
118
|
+
List key permissions:
|
|
119
|
+
-
|
|
120
|
+
-
|
|
121
|
+
```
|
|
239
122
|
|
|
240
|
-
|
|
241
|
-
- Best for: Modern apps, user preference
|
|
242
|
-
- Implementation: CSS variables, class toggle
|
|
123
|
+
**4.4 Password Policy**
|
|
243
124
|
|
|
244
|
-
|
|
125
|
+
```
|
|
126
|
+
Password requirements:
|
|
127
|
+
|
|
128
|
+
A) ⭐ Recommended Policy
|
|
129
|
+
- Minimum 8 characters
|
|
130
|
+
- At least 1 uppercase, 1 lowercase, 1 number
|
|
131
|
+
- Special characters encouraged but not required
|
|
132
|
+
- No maximum length limit
|
|
133
|
+
- Hash with bcrypt (12 rounds) or argon2
|
|
134
|
+
|
|
135
|
+
B) 🏆 Strong Policy (Enterprise)
|
|
136
|
+
- Minimum 12 characters
|
|
137
|
+
- Uppercase, lowercase, number, special char required
|
|
138
|
+
- Password expiration every 90 days
|
|
139
|
+
- Password history (can't reuse last 5)
|
|
140
|
+
|
|
141
|
+
C) 🔓 Simple Policy
|
|
142
|
+
- Minimum 6 characters
|
|
143
|
+
- No complexity requirements
|
|
144
|
+
- Good for low-risk apps
|
|
145
|
+
|
|
146
|
+
Your choice: __
|
|
147
|
+
|
|
148
|
+
Hashing algorithm:
|
|
149
|
+
A) ⭐ bcrypt (rounds: 10-12) - Recommended
|
|
150
|
+
B) argon2 - More secure, newer
|
|
151
|
+
C) scrypt - Good alternative
|
|
152
|
+
```
|
|
245
153
|
|
|
246
|
-
|
|
247
|
-
- Best for: White-label apps, multi-tenant
|
|
154
|
+
**4.5 Rate Limiting**
|
|
248
155
|
|
|
249
|
-
|
|
156
|
+
```
|
|
157
|
+
Will you implement rate limiting?
|
|
250
158
|
|
|
251
|
-
-
|
|
252
|
-
- Best for: MVPs, simpler implementation
|
|
159
|
+
A) ⭐ Yes - Recommended for all public APIs
|
|
253
160
|
|
|
254
|
-
|
|
161
|
+
Rate limits by endpoint type:
|
|
162
|
+
- Authentication endpoints: ** requests per ** (e.g., 5 per 15 min)
|
|
163
|
+
- Public read endpoints: ** requests per ** (e.g., 100 per minute)
|
|
164
|
+
- Write endpoints: ** requests per ** (e.g., 30 per minute)
|
|
165
|
+
- Admin endpoints: ** requests per ** (e.g., 1000 per minute)
|
|
255
166
|
|
|
256
|
-
|
|
167
|
+
Rate limiting strategy:
|
|
168
|
+
A) IP-based
|
|
169
|
+
B) User/API key-based
|
|
170
|
+
C) Both
|
|
257
171
|
|
|
258
|
-
|
|
259
|
-
A)
|
|
260
|
-
B)
|
|
261
|
-
C)
|
|
172
|
+
Tool:
|
|
173
|
+
A) express-rate-limit / @nestjs/throttler
|
|
174
|
+
B) Redis-based rate limiting
|
|
175
|
+
C) API Gateway (AWS, Kong, etc.)
|
|
176
|
+
```
|
|
262
177
|
|
|
263
|
-
**
|
|
264
|
-
A) localStorage
|
|
265
|
-
B) User account setting (backend)
|
|
266
|
-
C) No persistence (reset on reload)
|
|
267
|
-
---
|
|
268
|
-
### Question 4.7: Responsive Breakpoints
|
|
178
|
+
**4.6 CORS Policy**
|
|
269
179
|
|
|
270
|
-
|
|
180
|
+
```
|
|
181
|
+
CORS (Cross-Origin Resource Sharing) configuration:
|
|
271
182
|
|
|
272
|
-
|
|
183
|
+
Allowed origins:
|
|
184
|
+
A) ⭐ Specific domains - https://myapp.com, https://admin.myapp.com
|
|
185
|
+
B) 🔧 Development only - localhost:3000, localhost:5173
|
|
186
|
+
C) ⚠️ Wildcard (*) - Allow all (NOT recommended for production)
|
|
273
187
|
|
|
274
|
-
|
|
275
|
-
-
|
|
276
|
-
- lg: 1024px
|
|
277
|
-
- xl: 1280px
|
|
278
|
-
- 2xl: 1536px
|
|
188
|
+
Your allowed origins:
|
|
189
|
+
-
|
|
279
190
|
|
|
280
|
-
|
|
191
|
+
Allowed methods: [GET, POST, PUT, PATCH, DELETE, OPTIONS]
|
|
192
|
+
Credentials: [true/false] - Allow cookies/auth headers
|
|
193
|
+
Max age: __ seconds (cache preflight)
|
|
194
|
+
```
|
|
281
195
|
|
|
282
|
-
|
|
283
|
-
- sm: 576px
|
|
284
|
-
- md: 768px
|
|
285
|
-
- lg: 992px
|
|
286
|
-
- xl: 1200px
|
|
196
|
+
**4.7 Data Encryption**
|
|
287
197
|
|
|
288
|
-
|
|
198
|
+
```
|
|
199
|
+
Encryption requirements:
|
|
200
|
+
|
|
201
|
+
In Transit (HTTPS/TLS):
|
|
202
|
+
A) ✅ Yes, always - TLS 1.2+ required ⭐
|
|
203
|
+
B) Development only HTTP, production HTTPS
|
|
204
|
+
C) Optional
|
|
205
|
+
|
|
206
|
+
At Rest (Database/Files):
|
|
207
|
+
A) ⭐ Yes, encrypt sensitive fields - PII, payment info, secrets
|
|
208
|
+
B) 🏆 Yes, full database encryption - Enterprise requirement
|
|
209
|
+
C) No encryption - Low-risk data only
|
|
210
|
+
|
|
211
|
+
Fields to encrypt:
|
|
212
|
+
-
|
|
213
|
+
-
|
|
214
|
+
|
|
215
|
+
Encryption method:
|
|
216
|
+
A) AES-256-GCM (symmetric)
|
|
217
|
+
B) Database-level encryption
|
|
218
|
+
C) Application-level encryption
|
|
219
|
+
```
|
|
289
220
|
|
|
290
|
-
|
|
221
|
+
**4.8 Security Headers**
|
|
291
222
|
|
|
292
|
-
|
|
223
|
+
```
|
|
224
|
+
Which security headers will you implement?
|
|
293
225
|
|
|
294
|
-
|
|
226
|
+
A) ✅ All recommended headers (use helmet.js or equivalent)
|
|
227
|
+
- Content-Security-Policy
|
|
228
|
+
- X-Frame-Options: DENY
|
|
229
|
+
- X-Content-Type-Options: nosniff
|
|
230
|
+
- Strict-Transport-Security (HSTS)
|
|
231
|
+
- X-XSS-Protection
|
|
295
232
|
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
233
|
+
B) Basic headers only
|
|
234
|
+
C) None (not recommended)
|
|
235
|
+
```
|
|
299
236
|
|
|
300
|
-
**
|
|
237
|
+
**4.9 Compliance Requirements**
|
|
301
238
|
|
|
302
|
-
|
|
239
|
+
```
|
|
240
|
+
Does your project need to comply with specific regulations or standards?
|
|
241
|
+
|
|
242
|
+
Some projects must follow legal requirements or industry standards. If you're not sure, you can select "None" and add compliance requirements later.
|
|
243
|
+
|
|
244
|
+
Select all that apply:
|
|
245
|
+
|
|
246
|
+
A) 🌍 GDPR (General Data Protection Regulation)
|
|
247
|
+
What it is: EU data privacy regulation
|
|
248
|
+
When it applies: If you process personal data of users in the European Union
|
|
249
|
+
What it means: Users have rights to access, delete, and export their data
|
|
250
|
+
Key requirements:
|
|
251
|
+
- Right to access data (users can request their data)
|
|
252
|
+
- Right to deletion (users can request data removal)
|
|
253
|
+
- Data portability (users can export their data)
|
|
254
|
+
- Consent management (explicit consent for data processing)
|
|
255
|
+
Example: "We serve users in Germany, so we need GDPR compliance"
|
|
256
|
+
|
|
257
|
+
B) 🏥 HIPAA (Health Insurance Portability and Accountability Act)
|
|
258
|
+
What it is: US healthcare data protection law
|
|
259
|
+
When it applies: If you handle Protected Health Information (PHI) - medical records, health data
|
|
260
|
+
What it means: Strict rules for protecting patient health information
|
|
261
|
+
Key requirements:
|
|
262
|
+
- PHI protection (encryption, access controls)
|
|
263
|
+
- Audit logs (track who accessed what health data)
|
|
264
|
+
- Encryption requirements (data must be encrypted)
|
|
265
|
+
Example: "We're building a telemedicine platform that stores patient records"
|
|
266
|
+
|
|
267
|
+
C) 💳 PCI-DSS (Payment Card Industry Data Security Standard)
|
|
268
|
+
What it is: Security standard for credit card processing
|
|
269
|
+
When it applies: If you process, store, or transmit credit card information
|
|
270
|
+
What it means: Strict security rules to protect cardholder data
|
|
271
|
+
Key requirements:
|
|
272
|
+
- Never store CVV (security code on card)
|
|
273
|
+
- Tokenize card numbers (use tokens instead of real numbers)
|
|
274
|
+
- Secure transmission (encrypted connections required)
|
|
275
|
+
Example: "We process credit card payments directly (not using Stripe/PayPal)"
|
|
276
|
+
|
|
277
|
+
D) 🏢 SOC 2 (System and Organization Controls 2)
|
|
278
|
+
What it is: Security and compliance standard for SaaS companies
|
|
279
|
+
When it applies: If you're selling B2B SaaS and need to prove security to enterprise customers
|
|
280
|
+
What it means: Documented security controls and processes
|
|
281
|
+
Key requirements:
|
|
282
|
+
- Security controls (documented security measures)
|
|
283
|
+
- Audit trails (logs of all security-relevant actions)
|
|
284
|
+
- Access controls (who can access what)
|
|
285
|
+
Example: "We're selling to Fortune 500 companies who require SOC 2 certification"
|
|
286
|
+
|
|
287
|
+
E) 🇺🇸 CCPA (California Consumer Privacy Act)
|
|
288
|
+
What it is: California state privacy law
|
|
289
|
+
When it applies: If you have California users and meet certain thresholds (revenue/users)
|
|
290
|
+
What it means: California users have privacy rights
|
|
291
|
+
Key requirements:
|
|
292
|
+
- Right to know what data is collected
|
|
293
|
+
- Right to delete data
|
|
294
|
+
- Right to opt-out of data sales
|
|
295
|
+
Example: "We have users in California and meet the revenue threshold"
|
|
296
|
+
|
|
297
|
+
F) None - No specific compliance requirements
|
|
298
|
+
Select this if you're not sure or don't need compliance yet
|
|
299
|
+
|
|
300
|
+
Selected: __
|
|
301
|
+
|
|
302
|
+
For each selected, list specific requirements that apply to your project:
|
|
303
|
+
|
|
304
|
+
Example for GDPR:
|
|
305
|
+
- Must allow users to download all their data in JSON format
|
|
306
|
+
- Must completely delete user data when requested (not just soft delete)
|
|
307
|
+
- Need cookie consent banner for EU users
|
|
308
|
+
- Privacy policy must be accessible and up-to-date
|
|
309
|
+
|
|
310
|
+
Example for SOC 2:
|
|
311
|
+
- Need 90-day audit log retention
|
|
312
|
+
- Quarterly access control reviews required
|
|
313
|
+
- Security incident response procedures documented
|
|
314
|
+
- Continuous monitoring of administrative actions
|
|
315
|
+
```
|
|
303
316
|
|
|
304
|
-
|
|
305
|
-
- Best for: Most apps, consistent spacing
|
|
317
|
+
**4.10 Logging & Audit Trail**
|
|
306
318
|
|
|
307
|
-
|
|
319
|
+
```
|
|
320
|
+
What security events will you log?
|
|
308
321
|
|
|
309
|
-
|
|
310
|
-
-
|
|
322
|
+
A) ✅ Authentication events
|
|
323
|
+
- Login success/failure
|
|
324
|
+
- Password changes
|
|
325
|
+
- Account creation
|
|
311
326
|
|
|
312
|
-
|
|
327
|
+
B) ✅ Authorization events
|
|
328
|
+
- Permission denied
|
|
329
|
+
- Role changes
|
|
313
330
|
|
|
314
|
-
|
|
331
|
+
C) ✅ Data access
|
|
332
|
+
- Sensitive data views
|
|
333
|
+
- Exports/downloads
|
|
315
334
|
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
335
|
+
D) ✅ Data modifications
|
|
336
|
+
- Create/Update/Delete operations
|
|
337
|
+
- Who, what, when
|
|
319
338
|
|
|
320
|
-
|
|
339
|
+
Log retention: __ days (recommended: 90+ days)
|
|
340
|
+
Log storage: [Database / File system / External service (CloudWatch, Datadog)]
|
|
341
|
+
```
|
|
321
342
|
|
|
322
|
-
|
|
343
|
+
**4.11 API Keys Management**
|
|
323
344
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
345
|
+
```
|
|
346
|
+
Will you use API keys for service-to-service authentication?
|
|
347
|
+
|
|
348
|
+
A) ⭐ Yes - API keys for programmatic access
|
|
349
|
+
B) No - JWT/Sessions only
|
|
350
|
+
|
|
351
|
+
If yes:
|
|
352
|
+
- Key format: [Prefix + random string, UUID, etc.]
|
|
353
|
+
- Key length: __ characters
|
|
354
|
+
- Storage: [Hashed in database, Plain text (not recommended)]
|
|
355
|
+
- Hashing algorithm: [bcrypt, SHA-256, etc.]
|
|
356
|
+
|
|
357
|
+
Key rotation:
|
|
358
|
+
A) ⭐ Manual rotation - Rotate on demand
|
|
359
|
+
B) Automatic rotation - Rotate every __ days
|
|
360
|
+
C) No rotation
|
|
361
|
+
|
|
362
|
+
Key revocation:
|
|
363
|
+
- Process: __
|
|
364
|
+
- Reasons: [Compromised, Expired, User request, Security incident]
|
|
365
|
+
|
|
366
|
+
Rate limiting by API key tier:
|
|
367
|
+
- Free tier: __ requests per __
|
|
368
|
+
- Paid tier: __ requests per __
|
|
369
|
+
- Enterprise: __ requests per __
|
|
370
|
+
```
|
|
327
371
|
|
|
328
|
-
|
|
372
|
+
**4.12 Dependency Security**
|
|
329
373
|
|
|
330
|
-
|
|
331
|
-
|
|
374
|
+
```
|
|
375
|
+
How will you manage dependency security?
|
|
376
|
+
|
|
377
|
+
A) ⭐ Automated scanning - Regular security audits (npm audit, Snyk, Dependabot)
|
|
378
|
+
B) Manual scanning - Check vulnerabilities manually
|
|
379
|
+
C) No scanning - Not recommended
|
|
380
|
+
|
|
381
|
+
Scanning frequency:
|
|
382
|
+
A) ⭐ On every install/update
|
|
383
|
+
B) Daily automated scans
|
|
384
|
+
C) Weekly scans
|
|
385
|
+
D) Monthly scans
|
|
386
|
+
|
|
387
|
+
Vulnerability response:
|
|
388
|
+
- Critical: Fix within __ hours
|
|
389
|
+
- High: Fix within __ days
|
|
390
|
+
- Medium: Fix within __ days
|
|
391
|
+
- Low: Fix in next release
|
|
392
|
+
|
|
393
|
+
Tools:
|
|
394
|
+
- Dependency scanner: __
|
|
395
|
+
- Security alerts: [GitHub Dependabot, Snyk, npm audit, etc.]
|
|
396
|
+
```
|
|
332
397
|
|
|
333
|
-
|
|
398
|
+
**4.13 Input Validation & Sanitization**
|
|
334
399
|
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
- Example: Framer Motion for React
|
|
400
|
+
```
|
|
401
|
+
Input validation strategy:
|
|
338
402
|
|
|
339
|
-
|
|
403
|
+
A) ⭐ Strict validation with DTOs/Schemas (Recommended)
|
|
404
|
+
- Use validation library: [class-validator/Zod/Pydantic/Joi from Phase 3.6]
|
|
405
|
+
- Reject unknown fields: [yes/no]
|
|
406
|
+
- Type coercion: [strict/lenient]
|
|
340
407
|
|
|
341
|
-
|
|
342
|
-
-
|
|
408
|
+
B) Manual validation in services
|
|
409
|
+
- Custom validation logic
|
|
410
|
+
- More flexible but error-prone
|
|
343
411
|
|
|
344
|
-
|
|
412
|
+
Sanitization rules:
|
|
345
413
|
|
|
346
|
-
|
|
414
|
+
A) ✅ Sanitize all string inputs (XSS prevention)
|
|
415
|
+
- Strip HTML tags: [yes/no]
|
|
416
|
+
- Escape special characters: [yes/no]
|
|
417
|
+
- Library: [DOMPurify/validator.js/bleach]
|
|
347
418
|
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
---
|
|
352
|
-
### Question 4.10: CSS Organization
|
|
419
|
+
B) ✅ SQL Injection prevention
|
|
420
|
+
- Use parameterized queries (ORM handles this automatically)
|
|
421
|
+
- Never concatenate user input in queries
|
|
353
422
|
|
|
354
|
-
|
|
423
|
+
Request size limits:
|
|
355
424
|
|
|
356
|
-
|
|
425
|
+
- Max JSON body size: __ MB (recommended: 1-10 MB)
|
|
426
|
+
- Max file upload size: __ MB (recommended: 10-50 MB)
|
|
427
|
+
- Max URL length: __ characters (recommended: 2048)
|
|
357
428
|
|
|
358
|
-
|
|
359
|
-
- Example: `Button.tsx` + `Button.module.css`
|
|
360
|
-
- Best for: Component libraries, modularity
|
|
429
|
+
File upload validation (if applicable from Phase 3.9):
|
|
361
430
|
|
|
362
|
-
|
|
431
|
+
- Allowed file types: [jpg, png, pdf, etc.]
|
|
432
|
+
- MIME type validation: [yes/no - verify actual content matches extension]
|
|
433
|
+
- File content validation: [yes/no - check file headers]
|
|
434
|
+
- Virus scanning: [yes/no - ClamAV, VirusTotal API]
|
|
435
|
+
- Filename sanitization: [yes/no - remove special characters, limit length]
|
|
363
436
|
|
|
364
|
-
-
|
|
365
|
-
- Best for: Tailwind CSS users
|
|
437
|
+
Content-Type enforcement:
|
|
366
438
|
|
|
367
|
-
|
|
439
|
+
A) ⭐ Strict - Reject if Content-Type doesn't match body (recommended)
|
|
440
|
+
B) Lenient - Accept common mismatches (application/json vs text/plain)
|
|
441
|
+
C) No validation
|
|
368
442
|
|
|
369
|
-
|
|
370
|
-
- Best for: Hybrid approach
|
|
443
|
+
Validation approach:
|
|
371
444
|
|
|
372
|
-
|
|
445
|
+
A) ⭐ Whitelist - Only allow known good inputs (recommended)
|
|
446
|
+
- Define allowed values explicitly
|
|
447
|
+
- Reject everything else
|
|
373
448
|
|
|
374
|
-
-
|
|
375
|
-
-
|
|
376
|
-
-
|
|
449
|
+
B) Blacklist - Block known bad inputs (not recommended)
|
|
450
|
+
- Easy to bypass
|
|
451
|
+
- Incomplete protection
|
|
377
452
|
|
|
378
|
-
|
|
379
|
-
---
|
|
380
|
-
### Question 4.11: Accessibility (A11y) Styling
|
|
453
|
+
Special character handling:
|
|
381
454
|
|
|
382
|
-
|
|
455
|
+
- Allow special characters in: [names, descriptions, etc.]
|
|
456
|
+
- Escape/encode for: [HTML output, SQL queries, shell commands]
|
|
457
|
+
- Reject in: [IDs, slugs, filenames]
|
|
458
|
+
```
|
|
383
459
|
|
|
384
|
-
|
|
460
|
+
### Phase 4 Output
|
|
385
461
|
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
462
|
+
```
|
|
463
|
+
📋 PHASE 4 SUMMARY:
|
|
464
|
+
|
|
465
|
+
Authentication: [method]
|
|
466
|
+
JWT Config: [if applicable - access/refresh token lifetimes, algorithm, storage]
|
|
467
|
+
Authorization: [RBAC/ABAC/etc.]
|
|
468
|
+
Roles: [list]
|
|
469
|
+
Permissions: [key permissions defined]
|
|
470
|
+
Password Policy: [requirements and hashing algorithm]
|
|
471
|
+
Rate Limiting: [yes/no + limits by endpoint type]
|
|
472
|
+
CORS: [origins, methods, credentials, max-age]
|
|
473
|
+
Encryption: [in-transit + at-rest + fields to encrypt]
|
|
474
|
+
Security Headers: [list]
|
|
475
|
+
Compliance: [requirements with specific controls]
|
|
476
|
+
Audit Logging: [events logged + retention + storage]
|
|
477
|
+
API Keys Management: [yes/no + format + rotation + revocation + rate limiting]
|
|
478
|
+
Dependency Security: [scanning tool + frequency + vulnerability response]
|
|
479
|
+
Input Validation: [strategy + sanitization rules + size limits + file upload validation + whitelist/blacklist approach]
|
|
480
|
+
|
|
481
|
+
Is this correct? (Yes/No)
|
|
482
|
+
```
|
|
483
|
+
---
|
|
484
|
+
### 📄 Generate Phase 4 Documents
|
|
389
485
|
|
|
390
|
-
|
|
486
|
+
**Before starting generation:**
|
|
391
487
|
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
-
|
|
488
|
+
```
|
|
489
|
+
📖 Loading context from previous phases...
|
|
490
|
+
✅ Re-reading project-brief.md
|
|
491
|
+
✅ Re-reading docs/data-model.md
|
|
492
|
+
✅ Re-reading docs/architecture.md
|
|
493
|
+
✅ Re-reading ai-instructions.md
|
|
494
|
+
```
|
|
395
495
|
|
|
396
|
-
|
|
496
|
+
**Generate documents automatically:**
|
|
397
497
|
|
|
398
|
-
|
|
399
|
-
- Best for: MVPs, internal tools
|
|
498
|
+
**1. `specs/security.md`**
|
|
400
499
|
|
|
401
|
-
|
|
500
|
+
- Use template: `.ai-flow/templates/specs/security.template.md`
|
|
501
|
+
- Fill with all security policies, authentication, authorization
|
|
502
|
+
- Write to: `specs/security.md`
|
|
402
503
|
|
|
403
|
-
|
|
504
|
+
**2. Update `ai-instructions.md`**
|
|
404
505
|
|
|
405
|
-
|
|
506
|
+
- Add security rules to NEVER/ALWAYS sections
|
|
507
|
+
- Add authentication/authorization patterns
|
|
406
508
|
|
|
407
|
-
|
|
509
|
+
```
|
|
510
|
+
✅ Generated: specs/security.md
|
|
511
|
+
✅ Updated: ai-instructions.md (security rules added)
|
|
408
512
|
|
|
409
|
-
|
|
410
|
-
- [ ] High contrast mode support
|
|
411
|
-
- [ ] Text resizing support (up to 200%)
|
|
412
|
-
- [ ] Screen reader optimizations
|
|
413
|
-
- [ ] Reduced motion support
|
|
414
|
-
---
|
|
415
|
-
## 📊 Phase 4 Summary
|
|
513
|
+
Documents have been created with all Phase 4 information.
|
|
416
514
|
|
|
417
|
-
|
|
418
|
-
---
|
|
419
|
-
📋 PHASE 4 SUMMARY: STYLING & DESIGN
|
|
420
|
-
---
|
|
421
|
-
Styling Approach: [Answer from 4.1]
|
|
422
|
-
Component Library: [Answer from 4.2]
|
|
423
|
-
Design Tokens: [Answer from 4.3]
|
|
424
|
-
Color System: [Answer from 4.4]
|
|
425
|
-
Typography: [Answer from 4.5]
|
|
426
|
-
Theming: [Answer from 4.6]
|
|
427
|
-
Breakpoints: [Answer from 4.7]
|
|
428
|
-
Spacing System: [Answer from 4.8]
|
|
429
|
-
Animations: [Answer from 4.9]
|
|
430
|
-
CSS Organization: [Answer from 4.10]
|
|
431
|
-
Accessibility: [Answer from 4.11]
|
|
515
|
+
📝 Would you like to make any corrections before continuing?
|
|
432
516
|
|
|
433
|
-
|
|
517
|
+
→ If yes: Edit the files and type "ready" when done. I'll re-read them.
|
|
518
|
+
→ If no: Type "continue" to proceed to Phase 5.
|
|
434
519
|
```
|
|
435
|
-
---
|
|
436
|
-
## 📝 Document Generation
|
|
437
520
|
|
|
438
|
-
|
|
521
|
+
**If user edits files:**
|
|
522
|
+
Re-read files to refresh context before continuing.
|
|
523
|
+
---
|
|
524
|
+
**Proceed to Phase 5 only after documents are validated.**
|
|
439
525
|
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
- `{{THEME_SUPPORT}}` → Dark mode / Multiple themes / None
|
|
444
|
-
- `{{COLOR_SYSTEM}}` → Color palette approach
|
|
445
|
-
- `{{TYPOGRAPHY_SYSTEM}}` → Type scale approach
|
|
446
|
-
- `{{BREAKPOINTS}}` → Responsive breakpoints
|
|
447
|
-
- `{{SPACING_SCALE}}` → Spacing system
|
|
448
|
-
- `{{ANIMATION_STRATEGY}}` → Animation approach
|
|
449
|
-
- `{{A11Y_COMPLIANCE}}` → WCAG level
|
|
526
|
+
> ⚠️ **CRITICAL:** DO NOT generate README.md in this phase. README.md is ONLY generated in Phase 8 (step 8.5) after framework initialization.
|
|
527
|
+
---
|
|
528
|
+
---
|
|
450
529
|
|
|
451
|
-
|
|
530
|
+
---
|
|
452
531
|
|
|
453
|
-
|
|
454
|
-
## Styling
|
|
532
|
+
## 📝 Generated Documents
|
|
455
533
|
|
|
456
|
-
|
|
457
|
-
-
|
|
458
|
-
- **Design Tokens:** {{DESIGN_TOKENS}}
|
|
459
|
-
- **Theming:** {{THEME_SUPPORT}}
|
|
460
|
-
- **Accessibility:** {{A11Y_COMPLIANCE}}
|
|
534
|
+
After Phase 4, generate/update:
|
|
535
|
+
- `specs/security.md` - Security policies and authentication details
|
|
461
536
|
|
|
462
|
-
|
|
537
|
+
---
|
|
463
538
|
|
|
464
|
-
|
|
465
|
-
- ✅ ALWAYS ensure WCAG {{A11Y_COMPLIANCE}} color contrast
|
|
466
|
-
- ✅ ALWAYS include focus indicators for keyboard navigation
|
|
467
|
-
- ❌ NEVER hardcode colors or spacing values
|
|
468
|
-
- ❌ NEVER ignore prefers-reduced-motion
|
|
469
|
-
{{#IF_TAILWIND}}
|
|
470
|
-
- ✅ ALWAYS use Tailwind utility classes, avoid custom CSS
|
|
471
|
-
- ❌ NEVER use arbitrary values excessively (e.g., `w-[127px]`)
|
|
472
|
-
{{/IF_TAILWIND}}
|
|
473
|
-
{{#IF_DARK_MODE}}
|
|
474
|
-
- ✅ ALWAYS test components in both light and dark modes
|
|
475
|
-
{{/IF_DARK_MODE}}
|
|
476
|
-
```
|
|
477
|
-
---
|
|
478
|
-
## 🚀 Next Steps
|
|
539
|
+
**Next Phase:** Phase 5 - Development Standards (15-20 min)
|
|
479
540
|
|
|
480
|
-
|
|
481
|
-
✅ Phase 4 Complete!
|
|
541
|
+
Read: `.ai-flow/prompts/backend/flow-build-phase-5.md`
|
|
482
542
|
|
|
483
|
-
|
|
484
|
-
- docs/styling.md
|
|
485
|
-
- ai-instructions.md (updated)
|
|
543
|
+
---
|
|
486
544
|
|
|
487
|
-
|
|
545
|
+
**Last Updated:** 2025-12-20
|
|
546
|
+
**Version:** 2.1.8
|
|
488
547
|
|
|
489
|
-
|
|
490
|
-
```
|
|
491
|
-
---
|
|
492
|
-
**Last Updated:** 2025-01-XX
|
|
548
|
+
---
|
|
493
549
|
|
|
494
|
-
|
|
550
|
+
## PHASE 5: Development Standards (15-20 min)
|
|
495
551
|
|
|
496
552
|
|
|
497
553
|
|