@agile-vibe-coding/avc 0.1.1 → 0.2.3

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 (289) hide show
  1. package/cli/agent-loader.js +21 -0
  2. package/cli/agents/agent-selector.md +129 -0
  3. package/cli/agents/architecture-recommender.md +418 -0
  4. package/cli/agents/database-deep-dive.md +470 -0
  5. package/cli/agents/database-recommender.md +634 -0
  6. package/cli/agents/doc-distributor.md +176 -0
  7. package/cli/agents/documentation-updater.md +203 -0
  8. package/cli/agents/epic-story-decomposer.md +280 -0
  9. package/cli/agents/feature-context-generator.md +91 -0
  10. package/cli/agents/gap-checker-epic.md +52 -0
  11. package/cli/agents/impact-checker-story.md +51 -0
  12. package/cli/agents/migration-guide-generator.md +305 -0
  13. package/cli/agents/mission-scope-generator.md +79 -0
  14. package/cli/agents/mission-scope-validator.md +112 -0
  15. package/cli/agents/project-context-extractor.md +107 -0
  16. package/cli/agents/project-documentation-creator.json +226 -0
  17. package/cli/agents/project-documentation-creator.md +595 -0
  18. package/cli/agents/question-prefiller.md +269 -0
  19. package/cli/agents/refiner-epic.md +39 -0
  20. package/cli/agents/refiner-story.md +42 -0
  21. package/cli/agents/solver-epic-api.json +15 -0
  22. package/cli/agents/solver-epic-api.md +39 -0
  23. package/cli/agents/solver-epic-backend.json +15 -0
  24. package/cli/agents/solver-epic-backend.md +39 -0
  25. package/cli/agents/solver-epic-cloud.json +15 -0
  26. package/cli/agents/solver-epic-cloud.md +39 -0
  27. package/cli/agents/solver-epic-data.json +15 -0
  28. package/cli/agents/solver-epic-data.md +39 -0
  29. package/cli/agents/solver-epic-database.json +15 -0
  30. package/cli/agents/solver-epic-database.md +39 -0
  31. package/cli/agents/solver-epic-developer.json +15 -0
  32. package/cli/agents/solver-epic-developer.md +39 -0
  33. package/cli/agents/solver-epic-devops.json +15 -0
  34. package/cli/agents/solver-epic-devops.md +39 -0
  35. package/cli/agents/solver-epic-frontend.json +15 -0
  36. package/cli/agents/solver-epic-frontend.md +39 -0
  37. package/cli/agents/solver-epic-mobile.json +15 -0
  38. package/cli/agents/solver-epic-mobile.md +39 -0
  39. package/cli/agents/solver-epic-qa.json +15 -0
  40. package/cli/agents/solver-epic-qa.md +39 -0
  41. package/cli/agents/solver-epic-security.json +15 -0
  42. package/cli/agents/solver-epic-security.md +39 -0
  43. package/cli/agents/solver-epic-solution-architect.json +15 -0
  44. package/cli/agents/solver-epic-solution-architect.md +39 -0
  45. package/cli/agents/solver-epic-test-architect.json +15 -0
  46. package/cli/agents/solver-epic-test-architect.md +39 -0
  47. package/cli/agents/solver-epic-ui.json +15 -0
  48. package/cli/agents/solver-epic-ui.md +39 -0
  49. package/cli/agents/solver-epic-ux.json +15 -0
  50. package/cli/agents/solver-epic-ux.md +39 -0
  51. package/cli/agents/solver-story-api.json +15 -0
  52. package/cli/agents/solver-story-api.md +39 -0
  53. package/cli/agents/solver-story-backend.json +15 -0
  54. package/cli/agents/solver-story-backend.md +39 -0
  55. package/cli/agents/solver-story-cloud.json +15 -0
  56. package/cli/agents/solver-story-cloud.md +39 -0
  57. package/cli/agents/solver-story-data.json +15 -0
  58. package/cli/agents/solver-story-data.md +39 -0
  59. package/cli/agents/solver-story-database.json +15 -0
  60. package/cli/agents/solver-story-database.md +39 -0
  61. package/cli/agents/solver-story-developer.json +15 -0
  62. package/cli/agents/solver-story-developer.md +39 -0
  63. package/cli/agents/solver-story-devops.json +15 -0
  64. package/cli/agents/solver-story-devops.md +39 -0
  65. package/cli/agents/solver-story-frontend.json +15 -0
  66. package/cli/agents/solver-story-frontend.md +39 -0
  67. package/cli/agents/solver-story-mobile.json +15 -0
  68. package/cli/agents/solver-story-mobile.md +39 -0
  69. package/cli/agents/solver-story-qa.json +15 -0
  70. package/cli/agents/solver-story-qa.md +39 -0
  71. package/cli/agents/solver-story-security.json +15 -0
  72. package/cli/agents/solver-story-security.md +39 -0
  73. package/cli/agents/solver-story-solution-architect.json +15 -0
  74. package/cli/agents/solver-story-solution-architect.md +39 -0
  75. package/cli/agents/solver-story-test-architect.json +15 -0
  76. package/cli/agents/solver-story-test-architect.md +39 -0
  77. package/cli/agents/solver-story-ui.json +15 -0
  78. package/cli/agents/solver-story-ui.md +39 -0
  79. package/cli/agents/solver-story-ux.json +15 -0
  80. package/cli/agents/solver-story-ux.md +39 -0
  81. package/cli/agents/story-doc-enricher.md +133 -0
  82. package/cli/agents/suggestion-business-analyst.md +88 -0
  83. package/cli/agents/suggestion-deployment-architect.md +263 -0
  84. package/cli/agents/suggestion-product-manager.md +129 -0
  85. package/cli/agents/suggestion-security-specialist.md +156 -0
  86. package/cli/agents/suggestion-technical-architect.md +269 -0
  87. package/cli/agents/suggestion-ux-researcher.md +93 -0
  88. package/cli/agents/task-subtask-decomposer.md +188 -0
  89. package/cli/agents/validator-documentation.json +152 -0
  90. package/cli/agents/validator-documentation.md +453 -0
  91. package/cli/agents/validator-epic-api.json +93 -0
  92. package/cli/agents/validator-epic-api.md +137 -0
  93. package/cli/agents/validator-epic-backend.json +93 -0
  94. package/cli/agents/validator-epic-backend.md +130 -0
  95. package/cli/agents/validator-epic-cloud.json +93 -0
  96. package/cli/agents/validator-epic-cloud.md +137 -0
  97. package/cli/agents/validator-epic-data.json +93 -0
  98. package/cli/agents/validator-epic-data.md +130 -0
  99. package/cli/agents/validator-epic-database.json +93 -0
  100. package/cli/agents/validator-epic-database.md +137 -0
  101. package/cli/agents/validator-epic-developer.json +74 -0
  102. package/cli/agents/validator-epic-developer.md +153 -0
  103. package/cli/agents/validator-epic-devops.json +74 -0
  104. package/cli/agents/validator-epic-devops.md +153 -0
  105. package/cli/agents/validator-epic-frontend.json +74 -0
  106. package/cli/agents/validator-epic-frontend.md +153 -0
  107. package/cli/agents/validator-epic-mobile.json +93 -0
  108. package/cli/agents/validator-epic-mobile.md +130 -0
  109. package/cli/agents/validator-epic-qa.json +93 -0
  110. package/cli/agents/validator-epic-qa.md +130 -0
  111. package/cli/agents/validator-epic-security.json +74 -0
  112. package/cli/agents/validator-epic-security.md +154 -0
  113. package/cli/agents/validator-epic-solution-architect.json +74 -0
  114. package/cli/agents/validator-epic-solution-architect.md +156 -0
  115. package/cli/agents/validator-epic-test-architect.json +93 -0
  116. package/cli/agents/validator-epic-test-architect.md +130 -0
  117. package/cli/agents/validator-epic-ui.json +93 -0
  118. package/cli/agents/validator-epic-ui.md +130 -0
  119. package/cli/agents/validator-epic-ux.json +93 -0
  120. package/cli/agents/validator-epic-ux.md +130 -0
  121. package/cli/agents/validator-selector.md +211 -0
  122. package/cli/agents/validator-story-api.json +104 -0
  123. package/cli/agents/validator-story-api.md +152 -0
  124. package/cli/agents/validator-story-backend.json +104 -0
  125. package/cli/agents/validator-story-backend.md +152 -0
  126. package/cli/agents/validator-story-cloud.json +104 -0
  127. package/cli/agents/validator-story-cloud.md +152 -0
  128. package/cli/agents/validator-story-data.json +104 -0
  129. package/cli/agents/validator-story-data.md +152 -0
  130. package/cli/agents/validator-story-database.json +104 -0
  131. package/cli/agents/validator-story-database.md +152 -0
  132. package/cli/agents/validator-story-developer.json +104 -0
  133. package/cli/agents/validator-story-developer.md +152 -0
  134. package/cli/agents/validator-story-devops.json +104 -0
  135. package/cli/agents/validator-story-devops.md +152 -0
  136. package/cli/agents/validator-story-frontend.json +104 -0
  137. package/cli/agents/validator-story-frontend.md +152 -0
  138. package/cli/agents/validator-story-mobile.json +104 -0
  139. package/cli/agents/validator-story-mobile.md +152 -0
  140. package/cli/agents/validator-story-qa.json +104 -0
  141. package/cli/agents/validator-story-qa.md +152 -0
  142. package/cli/agents/validator-story-security.json +104 -0
  143. package/cli/agents/validator-story-security.md +152 -0
  144. package/cli/agents/validator-story-solution-architect.json +104 -0
  145. package/cli/agents/validator-story-solution-architect.md +152 -0
  146. package/cli/agents/validator-story-test-architect.json +104 -0
  147. package/cli/agents/validator-story-test-architect.md +152 -0
  148. package/cli/agents/validator-story-ui.json +104 -0
  149. package/cli/agents/validator-story-ui.md +152 -0
  150. package/cli/agents/validator-story-ux.json +104 -0
  151. package/cli/agents/validator-story-ux.md +152 -0
  152. package/cli/ansi-colors.js +21 -0
  153. package/cli/build-docs.js +29 -8
  154. package/cli/ceremony-history.js +369 -0
  155. package/cli/command-logger.js +49 -12
  156. package/cli/components/static-output.js +63 -0
  157. package/cli/console-output-manager.js +94 -0
  158. package/cli/docs-sync.js +306 -0
  159. package/cli/epic-story-validator.js +1174 -0
  160. package/cli/evaluation-prompts.js +1008 -0
  161. package/cli/execution-context.js +195 -0
  162. package/cli/generate-summary-table.js +340 -0
  163. package/cli/index.js +0 -0
  164. package/cli/init-model-config.js +697 -0
  165. package/cli/init.js +1311 -274
  166. package/cli/kanban-server-manager.js +228 -0
  167. package/cli/llm-claude.js +83 -1
  168. package/cli/llm-gemini.js +85 -0
  169. package/cli/llm-mock.js +233 -0
  170. package/cli/llm-openai.js +233 -0
  171. package/cli/llm-provider.js +240 -3
  172. package/cli/llm-token-limits.js +102 -0
  173. package/cli/llm-verifier.js +454 -0
  174. package/cli/message-constants.js +58 -0
  175. package/cli/message-manager.js +334 -0
  176. package/cli/message-types.js +96 -0
  177. package/cli/messaging-api.js +297 -0
  178. package/cli/model-pricing.js +169 -0
  179. package/cli/model-query-engine.js +468 -0
  180. package/cli/model-recommendation-analyzer.js +495 -0
  181. package/cli/model-selector.js +269 -0
  182. package/cli/output-buffer.js +107 -0
  183. package/cli/process-manager.js +73 -2
  184. package/cli/repl-ink.js +4988 -1217
  185. package/cli/repl-old.js +4 -4
  186. package/cli/seed-processor.js +792 -0
  187. package/cli/sprint-planning-processor.js +1813 -0
  188. package/cli/template-processor.js +2102 -105
  189. package/cli/templates/project.md +25 -8
  190. package/cli/templates/vitepress-config.mts.template +5 -4
  191. package/cli/token-tracker.js +520 -0
  192. package/cli/tools/generate-story-validators.js +317 -0
  193. package/cli/tools/generate-validators.js +669 -0
  194. package/cli/update-checker.js +19 -17
  195. package/cli/update-notifier.js +4 -4
  196. package/cli/validation-router.js +605 -0
  197. package/cli/verification-tracker.js +563 -0
  198. package/kanban/README.md +386 -0
  199. package/kanban/client/README.md +205 -0
  200. package/kanban/client/components.json +20 -0
  201. package/kanban/client/dist/assets/index-CiD8PS2e.js +306 -0
  202. package/kanban/client/dist/assets/index-nLh0m82Q.css +1 -0
  203. package/kanban/client/dist/index.html +16 -0
  204. package/kanban/client/dist/vite.svg +1 -0
  205. package/kanban/client/index.html +15 -0
  206. package/kanban/client/package-lock.json +9442 -0
  207. package/kanban/client/package.json +44 -0
  208. package/kanban/client/postcss.config.js +6 -0
  209. package/kanban/client/public/vite.svg +1 -0
  210. package/kanban/client/src/App.jsx +622 -0
  211. package/kanban/client/src/components/ProjectFileEditorPopup.jsx +117 -0
  212. package/kanban/client/src/components/ceremony/AskArchPopup.jsx +416 -0
  213. package/kanban/client/src/components/ceremony/AskModelPopup.jsx +616 -0
  214. package/kanban/client/src/components/ceremony/CeremonyWorkflowModal.jsx +946 -0
  215. package/kanban/client/src/components/ceremony/EpicStorySelectionModal.jsx +254 -0
  216. package/kanban/client/src/components/ceremony/SponsorCallModal.jsx +619 -0
  217. package/kanban/client/src/components/ceremony/SprintPlanningModal.jsx +704 -0
  218. package/kanban/client/src/components/ceremony/steps/ArchitectureStep.jsx +150 -0
  219. package/kanban/client/src/components/ceremony/steps/CompleteStep.jsx +154 -0
  220. package/kanban/client/src/components/ceremony/steps/DatabaseStep.jsx +202 -0
  221. package/kanban/client/src/components/ceremony/steps/DeploymentStep.jsx +123 -0
  222. package/kanban/client/src/components/ceremony/steps/MissionStep.jsx +106 -0
  223. package/kanban/client/src/components/ceremony/steps/ReviewAnswersStep.jsx +125 -0
  224. package/kanban/client/src/components/ceremony/steps/RunningStep.jsx +228 -0
  225. package/kanban/client/src/components/kanban/CardDetailModal.jsx +559 -0
  226. package/kanban/client/src/components/kanban/EpicSection.jsx +146 -0
  227. package/kanban/client/src/components/kanban/FilterToolbar.jsx +222 -0
  228. package/kanban/client/src/components/kanban/GroupingSelector.jsx +57 -0
  229. package/kanban/client/src/components/kanban/KanbanBoard.jsx +211 -0
  230. package/kanban/client/src/components/kanban/KanbanCard.jsx +138 -0
  231. package/kanban/client/src/components/kanban/KanbanColumn.jsx +90 -0
  232. package/kanban/client/src/components/kanban/RefineWorkItemPopup.jsx +789 -0
  233. package/kanban/client/src/components/layout/LoadingScreen.jsx +82 -0
  234. package/kanban/client/src/components/process/ProcessMonitorBar.jsx +80 -0
  235. package/kanban/client/src/components/settings/AgentEditorPopup.jsx +171 -0
  236. package/kanban/client/src/components/settings/AgentsTab.jsx +353 -0
  237. package/kanban/client/src/components/settings/ApiKeysTab.jsx +113 -0
  238. package/kanban/client/src/components/settings/CeremonyModelsTab.jsx +98 -0
  239. package/kanban/client/src/components/settings/CostThresholdsTab.jsx +94 -0
  240. package/kanban/client/src/components/settings/ModelPricingTab.jsx +204 -0
  241. package/kanban/client/src/components/settings/ServersTab.jsx +121 -0
  242. package/kanban/client/src/components/settings/SettingsModal.jsx +84 -0
  243. package/kanban/client/src/components/stats/CostModal.jsx +353 -0
  244. package/kanban/client/src/components/ui/badge.jsx +27 -0
  245. package/kanban/client/src/components/ui/dialog.jsx +121 -0
  246. package/kanban/client/src/components/ui/tabs.jsx +85 -0
  247. package/kanban/client/src/hooks/__tests__/useGrouping.test.js +232 -0
  248. package/kanban/client/src/hooks/useGrouping.js +118 -0
  249. package/kanban/client/src/hooks/useWebSocket.js +120 -0
  250. package/kanban/client/src/lib/__tests__/api.test.js +196 -0
  251. package/kanban/client/src/lib/__tests__/status-grouping.test.js +94 -0
  252. package/kanban/client/src/lib/api.js +401 -0
  253. package/kanban/client/src/lib/status-grouping.js +144 -0
  254. package/kanban/client/src/lib/utils.js +11 -0
  255. package/kanban/client/src/main.jsx +10 -0
  256. package/kanban/client/src/store/__tests__/kanbanStore.test.js +164 -0
  257. package/kanban/client/src/store/ceremonyStore.js +172 -0
  258. package/kanban/client/src/store/filterStore.js +201 -0
  259. package/kanban/client/src/store/kanbanStore.js +115 -0
  260. package/kanban/client/src/store/processStore.js +65 -0
  261. package/kanban/client/src/store/sprintPlanningStore.js +33 -0
  262. package/kanban/client/src/styles/globals.css +59 -0
  263. package/kanban/client/tailwind.config.js +77 -0
  264. package/kanban/client/vite.config.js +28 -0
  265. package/kanban/client/vitest.config.js +28 -0
  266. package/kanban/dev-start.sh +47 -0
  267. package/kanban/package.json +12 -0
  268. package/kanban/server/index.js +516 -0
  269. package/kanban/server/routes/ceremony.js +305 -0
  270. package/kanban/server/routes/costs.js +157 -0
  271. package/kanban/server/routes/processes.js +50 -0
  272. package/kanban/server/routes/settings.js +303 -0
  273. package/kanban/server/routes/websocket.js +276 -0
  274. package/kanban/server/routes/work-items.js +347 -0
  275. package/kanban/server/services/CeremonyService.js +1190 -0
  276. package/kanban/server/services/FileSystemScanner.js +95 -0
  277. package/kanban/server/services/FileWatcher.js +144 -0
  278. package/kanban/server/services/HierarchyBuilder.js +196 -0
  279. package/kanban/server/services/ProcessRegistry.js +122 -0
  280. package/kanban/server/services/WorkItemReader.js +123 -0
  281. package/kanban/server/services/WorkItemRefineService.js +510 -0
  282. package/kanban/server/start.js +49 -0
  283. package/kanban/server/utils/kanban-logger.js +132 -0
  284. package/kanban/server/utils/markdown.js +91 -0
  285. package/kanban/server/utils/status-grouping.js +107 -0
  286. package/kanban/server/workers/sponsor-call-worker.js +84 -0
  287. package/kanban/server/workers/sprint-planning-worker.js +130 -0
  288. package/package.json +18 -5
  289. package/cli/agents/documentation.md +0 -302
@@ -0,0 +1,112 @@
1
+ # Mission & Scope Validator Agent
2
+
3
+ ## Role
4
+ You are a strict quality reviewer for product mission statements and initial scope definitions. Your task is to evaluate a generated mission statement and initial scope against specific quality criteria and return a structured validation report.
5
+
6
+ ## Output Format
7
+
8
+ Return a JSON object with this exact structure:
9
+
10
+ ```json
11
+ {
12
+ "overallScore": 85,
13
+ "validationStatus": "acceptable",
14
+ "issues": [
15
+ {
16
+ "severity": "minor",
17
+ "field": "missionStatement",
18
+ "description": "Does not name the primary user type",
19
+ "suggestion": "Specify who the primary users are (e.g. 'home cooks', 'remote teams')"
20
+ }
21
+ ],
22
+ "strengths": ["Scope bullets use action verbs", "No phase 2 items included"],
23
+ "improvementPriorities": ["Clarify primary user in mission statement"],
24
+ "readyToUse": true
25
+ }
26
+ ```
27
+
28
+ ## Field Values
29
+
30
+ - `overallScore`: integer 0–100
31
+ - `validationStatus`: `"excellent"` (≥90) | `"acceptable"` (≥75) | `"needs-improvement"` (≥50) | `"poor"` (<50)
32
+ - `issues[].severity`: `"critical"` | `"major"` | `"minor"`
33
+ - `issues[].field`: `"missionStatement"` | `"initialScope"` | `"both"`
34
+ - `readyToUse`: `true` when no critical issues AND score ≥ 75 AND mission names a user AND scope has ≥ 4 bullets
35
+
36
+ ## Evaluation Criteria
37
+
38
+ ### Mission Statement (50 points)
39
+
40
+ | Criterion | Points | Pass Condition |
41
+ |-----------|--------|----------------|
42
+ | Names a specific user type | 15 | E.g. "home cooks", "remote teams", "small business owners" — not just "users" |
43
+ | States clear value delivered | 15 | What the user gains, not what the product does technically |
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 |
46
+
47
+ ### Initial Scope (50 points)
48
+
49
+ | Criterion | Points | Pass Condition |
50
+ |-----------|--------|----------------|
51
+ | 4–8 bullets | 10 | Exactly 4 to 8 bullet points |
52
+ | Verb-led bullets | 15 | Each bullet starts with an action verb or "Users can…" / "Admins can…" |
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 |
55
+
56
+ ## DO NOT Rules (flag as critical if violated)
57
+
58
+ - DO NOT mention specific technologies, frameworks, or programming languages
59
+ - DO NOT include phase 2 or future roadmap items
60
+ - DO NOT mention timelines, team size, or delivery schedule
61
+ - DO NOT mention business model, pricing, or monetisation strategy
62
+ - DO NOT include non-functional requirements (performance SLAs, uptime percentages)
63
+ - DO NOT use vague adjectives: "world-class", "seamless", "revolutionary", "cutting-edge", "robust", "innovative"
64
+ - DO NOT add meta-commentary such as "This mission statement aims to…" or "Here is the scope:"
65
+ - DO NOT include competitive positioning or market analysis
66
+
67
+ ## Severity Classification
68
+
69
+ **Critical** — violates a DO NOT rule or fundamentally breaks the structure (score 0 for that criterion)
70
+ **Major** — criterion partially met but needs significant improvement (score 50% for that criterion)
71
+ **Minor** — criterion nearly met, small improvement would help (score 75% for that criterion)
72
+
73
+ ## Examples
74
+
75
+ ### Good mission statement
76
+ "Help home cooks discover, save, and share recipes by building a community-driven platform where anyone can publish their own dishes and find inspiration from others."
77
+ - Names user: ✓ "home cooks"
78
+ - Clear value: ✓ discover, save, share recipes
79
+ - Specific: ✓ excludes unrelated features
80
+ - No forbidden: ✓
81
+
82
+ ### Weak mission statement (needs improvement)
83
+ "Build a platform that helps users with cooking."
84
+ - Names user: ✗ "users" is too generic (major issue)
85
+ - Clear value: ✗ "helps with cooking" is vague (major issue)
86
+
87
+ ### Good scope bullet
88
+ "Users can create and publish recipes with ingredients, steps, and photos"
89
+ - Verb-led: ✓
90
+ - Concrete: ✓
91
+ - v1 only: ✓
92
+
93
+ ### Bad scope bullet
94
+ "Users can leverage AI to generate personalized recipe recommendations based on their preferences" (phase 2 / tech mention)
95
+
96
+ ## Important Notes
97
+
98
+ - Return **only** the JSON object — no markdown fences, no preamble, no explanation
99
+ - Ensure the JSON is valid and parseable
100
+ - Be strict but fair: the goal is to produce genuinely useful output, not to find trivial faults
101
+ - If the mission and scope are excellent, say so — don't invent issues
102
+ - `improvementPriorities` lists the most impactful fixes, ordered by impact (highest first)
103
+ - `strengths` lists specific things done well (be concrete, not generic praise)
104
+
105
+ ## CRITICAL: issues[] must contain ONLY actual remaining problems
106
+
107
+ - **NEVER** put resolution notes, fix confirmations, or "no issues found" entries in `issues[]`
108
+ - **NEVER** describe what a previous iteration changed or fixed — that is not an issue
109
+ - **NEVER** add entries like "The refinement was applied successfully" or "No action required"
110
+ - If there are no problems, `issues` **must be an empty array `[]`**
111
+ - Every entry in `issues[]` must describe a specific defect that **still exists** in the current text
112
+ - Positive observations belong in `strengths[]`, not `issues[]`
@@ -0,0 +1,107 @@
1
+ # Project Context Extractor Agent
2
+
3
+ You are an expert at analyzing software project documentation and extracting structured technical context. Your role is to read a project scope description and return a precise JSON object capturing the project's key characteristics that influence which domain experts should review its work items.
4
+
5
+ ## Your Task
6
+
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
+
9
+ ## Output Format
10
+
11
+ Return ONLY valid JSON with this exact structure:
12
+
13
+ ```json
14
+ {
15
+ "deploymentType": "local|docker|kubernetes|serverless|cloud|hybrid",
16
+ "hasCloud": false,
17
+ "hasCI_CD": false,
18
+ "hasMobileApp": false,
19
+ "hasFrontend": true,
20
+ "hasPublicAPI": false,
21
+ "techStack": ["node.js", "react", "postgresql"],
22
+ "teamContext": "solo|small|medium|large",
23
+ "projectType": "web-application|api|mobile-app|data-pipeline|library|cli-tool|other"
24
+ }
25
+ ```
26
+
27
+ ## Field Definitions
28
+
29
+ ### deploymentType
30
+ - `"local"` — runs only on dev machines, no deployment infrastructure
31
+ - `"docker"` — containerized with Docker/Docker Compose, no cloud orchestration
32
+ - `"kubernetes"` — container orchestration via k8s or similar
33
+ - `"serverless"` — functions-as-a-service (Lambda, Cloud Functions, etc.)
34
+ - `"cloud"` — deployed to cloud provider (AWS, GCP, Azure, Vercel, Render, etc.)
35
+ - `"hybrid"` — mix of deployment targets
36
+
37
+ **If not mentioned**: default to `"local"`.
38
+
39
+ ### hasCloud
40
+ `true` if the scope mentions: AWS, GCP, Azure, S3, RDS, Cloud Run, Vercel, Netlify, Render, DigitalOcean, or any cloud-hosted managed service. `false` otherwise.
41
+
42
+ ### hasCI_CD
43
+ `true` if the scope mentions: CI/CD, GitHub Actions, Jenkins, CircleCI, GitLab CI, automated deployment pipelines, or continuous delivery. `false` otherwise.
44
+
45
+ ### hasMobileApp
46
+ `true` if the scope includes a mobile application (iOS, Android, React Native, Flutter, Expo). `false` otherwise.
47
+
48
+ ### hasFrontend
49
+ `true` if the scope includes a web UI, browser-based interface, dashboard, or any visual frontend. `false` for pure backend/API/CLI projects.
50
+
51
+ ### hasPublicAPI
52
+ `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
+
54
+ ### 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"
57
+ - "python", "django", "fastapi", "flask"
58
+ - "java", "spring boot", "go", "rust", "php", "laravel"
59
+ - "postgresql", "mysql", "mongodb", "redis", "sqlite"
60
+ - "docker", "kubernetes", "nginx", "rabbitmq", "kafka"
61
+ - "typescript", "graphql", "rest"
62
+
63
+ Only include technologies explicitly mentioned. Do not infer (e.g., don't assume PostgreSQL if just "database" is mentioned).
64
+
65
+ ### teamContext
66
+ - `"solo"` — one developer
67
+ - `"small"` — 2–5 developers
68
+ - `"medium"` — 6–20 developers
69
+ - `"large"` — 20+ developers
70
+
71
+ If not mentioned, default to `"small"`.
72
+
73
+ ### projectType
74
+ - `"web-application"` — full-stack or frontend-heavy web app
75
+ - `"api"` — backend API service, no frontend
76
+ - `"mobile-app"` — primary interface is mobile
77
+ - `"data-pipeline"` — ETL, analytics, data processing
78
+ - `"library"` — npm package, SDK, or reusable library
79
+ - `"cli-tool"` — command-line interface tool
80
+ - `"other"` — does not fit above categories
81
+
82
+ ## Extraction Rules
83
+
84
+ 1. **Evidence-based only** — if a characteristic is not mentioned, use the documented default, not a guess
85
+ 2. **No hallucination** — never add technologies or characteristics not in the source text
86
+ 3. **Conservative techStack** — only include clearly named technologies
87
+ 4. **Return raw JSON** — no markdown code blocks, no explanation text, just the JSON object
88
+
89
+ ## Example
90
+
91
+ **Input scope:**
92
+ > "A task management web application for a 3-person team. Built with React frontend, Node.js/Express backend, PostgreSQL database. Runs in Docker Compose locally. No deployment to cloud planned at this time."
93
+
94
+ **Output:**
95
+ ```json
96
+ {
97
+ "deploymentType": "docker",
98
+ "hasCloud": false,
99
+ "hasCI_CD": false,
100
+ "hasMobileApp": false,
101
+ "hasFrontend": true,
102
+ "hasPublicAPI": false,
103
+ "techStack": ["react", "node.js", "express.js", "postgresql", "docker"],
104
+ "teamContext": "small",
105
+ "projectType": "web-application"
106
+ }
107
+ ```
@@ -0,0 +1,226 @@
1
+ {
2
+ "$schema": "verification-rules-v1",
3
+ "agent": "project-documentation-creator",
4
+ "description": "Post-processing verification for Project Brief documentation",
5
+ "model": "claude-sonnet-4-5",
6
+ "verifications": [
7
+ {
8
+ "id": "remove-status-and-timeline-references",
9
+ "name": "Remove Status and Timeline References",
10
+ "enabled": true,
11
+ "severity": "critical",
12
+ "description": "Remove all status fields, timeline references, and planning language. Documentation must be timeless.",
13
+ "fastPath": {
14
+ "enabled": false,
15
+ "type": "none"
16
+ },
17
+ "check": {
18
+ "prompt": "Check if content contains status fields, timeline references, or planning language.\n\nPROHIBITED PATTERNS:\n\n1. STATUS FIELDS:\n- Status: Planned / Initial Definition / In Progress / Completed\n- **Status**: any value\n- Priority: High / P1 / Must-have\n\n2. TIMELINE REFERENCES:\n- Phase 1 / Phase 2 / Milestone 3\n- Q1 2026 / January / Sprint 5\n- Version 1.0 / v2.0 / MVP\n- Initial release / Post-launch\n\n3. PLANNING LANGUAGE:\n- will be implemented / planned for / scheduled for\n- to be delivered / upcoming / future enhancement\n- roadmap includes / next iteration\n\n4. FUTURE TENSE:\n- will provide / will include / will support\n- is going to / are planned / once implemented\n\n5. TEMPORAL SEQUENCING:\n- initially / eventually / later / first / next\n- after deployment / when complete / upon release\n\nALLOWED (these are OK):\n- provides / includes / supports (present tense)\n- \"planned\" in legitimate context like \"well-planned architecture\"\n- \"phase\" in technical terms like \"two-phase commit\"\n\nCONTENT:\n{content}\n\nDoes content contain ANY prohibited patterns?\n\nRespond ONLY 'YES' or 'NO'.",
19
+ "expectedResponse": "YES|NO",
20
+ "maxTokens": 10
21
+ },
22
+ "fix": {
23
+ "prompt": "Remove status fields, timeline references, and planning language. Convert to timeless present tense.\n\nREMOVAL RULES:\n\n1. REMOVE ENTIRE LINES containing:\n- Status: any value\n- Priority: any value\n- Phase/Milestone/Sprint references\n- Version/Release references (v1.0, MVP, etc.)\n- Timeline dates (Q1 2026, January, etc.)\n\n2. CONVERT FUTURE TENSE to PRESENT:\n- \"will provide\" → \"provides\"\n- \"will include\" → \"includes\"\n- \"will support\" → \"supports\"\n- \"is going to have\" → \"has\"\n\n3. REMOVE PLANNING PHRASES:\n- \"planned for\" → remove phrase, keep feature description\n- \"scheduled for release\" → remove phrase\n- \"to be implemented\" → remove phrase\n- \"upcoming feature\" → just \"feature\"\n- \"future enhancement\" → just describe the feature\n\n4. REMOVE TEMPORAL SEQUENCES:\n- \"Initially, the system...\" → \"The system...\"\n- \"Eventually, we will add...\" → \"The system includes...\"\n- \"First, users authenticate, then...\" → \"Users authenticate and...\"\n- \"After deployment, the feature...\" → \"The feature...\"\n\n5. REMOVE CONDITIONALS:\n- \"Once implemented, X will...\" → \"X provides...\"\n- \"When complete, the system...\" → \"The system...\"\n\nEXAMPLES:\n\nInput: \"Status: Planned\\n\\nThe system will provide authentication in Phase 2.\"\nOutput: \"The system provides authentication.\"\n\nInput: \"Once deployed, users will be able to login using OAuth.\"\nOutput: \"Users login using OAuth.\"\n\nInput: \"Initially, the MVP includes basic features. Eventually, we will add advanced analytics.\"\nOutput: \"The system includes basic features and advanced analytics.\"\n\nPRESERVE:\n- All technical specifications\n- All feature descriptions\n- All architecture details\n- Present tense statements\n- Technical uses of \"phase\" (two-phase commit) or \"version\" (API version)\n\nCONTENT:\n{content}\n\nReturn ONLY the cleaned content with:\n- All status/timeline references removed\n- All future tense converted to present\n- All planning language removed\n- Timeless, factual descriptions only",
24
+ "returnFormat": "text",
25
+ "maxTokens": 8192
26
+ },
27
+ "metadata": {
28
+ "category": "content",
29
+ "addedVersion": "0.1.2"
30
+ }
31
+ },
32
+ {
33
+ "id": "enforce-present-tense",
34
+ "name": "Enforce Present Tense Throughout",
35
+ "enabled": true,
36
+ "severity": "major",
37
+ "description": "Ensure all system descriptions use present tense, not future",
38
+ "fastPath": {
39
+ "enabled": false,
40
+ "type": "none"
41
+ },
42
+ "check": {
43
+ "prompt": "Check if content uses future tense to describe system capabilities.\n\nFUTURE TENSE PATTERNS (prohibited):\n- will provide / will include / will support / will handle\n- will be / will have / will use / will enable\n- is going to / are going to / is planned to\n- shall provide / shall include (formal future)\n\nPRESENT TENSE PATTERNS (correct):\n- provides / includes / supports / handles\n- is / has / uses / enables\n\nCONTENT:\n{content}\n\nDoes content use future tense to describe system capabilities?\n\nRespond ONLY 'YES' or 'NO'.",
44
+ "expectedResponse": "YES|NO",
45
+ "maxTokens": 10
46
+ },
47
+ "fix": {
48
+ "prompt": "Convert all future tense to present tense.\n\nCONVERSIONS:\n- \"will provide\" → \"provides\"\n- \"will include\" → \"includes\"\n- \"will support\" → \"supports\"\n- \"will handle\" → \"handles\"\n- \"will be\" → \"is\"\n- \"will have\" → \"has\"\n- \"will use\" → \"uses\"\n- \"will enable\" → \"enables\"\n- \"is going to provide\" → \"provides\"\n- \"are going to include\" → \"include\"\n- \"shall provide\" → \"provides\"\n\nRULES:\n- Convert ALL instances of future tense\n- Preserve technical accuracy\n- Maintain sentence structure\n- Fix grammar if needed after conversion\n\nEXAMPLES:\nInput: \"The API will provide RESTful endpoints for user management.\"\nOutput: \"The API provides RESTful endpoints for user management.\"\n\nInput: \"Users will be able to authenticate using OAuth 2.0.\"\nOutput: \"Users authenticate using OAuth 2.0.\"\n\nInput: \"The system is going to handle 10,000 concurrent users.\"\nOutput: \"The system handles 10,000 concurrent users.\"\n\nCONTENT:\n{content}\n\nReturn ONLY the content with all future tense converted to present.",
49
+ "returnFormat": "text",
50
+ "maxTokens": 8192
51
+ },
52
+ "metadata": {
53
+ "category": "content",
54
+ "addedVersion": "0.1.2"
55
+ }
56
+ },
57
+ {
58
+ "id": "remove-bold-labels",
59
+ "name": "Convert Bold Labels to Headers",
60
+ "enabled": true,
61
+ "severity": "major",
62
+ "description": "Convert **Label**: text patterns to #### headers",
63
+ "check": {
64
+ "prompt": "Check if content contains bold label patterns: **Label**: text\n\nExamples: **Framework**: React, **Design Approach**: Custom\n\nCONTENT:\n{content}\n\nDoes this contain **Label**: text patterns?\n\nRespond ONLY 'YES' or 'NO'.",
65
+ "expectedResponse": "YES|NO",
66
+ "maxTokens": 10
67
+ },
68
+ "fix": {
69
+ "prompt": "Convert all **Label**: text patterns to #### headers.\n\nConversion:\n**Label**: text\n→\n#### Label\ntext\n\nRules:\n- Convert ALL instances\n- Add blank line after text\n- Do NOT modify existing headers\n- Preserve all other content\n\nCONTENT:\n{content}\n\nReturn ONLY the converted content.",
70
+ "returnFormat": "text",
71
+ "maxTokens": 8192
72
+ },
73
+ "metadata": {
74
+ "category": "formatting",
75
+ "addedVersion": "0.1.2"
76
+ }
77
+ },
78
+ {
79
+ "id": "remove-generic-placeholders",
80
+ "name": "Remove Generic Placeholders",
81
+ "enabled": true,
82
+ "severity": "critical",
83
+ "description": "Remove angle-bracket placeholders like <technology>",
84
+ "check": {
85
+ "prompt": "Check if content contains generic placeholders in angle brackets: <technology>, <framework>, <database>, etc.\n\nCONTENT:\n{content}\n\nDoes this contain <placeholder> patterns?\n\nRespond ONLY 'YES' or 'NO'.",
86
+ "expectedResponse": "YES|NO",
87
+ "maxTokens": 10
88
+ },
89
+ "fix": {
90
+ "prompt": "Replace all <placeholder> patterns.\n\nStrategy:\n- Technical fields: Replace with 'To be determined based on project requirements'\n- In sentences: Remove and rephrase grammatically\n- Placeholder-only lines: Replace with 'Details to be specified during implementation'\n\nCONTENT:\n{content}\n\nReturn ONLY the cleaned content.",
91
+ "returnFormat": "text",
92
+ "maxTokens": 8192
93
+ },
94
+ "metadata": {
95
+ "category": "content",
96
+ "addedVersion": "0.1.2"
97
+ }
98
+ },
99
+ {
100
+ "id": "fix-section-9-main-title",
101
+ "name": "Fix Section 9 Main Title",
102
+ "enabled": true,
103
+ "severity": "minor",
104
+ "description": "Ensure section 9 main header is '## 9. Success Metrics'",
105
+ "check": {
106
+ "prompt": "Check if section 9's MAIN HEADER (## 9. ...) is titled 'Success Metrics'.\n\nCorrect: ## 9. Success Metrics\nWrong: ## 9. Success Criteria, ## 9. Acceptance Criteria, ## 9. Definition of Done\n\nCONTENT:\n{content}\n\nIs section 9's main title WRONG?\n\nRespond ONLY 'YES' or 'NO'.",
107
+ "expectedResponse": "YES|NO",
108
+ "maxTokens": 10
109
+ },
110
+ "fix": {
111
+ "prompt": "Change section 9's main header to '## 9. Success Metrics'.\n\nONLY change the main ## 9. header.\nDo NOT modify subsections (### headers).\nPreserve all content and formatting.\n\nCONTENT:\n{content}\n\nReturn ONLY the corrected content.",
112
+ "returnFormat": "text",
113
+ "maxTokens": 8192
114
+ },
115
+ "metadata": {
116
+ "category": "structure",
117
+ "addedVersion": "0.1.2"
118
+ }
119
+ },
120
+ {
121
+ "id": "fix-section-9-subsections",
122
+ "name": "Fix Section 9 Subsection Names",
123
+ "enabled": true,
124
+ "severity": "minor",
125
+ "description": "Ensure section 9 has correct subsection names",
126
+ "check": {
127
+ "prompt": "Check if section 9 has the correct subsection structure:\n- ### Key Outcomes\n- ### Technical Goals\n- ### User Experience Goals\n\nWrong names: 'Acceptance Criteria', 'Definition of Done'\n\nCONTENT:\n{content}\n\nDoes section 9 have WRONG or MISSING subsections?\n\nRespond ONLY 'YES' or 'NO'.",
128
+ "expectedResponse": "YES|NO",
129
+ "maxTokens": 10
130
+ },
131
+ "fix": {
132
+ "prompt": "Fix section 9 subsections:\n\n1. Rename 'Acceptance Criteria' → 'Key Outcomes'\n2. Rename 'Definition of Done' → 'Technical Goals'\n3. Add '### User Experience Goals' if missing\n\nKeep all content under each subsection.\nONLY modify subsections in section 9.\n\nCONTENT:\n{content}\n\nReturn ONLY the corrected content.",
133
+ "returnFormat": "text",
134
+ "maxTokens": 8192
135
+ },
136
+ "metadata": {
137
+ "category": "structure",
138
+ "addedVersion": "0.1.2"
139
+ }
140
+ },
141
+ {
142
+ "id": "validate-header-hierarchy",
143
+ "name": "Fix Header Hierarchy",
144
+ "enabled": true,
145
+ "severity": "major",
146
+ "description": "Fix skipped header levels (e.g., ## followed by ####)",
147
+ "check": {
148
+ "prompt": "Check for skipped header levels.\n\nProper hierarchy: # → ## → ### → ####\nInvalid: ## followed directly by #### (skips ###)\n\nCONTENT:\n{content}\n\nAre there ANY skipped header levels?\n\nRespond ONLY 'YES' or 'NO'.",
149
+ "expectedResponse": "YES|NO",
150
+ "maxTokens": 10
151
+ },
152
+ "fix": {
153
+ "prompt": "Fix header hierarchy by adjusting levels.\n\nEnsure proper nesting: # → ## → ### → ####\nNo skipped levels.\n\nStrategy:\n- Promote headers if needed (#### → ###)\n- Insert intermediate levels if needed\n- Adjust child headers if parent changes\n\nCONTENT:\n{content}\n\nReturn ONLY the corrected content.",
154
+ "returnFormat": "text",
155
+ "maxTokens": 8192
156
+ },
157
+ "metadata": {
158
+ "category": "structure",
159
+ "addedVersion": "0.1.2"
160
+ }
161
+ },
162
+ {
163
+ "id": "remove-empty-sections",
164
+ "name": "Fill Empty Sections",
165
+ "enabled": true,
166
+ "severity": "minor",
167
+ "description": "Add placeholder text to empty sections",
168
+ "check": {
169
+ "prompt": "Check if document has empty sections (headers with no content under them).\n\nEmpty section: header followed immediately by another header or end of file.\n\nCONTENT:\n{content}\n\nAre there ANY empty sections?\n\nRespond ONLY 'YES' or 'NO'.",
170
+ "expectedResponse": "YES|NO",
171
+ "maxTokens": 10
172
+ },
173
+ "fix": {
174
+ "prompt": "Add placeholder text to ALL empty sections.\n\nFor each empty section, add: 'To be determined'\n\nDo NOT remove sections.\nPreserve all non-empty sections.\n\nCONTENT:\n{content}\n\nReturn ONLY the corrected content.",
175
+ "returnFormat": "text",
176
+ "maxTokens": 8192
177
+ },
178
+ "metadata": {
179
+ "category": "content",
180
+ "addedVersion": "0.1.2"
181
+ }
182
+ },
183
+ {
184
+ "id": "no-meta-commentary",
185
+ "name": "Remove Meta-Commentary",
186
+ "enabled": true,
187
+ "severity": "major",
188
+ "description": "Remove document self-references like 'As mentioned above'",
189
+ "check": {
190
+ "prompt": "Check for meta-commentary phrases:\n- 'As mentioned above'\n- 'As discussed earlier'\n- 'In the next section'\n- 'See below'\n- 'The following section covers'\n\nCONTENT:\n{content}\n\nDoes this contain meta-commentary?\n\nRespond ONLY 'YES' or 'NO'.",
191
+ "expectedResponse": "YES|NO",
192
+ "maxTokens": 10
193
+ },
194
+ "fix": {
195
+ "prompt": "Remove or rephrase ALL meta-commentary.\n\nStrategy:\n- Remove the phrase\n- Rephrase sentence to be direct and self-contained\n- Rewrite if removing makes it unclear\n\nExample:\n'As mentioned above, the system uses React.'\n→ 'The system uses React.'\n\nCONTENT:\n{content}\n\nReturn ONLY the corrected content.",
196
+ "returnFormat": "text",
197
+ "maxTokens": 8192
198
+ },
199
+ "metadata": {
200
+ "category": "content",
201
+ "addedVersion": "0.1.2"
202
+ }
203
+ },
204
+ {
205
+ "id": "no-emojis",
206
+ "name": "Remove Emojis",
207
+ "enabled": true,
208
+ "severity": "minor",
209
+ "description": "Remove emoji characters from documentation",
210
+ "check": {
211
+ "prompt": "Check for emoji characters: 🚀 ✅ ❌ 📋 🎯 💡 etc.\n\nCONTENT:\n{content}\n\nDoes this contain emojis?\n\nRespond ONLY 'YES' or 'NO'.",
212
+ "expectedResponse": "YES|NO",
213
+ "maxTokens": 10
214
+ },
215
+ "fix": {
216
+ "prompt": "Remove ALL emoji characters.\n\nRules:\n- Remove emoji and space if at start of line ('✅ Item' → 'Item')\n- Remove emoji inline but preserve sentence structure\n- Do NOT modify emoji shortcodes like ':smile:'\n\nCONTENT:\n{content}\n\nReturn ONLY the cleaned content.",
217
+ "returnFormat": "text",
218
+ "maxTokens": 8192
219
+ },
220
+ "metadata": {
221
+ "category": "formatting",
222
+ "addedVersion": "0.1.2"
223
+ }
224
+ }
225
+ ]
226
+ }