@agile-vibe-coding/avc 0.1.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +29 -8
- package/cli/ceremony-history.js +369 -0
- package/cli/command-logger.js +49 -12
- 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 +0 -0
- package/cli/init-model-config.js +697 -0
- package/cli/init.js +1311 -274
- package/cli/kanban-server-manager.js +228 -0
- package/cli/llm-claude.js +83 -1
- package/cli/llm-gemini.js +85 -0
- package/cli/llm-mock.js +233 -0
- package/cli/llm-openai.js +233 -0
- package/cli/llm-provider.js +240 -3
- package/cli/llm-token-limits.js +102 -0
- package/cli/llm-verifier.js +454 -0
- 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 +73 -2
- package/cli/repl-ink.js +4988 -1217
- 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 +2102 -105
- package/cli/templates/project.md +25 -8
- package/cli/templates/vitepress-config.mts.template +5 -4
- 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 +18 -5
- 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 sized (completable in 1-3 days)
|
|
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();
|