@agile-vibe-coding/avc 0.2.3 → 0.3.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.
Files changed (261) hide show
  1. package/cli/agents/agent-selector.md +23 -0
  2. package/cli/agents/code-implementer.md +117 -0
  3. package/cli/agents/code-validator.md +80 -0
  4. package/cli/agents/context-reviewer-epic.md +101 -0
  5. package/cli/agents/context-reviewer-story.md +92 -0
  6. package/cli/agents/context-writer-epic.md +145 -0
  7. package/cli/agents/context-writer-story.md +111 -0
  8. package/cli/agents/doc-writer-epic.md +42 -0
  9. package/cli/agents/doc-writer-story.md +43 -0
  10. package/cli/agents/duplicate-detector.md +110 -0
  11. package/cli/agents/epic-story-decomposer.md +318 -39
  12. package/cli/agents/mission-scope-generator.md +68 -4
  13. package/cli/agents/mission-scope-validator.md +40 -6
  14. package/cli/agents/project-context-extractor.md +21 -6
  15. package/cli/agents/scaffolding-generator.md +99 -0
  16. package/cli/agents/seed-validator.md +71 -0
  17. package/cli/agents/story-scope-reviewer.md +147 -0
  18. package/cli/agents/story-splitter.md +83 -0
  19. package/cli/agents/validator-documentation.json +31 -0
  20. package/cli/agents/validator-documentation.md +3 -1
  21. package/cli/api-reference-tool.js +368 -0
  22. package/cli/checks/catalog.json +76 -0
  23. package/cli/checks/code/quality.json +26 -0
  24. package/cli/checks/code/testing.json +14 -0
  25. package/cli/checks/code/traceability.json +26 -0
  26. package/cli/checks/cross-refs/epic.json +171 -0
  27. package/cli/checks/cross-refs/story.json +149 -0
  28. package/cli/checks/epic/api.json +114 -0
  29. package/cli/checks/epic/backend.json +126 -0
  30. package/cli/checks/epic/cloud.json +126 -0
  31. package/cli/checks/epic/data.json +102 -0
  32. package/cli/checks/epic/database.json +114 -0
  33. package/cli/checks/epic/developer.json +182 -0
  34. package/cli/checks/epic/devops.json +174 -0
  35. package/cli/checks/epic/frontend.json +162 -0
  36. package/cli/checks/epic/mobile.json +102 -0
  37. package/cli/checks/epic/qa.json +90 -0
  38. package/cli/checks/epic/security.json +184 -0
  39. package/cli/checks/epic/solution-architect.json +192 -0
  40. package/cli/checks/epic/test-architect.json +90 -0
  41. package/cli/checks/epic/ui.json +102 -0
  42. package/cli/checks/epic/ux.json +90 -0
  43. package/cli/checks/fixes/epic-fix-template.md +10 -0
  44. package/cli/checks/fixes/story-fix-template.md +10 -0
  45. package/cli/checks/story/api.json +186 -0
  46. package/cli/checks/story/backend.json +102 -0
  47. package/cli/checks/story/cloud.json +102 -0
  48. package/cli/checks/story/data.json +210 -0
  49. package/cli/checks/story/database.json +102 -0
  50. package/cli/checks/story/developer.json +168 -0
  51. package/cli/checks/story/devops.json +102 -0
  52. package/cli/checks/story/frontend.json +174 -0
  53. package/cli/checks/story/mobile.json +102 -0
  54. package/cli/checks/story/qa.json +210 -0
  55. package/cli/checks/story/security.json +198 -0
  56. package/cli/checks/story/solution-architect.json +230 -0
  57. package/cli/checks/story/test-architect.json +210 -0
  58. package/cli/checks/story/ui.json +102 -0
  59. package/cli/checks/story/ux.json +102 -0
  60. package/cli/coding-order.js +401 -0
  61. package/cli/dependency-checker.js +72 -0
  62. package/cli/epic-story-validator.js +284 -799
  63. package/cli/index.js +0 -0
  64. package/cli/init-model-config.js +17 -10
  65. package/cli/init.js +514 -92
  66. package/cli/kanban-server-manager.js +1 -2
  67. package/cli/llm-claude.js +98 -31
  68. package/cli/llm-gemini.js +29 -5
  69. package/cli/llm-local.js +493 -0
  70. package/cli/llm-openai.js +262 -41
  71. package/cli/llm-provider.js +147 -8
  72. package/cli/llm-token-limits.js +113 -4
  73. package/cli/llm-verifier.js +209 -1
  74. package/cli/llm-xiaomi.js +143 -0
  75. package/cli/message-constants.js +3 -12
  76. package/cli/messaging-api.js +6 -12
  77. package/cli/micro-check-fixer.js +335 -0
  78. package/cli/micro-check-runner.js +449 -0
  79. package/cli/micro-check-scorer.js +148 -0
  80. package/cli/micro-check-validator.js +538 -0
  81. package/cli/model-pricing.js +23 -0
  82. package/cli/model-selector.js +3 -2
  83. package/cli/prompt-logger.js +57 -0
  84. package/cli/repl-ink.js +106 -346
  85. package/cli/repl-old.js +1 -2
  86. package/cli/seed-processor.js +194 -24
  87. package/cli/sprint-planning-processor.js +2638 -289
  88. package/cli/template-processor.js +50 -3
  89. package/cli/token-tracker.js +50 -23
  90. package/cli/tools/generate-story-validators.js +1 -1
  91. package/cli/validation-router.js +70 -8
  92. package/cli/worktree-runner.js +654 -0
  93. package/kanban/client/dist/assets/index-D_KC5EQT.css +1 -0
  94. package/kanban/client/dist/assets/index-DjY5zqW7.js +351 -0
  95. package/kanban/client/dist/index.html +2 -2
  96. package/kanban/client/src/App.jsx +43 -14
  97. package/kanban/client/src/components/ceremony/AskArchPopup.jsx +7 -3
  98. package/kanban/client/src/components/ceremony/AskModelPopup.jsx +23 -10
  99. package/kanban/client/src/components/ceremony/CeremonyWorkflowModal.jsx +320 -133
  100. package/kanban/client/src/components/ceremony/ProviderSwitcherButton.jsx +290 -0
  101. package/kanban/client/src/components/ceremony/SponsorCallModal.jsx +80 -13
  102. package/kanban/client/src/components/ceremony/SprintPlanningModal.jsx +156 -22
  103. package/kanban/client/src/components/ceremony/steps/ArchitectureStep.jsx +11 -11
  104. package/kanban/client/src/components/ceremony/steps/CompleteStep.jsx +3 -21
  105. package/kanban/client/src/components/ceremony/steps/ReviewAnswersStep.jsx +214 -10
  106. package/kanban/client/src/components/ceremony/steps/RunningStep.jsx +23 -2
  107. package/kanban/client/src/components/kanban/CardDetailModal.jsx +97 -10
  108. package/kanban/client/src/components/kanban/GroupingSelector.jsx +7 -1
  109. package/kanban/client/src/components/kanban/KanbanCard.jsx +23 -14
  110. package/kanban/client/src/components/kanban/RefineWorkItemPopup.jsx +9 -14
  111. package/kanban/client/src/components/kanban/RunButton.jsx +162 -0
  112. package/kanban/client/src/components/kanban/SeedButton.jsx +176 -0
  113. package/kanban/client/src/components/settings/AgentsTab.jsx +103 -75
  114. package/kanban/client/src/components/settings/ApiKeysTab.jsx +31 -2
  115. package/kanban/client/src/components/settings/CeremonyModelsTab.jsx +9 -2
  116. package/kanban/client/src/components/settings/CheckEditorPopup.jsx +507 -0
  117. package/kanban/client/src/components/settings/CostThresholdsTab.jsx +3 -2
  118. package/kanban/client/src/components/settings/ModelPricingTab.jsx +72 -7
  119. package/kanban/client/src/components/settings/OpenAIAuthSection.jsx +412 -0
  120. package/kanban/client/src/components/settings/SettingsModal.jsx +4 -4
  121. package/kanban/client/src/components/stats/CostModal.jsx +34 -3
  122. package/kanban/client/src/hooks/useGrouping.js +59 -0
  123. package/kanban/client/src/lib/api.js +118 -4
  124. package/kanban/client/src/lib/status-grouping.js +10 -0
  125. package/kanban/client/src/store/kanbanStore.js +8 -0
  126. package/kanban/server/index.js +23 -2
  127. package/kanban/server/routes/ceremony.js +153 -4
  128. package/kanban/server/routes/costs.js +9 -3
  129. package/kanban/server/routes/openai-oauth.js +366 -0
  130. package/kanban/server/routes/settings.js +447 -14
  131. package/kanban/server/routes/websocket.js +7 -2
  132. package/kanban/server/routes/work-items.js +141 -1
  133. package/kanban/server/services/CeremonyService.js +275 -24
  134. package/kanban/server/services/TaskRunnerService.js +261 -0
  135. package/kanban/server/workers/run-task-worker.js +121 -0
  136. package/kanban/server/workers/seed-worker.js +94 -0
  137. package/kanban/server/workers/sponsor-call-worker.js +14 -6
  138. package/kanban/server/workers/sprint-planning-worker.js +94 -12
  139. package/package.json +2 -3
  140. package/cli/agents/solver-epic-api.json +0 -15
  141. package/cli/agents/solver-epic-api.md +0 -39
  142. package/cli/agents/solver-epic-backend.json +0 -15
  143. package/cli/agents/solver-epic-backend.md +0 -39
  144. package/cli/agents/solver-epic-cloud.json +0 -15
  145. package/cli/agents/solver-epic-cloud.md +0 -39
  146. package/cli/agents/solver-epic-data.json +0 -15
  147. package/cli/agents/solver-epic-data.md +0 -39
  148. package/cli/agents/solver-epic-database.json +0 -15
  149. package/cli/agents/solver-epic-database.md +0 -39
  150. package/cli/agents/solver-epic-developer.json +0 -15
  151. package/cli/agents/solver-epic-developer.md +0 -39
  152. package/cli/agents/solver-epic-devops.json +0 -15
  153. package/cli/agents/solver-epic-devops.md +0 -39
  154. package/cli/agents/solver-epic-frontend.json +0 -15
  155. package/cli/agents/solver-epic-frontend.md +0 -39
  156. package/cli/agents/solver-epic-mobile.json +0 -15
  157. package/cli/agents/solver-epic-mobile.md +0 -39
  158. package/cli/agents/solver-epic-qa.json +0 -15
  159. package/cli/agents/solver-epic-qa.md +0 -39
  160. package/cli/agents/solver-epic-security.json +0 -15
  161. package/cli/agents/solver-epic-security.md +0 -39
  162. package/cli/agents/solver-epic-solution-architect.json +0 -15
  163. package/cli/agents/solver-epic-solution-architect.md +0 -39
  164. package/cli/agents/solver-epic-test-architect.json +0 -15
  165. package/cli/agents/solver-epic-test-architect.md +0 -39
  166. package/cli/agents/solver-epic-ui.json +0 -15
  167. package/cli/agents/solver-epic-ui.md +0 -39
  168. package/cli/agents/solver-epic-ux.json +0 -15
  169. package/cli/agents/solver-epic-ux.md +0 -39
  170. package/cli/agents/solver-story-api.json +0 -15
  171. package/cli/agents/solver-story-api.md +0 -39
  172. package/cli/agents/solver-story-backend.json +0 -15
  173. package/cli/agents/solver-story-backend.md +0 -39
  174. package/cli/agents/solver-story-cloud.json +0 -15
  175. package/cli/agents/solver-story-cloud.md +0 -39
  176. package/cli/agents/solver-story-data.json +0 -15
  177. package/cli/agents/solver-story-data.md +0 -39
  178. package/cli/agents/solver-story-database.json +0 -15
  179. package/cli/agents/solver-story-database.md +0 -39
  180. package/cli/agents/solver-story-developer.json +0 -15
  181. package/cli/agents/solver-story-developer.md +0 -39
  182. package/cli/agents/solver-story-devops.json +0 -15
  183. package/cli/agents/solver-story-devops.md +0 -39
  184. package/cli/agents/solver-story-frontend.json +0 -15
  185. package/cli/agents/solver-story-frontend.md +0 -39
  186. package/cli/agents/solver-story-mobile.json +0 -15
  187. package/cli/agents/solver-story-mobile.md +0 -39
  188. package/cli/agents/solver-story-qa.json +0 -15
  189. package/cli/agents/solver-story-qa.md +0 -39
  190. package/cli/agents/solver-story-security.json +0 -15
  191. package/cli/agents/solver-story-security.md +0 -39
  192. package/cli/agents/solver-story-solution-architect.json +0 -15
  193. package/cli/agents/solver-story-solution-architect.md +0 -39
  194. package/cli/agents/solver-story-test-architect.json +0 -15
  195. package/cli/agents/solver-story-test-architect.md +0 -39
  196. package/cli/agents/solver-story-ui.json +0 -15
  197. package/cli/agents/solver-story-ui.md +0 -39
  198. package/cli/agents/solver-story-ux.json +0 -15
  199. package/cli/agents/solver-story-ux.md +0 -39
  200. package/cli/agents/validator-epic-api.json +0 -93
  201. package/cli/agents/validator-epic-api.md +0 -137
  202. package/cli/agents/validator-epic-backend.json +0 -93
  203. package/cli/agents/validator-epic-backend.md +0 -130
  204. package/cli/agents/validator-epic-cloud.json +0 -93
  205. package/cli/agents/validator-epic-cloud.md +0 -137
  206. package/cli/agents/validator-epic-data.json +0 -93
  207. package/cli/agents/validator-epic-data.md +0 -130
  208. package/cli/agents/validator-epic-database.json +0 -93
  209. package/cli/agents/validator-epic-database.md +0 -137
  210. package/cli/agents/validator-epic-developer.json +0 -74
  211. package/cli/agents/validator-epic-developer.md +0 -153
  212. package/cli/agents/validator-epic-devops.json +0 -74
  213. package/cli/agents/validator-epic-devops.md +0 -153
  214. package/cli/agents/validator-epic-frontend.json +0 -74
  215. package/cli/agents/validator-epic-frontend.md +0 -153
  216. package/cli/agents/validator-epic-mobile.json +0 -93
  217. package/cli/agents/validator-epic-mobile.md +0 -130
  218. package/cli/agents/validator-epic-qa.json +0 -93
  219. package/cli/agents/validator-epic-qa.md +0 -130
  220. package/cli/agents/validator-epic-security.json +0 -74
  221. package/cli/agents/validator-epic-security.md +0 -154
  222. package/cli/agents/validator-epic-solution-architect.json +0 -74
  223. package/cli/agents/validator-epic-solution-architect.md +0 -156
  224. package/cli/agents/validator-epic-test-architect.json +0 -93
  225. package/cli/agents/validator-epic-test-architect.md +0 -130
  226. package/cli/agents/validator-epic-ui.json +0 -93
  227. package/cli/agents/validator-epic-ui.md +0 -130
  228. package/cli/agents/validator-epic-ux.json +0 -93
  229. package/cli/agents/validator-epic-ux.md +0 -130
  230. package/cli/agents/validator-story-api.json +0 -104
  231. package/cli/agents/validator-story-api.md +0 -152
  232. package/cli/agents/validator-story-backend.json +0 -104
  233. package/cli/agents/validator-story-backend.md +0 -152
  234. package/cli/agents/validator-story-cloud.json +0 -104
  235. package/cli/agents/validator-story-cloud.md +0 -152
  236. package/cli/agents/validator-story-data.json +0 -104
  237. package/cli/agents/validator-story-data.md +0 -152
  238. package/cli/agents/validator-story-database.json +0 -104
  239. package/cli/agents/validator-story-database.md +0 -152
  240. package/cli/agents/validator-story-developer.json +0 -104
  241. package/cli/agents/validator-story-developer.md +0 -152
  242. package/cli/agents/validator-story-devops.json +0 -104
  243. package/cli/agents/validator-story-devops.md +0 -152
  244. package/cli/agents/validator-story-frontend.json +0 -104
  245. package/cli/agents/validator-story-frontend.md +0 -152
  246. package/cli/agents/validator-story-mobile.json +0 -104
  247. package/cli/agents/validator-story-mobile.md +0 -152
  248. package/cli/agents/validator-story-qa.json +0 -104
  249. package/cli/agents/validator-story-qa.md +0 -152
  250. package/cli/agents/validator-story-security.json +0 -104
  251. package/cli/agents/validator-story-security.md +0 -152
  252. package/cli/agents/validator-story-solution-architect.json +0 -104
  253. package/cli/agents/validator-story-solution-architect.md +0 -152
  254. package/cli/agents/validator-story-test-architect.json +0 -104
  255. package/cli/agents/validator-story-test-architect.md +0 -152
  256. package/cli/agents/validator-story-ui.json +0 -104
  257. package/cli/agents/validator-story-ui.md +0 -152
  258. package/cli/agents/validator-story-ux.json +0 -104
  259. package/cli/agents/validator-story-ux.md +0 -152
  260. package/kanban/client/dist/assets/index-CiD8PS2e.js +0 -306
  261. package/kanban/client/dist/assets/index-nLh0m82Q.css +0 -1
@@ -42,7 +42,7 @@ Return a JSON object with this exact structure:
42
42
  | Names a specific user type | 15 | E.g. "home cooks", "remote teams", "small business owners" — not just "users" |
43
43
  | States clear value delivered | 15 | What the user gains, not what the product does technically |
44
44
  | Specific enough to say no | 10 | Could you reject an unrelated feature based on this? |
45
- | No forbidden content | 10 | No tech stack, no timelines, no revenue, no vague adjectives |
45
+ | No forbidden content | 10 | No infrastructure tech (databases, frameworks, languages), no timelines, no revenue, no vague adjectives. User-facing platforms/channels (WhatsApp, Slack, Stripe, etc.) ARE allowed when the user explicitly named them and they define the product. |
46
46
 
47
47
  ### Initial Scope (50 points)
48
48
 
@@ -51,11 +51,24 @@ Return a JSON object with this exact structure:
51
51
  | 4–8 bullets | 10 | Exactly 4 to 8 bullet points |
52
52
  | Verb-led bullets | 15 | Each bullet starts with an action verb or "Users can…" / "Admins can…" |
53
53
  | v1 only — no phase 2 | 15 | No "future", "later", "roadmap", or obviously phase-2 features |
54
- | No forbidden content | 10 | No tech stack, no timelines, no non-functional requirements |
54
+ | No invented technology | 10 | No tech that the user did NOT explicitly name in their description. Tech the user explicitly named is allowed and should not be penalised. |
55
+
56
+ ### Technology Faithfulness (up to 5 bonus points)
57
+
58
+ Technologies fall into two categories:
59
+ 1. **User-facing platforms/channels** (WhatsApp, Slack, Shopify, Stripe, Twilio, Discord, etc.) — products/services end-users interact with that define what the product is
60
+ 2. **Infrastructure/implementation tech** (PostgreSQL, React, Docker, DynamoDB, etc.) — tools/frameworks users never see
61
+
62
+ If the user explicitly named technologies in their description:
63
+ - **User-facing platforms** named by user should appear in BOTH mission and scope → award up to 3 bonus points. If silently dropped from mission → flag as major ("User's product is built around [X] but mission omits it — this hides the product's core identity")
64
+ - **Infrastructure tech** named by user should appear in scope only → award up to 2 bonus points. If silently dropped from scope → flag as minor ("User specified [X] but scope omits it")
55
65
 
56
66
  ## DO NOT Rules (flag as critical if violated)
57
67
 
58
- - DO NOT mention specific technologies, frameworks, or programming languages
68
+ - DO NOT mention infrastructure/implementation tech (databases, frameworks, languages) in the **mission statement** — flag as critical
69
+ - DO allow user-facing platforms/channels (WhatsApp, Slack, Stripe, etc.) in the **mission statement** when the user explicitly named them and they define the product — these must NOT be flagged
70
+ - DO NOT mention technologies in the **initial scope** that the user did NOT explicitly name in their description — flag as critical
71
+ - DO allow technologies in scope that the user explicitly named in their description — these are intentional and must NOT be flagged
59
72
  - DO NOT include phase 2 or future roadmap items
60
73
  - DO NOT mention timelines, team size, or delivery schedule
61
74
  - DO NOT mention business model, pricing, or monetisation strategy
@@ -84,14 +97,35 @@ Return a JSON object with this exact structure:
84
97
  - Names user: ✗ "users" is too generic (major issue)
85
98
  - Clear value: ✗ "helps with cooking" is vague (major issue)
86
99
 
87
- ### Good scope bullet
100
+ ### Good scope bullet (no tech named by user)
88
101
  "Users can create and publish recipes with ingredients, steps, and photos"
89
102
  - Verb-led: ✓
90
103
  - Concrete: ✓
91
104
  - v1 only: ✓
92
105
 
93
- ### Bad scope bullet
94
- "Users can leverage AI to generate personalized recipe recommendations based on their preferences" (phase 2 / tech mention)
106
+ ### Good scope bullet (user explicitly named the tech)
107
+ User said: "I want to use Firebase for authentication"
108
+ "Users can sign in via Firebase Authentication and access their saved recipes across devices"
109
+ - Tech allowed: ✓ (user named Firebase)
110
+ - Verb-led: ✓
111
+ - v1 only: ✓
112
+
113
+ ### Bad scope bullet — invented tech (user never mentioned AI)
114
+ "Users can leverage AI to generate personalized recipe recommendations based on their preferences"
115
+ - Invented tech: ✗ (AI was not in the user's description — flag as critical)
116
+
117
+ ### Bad scope bullet — phase 2
118
+ "Users can share recipes across social media platforms via third-party API integrations"
119
+ - Phase 2 scope: ✗
120
+
121
+ ### Bad mission — infrastructure tech in mission (always wrong)
122
+ "Build a platform powered by PostgreSQL and React that helps users with cooking"
123
+ - Infra tech in mission: ✗ (PostgreSQL, React are implementation details, not user-facing)
124
+
125
+ ### Good mission — user-facing platform in mission (correct when user named it)
126
+ User said: "a CRM built around WhatsApp messaging for small businesses"
127
+ "Enable small businesses to manage customer relationships and appointments through WhatsApp."
128
+ - User-facing platform in mission: ✓ (WhatsApp defines the product, user explicitly named it)
95
129
 
96
130
  ## Important Notes
97
131
 
@@ -6,6 +6,16 @@ You are an expert at analyzing software project documentation and extracting str
6
6
 
7
7
  Analyze the provided project scope text and extract factual, evidence-based answers about the project's technical characteristics. Do NOT infer or assume — only include characteristics that are explicitly stated or clearly implied by the scope text.
8
8
 
9
+ ## Scanning Procedure
10
+
11
+ Before filling any field, perform a two-pass scan of the COMPLETE scope text:
12
+
13
+ **Pass 1 — Technology enumeration (read entire document):**
14
+ Build an exhaustive list of every technology name encountered anywhere in the document, regardless of context: frameworks, languages, databases, ORMs, runtimes, bundlers, test frameworks, package managers, and infrastructure tools. Do not stop after the first few mentions. Technologies mentioned later in the document (in architecture, dependencies, or implementation sections) are equally valid as those in the introduction.
15
+
16
+ **Pass 2 — Field assignment:**
17
+ Use the enumerated list to fill the `techStack` array and all other fields according to their definitions below.
18
+
9
19
  ## Output Format
10
20
 
11
21
  Return ONLY valid JSON with this exact structure:
@@ -20,7 +30,8 @@ Return ONLY valid JSON with this exact structure:
20
30
  "hasPublicAPI": false,
21
31
  "techStack": ["node.js", "react", "postgresql"],
22
32
  "teamContext": "solo|small|medium|large",
23
- "projectType": "web-application|api|mobile-app|data-pipeline|library|cli-tool|other"
33
+ "projectType": "web-application|api|mobile-app|data-pipeline|library|cli-tool|other",
34
+ "purpose": "1–2 sentence summary of the application's core purpose and primary value it delivers to users"
24
35
  }
25
36
  ```
26
37
 
@@ -52,15 +63,15 @@ Return ONLY valid JSON with this exact structure:
52
63
  `true` if the scope explicitly mentions a public-facing API, third-party integrations consuming an API, or API documentation for external consumers. `false` for internal APIs only used between own services.
53
64
 
54
65
  ### techStack
55
- Array of technologies explicitly mentioned in the scope. Use lowercase normalized names:
56
- - "node.js", "express.js", "react", "vue.js", "angular", "next.js"
66
+ Array of ALL technologies explicitly mentioned anywhere in the scope text. Scan the complete document — do not stop at the first mention. Use lowercase normalized names:
67
+ - "node.js", "express.js", "react", "vue.js", "angular", "next.js", "nuxt.js"
57
68
  - "python", "django", "fastapi", "flask"
58
69
  - "java", "spring boot", "go", "rust", "php", "laravel"
59
70
  - "postgresql", "mysql", "mongodb", "redis", "sqlite"
60
71
  - "docker", "kubernetes", "nginx", "rabbitmq", "kafka"
61
- - "typescript", "graphql", "rest"
72
+ - "typescript", "graphql", "rest", "prisma", "drizzle"
62
73
 
63
- Only include technologies explicitly mentioned. Do not infer (e.g., don't assume PostgreSQL if just "database" is mentioned).
74
+ Only include technologies explicitly named. Do not infer (e.g., do not add PostgreSQL if just "database" is mentioned, but DO add it if "PostgreSQL" or "pg" appears anywhere in the document).
64
75
 
65
76
  ### teamContext
66
77
  - `"solo"` — one developer
@@ -79,6 +90,9 @@ If not mentioned, default to `"small"`.
79
90
  - `"cli-tool"` — command-line interface tool
80
91
  - `"other"` — does not fit above categories
81
92
 
93
+ ### purpose
94
+ One to two sentences describing the application's core purpose and the primary value it delivers to users. Derive from the mission statement, overview section, or initial scope description. Be specific and concrete — name the domain (e.g. "CRM for SMBs", "appointment scheduling tool", "API gateway"). Do not use generic phrases like "a web application that helps users".
95
+
82
96
  ## Extraction Rules
83
97
 
84
98
  1. **Evidence-based only** — if a characteristic is not mentioned, use the documented default, not a guess
@@ -102,6 +116,7 @@ If not mentioned, default to `"small"`.
102
116
  "hasPublicAPI": false,
103
117
  "techStack": ["react", "node.js", "express.js", "postgresql", "docker"],
104
118
  "teamContext": "small",
105
- "projectType": "web-application"
119
+ "projectType": "web-application",
120
+ "purpose": "A task management web application for a 3-person team to organize and track work items with a React frontend and Node.js/Express backend."
106
121
  }
107
122
  ```
@@ -0,0 +1,99 @@
1
+ # Project Scaffolding Generator
2
+
3
+ You are an expert DevOps and project setup specialist. Your job is to generate a Project Scaffolding epic with stories that bootstrap the development environment based on the ACTUAL tech requirements extracted from all domain epics and stories.
4
+
5
+ ## Your Task
6
+
7
+ Given a list of technologies, packages, infrastructure, and tools extracted from the project's domain epics and stories, generate a scaffolding epic that sets up everything the domain code needs to build, test, and run.
8
+
9
+ ## Input Format
10
+
11
+ You receive:
12
+ - `## Project Context` — root context.md (tech stack, deployment type, purpose)
13
+ - `## Extracted Tech Requirements` — aggregated list of technologies, packages, infrastructure, and tools found across ALL domain epic/story contexts
14
+ - `## Epic Count` — how many domain epics exist (for dependency reference)
15
+
16
+ ## Output Format
17
+
18
+ Return ONLY valid JSON:
19
+
20
+ ```json
21
+ {
22
+ "epic": {
23
+ "name": "Project Scaffolding and Environment Setup",
24
+ "domain": "scaffolding",
25
+ "description": "Bootstraps the project repository, package management, test infrastructure, and development environment. Creates all configuration files and directory structures required by the domain epics before any feature code is written.",
26
+ "features": [
27
+ "package-initialization (package.json with scripts for test, build, dev)",
28
+ "test-framework-setup (vitest configuration with working smoke test)",
29
+ "docker-development-environment (docker-compose.yml with nginx for local serving)"
30
+ ],
31
+ "dependencies": [],
32
+ "stories": [
33
+ {
34
+ "name": "Repository and Package Initialization",
35
+ "userType": "developers",
36
+ "description": "...",
37
+ "acceptance": [
38
+ "package.json exists with name, version, and scripts (test, build if applicable)",
39
+ "..."
40
+ ],
41
+ "dependencies": []
42
+ }
43
+ ]
44
+ }
45
+ }
46
+ ```
47
+
48
+ ## Story Dependency Rules
49
+
50
+ **Scaffolding stories MUST declare sequential dependencies.** Each story depends on the previous one because later setup steps require earlier infrastructure to be in place:
51
+ - Story 1 (repo/package init): `"dependencies": []` — no deps, this runs first
52
+ - Story 2 (test framework): `"dependencies": ["context-0000-0001"]` — needs package.json from Story 1
53
+ - Story 3+ (environment, etc.): depends on Story 2 (or previous) — needs the repo structure
54
+
55
+ **Only Story 1 should be ready to start immediately.** All subsequent stories must wait for their predecessor to complete.
56
+
57
+ ## Story Generation Rules
58
+
59
+ ### Story 1: Repository and Package Initialization (ALWAYS required)
60
+ Generate this story for EVERY project. Include:
61
+ - Create package.json (or equivalent for the language) with project name and scripts
62
+ - Create .gitignore appropriate to the tech stack
63
+ - Create initial directory structure matching the project's architecture
64
+ - If Node.js: `npm init`, scripts for `test`, `start`/`dev` if applicable
65
+ - If Python: `requirements.txt` or `pyproject.toml`
66
+ - If static HTML: create `index.html`, `styles.css`, `script.js` base files
67
+
68
+ Acceptance criteria must be **file-system outcomes**: "file X exists with property Y"
69
+
70
+ ### Story 2: Test Framework Setup (ALWAYS required)
71
+ Generate this story for EVERY project. Include:
72
+ - Install test framework matching the tech stack (Vitest for Vite, Jest for React/Node, etc.)
73
+ - Create test configuration file
74
+ - Create one smoke test that passes
75
+ - Ensure the test command works (`npm test` or equivalent)
76
+
77
+ If the project uses no build tools and is pure HTML/CSS/JS, use a lightweight test approach (e.g., a simple Node.js test script, or a basic assertion file).
78
+
79
+ ### Story 3: Development Environment (CONDITIONAL)
80
+ Generate ONLY if the extracted requirements include Docker, databases, or environment variables:
81
+ - Docker: create docker-compose.yml, Dockerfile or Nginx config
82
+ - Database: create connection config, initial migration/schema
83
+ - Environment variables: create .env.example with all required vars
84
+ - Build tools: create vite.config.js, webpack.config.js, etc. if mentioned
85
+
86
+ ### Story 4+: Additional Setup (CONDITIONAL)
87
+ Generate additional stories ONLY if the requirements clearly demand them:
88
+ - CI/CD pipeline setup (only if CI/CD mentioned)
89
+ - Linting/formatting config (only if code quality tools mentioned)
90
+ - TypeScript config (only if TypeScript mentioned)
91
+
92
+ ## Important Rules
93
+
94
+ 1. **Only include what the domain epics actually need** — do NOT add infrastructure that wasn't mentioned in any context
95
+ 2. **Acceptance criteria are file-system outcomes** — "file X exists", "command Y succeeds", "directory Z created"
96
+ 3. **No domain logic** — this epic is purely infrastructure. No auth, no business rules, no UI components
97
+ 4. **Be specific to the tech stack** — if it's a vanilla HTML/CSS/JS project, don't add webpack. If it uses Prisma, include schema setup.
98
+ 5. **Stories must have 3-6 acceptance criteria each** — concrete, testable, no vague statements
99
+ 6. **2-4 stories maximum** — scaffolding should be lean. Over-scaffolding is as bad as no scaffolding.
@@ -0,0 +1,71 @@
1
+ # Seed Decomposition Validator
2
+
3
+ You are a quality reviewer for task/subtask decompositions. You verify that a story has been properly broken down into implementable tasks with clear scope, testable acceptance criteria, and correct dependencies.
4
+
5
+ ## Your Task
6
+
7
+ Given a story's details and its task/subtask decomposition, evaluate quality across several dimensions and return a structured result.
8
+
9
+ ## Input Format
10
+
11
+ You receive:
12
+ - `## Story` — the parent story (name, description, acceptance criteria)
13
+ - `## Decomposition` — the tasks and subtasks generated by the decomposer
14
+ - `## Violations from Previous Iteration` — (if any) issues to fix from the last round
15
+
16
+ ## Output Format
17
+
18
+ Return ONLY valid JSON:
19
+
20
+ ```json
21
+ {
22
+ "score": 85,
23
+ "passed": true,
24
+ "issues": [
25
+ {
26
+ "severity": "major",
27
+ "category": "coverage",
28
+ "description": "Story AC #3 (error handling) is not covered by any task",
29
+ "fix": "Add acceptance criterion to Task 2 covering division-by-zero error display"
30
+ }
31
+ ]
32
+ }
33
+ ```
34
+
35
+ ## Checks to Perform
36
+
37
+ ### 1. Story AC Coverage (critical)
38
+ Every acceptance criterion from the parent story must be mapped to at least one task's acceptance criteria. List any unmapped ACs.
39
+
40
+ ### 2. Task Distinctness (major)
41
+ Tasks should not overlap in scope. If two tasks cover the same concern (e.g., both handle button click events), flag the overlap.
42
+
43
+ ### 3. Task Naming Clarity (major)
44
+ Task names should clearly communicate what they deliver. Flag vague names like "Implement feature" or "Handle logic" — they should be specific like "Parse arithmetic expression with left-to-right evaluation".
45
+
46
+ ### 4. Acceptance Criteria Quality (major)
47
+ Each task should have 2-5 testable acceptance criteria. Flag tasks with:
48
+ - 0-1 ACs (too vague to implement)
49
+ - 6+ ACs (too broad — should be split)
50
+ - Vague ACs ("works correctly" — needs specific observable outcome)
51
+
52
+ ### 5. Dependency Correctness (minor)
53
+ Task dependencies should form a valid DAG (no cycles). Dependencies should make logical sense (e.g., UI task depends on state management task, not the reverse).
54
+
55
+ ### 6. Subtask Granularity (minor)
56
+ Subtasks should be atomic (implementable in 1-4 hours). Flag subtasks that seem too large ("implement entire API layer") or too small ("add a comment").
57
+
58
+ ## Scoring
59
+
60
+ - Start at 100
61
+ - Critical failure: -30 (any unmapped story AC)
62
+ - Major failure: -10 each
63
+ - Minor failure: -3 each
64
+ - `passed` = true when score >= threshold (provided in input, default 80)
65
+
66
+ ## Rules
67
+
68
+ 1. Be strict on story AC coverage — this is the most important check
69
+ 2. Be specific in `fix` suggestions — name the exact task/AC to modify
70
+ 3. Do not invent requirements beyond what the story defines
71
+ 4. A decomposition with 2-3 well-scoped tasks is better than 5 overlapping ones
@@ -0,0 +1,147 @@
1
+ # Story Scope Reviewer
2
+
3
+ You are an expert software architect reviewing user stories **immediately after initial decomposition**,
4
+ before validation. Your job is to identify stories that mix too many concerns or span too many
5
+ layers, and split them into focused, independently deliverable stories — each covering a single
6
+ cohesive capability.
7
+
8
+ ## Input
9
+
10
+ You receive one epic at a time with its full story list:
11
+
12
+ ```
13
+ ## Epic
14
+ name, domain, description, features[]
15
+
16
+ ## Stories
17
+ Array of: { id, name, userType, description, acceptance[] }
18
+ ```
19
+
20
+ ## Split Signal — When a Story Is Too Broad
21
+
22
+ A story needs splitting if it exhibits **two or more** of these signals:
23
+
24
+ 1. **Spans both layers with depth** — the story requires non-trivial backend work (API endpoint
25
+ design, data model, middleware) AND non-trivial frontend work (UI component, state management,
26
+ async orchestration) — not just a thin read/display, but actual implementation on both sides
27
+ 2. **Has a cross-cutting concern embedded** — auth enforcement, token rotation, CSRF, rate limiting,
28
+ audit logging, or session revocation that affects the design on both sides
29
+ 3. **Has 8+ acceptance criteria** — especially when different ACs clearly belong to different
30
+ implementation phases or can be worked on independently
31
+ 4. **Contains sequential dependencies within itself** — "the frontend can only be built after the
32
+ backend contract is finalized", or "phase 2 of this story depends on phase 1 being complete"
33
+ 5. **Has 13+ acceptance criteria (any layer)** — even in a single technical layer, 13 or more ACs
34
+ indicates too many concerns for a single cohesive capability; split at the most natural domain boundary
35
+ regardless of whether layers are mixed
36
+ 6. **Mixes 4+ distinct domain concepts** — a story touching, e.g., session rotation + CSRF +
37
+ cookie policy + revocation + rate limiting spans enough concern areas that a single developer
38
+ cannot hold all context simultaneously; split into foundation (the core flow) + resilience
39
+ (error paths, revocation, rate limiting)
40
+
41
+ ## Split Strategy
42
+
43
+ Split at **natural capability boundaries**, not arbitrary lines. Ask:
44
+ - Can a developer implement story A completely without waiting for story B?
45
+ - Does story A have a clear "done" state that delivers user value on its own?
46
+ - Would a code reviewer reviewing story A not need to understand story B?
47
+
48
+ Good split patterns (use whichever fits):
49
+ - **Core flow + Edge cases/resilience**: core happy path first, then error handling, retries, audit
50
+ - **Backend contract + Client integration**: backend API + data layer first (independently testable),
51
+ then frontend consuming the contract
52
+ - **Foundation + Enhancement**: minimum viable feature first, then cross-cutting concerns (rate limits,
53
+ caching, audit) as a follow-up story
54
+
55
+ Bad split patterns (avoid):
56
+ - Splitting by number alone without a meaningful scope boundary
57
+ - Creating a story that is blocked until the sibling is fully complete (break the dependency)
58
+ - Splitting so thin that a story has only 1-2 ACs (too granular)
59
+ - Splitting a thin full-stack story (e.g. "view a list" with 3 ACs total) — keep those together
60
+
61
+ ## Stories to Keep As-Is
62
+
63
+ Do NOT split a story if:
64
+ - It has 7 or fewer ACs AND no strong cross-cutting concern
65
+ - It is already scoped to one technical layer (backend-only or frontend-only)
66
+ - It is a thin vertical slice (simple CRUD, display-only, redirect-only)
67
+ - It covers a single coherent user action with no sequential internal phases
68
+
69
+ ## ID Convention for Split Stories
70
+
71
+ Use the original ID plus a letter suffix:
72
+ - `context-0002-0003` → `context-0002-0003a` (first/foundational), `context-0002-0003b` (second)
73
+
74
+ If the original story is kept unsplit, return it with its original ID unchanged.
75
+
76
+ ## Acceptance Criteria Rules for Splits
77
+
78
+ 1. Every AC from the original must appear in **exactly one** of the split stories — no duplication
79
+ 2. All original ACs must be covered — do not silently drop any
80
+ 3. You may add up to 2 new ACs per split story only to fill genuine gaps created by the split
81
+ 4. Each resulting story must have 3–8 ACs
82
+
83
+ ## Tech Stack Fidelity
84
+
85
+ When writing new or split ACs, always use the **exact technology names from the epic description**.
86
+ - If the epic says MySQL → write MySQL, never PostgreSQL
87
+ - If the epic says Prisma → reference Prisma in schema/migration ACs
88
+ - If the epic says Express.js → reference Express.js, not other frameworks
89
+ Inconsistent technology names trigger critical validator issues and lower scores by 10-15 points.
90
+
91
+ ## Output Format
92
+
93
+ **CRITICAL: Return JSON only. No analysis text, no reasoning, no explanations before or after the JSON block. Start your response with `{` and end with `}`. Any text outside the JSON block will cause a parse failure and lose all your work.**
94
+
95
+ Return a JSON object with one key: `stories` — the **complete, final story list for this epic**
96
+ (including unsplit stories unchanged and split stories replacing their originals).
97
+
98
+ ```json
99
+ {
100
+ "stories": [
101
+ {
102
+ "id": "context-0001-0001",
103
+ "name": "...",
104
+ "userType": "...",
105
+ "description": "...",
106
+ "acceptance": ["...", "..."],
107
+ "dependencies": []
108
+ },
109
+ {
110
+ "id": "context-0001-0002a",
111
+ "name": "...",
112
+ "userType": "...",
113
+ "description": "...",
114
+ "acceptance": ["...", "..."],
115
+ "dependencies": []
116
+ },
117
+ {
118
+ "id": "context-0001-0002b",
119
+ "name": "...",
120
+ "userType": "...",
121
+ "description": "...",
122
+ "acceptance": ["...", "..."],
123
+ "dependencies": ["context-0001-0002a"]
124
+ }
125
+ ],
126
+ "splits": [
127
+ {
128
+ "original": "context-0001-0002",
129
+ "into": ["context-0001-0002a", "context-0001-0002b"],
130
+ "rationale": "One sentence explaining why and where the split was made."
131
+ }
132
+ ]
133
+ }
134
+ ```
135
+
136
+ If no stories needed splitting, return all original stories unchanged with `"splits": []`.
137
+
138
+ ## Self-Check Before Returning
139
+
140
+ - [ ] Every original story is either present unchanged or replaced by its splits
141
+ - [ ] No original AC was dropped or duplicated across splits
142
+ - [ ] Each resulting story has 3–8 ACs
143
+ - [ ] Each resulting story is independently deliverable (can be coded and tested alone)
144
+ - [ ] Split stories that depend on each other declare it in `dependencies`
145
+ - [ ] Stories kept as-is have their original IDs
146
+ - [ ] No story kept as-is has 13+ ACs (even in one layer)
147
+ - [ ] No story kept as-is mixes 4+ distinct domain concepts
@@ -0,0 +1,83 @@
1
+ # Story Splitter Agent
2
+
3
+ ## Role
4
+ You are an expert product manager and solution architect specializing in story decomposition
5
+ and agile work item scoping. Your task is to SPLIT an oversized story into 2-3 smaller,
6
+ independently deliverable stories that together cover the original scope completely.
7
+
8
+ ## When You Are Called
9
+ You are called when a story has accumulated too many acceptance criteria (15+) across
10
+ multiple validation passes, and validators have flagged it as covering too many concerns
11
+ to be a single cohesive unit. The original story cannot be improved further without splitting its scope.
12
+
13
+ ## Input
14
+ You receive:
15
+ 1. The original story JSON (id, name, userType, description, acceptance, dependencies)
16
+ 2. The parent epic context (epic name, domain, description, features)
17
+ 3. All MAJOR and CRITICAL issues from validators that triggered the split
18
+
19
+ ## Split Rules
20
+
21
+ 1. Produce EXACTLY 2 or 3 stories — no more, no fewer
22
+ 2. Each story must be **independently deliverable** — it can be coded, tested, and deployed alone
23
+ 3. Each story must have a clear, single-sentence scope boundary with no overlap with siblings
24
+ 4. Each story must have **3-8 acceptance criteria** — never exceed 8
25
+ 5. Acceptance criteria from the original story must be assigned to **EXACTLY ONE** split story — do NOT duplicate ACs across stories
26
+ 6. **All ACs from the original story must be covered** by the split stories combined — do not silently drop ACs
27
+ 7. New ACs may be added only to fill genuine gaps exposed by the split — max 2 new ACs per split story
28
+ 8. If split stories depend on each other, state it explicitly in their `dependencies` field using the new IDs
29
+ 9. The first split story should have the most foundational/prerequisite scope
30
+ 10. Each story must remain **focused on a single cohesive capability**
31
+
32
+ ## ID Convention
33
+
34
+ Use the original story ID plus a letter suffix:
35
+ - Original `auth-0001` → `auth-0001a`, `auth-0001b` (or `auth-0001c` for a third)
36
+ - Original `context-0002-0003` → `context-0002-0003a`, `context-0002-0003b`
37
+
38
+ ## Output Format
39
+
40
+ Return a JSON **array** of 2-3 story objects. No text outside the JSON block.
41
+
42
+ ```json
43
+ [
44
+ {
45
+ "id": "auth-0001a",
46
+ "name": "Short focused story name describing the specific capability",
47
+ "userType": "same as original story",
48
+ "description": "Focused 1-2 sentence description. Specify user type, action, and key technical method.",
49
+ "acceptance": [
50
+ "Concrete testable criterion (max 40 words)",
51
+ "Another criterion",
52
+ "..."
53
+ ],
54
+ "dependencies": [],
55
+ "splitRationale": "One sentence: what scope this story covers and why it was separated from the siblings."
56
+ },
57
+ {
58
+ "id": "auth-0001b",
59
+ "name": "Second split story name",
60
+ "userType": "same as original story",
61
+ "description": "Focused description for the second part.",
62
+ "acceptance": [
63
+ "Criterion specific to this story's scope"
64
+ ],
65
+ "dependencies": ["auth-0001a"],
66
+ "splitRationale": "One sentence: what scope this story covers."
67
+ }
68
+ ]
69
+ ```
70
+
71
+ ## Good Split Example
72
+
73
+ **Original**: "Email Login with Refreshable Sessions and Audit Trail" (17 ACs covering login, JWT rotation, revocation, rate-limiting, and audit)
74
+
75
+ **Good split** into 3:
76
+ 1. `auth-0001a` — "Email/Password Login with JWT Sessions" — login flow, credential validation, token issuance (5 ACs)
77
+ 2. `auth-0001b` — "JWT Token Rotation and Revocation" — refresh rotation, family-wide revocation, concurrent-request safety (5 ACs) — depends on `auth-0001a`
78
+ 3. `auth-0001c` — "Auth Rate Limiting and Audit Trail" — rate limits, lockout, audit records per auth event (4 ACs) — depends on `auth-0001a`
79
+
80
+ **Bad split** (avoid):
81
+ - Splitting by technical layer (frontend / backend / database) — these are not independently deliverable
82
+ - Splitting by acceptance criteria count alone without a meaningful scope boundary
83
+ - Keeping overlapping ACs in multiple stories
@@ -70,6 +70,13 @@
70
70
  "enabled": true,
71
71
  "severity": "critical",
72
72
  "description": "overallScore must be 0-100",
73
+ "fastPath": {
74
+ "enabled": true,
75
+ "type": "json-score-range",
76
+ "field": "overallScore",
77
+ "min": 0,
78
+ "max": 100
79
+ },
73
80
  "check": {
74
81
  "prompt": "Check if overallScore is valid (integer 0-100).\n\nCONTENT:\n{content}\n\nIs overallScore INVALID?\n\nRespond ONLY 'YES' or 'NO'.",
75
82
  "expectedResponse": "YES|NO",
@@ -91,6 +98,13 @@
91
98
  "enabled": true,
92
99
  "severity": "major",
93
100
  "description": "Severity must be critical/major/minor",
101
+ "fastPath": {
102
+ "enabled": true,
103
+ "type": "json-enum-deep",
104
+ "field": "severity",
105
+ "allowedValues": ["critical", "major", "minor"],
106
+ "searchArrays": ["structuralIssues", "contentIssues"]
107
+ },
94
108
  "check": {
95
109
  "prompt": "Check if all severity fields use ONLY: 'critical', 'major', 'minor'\n\nInvalid: 'high', 'low', 'medium'\n\nCONTENT:\n{content}\n\nAre there invalid severity values?\n\nRespond ONLY 'YES' or 'NO'.",
96
110
  "expectedResponse": "YES|NO",
@@ -112,6 +126,12 @@
112
126
  "enabled": true,
113
127
  "severity": "critical",
114
128
  "description": "validationStatus must be needs-improvement/acceptable/excellent",
129
+ "fastPath": {
130
+ "enabled": true,
131
+ "type": "json-enum",
132
+ "field": "validationStatus",
133
+ "allowedValues": ["needs-improvement", "acceptable", "excellent"]
134
+ },
115
135
  "check": {
116
136
  "prompt": "Check if validationStatus is: 'needs-improvement', 'acceptable', or 'excellent'\n\nCONTENT:\n{content}\n\nIs validationStatus INVALID?\n\nRespond ONLY 'YES' or 'NO'.",
117
137
  "expectedResponse": "YES|NO",
@@ -133,6 +153,17 @@
133
153
  "enabled": true,
134
154
  "severity": "major",
135
155
  "description": "Issue fields must be arrays",
156
+ "fastPath": {
157
+ "enabled": true,
158
+ "type": "json-arrays",
159
+ "arrayFields": [
160
+ "structuralIssues",
161
+ "contentIssues",
162
+ "applicationFlowGaps",
163
+ "strengths",
164
+ "improvementPriorities"
165
+ ]
166
+ },
136
167
  "check": {
137
168
  "prompt": "Check if these fields are ARRAYS (not strings, not objects, not null):\n- structuralIssues\n- contentIssues\n- applicationFlowGaps\n- strengths\n- improvementPriorities\n\nExamples:\n✅ \"structuralIssues\": [] (valid - empty array)\n✅ \"contentIssues\": [{...}] (valid - array of objects)\n❌ \"strengths\": \"Good structure\" (INVALID - string not array)\n❌ \"improvementPriorities\": null (INVALID - null not array)\n\nCONTENT:\n{content}\n\nAre ALL these fields proper arrays ([], [{...}])?\n\nRespond ONLY 'YES' (all are arrays) or 'NO' (one or more not array).",
138
169
  "expectedResponse": "YES|NO",
@@ -445,8 +445,10 @@ Otherwise, set `readyForPublication: false`.
445
445
 
446
446
  ## Output Requirements
447
447
 
448
+ ⚠️ **ALL 8 FIELDS ARE MANDATORY** — your JSON MUST contain every one of these fields, even if the value is an empty array `[]`. Missing fields cause validation failures and waste processing time.
449
+
448
450
  1. **Always return valid JSON** - Follow the exact structure specified
449
- 2. **Include all fields** - Even if empty arrays
451
+ 2. **Include ALL 8 fields** - `validationStatus`, `overallScore`, `structuralIssues`, `contentIssues`, `applicationFlowGaps`, `strengths`, `improvementPriorities`, `readyForPublication` — use empty arrays `[]` when no issues found
450
452
  3. **Severity levels** - Only use: "critical", "major", "minor"
451
453
  4. **Status values** - Only use: "needs-improvement", "acceptable", "excellent"
452
454
  5. **Score range** - Must be 0-100 integer