@thierrynakoa/fire-flow 10.0.0
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/.claude-plugin/plugin.json +64 -0
- package/ARCHITECTURE-DIAGRAM.md +440 -0
- package/COMMAND-REFERENCE.md +172 -0
- package/DOMINION-FLOW-OVERVIEW.md +421 -0
- package/LICENSE +21 -0
- package/QUICK-START.md +351 -0
- package/README.md +398 -0
- package/TROUBLESHOOTING.md +264 -0
- package/agents/fire-codebase-mapper.md +484 -0
- package/agents/fire-debugger.md +535 -0
- package/agents/fire-executor.md +949 -0
- package/agents/fire-fact-checker.md +276 -0
- package/agents/fire-learncoding-explainer.md +237 -0
- package/agents/fire-learncoding-walker.md +147 -0
- package/agents/fire-planner.md +675 -0
- package/agents/fire-project-researcher.md +155 -0
- package/agents/fire-research-synthesizer.md +166 -0
- package/agents/fire-researcher.md +723 -0
- package/agents/fire-reviewer.md +499 -0
- package/agents/fire-roadmapper.md +203 -0
- package/agents/fire-verifier.md +880 -0
- package/bin/cli.js +208 -0
- package/commands/fire-0-orient.md +476 -0
- package/commands/fire-1-new.md +281 -0
- package/commands/fire-1a-discuss.md +455 -0
- package/commands/fire-2-plan.md +527 -0
- package/commands/fire-3-execute.md +1303 -0
- package/commands/fire-4-verify.md +845 -0
- package/commands/fire-5-handoff.md +515 -0
- package/commands/fire-6-resume.md +501 -0
- package/commands/fire-7-review.md +409 -0
- package/commands/fire-add-new-skill.md +598 -0
- package/commands/fire-analytics.md +499 -0
- package/commands/fire-assumptions.md +78 -0
- package/commands/fire-autonomous.md +528 -0
- package/commands/fire-brainstorm.md +413 -0
- package/commands/fire-complete-milestone.md +270 -0
- package/commands/fire-dashboard.md +375 -0
- package/commands/fire-debug.md +663 -0
- package/commands/fire-discover.md +616 -0
- package/commands/fire-double-check.md +460 -0
- package/commands/fire-execute-plan.md +182 -0
- package/commands/fire-learncoding.md +242 -0
- package/commands/fire-loop-resume.md +272 -0
- package/commands/fire-loop-stop.md +198 -0
- package/commands/fire-loop.md +1168 -0
- package/commands/fire-map-codebase.md +313 -0
- package/commands/fire-new-milestone.md +356 -0
- package/commands/fire-reflect.md +235 -0
- package/commands/fire-research.md +246 -0
- package/commands/fire-search.md +330 -0
- package/commands/fire-security-audit-repo.md +293 -0
- package/commands/fire-security-scan.md +484 -0
- package/commands/fire-session-summary.md +252 -0
- package/commands/fire-skills-diff.md +506 -0
- package/commands/fire-skills-history.md +388 -0
- package/commands/fire-skills-rollback.md +408 -0
- package/commands/fire-skills-sync.md +470 -0
- package/commands/fire-test.md +520 -0
- package/commands/fire-todos.md +335 -0
- package/commands/fire-transition.md +186 -0
- package/commands/fire-update.md +312 -0
- package/commands/fire-verify-uat.md +146 -0
- package/commands/fire-vuln-scan.md +493 -0
- package/hooks/hooks.json +16 -0
- package/hooks/run-hook.cmd +69 -0
- package/hooks/run-hook.sh +8 -0
- package/hooks/run-session-end.cmd +49 -0
- package/hooks/run-session-end.sh +7 -0
- package/hooks/session-end.sh +90 -0
- package/hooks/session-start.sh +111 -0
- package/package.json +52 -0
- package/plugin.json +7 -0
- package/references/auto-skill-extraction.md +136 -0
- package/references/behavioral-directives.md +365 -0
- package/references/blocker-tracking.md +155 -0
- package/references/checkpoints.md +165 -0
- package/references/circuit-breaker.md +410 -0
- package/references/context-engineering.md +587 -0
- package/references/decision-time-guidance.md +289 -0
- package/references/error-classification.md +326 -0
- package/references/execution-mode-intelligence.md +242 -0
- package/references/git-integration.md +217 -0
- package/references/honesty-protocols.md +304 -0
- package/references/integration-architecture.md +470 -0
- package/references/issue-to-pr-pipeline.md +150 -0
- package/references/metrics-and-trends.md +234 -0
- package/references/playwright-e2e-testing.md +326 -0
- package/references/questioning.md +125 -0
- package/references/research-improvements.md +110 -0
- package/references/skills-usage-guide.md +429 -0
- package/references/tdd.md +131 -0
- package/references/testing-enforcement.md +192 -0
- package/references/ui-brand.md +383 -0
- package/references/validation-checklist.md +456 -0
- package/references/verification-patterns.md +187 -0
- package/references/warrior-principles.md +173 -0
- package/skills-library/SKILLS-INDEX.md +588 -0
- package/skills-library/_general/frontend/html-visual-reports.md +292 -0
- package/skills-library/_general/methodology/debug-swarm-researcher-escape-hatch.md +240 -0
- package/skills-library/_general/methodology/learncoding-agentic-pattern.md +114 -0
- package/skills-library/_general/methodology/shell-autonomous-loop-fixplan.md +238 -0
- package/skills-library/basics/api-rest-basics.md +162 -0
- package/skills-library/basics/env-variables.md +96 -0
- package/skills-library/basics/error-handling-basics.md +125 -0
- package/skills-library/basics/git-commit-conventions.md +106 -0
- package/skills-library/basics/readme-template.md +108 -0
- package/skills-library/common-tasks/async-await-patterns.md +157 -0
- package/skills-library/common-tasks/auth-jwt-basics.md +164 -0
- package/skills-library/common-tasks/database-schema-design.md +166 -0
- package/skills-library/common-tasks/file-upload-basics.md +166 -0
- package/skills-library/common-tasks/form-validation.md +159 -0
- package/skills-library/debugging/FAILURE_TAXONOMY_CLASSIFICATION.md +117 -0
- package/skills-library/debugging/THREE_AGENT_HYPOTHESIS_DEBUGGING.md +86 -0
- package/skills-library/methodology/BREATH_BASED_PARALLEL_EXECUTION.md +678 -0
- package/skills-library/methodology/CONFIDENCE_GATED_EXECUTION.md +243 -0
- package/skills-library/methodology/EVIDENCE_BASED_VALIDATION.md +308 -0
- package/skills-library/methodology/MULTI_PERSPECTIVE_CODE_REVIEW.md +330 -0
- package/skills-library/methodology/PATH_VERIFICATION_GATE.md +211 -0
- package/skills-library/methodology/REFLEXION_MEMORY_PATTERN.md +183 -0
- package/skills-library/methodology/RESEARCH_BACKED_WORKFLOW_UPGRADE.md +263 -0
- package/skills-library/methodology/SABBATH_REST_PATTERN.md +267 -0
- package/skills-library/methodology/STONE_AND_SCAFFOLD.md +220 -0
- package/skills-library/performance/cache-augmented-generation.md +172 -0
- package/skills-library/quality-safety/debugging-steps.md +147 -0
- package/skills-library/quality-safety/deployment-checklist.md +155 -0
- package/skills-library/quality-safety/security-checklist.md +204 -0
- package/skills-library/quality-safety/testing-basics.md +180 -0
- package/skills-library/security/agent-security-scanner.md +445 -0
- package/skills-library/specialists/api-architecture/api-designer.md +49 -0
- package/skills-library/specialists/api-architecture/graphql-architect.md +49 -0
- package/skills-library/specialists/api-architecture/mcp-developer.md +51 -0
- package/skills-library/specialists/api-architecture/microservices-architect.md +50 -0
- package/skills-library/specialists/api-architecture/websocket-engineer.md +48 -0
- package/skills-library/specialists/backend/django-expert.md +52 -0
- package/skills-library/specialists/backend/fastapi-expert.md +52 -0
- package/skills-library/specialists/backend/laravel-specialist.md +52 -0
- package/skills-library/specialists/backend/nestjs-expert.md +51 -0
- package/skills-library/specialists/backend/rails-expert.md +53 -0
- package/skills-library/specialists/backend/spring-boot-engineer.md +56 -0
- package/skills-library/specialists/data-ml/fine-tuning-expert.md +48 -0
- package/skills-library/specialists/data-ml/ml-pipeline.md +47 -0
- package/skills-library/specialists/data-ml/pandas-pro.md +47 -0
- package/skills-library/specialists/data-ml/rag-architect.md +51 -0
- package/skills-library/specialists/data-ml/spark-engineer.md +47 -0
- package/skills-library/specialists/frontend/angular-architect.md +52 -0
- package/skills-library/specialists/frontend/flutter-expert.md +51 -0
- package/skills-library/specialists/frontend/nextjs-developer.md +54 -0
- package/skills-library/specialists/frontend/react-native-expert.md +50 -0
- package/skills-library/specialists/frontend/vue-expert.md +51 -0
- package/skills-library/specialists/infrastructure/chaos-engineer.md +74 -0
- package/skills-library/specialists/infrastructure/cloud-architect.md +70 -0
- package/skills-library/specialists/infrastructure/database-optimizer.md +64 -0
- package/skills-library/specialists/infrastructure/devops-engineer.md +70 -0
- package/skills-library/specialists/infrastructure/kubernetes-specialist.md +52 -0
- package/skills-library/specialists/infrastructure/monitoring-expert.md +70 -0
- package/skills-library/specialists/infrastructure/sre-engineer.md +70 -0
- package/skills-library/specialists/infrastructure/terraform-engineer.md +51 -0
- package/skills-library/specialists/languages/cpp-pro.md +74 -0
- package/skills-library/specialists/languages/csharp-developer.md +69 -0
- package/skills-library/specialists/languages/dotnet-core-expert.md +54 -0
- package/skills-library/specialists/languages/golang-pro.md +51 -0
- package/skills-library/specialists/languages/java-architect.md +49 -0
- package/skills-library/specialists/languages/javascript-pro.md +68 -0
- package/skills-library/specialists/languages/kotlin-specialist.md +68 -0
- package/skills-library/specialists/languages/php-pro.md +49 -0
- package/skills-library/specialists/languages/python-pro.md +52 -0
- package/skills-library/specialists/languages/react-expert.md +51 -0
- package/skills-library/specialists/languages/rust-engineer.md +50 -0
- package/skills-library/specialists/languages/sql-pro.md +56 -0
- package/skills-library/specialists/languages/swift-expert.md +69 -0
- package/skills-library/specialists/languages/typescript-pro.md +51 -0
- package/skills-library/specialists/platform/atlassian-mcp.md +52 -0
- package/skills-library/specialists/platform/embedded-systems.md +53 -0
- package/skills-library/specialists/platform/game-developer.md +53 -0
- package/skills-library/specialists/platform/salesforce-developer.md +53 -0
- package/skills-library/specialists/platform/shopify-expert.md +49 -0
- package/skills-library/specialists/platform/wordpress-pro.md +49 -0
- package/skills-library/specialists/quality/code-documenter.md +51 -0
- package/skills-library/specialists/quality/code-reviewer.md +67 -0
- package/skills-library/specialists/quality/debugging-wizard.md +51 -0
- package/skills-library/specialists/quality/fullstack-guardian.md +51 -0
- package/skills-library/specialists/quality/legacy-modernizer.md +50 -0
- package/skills-library/specialists/quality/playwright-expert.md +65 -0
- package/skills-library/specialists/quality/spec-miner.md +56 -0
- package/skills-library/specialists/quality/test-master.md +65 -0
- package/skills-library/specialists/security/secure-code-guardian.md +55 -0
- package/skills-library/specialists/security/security-reviewer.md +53 -0
- package/skills-library/specialists/workflow/architecture-designer.md +53 -0
- package/skills-library/specialists/workflow/cli-developer.md +70 -0
- package/skills-library/specialists/workflow/feature-forge.md +65 -0
- package/skills-library/specialists/workflow/prompt-engineer.md +54 -0
- package/skills-library/specialists/workflow/the-fool.md +62 -0
- package/templates/ASSUMPTIONS.md +125 -0
- package/templates/BLOCKERS.md +73 -0
- package/templates/DECISION_LOG.md +116 -0
- package/templates/UAT.md +96 -0
- package/templates/blueprint.md +94 -0
- package/templates/brainstorm.md +185 -0
- package/templates/conscience.md +92 -0
- package/templates/fire-handoff.md +159 -0
- package/templates/metrics.md +67 -0
- package/templates/phase-prompt.md +142 -0
- package/templates/record.md +131 -0
- package/templates/review-report.md +117 -0
- package/templates/skills-index.md +157 -0
- package/templates/verification.md +149 -0
- package/templates/vision.md +79 -0
- package/validation-config.yml +793 -0
- package/version.json +7 -0
- package/workflows/execute-phase.md +732 -0
- package/workflows/handoff-session.md +678 -0
- package/workflows/new-project.md +578 -0
- package/workflows/plan-phase.md +592 -0
- package/workflows/verify-phase.md +874 -0
|
@@ -0,0 +1,793 @@
|
|
|
1
|
+
# Dominion Flow Validation Configuration
|
|
2
|
+
# Used by fire-verifier and /fire-4-verify command
|
|
3
|
+
#
|
|
4
|
+
# This configuration defines all 60 validation checks from the WARRIOR checklist
|
|
5
|
+
# organized into 10 categories, each worth 10 points (6 checks per category).
|
|
6
|
+
#
|
|
7
|
+
# Checks can be:
|
|
8
|
+
# - automated: Run via command with pass/fail result
|
|
9
|
+
# - semi-automated: Run via command but may need human interpretation
|
|
10
|
+
# - manual: Require human verification
|
|
11
|
+
#
|
|
12
|
+
# Version History:
|
|
13
|
+
# 1.0 - Initial comprehensive validation config
|
|
14
|
+
|
|
15
|
+
version: "1.0"
|
|
16
|
+
|
|
17
|
+
# ============================================================================
|
|
18
|
+
# AUTOMATED CHECKS CONFIGURATION
|
|
19
|
+
# These checks can be run automatically via command line
|
|
20
|
+
# ============================================================================
|
|
21
|
+
|
|
22
|
+
automated_checks:
|
|
23
|
+
|
|
24
|
+
# --------------------------------------------------------------------------
|
|
25
|
+
# Category 1: CODE QUALITY (10 points, 6 checks)
|
|
26
|
+
# Ensures code follows best practices and standards
|
|
27
|
+
# --------------------------------------------------------------------------
|
|
28
|
+
code_quality:
|
|
29
|
+
- name: "TypeScript Compilation"
|
|
30
|
+
description: "Verify TypeScript compiles without errors"
|
|
31
|
+
command: "npx tsc --noEmit"
|
|
32
|
+
required: true
|
|
33
|
+
timeout: 60
|
|
34
|
+
points: 1.67
|
|
35
|
+
|
|
36
|
+
- name: "ESLint Check"
|
|
37
|
+
description: "No linting errors or warnings"
|
|
38
|
+
command: "npx eslint . --ext .ts,.tsx --max-warnings 0"
|
|
39
|
+
required: true
|
|
40
|
+
timeout: 30
|
|
41
|
+
points: 1.67
|
|
42
|
+
|
|
43
|
+
- name: "Prettier Format"
|
|
44
|
+
description: "Code formatting is consistent"
|
|
45
|
+
command: "npx prettier --check ."
|
|
46
|
+
required: false
|
|
47
|
+
timeout: 30
|
|
48
|
+
points: 1.67
|
|
49
|
+
|
|
50
|
+
- name: "No Console Logs"
|
|
51
|
+
description: "No debug console.log statements in production code"
|
|
52
|
+
command: "grep -rn 'console.log' src/ --include='*.ts' --include='*.tsx' | grep -v '.test.' | grep -v '.spec.' | wc -l"
|
|
53
|
+
required: false
|
|
54
|
+
max_count: 0
|
|
55
|
+
timeout: 15
|
|
56
|
+
points: 1.67
|
|
57
|
+
|
|
58
|
+
- name: "No TODO/FIXME in Critical Paths"
|
|
59
|
+
description: "Critical code paths have no unresolved TODOs"
|
|
60
|
+
command: "grep -rn 'TODO\\|FIXME\\|XXX\\|HACK' src/ --include='*.ts' --include='*.tsx' | wc -l"
|
|
61
|
+
required: false
|
|
62
|
+
max_count: 5
|
|
63
|
+
timeout: 15
|
|
64
|
+
points: 1.67
|
|
65
|
+
|
|
66
|
+
- name: "Dead Code Detection"
|
|
67
|
+
description: "No unused exports or unreachable code"
|
|
68
|
+
command: "npx ts-prune --error"
|
|
69
|
+
required: false
|
|
70
|
+
timeout: 60
|
|
71
|
+
points: 1.65
|
|
72
|
+
|
|
73
|
+
# --------------------------------------------------------------------------
|
|
74
|
+
# Category 2: TESTING (10 points, 6 checks)
|
|
75
|
+
# Ensures adequate test coverage and passing tests
|
|
76
|
+
# --------------------------------------------------------------------------
|
|
77
|
+
testing:
|
|
78
|
+
- name: "Unit Tests Pass"
|
|
79
|
+
description: "All unit tests pass successfully"
|
|
80
|
+
command: "npm run test"
|
|
81
|
+
required: true
|
|
82
|
+
timeout: 120
|
|
83
|
+
points: 1.67
|
|
84
|
+
|
|
85
|
+
- name: "Unit Test Coverage"
|
|
86
|
+
description: "Unit test coverage meets threshold"
|
|
87
|
+
command: "npm run test -- --coverage --coverageThreshold='{\"global\":{\"branches\":80,\"functions\":80,\"lines\":80}}'"
|
|
88
|
+
required: true
|
|
89
|
+
timeout: 180
|
|
90
|
+
coverage_threshold: 80
|
|
91
|
+
points: 1.67
|
|
92
|
+
|
|
93
|
+
- name: "Integration Tests Pass"
|
|
94
|
+
description: "All integration tests pass successfully"
|
|
95
|
+
command: "npm run test:integration"
|
|
96
|
+
required: false
|
|
97
|
+
timeout: 300
|
|
98
|
+
points: 1.67
|
|
99
|
+
|
|
100
|
+
- name: "E2E Tests Pass"
|
|
101
|
+
description: "End-to-end tests pass in headless mode"
|
|
102
|
+
command: "npm run test:e2e"
|
|
103
|
+
required: false
|
|
104
|
+
timeout: 600
|
|
105
|
+
points: 1.67
|
|
106
|
+
|
|
107
|
+
- name: "No Skipped Tests"
|
|
108
|
+
description: "No tests marked as .skip or .only"
|
|
109
|
+
command: "grep -rn '\\.skip\\|\\.only' __tests__/ tests/ src/ --include='*.test.*' --include='*.spec.*' 2>/dev/null | wc -l"
|
|
110
|
+
required: false
|
|
111
|
+
max_count: 0
|
|
112
|
+
timeout: 15
|
|
113
|
+
points: 1.67
|
|
114
|
+
|
|
115
|
+
- name: "Test Isolation"
|
|
116
|
+
description: "Tests can run independently (no order dependency)"
|
|
117
|
+
command: "npm run test -- --runInBand --randomize"
|
|
118
|
+
required: false
|
|
119
|
+
timeout: 180
|
|
120
|
+
points: 1.65
|
|
121
|
+
|
|
122
|
+
# --------------------------------------------------------------------------
|
|
123
|
+
# Category 3: SECURITY (10 points, 6 checks)
|
|
124
|
+
# Ensures no security vulnerabilities or exposed secrets
|
|
125
|
+
# --------------------------------------------------------------------------
|
|
126
|
+
security:
|
|
127
|
+
- name: "Dependency Audit"
|
|
128
|
+
description: "No high/critical vulnerabilities in dependencies"
|
|
129
|
+
command: "npm audit --audit-level=high"
|
|
130
|
+
required: true
|
|
131
|
+
timeout: 30
|
|
132
|
+
points: 1.67
|
|
133
|
+
|
|
134
|
+
- name: "Secret Scan"
|
|
135
|
+
description: "No secrets, API keys, or credentials in code"
|
|
136
|
+
command: "npx secretlint \"**/*\""
|
|
137
|
+
required: true
|
|
138
|
+
timeout: 60
|
|
139
|
+
points: 1.67
|
|
140
|
+
|
|
141
|
+
- name: "SAST Scan"
|
|
142
|
+
description: "Static Application Security Testing passes"
|
|
143
|
+
command: "npx semgrep --config=auto . --error"
|
|
144
|
+
required: false
|
|
145
|
+
timeout: 120
|
|
146
|
+
points: 1.67
|
|
147
|
+
|
|
148
|
+
- name: "No Hardcoded URLs"
|
|
149
|
+
description: "Environment-specific URLs use env vars"
|
|
150
|
+
command: "grep -rn 'localhost:\\|127\\.0\\.0\\.1:\\|http://.*:' src/ --include='*.ts' --include='*.tsx' | grep -v 'test\\|spec\\|mock' | wc -l"
|
|
151
|
+
required: false
|
|
152
|
+
max_count: 0
|
|
153
|
+
timeout: 15
|
|
154
|
+
points: 1.67
|
|
155
|
+
|
|
156
|
+
- name: "Dependency License Check"
|
|
157
|
+
description: "All dependencies have compatible licenses"
|
|
158
|
+
command: "npx license-checker --onlyAllow 'MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;CC0-1.0;Unlicense'"
|
|
159
|
+
required: false
|
|
160
|
+
timeout: 30
|
|
161
|
+
points: 1.67
|
|
162
|
+
|
|
163
|
+
- name: "No Eval or Dynamic Code"
|
|
164
|
+
description: "No eval(), new Function(), or innerHTML assignments"
|
|
165
|
+
command: "grep -rn 'eval(\\|new Function(\\|innerHTML\\s*=' src/ --include='*.ts' --include='*.tsx' | wc -l"
|
|
166
|
+
required: false
|
|
167
|
+
max_count: 0
|
|
168
|
+
timeout: 15
|
|
169
|
+
points: 1.65
|
|
170
|
+
|
|
171
|
+
# --------------------------------------------------------------------------
|
|
172
|
+
# Category 4: PERFORMANCE (10 points, 6 checks)
|
|
173
|
+
# Ensures application meets performance requirements
|
|
174
|
+
# --------------------------------------------------------------------------
|
|
175
|
+
performance:
|
|
176
|
+
- name: "Bundle Size Check"
|
|
177
|
+
description: "Production bundle within size limits"
|
|
178
|
+
command: "npx bundlesize"
|
|
179
|
+
required: false
|
|
180
|
+
max_size: "500kb"
|
|
181
|
+
timeout: 60
|
|
182
|
+
points: 1.67
|
|
183
|
+
|
|
184
|
+
- name: "No Memory Leaks"
|
|
185
|
+
description: "No obvious memory leak patterns detected"
|
|
186
|
+
command: "grep -rn 'setInterval\\|addEventListener' src/ --include='*.ts' --include='*.tsx' -A5 | grep -v 'clearInterval\\|removeEventListener\\|useEffect.*return' | wc -l"
|
|
187
|
+
required: false
|
|
188
|
+
timeout: 15
|
|
189
|
+
points: 1.67
|
|
190
|
+
|
|
191
|
+
- name: "No Synchronous Heavy Operations"
|
|
192
|
+
description: "Heavy operations are async/non-blocking"
|
|
193
|
+
command: "grep -rn 'readFileSync\\|writeFileSync\\|execSync' src/ --include='*.ts' | wc -l"
|
|
194
|
+
required: false
|
|
195
|
+
max_count: 0
|
|
196
|
+
timeout: 15
|
|
197
|
+
points: 1.67
|
|
198
|
+
|
|
199
|
+
- name: "Lazy Loading Implemented"
|
|
200
|
+
description: "Large components use code splitting"
|
|
201
|
+
command: "grep -rn 'React.lazy\\|dynamic(\\|import(' src/ --include='*.tsx' | wc -l"
|
|
202
|
+
required: false
|
|
203
|
+
min_count: 1
|
|
204
|
+
timeout: 15
|
|
205
|
+
points: 1.67
|
|
206
|
+
|
|
207
|
+
- name: "No N+1 Query Patterns"
|
|
208
|
+
description: "Database queries don't have N+1 patterns"
|
|
209
|
+
command: "grep -rn 'for.*await.*find\\|forEach.*await.*query' src/ server/ --include='*.ts' | wc -l"
|
|
210
|
+
required: false
|
|
211
|
+
max_count: 0
|
|
212
|
+
timeout: 15
|
|
213
|
+
points: 1.67
|
|
214
|
+
|
|
215
|
+
- name: "Caching Strategy Exists"
|
|
216
|
+
description: "Appropriate caching is implemented"
|
|
217
|
+
command: "grep -rn 'cache\\|Cache\\|memoize\\|useMemo\\|useCallback' src/ --include='*.ts' --include='*.tsx' | wc -l"
|
|
218
|
+
required: false
|
|
219
|
+
min_count: 1
|
|
220
|
+
timeout: 15
|
|
221
|
+
points: 1.65
|
|
222
|
+
|
|
223
|
+
# --------------------------------------------------------------------------
|
|
224
|
+
# Category 5: DOCUMENTATION (10 points, 6 checks)
|
|
225
|
+
# Ensures code and project are well documented
|
|
226
|
+
# --------------------------------------------------------------------------
|
|
227
|
+
documentation:
|
|
228
|
+
- name: "README Exists"
|
|
229
|
+
description: "Project has a README.md file"
|
|
230
|
+
command: "test -f README.md && echo 'exists' || echo 'missing'"
|
|
231
|
+
required: true
|
|
232
|
+
expected_output: "exists"
|
|
233
|
+
timeout: 5
|
|
234
|
+
points: 1.67
|
|
235
|
+
|
|
236
|
+
- name: "README Has Required Sections"
|
|
237
|
+
description: "README contains setup, usage, and API documentation"
|
|
238
|
+
command: "grep -E '^#+.*(Setup|Install|Usage|API|Getting Started)' README.md | wc -l"
|
|
239
|
+
required: false
|
|
240
|
+
min_count: 3
|
|
241
|
+
timeout: 5
|
|
242
|
+
points: 1.67
|
|
243
|
+
|
|
244
|
+
- name: "API Documentation"
|
|
245
|
+
description: "API endpoints are documented (OpenAPI/Swagger)"
|
|
246
|
+
command: "test -f openapi.yaml -o -f swagger.json -o -f docs/api.md && echo 'exists' || echo 'missing'"
|
|
247
|
+
required: false
|
|
248
|
+
expected_output: "exists"
|
|
249
|
+
timeout: 5
|
|
250
|
+
points: 1.67
|
|
251
|
+
|
|
252
|
+
- name: "JSDoc Coverage"
|
|
253
|
+
description: "Public functions have JSDoc comments"
|
|
254
|
+
command: "grep -rn 'export.*function\\|export const.*=' src/ --include='*.ts' | wc -l"
|
|
255
|
+
required: false
|
|
256
|
+
timeout: 15
|
|
257
|
+
points: 1.67
|
|
258
|
+
|
|
259
|
+
- name: "CHANGELOG Exists"
|
|
260
|
+
description: "Project maintains a changelog"
|
|
261
|
+
command: "test -f CHANGELOG.md -o -f HISTORY.md && echo 'exists' || echo 'missing'"
|
|
262
|
+
required: false
|
|
263
|
+
expected_output: "exists"
|
|
264
|
+
timeout: 5
|
|
265
|
+
points: 1.67
|
|
266
|
+
|
|
267
|
+
- name: "Architecture Documentation"
|
|
268
|
+
description: "High-level architecture is documented"
|
|
269
|
+
command: "test -f docs/architecture.md -o -f ARCHITECTURE.md -o -d .planning && echo 'exists' || echo 'missing'"
|
|
270
|
+
required: false
|
|
271
|
+
expected_output: "exists"
|
|
272
|
+
timeout: 5
|
|
273
|
+
points: 1.65
|
|
274
|
+
|
|
275
|
+
# --------------------------------------------------------------------------
|
|
276
|
+
# Category 6: DATABASE (10 points, 6 checks)
|
|
277
|
+
# Ensures database design and operations are sound
|
|
278
|
+
# --------------------------------------------------------------------------
|
|
279
|
+
database:
|
|
280
|
+
- name: "Migrations Up-to-Date"
|
|
281
|
+
description: "All migrations have been applied"
|
|
282
|
+
command: "npx prisma migrate status 2>&1 | grep -q 'Database schema is up to date' && echo 'synced' || echo 'pending'"
|
|
283
|
+
required: true
|
|
284
|
+
expected_output: "synced"
|
|
285
|
+
timeout: 30
|
|
286
|
+
points: 1.67
|
|
287
|
+
|
|
288
|
+
- name: "Schema Valid"
|
|
289
|
+
description: "Database schema validates without errors"
|
|
290
|
+
command: "npx prisma validate"
|
|
291
|
+
required: true
|
|
292
|
+
timeout: 15
|
|
293
|
+
points: 1.67
|
|
294
|
+
|
|
295
|
+
- name: "Indexes Defined"
|
|
296
|
+
description: "Required indexes are defined in schema"
|
|
297
|
+
command: "grep -c '@@index\\|@unique\\|@@unique' prisma/schema.prisma 2>/dev/null || echo '0'"
|
|
298
|
+
required: false
|
|
299
|
+
min_count: 1
|
|
300
|
+
timeout: 5
|
|
301
|
+
points: 1.67
|
|
302
|
+
|
|
303
|
+
- name: "Foreign Keys Defined"
|
|
304
|
+
description: "Relationships have proper foreign key constraints"
|
|
305
|
+
command: "grep -c '@relation' prisma/schema.prisma 2>/dev/null || echo '0'"
|
|
306
|
+
required: false
|
|
307
|
+
min_count: 0
|
|
308
|
+
timeout: 5
|
|
309
|
+
points: 1.67
|
|
310
|
+
|
|
311
|
+
- name: "No Raw SQL Injection Risk"
|
|
312
|
+
description: "No string concatenation in SQL queries"
|
|
313
|
+
command: "grep -rn '\\$\\{.*\\}.*SELECT\\|\\$\\{.*\\}.*INSERT\\|\\$\\{.*\\}.*UPDATE\\|\\$\\{.*\\}.*DELETE' src/ server/ --include='*.ts' | wc -l"
|
|
314
|
+
required: false
|
|
315
|
+
max_count: 0
|
|
316
|
+
timeout: 15
|
|
317
|
+
points: 1.67
|
|
318
|
+
|
|
319
|
+
- name: "Seed Data Available"
|
|
320
|
+
description: "Database seed scripts exist for development"
|
|
321
|
+
command: "test -f prisma/seed.ts -o -f prisma/seed.js -o -f scripts/seed.ts && echo 'exists' || echo 'missing'"
|
|
322
|
+
required: false
|
|
323
|
+
expected_output: "exists"
|
|
324
|
+
timeout: 5
|
|
325
|
+
points: 1.65
|
|
326
|
+
|
|
327
|
+
# --------------------------------------------------------------------------
|
|
328
|
+
# Category 7: API DESIGN (10 points, 6 checks)
|
|
329
|
+
# Ensures API follows best practices
|
|
330
|
+
# --------------------------------------------------------------------------
|
|
331
|
+
api_design:
|
|
332
|
+
- name: "Consistent Response Format"
|
|
333
|
+
description: "API responses follow consistent structure"
|
|
334
|
+
command: "grep -rn 'res\\.json({' server/ src/api/ --include='*.ts' | head -20 | wc -l"
|
|
335
|
+
required: false
|
|
336
|
+
timeout: 15
|
|
337
|
+
points: 1.67
|
|
338
|
+
|
|
339
|
+
- name: "Error Handling Middleware"
|
|
340
|
+
description: "Global error handling is implemented"
|
|
341
|
+
command: "grep -rn 'app\\.use.*err.*req.*res\\|errorHandler\\|ErrorBoundary' server/ src/ --include='*.ts' --include='*.tsx' | wc -l"
|
|
342
|
+
required: false
|
|
343
|
+
min_count: 1
|
|
344
|
+
timeout: 15
|
|
345
|
+
points: 1.67
|
|
346
|
+
|
|
347
|
+
- name: "Input Validation"
|
|
348
|
+
description: "Request inputs are validated"
|
|
349
|
+
command: "grep -rn 'zod\\|joi\\|yup\\|class-validator\\|express-validator' src/ server/ --include='*.ts' | wc -l"
|
|
350
|
+
required: false
|
|
351
|
+
min_count: 1
|
|
352
|
+
timeout: 15
|
|
353
|
+
points: 1.67
|
|
354
|
+
|
|
355
|
+
- name: "Rate Limiting Configured"
|
|
356
|
+
description: "Rate limiting is implemented on API routes"
|
|
357
|
+
command: "grep -rn 'rateLimit\\|rate-limit\\|throttle' server/ src/ --include='*.ts' | wc -l"
|
|
358
|
+
required: false
|
|
359
|
+
min_count: 0
|
|
360
|
+
timeout: 15
|
|
361
|
+
points: 1.67
|
|
362
|
+
|
|
363
|
+
- name: "CORS Configured"
|
|
364
|
+
description: "CORS is properly configured"
|
|
365
|
+
command: "grep -rn 'cors(\\|Access-Control-Allow' server/ src/ --include='*.ts' | wc -l"
|
|
366
|
+
required: false
|
|
367
|
+
min_count: 1
|
|
368
|
+
timeout: 15
|
|
369
|
+
points: 1.67
|
|
370
|
+
|
|
371
|
+
- name: "API Versioning"
|
|
372
|
+
description: "API versioning strategy is implemented"
|
|
373
|
+
command: "grep -rn '/api/v[0-9]\\|/v[0-9]/' server/ src/ --include='*.ts' | wc -l"
|
|
374
|
+
required: false
|
|
375
|
+
min_count: 0
|
|
376
|
+
timeout: 15
|
|
377
|
+
points: 1.65
|
|
378
|
+
|
|
379
|
+
# --------------------------------------------------------------------------
|
|
380
|
+
# Category 8: INFRASTRUCTURE (10 points, 6 checks)
|
|
381
|
+
# Ensures deployment and infrastructure readiness
|
|
382
|
+
# --------------------------------------------------------------------------
|
|
383
|
+
infrastructure:
|
|
384
|
+
- name: "Dockerfile Exists"
|
|
385
|
+
description: "Project can be containerized"
|
|
386
|
+
command: "test -f Dockerfile && echo 'exists' || echo 'missing'"
|
|
387
|
+
required: false
|
|
388
|
+
expected_output: "exists"
|
|
389
|
+
timeout: 5
|
|
390
|
+
points: 1.67
|
|
391
|
+
|
|
392
|
+
- name: "Docker Compose Available"
|
|
393
|
+
description: "Multi-container setup is defined"
|
|
394
|
+
command: "test -f docker-compose.yml -o -f docker-compose.yaml -o -f compose.yml && echo 'exists' || echo 'missing'"
|
|
395
|
+
required: false
|
|
396
|
+
expected_output: "exists"
|
|
397
|
+
timeout: 5
|
|
398
|
+
points: 1.67
|
|
399
|
+
|
|
400
|
+
- name: "Environment Template"
|
|
401
|
+
description: "Environment variable template exists"
|
|
402
|
+
command: "test -f .env.example -o -f .env.template -o -f .env.sample && echo 'exists' || echo 'missing'"
|
|
403
|
+
required: true
|
|
404
|
+
expected_output: "exists"
|
|
405
|
+
timeout: 5
|
|
406
|
+
points: 1.67
|
|
407
|
+
|
|
408
|
+
- name: "Health Check Endpoint"
|
|
409
|
+
description: "Application has health check endpoint"
|
|
410
|
+
command: "grep -rn '/health\\|/healthz\\|/ready\\|/live' server/ src/ --include='*.ts' | wc -l"
|
|
411
|
+
required: false
|
|
412
|
+
min_count: 1
|
|
413
|
+
timeout: 15
|
|
414
|
+
points: 1.67
|
|
415
|
+
|
|
416
|
+
- name: "Logging Configured"
|
|
417
|
+
description: "Structured logging is implemented"
|
|
418
|
+
command: "grep -rn 'winston\\|pino\\|bunyan\\|log4js\\|logger\\.' server/ src/ --include='*.ts' | wc -l"
|
|
419
|
+
required: false
|
|
420
|
+
min_count: 1
|
|
421
|
+
timeout: 15
|
|
422
|
+
points: 1.67
|
|
423
|
+
|
|
424
|
+
- name: "Graceful Shutdown"
|
|
425
|
+
description: "Application handles SIGTERM gracefully"
|
|
426
|
+
command: "grep -rn 'SIGTERM\\|SIGINT\\|graceful' server/ src/ --include='*.ts' | wc -l"
|
|
427
|
+
required: false
|
|
428
|
+
min_count: 0
|
|
429
|
+
timeout: 15
|
|
430
|
+
points: 1.65
|
|
431
|
+
|
|
432
|
+
# --------------------------------------------------------------------------
|
|
433
|
+
# Category 9: GIT & VERSION CONTROL (10 points, 6 checks)
|
|
434
|
+
# Ensures proper version control practices
|
|
435
|
+
# --------------------------------------------------------------------------
|
|
436
|
+
version_control:
|
|
437
|
+
- name: "Gitignore Complete"
|
|
438
|
+
description: "Sensitive and build files are ignored"
|
|
439
|
+
command: "grep -E 'node_modules|.env$|\\.env\\.local|dist/|build/|coverage/' .gitignore | wc -l"
|
|
440
|
+
required: true
|
|
441
|
+
min_count: 3
|
|
442
|
+
timeout: 5
|
|
443
|
+
points: 1.67
|
|
444
|
+
|
|
445
|
+
- name: "No Secrets in Git History"
|
|
446
|
+
description: "Git history doesn't contain secrets"
|
|
447
|
+
command: "git log -p --all -S 'password=' --oneline 2>/dev/null | head -5 | wc -l"
|
|
448
|
+
required: false
|
|
449
|
+
max_count: 0
|
|
450
|
+
timeout: 30
|
|
451
|
+
points: 1.67
|
|
452
|
+
|
|
453
|
+
- name: "Branch Protection Reminder"
|
|
454
|
+
description: "Main branch should have protection rules"
|
|
455
|
+
command: "git branch --show-current"
|
|
456
|
+
required: false
|
|
457
|
+
timeout: 5
|
|
458
|
+
points: 1.67
|
|
459
|
+
note: "Manual verification required for branch protection rules"
|
|
460
|
+
|
|
461
|
+
- name: "Commit Message Convention"
|
|
462
|
+
description: "Recent commits follow conventional format"
|
|
463
|
+
command: "git log --oneline -10 | grep -E '^[a-f0-9]+ (feat|fix|docs|style|refactor|test|chore|perf|ci|build|revert)(\\(.*\\))?:' | wc -l"
|
|
464
|
+
required: false
|
|
465
|
+
min_count: 5
|
|
466
|
+
timeout: 10
|
|
467
|
+
points: 1.67
|
|
468
|
+
|
|
469
|
+
- name: "No Large Files"
|
|
470
|
+
description: "Repository doesn't contain large binary files"
|
|
471
|
+
command: "find . -type f -size +10M -not -path './.git/*' -not -path './node_modules/*' 2>/dev/null | wc -l"
|
|
472
|
+
required: false
|
|
473
|
+
max_count: 0
|
|
474
|
+
timeout: 30
|
|
475
|
+
points: 1.67
|
|
476
|
+
|
|
477
|
+
- name: "Clean Working Directory"
|
|
478
|
+
description: "No uncommitted changes before deploy"
|
|
479
|
+
command: "git status --porcelain | wc -l"
|
|
480
|
+
required: false
|
|
481
|
+
max_count: 0
|
|
482
|
+
timeout: 5
|
|
483
|
+
points: 1.65
|
|
484
|
+
|
|
485
|
+
# --------------------------------------------------------------------------
|
|
486
|
+
# Category 10: ACCESSIBILITY & UX (10 points, 6 checks)
|
|
487
|
+
# Ensures frontend accessibility and user experience
|
|
488
|
+
# --------------------------------------------------------------------------
|
|
489
|
+
accessibility:
|
|
490
|
+
- name: "ARIA Labels Present"
|
|
491
|
+
description: "Interactive elements have ARIA labels"
|
|
492
|
+
command: "grep -rn 'aria-label\\|aria-labelledby\\|aria-describedby' src/ --include='*.tsx' --include='*.jsx' | wc -l"
|
|
493
|
+
required: false
|
|
494
|
+
min_count: 1
|
|
495
|
+
timeout: 15
|
|
496
|
+
points: 1.67
|
|
497
|
+
|
|
498
|
+
- name: "Alt Text on Images"
|
|
499
|
+
description: "Images have alt text"
|
|
500
|
+
command: "grep -rn '<img' src/ --include='*.tsx' --include='*.jsx' | grep -v 'alt=' | wc -l"
|
|
501
|
+
required: false
|
|
502
|
+
max_count: 0
|
|
503
|
+
timeout: 15
|
|
504
|
+
points: 1.67
|
|
505
|
+
|
|
506
|
+
- name: "Semantic HTML"
|
|
507
|
+
description: "Semantic HTML elements are used"
|
|
508
|
+
command: "grep -rn '<header\\|<footer\\|<main\\|<nav\\|<section\\|<article\\|<aside' src/ --include='*.tsx' --include='*.jsx' | wc -l"
|
|
509
|
+
required: false
|
|
510
|
+
min_count: 1
|
|
511
|
+
timeout: 15
|
|
512
|
+
points: 1.67
|
|
513
|
+
|
|
514
|
+
- name: "Keyboard Navigation"
|
|
515
|
+
description: "Interactive elements are keyboard accessible"
|
|
516
|
+
command: "grep -rn 'onKeyDown\\|onKeyUp\\|onKeyPress\\|tabIndex' src/ --include='*.tsx' --include='*.jsx' | wc -l"
|
|
517
|
+
required: false
|
|
518
|
+
min_count: 0
|
|
519
|
+
timeout: 15
|
|
520
|
+
points: 1.67
|
|
521
|
+
|
|
522
|
+
- name: "Color Contrast"
|
|
523
|
+
description: "UI components use accessible color contrast"
|
|
524
|
+
command: "grep -rn 'text-gray-[1-3]00\\|text-white.*bg-gray-[1-3]00' src/ --include='*.tsx' | wc -l"
|
|
525
|
+
required: false
|
|
526
|
+
max_count: 0
|
|
527
|
+
timeout: 15
|
|
528
|
+
points: 1.67
|
|
529
|
+
note: "Low contrast color combinations that may fail WCAG"
|
|
530
|
+
|
|
531
|
+
- name: "Focus Indicators"
|
|
532
|
+
description: "Focus states are visible"
|
|
533
|
+
command: "grep -rn 'focus:\\|:focus\\|focus-visible' src/ --include='*.tsx' --include='*.css' --include='*.scss' | wc -l"
|
|
534
|
+
required: false
|
|
535
|
+
min_count: 1
|
|
536
|
+
timeout: 15
|
|
537
|
+
points: 1.65
|
|
538
|
+
|
|
539
|
+
|
|
540
|
+
# ============================================================================
|
|
541
|
+
# SCORING CONFIGURATION
|
|
542
|
+
# Defines how checks are weighted and scored
|
|
543
|
+
# ============================================================================
|
|
544
|
+
|
|
545
|
+
scoring:
|
|
546
|
+
# Total possible score: 70 points (7 categories x 10 points)
|
|
547
|
+
max_score: 70
|
|
548
|
+
|
|
549
|
+
# Category weights (all equal at 10 points each)
|
|
550
|
+
categories:
|
|
551
|
+
code_quality:
|
|
552
|
+
weight: 10
|
|
553
|
+
checks: 6
|
|
554
|
+
description: "Code follows standards and best practices"
|
|
555
|
+
|
|
556
|
+
testing:
|
|
557
|
+
weight: 10
|
|
558
|
+
checks: 6
|
|
559
|
+
description: "Adequate test coverage and all tests pass"
|
|
560
|
+
|
|
561
|
+
security:
|
|
562
|
+
weight: 10
|
|
563
|
+
checks: 6
|
|
564
|
+
description: "No vulnerabilities or exposed secrets"
|
|
565
|
+
|
|
566
|
+
performance:
|
|
567
|
+
weight: 10
|
|
568
|
+
checks: 6
|
|
569
|
+
description: "Application meets performance requirements"
|
|
570
|
+
|
|
571
|
+
documentation:
|
|
572
|
+
weight: 10
|
|
573
|
+
checks: 6
|
|
574
|
+
description: "Code and project are well documented"
|
|
575
|
+
|
|
576
|
+
database:
|
|
577
|
+
weight: 10
|
|
578
|
+
checks: 6
|
|
579
|
+
description: "Database design and operations are sound"
|
|
580
|
+
|
|
581
|
+
api_design:
|
|
582
|
+
weight: 10
|
|
583
|
+
checks: 6
|
|
584
|
+
description: "API follows best practices"
|
|
585
|
+
|
|
586
|
+
infrastructure:
|
|
587
|
+
weight: 10
|
|
588
|
+
checks: 6
|
|
589
|
+
description: "Deployment and infrastructure ready"
|
|
590
|
+
|
|
591
|
+
version_control:
|
|
592
|
+
weight: 10
|
|
593
|
+
checks: 6
|
|
594
|
+
description: "Proper version control practices"
|
|
595
|
+
|
|
596
|
+
accessibility:
|
|
597
|
+
weight: 10
|
|
598
|
+
checks: 6
|
|
599
|
+
description: "Frontend accessibility and UX"
|
|
600
|
+
|
|
601
|
+
# Score thresholds for deploy decisions
|
|
602
|
+
thresholds:
|
|
603
|
+
excellent: 63 # 90% - Ship with confidence
|
|
604
|
+
good: 56 # 80% - Ship with minor follow-ups
|
|
605
|
+
conditional: 49 # 70% - Ship with documented tech debt
|
|
606
|
+
minimum: 42 # 60% - Requires justification to ship
|
|
607
|
+
|
|
608
|
+
# Deploy recommendations based on score
|
|
609
|
+
recommendations:
|
|
610
|
+
- range: [63, 70]
|
|
611
|
+
status: "EXCELLENT"
|
|
612
|
+
decision: "Deploy immediately"
|
|
613
|
+
message: "All critical checks pass, code is production-ready"
|
|
614
|
+
|
|
615
|
+
- range: [48, 53]
|
|
616
|
+
status: "GOOD"
|
|
617
|
+
decision: "Deploy with follow-up"
|
|
618
|
+
message: "Minor issues to address in next sprint"
|
|
619
|
+
|
|
620
|
+
- range: [42, 47]
|
|
621
|
+
status: "CONDITIONAL"
|
|
622
|
+
decision: "Deploy with tech debt ticket"
|
|
623
|
+
message: "Document known issues, plan remediation"
|
|
624
|
+
|
|
625
|
+
- range: [36, 41]
|
|
626
|
+
status: "MINIMUM"
|
|
627
|
+
decision: "Requires approval"
|
|
628
|
+
message: "Stakeholder sign-off needed on risks"
|
|
629
|
+
|
|
630
|
+
- range: [0, 35]
|
|
631
|
+
status: "FAIL"
|
|
632
|
+
decision: "Do not deploy"
|
|
633
|
+
message: "Critical issues must be resolved first"
|
|
634
|
+
|
|
635
|
+
|
|
636
|
+
# ============================================================================
|
|
637
|
+
# MANUAL CHECKS CONFIGURATION
|
|
638
|
+
# These checks require human verification
|
|
639
|
+
# ============================================================================
|
|
640
|
+
|
|
641
|
+
manual_checks:
|
|
642
|
+
code_quality:
|
|
643
|
+
- name: "Code review completed"
|
|
644
|
+
description: "At least one team member has reviewed the code"
|
|
645
|
+
verification: "Check PR has approved review"
|
|
646
|
+
|
|
647
|
+
- name: "No copy-paste code"
|
|
648
|
+
description: "DRY principle followed, no duplicated logic"
|
|
649
|
+
verification: "Manual code inspection"
|
|
650
|
+
|
|
651
|
+
security:
|
|
652
|
+
- name: "No hardcoded credentials"
|
|
653
|
+
description: "Verify no passwords, API keys, or secrets in code"
|
|
654
|
+
verification: "Search for common patterns: password=, apiKey=, secret="
|
|
655
|
+
|
|
656
|
+
- name: "Authentication tested"
|
|
657
|
+
description: "Auth flows work correctly and securely"
|
|
658
|
+
verification: "Test login, logout, token refresh, protected routes"
|
|
659
|
+
|
|
660
|
+
- name: "Authorization verified"
|
|
661
|
+
description: "Users can only access their own resources"
|
|
662
|
+
verification: "Test accessing other users' data returns 403"
|
|
663
|
+
|
|
664
|
+
documentation:
|
|
665
|
+
- name: "Setup instructions current"
|
|
666
|
+
description: "Verify README setup steps work on fresh install"
|
|
667
|
+
verification: "Clone repo, follow README, verify app runs"
|
|
668
|
+
|
|
669
|
+
- name: "API examples work"
|
|
670
|
+
description: "Code examples in docs are copy-paste runnable"
|
|
671
|
+
verification: "Test each API example manually"
|
|
672
|
+
|
|
673
|
+
testing:
|
|
674
|
+
- name: "Edge cases covered"
|
|
675
|
+
description: "Tests include boundary conditions and error paths"
|
|
676
|
+
verification: "Review test files for edge case coverage"
|
|
677
|
+
|
|
678
|
+
- name: "Realistic test data"
|
|
679
|
+
description: "Tests use production-like data, not trivial examples"
|
|
680
|
+
verification: "Review test fixtures and mocks"
|
|
681
|
+
|
|
682
|
+
performance:
|
|
683
|
+
- name: "Load tested"
|
|
684
|
+
description: "Application handles expected concurrent users"
|
|
685
|
+
verification: "Run load test, verify response times under load"
|
|
686
|
+
|
|
687
|
+
- name: "Mobile performance"
|
|
688
|
+
description: "Application performs well on mobile devices"
|
|
689
|
+
verification: "Test on real device or Chrome DevTools throttling"
|
|
690
|
+
|
|
691
|
+
ux:
|
|
692
|
+
- name: "User flows tested"
|
|
693
|
+
description: "Key user journeys work end-to-end"
|
|
694
|
+
verification: "Walk through main user flows manually"
|
|
695
|
+
|
|
696
|
+
- name: "Error messages helpful"
|
|
697
|
+
description: "Error messages guide users to resolution"
|
|
698
|
+
verification: "Trigger errors, verify messages are actionable"
|
|
699
|
+
|
|
700
|
+
|
|
701
|
+
# ============================================================================
|
|
702
|
+
# EXECUTION CONFIGURATION
|
|
703
|
+
# Controls how validations are run
|
|
704
|
+
# ============================================================================
|
|
705
|
+
|
|
706
|
+
execution:
|
|
707
|
+
# Parallel execution settings
|
|
708
|
+
parallel:
|
|
709
|
+
enabled: true
|
|
710
|
+
max_concurrent: 4
|
|
711
|
+
|
|
712
|
+
# Timeout settings (in seconds)
|
|
713
|
+
timeouts:
|
|
714
|
+
default: 60
|
|
715
|
+
long_running: 300
|
|
716
|
+
e2e: 600
|
|
717
|
+
|
|
718
|
+
# Retry settings for flaky checks
|
|
719
|
+
retry:
|
|
720
|
+
enabled: true
|
|
721
|
+
max_attempts: 2
|
|
722
|
+
delay_seconds: 5
|
|
723
|
+
|
|
724
|
+
# Output settings
|
|
725
|
+
output:
|
|
726
|
+
format: "detailed" # "summary" | "detailed" | "json"
|
|
727
|
+
show_commands: true
|
|
728
|
+
show_output: true
|
|
729
|
+
color: true
|
|
730
|
+
|
|
731
|
+
# Skip settings
|
|
732
|
+
skip:
|
|
733
|
+
# Categories to skip (e.g., if no frontend)
|
|
734
|
+
categories: []
|
|
735
|
+
# Individual checks to skip by name
|
|
736
|
+
checks: []
|
|
737
|
+
|
|
738
|
+
# Environment-specific overrides
|
|
739
|
+
environments:
|
|
740
|
+
development:
|
|
741
|
+
skip_categories: []
|
|
742
|
+
required_score: 36
|
|
743
|
+
|
|
744
|
+
staging:
|
|
745
|
+
skip_categories: []
|
|
746
|
+
required_score: 42
|
|
747
|
+
|
|
748
|
+
production:
|
|
749
|
+
skip_categories: []
|
|
750
|
+
required_score: 48
|
|
751
|
+
|
|
752
|
+
|
|
753
|
+
# ============================================================================
|
|
754
|
+
# CUSTOM PROJECT OVERRIDES
|
|
755
|
+
# Add project-specific check modifications here
|
|
756
|
+
# ============================================================================
|
|
757
|
+
|
|
758
|
+
project_overrides:
|
|
759
|
+
# Example: Override bundle size for specific project
|
|
760
|
+
# performance:
|
|
761
|
+
# "Bundle Size Check":
|
|
762
|
+
# max_size: "750kb"
|
|
763
|
+
|
|
764
|
+
# Example: Skip certain checks for this project
|
|
765
|
+
# skip_checks:
|
|
766
|
+
# - "E2E Tests Pass"
|
|
767
|
+
# - "API Versioning"
|
|
768
|
+
|
|
769
|
+
|
|
770
|
+
# ============================================================================
|
|
771
|
+
# REPORTING CONFIGURATION
|
|
772
|
+
# Controls validation report generation
|
|
773
|
+
# ============================================================================
|
|
774
|
+
|
|
775
|
+
reporting:
|
|
776
|
+
# Report file settings
|
|
777
|
+
file:
|
|
778
|
+
enabled: true
|
|
779
|
+
path: ".validation-report.json"
|
|
780
|
+
include_command_output: false
|
|
781
|
+
|
|
782
|
+
# Markdown report for PRs
|
|
783
|
+
markdown:
|
|
784
|
+
enabled: true
|
|
785
|
+
path: ".validation-report.md"
|
|
786
|
+
include_checklist: true
|
|
787
|
+
|
|
788
|
+
# Slack/Teams notification
|
|
789
|
+
notifications:
|
|
790
|
+
enabled: false
|
|
791
|
+
webhook_url: "${VALIDATION_WEBHOOK_URL}"
|
|
792
|
+
on_failure: true
|
|
793
|
+
on_success: false
|