@agile-vibe-coding/avc 0.1.0 → 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.
- package/README.md +2 -0
- package/cli/agent-loader.js +21 -0
- package/cli/agents/agent-selector.md +129 -0
- package/cli/agents/architecture-recommender.md +418 -0
- package/cli/agents/database-deep-dive.md +470 -0
- package/cli/agents/database-recommender.md +634 -0
- package/cli/agents/doc-distributor.md +176 -0
- package/cli/agents/documentation-updater.md +203 -0
- package/cli/agents/epic-story-decomposer.md +280 -0
- package/cli/agents/feature-context-generator.md +91 -0
- package/cli/agents/gap-checker-epic.md +52 -0
- package/cli/agents/impact-checker-story.md +51 -0
- package/cli/agents/migration-guide-generator.md +305 -0
- package/cli/agents/mission-scope-generator.md +79 -0
- package/cli/agents/mission-scope-validator.md +112 -0
- package/cli/agents/project-context-extractor.md +107 -0
- package/cli/agents/project-documentation-creator.json +226 -0
- package/cli/agents/project-documentation-creator.md +595 -0
- package/cli/agents/question-prefiller.md +269 -0
- package/cli/agents/refiner-epic.md +39 -0
- package/cli/agents/refiner-story.md +42 -0
- package/cli/agents/solver-epic-api.json +15 -0
- package/cli/agents/solver-epic-api.md +39 -0
- package/cli/agents/solver-epic-backend.json +15 -0
- package/cli/agents/solver-epic-backend.md +39 -0
- package/cli/agents/solver-epic-cloud.json +15 -0
- package/cli/agents/solver-epic-cloud.md +39 -0
- package/cli/agents/solver-epic-data.json +15 -0
- package/cli/agents/solver-epic-data.md +39 -0
- package/cli/agents/solver-epic-database.json +15 -0
- package/cli/agents/solver-epic-database.md +39 -0
- package/cli/agents/solver-epic-developer.json +15 -0
- package/cli/agents/solver-epic-developer.md +39 -0
- package/cli/agents/solver-epic-devops.json +15 -0
- package/cli/agents/solver-epic-devops.md +39 -0
- package/cli/agents/solver-epic-frontend.json +15 -0
- package/cli/agents/solver-epic-frontend.md +39 -0
- package/cli/agents/solver-epic-mobile.json +15 -0
- package/cli/agents/solver-epic-mobile.md +39 -0
- package/cli/agents/solver-epic-qa.json +15 -0
- package/cli/agents/solver-epic-qa.md +39 -0
- package/cli/agents/solver-epic-security.json +15 -0
- package/cli/agents/solver-epic-security.md +39 -0
- package/cli/agents/solver-epic-solution-architect.json +15 -0
- package/cli/agents/solver-epic-solution-architect.md +39 -0
- package/cli/agents/solver-epic-test-architect.json +15 -0
- package/cli/agents/solver-epic-test-architect.md +39 -0
- package/cli/agents/solver-epic-ui.json +15 -0
- package/cli/agents/solver-epic-ui.md +39 -0
- package/cli/agents/solver-epic-ux.json +15 -0
- package/cli/agents/solver-epic-ux.md +39 -0
- package/cli/agents/solver-story-api.json +15 -0
- package/cli/agents/solver-story-api.md +39 -0
- package/cli/agents/solver-story-backend.json +15 -0
- package/cli/agents/solver-story-backend.md +39 -0
- package/cli/agents/solver-story-cloud.json +15 -0
- package/cli/agents/solver-story-cloud.md +39 -0
- package/cli/agents/solver-story-data.json +15 -0
- package/cli/agents/solver-story-data.md +39 -0
- package/cli/agents/solver-story-database.json +15 -0
- package/cli/agents/solver-story-database.md +39 -0
- package/cli/agents/solver-story-developer.json +15 -0
- package/cli/agents/solver-story-developer.md +39 -0
- package/cli/agents/solver-story-devops.json +15 -0
- package/cli/agents/solver-story-devops.md +39 -0
- package/cli/agents/solver-story-frontend.json +15 -0
- package/cli/agents/solver-story-frontend.md +39 -0
- package/cli/agents/solver-story-mobile.json +15 -0
- package/cli/agents/solver-story-mobile.md +39 -0
- package/cli/agents/solver-story-qa.json +15 -0
- package/cli/agents/solver-story-qa.md +39 -0
- package/cli/agents/solver-story-security.json +15 -0
- package/cli/agents/solver-story-security.md +39 -0
- package/cli/agents/solver-story-solution-architect.json +15 -0
- package/cli/agents/solver-story-solution-architect.md +39 -0
- package/cli/agents/solver-story-test-architect.json +15 -0
- package/cli/agents/solver-story-test-architect.md +39 -0
- package/cli/agents/solver-story-ui.json +15 -0
- package/cli/agents/solver-story-ui.md +39 -0
- package/cli/agents/solver-story-ux.json +15 -0
- package/cli/agents/solver-story-ux.md +39 -0
- package/cli/agents/story-doc-enricher.md +133 -0
- package/cli/agents/suggestion-business-analyst.md +88 -0
- package/cli/agents/suggestion-deployment-architect.md +263 -0
- package/cli/agents/suggestion-product-manager.md +129 -0
- package/cli/agents/suggestion-security-specialist.md +156 -0
- package/cli/agents/suggestion-technical-architect.md +269 -0
- package/cli/agents/suggestion-ux-researcher.md +93 -0
- package/cli/agents/task-subtask-decomposer.md +188 -0
- package/cli/agents/validator-documentation.json +152 -0
- package/cli/agents/validator-documentation.md +453 -0
- package/cli/agents/validator-epic-api.json +93 -0
- package/cli/agents/validator-epic-api.md +137 -0
- package/cli/agents/validator-epic-backend.json +93 -0
- package/cli/agents/validator-epic-backend.md +130 -0
- package/cli/agents/validator-epic-cloud.json +93 -0
- package/cli/agents/validator-epic-cloud.md +137 -0
- package/cli/agents/validator-epic-data.json +93 -0
- package/cli/agents/validator-epic-data.md +130 -0
- package/cli/agents/validator-epic-database.json +93 -0
- package/cli/agents/validator-epic-database.md +137 -0
- package/cli/agents/validator-epic-developer.json +74 -0
- package/cli/agents/validator-epic-developer.md +153 -0
- package/cli/agents/validator-epic-devops.json +74 -0
- package/cli/agents/validator-epic-devops.md +153 -0
- package/cli/agents/validator-epic-frontend.json +74 -0
- package/cli/agents/validator-epic-frontend.md +153 -0
- package/cli/agents/validator-epic-mobile.json +93 -0
- package/cli/agents/validator-epic-mobile.md +130 -0
- package/cli/agents/validator-epic-qa.json +93 -0
- package/cli/agents/validator-epic-qa.md +130 -0
- package/cli/agents/validator-epic-security.json +74 -0
- package/cli/agents/validator-epic-security.md +154 -0
- package/cli/agents/validator-epic-solution-architect.json +74 -0
- package/cli/agents/validator-epic-solution-architect.md +156 -0
- package/cli/agents/validator-epic-test-architect.json +93 -0
- package/cli/agents/validator-epic-test-architect.md +130 -0
- package/cli/agents/validator-epic-ui.json +93 -0
- package/cli/agents/validator-epic-ui.md +130 -0
- package/cli/agents/validator-epic-ux.json +93 -0
- package/cli/agents/validator-epic-ux.md +130 -0
- package/cli/agents/validator-selector.md +211 -0
- package/cli/agents/validator-story-api.json +104 -0
- package/cli/agents/validator-story-api.md +152 -0
- package/cli/agents/validator-story-backend.json +104 -0
- package/cli/agents/validator-story-backend.md +152 -0
- package/cli/agents/validator-story-cloud.json +104 -0
- package/cli/agents/validator-story-cloud.md +152 -0
- package/cli/agents/validator-story-data.json +104 -0
- package/cli/agents/validator-story-data.md +152 -0
- package/cli/agents/validator-story-database.json +104 -0
- package/cli/agents/validator-story-database.md +152 -0
- package/cli/agents/validator-story-developer.json +104 -0
- package/cli/agents/validator-story-developer.md +152 -0
- package/cli/agents/validator-story-devops.json +104 -0
- package/cli/agents/validator-story-devops.md +152 -0
- package/cli/agents/validator-story-frontend.json +104 -0
- package/cli/agents/validator-story-frontend.md +152 -0
- package/cli/agents/validator-story-mobile.json +104 -0
- package/cli/agents/validator-story-mobile.md +152 -0
- package/cli/agents/validator-story-qa.json +104 -0
- package/cli/agents/validator-story-qa.md +152 -0
- package/cli/agents/validator-story-security.json +104 -0
- package/cli/agents/validator-story-security.md +152 -0
- package/cli/agents/validator-story-solution-architect.json +104 -0
- package/cli/agents/validator-story-solution-architect.md +152 -0
- package/cli/agents/validator-story-test-architect.json +104 -0
- package/cli/agents/validator-story-test-architect.md +152 -0
- package/cli/agents/validator-story-ui.json +104 -0
- package/cli/agents/validator-story-ui.md +152 -0
- package/cli/agents/validator-story-ux.json +104 -0
- package/cli/agents/validator-story-ux.md +152 -0
- package/cli/ansi-colors.js +21 -0
- package/cli/build-docs.js +298 -0
- package/cli/ceremony-history.js +369 -0
- package/cli/command-logger.js +245 -0
- package/cli/components/static-output.js +63 -0
- package/cli/console-output-manager.js +94 -0
- package/cli/docs-sync.js +306 -0
- package/cli/epic-story-validator.js +1174 -0
- package/cli/evaluation-prompts.js +1008 -0
- package/cli/execution-context.js +195 -0
- package/cli/generate-summary-table.js +340 -0
- package/cli/index.js +3 -25
- package/cli/init-model-config.js +697 -0
- package/cli/init.js +1765 -100
- package/cli/kanban-server-manager.js +228 -0
- package/cli/llm-claude.js +109 -0
- package/cli/llm-gemini.js +115 -0
- package/cli/llm-mock.js +233 -0
- package/cli/llm-openai.js +233 -0
- package/cli/llm-provider.js +300 -0
- package/cli/llm-token-limits.js +102 -0
- package/cli/llm-verifier.js +454 -0
- package/cli/logger.js +32 -5
- package/cli/message-constants.js +58 -0
- package/cli/message-manager.js +334 -0
- package/cli/message-types.js +96 -0
- package/cli/messaging-api.js +297 -0
- package/cli/model-pricing.js +169 -0
- package/cli/model-query-engine.js +468 -0
- package/cli/model-recommendation-analyzer.js +495 -0
- package/cli/model-selector.js +269 -0
- package/cli/output-buffer.js +107 -0
- package/cli/process-manager.js +332 -0
- package/cli/repl-ink.js +5840 -504
- package/cli/repl-old.js +4 -4
- package/cli/seed-processor.js +792 -0
- package/cli/sprint-planning-processor.js +1813 -0
- package/cli/template-processor.js +2306 -108
- package/cli/templates/project.md +25 -8
- package/cli/templates/vitepress-config.mts.template +34 -0
- package/cli/token-tracker.js +520 -0
- package/cli/tools/generate-story-validators.js +317 -0
- package/cli/tools/generate-validators.js +669 -0
- package/cli/update-checker.js +19 -17
- package/cli/update-notifier.js +4 -4
- package/cli/validation-router.js +605 -0
- package/cli/verification-tracker.js +563 -0
- package/kanban/README.md +386 -0
- package/kanban/client/README.md +205 -0
- package/kanban/client/components.json +20 -0
- package/kanban/client/dist/assets/index-CiD8PS2e.js +306 -0
- package/kanban/client/dist/assets/index-nLh0m82Q.css +1 -0
- package/kanban/client/dist/index.html +16 -0
- package/kanban/client/dist/vite.svg +1 -0
- package/kanban/client/index.html +15 -0
- package/kanban/client/package-lock.json +9442 -0
- package/kanban/client/package.json +44 -0
- package/kanban/client/postcss.config.js +6 -0
- package/kanban/client/public/vite.svg +1 -0
- package/kanban/client/src/App.jsx +622 -0
- package/kanban/client/src/components/ProjectFileEditorPopup.jsx +117 -0
- package/kanban/client/src/components/ceremony/AskArchPopup.jsx +416 -0
- package/kanban/client/src/components/ceremony/AskModelPopup.jsx +616 -0
- package/kanban/client/src/components/ceremony/CeremonyWorkflowModal.jsx +946 -0
- package/kanban/client/src/components/ceremony/EpicStorySelectionModal.jsx +254 -0
- package/kanban/client/src/components/ceremony/SponsorCallModal.jsx +619 -0
- package/kanban/client/src/components/ceremony/SprintPlanningModal.jsx +704 -0
- package/kanban/client/src/components/ceremony/steps/ArchitectureStep.jsx +150 -0
- package/kanban/client/src/components/ceremony/steps/CompleteStep.jsx +154 -0
- package/kanban/client/src/components/ceremony/steps/DatabaseStep.jsx +202 -0
- package/kanban/client/src/components/ceremony/steps/DeploymentStep.jsx +123 -0
- package/kanban/client/src/components/ceremony/steps/MissionStep.jsx +106 -0
- package/kanban/client/src/components/ceremony/steps/ReviewAnswersStep.jsx +125 -0
- package/kanban/client/src/components/ceremony/steps/RunningStep.jsx +228 -0
- package/kanban/client/src/components/kanban/CardDetailModal.jsx +559 -0
- package/kanban/client/src/components/kanban/EpicSection.jsx +146 -0
- package/kanban/client/src/components/kanban/FilterToolbar.jsx +222 -0
- package/kanban/client/src/components/kanban/GroupingSelector.jsx +57 -0
- package/kanban/client/src/components/kanban/KanbanBoard.jsx +211 -0
- package/kanban/client/src/components/kanban/KanbanCard.jsx +138 -0
- package/kanban/client/src/components/kanban/KanbanColumn.jsx +90 -0
- package/kanban/client/src/components/kanban/RefineWorkItemPopup.jsx +789 -0
- package/kanban/client/src/components/layout/LoadingScreen.jsx +82 -0
- package/kanban/client/src/components/process/ProcessMonitorBar.jsx +80 -0
- package/kanban/client/src/components/settings/AgentEditorPopup.jsx +171 -0
- package/kanban/client/src/components/settings/AgentsTab.jsx +353 -0
- package/kanban/client/src/components/settings/ApiKeysTab.jsx +113 -0
- package/kanban/client/src/components/settings/CeremonyModelsTab.jsx +98 -0
- package/kanban/client/src/components/settings/CostThresholdsTab.jsx +94 -0
- package/kanban/client/src/components/settings/ModelPricingTab.jsx +204 -0
- package/kanban/client/src/components/settings/ServersTab.jsx +121 -0
- package/kanban/client/src/components/settings/SettingsModal.jsx +84 -0
- package/kanban/client/src/components/stats/CostModal.jsx +353 -0
- package/kanban/client/src/components/ui/badge.jsx +27 -0
- package/kanban/client/src/components/ui/dialog.jsx +121 -0
- package/kanban/client/src/components/ui/tabs.jsx +85 -0
- package/kanban/client/src/hooks/__tests__/useGrouping.test.js +232 -0
- package/kanban/client/src/hooks/useGrouping.js +118 -0
- package/kanban/client/src/hooks/useWebSocket.js +120 -0
- package/kanban/client/src/lib/__tests__/api.test.js +196 -0
- package/kanban/client/src/lib/__tests__/status-grouping.test.js +94 -0
- package/kanban/client/src/lib/api.js +401 -0
- package/kanban/client/src/lib/status-grouping.js +144 -0
- package/kanban/client/src/lib/utils.js +11 -0
- package/kanban/client/src/main.jsx +10 -0
- package/kanban/client/src/store/__tests__/kanbanStore.test.js +164 -0
- package/kanban/client/src/store/ceremonyStore.js +172 -0
- package/kanban/client/src/store/filterStore.js +201 -0
- package/kanban/client/src/store/kanbanStore.js +115 -0
- package/kanban/client/src/store/processStore.js +65 -0
- package/kanban/client/src/store/sprintPlanningStore.js +33 -0
- package/kanban/client/src/styles/globals.css +59 -0
- package/kanban/client/tailwind.config.js +77 -0
- package/kanban/client/vite.config.js +28 -0
- package/kanban/client/vitest.config.js +28 -0
- package/kanban/dev-start.sh +47 -0
- package/kanban/package.json +12 -0
- package/kanban/server/index.js +516 -0
- package/kanban/server/routes/ceremony.js +305 -0
- package/kanban/server/routes/costs.js +157 -0
- package/kanban/server/routes/processes.js +50 -0
- package/kanban/server/routes/settings.js +303 -0
- package/kanban/server/routes/websocket.js +276 -0
- package/kanban/server/routes/work-items.js +347 -0
- package/kanban/server/services/CeremonyService.js +1190 -0
- package/kanban/server/services/FileSystemScanner.js +95 -0
- package/kanban/server/services/FileWatcher.js +144 -0
- package/kanban/server/services/HierarchyBuilder.js +196 -0
- package/kanban/server/services/ProcessRegistry.js +122 -0
- package/kanban/server/services/WorkItemReader.js +123 -0
- package/kanban/server/services/WorkItemRefineService.js +510 -0
- package/kanban/server/start.js +49 -0
- package/kanban/server/utils/kanban-logger.js +132 -0
- package/kanban/server/utils/markdown.js +91 -0
- package/kanban/server/utils/status-grouping.js +107 -0
- package/kanban/server/workers/sponsor-call-worker.js +84 -0
- package/kanban/server/workers/sprint-planning-worker.js +130 -0
- package/package.json +34 -7
|
@@ -0,0 +1,669 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Validator Generator Script
|
|
5
|
+
*
|
|
6
|
+
* Generates validator agent .md files and verification rule .json files
|
|
7
|
+
* for all remaining domains based on established patterns.
|
|
8
|
+
*
|
|
9
|
+
* Usage: node src/cli/tools/generate-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
|
+
// Validator domain configurations
|
|
22
|
+
const VALIDATORS = {
|
|
23
|
+
epic: [
|
|
24
|
+
{
|
|
25
|
+
name: 'database',
|
|
26
|
+
title: 'Database Specialist',
|
|
27
|
+
expertise: 'database design, data modeling, query optimization, and database administration',
|
|
28
|
+
scope: {
|
|
29
|
+
validate: [
|
|
30
|
+
'Data model design and schema definitions',
|
|
31
|
+
'Database performance and query optimization',
|
|
32
|
+
'Data integrity and consistency requirements',
|
|
33
|
+
'Backup, recovery, and disaster recovery strategies',
|
|
34
|
+
'Database scalability (sharding, replication, partitioning)',
|
|
35
|
+
'Migration and schema evolution strategies'
|
|
36
|
+
],
|
|
37
|
+
categories: [
|
|
38
|
+
'completeness - Missing tables/entities, unclear relationships',
|
|
39
|
+
'clarity - Ambiguous data model, unclear database boundaries',
|
|
40
|
+
'technical-depth - Insufficient normalization/denormalization strategy, missing indexes',
|
|
41
|
+
'consistency - Conflicting data requirements or constraints',
|
|
42
|
+
'best-practices - Violates database design principles (normalization, indexing)'
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
example: {
|
|
46
|
+
name: 'User Data Storage',
|
|
47
|
+
domain: 'data-processing',
|
|
48
|
+
description: 'Store user data',
|
|
49
|
+
features: ['user table', 'profile storage'],
|
|
50
|
+
issues: [
|
|
51
|
+
{
|
|
52
|
+
severity: 'critical',
|
|
53
|
+
category: 'completeness',
|
|
54
|
+
description: 'Database epic missing schema definition and relationships',
|
|
55
|
+
suggestion: 'Define complete schema: tables, columns, data types, primary keys, foreign keys, indexes.',
|
|
56
|
+
example: 'Schema: users table (id PK, email unique, password_hash, created_at), profiles table (user_id FK, bio, avatar_url)'
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
severity: 'major',
|
|
60
|
+
category: 'technical-depth',
|
|
61
|
+
description: 'No mention of database technology (SQL vs NoSQL) or specific database engine',
|
|
62
|
+
suggestion: 'Specify database type (PostgreSQL, MySQL, MongoDB, DynamoDB) based on data access patterns.',
|
|
63
|
+
example: 'Technology: PostgreSQL for relational user data with ACID guarantees'
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: 'api',
|
|
70
|
+
title: 'API Specialist',
|
|
71
|
+
expertise: 'RESTful API design, GraphQL, API security, and API lifecycle management',
|
|
72
|
+
scope: {
|
|
73
|
+
validate: [
|
|
74
|
+
'API endpoints and resource models',
|
|
75
|
+
'Request/response formats and data contracts',
|
|
76
|
+
'API authentication and authorization',
|
|
77
|
+
'Rate limiting and throttling strategies',
|
|
78
|
+
'API versioning and backward compatibility',
|
|
79
|
+
'Error handling and status codes'
|
|
80
|
+
],
|
|
81
|
+
categories: [
|
|
82
|
+
'completeness - Missing endpoints, unclear API surface',
|
|
83
|
+
'clarity - Ambiguous API contracts, unclear resource models',
|
|
84
|
+
'technical-depth - Insufficient API design detail, missing error handling',
|
|
85
|
+
'consistency - Conflicting API patterns or conventions',
|
|
86
|
+
'best-practices - Violates REST/GraphQL principles, poor API design'
|
|
87
|
+
]
|
|
88
|
+
},
|
|
89
|
+
example: {
|
|
90
|
+
name: 'User API',
|
|
91
|
+
domain: 'api',
|
|
92
|
+
description: 'Expose user management APIs',
|
|
93
|
+
features: ['user endpoints', 'authentication'],
|
|
94
|
+
issues: [
|
|
95
|
+
{
|
|
96
|
+
severity: 'critical',
|
|
97
|
+
category: 'completeness',
|
|
98
|
+
description: 'API epic missing endpoint specifications (methods, paths, parameters)',
|
|
99
|
+
suggestion: 'Define all endpoints: GET /users, POST /users, GET /users/:id, PUT /users/:id, DELETE /users/:id',
|
|
100
|
+
example: 'Endpoints: GET /users (list), POST /users (create), GET /users/:id (get), PUT /users/:id (update), DELETE /users/:id (delete)'
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
severity: 'major',
|
|
104
|
+
category: 'technical-depth',
|
|
105
|
+
description: 'No mention of API authentication mechanism',
|
|
106
|
+
suggestion: 'Specify authentication: JWT bearer tokens, API keys, OAuth 2.0, session cookies.',
|
|
107
|
+
example: 'Authentication: JWT bearer tokens in Authorization header, 1-hour expiry, refresh token support'
|
|
108
|
+
}
|
|
109
|
+
]
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
name: 'cloud',
|
|
114
|
+
title: 'Cloud Specialist',
|
|
115
|
+
expertise: 'cloud architecture, AWS/Azure/GCP services, cloud cost optimization, and cloud security',
|
|
116
|
+
scope: {
|
|
117
|
+
validate: [
|
|
118
|
+
'Cloud service selection and architecture',
|
|
119
|
+
'Multi-region and high availability strategies',
|
|
120
|
+
'Cloud cost optimization and resource sizing',
|
|
121
|
+
'Cloud security and compliance (IAM, encryption)',
|
|
122
|
+
'Serverless vs container vs VM trade-offs',
|
|
123
|
+
'Cloud-native patterns and services'
|
|
124
|
+
],
|
|
125
|
+
categories: [
|
|
126
|
+
'completeness - Missing cloud services, unclear cloud architecture',
|
|
127
|
+
'clarity - Ambiguous cloud terminology, unclear service boundaries',
|
|
128
|
+
'technical-depth - Insufficient HA/DR strategy, missing cost considerations',
|
|
129
|
+
'consistency - Conflicting cloud approaches or providers',
|
|
130
|
+
'best-practices - Violates cloud best practices (well-architected framework)'
|
|
131
|
+
]
|
|
132
|
+
},
|
|
133
|
+
example: {
|
|
134
|
+
name: 'Cloud Infrastructure',
|
|
135
|
+
domain: 'infrastructure',
|
|
136
|
+
description: 'Set up cloud infrastructure',
|
|
137
|
+
features: ['compute', 'storage'],
|
|
138
|
+
issues: [
|
|
139
|
+
{
|
|
140
|
+
severity: 'critical',
|
|
141
|
+
category: 'completeness',
|
|
142
|
+
description: 'Cloud epic missing specific service selections (EC2 vs Lambda, S3 vs EBS)',
|
|
143
|
+
suggestion: 'Specify cloud services: compute (EC2, Lambda, ECS), storage (S3, EBS, EFS), networking (VPC, ALB).',
|
|
144
|
+
example: 'Services: ECS Fargate for containers, S3 for object storage, RDS PostgreSQL for database, CloudFront CDN'
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
severity: 'major',
|
|
148
|
+
category: 'technical-depth',
|
|
149
|
+
description: 'No mention of high availability or multi-AZ deployment',
|
|
150
|
+
suggestion: 'Define HA strategy: multi-AZ deployment, auto-scaling, health checks, failover.',
|
|
151
|
+
example: 'HA: Deploy across 3 AZs, auto-scaling group (min 2, max 10), ALB health checks, RDS Multi-AZ'
|
|
152
|
+
}
|
|
153
|
+
]
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
name: 'qa',
|
|
158
|
+
title: 'QA Engineer',
|
|
159
|
+
expertise: 'quality assurance, test planning, defect management, and quality metrics',
|
|
160
|
+
scope: {
|
|
161
|
+
validate: [
|
|
162
|
+
'Testing strategy and test coverage requirements',
|
|
163
|
+
'Quality gates and acceptance criteria',
|
|
164
|
+
'Defect management and bug triage processes',
|
|
165
|
+
'Test automation and manual testing balance',
|
|
166
|
+
'Performance and load testing requirements',
|
|
167
|
+
'Quality metrics and success criteria'
|
|
168
|
+
],
|
|
169
|
+
categories: [
|
|
170
|
+
'completeness - Missing test scenarios, unclear quality criteria',
|
|
171
|
+
'clarity - Ambiguous acceptance criteria, unclear test scope',
|
|
172
|
+
'technical-depth - Insufficient test coverage, missing edge cases',
|
|
173
|
+
'consistency - Conflicting quality requirements',
|
|
174
|
+
'best-practices - Violates testing best practices (test pyramid, shift-left)'
|
|
175
|
+
]
|
|
176
|
+
},
|
|
177
|
+
example: {
|
|
178
|
+
name: 'User Authentication',
|
|
179
|
+
domain: 'user-management',
|
|
180
|
+
description: 'Implement authentication',
|
|
181
|
+
features: ['login', 'logout'],
|
|
182
|
+
issues: [
|
|
183
|
+
{
|
|
184
|
+
severity: 'critical',
|
|
185
|
+
category: 'completeness',
|
|
186
|
+
description: 'Epic missing testability requirements and quality gates',
|
|
187
|
+
suggestion: 'Define quality gates: unit test coverage (>80%), integration tests for all flows, security tests.',
|
|
188
|
+
example: 'Quality Gates: 80% unit coverage, 100% integration coverage for auth flows, OWASP ZAP security scan, load test (1000 concurrent logins)'
|
|
189
|
+
}
|
|
190
|
+
]
|
|
191
|
+
}
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
name: 'test-architect',
|
|
195
|
+
title: 'Test Architect',
|
|
196
|
+
expertise: 'test architecture, automation frameworks, test infrastructure, and testing patterns',
|
|
197
|
+
scope: {
|
|
198
|
+
validate: [
|
|
199
|
+
'Test architecture and framework selection',
|
|
200
|
+
'Test data management strategies',
|
|
201
|
+
'Test environment and infrastructure needs',
|
|
202
|
+
'Test automation patterns and anti-patterns',
|
|
203
|
+
'Integration with CI/CD pipelines',
|
|
204
|
+
'Test maintainability and scalability'
|
|
205
|
+
],
|
|
206
|
+
categories: [
|
|
207
|
+
'completeness - Missing test infrastructure, unclear test architecture',
|
|
208
|
+
'clarity - Ambiguous test strategy, unclear automation scope',
|
|
209
|
+
'technical-depth - Insufficient test framework design, missing CI/CD integration',
|
|
210
|
+
'consistency - Conflicting test approaches',
|
|
211
|
+
'best-practices - Violates test architecture principles (DRY, test pyramid, BDD)'
|
|
212
|
+
]
|
|
213
|
+
},
|
|
214
|
+
example: {
|
|
215
|
+
name: 'E-commerce Checkout',
|
|
216
|
+
domain: 'frontend',
|
|
217
|
+
description: 'Build checkout flow',
|
|
218
|
+
features: ['cart', 'payment', 'order confirmation'],
|
|
219
|
+
issues: [
|
|
220
|
+
{
|
|
221
|
+
severity: 'major',
|
|
222
|
+
category: 'technical-depth',
|
|
223
|
+
description: 'Epic missing test automation framework and CI/CD integration',
|
|
224
|
+
suggestion: 'Specify test framework: Jest for unit, Cypress for e2e, run tests in CI before merge.',
|
|
225
|
+
example: 'Testing: Jest (unit), React Testing Library (component), Cypress (e2e), run in GitHub Actions on PR'
|
|
226
|
+
}
|
|
227
|
+
]
|
|
228
|
+
}
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
name: 'ux',
|
|
232
|
+
title: 'UX Designer',
|
|
233
|
+
expertise: 'user experience design, user research, interaction design, and usability testing',
|
|
234
|
+
scope: {
|
|
235
|
+
validate: [
|
|
236
|
+
'User flows and journey maps',
|
|
237
|
+
'Usability and accessibility requirements',
|
|
238
|
+
'User research and validation needs',
|
|
239
|
+
'Information architecture and navigation',
|
|
240
|
+
'User feedback and iteration strategies',
|
|
241
|
+
'UX metrics and success criteria'
|
|
242
|
+
],
|
|
243
|
+
categories: [
|
|
244
|
+
'completeness - Missing user flows, unclear UX requirements',
|
|
245
|
+
'clarity - Ambiguous user experience, unclear user goals',
|
|
246
|
+
'technical-depth - Insufficient user research, missing usability testing',
|
|
247
|
+
'consistency - Conflicting UX patterns',
|
|
248
|
+
'best-practices - Violates UX principles (cognitive load, user control, consistency)'
|
|
249
|
+
]
|
|
250
|
+
},
|
|
251
|
+
example: {
|
|
252
|
+
name: 'User Dashboard',
|
|
253
|
+
domain: 'frontend',
|
|
254
|
+
description: 'Build dashboard',
|
|
255
|
+
features: ['widgets', 'charts'],
|
|
256
|
+
issues: [
|
|
257
|
+
{
|
|
258
|
+
severity: 'major',
|
|
259
|
+
category: 'completeness',
|
|
260
|
+
description: 'Epic missing user flows and task analysis',
|
|
261
|
+
suggestion: 'Define primary user tasks and flows: what users need to accomplish, key actions, success paths.',
|
|
262
|
+
example: 'User Flows: (1) View key metrics at a glance, (2) Drill into specific metric details, (3) Customize dashboard layout'
|
|
263
|
+
}
|
|
264
|
+
]
|
|
265
|
+
}
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
name: 'ui',
|
|
269
|
+
title: 'UI Designer',
|
|
270
|
+
expertise: 'user interface design, visual design, design systems, and UI component libraries',
|
|
271
|
+
scope: {
|
|
272
|
+
validate: [
|
|
273
|
+
'Visual design and branding consistency',
|
|
274
|
+
'UI component specifications',
|
|
275
|
+
'Design system and component library',
|
|
276
|
+
'Responsive design and breakpoints',
|
|
277
|
+
'Accessibility (color contrast, typography, spacing)',
|
|
278
|
+
'UI patterns and conventions'
|
|
279
|
+
],
|
|
280
|
+
categories: [
|
|
281
|
+
'completeness - Missing UI specifications, unclear component library',
|
|
282
|
+
'clarity - Ambiguous visual design, unclear UI patterns',
|
|
283
|
+
'technical-depth - Insufficient responsive design, missing accessibility specs',
|
|
284
|
+
'consistency - Conflicting UI styles or components',
|
|
285
|
+
'best-practices - Violates UI design principles (visual hierarchy, contrast, spacing)'
|
|
286
|
+
]
|
|
287
|
+
},
|
|
288
|
+
example: {
|
|
289
|
+
name: 'Admin Panel',
|
|
290
|
+
domain: 'frontend',
|
|
291
|
+
description: 'Build admin interface',
|
|
292
|
+
features: ['tables', 'forms'],
|
|
293
|
+
issues: [
|
|
294
|
+
{
|
|
295
|
+
severity: 'major',
|
|
296
|
+
category: 'completeness',
|
|
297
|
+
description: 'Epic missing UI design system and component specifications',
|
|
298
|
+
suggestion: 'Define design system: color palette, typography scale, spacing system, component library (tables, forms, buttons).',
|
|
299
|
+
example: 'Design System: Material-UI component library, 8px spacing grid, primary color #1976d2, Roboto font family'
|
|
300
|
+
}
|
|
301
|
+
]
|
|
302
|
+
}
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
name: 'mobile',
|
|
306
|
+
title: 'Mobile Developer',
|
|
307
|
+
expertise: 'iOS and Android development, mobile app architecture, and mobile UX patterns',
|
|
308
|
+
scope: {
|
|
309
|
+
validate: [
|
|
310
|
+
'Mobile platform support (iOS, Android, cross-platform)',
|
|
311
|
+
'Mobile-specific UX patterns and gestures',
|
|
312
|
+
'Offline support and data synchronization',
|
|
313
|
+
'Mobile performance and battery optimization',
|
|
314
|
+
'Push notifications and background tasks',
|
|
315
|
+
'App store deployment and distribution'
|
|
316
|
+
],
|
|
317
|
+
categories: [
|
|
318
|
+
'completeness - Missing mobile features, unclear platform support',
|
|
319
|
+
'clarity - Ambiguous mobile requirements, unclear offline behavior',
|
|
320
|
+
'technical-depth - Insufficient mobile architecture, missing performance optimization',
|
|
321
|
+
'consistency - Conflicting mobile patterns',
|
|
322
|
+
'best-practices - Violates mobile best practices (native patterns, offline-first)'
|
|
323
|
+
]
|
|
324
|
+
},
|
|
325
|
+
example: {
|
|
326
|
+
name: 'Mobile App',
|
|
327
|
+
domain: 'mobile',
|
|
328
|
+
description: 'Build mobile application',
|
|
329
|
+
features: ['user interface', 'data sync'],
|
|
330
|
+
issues: [
|
|
331
|
+
{
|
|
332
|
+
severity: 'critical',
|
|
333
|
+
category: 'completeness',
|
|
334
|
+
description: 'Mobile epic missing platform specification (iOS, Android, React Native, Flutter)',
|
|
335
|
+
suggestion: 'Specify mobile approach: native iOS + Android, React Native, Flutter, or PWA.',
|
|
336
|
+
example: 'Platform: React Native for iOS and Android, share 90% codebase, native modules for camera/payments'
|
|
337
|
+
}
|
|
338
|
+
]
|
|
339
|
+
}
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
name: 'backend',
|
|
343
|
+
title: 'Backend Developer',
|
|
344
|
+
expertise: 'server-side development, microservices, database integration, and API implementation',
|
|
345
|
+
scope: {
|
|
346
|
+
validate: [
|
|
347
|
+
'Backend architecture and service design',
|
|
348
|
+
'Database integration and ORM strategy',
|
|
349
|
+
'Background jobs and async processing',
|
|
350
|
+
'Caching and performance optimization',
|
|
351
|
+
'Error handling and logging',
|
|
352
|
+
'Service-to-service communication'
|
|
353
|
+
],
|
|
354
|
+
categories: [
|
|
355
|
+
'completeness - Missing backend services, unclear service boundaries',
|
|
356
|
+
'clarity - Ambiguous backend logic, unclear data flows',
|
|
357
|
+
'technical-depth - Insufficient architecture detail, missing error handling',
|
|
358
|
+
'consistency - Conflicting backend patterns',
|
|
359
|
+
'best-practices - Violates backend principles (separation of concerns, SOLID)'
|
|
360
|
+
]
|
|
361
|
+
},
|
|
362
|
+
example: {
|
|
363
|
+
name: 'Order Processing',
|
|
364
|
+
domain: 'api',
|
|
365
|
+
description: 'Process customer orders',
|
|
366
|
+
features: ['order creation', 'order status'],
|
|
367
|
+
issues: [
|
|
368
|
+
{
|
|
369
|
+
severity: 'critical',
|
|
370
|
+
category: 'technical-depth',
|
|
371
|
+
description: 'Backend epic missing async processing strategy for order workflows',
|
|
372
|
+
suggestion: 'Define async processing: background jobs for payment, inventory, notifications. Specify queue technology.',
|
|
373
|
+
example: 'Async Processing: Bull queue with Redis, background jobs for payment processing, inventory updates, email notifications'
|
|
374
|
+
}
|
|
375
|
+
]
|
|
376
|
+
}
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
name: 'data',
|
|
380
|
+
title: 'Data Engineer',
|
|
381
|
+
expertise: 'data pipelines, ETL processes, data warehousing, and big data technologies',
|
|
382
|
+
scope: {
|
|
383
|
+
validate: [
|
|
384
|
+
'Data pipeline architecture and orchestration',
|
|
385
|
+
'Data ingestion and extraction strategies',
|
|
386
|
+
'Data transformation and quality checks',
|
|
387
|
+
'Data storage and warehousing solutions',
|
|
388
|
+
'Data governance and lineage tracking',
|
|
389
|
+
'Data processing scalability (batch vs streaming)'
|
|
390
|
+
],
|
|
391
|
+
categories: [
|
|
392
|
+
'completeness - Missing data pipeline stages, unclear data flows',
|
|
393
|
+
'clarity - Ambiguous data transformations, unclear data sources',
|
|
394
|
+
'technical-depth - Insufficient data quality checks, missing scalability',
|
|
395
|
+
'consistency - Conflicting data models or formats',
|
|
396
|
+
'best-practices - Violates data engineering principles (idempotency, schema evolution)'
|
|
397
|
+
]
|
|
398
|
+
},
|
|
399
|
+
example: {
|
|
400
|
+
name: 'Analytics Pipeline',
|
|
401
|
+
domain: 'data-processing',
|
|
402
|
+
description: 'Build analytics data pipeline',
|
|
403
|
+
features: ['data ingestion', 'reporting'],
|
|
404
|
+
issues: [
|
|
405
|
+
{
|
|
406
|
+
severity: 'critical',
|
|
407
|
+
category: 'completeness',
|
|
408
|
+
description: 'Data epic missing ETL pipeline stages and orchestration',
|
|
409
|
+
suggestion: 'Define complete ETL: data sources, extraction schedule, transformations, loading to warehouse, orchestration tool.',
|
|
410
|
+
example: 'ETL: Extract from PostgreSQL/S3 (hourly), transform with dbt, load to Snowflake, orchestrate with Airflow'
|
|
411
|
+
}
|
|
412
|
+
]
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
],
|
|
416
|
+
story: [
|
|
417
|
+
// Story validators follow same pattern but focus on implementation details
|
|
418
|
+
]
|
|
419
|
+
};
|
|
420
|
+
|
|
421
|
+
/**
|
|
422
|
+
* Generate epic validator markdown file
|
|
423
|
+
*/
|
|
424
|
+
function generateEpicValidatorMd(domain, config) {
|
|
425
|
+
return `# Epic Validator - ${config.title}
|
|
426
|
+
|
|
427
|
+
## Role
|
|
428
|
+
You are an expert ${config.title.toLowerCase()} with 15+ years of experience in ${config.expertise}. Your role is to validate Epic definitions for ${domain}-specific completeness, technical soundness, and best practices.
|
|
429
|
+
|
|
430
|
+
## Validation Scope
|
|
431
|
+
|
|
432
|
+
**What to Validate:**
|
|
433
|
+
${config.scope.validate.map(item => `- ${item}`).join('\n')}
|
|
434
|
+
|
|
435
|
+
**What NOT to Validate:**
|
|
436
|
+
- Detailed implementation steps (that's for Stories/Tasks)
|
|
437
|
+
- Technology-specific choices (unless critical)
|
|
438
|
+
- Timeline or resource estimates
|
|
439
|
+
|
|
440
|
+
## Validation Checklist
|
|
441
|
+
|
|
442
|
+
### Completeness (40 points)
|
|
443
|
+
- [ ] Epic scope clearly defines ${domain} boundaries
|
|
444
|
+
- [ ] All critical ${domain} features are identified
|
|
445
|
+
- [ ] Dependencies on ${domain} services/infrastructure are explicit
|
|
446
|
+
- [ ] ${domain} success criteria are measurable
|
|
447
|
+
|
|
448
|
+
### Clarity (20 points)
|
|
449
|
+
- [ ] ${domain} terminology is used correctly
|
|
450
|
+
- [ ] Epic description is understandable to non-${domain} team members
|
|
451
|
+
- [ ] Features are described in business value terms
|
|
452
|
+
|
|
453
|
+
### Technical Depth (20 points)
|
|
454
|
+
- [ ] ${domain} architectural patterns are considered
|
|
455
|
+
- [ ] Performance/scalability concerns for ${domain} are addressed
|
|
456
|
+
- [ ] Quality considerations for ${domain} are identified
|
|
457
|
+
|
|
458
|
+
### Consistency (10 points)
|
|
459
|
+
- [ ] ${domain} approach aligns with project context
|
|
460
|
+
- [ ] Features don't overlap or conflict
|
|
461
|
+
|
|
462
|
+
### Best Practices (10 points)
|
|
463
|
+
- [ ] Industry-standard ${domain} patterns are followed
|
|
464
|
+
- [ ] ${domain} anti-patterns are avoided
|
|
465
|
+
|
|
466
|
+
## Issue Categories
|
|
467
|
+
|
|
468
|
+
Use these categories when reporting issues:
|
|
469
|
+
|
|
470
|
+
${config.scope.categories.map(cat => `- \`${cat}\``).join('\n')}
|
|
471
|
+
|
|
472
|
+
## Issue Severity Levels
|
|
473
|
+
|
|
474
|
+
- \`critical\` - Epic cannot proceed (blocking ${domain} issue)
|
|
475
|
+
- \`major\` - Significant ${domain} gap (should fix before Stories)
|
|
476
|
+
- \`minor\` - Enhancement opportunity (can fix later)
|
|
477
|
+
|
|
478
|
+
## Output Format
|
|
479
|
+
|
|
480
|
+
Return JSON with this exact structure:
|
|
481
|
+
|
|
482
|
+
\`\`\`json
|
|
483
|
+
{
|
|
484
|
+
"validationStatus": "needs-improvement|acceptable|excellent",
|
|
485
|
+
"overallScore": 0-100,
|
|
486
|
+
"issues": [
|
|
487
|
+
{
|
|
488
|
+
"severity": "critical|major|minor",
|
|
489
|
+
"category": "completeness|clarity|technical-depth|consistency|best-practices",
|
|
490
|
+
"description": "Clear description of the ${domain} issue",
|
|
491
|
+
"suggestion": "Specific actionable fix",
|
|
492
|
+
"example": "Optional example of how to fix"
|
|
493
|
+
}
|
|
494
|
+
],
|
|
495
|
+
"strengths": ["What the Epic does well from ${domain} perspective"],
|
|
496
|
+
"improvementPriorities": ["Top 3 ${domain} improvements ranked by impact"],
|
|
497
|
+
"readyForStories": boolean,
|
|
498
|
+
"domainSpecificNotes": "Any additional ${domain} context or warnings"
|
|
499
|
+
}
|
|
500
|
+
\`\`\`
|
|
501
|
+
|
|
502
|
+
## Scoring Guidelines
|
|
503
|
+
|
|
504
|
+
- **90-100 (Excellent)**: Comprehensive ${domain} coverage, clear boundaries, all best practices
|
|
505
|
+
- **70-89 (Acceptable)**: Core ${domain} concerns addressed, minor gaps acceptable
|
|
506
|
+
- **0-69 (Needs Improvement)**: Critical ${domain} gaps, must fix before proceeding
|
|
507
|
+
|
|
508
|
+
## Example Validation
|
|
509
|
+
|
|
510
|
+
**Epic:**
|
|
511
|
+
\`\`\`
|
|
512
|
+
Name: ${config.example.name}
|
|
513
|
+
Domain: ${config.example.domain}
|
|
514
|
+
Description: ${config.example.description}
|
|
515
|
+
Features: ${JSON.stringify(config.example.features)}
|
|
516
|
+
\`\`\`
|
|
517
|
+
|
|
518
|
+
**Validation Output:**
|
|
519
|
+
\`\`\`json
|
|
520
|
+
{
|
|
521
|
+
"validationStatus": "needs-improvement",
|
|
522
|
+
"overallScore": 65,
|
|
523
|
+
"issues": ${JSON.stringify(config.example.issues, null, 2)},
|
|
524
|
+
"strengths": [
|
|
525
|
+
"Core ${domain} features identified"
|
|
526
|
+
],
|
|
527
|
+
"improvementPriorities": [
|
|
528
|
+
"1. Address critical ${domain} gaps identified above",
|
|
529
|
+
"2. Add comprehensive ${domain} specifications",
|
|
530
|
+
"3. Define ${domain} success criteria"
|
|
531
|
+
],
|
|
532
|
+
"readyForStories": false,
|
|
533
|
+
"domainSpecificNotes": "Consider additional ${domain} requirements based on project context"
|
|
534
|
+
}
|
|
535
|
+
\`\`\`
|
|
536
|
+
`;
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
/**
|
|
540
|
+
* Generate verification rules JSON
|
|
541
|
+
*/
|
|
542
|
+
function generateVerificationJson(domain, type) {
|
|
543
|
+
return {
|
|
544
|
+
agentName: `validator-${type}-${domain}`,
|
|
545
|
+
version: '1.0.0',
|
|
546
|
+
description: `Verification rules for ${domain} ${type} validator`,
|
|
547
|
+
requiredFields: [
|
|
548
|
+
'validationStatus',
|
|
549
|
+
'overallScore',
|
|
550
|
+
'issues',
|
|
551
|
+
'strengths',
|
|
552
|
+
'improvementPriorities',
|
|
553
|
+
'readyForStories',
|
|
554
|
+
'domainSpecificNotes'
|
|
555
|
+
],
|
|
556
|
+
fieldValidation: {
|
|
557
|
+
validationStatus: {
|
|
558
|
+
type: 'string',
|
|
559
|
+
allowedValues: ['needs-improvement', 'acceptable', 'excellent'],
|
|
560
|
+
errorMessage: 'validationStatus must be one of: needs-improvement, acceptable, excellent'
|
|
561
|
+
},
|
|
562
|
+
overallScore: {
|
|
563
|
+
type: 'number',
|
|
564
|
+
min: 0,
|
|
565
|
+
max: 100,
|
|
566
|
+
errorMessage: 'overallScore must be between 0 and 100'
|
|
567
|
+
},
|
|
568
|
+
issues: {
|
|
569
|
+
type: 'array',
|
|
570
|
+
minLength: 0,
|
|
571
|
+
itemValidation: {
|
|
572
|
+
requiredFields: ['severity', 'category', 'description', 'suggestion'],
|
|
573
|
+
severity: {
|
|
574
|
+
type: 'string',
|
|
575
|
+
allowedValues: ['critical', 'major', 'minor']
|
|
576
|
+
},
|
|
577
|
+
category: {
|
|
578
|
+
type: 'string',
|
|
579
|
+
allowedValues: ['completeness', 'clarity', 'technical-depth', 'consistency', 'best-practices']
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
},
|
|
583
|
+
strengths: {
|
|
584
|
+
type: 'array',
|
|
585
|
+
minLength: 0
|
|
586
|
+
},
|
|
587
|
+
improvementPriorities: {
|
|
588
|
+
type: 'array',
|
|
589
|
+
minLength: 0,
|
|
590
|
+
maxLength: 5
|
|
591
|
+
},
|
|
592
|
+
readyForStories: {
|
|
593
|
+
type: 'boolean'
|
|
594
|
+
},
|
|
595
|
+
domainSpecificNotes: {
|
|
596
|
+
type: 'string'
|
|
597
|
+
}
|
|
598
|
+
},
|
|
599
|
+
consistencyRules: [
|
|
600
|
+
{
|
|
601
|
+
rule: 'score_status_alignment',
|
|
602
|
+
description: 'Score should align with validation status',
|
|
603
|
+
check: 'if validationStatus is \'excellent\', score should be >= 90; if \'acceptable\', 70-89; if \'needs-improvement\', < 70'
|
|
604
|
+
},
|
|
605
|
+
{
|
|
606
|
+
rule: 'ready_for_stories_alignment',
|
|
607
|
+
description: 'readyForStories should be false if validationStatus is \'needs-improvement\'',
|
|
608
|
+
check: 'if validationStatus is \'needs-improvement\', readyForStories must be false'
|
|
609
|
+
},
|
|
610
|
+
{
|
|
611
|
+
rule: 'critical_issues_block',
|
|
612
|
+
description: 'Critical issues should result in needs-improvement status',
|
|
613
|
+
check: 'if any issue has severity \'critical\', validationStatus should be \'needs-improvement\''
|
|
614
|
+
}
|
|
615
|
+
]
|
|
616
|
+
};
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
/**
|
|
620
|
+
* Main generation function
|
|
621
|
+
*/
|
|
622
|
+
function generateValidators() {
|
|
623
|
+
console.log('Generating validator files...\n');
|
|
624
|
+
|
|
625
|
+
// Check which validators already exist
|
|
626
|
+
const existingEpicValidators = [
|
|
627
|
+
'security', 'devops', 'frontend', 'solution-architect', 'developer'
|
|
628
|
+
];
|
|
629
|
+
|
|
630
|
+
let created = 0;
|
|
631
|
+
let skipped = 0;
|
|
632
|
+
|
|
633
|
+
// Generate epic validators
|
|
634
|
+
VALIDATORS.epic.forEach(config => {
|
|
635
|
+
const mdFilename = `validator-epic-${config.name}.md`;
|
|
636
|
+
const jsonFilename = `validator-epic-${config.name}.json`;
|
|
637
|
+
|
|
638
|
+
if (existingEpicValidators.includes(config.name)) {
|
|
639
|
+
console.log(`Skipping ${mdFilename} (already exists)`);
|
|
640
|
+
skipped += 2;
|
|
641
|
+
return;
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
// Generate .md file
|
|
645
|
+
const mdPath = path.join(AGENTS_PATH, mdFilename);
|
|
646
|
+
const mdContent = generateEpicValidatorMd(config.name, config);
|
|
647
|
+
fs.writeFileSync(mdPath, mdContent, 'utf8');
|
|
648
|
+
console.log(`Created ${mdFilename}`);
|
|
649
|
+
created++;
|
|
650
|
+
|
|
651
|
+
// Generate .json file
|
|
652
|
+
const jsonPath = path.join(AGENTS_PATH, jsonFilename);
|
|
653
|
+
const jsonContent = JSON.stringify(generateVerificationJson(config.name, 'epic'), null, 2);
|
|
654
|
+
fs.writeFileSync(jsonPath, jsonContent, 'utf8');
|
|
655
|
+
console.log(`Created ${jsonFilename}`);
|
|
656
|
+
created++;
|
|
657
|
+
});
|
|
658
|
+
|
|
659
|
+
console.log(`\nSummary:`);
|
|
660
|
+
console.log(` Created: ${created} files`);
|
|
661
|
+
console.log(` Skipped: ${skipped} files (already exist)`);
|
|
662
|
+
console.log(`\nNext steps:`);
|
|
663
|
+
console.log(` 1. Review generated validators in ${AGENTS_PATH}`);
|
|
664
|
+
console.log(` 2. Customize domain-specific examples and notes`);
|
|
665
|
+
console.log(` 3. Run story validator generation (coming next)`);
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
// Run generator
|
|
669
|
+
generateValidators();
|