@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,317 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Story Validator Generator Script
5
+ *
6
+ * Generates story validator agent .md files and verification rule .json files
7
+ * Story validators focus on implementation-level details and testability
8
+ *
9
+ * Usage: node src/cli/tools/generate-story-validators.js
10
+ */
11
+
12
+ import fs from 'fs';
13
+ import path from 'path';
14
+ import { fileURLToPath } from 'url';
15
+
16
+ const __filename = fileURLToPath(import.meta.url);
17
+ const __dirname = path.dirname(__filename);
18
+
19
+ const AGENTS_PATH = path.join(__dirname, '..', 'agents');
20
+
21
+ // Story validator configurations (matching epic validators)
22
+ const STORY_DOMAINS = [
23
+ 'developer', 'qa', 'test-architect', // Universal validators
24
+ 'security', 'devops', 'database', 'frontend', 'api', 'cloud',
25
+ 'ux', 'ui', 'solution-architect', 'mobile', 'backend', 'data'
26
+ ];
27
+
28
+ /**
29
+ * Generate story validator markdown template
30
+ */
31
+ function generateStoryValidatorMd(domain) {
32
+ const domainTitle = domain.split('-').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(' ');
33
+
34
+ return `# Story Validator - ${domainTitle} Specialist
35
+
36
+ ## Role
37
+ You are an expert ${domainTitle.toLowerCase()} reviewing user story implementations. Your role is to validate that story acceptance criteria are complete, testable, and implementable from a ${domain} perspective.
38
+
39
+ ## Validation Scope
40
+
41
+ **What to Validate:**
42
+ - Acceptance criteria are specific, measurable, and testable
43
+ - Story includes all ${domain}-specific implementation requirements
44
+ - Technical details are sufficient for developers to implement
45
+ - Dependencies are clearly identified
46
+ - Story is appropriately sized (not too large or too small)
47
+ - ${domainTitle} best practices are followed
48
+
49
+ **What NOT to Validate:**
50
+ - High-level architecture (that's for Epic validation)
51
+ - Detailed code implementation (that's for Task level)
52
+ - Estimates or timelines
53
+
54
+ ## Validation Checklist
55
+
56
+ ### Acceptance Criteria Quality (40 points)
57
+ - [ ] Each acceptance criterion is testable and measurable
58
+ - [ ] Criteria cover happy path, edge cases, and error scenarios
59
+ - [ ] Criteria are independent and non-overlapping
60
+ - [ ] ${domainTitle} requirements are explicitly stated
61
+
62
+ ### Implementation Clarity (25 points)
63
+ - [ ] Story provides enough ${domain} detail for implementation
64
+ - [ ] Technical constraints and assumptions are explicit
65
+ - [ ] ${domainTitle} patterns and approaches are specified
66
+
67
+ ### Testability (20 points)
68
+ - [ ] Story can be tested at multiple levels (unit, integration, e2e)
69
+ - [ ] Test data requirements are clear
70
+ - [ ] Expected outcomes are precisely defined
71
+
72
+ ### Scope & Dependencies (10 points)
73
+ - [ ] Story is appropriately scoped (single cohesive capability, 3-8 ACs)
74
+ - [ ] Dependencies on other stories are explicit
75
+ - [ ] Story is independent enough to be delivered incrementally
76
+
77
+ ### Best Practices (5 points)
78
+ - [ ] Follows ${domain} best practices
79
+ - [ ] Avoids ${domain} anti-patterns
80
+
81
+ ## Issue Categories
82
+
83
+ Use these categories when reporting issues:
84
+
85
+ - \`acceptance-criteria\` - Vague, untestable, or incomplete criteria
86
+ - \`implementation-clarity\` - Missing ${domain} details, unclear requirements
87
+ - \`testability\` - Difficult to test, unclear expected outcomes
88
+ - \`scope\` - Story too large/small, unclear boundaries
89
+ - \`dependencies\` - Missing or unclear dependencies
90
+ - \`best-practices\` - Violates ${domain} standards
91
+
92
+ ## Issue Severity Levels
93
+
94
+ - \`critical\` - Story cannot be implemented (blocking issue, major ambiguity)
95
+ - \`major\` - Significant gap (should fix before implementation, impacts quality)
96
+ - \`minor\` - Enhancement opportunity (can fix during implementation)
97
+
98
+ ## Output Format
99
+
100
+ Return JSON with this exact structure:
101
+
102
+ \`\`\`json
103
+ {
104
+ "validationStatus": "needs-improvement|acceptable|excellent",
105
+ "overallScore": 0-100,
106
+ "issues": [
107
+ {
108
+ "severity": "critical|major|minor",
109
+ "category": "acceptance-criteria|implementation-clarity|testability|scope|dependencies|best-practices",
110
+ "description": "Clear description of the issue",
111
+ "suggestion": "Specific actionable fix",
112
+ "example": "Optional example of how to fix"
113
+ }
114
+ ],
115
+ "strengths": ["What the Story does well from ${domain} perspective"],
116
+ "improvementPriorities": ["Top 3 improvements ranked by impact"],
117
+ "readyForImplementation": boolean,
118
+ "estimatedComplexity": "low|medium|high",
119
+ "domainSpecificNotes": "Any additional ${domain} context or implementation guidance"
120
+ }
121
+ \`\`\`
122
+
123
+ ## Scoring Guidelines
124
+
125
+ - **90-100 (Excellent)**: Crystal clear acceptance criteria, all ${domain} details specified, highly testable
126
+ - **70-89 (Acceptable)**: Core requirements clear, minor gaps acceptable, implementable with clarification
127
+ - **0-69 (Needs Improvement)**: Critical ambiguities, missing ${domain} requirements, must fix before implementation
128
+
129
+ ## Example Validation
130
+
131
+ **Story:**
132
+ \`\`\`
133
+ Name: User Login
134
+ User Type: All Users
135
+ Description: Users can log in with email and password
136
+ Acceptance Criteria:
137
+ - User can enter email and password
138
+ - Valid credentials grant access
139
+ - Invalid credentials show error
140
+ \`\`\`
141
+
142
+ **Validation Output:**
143
+ \`\`\`json
144
+ {
145
+ "validationStatus": "needs-improvement",
146
+ "overallScore": 62,
147
+ "issues": [
148
+ {
149
+ "severity": "major",
150
+ "category": "acceptance-criteria",
151
+ "description": "Acceptance criteria too vague - what does 'grant access' mean? What happens after login?",
152
+ "suggestion": "Specify post-login behavior: redirect to dashboard, persist session, show welcome message.",
153
+ "example": "AC: Upon successful login, user is redirected to /dashboard with welcome notification, session persists for 7 days"
154
+ },
155
+ {
156
+ "severity": "major",
157
+ "category": "implementation-clarity",
158
+ "description": "Missing ${domain} implementation details: ${domain === 'security' ? 'password hashing, session management' : domain === 'frontend' ? 'form validation, loading states' : domain === 'backend' ? 'API endpoint, authentication logic' : domain === 'database' ? 'user lookup query, credential verification' : 'implementation approach'}",
159
+ "suggestion": "Add technical requirements specific to ${domain}.",
160
+ "example": "Technical: ${domain === 'security' ? 'Verify bcrypt hash, create JWT with 1hr expiry' : domain === 'frontend' ? 'Validate email format, show spinner during API call' : domain === 'backend' ? 'POST /auth/login endpoint, verify credentials, return JWT' : domain === 'database' ? 'Query users table by email, verify password_hash' : 'Standard implementation pattern'}"
161
+ },
162
+ {
163
+ "severity": "major",
164
+ "category": "testability",
165
+ "description": "Error scenario too vague - what types of invalid credentials? (wrong password, nonexistent user, locked account)",
166
+ "suggestion": "Specify error scenarios: wrong password, nonexistent email, locked account, expired password.",
167
+ "example": "AC: Show 'Invalid credentials' for wrong password, 'Account not found' for nonexistent email, 'Account locked' after 5 failed attempts"
168
+ }
169
+ ],
170
+ "strengths": [
171
+ "Core user flows identified (login success and failure)",
172
+ "User type specified (all users - no role restrictions)"
173
+ ],
174
+ "improvementPriorities": [
175
+ "1. Clarify post-login behavior and session management",
176
+ "2. Add ${domain}-specific implementation details",
177
+ "3. Specify error scenarios precisely (wrong password vs. nonexistent user vs. locked account)"
178
+ ],
179
+ "readyForImplementation": false,
180
+ "estimatedComplexity": "medium",
181
+ "domainSpecificNotes": "${domain === 'security' ? 'Security story should also specify: rate limiting (prevent brute force), HTTPS requirement, session timeout handling' : domain === 'frontend' ? 'Frontend story should specify: form layout, error message positioning, loading states, password visibility toggle' : domain === 'backend' ? 'Backend story should specify: password verification logic, JWT payload structure, error response format' : domain === 'database' ? 'Database story should specify: user lookup index, credential comparison method' : 'Consider additional ' + domain + ' requirements based on project context'}"
182
+ }
183
+ \`\`\`
184
+ `;
185
+ }
186
+
187
+ /**
188
+ * Generate story verification rules JSON
189
+ */
190
+ function generateStoryVerificationJson(domain) {
191
+ return {
192
+ agentName: `validator-story-${domain}`,
193
+ version: '1.0.0',
194
+ description: `Verification rules for ${domain} story validator`,
195
+ requiredFields: [
196
+ 'validationStatus',
197
+ 'overallScore',
198
+ 'issues',
199
+ 'strengths',
200
+ 'improvementPriorities',
201
+ 'readyForImplementation',
202
+ 'estimatedComplexity',
203
+ 'domainSpecificNotes'
204
+ ],
205
+ fieldValidation: {
206
+ validationStatus: {
207
+ type: 'string',
208
+ allowedValues: ['needs-improvement', 'acceptable', 'excellent'],
209
+ errorMessage: 'validationStatus must be one of: needs-improvement, acceptable, excellent'
210
+ },
211
+ overallScore: {
212
+ type: 'number',
213
+ min: 0,
214
+ max: 100,
215
+ errorMessage: 'overallScore must be between 0 and 100'
216
+ },
217
+ issues: {
218
+ type: 'array',
219
+ minLength: 0,
220
+ itemValidation: {
221
+ requiredFields: ['severity', 'category', 'description', 'suggestion'],
222
+ severity: {
223
+ type: 'string',
224
+ allowedValues: ['critical', 'major', 'minor']
225
+ },
226
+ category: {
227
+ type: 'string',
228
+ allowedValues: [
229
+ 'acceptance-criteria',
230
+ 'implementation-clarity',
231
+ 'testability',
232
+ 'scope',
233
+ 'dependencies',
234
+ 'best-practices'
235
+ ]
236
+ }
237
+ }
238
+ },
239
+ strengths: {
240
+ type: 'array',
241
+ minLength: 0
242
+ },
243
+ improvementPriorities: {
244
+ type: 'array',
245
+ minLength: 0,
246
+ maxLength: 5
247
+ },
248
+ readyForImplementation: {
249
+ type: 'boolean'
250
+ },
251
+ estimatedComplexity: {
252
+ type: 'string',
253
+ allowedValues: ['low', 'medium', 'high'],
254
+ errorMessage: 'estimatedComplexity must be one of: low, medium, high'
255
+ },
256
+ domainSpecificNotes: {
257
+ type: 'string'
258
+ }
259
+ },
260
+ consistencyRules: [
261
+ {
262
+ rule: 'score_status_alignment',
263
+ description: 'Score should align with validation status',
264
+ check: 'if validationStatus is \'excellent\', score should be >= 90; if \'acceptable\', 70-89; if \'needs-improvement\', < 70'
265
+ },
266
+ {
267
+ rule: 'ready_for_implementation_alignment',
268
+ description: 'readyForImplementation should be false if validationStatus is \'needs-improvement\'',
269
+ check: 'if validationStatus is \'needs-improvement\', readyForImplementation must be false'
270
+ },
271
+ {
272
+ rule: 'critical_issues_block',
273
+ description: 'Critical issues should result in needs-improvement status',
274
+ check: 'if any issue has severity \'critical\', validationStatus should be \'needs-improvement\''
275
+ }
276
+ ]
277
+ };
278
+ }
279
+
280
+ /**
281
+ * Main generation function
282
+ */
283
+ function generateStoryValidators() {
284
+ console.log('Generating story validator files...\n');
285
+
286
+ let created = 0;
287
+
288
+ STORY_DOMAINS.forEach(domain => {
289
+ const mdFilename = `validator-story-${domain}.md`;
290
+ const jsonFilename = `validator-story-${domain}.json`;
291
+
292
+ // Generate .md file
293
+ const mdPath = path.join(AGENTS_PATH, mdFilename);
294
+ const mdContent = generateStoryValidatorMd(domain);
295
+ fs.writeFileSync(mdPath, mdContent, 'utf8');
296
+ console.log(`Created ${mdFilename}`);
297
+ created++;
298
+
299
+ // Generate .json file
300
+ const jsonPath = path.join(AGENTS_PATH, jsonFilename);
301
+ const jsonContent = JSON.stringify(generateStoryVerificationJson(domain), null, 2);
302
+ fs.writeFileSync(jsonPath, jsonContent, 'utf8');
303
+ console.log(`Created ${jsonFilename}`);
304
+ created++;
305
+ });
306
+
307
+ console.log(`\nSummary:`);
308
+ console.log(` Created: ${created} files (${created / 2} validators)`);
309
+ console.log(`\nAll story validators generated!`);
310
+ console.log(`\nNext steps:`);
311
+ console.log(` 1. Review generated validators in ${AGENTS_PATH}`);
312
+ console.log(` 2. Integrate into sprint-planning-processor.js`);
313
+ console.log(` 3. Run tests to verify functionality`);
314
+ }
315
+
316
+ // Run generator
317
+ generateStoryValidators();