@agile-vibe-coding/avc 0.1.1 → 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 (239) hide show
  1. package/cli/agent-loader.js +21 -0
  2. package/cli/agents/agent-selector.md +152 -0
  3. package/cli/agents/architecture-recommender.md +418 -0
  4. package/cli/agents/code-implementer.md +117 -0
  5. package/cli/agents/code-validator.md +80 -0
  6. package/cli/agents/context-reviewer-epic.md +101 -0
  7. package/cli/agents/context-reviewer-story.md +92 -0
  8. package/cli/agents/context-writer-epic.md +145 -0
  9. package/cli/agents/context-writer-story.md +111 -0
  10. package/cli/agents/database-deep-dive.md +470 -0
  11. package/cli/agents/database-recommender.md +634 -0
  12. package/cli/agents/doc-distributor.md +176 -0
  13. package/cli/agents/doc-writer-epic.md +42 -0
  14. package/cli/agents/doc-writer-story.md +43 -0
  15. package/cli/agents/documentation-updater.md +203 -0
  16. package/cli/agents/duplicate-detector.md +110 -0
  17. package/cli/agents/epic-story-decomposer.md +559 -0
  18. package/cli/agents/feature-context-generator.md +91 -0
  19. package/cli/agents/gap-checker-epic.md +52 -0
  20. package/cli/agents/impact-checker-story.md +51 -0
  21. package/cli/agents/migration-guide-generator.md +305 -0
  22. package/cli/agents/mission-scope-generator.md +143 -0
  23. package/cli/agents/mission-scope-validator.md +146 -0
  24. package/cli/agents/project-context-extractor.md +122 -0
  25. package/cli/agents/project-documentation-creator.json +226 -0
  26. package/cli/agents/project-documentation-creator.md +595 -0
  27. package/cli/agents/question-prefiller.md +269 -0
  28. package/cli/agents/refiner-epic.md +39 -0
  29. package/cli/agents/refiner-story.md +42 -0
  30. package/cli/agents/scaffolding-generator.md +99 -0
  31. package/cli/agents/seed-validator.md +71 -0
  32. package/cli/agents/story-doc-enricher.md +133 -0
  33. package/cli/agents/story-scope-reviewer.md +147 -0
  34. package/cli/agents/story-splitter.md +83 -0
  35. package/cli/agents/suggestion-business-analyst.md +88 -0
  36. package/cli/agents/suggestion-deployment-architect.md +263 -0
  37. package/cli/agents/suggestion-product-manager.md +129 -0
  38. package/cli/agents/suggestion-security-specialist.md +156 -0
  39. package/cli/agents/suggestion-technical-architect.md +269 -0
  40. package/cli/agents/suggestion-ux-researcher.md +93 -0
  41. package/cli/agents/task-subtask-decomposer.md +188 -0
  42. package/cli/agents/validator-documentation.json +183 -0
  43. package/cli/agents/validator-documentation.md +455 -0
  44. package/cli/agents/validator-selector.md +211 -0
  45. package/cli/ansi-colors.js +21 -0
  46. package/cli/api-reference-tool.js +368 -0
  47. package/cli/build-docs.js +29 -8
  48. package/cli/ceremony-history.js +369 -0
  49. package/cli/checks/catalog.json +76 -0
  50. package/cli/checks/code/quality.json +26 -0
  51. package/cli/checks/code/testing.json +14 -0
  52. package/cli/checks/code/traceability.json +26 -0
  53. package/cli/checks/cross-refs/epic.json +171 -0
  54. package/cli/checks/cross-refs/story.json +149 -0
  55. package/cli/checks/epic/api.json +114 -0
  56. package/cli/checks/epic/backend.json +126 -0
  57. package/cli/checks/epic/cloud.json +126 -0
  58. package/cli/checks/epic/data.json +102 -0
  59. package/cli/checks/epic/database.json +114 -0
  60. package/cli/checks/epic/developer.json +182 -0
  61. package/cli/checks/epic/devops.json +174 -0
  62. package/cli/checks/epic/frontend.json +162 -0
  63. package/cli/checks/epic/mobile.json +102 -0
  64. package/cli/checks/epic/qa.json +90 -0
  65. package/cli/checks/epic/security.json +184 -0
  66. package/cli/checks/epic/solution-architect.json +192 -0
  67. package/cli/checks/epic/test-architect.json +90 -0
  68. package/cli/checks/epic/ui.json +102 -0
  69. package/cli/checks/epic/ux.json +90 -0
  70. package/cli/checks/fixes/epic-fix-template.md +10 -0
  71. package/cli/checks/fixes/story-fix-template.md +10 -0
  72. package/cli/checks/story/api.json +186 -0
  73. package/cli/checks/story/backend.json +102 -0
  74. package/cli/checks/story/cloud.json +102 -0
  75. package/cli/checks/story/data.json +210 -0
  76. package/cli/checks/story/database.json +102 -0
  77. package/cli/checks/story/developer.json +168 -0
  78. package/cli/checks/story/devops.json +102 -0
  79. package/cli/checks/story/frontend.json +174 -0
  80. package/cli/checks/story/mobile.json +102 -0
  81. package/cli/checks/story/qa.json +210 -0
  82. package/cli/checks/story/security.json +198 -0
  83. package/cli/checks/story/solution-architect.json +230 -0
  84. package/cli/checks/story/test-architect.json +210 -0
  85. package/cli/checks/story/ui.json +102 -0
  86. package/cli/checks/story/ux.json +102 -0
  87. package/cli/coding-order.js +401 -0
  88. package/cli/command-logger.js +49 -12
  89. package/cli/components/static-output.js +63 -0
  90. package/cli/console-output-manager.js +94 -0
  91. package/cli/dependency-checker.js +72 -0
  92. package/cli/docs-sync.js +306 -0
  93. package/cli/epic-story-validator.js +659 -0
  94. package/cli/evaluation-prompts.js +1008 -0
  95. package/cli/execution-context.js +195 -0
  96. package/cli/generate-summary-table.js +340 -0
  97. package/cli/init-model-config.js +704 -0
  98. package/cli/init.js +1737 -278
  99. package/cli/kanban-server-manager.js +227 -0
  100. package/cli/llm-claude.js +150 -1
  101. package/cli/llm-gemini.js +109 -0
  102. package/cli/llm-local.js +493 -0
  103. package/cli/llm-mock.js +233 -0
  104. package/cli/llm-openai.js +454 -0
  105. package/cli/llm-provider.js +379 -3
  106. package/cli/llm-token-limits.js +211 -0
  107. package/cli/llm-verifier.js +662 -0
  108. package/cli/llm-xiaomi.js +143 -0
  109. package/cli/message-constants.js +49 -0
  110. package/cli/message-manager.js +334 -0
  111. package/cli/message-types.js +96 -0
  112. package/cli/messaging-api.js +291 -0
  113. package/cli/micro-check-fixer.js +335 -0
  114. package/cli/micro-check-runner.js +449 -0
  115. package/cli/micro-check-scorer.js +148 -0
  116. package/cli/micro-check-validator.js +538 -0
  117. package/cli/model-pricing.js +192 -0
  118. package/cli/model-query-engine.js +468 -0
  119. package/cli/model-recommendation-analyzer.js +495 -0
  120. package/cli/model-selector.js +270 -0
  121. package/cli/output-buffer.js +107 -0
  122. package/cli/process-manager.js +73 -2
  123. package/cli/prompt-logger.js +57 -0
  124. package/cli/repl-ink.js +4625 -1094
  125. package/cli/repl-old.js +3 -4
  126. package/cli/seed-processor.js +962 -0
  127. package/cli/sprint-planning-processor.js +4162 -0
  128. package/cli/template-processor.js +2149 -105
  129. package/cli/templates/project.md +25 -8
  130. package/cli/templates/vitepress-config.mts.template +5 -4
  131. package/cli/token-tracker.js +547 -0
  132. package/cli/tools/generate-story-validators.js +317 -0
  133. package/cli/tools/generate-validators.js +669 -0
  134. package/cli/update-checker.js +19 -17
  135. package/cli/update-notifier.js +4 -4
  136. package/cli/validation-router.js +667 -0
  137. package/cli/verification-tracker.js +563 -0
  138. package/cli/worktree-runner.js +654 -0
  139. package/kanban/README.md +386 -0
  140. package/kanban/client/README.md +205 -0
  141. package/kanban/client/components.json +20 -0
  142. package/kanban/client/dist/assets/index-D_KC5EQT.css +1 -0
  143. package/kanban/client/dist/assets/index-DjY5zqW7.js +351 -0
  144. package/kanban/client/dist/index.html +16 -0
  145. package/kanban/client/dist/vite.svg +1 -0
  146. package/kanban/client/index.html +15 -0
  147. package/kanban/client/package-lock.json +9442 -0
  148. package/kanban/client/package.json +44 -0
  149. package/kanban/client/postcss.config.js +6 -0
  150. package/kanban/client/public/vite.svg +1 -0
  151. package/kanban/client/src/App.jsx +651 -0
  152. package/kanban/client/src/components/ProjectFileEditorPopup.jsx +117 -0
  153. package/kanban/client/src/components/ceremony/AskArchPopup.jsx +420 -0
  154. package/kanban/client/src/components/ceremony/AskModelPopup.jsx +629 -0
  155. package/kanban/client/src/components/ceremony/CeremonyWorkflowModal.jsx +1133 -0
  156. package/kanban/client/src/components/ceremony/EpicStorySelectionModal.jsx +254 -0
  157. package/kanban/client/src/components/ceremony/ProviderSwitcherButton.jsx +290 -0
  158. package/kanban/client/src/components/ceremony/SponsorCallModal.jsx +686 -0
  159. package/kanban/client/src/components/ceremony/SprintPlanningModal.jsx +838 -0
  160. package/kanban/client/src/components/ceremony/steps/ArchitectureStep.jsx +150 -0
  161. package/kanban/client/src/components/ceremony/steps/CompleteStep.jsx +136 -0
  162. package/kanban/client/src/components/ceremony/steps/DatabaseStep.jsx +202 -0
  163. package/kanban/client/src/components/ceremony/steps/DeploymentStep.jsx +123 -0
  164. package/kanban/client/src/components/ceremony/steps/MissionStep.jsx +106 -0
  165. package/kanban/client/src/components/ceremony/steps/ReviewAnswersStep.jsx +329 -0
  166. package/kanban/client/src/components/ceremony/steps/RunningStep.jsx +249 -0
  167. package/kanban/client/src/components/kanban/CardDetailModal.jsx +646 -0
  168. package/kanban/client/src/components/kanban/EpicSection.jsx +146 -0
  169. package/kanban/client/src/components/kanban/FilterToolbar.jsx +222 -0
  170. package/kanban/client/src/components/kanban/GroupingSelector.jsx +63 -0
  171. package/kanban/client/src/components/kanban/KanbanBoard.jsx +211 -0
  172. package/kanban/client/src/components/kanban/KanbanCard.jsx +147 -0
  173. package/kanban/client/src/components/kanban/KanbanColumn.jsx +90 -0
  174. package/kanban/client/src/components/kanban/RefineWorkItemPopup.jsx +784 -0
  175. package/kanban/client/src/components/kanban/RunButton.jsx +162 -0
  176. package/kanban/client/src/components/kanban/SeedButton.jsx +176 -0
  177. package/kanban/client/src/components/layout/LoadingScreen.jsx +82 -0
  178. package/kanban/client/src/components/process/ProcessMonitorBar.jsx +80 -0
  179. package/kanban/client/src/components/settings/AgentEditorPopup.jsx +171 -0
  180. package/kanban/client/src/components/settings/AgentsTab.jsx +381 -0
  181. package/kanban/client/src/components/settings/ApiKeysTab.jsx +142 -0
  182. package/kanban/client/src/components/settings/CeremonyModelsTab.jsx +105 -0
  183. package/kanban/client/src/components/settings/CheckEditorPopup.jsx +507 -0
  184. package/kanban/client/src/components/settings/CostThresholdsTab.jsx +95 -0
  185. package/kanban/client/src/components/settings/ModelPricingTab.jsx +269 -0
  186. package/kanban/client/src/components/settings/OpenAIAuthSection.jsx +412 -0
  187. package/kanban/client/src/components/settings/ServersTab.jsx +121 -0
  188. package/kanban/client/src/components/settings/SettingsModal.jsx +84 -0
  189. package/kanban/client/src/components/stats/CostModal.jsx +384 -0
  190. package/kanban/client/src/components/ui/badge.jsx +27 -0
  191. package/kanban/client/src/components/ui/dialog.jsx +121 -0
  192. package/kanban/client/src/components/ui/tabs.jsx +85 -0
  193. package/kanban/client/src/hooks/__tests__/useGrouping.test.js +232 -0
  194. package/kanban/client/src/hooks/useGrouping.js +177 -0
  195. package/kanban/client/src/hooks/useWebSocket.js +120 -0
  196. package/kanban/client/src/lib/__tests__/api.test.js +196 -0
  197. package/kanban/client/src/lib/__tests__/status-grouping.test.js +94 -0
  198. package/kanban/client/src/lib/api.js +515 -0
  199. package/kanban/client/src/lib/status-grouping.js +154 -0
  200. package/kanban/client/src/lib/utils.js +11 -0
  201. package/kanban/client/src/main.jsx +10 -0
  202. package/kanban/client/src/store/__tests__/kanbanStore.test.js +164 -0
  203. package/kanban/client/src/store/ceremonyStore.js +172 -0
  204. package/kanban/client/src/store/filterStore.js +201 -0
  205. package/kanban/client/src/store/kanbanStore.js +123 -0
  206. package/kanban/client/src/store/processStore.js +65 -0
  207. package/kanban/client/src/store/sprintPlanningStore.js +33 -0
  208. package/kanban/client/src/styles/globals.css +59 -0
  209. package/kanban/client/tailwind.config.js +77 -0
  210. package/kanban/client/vite.config.js +28 -0
  211. package/kanban/client/vitest.config.js +28 -0
  212. package/kanban/dev-start.sh +47 -0
  213. package/kanban/package.json +12 -0
  214. package/kanban/server/index.js +537 -0
  215. package/kanban/server/routes/ceremony.js +454 -0
  216. package/kanban/server/routes/costs.js +163 -0
  217. package/kanban/server/routes/openai-oauth.js +366 -0
  218. package/kanban/server/routes/processes.js +50 -0
  219. package/kanban/server/routes/settings.js +736 -0
  220. package/kanban/server/routes/websocket.js +281 -0
  221. package/kanban/server/routes/work-items.js +487 -0
  222. package/kanban/server/services/CeremonyService.js +1441 -0
  223. package/kanban/server/services/FileSystemScanner.js +95 -0
  224. package/kanban/server/services/FileWatcher.js +144 -0
  225. package/kanban/server/services/HierarchyBuilder.js +196 -0
  226. package/kanban/server/services/ProcessRegistry.js +122 -0
  227. package/kanban/server/services/TaskRunnerService.js +261 -0
  228. package/kanban/server/services/WorkItemReader.js +123 -0
  229. package/kanban/server/services/WorkItemRefineService.js +510 -0
  230. package/kanban/server/start.js +49 -0
  231. package/kanban/server/utils/kanban-logger.js +132 -0
  232. package/kanban/server/utils/markdown.js +91 -0
  233. package/kanban/server/utils/status-grouping.js +107 -0
  234. package/kanban/server/workers/run-task-worker.js +121 -0
  235. package/kanban/server/workers/seed-worker.js +94 -0
  236. package/kanban/server/workers/sponsor-call-worker.js +92 -0
  237. package/kanban/server/workers/sprint-planning-worker.js +212 -0
  238. package/package.json +19 -7
  239. package/cli/agents/documentation.md +0 -302
@@ -0,0 +1,146 @@
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 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
+
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 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")
65
+
66
+ ## DO NOT Rules (flag as critical if violated)
67
+
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
72
+ - DO NOT include phase 2 or future roadmap items
73
+ - DO NOT mention timelines, team size, or delivery schedule
74
+ - DO NOT mention business model, pricing, or monetisation strategy
75
+ - DO NOT include non-functional requirements (performance SLAs, uptime percentages)
76
+ - DO NOT use vague adjectives: "world-class", "seamless", "revolutionary", "cutting-edge", "robust", "innovative"
77
+ - DO NOT add meta-commentary such as "This mission statement aims to…" or "Here is the scope:"
78
+ - DO NOT include competitive positioning or market analysis
79
+
80
+ ## Severity Classification
81
+
82
+ **Critical** — violates a DO NOT rule or fundamentally breaks the structure (score 0 for that criterion)
83
+ **Major** — criterion partially met but needs significant improvement (score 50% for that criterion)
84
+ **Minor** — criterion nearly met, small improvement would help (score 75% for that criterion)
85
+
86
+ ## Examples
87
+
88
+ ### Good mission statement
89
+ "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."
90
+ - Names user: ✓ "home cooks"
91
+ - Clear value: ✓ discover, save, share recipes
92
+ - Specific: ✓ excludes unrelated features
93
+ - No forbidden: ✓
94
+
95
+ ### Weak mission statement (needs improvement)
96
+ "Build a platform that helps users with cooking."
97
+ - Names user: ✗ "users" is too generic (major issue)
98
+ - Clear value: ✗ "helps with cooking" is vague (major issue)
99
+
100
+ ### Good scope bullet (no tech named by user)
101
+ "Users can create and publish recipes with ingredients, steps, and photos"
102
+ - Verb-led: ✓
103
+ - Concrete: ✓
104
+ - v1 only: ✓
105
+
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)
129
+
130
+ ## Important Notes
131
+
132
+ - Return **only** the JSON object — no markdown fences, no preamble, no explanation
133
+ - Ensure the JSON is valid and parseable
134
+ - Be strict but fair: the goal is to produce genuinely useful output, not to find trivial faults
135
+ - If the mission and scope are excellent, say so — don't invent issues
136
+ - `improvementPriorities` lists the most impactful fixes, ordered by impact (highest first)
137
+ - `strengths` lists specific things done well (be concrete, not generic praise)
138
+
139
+ ## CRITICAL: issues[] must contain ONLY actual remaining problems
140
+
141
+ - **NEVER** put resolution notes, fix confirmations, or "no issues found" entries in `issues[]`
142
+ - **NEVER** describe what a previous iteration changed or fixed — that is not an issue
143
+ - **NEVER** add entries like "The refinement was applied successfully" or "No action required"
144
+ - If there are no problems, `issues` **must be an empty array `[]`**
145
+ - Every entry in `issues[]` must describe a specific defect that **still exists** in the current text
146
+ - Positive observations belong in `strengths[]`, not `issues[]`
@@ -0,0 +1,122 @@
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
+ ## 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
+
19
+ ## Output Format
20
+
21
+ Return ONLY valid JSON with this exact structure:
22
+
23
+ ```json
24
+ {
25
+ "deploymentType": "local|docker|kubernetes|serverless|cloud|hybrid",
26
+ "hasCloud": false,
27
+ "hasCI_CD": false,
28
+ "hasMobileApp": false,
29
+ "hasFrontend": true,
30
+ "hasPublicAPI": false,
31
+ "techStack": ["node.js", "react", "postgresql"],
32
+ "teamContext": "solo|small|medium|large",
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"
35
+ }
36
+ ```
37
+
38
+ ## Field Definitions
39
+
40
+ ### deploymentType
41
+ - `"local"` — runs only on dev machines, no deployment infrastructure
42
+ - `"docker"` — containerized with Docker/Docker Compose, no cloud orchestration
43
+ - `"kubernetes"` — container orchestration via k8s or similar
44
+ - `"serverless"` — functions-as-a-service (Lambda, Cloud Functions, etc.)
45
+ - `"cloud"` — deployed to cloud provider (AWS, GCP, Azure, Vercel, Render, etc.)
46
+ - `"hybrid"` — mix of deployment targets
47
+
48
+ **If not mentioned**: default to `"local"`.
49
+
50
+ ### hasCloud
51
+ `true` if the scope mentions: AWS, GCP, Azure, S3, RDS, Cloud Run, Vercel, Netlify, Render, DigitalOcean, or any cloud-hosted managed service. `false` otherwise.
52
+
53
+ ### hasCI_CD
54
+ `true` if the scope mentions: CI/CD, GitHub Actions, Jenkins, CircleCI, GitLab CI, automated deployment pipelines, or continuous delivery. `false` otherwise.
55
+
56
+ ### hasMobileApp
57
+ `true` if the scope includes a mobile application (iOS, Android, React Native, Flutter, Expo). `false` otherwise.
58
+
59
+ ### hasFrontend
60
+ `true` if the scope includes a web UI, browser-based interface, dashboard, or any visual frontend. `false` for pure backend/API/CLI projects.
61
+
62
+ ### hasPublicAPI
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.
64
+
65
+ ### techStack
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"
68
+ - "python", "django", "fastapi", "flask"
69
+ - "java", "spring boot", "go", "rust", "php", "laravel"
70
+ - "postgresql", "mysql", "mongodb", "redis", "sqlite"
71
+ - "docker", "kubernetes", "nginx", "rabbitmq", "kafka"
72
+ - "typescript", "graphql", "rest", "prisma", "drizzle"
73
+
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).
75
+
76
+ ### teamContext
77
+ - `"solo"` — one developer
78
+ - `"small"` — 2–5 developers
79
+ - `"medium"` — 6–20 developers
80
+ - `"large"` — 20+ developers
81
+
82
+ If not mentioned, default to `"small"`.
83
+
84
+ ### projectType
85
+ - `"web-application"` — full-stack or frontend-heavy web app
86
+ - `"api"` — backend API service, no frontend
87
+ - `"mobile-app"` — primary interface is mobile
88
+ - `"data-pipeline"` — ETL, analytics, data processing
89
+ - `"library"` — npm package, SDK, or reusable library
90
+ - `"cli-tool"` — command-line interface tool
91
+ - `"other"` — does not fit above categories
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
+
96
+ ## Extraction Rules
97
+
98
+ 1. **Evidence-based only** — if a characteristic is not mentioned, use the documented default, not a guess
99
+ 2. **No hallucination** — never add technologies or characteristics not in the source text
100
+ 3. **Conservative techStack** — only include clearly named technologies
101
+ 4. **Return raw JSON** — no markdown code blocks, no explanation text, just the JSON object
102
+
103
+ ## Example
104
+
105
+ **Input scope:**
106
+ > "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."
107
+
108
+ **Output:**
109
+ ```json
110
+ {
111
+ "deploymentType": "docker",
112
+ "hasCloud": false,
113
+ "hasCI_CD": false,
114
+ "hasMobileApp": false,
115
+ "hasFrontend": true,
116
+ "hasPublicAPI": false,
117
+ "techStack": ["react", "node.js", "express.js", "postgresql", "docker"],
118
+ "teamContext": "small",
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."
121
+ }
122
+ ```
@@ -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
+ }