ctx-cc 3.0.0 → 3.1.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/README.md +92 -6
- package/agents/ctx-criteria-suggester.md +358 -0
- package/agents/ctx-handoff.md +379 -0
- package/agents/ctx-parallelizer.md +351 -0
- package/agents/ctx-reviewer.md +366 -0
- package/commands/integrate.md +422 -0
- package/package.json +2 -2
- package/templates/config.json +102 -16
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
### Continuous Task eXecution
|
|
6
6
|
|
|
7
|
-
**
|
|
7
|
+
**Intelligent workflow orchestration for Claude Code.**
|
|
8
8
|
|
|
9
9
|
[](https://www.npmjs.com/package/ctx-cc)
|
|
10
10
|
[](https://www.npmjs.com/package/ctx-cc)
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
|
|
14
14
|
<img src="./assets/terminal.png" alt="CTX Terminal" width="700">
|
|
15
15
|
|
|
16
|
-
**
|
|
16
|
+
**Task parallelization. Pre-commit review. Criteria auto-generation. Smart handoff. Issue tracker sync.**
|
|
17
17
|
|
|
18
|
-
[Installation](#installation) · [Quick Start](#quick-start) · [New in 3.
|
|
18
|
+
[Installation](#installation) · [Quick Start](#quick-start) · [New in 3.1](#new-in-31) · [Commands](#commands) · [Why CTX](#why-ctx)
|
|
19
19
|
|
|
20
20
|
</div>
|
|
21
21
|
|
|
@@ -53,7 +53,80 @@ npx ctx-cc --force # Overwrite existing installation
|
|
|
53
53
|
|
|
54
54
|
---
|
|
55
55
|
|
|
56
|
-
## New in 3.
|
|
56
|
+
## New in 3.1
|
|
57
|
+
|
|
58
|
+
### Intelligent Task Parallelization
|
|
59
|
+
Tasks without dependencies run simultaneously:
|
|
60
|
+
```
|
|
61
|
+
Wave 1: [T001, T003] → Parallel (no deps)
|
|
62
|
+
Wave 2: [T002] → After T001
|
|
63
|
+
Wave 3: [T004] → After T002
|
|
64
|
+
|
|
65
|
+
Result: 40% faster execution
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Pre-Commit Review (ctx-reviewer)
|
|
69
|
+
Catches errors BEFORE they're committed:
|
|
70
|
+
- Type errors (TypeScript, Python, Go)
|
|
71
|
+
- Unresolved imports
|
|
72
|
+
- Circular dependencies
|
|
73
|
+
- Security vulnerabilities
|
|
74
|
+
- Empty catch blocks, console.logs
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
[CTX] Pre-Commit Review
|
|
78
|
+
✅ Types: Pass
|
|
79
|
+
✅ Imports: Pass
|
|
80
|
+
⚠️ Medium: 2 console.log statements
|
|
81
|
+
❌ Critical: SQL injection risk at line 45
|
|
82
|
+
|
|
83
|
+
Status: BLOCKED - Fix critical issue
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Acceptance Criteria Auto-Generation
|
|
87
|
+
AI suggests comprehensive criteria:
|
|
88
|
+
```
|
|
89
|
+
Story: "Add user authentication"
|
|
90
|
+
|
|
91
|
+
Suggested Criteria:
|
|
92
|
+
✓ User can register with email/password
|
|
93
|
+
✓ Invalid credentials show error
|
|
94
|
+
✓ Passwords hashed with bcrypt
|
|
95
|
+
✓ Session expires after 24h
|
|
96
|
+
✓ Brute force protection enabled
|
|
97
|
+
|
|
98
|
+
[A] Accept all [B] See more [C] Edit
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Smart Context Handoff
|
|
102
|
+
Seamless transitions at context limits:
|
|
103
|
+
|
|
104
|
+
| Threshold | Action |
|
|
105
|
+
|-----------|--------|
|
|
106
|
+
| 40% | Prepare handoff notes |
|
|
107
|
+
| 50% | Write HANDOFF.md, warn |
|
|
108
|
+
| 60% | Spawn fresh agent |
|
|
109
|
+
|
|
110
|
+
Zero information loss. Work continues automatically.
|
|
111
|
+
|
|
112
|
+
### Issue Tracker Integration
|
|
113
|
+
Sync with Linear, Jira, or GitHub Issues:
|
|
114
|
+
```bash
|
|
115
|
+
/ctx integrate linear # Setup Linear
|
|
116
|
+
/ctx integrate jira # Setup Jira
|
|
117
|
+
/ctx integrate github # Setup GitHub Issues
|
|
118
|
+
/ctx integrate --sync # Force sync all stories
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Features:
|
|
122
|
+
- Bidirectional story sync
|
|
123
|
+
- Status mapping (CTX → tracker)
|
|
124
|
+
- Auto-close on verify pass
|
|
125
|
+
- Comment on verify fail
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## From 3.0
|
|
57
130
|
|
|
58
131
|
### Repository Mapping (like Aider)
|
|
59
132
|
```bash
|
|
@@ -203,6 +276,15 @@ Results synthesized into `SUMMARY.md`.
|
|
|
203
276
|
| `/ctx phase add "goal"` | Add new phase |
|
|
204
277
|
| `/ctx phase next` | Complete current, move to next |
|
|
205
278
|
|
|
279
|
+
### Integration
|
|
280
|
+
| Command | Purpose |
|
|
281
|
+
|---------|---------|
|
|
282
|
+
| `/ctx integrate` | Show integration status |
|
|
283
|
+
| `/ctx integrate linear` | Setup Linear |
|
|
284
|
+
| `/ctx integrate jira` | Setup Jira |
|
|
285
|
+
| `/ctx integrate github` | Setup GitHub Issues |
|
|
286
|
+
| `/ctx integrate --sync` | Sync all stories |
|
|
287
|
+
|
|
206
288
|
---
|
|
207
289
|
|
|
208
290
|
## State Machine
|
|
@@ -246,7 +328,7 @@ Smart handoff creates `HANDOFF.md` with:
|
|
|
246
328
|
|
|
247
329
|
---
|
|
248
330
|
|
|
249
|
-
##
|
|
331
|
+
## 14 Specialized Agents
|
|
250
332
|
|
|
251
333
|
| Agent | Spawned when | Model (balanced) |
|
|
252
334
|
|-------|--------------|------------------|
|
|
@@ -262,6 +344,10 @@ Smart handoff creates `HANDOFF.md` with:
|
|
|
262
344
|
| ctx-designer | design stories | sonnet |
|
|
263
345
|
| ctx-debugger | status = debugging | sonnet |
|
|
264
346
|
| ctx-verifier | status = verifying | haiku |
|
|
347
|
+
| ctx-parallelizer | before execution | haiku |
|
|
348
|
+
| ctx-reviewer | before commit | sonnet |
|
|
349
|
+
| ctx-criteria-suggester | during init/discuss | sonnet |
|
|
350
|
+
| ctx-handoff | at context thresholds | haiku |
|
|
265
351
|
|
|
266
352
|
---
|
|
267
353
|
|
|
@@ -399,6 +485,6 @@ MIT
|
|
|
399
485
|
|
|
400
486
|
**[GitHub](https://github.com/jufjuf/CTX)** · **[Issues](https://github.com/jufjuf/CTX/issues)** · **[npm](https://www.npmjs.com/package/ctx-cc)**
|
|
401
487
|
|
|
402
|
-
*CTX 3.
|
|
488
|
+
*CTX 3.1 - Task parallelization. Pre-commit review. Smart handoff. Issue tracker sync.*
|
|
403
489
|
|
|
404
490
|
</div>
|
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ctx-criteria-suggester
|
|
3
|
+
description: Acceptance criteria auto-generation agent for CTX 3.1. Analyzes story descriptions and suggests comprehensive acceptance criteria based on patterns, best practices, and codebase context.
|
|
4
|
+
tools: Read, Bash, Glob, Grep, WebSearch
|
|
5
|
+
color: purple
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<role>
|
|
9
|
+
You are a CTX 3.1 criteria suggester. Your job is to:
|
|
10
|
+
1. Analyze story title and description
|
|
11
|
+
2. Research common patterns for the feature type
|
|
12
|
+
3. Suggest comprehensive acceptance criteria
|
|
13
|
+
4. Include edge cases, error states, and security considerations
|
|
14
|
+
5. Let user approve/modify before saving to PRD.json
|
|
15
|
+
|
|
16
|
+
You help users define "done" before implementation starts.
|
|
17
|
+
</role>
|
|
18
|
+
|
|
19
|
+
<philosophy>
|
|
20
|
+
|
|
21
|
+
## Why Auto-Generate Criteria?
|
|
22
|
+
|
|
23
|
+
**Manual approach**:
|
|
24
|
+
- User writes vague story: "Add user authentication"
|
|
25
|
+
- Missing criteria discovered during implementation
|
|
26
|
+
- Scope creep, rework, frustration
|
|
27
|
+
|
|
28
|
+
**CTX 3.1 approach**:
|
|
29
|
+
- User writes story: "Add user authentication"
|
|
30
|
+
- CTX suggests 8-10 comprehensive criteria
|
|
31
|
+
- User reviews and adjusts
|
|
32
|
+
- Clear definition of done from start
|
|
33
|
+
|
|
34
|
+
## Criteria Categories
|
|
35
|
+
|
|
36
|
+
Every feature should have criteria in these categories:
|
|
37
|
+
|
|
38
|
+
1. **Happy Path** - Core functionality works
|
|
39
|
+
2. **Validation** - Input validation and constraints
|
|
40
|
+
3. **Error States** - What happens when things fail
|
|
41
|
+
4. **Edge Cases** - Boundary conditions
|
|
42
|
+
5. **Security** - Auth, authorization, data protection
|
|
43
|
+
6. **Performance** - Response times, limits
|
|
44
|
+
7. **Accessibility** - WCAG compliance (if UI)
|
|
45
|
+
8. **Data** - Persistence, consistency
|
|
46
|
+
|
|
47
|
+
## Quality Criteria
|
|
48
|
+
|
|
49
|
+
Good acceptance criteria are:
|
|
50
|
+
- **Specific** - No ambiguity
|
|
51
|
+
- **Measurable** - Can be verified
|
|
52
|
+
- **Testable** - Can write a test for it
|
|
53
|
+
- **Independent** - Don't depend on other criteria
|
|
54
|
+
- **Complete** - Cover the full scope
|
|
55
|
+
|
|
56
|
+
Bad: "Login should work"
|
|
57
|
+
Good: "User can log in with valid email and password, receiving a session token valid for 24 hours"
|
|
58
|
+
|
|
59
|
+
</philosophy>
|
|
60
|
+
|
|
61
|
+
<process>
|
|
62
|
+
|
|
63
|
+
## Step 1: Analyze Story
|
|
64
|
+
|
|
65
|
+
Read story from PRD.json:
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"id": "S001",
|
|
69
|
+
"type": "feature",
|
|
70
|
+
"title": "Add user authentication",
|
|
71
|
+
"description": "Users should be able to register, log in, and log out of the application"
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Extract:
|
|
76
|
+
- **Domain**: Authentication/Authorization
|
|
77
|
+
- **Actions**: Register, Login, Logout
|
|
78
|
+
- **Actors**: Users
|
|
79
|
+
- **Scope**: Web application
|
|
80
|
+
|
|
81
|
+
## Step 2: Load Context
|
|
82
|
+
|
|
83
|
+
### Codebase Context
|
|
84
|
+
```bash
|
|
85
|
+
# Check existing auth patterns
|
|
86
|
+
grep -r "auth\|login\|session" src/ --include="*.ts" | head -20
|
|
87
|
+
|
|
88
|
+
# Check existing validation
|
|
89
|
+
grep -r "zod\|yup\|validate" src/ --include="*.ts" | head -10
|
|
90
|
+
|
|
91
|
+
# Check existing error handling
|
|
92
|
+
grep -r "catch\|throw\|Error" src/ --include="*.ts" | head -10
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### PRD Context
|
|
96
|
+
```bash
|
|
97
|
+
# Check design requirements
|
|
98
|
+
cat .ctx/PRD.json | jq '.design'
|
|
99
|
+
|
|
100
|
+
# Check brand requirements (for UI stories)
|
|
101
|
+
cat BRAND_KIT.md 2>/dev/null | head -50
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### CONTEXT.md Decisions
|
|
105
|
+
```bash
|
|
106
|
+
cat .ctx/phases/{story_id}/CONTEXT.md 2>/dev/null
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## Step 3: Research Patterns
|
|
110
|
+
|
|
111
|
+
Use ArguSeek to research:
|
|
112
|
+
```
|
|
113
|
+
Query: "user authentication best practices acceptance criteria"
|
|
114
|
+
Query: "{feature_type} common requirements checklist"
|
|
115
|
+
Query: "{feature_type} edge cases to handle"
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Common patterns for authentication:
|
|
119
|
+
- Email/password validation
|
|
120
|
+
- Password strength requirements
|
|
121
|
+
- Rate limiting
|
|
122
|
+
- Session management
|
|
123
|
+
- Remember me functionality
|
|
124
|
+
- Password reset flow
|
|
125
|
+
- Account lockout
|
|
126
|
+
|
|
127
|
+
## Step 4: Generate Criteria by Category
|
|
128
|
+
|
|
129
|
+
### Template Structure
|
|
130
|
+
|
|
131
|
+
```markdown
|
|
132
|
+
## Happy Path
|
|
133
|
+
- [ ] User can {action} with valid {inputs}
|
|
134
|
+
- [ ] System responds with {expected_output}
|
|
135
|
+
- [ ] State changes to {expected_state}
|
|
136
|
+
|
|
137
|
+
## Validation
|
|
138
|
+
- [ ] Invalid {input} shows {error_message}
|
|
139
|
+
- [ ] Missing required fields show validation errors
|
|
140
|
+
- [ ] {constraints} are enforced
|
|
141
|
+
|
|
142
|
+
## Error States
|
|
143
|
+
- [ ] {error_condition} shows {error_message}
|
|
144
|
+
- [ ] System recovers gracefully from {failure}
|
|
145
|
+
- [ ] User can retry after {error}
|
|
146
|
+
|
|
147
|
+
## Edge Cases
|
|
148
|
+
- [ ] {boundary_condition} is handled correctly
|
|
149
|
+
- [ ] Concurrent {actions} don't cause conflicts
|
|
150
|
+
- [ ] {race_condition} is prevented
|
|
151
|
+
|
|
152
|
+
## Security
|
|
153
|
+
- [ ] {sensitive_data} is {protected_how}
|
|
154
|
+
- [ ] {attack_vector} is prevented
|
|
155
|
+
- [ ] {authorization} is enforced
|
|
156
|
+
|
|
157
|
+
## Performance
|
|
158
|
+
- [ ] {action} completes within {time_limit}
|
|
159
|
+
- [ ] System handles {load} concurrent users
|
|
160
|
+
- [ ] {resource} usage stays under {limit}
|
|
161
|
+
|
|
162
|
+
## Accessibility (if UI)
|
|
163
|
+
- [ ] {element} is keyboard accessible
|
|
164
|
+
- [ ] Screen reader announces {content}
|
|
165
|
+
- [ ] Color contrast meets WCAG AA
|
|
166
|
+
|
|
167
|
+
## Data
|
|
168
|
+
- [ ] {data} persists after {action}
|
|
169
|
+
- [ ] {data} is consistent across {scenarios}
|
|
170
|
+
- [ ] {cleanup} happens on {trigger}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## Step 5: Apply to Specific Story
|
|
174
|
+
|
|
175
|
+
For "Add user authentication":
|
|
176
|
+
|
|
177
|
+
```markdown
|
|
178
|
+
## Suggested Acceptance Criteria
|
|
179
|
+
|
|
180
|
+
### Happy Path
|
|
181
|
+
1. User can register with valid email and password
|
|
182
|
+
2. User can log in with correct credentials
|
|
183
|
+
3. User can log out from any page
|
|
184
|
+
4. Session persists across page refreshes
|
|
185
|
+
5. User is redirected to intended page after login
|
|
186
|
+
|
|
187
|
+
### Validation
|
|
188
|
+
6. Email must be valid format (user@domain.com)
|
|
189
|
+
7. Password must be at least 8 characters
|
|
190
|
+
8. Password must contain uppercase, lowercase, and number
|
|
191
|
+
9. Registration fails if email already exists
|
|
192
|
+
10. Empty fields show validation errors
|
|
193
|
+
|
|
194
|
+
### Error States
|
|
195
|
+
11. Invalid credentials show "Invalid email or password"
|
|
196
|
+
12. Network error shows retry option
|
|
197
|
+
13. Server error shows user-friendly message
|
|
198
|
+
14. Expired session redirects to login
|
|
199
|
+
|
|
200
|
+
### Edge Cases
|
|
201
|
+
15. Concurrent login from multiple devices is allowed
|
|
202
|
+
16. Very long email addresses are handled (up to 254 chars)
|
|
203
|
+
17. Unicode characters in password work correctly
|
|
204
|
+
18. Rapid login attempts are rate-limited
|
|
205
|
+
|
|
206
|
+
### Security
|
|
207
|
+
19. Passwords are hashed with bcrypt (cost factor 12+)
|
|
208
|
+
20. Session tokens are HTTP-only, Secure cookies
|
|
209
|
+
21. CSRF protection is enabled
|
|
210
|
+
22. Brute force protection after 5 failed attempts
|
|
211
|
+
23. Password is never logged or exposed in errors
|
|
212
|
+
|
|
213
|
+
### Performance
|
|
214
|
+
24. Login completes within 2 seconds
|
|
215
|
+
25. Registration completes within 3 seconds
|
|
216
|
+
26. Session validation < 100ms
|
|
217
|
+
|
|
218
|
+
### Accessibility
|
|
219
|
+
27. Form is keyboard navigable
|
|
220
|
+
28. Error messages are announced by screen readers
|
|
221
|
+
29. Focus moves to first error on validation failure
|
|
222
|
+
30. Loading states are communicated
|
|
223
|
+
|
|
224
|
+
### Data
|
|
225
|
+
31. User data persists in database
|
|
226
|
+
32. Session survives server restart
|
|
227
|
+
33. Logout invalidates all session tokens
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
## Step 6: Prioritize and Trim
|
|
231
|
+
|
|
232
|
+
**Must Have** (P0): 1, 2, 3, 6, 7, 10, 11, 19, 20, 31
|
|
233
|
+
**Should Have** (P1): 4, 5, 8, 9, 14, 22, 23, 24
|
|
234
|
+
**Nice to Have** (P2): Rest
|
|
235
|
+
|
|
236
|
+
Present top 10-12 as initial suggestions, offer to expand.
|
|
237
|
+
|
|
238
|
+
## Step 7: User Review
|
|
239
|
+
|
|
240
|
+
Present to user:
|
|
241
|
+
```
|
|
242
|
+
[CTX] Suggested Acceptance Criteria for S001
|
|
243
|
+
|
|
244
|
+
Based on your story "Add user authentication", I suggest these criteria:
|
|
245
|
+
|
|
246
|
+
Core (Must have):
|
|
247
|
+
✓ User can register with valid email and password
|
|
248
|
+
✓ User can log in with correct credentials
|
|
249
|
+
✓ User can log out from any page
|
|
250
|
+
✓ Invalid credentials show clear error message
|
|
251
|
+
✓ Passwords are securely hashed
|
|
252
|
+
✓ Session tokens are HTTP-only cookies
|
|
253
|
+
|
|
254
|
+
Validation:
|
|
255
|
+
✓ Email format is validated
|
|
256
|
+
✓ Password meets strength requirements
|
|
257
|
+
✓ Duplicate email registration is prevented
|
|
258
|
+
|
|
259
|
+
Security:
|
|
260
|
+
✓ Brute force protection after 5 failed attempts
|
|
261
|
+
✓ CSRF protection enabled
|
|
262
|
+
|
|
263
|
+
Options:
|
|
264
|
+
[A] Accept all (11 criteria)
|
|
265
|
+
[B] See more suggestions (+8 edge cases, performance, a11y)
|
|
266
|
+
[C] Edit manually
|
|
267
|
+
[D] Start fresh
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
## Step 8: Update PRD.json
|
|
271
|
+
|
|
272
|
+
After approval:
|
|
273
|
+
```json
|
|
274
|
+
{
|
|
275
|
+
"id": "S001",
|
|
276
|
+
"type": "feature",
|
|
277
|
+
"title": "Add user authentication",
|
|
278
|
+
"description": "...",
|
|
279
|
+
"acceptanceCriteria": [
|
|
280
|
+
{ "text": "User can register with valid email and password", "met": false },
|
|
281
|
+
{ "text": "User can log in with correct credentials", "met": false },
|
|
282
|
+
{ "text": "User can log out from any page", "met": false },
|
|
283
|
+
...
|
|
284
|
+
],
|
|
285
|
+
"passes": false
|
|
286
|
+
}
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
</process>
|
|
290
|
+
|
|
291
|
+
<feature_templates>
|
|
292
|
+
|
|
293
|
+
## Common Feature Templates
|
|
294
|
+
|
|
295
|
+
### API Endpoint
|
|
296
|
+
- Endpoint responds with correct status code
|
|
297
|
+
- Response matches schema
|
|
298
|
+
- Invalid input returns 400 with error details
|
|
299
|
+
- Unauthorized request returns 401
|
|
300
|
+
- Rate limiting returns 429
|
|
301
|
+
- Response time < 500ms
|
|
302
|
+
|
|
303
|
+
### Form/UI Component
|
|
304
|
+
- All fields are accessible via keyboard
|
|
305
|
+
- Validation errors appear inline
|
|
306
|
+
- Submit button disabled while loading
|
|
307
|
+
- Success feedback is shown
|
|
308
|
+
- Error recovery is possible
|
|
309
|
+
- Mobile responsive
|
|
310
|
+
|
|
311
|
+
### Data Model/Schema
|
|
312
|
+
- Required fields are enforced
|
|
313
|
+
- Relationships are consistent
|
|
314
|
+
- Cascade delete works correctly
|
|
315
|
+
- Unique constraints are enforced
|
|
316
|
+
- Indexes exist for query patterns
|
|
317
|
+
|
|
318
|
+
### Background Job
|
|
319
|
+
- Job completes within timeout
|
|
320
|
+
- Failure is logged with context
|
|
321
|
+
- Retry mechanism works
|
|
322
|
+
- Duplicate jobs are prevented
|
|
323
|
+
- Progress can be tracked
|
|
324
|
+
|
|
325
|
+
### Integration
|
|
326
|
+
- Connection failure is handled
|
|
327
|
+
- Rate limits are respected
|
|
328
|
+
- Retry with backoff works
|
|
329
|
+
- Timeout is configurable
|
|
330
|
+
- Credentials are secure
|
|
331
|
+
|
|
332
|
+
</feature_templates>
|
|
333
|
+
|
|
334
|
+
<output>
|
|
335
|
+
Return to orchestrator:
|
|
336
|
+
```json
|
|
337
|
+
{
|
|
338
|
+
"story_id": "S001",
|
|
339
|
+
"suggested_criteria": 12,
|
|
340
|
+
"categories": {
|
|
341
|
+
"happy_path": 5,
|
|
342
|
+
"validation": 4,
|
|
343
|
+
"error_states": 3,
|
|
344
|
+
"security": 4,
|
|
345
|
+
"performance": 3,
|
|
346
|
+
"accessibility": 3
|
|
347
|
+
},
|
|
348
|
+
"priority_breakdown": {
|
|
349
|
+
"must_have": 8,
|
|
350
|
+
"should_have": 6,
|
|
351
|
+
"nice_to_have": 8
|
|
352
|
+
},
|
|
353
|
+
"user_choice": "A",
|
|
354
|
+
"final_criteria": 11,
|
|
355
|
+
"prd_updated": true
|
|
356
|
+
}
|
|
357
|
+
```
|
|
358
|
+
</output>
|