maxsim-flutter 1.19.0 → 1.20.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/dist/claude-setup/prd-generator.d.ts.map +1 -1
- package/dist/claude-setup/prd-generator.js +289 -178
- package/dist/claude-setup/prd-generator.js.map +1 -1
- package/dist/claude-setup/prd-schema.d.ts +12 -12
- package/dist/claude-setup/preset-resolver.d.ts +11 -0
- package/dist/claude-setup/preset-resolver.d.ts.map +1 -0
- package/dist/claude-setup/preset-resolver.js +43 -0
- package/dist/claude-setup/preset-resolver.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prd-generator.d.ts","sourceRoot":"","sources":["../../src/claude-setup/prd-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"prd-generator.d.ts","sourceRoot":"","sources":["../../src/claude-setup/prd-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAoBzD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAiC3D"}
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
function ac(description) {
|
|
2
|
+
return { description };
|
|
3
|
+
}
|
|
4
|
+
function prefixedStories(inputs, phase, prefix) {
|
|
5
|
+
return inputs.map((story, i) => ({
|
|
6
|
+
...story,
|
|
7
|
+
id: `P${phase}-${prefix}-${String(i + 1).padStart(3, '0')}`,
|
|
8
|
+
}));
|
|
9
|
+
}
|
|
1
10
|
/**
|
|
2
11
|
* Generates a prd.json for the scaffolded Flutter project.
|
|
3
12
|
* Stories are organized into three phases:
|
|
@@ -6,36 +15,51 @@
|
|
|
6
15
|
* Phase 3 - Integration and end-to-end testing
|
|
7
16
|
*/
|
|
8
17
|
export function generatePrd(context) {
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
18
|
+
const phase1Stories = prefixedStories(buildPhase1Inputs(context), 1, 'CORE');
|
|
19
|
+
const phase1Ids = phase1Stories.map((s) => s.id);
|
|
20
|
+
const phase2Stories = buildPhase2Stories(context, phase1Ids);
|
|
21
|
+
const phase3Stories = buildPhase3Stories(context, phase1Ids, phase2Stories);
|
|
22
|
+
const phases = [
|
|
23
|
+
{
|
|
24
|
+
phase: 1,
|
|
25
|
+
title: 'Core Setup',
|
|
26
|
+
description: 'Core app structure, routing, and state management',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
phase: 2,
|
|
30
|
+
title: 'Module Features',
|
|
31
|
+
description: 'Module-specific features conditional on enabled configuration',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
phase: 3,
|
|
35
|
+
title: 'Integration & Quality',
|
|
36
|
+
description: 'Integration testing and final quality audit',
|
|
37
|
+
},
|
|
13
38
|
];
|
|
14
|
-
// Assign sequential IDs
|
|
15
|
-
const numbered = rawStories.map((story, index) => ({
|
|
16
|
-
...story,
|
|
17
|
-
id: `S-${String(index + 1).padStart(3, '0')}`,
|
|
18
|
-
}));
|
|
19
39
|
const prd = {
|
|
20
|
-
version: '
|
|
40
|
+
version: '2.0.0',
|
|
21
41
|
project: context.projectName,
|
|
22
|
-
|
|
42
|
+
generatedAt: new Date().toISOString(),
|
|
43
|
+
phases,
|
|
44
|
+
stories: [...phase1Stories, ...phase2Stories, ...phase3Stories],
|
|
23
45
|
};
|
|
24
46
|
return JSON.stringify(prd, null, 2) + '\n';
|
|
25
47
|
}
|
|
26
|
-
function
|
|
48
|
+
function buildPhase1Inputs(context) {
|
|
27
49
|
return [
|
|
28
50
|
{
|
|
29
51
|
phase: 1,
|
|
30
52
|
priority: 'P0',
|
|
31
53
|
title: 'Setup Clean Architecture project structure',
|
|
32
54
|
description: `Verify and finalize the scaffolded project structure for ${context.projectName}. Ensure all directories follow Clean Architecture conventions with domain, data, and presentation layers per feature. Configure analysis_options.yaml with appropriate lint rules.`,
|
|
55
|
+
storyPoints: 3,
|
|
56
|
+
dependencies: [],
|
|
33
57
|
acceptanceCriteria: [
|
|
34
|
-
'`lib/features/` directory exists with at minimum a `home` feature',
|
|
35
|
-
'Each feature contains `domain/`, `data/`, and `presentation/` subdirectories',
|
|
36
|
-
'`lib/core/` contains router, theme, and providers directories',
|
|
37
|
-
'`flutter analyze` reports zero errors',
|
|
38
|
-
'`dart format --set-exit-if-changed .` passes',
|
|
58
|
+
ac('`lib/features/` directory exists with at minimum a `home` feature'),
|
|
59
|
+
ac('Each feature contains `domain/`, `data/`, and `presentation/` subdirectories'),
|
|
60
|
+
ac('`lib/core/` contains router, theme, and providers directories'),
|
|
61
|
+
ac('`flutter analyze` reports zero errors'),
|
|
62
|
+
ac('`dart format --set-exit-if-changed .` passes'),
|
|
39
63
|
],
|
|
40
64
|
passes: false,
|
|
41
65
|
},
|
|
@@ -44,12 +68,14 @@ function generatePhase1Stories(context) {
|
|
|
44
68
|
priority: 'P0',
|
|
45
69
|
title: 'Configure go_router with type-safe routes',
|
|
46
70
|
description: 'Set up go_router in `lib/core/router/app_router.dart` using TypedGoRoute annotations. Define initial route to HomeRoute. Register the router as a Riverpod provider. Run build_runner to generate route code.',
|
|
71
|
+
storyPoints: 5,
|
|
72
|
+
dependencies: [],
|
|
47
73
|
acceptanceCriteria: [
|
|
48
|
-
'`lib/core/router/app_router.dart` exists with GoRouter configuration',
|
|
49
|
-
'Router is exposed as a Riverpod provider (`routerProvider`)',
|
|
50
|
-
'`HomeRoute` is defined with `@TypedGoRoute(path: \'/\')`',
|
|
51
|
-
'`lib/core/router/app_router.g.dart` is generated by build_runner',
|
|
52
|
-
'`flutter analyze` reports zero errors',
|
|
74
|
+
ac('`lib/core/router/app_router.dart` exists with GoRouter configuration'),
|
|
75
|
+
ac('Router is exposed as a Riverpod provider (`routerProvider`)'),
|
|
76
|
+
ac('`HomeRoute` is defined with `@TypedGoRoute(path: \'/\')`'),
|
|
77
|
+
ac('`lib/core/router/app_router.g.dart` is generated by build_runner'),
|
|
78
|
+
ac('`flutter analyze` reports zero errors'),
|
|
53
79
|
],
|
|
54
80
|
passes: false,
|
|
55
81
|
},
|
|
@@ -58,11 +84,13 @@ function generatePhase1Stories(context) {
|
|
|
58
84
|
priority: 'P0',
|
|
59
85
|
title: 'Configure Riverpod ProviderScope and global providers',
|
|
60
86
|
description: 'Ensure `main.dart` wraps the app in `ProviderScope`. Set up `lib/core/providers/app_providers.dart` as a barrel export for all core providers. Verify the app boots without errors.',
|
|
87
|
+
storyPoints: 3,
|
|
88
|
+
dependencies: [],
|
|
61
89
|
acceptanceCriteria: [
|
|
62
|
-
'`main.dart` wraps `runApp` with `ProviderScope`',
|
|
63
|
-
'`lib/core/providers/app_providers.dart` exports core providers',
|
|
64
|
-
'App compiles and runs without errors',
|
|
65
|
-
'`flutter analyze` reports zero errors',
|
|
90
|
+
ac('`main.dart` wraps `runApp` with `ProviderScope`'),
|
|
91
|
+
ac('`lib/core/providers/app_providers.dart` exports core providers'),
|
|
92
|
+
ac('App compiles and runs without errors'),
|
|
93
|
+
ac('`flutter analyze` reports zero errors'),
|
|
66
94
|
],
|
|
67
95
|
passes: false,
|
|
68
96
|
},
|
|
@@ -71,186 +99,263 @@ function generatePhase1Stories(context) {
|
|
|
71
99
|
priority: 'P1',
|
|
72
100
|
title: `Implement ${context.projectName} home screen`,
|
|
73
101
|
description: `Build the initial home screen at \`lib/features/home/presentation/pages/home_page.dart\`. The page should use ConsumerWidget and display the project name. Wire it up to the \`/\` route in app_router.`,
|
|
102
|
+
storyPoints: 2,
|
|
103
|
+
dependencies: [],
|
|
74
104
|
acceptanceCriteria: [
|
|
75
|
-
'`home_page.dart` exists and extends `ConsumerWidget`',
|
|
76
|
-
'Home page displays the app name or a welcome message',
|
|
77
|
-
'Route `/` navigates to the home page',
|
|
78
|
-
'Widget test in `test/features/home/` passes',
|
|
79
|
-
'`flutter test` passes all tests',
|
|
105
|
+
ac('`home_page.dart` exists and extends `ConsumerWidget`'),
|
|
106
|
+
ac('Home page displays the app name or a welcome message'),
|
|
107
|
+
ac('Route `/` navigates to the home page'),
|
|
108
|
+
ac('Widget test in `test/features/home/` passes'),
|
|
109
|
+
ac('`flutter test` passes all tests'),
|
|
80
110
|
],
|
|
81
111
|
passes: false,
|
|
82
112
|
},
|
|
83
113
|
];
|
|
84
114
|
}
|
|
85
|
-
function
|
|
115
|
+
function buildPhase2Stories(context, phase1Ids) {
|
|
86
116
|
const stories = [];
|
|
117
|
+
const coreSetupId = phase1Ids[0]; // P1-CORE-001
|
|
118
|
+
const routerId = phase1Ids[1]; // P1-CORE-002
|
|
119
|
+
const riverpodId = phase1Ids[2]; // P1-CORE-003
|
|
87
120
|
if (context.modules.auth) {
|
|
88
121
|
const provider = context.modules.auth.provider;
|
|
89
|
-
const providerLabel = provider === 'firebase'
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
122
|
+
const providerLabel = provider === 'firebase'
|
|
123
|
+
? 'Firebase Auth'
|
|
124
|
+
: provider === 'supabase'
|
|
125
|
+
? 'Supabase Auth'
|
|
126
|
+
: 'custom auth';
|
|
127
|
+
const inputs = [
|
|
128
|
+
{
|
|
129
|
+
phase: 2,
|
|
130
|
+
priority: 'P0',
|
|
131
|
+
module: 'auth',
|
|
132
|
+
title: `Implement authentication with ${providerLabel}`,
|
|
133
|
+
description: `Build the auth feature in \`lib/features/auth/\` following Clean Architecture. Domain layer: \`AuthRepository\` interface and \`User\` entity. Data layer: \`${capitalize(provider)}AuthDataSource\` and \`AuthRepositoryImpl\`. Presentation layer: \`authRepositoryProvider\`, login page, register page. Add auth guard to go_router redirect.`,
|
|
134
|
+
storyPoints: 8,
|
|
135
|
+
dependencies: [coreSetupId, routerId, riverpodId],
|
|
136
|
+
acceptanceCriteria: [
|
|
137
|
+
ac('`lib/features/auth/domain/repositories/auth_repository.dart` defines `AuthRepository` interface'),
|
|
138
|
+
ac('`lib/features/auth/domain/entities/user.dart` defines `User` entity with freezed'),
|
|
139
|
+
ac('Auth repository implementation connects to ' + providerLabel),
|
|
140
|
+
ac('`/login` and `/register` routes exist and render auth pages'),
|
|
141
|
+
ac('Auth guard in go_router redirects unauthenticated users to `/login`'),
|
|
142
|
+
ac('Unit tests for auth use cases pass'),
|
|
143
|
+
ac('`flutter analyze` reports zero errors'),
|
|
144
|
+
],
|
|
145
|
+
passes: false,
|
|
146
|
+
},
|
|
147
|
+
];
|
|
148
|
+
stories.push(...prefixedStories(inputs, 2, 'AUTH'));
|
|
106
149
|
}
|
|
107
150
|
if (context.modules.api) {
|
|
108
151
|
const baseUrl = context.modules.api.baseUrl ?? 'API_BASE_URL env variable';
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
152
|
+
const inputs = [
|
|
153
|
+
{
|
|
154
|
+
phase: 2,
|
|
155
|
+
priority: 'P1',
|
|
156
|
+
module: 'api',
|
|
157
|
+
title: 'Implement API client with Dio and interceptors',
|
|
158
|
+
description: `Configure a Dio HTTP client in \`lib/features/api/\`. Base URL: ${baseUrl}. Add interceptors for auth token injection, retry on transient failures, and request logging. Expose via \`dioClientProvider\`. Define \`ApiException\` for typed error handling.`,
|
|
159
|
+
storyPoints: 5,
|
|
160
|
+
dependencies: [coreSetupId, riverpodId],
|
|
161
|
+
acceptanceCriteria: [
|
|
162
|
+
ac('`dioClientProvider` is a Riverpod Provider returning a configured `Dio` instance'),
|
|
163
|
+
ac('Auth interceptor injects Bearer token from auth state (if auth module is enabled)'),
|
|
164
|
+
ac('Retry interceptor handles 5xx errors with exponential backoff'),
|
|
165
|
+
ac('`ApiException` maps HTTP status codes to typed errors'),
|
|
166
|
+
ac('Unit tests for interceptors pass'),
|
|
167
|
+
ac('`flutter analyze` reports zero errors'),
|
|
168
|
+
],
|
|
169
|
+
passes: false,
|
|
170
|
+
},
|
|
171
|
+
];
|
|
172
|
+
stories.push(...prefixedStories(inputs, 2, 'API'));
|
|
124
173
|
}
|
|
125
174
|
if (context.modules.database) {
|
|
126
175
|
const engine = context.modules.database.engine;
|
|
127
176
|
const engineLabel = engine === 'drift' ? 'Drift (SQLite)' : engine === 'hive' ? 'Hive' : 'Isar';
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
177
|
+
const inputs = [
|
|
178
|
+
{
|
|
179
|
+
phase: 2,
|
|
180
|
+
priority: 'P1',
|
|
181
|
+
module: 'database',
|
|
182
|
+
title: `Configure local database with ${engineLabel}`,
|
|
183
|
+
description: `Set up ${engineLabel} in \`lib/features/database/\`. Define initial schema/collections. Expose database via \`databaseProvider\`. Add initialization in main.dart before runApp. Run build_runner to generate database code.`,
|
|
184
|
+
storyPoints: 5,
|
|
185
|
+
dependencies: [coreSetupId, riverpodId],
|
|
186
|
+
acceptanceCriteria: [
|
|
187
|
+
ac(`${engineLabel} is initialized before the app starts`),
|
|
188
|
+
ac('`databaseProvider` exposes the database instance via Riverpod'),
|
|
189
|
+
ac(engine === 'drift'
|
|
190
|
+
? '`AppDatabase` class with at least one table defined'
|
|
191
|
+
: `${engineLabel} adapter/collection defined`),
|
|
192
|
+
ac('build_runner generates code without conflicts'),
|
|
193
|
+
ac('Unit test verifies database can be opened and written to'),
|
|
194
|
+
ac('`flutter analyze` reports zero errors'),
|
|
195
|
+
],
|
|
196
|
+
passes: false,
|
|
197
|
+
},
|
|
198
|
+
];
|
|
199
|
+
stories.push(...prefixedStories(inputs, 2, 'DB'));
|
|
143
200
|
}
|
|
144
201
|
if (context.modules.i18n) {
|
|
145
202
|
const { defaultLocale, supportedLocales } = context.modules.i18n;
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
`
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
203
|
+
const inputs = [
|
|
204
|
+
{
|
|
205
|
+
phase: 2,
|
|
206
|
+
priority: 'P1',
|
|
207
|
+
module: 'i18n',
|
|
208
|
+
title: 'Implement internationalization with flutter_localizations',
|
|
209
|
+
description: `Set up i18n in \`lib/core/l10n/\`. Create ARB files for: ${supportedLocales.join(', ')} (default: ${defaultLocale}). Run \`flutter gen-l10n\` to generate \`AppLocalizations\`. Update MaterialApp to include localization delegates.`,
|
|
210
|
+
storyPoints: 3,
|
|
211
|
+
dependencies: [coreSetupId],
|
|
212
|
+
acceptanceCriteria: [
|
|
213
|
+
ac(`ARB files exist for all supported locales: ${supportedLocales.join(', ')}`),
|
|
214
|
+
ac('`AppLocalizations` is generated and available via `AppLocalizations.of(context)!`'),
|
|
215
|
+
ac('MaterialApp includes `AppLocalizations.delegate` and `supportedLocales`'),
|
|
216
|
+
ac('At minimum, app title and home screen greeting are localized'),
|
|
217
|
+
ac('`flutter analyze` reports zero errors'),
|
|
218
|
+
],
|
|
219
|
+
passes: false,
|
|
220
|
+
},
|
|
221
|
+
];
|
|
222
|
+
stories.push(...prefixedStories(inputs, 2, 'I18N'));
|
|
160
223
|
}
|
|
161
224
|
if (context.modules.theme) {
|
|
162
225
|
const { seedColor, darkMode } = context.modules.theme;
|
|
163
226
|
const seedNote = seedColor ? `seed color ${seedColor}` : 'default purple seed color';
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
227
|
+
const inputs = [
|
|
228
|
+
{
|
|
229
|
+
phase: 2,
|
|
230
|
+
priority: 'P1',
|
|
231
|
+
module: 'theme',
|
|
232
|
+
title: 'Implement Material 3 theme system',
|
|
233
|
+
description: `Build the theme in \`lib/core/theme/app_theme.dart\` using Material 3 ColorScheme.fromSeed with ${seedNote}. ${darkMode ? 'Support both light and dark themes via `appThemeModeProvider`.' : 'Light theme only.'} Apply Google Fonts (Inter) as the default text theme.`,
|
|
234
|
+
storyPoints: 3,
|
|
235
|
+
dependencies: [coreSetupId],
|
|
236
|
+
acceptanceCriteria: [
|
|
237
|
+
ac('`AppTheme.light()` returns a `ThemeData` with Material 3 enabled'),
|
|
238
|
+
ac(darkMode
|
|
239
|
+
? '`AppTheme.dark()` returns a dark `ThemeData`'
|
|
240
|
+
: 'Light theme applied consistently'),
|
|
241
|
+
ac(darkMode
|
|
242
|
+
? '`appThemeModeProvider` toggles between light and dark modes'
|
|
243
|
+
: 'Theme applied to MaterialApp'),
|
|
244
|
+
ac('Google Fonts Inter is applied as the text theme'),
|
|
245
|
+
ac('`flutter analyze` reports zero errors'),
|
|
246
|
+
],
|
|
247
|
+
passes: false,
|
|
248
|
+
},
|
|
249
|
+
];
|
|
250
|
+
stories.push(...prefixedStories(inputs, 2, 'THEME'));
|
|
178
251
|
}
|
|
179
252
|
if (context.modules.push) {
|
|
180
253
|
const provider = context.modules.push.provider;
|
|
181
254
|
const providerLabel = provider === 'firebase' ? 'Firebase Cloud Messaging' : 'OneSignal';
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
255
|
+
const inputs = [
|
|
256
|
+
{
|
|
257
|
+
phase: 2,
|
|
258
|
+
priority: 'P2',
|
|
259
|
+
module: 'push',
|
|
260
|
+
title: `Implement push notifications with ${providerLabel}`,
|
|
261
|
+
description: `Configure ${providerLabel} in \`lib/features/push/\`. Request notification permissions at app startup. Handle foreground, background, and terminated state notifications. Expose push token via \`pushTokenProvider\`.`,
|
|
262
|
+
storyPoints: 5,
|
|
263
|
+
dependencies: [coreSetupId, riverpodId],
|
|
264
|
+
acceptanceCriteria: [
|
|
265
|
+
ac(`${providerLabel} is initialized before the app starts`),
|
|
266
|
+
ac('Notification permission is requested on first launch'),
|
|
267
|
+
ac('Foreground notification handler displays an in-app notification'),
|
|
268
|
+
ac('Background/terminated notification tap navigates to correct screen'),
|
|
269
|
+
ac('`pushTokenProvider` returns the device token as a Future<String?>'),
|
|
270
|
+
ac('`flutter analyze` reports zero errors'),
|
|
271
|
+
],
|
|
272
|
+
passes: false,
|
|
273
|
+
},
|
|
274
|
+
];
|
|
275
|
+
stories.push(...prefixedStories(inputs, 2, 'PUSH'));
|
|
197
276
|
}
|
|
198
277
|
if (context.modules.analytics) {
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
'`AnalyticsService`
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
278
|
+
const inputs = [
|
|
279
|
+
{
|
|
280
|
+
phase: 2,
|
|
281
|
+
priority: 'P2',
|
|
282
|
+
module: 'analytics',
|
|
283
|
+
title: 'Implement analytics event tracking',
|
|
284
|
+
description: 'Create `AnalyticsService` abstraction in `lib/features/analytics/`. Implement a GoRouter observer that tracks screen views automatically. Provide `analyticsServiceProvider` for logging custom events. Log app open event on startup.',
|
|
285
|
+
storyPoints: 3,
|
|
286
|
+
dependencies: [coreSetupId, routerId],
|
|
287
|
+
acceptanceCriteria: [
|
|
288
|
+
ac('`AnalyticsService` interface defines `logEvent(name, params)` and `logScreen(name)`'),
|
|
289
|
+
ac('GoRouter observer automatically tracks screen navigation'),
|
|
290
|
+
ac('`analyticsServiceProvider` exposes the `AnalyticsService`'),
|
|
291
|
+
ac('App open event is logged on startup'),
|
|
292
|
+
ac('Unit tests mock `AnalyticsService` and verify event calls'),
|
|
293
|
+
ac('`flutter analyze` reports zero errors'),
|
|
294
|
+
],
|
|
295
|
+
passes: false,
|
|
296
|
+
},
|
|
297
|
+
];
|
|
298
|
+
stories.push(...prefixedStories(inputs, 2, 'ANLT'));
|
|
214
299
|
}
|
|
215
300
|
if (context.modules.cicd) {
|
|
216
301
|
const providerLabel = context.modules.cicd.provider;
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
302
|
+
const inputs = [
|
|
303
|
+
{
|
|
304
|
+
phase: 2,
|
|
305
|
+
priority: 'P2',
|
|
306
|
+
module: 'cicd',
|
|
307
|
+
title: `Configure ${capitalize(providerLabel)} CI/CD pipeline`,
|
|
308
|
+
description: `Set up CI/CD pipeline for ${capitalize(providerLabel)}. Pipeline should run on every push: (1) flutter analyze, (2) flutter test, (3) flutter build. Cache Flutter SDK and pub dependencies for speed.`,
|
|
309
|
+
storyPoints: 2,
|
|
310
|
+
dependencies: [coreSetupId],
|
|
311
|
+
acceptanceCriteria: [
|
|
312
|
+
ac(providerLabel === 'github'
|
|
313
|
+
? '`.github/workflows/ci.yml` exists and is valid YAML'
|
|
314
|
+
: providerLabel === 'gitlab'
|
|
315
|
+
? '`.gitlab-ci.yml` exists and is valid YAML'
|
|
316
|
+
: '`bitbucket-pipelines.yml` exists and is valid YAML'),
|
|
317
|
+
ac('Pipeline includes analyze, test, and build stages/jobs'),
|
|
318
|
+
ac('Flutter pub cache is configured for fast runs'),
|
|
319
|
+
ac('Pipeline triggers on push to main and pull requests'),
|
|
320
|
+
ac('`flutter analyze` reports zero errors in CI config files'),
|
|
321
|
+
],
|
|
322
|
+
passes: false,
|
|
323
|
+
},
|
|
324
|
+
];
|
|
325
|
+
stories.push(...prefixedStories(inputs, 2, 'CICD'));
|
|
231
326
|
}
|
|
232
327
|
if (context.modules.deepLinking) {
|
|
233
328
|
const { scheme, host } = context.modules.deepLinking;
|
|
234
329
|
const linkExample = scheme && host ? `${scheme}://${host}` : 'app://example.com';
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
330
|
+
const inputs = [
|
|
331
|
+
{
|
|
332
|
+
phase: 2,
|
|
333
|
+
priority: 'P2',
|
|
334
|
+
module: 'deepLinking',
|
|
335
|
+
title: 'Implement deep linking with app_links',
|
|
336
|
+
description: `Configure deep links using \`app_links\` package. Handle Universal Links (iOS) and App Links (Android). Integrate with go_router for automatic route resolution. Example link: \`${linkExample}\`.`,
|
|
337
|
+
storyPoints: 5,
|
|
338
|
+
dependencies: [coreSetupId, routerId],
|
|
339
|
+
acceptanceCriteria: [
|
|
340
|
+
ac('`app_links` is initialized at app startup'),
|
|
341
|
+
ac('Incoming deep links are forwarded to go_router for navigation'),
|
|
342
|
+
ac(scheme
|
|
343
|
+
? `Custom scheme \`${scheme}://\` is handled`
|
|
344
|
+
: 'Deep link scheme is configured in platform files'),
|
|
345
|
+
ac(host
|
|
346
|
+
? `Host \`${host}\` is configured for Universal/App Links`
|
|
347
|
+
: 'Host is configured in platform-specific files'),
|
|
348
|
+
ac('Widget test verifies deep link navigation'),
|
|
349
|
+
ac('`flutter analyze` reports zero errors'),
|
|
350
|
+
],
|
|
351
|
+
passes: false,
|
|
352
|
+
},
|
|
353
|
+
];
|
|
354
|
+
stories.push(...prefixedStories(inputs, 2, 'LINK'));
|
|
250
355
|
}
|
|
251
356
|
return stories;
|
|
252
357
|
}
|
|
253
|
-
function
|
|
358
|
+
function buildPhase3Stories(context, phase1Ids, phase2Stories) {
|
|
254
359
|
const enabledModules = [];
|
|
255
360
|
if (context.modules.auth)
|
|
256
361
|
enabledModules.push('auth');
|
|
@@ -258,18 +363,21 @@ function generatePhase3Stories(context) {
|
|
|
258
363
|
enabledModules.push('api');
|
|
259
364
|
if (context.modules.database)
|
|
260
365
|
enabledModules.push('database');
|
|
261
|
-
|
|
366
|
+
const allPrecedingIds = [...phase1Ids, ...phase2Stories.map((s) => s.id)];
|
|
367
|
+
const inputs = [
|
|
262
368
|
{
|
|
263
369
|
phase: 3,
|
|
264
370
|
priority: 'P1',
|
|
265
371
|
title: 'Write integration tests for core user flows',
|
|
266
372
|
description: `Write integration tests covering the main user journeys in ${context.projectName}. ${enabledModules.length > 0 ? `Test flows involving: ${enabledModules.join(', ')}.` : 'Test home screen navigation and basic app flows.'} Use \`integration_test\` package with \`flutter_test\`.`,
|
|
373
|
+
storyPoints: 5,
|
|
374
|
+
dependencies: allPrecedingIds,
|
|
267
375
|
acceptanceCriteria: [
|
|
268
|
-
'`integration_test/` directory exists with at least one integration test file',
|
|
269
|
-
'Tests cover the happy path for core user journeys',
|
|
270
|
-
'Tests use `WidgetTester` for UI interactions',
|
|
271
|
-
'`flutter test integration_test/` passes all tests',
|
|
272
|
-
'Test coverage report shows >70% coverage for presentation layer',
|
|
376
|
+
ac('`integration_test/` directory exists with at least one integration test file'),
|
|
377
|
+
ac('Tests cover the happy path for core user journeys'),
|
|
378
|
+
ac('Tests use `WidgetTester` for UI interactions'),
|
|
379
|
+
ac('`flutter test integration_test/` passes all tests'),
|
|
380
|
+
ac('Test coverage report shows >70% coverage for presentation layer'),
|
|
273
381
|
],
|
|
274
382
|
passes: false,
|
|
275
383
|
},
|
|
@@ -278,16 +386,19 @@ function generatePhase3Stories(context) {
|
|
|
278
386
|
priority: 'P2',
|
|
279
387
|
title: 'Final quality audit and documentation',
|
|
280
388
|
description: `Perform a final quality pass on all code in ${context.projectName}. Fix any remaining analyzer warnings. Ensure all public APIs have dartdoc comments. Verify README.md documents how to run the app and run tests.`,
|
|
389
|
+
storyPoints: 2,
|
|
390
|
+
dependencies: ['P3-QA-001'],
|
|
281
391
|
acceptanceCriteria: [
|
|
282
|
-
'`flutter analyze` reports zero errors AND zero warnings',
|
|
283
|
-
'`flutter test` passes all tests',
|
|
284
|
-
'`dart format --set-exit-if-changed .` passes',
|
|
285
|
-
'README.md includes setup instructions and how to run the app',
|
|
286
|
-
'All public provider declarations have dartdoc comments',
|
|
392
|
+
ac('`flutter analyze` reports zero errors AND zero warnings'),
|
|
393
|
+
ac('`flutter test` passes all tests'),
|
|
394
|
+
ac('`dart format --set-exit-if-changed .` passes'),
|
|
395
|
+
ac('README.md includes setup instructions and how to run the app'),
|
|
396
|
+
ac('All public provider declarations have dartdoc comments'),
|
|
287
397
|
],
|
|
288
398
|
passes: false,
|
|
289
399
|
},
|
|
290
400
|
];
|
|
401
|
+
return prefixedStories(inputs, 3, 'QA');
|
|
291
402
|
}
|
|
292
403
|
function capitalize(str) {
|
|
293
404
|
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prd-generator.js","sourceRoot":"","sources":["../../src/claude-setup/prd-generator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prd-generator.js","sourceRoot":"","sources":["../../src/claude-setup/prd-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,13 +35,13 @@ export declare const PrdStorySchema: z.ZodObject<{
|
|
|
35
35
|
phase: number;
|
|
36
36
|
priority: "P0" | "P1" | "P2" | "P3";
|
|
37
37
|
title: string;
|
|
38
|
+
storyPoints: 1 | 2 | 3 | 5 | 8 | 13;
|
|
39
|
+
dependencies: string[];
|
|
38
40
|
acceptanceCriteria: {
|
|
39
41
|
description: string;
|
|
40
42
|
predicate?: string | undefined;
|
|
41
43
|
}[];
|
|
42
44
|
passes: boolean;
|
|
43
|
-
dependencies: string[];
|
|
44
|
-
storyPoints: 1 | 2 | 3 | 5 | 8 | 13;
|
|
45
45
|
module?: string | undefined;
|
|
46
46
|
}, {
|
|
47
47
|
description: string;
|
|
@@ -49,13 +49,13 @@ export declare const PrdStorySchema: z.ZodObject<{
|
|
|
49
49
|
phase: number;
|
|
50
50
|
priority: "P0" | "P1" | "P2" | "P3";
|
|
51
51
|
title: string;
|
|
52
|
+
storyPoints: number;
|
|
53
|
+
dependencies: string[];
|
|
52
54
|
acceptanceCriteria: {
|
|
53
55
|
description: string;
|
|
54
56
|
predicate?: string | undefined;
|
|
55
57
|
}[];
|
|
56
58
|
passes: boolean;
|
|
57
|
-
dependencies: string[];
|
|
58
|
-
storyPoints: number;
|
|
59
59
|
module?: string | undefined;
|
|
60
60
|
}>;
|
|
61
61
|
declare const PrdPhaseSchema: z.ZodObject<{
|
|
@@ -114,13 +114,13 @@ export declare const PrdSchema: z.ZodObject<{
|
|
|
114
114
|
phase: number;
|
|
115
115
|
priority: "P0" | "P1" | "P2" | "P3";
|
|
116
116
|
title: string;
|
|
117
|
+
storyPoints: 1 | 2 | 3 | 5 | 8 | 13;
|
|
118
|
+
dependencies: string[];
|
|
117
119
|
acceptanceCriteria: {
|
|
118
120
|
description: string;
|
|
119
121
|
predicate?: string | undefined;
|
|
120
122
|
}[];
|
|
121
123
|
passes: boolean;
|
|
122
|
-
dependencies: string[];
|
|
123
|
-
storyPoints: 1 | 2 | 3 | 5 | 8 | 13;
|
|
124
124
|
module?: string | undefined;
|
|
125
125
|
}, {
|
|
126
126
|
description: string;
|
|
@@ -128,13 +128,13 @@ export declare const PrdSchema: z.ZodObject<{
|
|
|
128
128
|
phase: number;
|
|
129
129
|
priority: "P0" | "P1" | "P2" | "P3";
|
|
130
130
|
title: string;
|
|
131
|
+
storyPoints: number;
|
|
132
|
+
dependencies: string[];
|
|
131
133
|
acceptanceCriteria: {
|
|
132
134
|
description: string;
|
|
133
135
|
predicate?: string | undefined;
|
|
134
136
|
}[];
|
|
135
137
|
passes: boolean;
|
|
136
|
-
dependencies: string[];
|
|
137
|
-
storyPoints: number;
|
|
138
138
|
module?: string | undefined;
|
|
139
139
|
}>, "many">;
|
|
140
140
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -146,13 +146,13 @@ export declare const PrdSchema: z.ZodObject<{
|
|
|
146
146
|
phase: number;
|
|
147
147
|
priority: "P0" | "P1" | "P2" | "P3";
|
|
148
148
|
title: string;
|
|
149
|
+
storyPoints: 1 | 2 | 3 | 5 | 8 | 13;
|
|
150
|
+
dependencies: string[];
|
|
149
151
|
acceptanceCriteria: {
|
|
150
152
|
description: string;
|
|
151
153
|
predicate?: string | undefined;
|
|
152
154
|
}[];
|
|
153
155
|
passes: boolean;
|
|
154
|
-
dependencies: string[];
|
|
155
|
-
storyPoints: 1 | 2 | 3 | 5 | 8 | 13;
|
|
156
156
|
module?: string | undefined;
|
|
157
157
|
}[];
|
|
158
158
|
generatedAt?: string | undefined;
|
|
@@ -170,13 +170,13 @@ export declare const PrdSchema: z.ZodObject<{
|
|
|
170
170
|
phase: number;
|
|
171
171
|
priority: "P0" | "P1" | "P2" | "P3";
|
|
172
172
|
title: string;
|
|
173
|
+
storyPoints: number;
|
|
174
|
+
dependencies: string[];
|
|
173
175
|
acceptanceCriteria: {
|
|
174
176
|
description: string;
|
|
175
177
|
predicate?: string | undefined;
|
|
176
178
|
}[];
|
|
177
179
|
passes: boolean;
|
|
178
|
-
dependencies: string[];
|
|
179
|
-
storyPoints: number;
|
|
180
180
|
module?: string | undefined;
|
|
181
181
|
}[];
|
|
182
182
|
generatedAt?: string | undefined;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface ResolvedClaudeOptions {
|
|
2
|
+
claudeMd: boolean;
|
|
3
|
+
rules: boolean;
|
|
4
|
+
agents: boolean;
|
|
5
|
+
hooks: boolean;
|
|
6
|
+
skills: boolean;
|
|
7
|
+
commands: boolean;
|
|
8
|
+
mcp: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function resolvePreset(preset?: 'minimal' | 'standard' | 'full', overrides?: Partial<ResolvedClaudeOptions>): ResolvedClaudeOptions;
|
|
11
|
+
//# sourceMappingURL=preset-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preset-resolver.d.ts","sourceRoot":"","sources":["../../src/claude-setup/preset-resolver.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,OAAO,CAAC;CACd;AAgCD,wBAAgB,aAAa,CAC3B,MAAM,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,EACxC,SAAS,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,GACzC,qBAAqB,CAYvB"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
const PRESETS = {
|
|
2
|
+
minimal: {
|
|
3
|
+
claudeMd: true,
|
|
4
|
+
rules: true,
|
|
5
|
+
agents: false,
|
|
6
|
+
hooks: false,
|
|
7
|
+
skills: false,
|
|
8
|
+
commands: false,
|
|
9
|
+
mcp: false,
|
|
10
|
+
},
|
|
11
|
+
standard: {
|
|
12
|
+
claudeMd: true,
|
|
13
|
+
rules: true,
|
|
14
|
+
agents: true,
|
|
15
|
+
hooks: true,
|
|
16
|
+
skills: true,
|
|
17
|
+
commands: true,
|
|
18
|
+
mcp: false,
|
|
19
|
+
},
|
|
20
|
+
full: {
|
|
21
|
+
claudeMd: true,
|
|
22
|
+
rules: true,
|
|
23
|
+
agents: true,
|
|
24
|
+
hooks: true,
|
|
25
|
+
skills: true,
|
|
26
|
+
commands: true,
|
|
27
|
+
mcp: true,
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
export function resolvePreset(preset, overrides) {
|
|
31
|
+
const base = PRESETS[preset ?? 'standard'];
|
|
32
|
+
if (!overrides)
|
|
33
|
+
return { ...base };
|
|
34
|
+
const result = { ...base };
|
|
35
|
+
for (const key of Object.keys(overrides)) {
|
|
36
|
+
const value = overrides[key];
|
|
37
|
+
if (value !== undefined) {
|
|
38
|
+
result[key] = value;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=preset-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preset-resolver.js","sourceRoot":"","sources":["../../src/claude-setup/preset-resolver.ts"],"names":[],"mappings":"AAUA,MAAM,OAAO,GAAmE;IAC9E,OAAO,EAAE;QACP,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,KAAK;QACf,GAAG,EAAE,KAAK;KACX;IACD,QAAQ,EAAE;QACR,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,IAAI;QACd,GAAG,EAAE,KAAK;KACX;IACD,IAAI,EAAE;QACJ,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,IAAI;QACd,GAAG,EAAE,IAAI;KACV;CACF,CAAC;AAEF,MAAM,UAAU,aAAa,CAC3B,MAAwC,EACxC,SAA0C;IAE1C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC;IAEnC,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAoC,EAAE,CAAC;QAC5E,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|