@iservu-inc/adf-cli 0.17.0 → 0.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,12 +2,12 @@
2
2
  // Level 1: Rapid (Agent-Native), Level 2: Balanced (OpenSpec), Level 3: Comprehensive (Agent-Native)
3
3
 
4
4
  const prpQuestions = [
5
- // Phase 1: Goal Definition (4 questions)
5
+ // Phase 1: Goal Definition (3 questions)
6
6
  {
7
7
  id: 'prp-1',
8
8
  phase: 'goal-definition',
9
9
  number: 1,
10
- total: 20,
10
+ total: 10,
11
11
  text: 'What specific software feature or product are you building?',
12
12
  guidance: 'Be precise about the type of software, technology, and core functionality',
13
13
  goodExample: 'A React dashboard that displays real-time analytics from PostgreSQL with Chart.js',
@@ -24,31 +24,19 @@ const prpQuestions = [
24
24
  id: 'prp-2',
25
25
  phase: 'goal-definition',
26
26
  number: 2,
27
- total: 20,
28
- text: 'What is the primary user action this enables?',
29
- guidance: 'Focus on the ONE main thing users will do most often',
30
- goodExample: 'Users can add a new job application by filling out a form with company name, position, date applied, and current status',
31
- badExample: 'Use the app',
32
- keywords: ['create', 'add', 'update', 'delete', 'view', 'search', 'filter', 'upload', 'download', 'submit'],
33
- requiredElements: ['action', 'user-interaction']
27
+ total: 10,
28
+ text: 'What problem does this solve and what primary user action does it enable?',
29
+ guidance: 'Describe the pain point users face WITHOUT this solution and the ONE main thing users will do most often',
30
+ goodExample: 'Job seekers applying to 50+ positions lose track of applications and miss follow-up deadlines. This lets them add and track job applications with company, position, date, and status.',
31
+ badExample: 'They need to track stuff',
32
+ keywords: ['pain', 'challenge', 'problem', 'create', 'add', 'update', 'view', 'search', 'submit'],
33
+ requiredElements: ['problem-statement', 'action', 'user-interaction']
34
34
  },
35
35
  {
36
36
  id: 'prp-3',
37
37
  phase: 'goal-definition',
38
38
  number: 3,
39
- total: 20,
40
- text: 'What problem does this solve?',
41
- guidance: 'Describe the pain point or challenge users face WITHOUT this solution',
42
- goodExample: 'Job seekers applying to 50+ positions lose track of which companies they applied to, when they applied, and miss critical follow-up deadlines',
43
- badExample: 'They need to track applications',
44
- keywords: ['pain', 'challenge', 'problem', 'frustration', 'difficulty', 'struggle'],
45
- requiredElements: ['problem-statement']
46
- },
47
- {
48
- id: 'prp-4',
49
- phase: 'goal-definition',
50
- number: 4,
51
- total: 20,
39
+ total: 10,
52
40
  text: 'What does success look like?',
53
41
  guidance: 'Define a concrete, measurable outcome that indicates this is working',
54
42
  goodExample: 'Users successfully track 20+ applications, receive automated reminders 3 days after applying, and have a 50% reduction in missed follow-ups',
@@ -57,112 +45,52 @@ const prpQuestions = [
57
45
  requiredElements: ['measurable-outcome']
58
46
  },
59
47
 
60
- // Phase 2: Business Justification (3 questions)
48
+ // Phase 2: Business Context (1 question)
61
49
  {
62
- id: 'prp-5',
63
- phase: 'business-justification',
64
- number: 5,
65
- total: 20,
66
- text: 'Why is this valuable to users?',
67
- guidance: 'Explain the benefit and value users get from this',
68
- goodExample: 'Saves 5+ hours per week organizing applications in spreadsheets, reduces stress from missed deadlines, increases job search success rate',
69
- badExample: 'It helps them',
70
- keywords: ['saves', 'reduces', 'increases', 'improves', 'enables', 'automates'],
71
- requiredElements: ['user-benefit']
72
- },
73
- {
74
- id: 'prp-6',
75
- phase: 'business-justification',
76
- number: 6,
77
- total: 20,
78
- text: 'What happens if this is NOT built?',
79
- guidance: 'Describe the negative impact of not having this solution',
80
- goodExample: 'Users continue using error-prone spreadsheets, miss 30% of follow-up opportunities, lose potential job offers due to poor organization',
81
- badExample: 'Nothing',
82
- keywords: ['continue', 'remain', 'miss', 'lose', 'waste'],
83
- requiredElements: ['negative-impact']
84
- },
85
- {
86
- id: 'prp-7',
87
- phase: 'business-justification',
88
- number: 7,
89
- total: 20,
90
- text: 'What is the expected usage pattern?',
91
- guidance: 'How often will users interact with this? Daily, weekly, per-session?',
92
- goodExample: 'Users check the dashboard daily, add 2-5 applications per week, update statuses 3-4 times per week when hearing back from companies',
93
- badExample: 'Sometimes',
94
- keywords: ['daily', 'weekly', 'monthly', 'per session', 'frequently', 'occasionally'],
95
- requiredElements: ['frequency']
50
+ id: 'prp-4',
51
+ phase: 'business-context',
52
+ number: 4,
53
+ total: 10,
54
+ text: 'Why is this valuable and what\'s the expected usage pattern?',
55
+ guidance: 'Explain the benefit users get, the cost of NOT building this, and how often users will interact (daily, weekly, per-session)',
56
+ goodExample: 'Saves 5+ hours/week vs spreadsheets. Without it, users miss 30% of follow-ups. Users check the dashboard daily, add 2-5 applications per week, update statuses 3-4 times weekly.',
57
+ badExample: 'It helps them sometimes',
58
+ keywords: ['saves', 'reduces', 'increases', 'daily', 'weekly', 'monthly', 'frequency'],
59
+ requiredElements: ['user-benefit', 'negative-impact', 'frequency']
96
60
  },
97
61
 
98
- // Phase 3: Contextual Intelligence (5 questions)
62
+ // Phase 3: Contextual Intelligence (2 questions)
99
63
  {
100
- id: 'prp-8',
64
+ id: 'prp-5',
101
65
  phase: 'contextual-intelligence',
102
- number: 8,
103
- total: 20,
104
- text: 'What is your complete technology stack?',
105
- guidance: 'Include frontend, backend, database, and specific version numbers',
106
- goodExample: 'Frontend: Next.js 14 with TypeScript and Tailwind CSS. Backend: Node.js 20 with Express. Database: PostgreSQL 15. Auth: NextAuth.js',
66
+ number: 5,
67
+ total: 10,
68
+ text: 'What is your complete technology stack, including key libraries?',
69
+ guidance: 'Include frontend, backend, database, specific version numbers, and important npm/pip/maven packages',
70
+ goodExample: 'Frontend: Next.js 14 with TypeScript and Tailwind CSS. Backend: Node.js 20 with Express. Database: PostgreSQL 15. Auth: NextAuth.js. Packages: zod@3.22.4, react-hook-form@7.48.2, date-fns@2.30.0',
107
71
  badExample: 'JavaScript',
108
- keywords: ['frontend', 'backend', 'database', 'auth', 'version'],
109
- requiredElements: ['frontend-tech', 'backend-tech', 'database']
110
- },
111
- {
112
- id: 'prp-9',
113
- phase: 'contextual-intelligence',
114
- number: 9,
115
- total: 20,
116
- text: 'What files and directories will be affected?',
117
- guidance: 'List exact file paths where code will be added or modified',
118
- goodExample: 'src/app/dashboard/page.tsx, src/components/ApplicationForm.tsx, src/lib/db/schema.ts, src/api/applications/route.ts',
119
- badExample: 'Some files',
120
- keywords: ['src/', 'app/', 'components/', 'api/', 'lib/', 'pages/'],
121
- requiredElements: ['file-paths']
122
- },
123
- {
124
- id: 'prp-10',
125
- phase: 'contextual-intelligence',
126
- number: 10,
127
- total: 20,
128
- text: 'What libraries and packages will you use?',
129
- guidance: 'List npm/pip/maven packages with version numbers',
130
- goodExample: 'zod@3.22.4 for validation, react-hook-form@7.48.2 for forms, date-fns@2.30.0 for date handling, pg@8.11.3 for PostgreSQL',
131
- badExample: 'Some libraries',
132
- keywords: ['npm', 'yarn', 'pip', 'maven', 'package', 'dependency'],
133
- requiredElements: ['dependencies']
72
+ keywords: ['frontend', 'backend', 'database', 'auth', 'version', 'npm', 'package', 'dependency'],
73
+ requiredElements: ['frontend-tech', 'backend-tech', 'database', 'dependencies']
134
74
  },
135
75
  {
136
- id: 'prp-11',
76
+ id: 'prp-6',
137
77
  phase: 'contextual-intelligence',
138
- number: 11,
139
- total: 20,
140
- text: 'Are there existing code patterns or conventions to follow?',
141
- guidance: 'Reference existing code structure, naming conventions, or architectural patterns',
142
- goodExample: 'Follow the existing pattern in src/components/JobCard.tsx for card layouts. Use the API route structure from src/api/users/route.ts. Follow Airbnb style guide',
78
+ number: 6,
79
+ total: 10,
80
+ text: 'What existing patterns, conventions, and documentation should be followed?',
81
+ guidance: 'Reference existing code structure, naming conventions, architectural patterns, and any relevant docs/API specs',
82
+ goodExample: 'Follow the existing pattern in src/components/JobCard.tsx for card layouts. Use API route structure from src/api/users/route.ts. Airbnb style guide. Docs: Next.js App Router docs, DB schema in ./docs/database.md',
143
83
  badExample: 'No',
144
- keywords: ['pattern', 'convention', 'style', 'structure', 'example'],
145
- requiredElements: ['code-patterns']
146
- },
147
- {
148
- id: 'prp-12',
149
- phase: 'contextual-intelligence',
150
- number: 12,
151
- total: 20,
152
- text: 'What documentation should be referenced?',
153
- guidance: 'Provide URLs or file paths to relevant documentation, API docs, or design specs',
154
- goodExample: 'Next.js App Router docs (https://nextjs.org/docs/app), PostgreSQL schema in ./docs/database.md, API spec in ./docs/api-reference.md',
155
- badExample: 'The docs',
156
- keywords: ['docs/', 'documentation', 'readme', 'api', 'spec'],
157
- requiredElements: ['documentation-refs']
84
+ keywords: ['pattern', 'convention', 'style', 'structure', 'docs', 'documentation', 'readme', 'spec'],
85
+ requiredElements: ['code-patterns', 'documentation-refs']
158
86
  },
159
87
 
160
- // Phase 4: Implementation Blueprint (5 questions)
88
+ // Phase 4: Implementation Blueprint (3 questions)
161
89
  {
162
- id: 'prp-13',
90
+ id: 'prp-7',
163
91
  phase: 'implementation-blueprint',
164
- number: 13,
165
- total: 20,
92
+ number: 7,
93
+ total: 10,
166
94
  text: 'What are the main implementation steps in order?',
167
95
  guidance: 'List 3-7 ordered steps that outline the implementation approach',
168
96
  goodExample: '1. Create database schema with applications table 2. Build API route for CRUD operations 3. Create ApplicationForm component with validation 4. Build dashboard page with data table 5. Add filtering and search 6. Implement reminder system',
@@ -171,34 +99,22 @@ const prpQuestions = [
171
99
  requiredElements: ['ordered-steps']
172
100
  },
173
101
  {
174
- id: 'prp-14',
175
- phase: 'implementation-blueprint',
176
- number: 14,
177
- total: 20,
178
- text: 'What is the data model?',
179
- guidance: 'Define entities, fields, types, and relationships',
180
- goodExample: 'Application entity: { id: UUID, company: string, position: string, dateApplied: Date, status: enum[applied,interviewing,offer,rejected], notes: text, userId: UUID (FK to Users) }',
181
- badExample: 'Some data',
182
- keywords: ['entity', 'model', 'schema', 'table', 'fields', 'columns', 'relationship'],
183
- requiredElements: ['data-structure']
184
- },
185
- {
186
- id: 'prp-15',
102
+ id: 'prp-8',
187
103
  phase: 'implementation-blueprint',
188
- number: 15,
189
- total: 20,
190
- text: 'What is the API design?',
191
- guidance: 'List endpoints, HTTP methods, request/response formats',
192
- goodExample: 'GET /api/applications - list all. POST /api/applications - create (body: {company, position, dateApplied}). PATCH /api/applications/:id - update status. DELETE /api/applications/:id',
193
- badExample: 'API stuff',
194
- keywords: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'endpoint', 'route'],
195
- requiredElements: ['api-endpoints']
104
+ number: 8,
105
+ total: 10,
106
+ text: 'What is the data model and API design?',
107
+ guidance: 'Define entities, fields, types, relationships, and list endpoints with HTTP methods and request/response formats',
108
+ goodExample: 'Application entity: { id: UUID, company: string, position: string, dateApplied: Date, status: enum[applied,interviewing,offer,rejected], userId: UUID (FK) }. Endpoints: GET /api/applications, POST /api/applications, PATCH /api/applications/:id, DELETE /api/applications/:id',
109
+ badExample: 'Some data and API stuff',
110
+ keywords: ['entity', 'model', 'schema', 'table', 'fields', 'endpoint', 'route', 'GET', 'POST'],
111
+ requiredElements: ['data-structure', 'api-endpoints']
196
112
  },
197
113
  {
198
- id: 'prp-16',
114
+ id: 'prp-9',
199
115
  phase: 'implementation-blueprint',
200
- number: 16,
201
- total: 20,
116
+ number: 9,
117
+ total: 10,
202
118
  text: 'What edge cases and errors must be handled?',
203
119
  guidance: 'List error scenarios, validation rules, and boundary conditions',
204
120
  goodExample: 'Handle duplicate applications (same company+position), validate date is not in future, handle network failures gracefully, show error toast on failed submission, validate required fields',
@@ -206,142 +122,70 @@ const prpQuestions = [
206
122
  keywords: ['validate', 'error', 'edge case', 'handle', 'boundary', 'exception'],
207
123
  requiredElements: ['error-handling']
208
124
  },
209
- {
210
- id: 'prp-17',
211
- phase: 'implementation-blueprint',
212
- number: 17,
213
- total: 20,
214
- text: 'What is the technical approach or algorithm?',
215
- guidance: 'Describe the core logic, pseudocode, or technical strategy',
216
- goodExample: 'Use React Hook Form for form state, validate with Zod schema, debounce search input (300ms), use SWR for data fetching with 30s revalidation, implement optimistic UI updates',
217
- badExample: 'Code it',
218
- keywords: ['algorithm', 'logic', 'approach', 'strategy', 'pseudocode'],
219
- requiredElements: ['technical-approach']
220
- },
221
125
 
222
- // Phase 5: Validation Loop (3 questions)
126
+ // Phase 5: Validation (1 question)
223
127
  {
224
- id: 'prp-18',
225
- phase: 'validation-loop',
226
- number: 18,
227
- total: 20,
228
- text: 'How do you manually verify this works?',
229
- guidance: 'Step-by-step manual testing procedure',
230
- goodExample: '1. Load dashboard, verify empty state shows. 2. Click "Add Application", fill form, submit. 3. Verify new application appears in table. 4. Change status dropdown, verify update persists. 5. Test search with company name',
231
- badExample: 'Test it',
232
- keywords: ['test', 'verify', 'check', 'validate', 'confirm'],
233
- requiredElements: ['test-steps']
234
- },
235
- {
236
- id: 'prp-19',
237
- phase: 'validation-loop',
238
- number: 19,
239
- total: 20,
240
- text: 'What automated tests are needed?',
241
- guidance: 'Specify unit tests, integration tests, or E2E tests',
242
- goodExample: 'Unit: ApplicationForm validation logic. Integration: API routes with mocked DB. E2E: Full user flow from adding application to updating status (Playwright)',
243
- badExample: 'Tests',
244
- keywords: ['unit', 'integration', 'e2e', 'test', 'jest', 'vitest', 'playwright'],
245
- requiredElements: ['automated-tests']
246
- },
247
- {
248
- id: 'prp-20',
249
- phase: 'validation-loop',
250
- number: 20,
251
- total: 20,
252
- text: 'What is your definition of done?',
253
- guidance: 'Checklist of criteria that must be met to consider this complete',
254
- goodExample: '✓ All CRUD operations working ✓ Form validation passing ✓ Search/filter functional ✓ 80% test coverage ✓ No TypeScript errors ✓ Responsive on mobile ✓ Documentation updated',
255
- badExample: 'When it works',
256
- keywords: ['criteria', 'checklist', 'complete', 'done', 'finished'],
257
- requiredElements: ['acceptance-criteria']
128
+ id: 'prp-10',
129
+ phase: 'validation',
130
+ number: 10,
131
+ total: 10,
132
+ text: 'What is your testing strategy and definition of done?',
133
+ guidance: 'Specify manual test steps, automated tests (unit/integration/E2E), and the checklist of criteria for completion',
134
+ goodExample: 'Manual: Load dashboard, add application, verify in table, change status. Automated: Unit tests for validation logic, integration tests for API routes, E2E for full user flow (Playwright). Done: All CRUD working, 80% coverage, no TS errors, responsive on mobile, docs updated.',
135
+ badExample: 'Test it and done',
136
+ keywords: ['test', 'verify', 'unit', 'integration', 'e2e', 'coverage', 'criteria', 'checklist', 'done'],
137
+ requiredElements: ['test-steps', 'automated-tests', 'acceptance-criteria']
258
138
  }
259
139
  ];
260
140
 
261
141
  // Balanced Framework Questions (Level 2: OpenSpec)
262
142
  const balancedQuestions = [
263
- ...prpQuestions, // Include all PRP questions
143
+ ...prpQuestions, // Include all PRP questions (1-10)
264
144
 
265
- // Constitution Block (6 questions)
145
+ // Constitution Block (3 questions)
266
146
  {
267
- id: 'bal-21',
147
+ id: 'bal-11',
268
148
  phase: 'constitution',
269
- number: 21,
270
- total: 50,
271
- text: 'What are your code quality standards?',
272
- guidance: 'Define linting rules, formatting conventions, and code review expectations',
273
- goodExample: 'ESLint with Airbnb config, Prettier with 2-space tabs, strict TypeScript mode, no any types, max function length 50 lines, require JSDoc for public APIs',
274
- badExample: 'Good code',
275
- keywords: ['eslint', 'prettier', 'linting', 'formatting', 'standards'],
276
- requiredElements: ['quality-standards']
149
+ number: 11,
150
+ total: 25,
151
+ text: 'What are your code quality and documentation standards?',
152
+ guidance: 'Define linting rules, formatting conventions, code review expectations, and what documentation is required',
153
+ goodExample: 'ESLint with Airbnb config, Prettier with 2-space tabs, strict TypeScript mode, no any types, max function length 50 lines. JSDoc for all public functions, README per module, API docs in OpenAPI format, update docs in same PR as code.',
154
+ badExample: 'Good code with some docs',
155
+ keywords: ['eslint', 'prettier', 'linting', 'formatting', 'standards', 'jsdoc', 'readme', 'documentation'],
156
+ requiredElements: ['quality-standards', 'doc-standards']
277
157
  },
278
158
  {
279
- id: 'bal-22',
159
+ id: 'bal-12',
280
160
  phase: 'constitution',
281
- number: 22,
282
- total: 50,
283
- text: 'What are your testing requirements?',
161
+ number: 12,
162
+ total: 25,
163
+ text: 'What are your security and accessibility requirements?',
164
+ guidance: 'Define security practices (input sanitization, auth, CSP) and accessibility standards (WCAG level, keyboard nav)',
165
+ goodExample: 'Input sanitization on all user data, parameterized SQL queries, JWT with 15min expiry, HTTPS only, CSP headers, rate limiting. WCAG 2.1 AA, keyboard navigation for all interactions, loading states max 200ms, mobile-first responsive.',
166
+ badExample: 'Secure and accessible',
167
+ keywords: ['security', 'sanitization', 'auth', 'https', 'csp', 'wcag', 'accessibility', 'a11y', 'responsive'],
168
+ requiredElements: ['security-standards', 'ux-standards']
169
+ },
170
+ {
171
+ id: 'bal-13',
172
+ phase: 'constitution',
173
+ number: 13,
174
+ total: 25,
175
+ text: 'What are your testing requirements and coverage targets?',
284
176
  guidance: 'Specify coverage targets, testing pyramid, and test types required',
285
177
  goodExample: '80% code coverage minimum, unit tests for all business logic, integration tests for API routes, E2E for critical user flows, run tests in CI before merge',
286
178
  badExample: 'Some tests',
287
179
  keywords: ['coverage', 'unit', 'integration', 'e2e', 'ci'],
288
180
  requiredElements: ['test-requirements']
289
181
  },
290
- {
291
- id: 'bal-23',
292
- phase: 'constitution',
293
- number: 23,
294
- total: 50,
295
- text: 'What are your documentation standards?',
296
- guidance: 'Define what documentation is required and where it lives',
297
- goodExample: 'JSDoc comments for all public functions, README per module, API documentation in OpenAPI format, inline comments for complex logic, update docs in same PR as code',
298
- badExample: 'Some docs',
299
- keywords: ['jsdoc', 'readme', 'comments', 'documentation'],
300
- requiredElements: ['doc-standards']
301
- },
302
- {
303
- id: 'bal-24',
304
- phase: 'constitution',
305
- number: 24,
306
- total: 50,
307
- text: 'What are your UX/accessibility principles?',
308
- guidance: 'Define user experience and accessibility requirements',
309
- goodExample: 'WCAG 2.1 AA compliance, keyboard navigation for all interactions, loading states max 200ms, error messages actionable, mobile-first responsive design',
310
- badExample: 'Good UX',
311
- keywords: ['wcag', 'accessibility', 'a11y', 'responsive', 'ux'],
312
- requiredElements: ['ux-standards']
313
- },
314
- {
315
- id: 'bal-25',
316
- phase: 'constitution',
317
- number: 25,
318
- total: 50,
319
- text: 'What are your security standards?',
320
- guidance: 'Define security requirements and practices',
321
- goodExample: 'Input sanitization on all user data, parameterized SQL queries, JWT with 15min expiry, HTTPS only, CSP headers, rate limiting on API routes, security headers with helmet',
322
- badExample: 'Secure',
323
- keywords: ['security', 'sanitization', 'auth', 'https', 'csp'],
324
- requiredElements: ['security-standards']
325
- },
326
- {
327
- id: 'bal-26',
328
- phase: 'constitution',
329
- number: 26,
330
- total: 50,
331
- text: 'What are your decision-making guidelines?',
332
- guidance: 'How are technical decisions made and tradeoffs evaluated?',
333
- goodExample: 'Prefer boring technology, optimize for developer experience, document all major decisions in ADR format, prefer composition over inheritance, 2-person approval for architecture changes',
334
- badExample: 'We decide',
335
- keywords: ['decision', 'tradeoff', 'guidelines', 'adr'],
336
- requiredElements: ['decision-process']
337
- },
338
182
 
339
- // Detailed Specification (Additional 10 questions beyond PRP)
183
+ // Specification Block (5 questions)
340
184
  {
341
- id: 'bal-27',
185
+ id: 'bal-14',
342
186
  phase: 'specification',
343
- number: 27,
344
- total: 50,
187
+ number: 14,
188
+ total: 25,
345
189
  text: 'What are ALL features in scope with priorities?',
346
190
  guidance: 'Complete feature list with P0 (must-have), P1 (should-have), P2 (nice-to-have)',
347
191
  goodExample: 'P0: Add/edit/delete applications, status tracking, basic search. P1: Email reminders, CSV import, analytics dashboard. P2: Chrome extension, mobile app, AI resume matching',
@@ -350,23 +194,23 @@ const balancedQuestions = [
350
194
  requiredElements: ['feature-priorities']
351
195
  },
352
196
  {
353
- id: 'bal-28',
197
+ id: 'bal-15',
354
198
  phase: 'specification',
355
- number: 28,
356
- total: 50,
357
- text: 'For each high-priority feature, describe expected behavior',
358
- guidance: 'Detail what each P0/P1 feature should do',
359
- goodExample: 'Add Application: User clicks "New", fills form (company req, position req, date optional, notes optional), validates, saves to DB, shows in table immediately with success toast',
360
- badExample: 'It works',
361
- keywords: ['behavior', 'flow', 'interaction', 'expected'],
362
- requiredElements: ['feature-behavior']
199
+ number: 15,
200
+ total: 25,
201
+ text: 'For each high-priority feature, describe expected behavior and user workflow',
202
+ guidance: 'Detail what each P0/P1 feature should do and the step-by-step user journey',
203
+ goodExample: 'Add Application: User clicks "New", fills form (company req, position req, date optional), validates, saves to DB, shows in table with success toast. Full flow: Login → Dashboard → Click "Add" → Modal with form → Submit → Modal closes → New row in table → Confirmation email',
204
+ badExample: 'It works and they use it',
205
+ keywords: ['behavior', 'flow', 'interaction', 'expected', 'workflow', 'journey', 'steps'],
206
+ requiredElements: ['feature-behavior', 'user-workflow']
363
207
  },
364
208
  {
365
- id: 'bal-29',
209
+ id: 'bal-16',
366
210
  phase: 'specification',
367
- number: 29,
368
- total: 50,
369
- text: 'What is explicitly OUT of scope for v1?',
211
+ number: 16,
212
+ total: 25,
213
+ text: 'What is explicitly out of scope for v1?',
370
214
  guidance: 'List features that will NOT be in the first version',
371
215
  goodExample: 'Not in v1: AI-powered resume tailoring, integration with LinkedIn API, team collaboration features, advanced analytics, mobile apps',
372
216
  badExample: 'Other stuff',
@@ -374,46 +218,22 @@ const balancedQuestions = [
374
218
  requiredElements: ['out-of-scope']
375
219
  },
376
220
  {
377
- id: 'bal-30',
378
- phase: 'specification',
379
- number: 30,
380
- total: 50,
381
- text: 'What are the integration requirements?',
382
- guidance: 'External APIs, services, or systems to integrate with',
383
- goodExample: 'SendGrid for email notifications, Google Calendar API for interview scheduling, optional: LinkedIn API for company data enrichment',
384
- badExample: 'Integrations',
385
- keywords: ['api', 'integration', 'external', 'service'],
386
- requiredElements: ['integrations']
387
- },
388
- {
389
- id: 'bal-31',
390
- phase: 'specification',
391
- number: 31,
392
- total: 50,
393
- text: 'What is the detailed user workflow?',
394
- guidance: 'Step-by-step flow of main user journey',
395
- goodExample: '1. User logs in 2. Sees dashboard with applications table 3. Clicks "Add Application" 4. Modal opens with form 5. Fills required fields 6. Submits 7. Modal closes 8. New row appears in table 9. Receives confirmation email',
396
- badExample: 'They use it',
397
- keywords: ['workflow', 'journey', 'flow', 'steps'],
398
- requiredElements: ['user-workflow']
399
- },
400
- {
401
- id: 'bal-32',
221
+ id: 'bal-17',
402
222
  phase: 'specification',
403
- number: 32,
404
- total: 50,
405
- text: 'What edge cases and scenarios need to be handled?',
406
- guidance: 'Unusual situations, error cases, boundary conditions',
407
- goodExample: 'Duplicate detection, offline mode, network timeout, invalid date, SQL injection attempts, very long company names (>100 chars), concurrent edits, deleted user sessions',
408
- badExample: 'Edge cases',
409
- keywords: ['edge case', 'scenario', 'error', 'boundary'],
410
- requiredElements: ['edge-cases']
223
+ number: 17,
224
+ total: 25,
225
+ text: 'What are the integration requirements and third-party services?',
226
+ guidance: 'External APIs, services, SDKs, or systems to integrate with and their approach',
227
+ goodExample: 'SendGrid for email notifications (@sendgrid/mail), Google Calendar API for interview scheduling, Sentry for error tracking, PostHog for analytics. Optional: LinkedIn API for company data enrichment',
228
+ badExample: 'Integrations and cloud stuff',
229
+ keywords: ['api', 'integration', 'external', 'service', 'sdk'],
230
+ requiredElements: ['integrations', 'third-party']
411
231
  },
412
232
  {
413
- id: 'bal-33',
233
+ id: 'bal-18',
414
234
  phase: 'specification',
415
- number: 33,
416
- total: 50,
235
+ number: 18,
236
+ total: 25,
417
237
  text: 'What are the UI/UX specifications?',
418
238
  guidance: 'Design system, component library, visual specifications',
419
239
  goodExample: 'Use shadcn/ui components, Tailwind with custom theme (primary: #3B82F6), responsive breakpoints at 640/768/1024px, Geist font, dark mode support',
@@ -421,49 +241,13 @@ const balancedQuestions = [
421
241
  keywords: ['ui', 'ux', 'design', 'components', 'theme'],
422
242
  requiredElements: ['ui-specs']
423
243
  },
424
- {
425
- id: 'bal-34',
426
- phase: 'specification',
427
- number: 34,
428
- total: 50,
429
- text: 'What assumptions are you making?',
430
- guidance: 'List all assumptions explicitly',
431
- goodExample: 'Assume users have modern browsers (Chrome 90+), stable internet, English language only for v1, max 1000 applications per user, users understand job application process',
432
- badExample: 'Assumptions',
433
- keywords: ['assume', 'assumption', 'expect', 'presume'],
434
- requiredElements: ['assumptions']
435
- },
436
- {
437
- id: 'bal-35',
438
- phase: 'specification',
439
- number: 35,
440
- total: 50,
441
- text: 'What open questions remain?',
442
- guidance: 'What needs to be decided or researched before implementation',
443
- goodExample: 'Q: Should we support multiple resume versions per application? Q: Email frequency limits? Q: Data retention policy? Q: Should status changes be logged with history?',
444
- badExample: 'None',
445
- keywords: ['question', 'tbd', 'decide', 'research'],
446
- requiredElements: ['open-questions']
447
- },
448
244
 
449
- // Technical Planning (8 questions)
450
- {
451
- id: 'bal-36',
452
- phase: 'technical-plan',
453
- number: 36,
454
- total: 50,
455
- text: 'Why did you choose this technology stack?',
456
- guidance: 'Justify each major technology decision',
457
- goodExample: 'Next.js for SSR/SEO benefits and API routes, TypeScript for type safety, PostgreSQL for relational data with complex queries, Tailwind for rapid styling, Vercel for easy deployment',
458
- badExample: 'Its good',
459
- keywords: ['because', 'reason', 'choice', 'justify'],
460
- requiredElements: ['tech-justification']
461
- },
245
+ // Technical Plan Block (4 questions)
462
246
  {
463
- id: 'bal-37',
247
+ id: 'bal-19',
464
248
  phase: 'technical-plan',
465
- number: 37,
466
- total: 50,
249
+ number: 19,
250
+ total: 25,
467
251
  text: 'What architectural pattern and why?',
468
252
  guidance: 'Describe architecture style with rationale',
469
253
  goodExample: 'Monolithic Next.js app with API routes (simpler for small team, easier debugging), MVC pattern on backend, Container/Presenter on frontend, event-driven for notifications',
@@ -472,34 +256,10 @@ const balancedQuestions = [
472
256
  requiredElements: ['architecture-pattern']
473
257
  },
474
258
  {
475
- id: 'bal-38',
476
- phase: 'technical-plan',
477
- number: 38,
478
- total: 50,
479
- text: 'What is the database design?',
480
- guidance: 'Tables/collections, relationships, indexes',
481
- goodExample: 'Tables: users, applications (FK to users), reminders (FK to applications). Indexes: applications.userId, applications.dateApplied, applications.status. Use UUIDs for IDs',
482
- badExample: 'Database',
483
- keywords: ['table', 'schema', 'index', 'foreign key', 'relationship'],
484
- requiredElements: ['database-design']
485
- },
486
- {
487
- id: 'bal-39',
259
+ id: 'bal-20',
488
260
  phase: 'technical-plan',
489
- number: 39,
490
- total: 50,
491
- text: 'What is the complete API design?',
492
- guidance: 'All endpoints with request/response schemas',
493
- goodExample: 'POST /api/auth/login {email,password} → {token,user}. GET /api/applications?status=applied → [{id,company,...}]. Full OpenAPI spec in docs/api.yaml',
494
- badExample: 'REST API',
495
- keywords: ['endpoint', 'route', 'request', 'response', 'schema'],
496
- requiredElements: ['api-design']
497
- },
498
- {
499
- id: 'bal-40',
500
- phase: 'technical-plan',
501
- number: 40,
502
- total: 50,
261
+ number: 20,
262
+ total: 25,
503
263
  text: 'What is the authentication/authorization approach?',
504
264
  guidance: 'Auth method, session management, role-based access',
505
265
  goodExample: 'NextAuth.js with credentials provider, JWT stored in httpOnly cookie, 15min access token, 7day refresh token, middleware protects /dashboard routes, no RBAC needed (all users equal)',
@@ -508,35 +268,23 @@ const balancedQuestions = [
508
268
  requiredElements: ['auth-design']
509
269
  },
510
270
  {
511
- id: 'bal-41',
512
- phase: 'technical-plan',
513
- number: 41,
514
- total: 50,
515
- text: 'What third-party services and SDKs?',
516
- guidance: 'External services with integration approach',
517
- goodExample: 'Vercel for hosting, Supabase for PostgreSQL + Auth, SendGrid for emails (@sendgrid/mail), Sentry for error tracking, PostHog for analytics',
518
- badExample: 'Cloud stuff',
519
- keywords: ['service', 'sdk', 'api', 'integration'],
520
- requiredElements: ['third-party']
521
- },
522
- {
523
- id: 'bal-42',
271
+ id: 'bal-21',
524
272
  phase: 'technical-plan',
525
- number: 42,
526
- total: 50,
527
- text: 'What is the deployment architecture?',
528
- guidance: 'Infrastructure, CI/CD, environments',
273
+ number: 21,
274
+ total: 25,
275
+ text: 'What is the deployment architecture and CI/CD?',
276
+ guidance: 'Infrastructure, CI/CD pipeline, environments',
529
277
  goodExample: 'Vercel for Next.js (auto-deploy from main branch), Supabase for DB (production instance), GitHub Actions for tests, staging environment on Vercel preview deployments',
530
278
  badExample: 'Cloud',
531
279
  keywords: ['deploy', 'infrastructure', 'ci/cd', 'environment'],
532
280
  requiredElements: ['deployment']
533
281
  },
534
282
  {
535
- id: 'bal-43',
283
+ id: 'bal-22',
536
284
  phase: 'technical-plan',
537
- number: 43,
538
- total: 50,
539
- text: 'What is the performance strategy?',
285
+ number: 22,
286
+ total: 25,
287
+ text: 'What is the performance and caching strategy?',
540
288
  guidance: 'Caching, optimization, performance targets',
541
289
  goodExample: 'Target: <200ms API responses, <2s page load. Strategy: Next.js ISR for dashboard (revalidate 60s), React Query for client caching, DB indexes on query columns, image optimization with next/image',
542
290
  badExample: 'Fast',
@@ -544,13 +292,13 @@ const balancedQuestions = [
544
292
  requiredElements: ['performance']
545
293
  },
546
294
 
547
- // Task Breakdown (7 questions - reduced from original 8 to make total 50)
295
+ // Task Breakdown Block (3 questions)
548
296
  {
549
- id: 'bal-44',
297
+ id: 'bal-23',
550
298
  phase: 'task-breakdown',
551
- number: 44,
552
- total: 50,
553
- text: 'What are ALL implementation tasks in dependency order?',
299
+ number: 23,
300
+ total: 25,
301
+ text: 'What are all implementation tasks in dependency order?',
554
302
  guidance: 'Complete task list showing what must be done before what',
555
303
  goodExample: '1. Setup project + DB 2. Auth system 3. Create applications API 4. Build dashboard UI 5. Add search/filter 6. Email reminders 7. CSV import 8. Testing 9. Deploy',
556
304
  badExample: 'Tasks',
@@ -558,71 +306,23 @@ const balancedQuestions = [
558
306
  requiredElements: ['task-list']
559
307
  },
560
308
  {
561
- id: 'bal-45',
562
- phase: 'task-breakdown',
563
- number: 45,
564
- total: 50,
565
- text: 'What is the critical path?',
566
- guidance: 'Tasks that block other tasks and must be done first',
567
- goodExample: 'Critical path: Setup → Auth → Applications API → Dashboard. These block everything else. Search/filter and emails can be parallel after dashboard',
568
- badExample: 'Important tasks',
569
- keywords: ['critical', 'blocker', 'dependency', 'blocks'],
570
- requiredElements: ['critical-path']
571
- },
572
- {
573
- id: 'bal-46',
574
- phase: 'task-breakdown',
575
- number: 46,
576
- total: 50,
577
- text: 'What tasks can be done in parallel?',
578
- guidance: 'Independent tasks that can be worked on simultaneously',
579
- goodExample: 'After dashboard done: (1) Search/filter + (2) Email system + (3) CSV import can all be parallel. Testing and docs can start anytime',
580
- badExample: 'Some',
581
- keywords: ['parallel', 'concurrent', 'independent', 'simultaneous'],
582
- requiredElements: ['parallel-tasks']
583
- },
584
- {
585
- id: 'bal-47',
586
- phase: 'task-breakdown',
587
- number: 47,
588
- total: 50,
589
- text: 'What are the key milestones?',
590
- guidance: 'Major checkpoints that indicate progress',
591
- goodExample: 'M1: Auth working (Week 1). M2: CRUD functional (Week 2). M3: Search + reminders (Week 3). M4: Testing complete (Week 4). M5: Production deploy (Week 4)',
592
- badExample: 'Milestones',
593
- keywords: ['milestone', 'checkpoint', 'deliverable', 'phase'],
594
- requiredElements: ['milestones']
595
- },
596
- {
597
- id: 'bal-48',
598
- phase: 'task-breakdown',
599
- number: 48,
600
- total: 50,
601
- text: 'What is the testing strategy per task?',
602
- guidance: 'How each major task will be tested',
603
- goodExample: 'Auth: Unit tests for JWT logic + E2E for login flow. API: Integration tests with test DB. UI: Component tests + E2E with Playwright. Email: Mock SendGrid + test emails',
604
- badExample: 'Test it',
605
- keywords: ['test', 'unit', 'integration', 'e2e'],
606
- requiredElements: ['test-strategy']
607
- },
608
- {
609
- id: 'bal-49',
309
+ id: 'bal-24',
610
310
  phase: 'task-breakdown',
611
- number: 49,
612
- total: 50,
613
- text: 'What is the estimated effort per major task?',
614
- guidance: 'Time/effort estimates (hours or days)',
615
- goodExample: 'Setup: 4h. Auth: 8h. Applications API: 12h. Dashboard UI: 16h. Search: 6h. Reminders: 8h. CSV: 6h. Testing: 12h. Deploy: 4h. Total: ~76h',
616
- badExample: 'Some time',
617
- keywords: ['estimate', 'effort', 'hours', 'days'],
618
- requiredElements: ['estimates']
311
+ number: 24,
312
+ total: 25,
313
+ text: 'What are the key milestones and critical path?',
314
+ guidance: 'Major checkpoints and tasks that block other tasks (must be done first)',
315
+ goodExample: 'Critical path: Setup Auth Applications API Dashboard (blocks everything else). Milestones: M1: Auth working (Week 1). M2: CRUD functional (Week 2). M3: Search + reminders (Week 3). M4: Production deploy (Week 4)',
316
+ badExample: 'Important milestones',
317
+ keywords: ['milestone', 'checkpoint', 'critical', 'blocker', 'dependency', 'blocks'],
318
+ requiredElements: ['milestones', 'critical-path']
619
319
  },
620
320
  {
621
- id: 'bal-50',
321
+ id: 'bal-25',
622
322
  phase: 'task-breakdown',
623
- number: 50,
624
- total: 50,
625
- text: 'What is the definition of done for the entire project?',
323
+ number: 25,
324
+ total: 25,
325
+ text: 'What is the project definition of done?',
626
326
  guidance: 'Complete checklist for project completion',
627
327
  goodExample: '✓ All P0 features working ✓ 80% test coverage ✓ No critical bugs ✓ Performance targets met ✓ Docs complete ✓ Deployed to production ✓ Users can sign up and track applications ✓ Email reminders working',
628
328
  badExample: 'Done',
@@ -633,15 +333,7 @@ const balancedQuestions = [
633
333
 
634
334
  // Comprehensive Framework Questions (Level 3: Agent-Native)
635
335
  const bmadQuestions = [
636
- ...balancedQuestions, // Include all 50 Balanced questions
637
-
638
- // BMAD-specific additions start here...
639
- // This would continue with the full BMAD question set
640
- // For now, I'll add the structure showing it extends Balanced
641
-
642
- // Note: Full BMAD implementation would add 50 more questions here
643
- // covering Business Analysis, Market Analysis, Advanced Architecture, etc.
644
- // Keeping file size manageable for now - can expand if needed
336
+ ...balancedQuestions // Include all 25 Balanced questions
645
337
  ];
646
338
 
647
339
  module.exports = {