proagents 1.6.19 → 1.6.21
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/settings.local.json +13 -1
- package/.proagents/.cursorrules +25 -10
- package/.proagents/.windsurfrules +25 -10
- package/.proagents/AGENTS.md +30 -11
- package/.proagents/AI_INSTRUCTIONS.md +86 -30
- package/.proagents/BOLT.md +25 -10
- package/.proagents/CLAUDE.md +25 -10
- package/.proagents/GEMINI.md +25 -10
- package/.proagents/KIRO.md +25 -10
- package/.proagents/LOVABLE.md +25 -10
- package/.proagents/PROAGENTS.md +96 -343
- package/.proagents/REPLIT.md +25 -10
- package/.proagents/activity.log +1 -0
- package/.proagents/custom-commands.yaml +0 -1
- package/.proagents/docs/command-details.md +1 -2
- package/.proagents/getting-started/ai-training-setup.md +0 -1
- package/.proagents/performance/README.md +59 -0
- package/.proagents/performance/bundle-analysis.md +375 -0
- package/.proagents/performance/load-testing.md +563 -0
- package/.proagents/performance/runtime-metrics.md +489 -0
- package/.proagents/performance/web-vitals.md +425 -0
- package/.proagents/platforms.yaml +66 -0
- package/.proagents/proagents.config.yaml +0 -1
- package/.proagents/prompts/ai-add.md +80 -0
- package/.proagents/prompts/ai-list.md +41 -0
- package/.proagents/prompts/ai-remove.md +112 -0
- package/.proagents/prompts/ai-sync.md +96 -0
- package/.proagents/workflow-modes/entry-modes.md +1 -6
- package/lib/commands/ai.js +100 -48
- package/lib/commands/init.js +89 -22
- package/package.json +1 -1
- package/.proagents/ANTIGRAVITY.md +0 -61
- package/.proagents/CHATGPT.md +0 -57
- package/.proagents/GROQ.md +0 -57
- package/.proagents/api-versioning/README.md +0 -257
- package/.proagents/api-versioning/changelog-template.md +0 -225
- package/.proagents/api-versioning/deprecation-workflow.md +0 -470
- package/.proagents/api-versioning/versioning-strategy.md +0 -291
- package/.proagents/automation/README.md +0 -38
- package/.proagents/automation/ai-behavior-rules.md +0 -339
- package/.proagents/automation/ai-prompt-injection.md +0 -331
- package/.proagents/automation/auto-decisions.md +0 -535
- package/.proagents/automation/decision-defaults.yaml +0 -317
- package/.proagents/cache/README.md +0 -110
- package/.proagents/cache/analysis-metadata.json +0 -76
- package/.proagents/cache/conventions.json +0 -125
- package/.proagents/cache/dependencies.json +0 -85
- package/.proagents/cache/features.json +0 -115
- package/.proagents/cache/patterns.json +0 -105
- package/.proagents/cache/schemas/conventions-schema.json +0 -138
- package/.proagents/cache/schemas/dependencies-schema.json +0 -95
- package/.proagents/cache/schemas/features-schema.json +0 -104
- package/.proagents/cache/schemas/metadata-schema.json +0 -83
- package/.proagents/cache/schemas/patterns-schema.json +0 -136
- package/.proagents/cache/schemas/structure-schema.json +0 -72
- package/.proagents/cache/structure.json +0 -109
- package/.proagents/checklists/README.md +0 -261
- package/.proagents/checklists/code-quality.md +0 -137
- package/.proagents/checklists/code-review.md +0 -148
- package/.proagents/checklists/pr-checklist.md +0 -78
- package/.proagents/checklists/pre-deployment.md +0 -132
- package/.proagents/checklists/pre-implementation.md +0 -80
- package/.proagents/checklists/testing.md +0 -120
- package/.proagents/checkpoints.json +0 -13
- package/.proagents/cicd/README.md +0 -338
- package/.proagents/cicd/azure-devops.md +0 -267
- package/.proagents/cicd/github-actions.md +0 -375
- package/.proagents/cicd/gitlab-ci.md +0 -278
- package/.proagents/cicd/jenkins.md +0 -317
- package/.proagents/collaboration/README.md +0 -143
- package/.proagents/collaboration/roles.md +0 -248
- package/.proagents/collaboration/sessions.md +0 -390
- package/.proagents/collaboration/sync.md +0 -358
- package/.proagents/cost/README.md +0 -48
- package/.proagents/cost/cost-template.md +0 -283
- package/.proagents/cost/estimation-framework.md +0 -287
- package/.proagents/database/README.md +0 -72
- package/.proagents/database/examples/001-create-users.sql +0 -129
- package/.proagents/database/examples/002-add-preferences.sql +0 -94
- package/.proagents/database/examples/003-add-index.sql +0 -105
- package/.proagents/database/examples/004-rename-column.sql +0 -122
- package/.proagents/database/examples/005-add-foreign-key.sql +0 -142
- package/.proagents/database/examples/006-data-migration.sql +0 -196
- package/.proagents/database/examples/007-drop-column.sql +0 -163
- package/.proagents/database/examples/README.md +0 -89
- package/.proagents/database/migration-workflow.md +0 -478
- package/.proagents/database/rollback-scripts.md +0 -487
- package/.proagents/database/safety-checks.md +0 -447
- package/.proagents/git/README.md +0 -68
- package/.proagents/git/branch-strategy.md +0 -164
- package/.proagents/git/commit-conventions.md +0 -241
- package/.proagents/git/pr-workflow.md +0 -286
- package/.proagents/git/rollback-procedures.md +0 -416
- package/.proagents/ide-integration/README.md +0 -124
- package/.proagents/ide-integration/cline-config.md +0 -429
- package/.proagents/ide-integration/continue-config.md +0 -380
- package/.proagents/ide-integration/cursor-rules.md +0 -280
- package/.proagents/ide-integration/github-copilot.md +0 -384
- package/.proagents/ide-integration/windsurf-rules.md +0 -314
- package/.proagents/integrations/README.md +0 -97
- package/.proagents/integrations/pm/README.md +0 -344
- package/.proagents/learning/README.md +0 -136
- package/.proagents/learning/adaptation.md +0 -305
- package/.proagents/learning/data-collection.md +0 -283
- package/.proagents/learning/implementation-guide.md +0 -865
- package/.proagents/learning/reports.md +0 -306
- package/.proagents/mcp/README.md +0 -133
- package/.proagents/mcp/context-providers.md +0 -442
- package/.proagents/mcp/server-config.md +0 -306
- package/.proagents/mcp/tools-definition.md +0 -513
- package/.proagents/pm-integration/README.md +0 -151
- package/.proagents/pm-integration/asana.md +0 -346
- package/.proagents/pm-integration/github-issues.md +0 -308
- package/.proagents/pm-integration/gitlab-issues.md +0 -482
- package/.proagents/pm-integration/jira.md +0 -364
- package/.proagents/pm-integration/linear.md +0 -409
- package/.proagents/pm-integration/notion.md +0 -275
- package/.proagents/pm-integration/sync-config.md +0 -533
- package/.proagents/pm-integration/trello.md +0 -159
- package/.proagents/rules/README.md +0 -179
- package/.proagents/rules/custom-rules-template.yaml +0 -286
- package/.proagents/rules/custom-rules.md +0 -754
- package/.proagents/rules/validation-rules-template.yaml +0 -517
- package/.proagents/runbooks/README.md +0 -219
- package/.proagents/runbooks/dependency-vulnerability.md +0 -505
- package/.proagents/runbooks/incident-response.md +0 -451
- package/.proagents/runbooks/performance-degradation.md +0 -584
- package/.proagents/runbooks/production-debugging.md +0 -489
- package/.proagents/sprints/README.md +0 -58
- package/.proagents/team/README.md +0 -256
- package/.proagents/team/code-ownership.md +0 -306
- package/.proagents/team/communication-templates.md +0 -441
- package/.proagents/team/handoff-protocol.md +0 -380
- package/.proagents/team/ide-setup/README.md +0 -103
- package/.proagents/team/ide-setup/cursor.md +0 -276
- package/.proagents/team/ide-setup/jetbrains.md +0 -330
- package/.proagents/team/ide-setup/neovim.md +0 -640
- package/.proagents/team/ide-setup/vscode.md +0 -348
- package/.proagents/team/onboarding.md +0 -278
- package/.proagents/time-tracking.json +0 -19
- package/.proagents/troubleshooting/README.md +0 -730
- package/.proagents/troubleshooting/ai-issues.md +0 -601
- package/.proagents/troubleshooting/workflow-issues.md +0 -571
|
@@ -1,517 +0,0 @@
|
|
|
1
|
-
# Validation Rules Template
|
|
2
|
-
# Copy this file to your project and customize the rules
|
|
3
|
-
|
|
4
|
-
# Schema version for compatibility checking
|
|
5
|
-
schema_version: "1.0"
|
|
6
|
-
|
|
7
|
-
# Rule enforcement levels
|
|
8
|
-
enforcement:
|
|
9
|
-
error: true # Block progress, must fix
|
|
10
|
-
warning: true # Show alert, can proceed
|
|
11
|
-
info: true # Informational only
|
|
12
|
-
|
|
13
|
-
# =============================================================================
|
|
14
|
-
# Code Quality Rules
|
|
15
|
-
# =============================================================================
|
|
16
|
-
|
|
17
|
-
code_quality:
|
|
18
|
-
# Complexity limits
|
|
19
|
-
- id: max-cyclomatic-complexity
|
|
20
|
-
type: complexity
|
|
21
|
-
description: "Maximum cyclomatic complexity per function"
|
|
22
|
-
threshold: 15
|
|
23
|
-
severity: warning
|
|
24
|
-
auto_fix: false
|
|
25
|
-
message: "Function complexity ({value}) exceeds limit ({threshold})"
|
|
26
|
-
|
|
27
|
-
- id: max-cognitive-complexity
|
|
28
|
-
type: complexity
|
|
29
|
-
description: "Maximum cognitive complexity per function"
|
|
30
|
-
threshold: 20
|
|
31
|
-
severity: warning
|
|
32
|
-
auto_fix: false
|
|
33
|
-
message: "Cognitive complexity ({value}) exceeds limit ({threshold})"
|
|
34
|
-
|
|
35
|
-
- id: max-function-length
|
|
36
|
-
type: length
|
|
37
|
-
description: "Maximum lines per function"
|
|
38
|
-
threshold: 50
|
|
39
|
-
severity: warning
|
|
40
|
-
auto_fix: false
|
|
41
|
-
message: "Function length ({value} lines) exceeds limit ({threshold})"
|
|
42
|
-
|
|
43
|
-
- id: max-file-length
|
|
44
|
-
type: length
|
|
45
|
-
description: "Maximum lines per file"
|
|
46
|
-
threshold: 500
|
|
47
|
-
severity: info
|
|
48
|
-
auto_fix: false
|
|
49
|
-
message: "File length ({value} lines) exceeds recommended limit ({threshold})"
|
|
50
|
-
|
|
51
|
-
- id: max-parameters
|
|
52
|
-
type: count
|
|
53
|
-
description: "Maximum parameters per function"
|
|
54
|
-
threshold: 5
|
|
55
|
-
severity: warning
|
|
56
|
-
auto_fix: false
|
|
57
|
-
message: "Too many parameters ({value}), consider using an options object"
|
|
58
|
-
|
|
59
|
-
# =============================================================================
|
|
60
|
-
# Naming Convention Rules
|
|
61
|
-
# =============================================================================
|
|
62
|
-
|
|
63
|
-
naming_conventions:
|
|
64
|
-
# File naming
|
|
65
|
-
- id: component-file-naming
|
|
66
|
-
type: naming
|
|
67
|
-
description: "React component files must be PascalCase"
|
|
68
|
-
pattern: "^[A-Z][a-zA-Z0-9]*\\.(tsx|jsx)$"
|
|
69
|
-
applies_to:
|
|
70
|
-
- "src/components/**/*"
|
|
71
|
-
- "src/app/**/*"
|
|
72
|
-
severity: error
|
|
73
|
-
message: "Component file '{file}' must use PascalCase naming"
|
|
74
|
-
|
|
75
|
-
- id: hook-file-naming
|
|
76
|
-
type: naming
|
|
77
|
-
description: "Hook files must start with 'use' and be camelCase"
|
|
78
|
-
pattern: "^use[A-Z][a-zA-Z0-9]*\\.ts$"
|
|
79
|
-
applies_to:
|
|
80
|
-
- "src/hooks/**/*"
|
|
81
|
-
severity: error
|
|
82
|
-
message: "Hook file '{file}' must start with 'use' prefix"
|
|
83
|
-
|
|
84
|
-
- id: util-file-naming
|
|
85
|
-
type: naming
|
|
86
|
-
description: "Utility files must be kebab-case"
|
|
87
|
-
pattern: "^[a-z][a-z0-9-]*\\.ts$"
|
|
88
|
-
applies_to:
|
|
89
|
-
- "src/utils/**/*"
|
|
90
|
-
- "src/lib/**/*"
|
|
91
|
-
severity: warning
|
|
92
|
-
message: "Utility file '{file}' should use kebab-case naming"
|
|
93
|
-
|
|
94
|
-
- id: test-file-naming
|
|
95
|
-
type: naming
|
|
96
|
-
description: "Test files must end with .test or .spec"
|
|
97
|
-
pattern: ".*\\.(test|spec)\\.(ts|tsx|js|jsx)$"
|
|
98
|
-
applies_to:
|
|
99
|
-
- "**/*.test.*"
|
|
100
|
-
- "**/*.spec.*"
|
|
101
|
-
- "__tests__/**/*"
|
|
102
|
-
severity: error
|
|
103
|
-
message: "Test file '{file}' must end with .test or .spec"
|
|
104
|
-
|
|
105
|
-
# Variable naming
|
|
106
|
-
- id: constant-naming
|
|
107
|
-
type: naming
|
|
108
|
-
description: "Constants must be UPPER_SNAKE_CASE"
|
|
109
|
-
pattern: "^[A-Z][A-Z0-9_]*$"
|
|
110
|
-
applies_to_code:
|
|
111
|
-
- "const declarations at module level"
|
|
112
|
-
severity: warning
|
|
113
|
-
message: "Constant '{name}' should use UPPER_SNAKE_CASE"
|
|
114
|
-
|
|
115
|
-
- id: interface-naming
|
|
116
|
-
type: naming
|
|
117
|
-
description: "Interfaces must be PascalCase (no I prefix)"
|
|
118
|
-
pattern: "^[A-Z][a-zA-Z0-9]*$"
|
|
119
|
-
applies_to_code:
|
|
120
|
-
- "interface declarations"
|
|
121
|
-
severity: warning
|
|
122
|
-
message: "Interface '{name}' should use PascalCase without 'I' prefix"
|
|
123
|
-
|
|
124
|
-
- id: type-naming
|
|
125
|
-
type: naming
|
|
126
|
-
description: "Type aliases must be PascalCase"
|
|
127
|
-
pattern: "^[A-Z][a-zA-Z0-9]*$"
|
|
128
|
-
applies_to_code:
|
|
129
|
-
- "type declarations"
|
|
130
|
-
severity: warning
|
|
131
|
-
message: "Type '{name}' should use PascalCase"
|
|
132
|
-
|
|
133
|
-
# =============================================================================
|
|
134
|
-
# Architecture Rules
|
|
135
|
-
# =============================================================================
|
|
136
|
-
|
|
137
|
-
architecture:
|
|
138
|
-
# Import restrictions
|
|
139
|
-
- id: no-circular-imports
|
|
140
|
-
type: import
|
|
141
|
-
description: "No circular dependencies between modules"
|
|
142
|
-
check: "circular_dependency"
|
|
143
|
-
severity: error
|
|
144
|
-
message: "Circular dependency detected: {cycle}"
|
|
145
|
-
|
|
146
|
-
- id: layer-boundaries
|
|
147
|
-
type: import
|
|
148
|
-
description: "Enforce layer boundaries"
|
|
149
|
-
rules:
|
|
150
|
-
- from: "src/components/**"
|
|
151
|
-
disallow:
|
|
152
|
-
- "src/services/**"
|
|
153
|
-
- "src/repositories/**"
|
|
154
|
-
message: "Components should not import directly from services or repositories"
|
|
155
|
-
- from: "src/hooks/**"
|
|
156
|
-
allow:
|
|
157
|
-
- "src/services/**"
|
|
158
|
-
- "src/types/**"
|
|
159
|
-
- "src/utils/**"
|
|
160
|
-
message: "Hooks can import from services, types, and utils"
|
|
161
|
-
- from: "src/services/**"
|
|
162
|
-
disallow:
|
|
163
|
-
- "src/components/**"
|
|
164
|
-
- "src/hooks/**"
|
|
165
|
-
message: "Services should not depend on UI layer"
|
|
166
|
-
severity: error
|
|
167
|
-
|
|
168
|
-
- id: index-exports
|
|
169
|
-
type: structure
|
|
170
|
-
description: "Modules should use index files for exports"
|
|
171
|
-
check: "has_index_file"
|
|
172
|
-
applies_to:
|
|
173
|
-
- "src/components/*"
|
|
174
|
-
- "src/hooks"
|
|
175
|
-
- "src/services"
|
|
176
|
-
severity: info
|
|
177
|
-
message: "Module '{module}' should have an index.ts for exports"
|
|
178
|
-
|
|
179
|
-
# File organization
|
|
180
|
-
- id: colocation
|
|
181
|
-
type: structure
|
|
182
|
-
description: "Related files should be colocated"
|
|
183
|
-
rules:
|
|
184
|
-
- components:
|
|
185
|
-
required:
|
|
186
|
-
- "*.tsx"
|
|
187
|
-
optional:
|
|
188
|
-
- "*.test.tsx"
|
|
189
|
-
- "*.module.css"
|
|
190
|
-
- "*.types.ts"
|
|
191
|
-
message: "Component should have related files colocated"
|
|
192
|
-
severity: info
|
|
193
|
-
|
|
194
|
-
# =============================================================================
|
|
195
|
-
# Security Rules
|
|
196
|
-
# =============================================================================
|
|
197
|
-
|
|
198
|
-
security:
|
|
199
|
-
- id: no-hardcoded-secrets
|
|
200
|
-
type: pattern
|
|
201
|
-
description: "No hardcoded secrets or credentials"
|
|
202
|
-
patterns:
|
|
203
|
-
- "password\\s*=\\s*['\"][^'\"]+['\"]"
|
|
204
|
-
- "api_key\\s*=\\s*['\"][^'\"]+['\"]"
|
|
205
|
-
- "secret\\s*=\\s*['\"][^'\"]+['\"]"
|
|
206
|
-
- "token\\s*=\\s*['\"][^'\"]+['\"]"
|
|
207
|
-
- "(?i)bearer\\s+[a-zA-Z0-9_-]{20,}"
|
|
208
|
-
exclude_patterns:
|
|
209
|
-
- "*.test.ts"
|
|
210
|
-
- "*.spec.ts"
|
|
211
|
-
- "*.example.*"
|
|
212
|
-
severity: error
|
|
213
|
-
message: "Possible hardcoded secret detected at {location}"
|
|
214
|
-
|
|
215
|
-
- id: no-unsafe-innerHTML
|
|
216
|
-
type: pattern
|
|
217
|
-
description: "Avoid dangerouslySetInnerHTML without sanitization"
|
|
218
|
-
patterns:
|
|
219
|
-
- "dangerouslySetInnerHTML"
|
|
220
|
-
severity: warning
|
|
221
|
-
message: "Use of dangerouslySetInnerHTML detected. Ensure content is sanitized."
|
|
222
|
-
|
|
223
|
-
- id: no-eval
|
|
224
|
-
type: pattern
|
|
225
|
-
description: "No use of eval or similar"
|
|
226
|
-
patterns:
|
|
227
|
-
- "\\beval\\s*\\("
|
|
228
|
-
- "new\\s+Function\\s*\\("
|
|
229
|
-
severity: error
|
|
230
|
-
message: "Use of eval() or Function() constructor is not allowed"
|
|
231
|
-
|
|
232
|
-
- id: sql-injection-prevention
|
|
233
|
-
type: pattern
|
|
234
|
-
description: "Prevent SQL injection via string concatenation"
|
|
235
|
-
patterns:
|
|
236
|
-
- "query\\s*\\(\\s*[`'\"].*\\$\\{"
|
|
237
|
-
- "\\.raw\\s*\\(\\s*[`'\"].*\\$\\{"
|
|
238
|
-
severity: error
|
|
239
|
-
message: "Potential SQL injection vulnerability. Use parameterized queries."
|
|
240
|
-
|
|
241
|
-
- id: validate-user-input
|
|
242
|
-
type: custom
|
|
243
|
-
description: "User input should be validated"
|
|
244
|
-
check: "input_validation"
|
|
245
|
-
applies_to:
|
|
246
|
-
- "src/api/**"
|
|
247
|
-
- "src/pages/api/**"
|
|
248
|
-
- "src/app/api/**"
|
|
249
|
-
severity: warning
|
|
250
|
-
message: "API endpoint should validate user input with schema validation"
|
|
251
|
-
|
|
252
|
-
# =============================================================================
|
|
253
|
-
# Testing Rules
|
|
254
|
-
# =============================================================================
|
|
255
|
-
|
|
256
|
-
testing:
|
|
257
|
-
- id: minimum-test-coverage
|
|
258
|
-
type: coverage
|
|
259
|
-
description: "Minimum test coverage requirements"
|
|
260
|
-
thresholds:
|
|
261
|
-
lines: 80
|
|
262
|
-
branches: 70
|
|
263
|
-
functions: 80
|
|
264
|
-
statements: 80
|
|
265
|
-
applies_to:
|
|
266
|
-
- "src/**/*.ts"
|
|
267
|
-
- "src/**/*.tsx"
|
|
268
|
-
exclude:
|
|
269
|
-
- "src/**/*.d.ts"
|
|
270
|
-
- "src/**/*.test.*"
|
|
271
|
-
- "src/**/*.spec.*"
|
|
272
|
-
severity: warning
|
|
273
|
-
message: "Test coverage ({value}%) is below minimum ({threshold}%)"
|
|
274
|
-
|
|
275
|
-
- id: critical-path-coverage
|
|
276
|
-
type: coverage
|
|
277
|
-
description: "Critical paths require higher coverage"
|
|
278
|
-
thresholds:
|
|
279
|
-
lines: 95
|
|
280
|
-
branches: 90
|
|
281
|
-
applies_to:
|
|
282
|
-
- "src/services/auth/**"
|
|
283
|
-
- "src/services/payment/**"
|
|
284
|
-
- "src/api/auth/**"
|
|
285
|
-
severity: error
|
|
286
|
-
message: "Critical path coverage ({value}%) must be at least {threshold}%"
|
|
287
|
-
|
|
288
|
-
- id: test-file-required
|
|
289
|
-
type: structure
|
|
290
|
-
description: "Source files should have corresponding test files"
|
|
291
|
-
check: "has_test_file"
|
|
292
|
-
applies_to:
|
|
293
|
-
- "src/components/**/*.tsx"
|
|
294
|
-
- "src/hooks/**/*.ts"
|
|
295
|
-
- "src/services/**/*.ts"
|
|
296
|
-
exclude:
|
|
297
|
-
- "**/*.d.ts"
|
|
298
|
-
- "**/index.ts"
|
|
299
|
-
- "**/types.ts"
|
|
300
|
-
severity: info
|
|
301
|
-
message: "File '{file}' should have a corresponding test file"
|
|
302
|
-
|
|
303
|
-
- id: no-skipped-tests
|
|
304
|
-
type: pattern
|
|
305
|
-
description: "No skipped tests in main branch"
|
|
306
|
-
patterns:
|
|
307
|
-
- "\\bit\\.skip\\s*\\("
|
|
308
|
-
- "\\bdescribe\\.skip\\s*\\("
|
|
309
|
-
- "\\btest\\.skip\\s*\\("
|
|
310
|
-
- "\\bxit\\s*\\("
|
|
311
|
-
- "\\bxdescribe\\s*\\("
|
|
312
|
-
severity: warning
|
|
313
|
-
on_branch:
|
|
314
|
-
- "main"
|
|
315
|
-
- "master"
|
|
316
|
-
message: "Skipped tests found. Remove .skip before merging."
|
|
317
|
-
|
|
318
|
-
# =============================================================================
|
|
319
|
-
# Performance Rules
|
|
320
|
-
# =============================================================================
|
|
321
|
-
|
|
322
|
-
performance:
|
|
323
|
-
- id: no-sync-operations
|
|
324
|
-
type: pattern
|
|
325
|
-
description: "Avoid synchronous file operations"
|
|
326
|
-
patterns:
|
|
327
|
-
- "readFileSync"
|
|
328
|
-
- "writeFileSync"
|
|
329
|
-
- "existsSync"
|
|
330
|
-
- "mkdirSync"
|
|
331
|
-
exclude:
|
|
332
|
-
- "scripts/**"
|
|
333
|
-
- "*.config.*"
|
|
334
|
-
severity: warning
|
|
335
|
-
message: "Use async file operations instead of sync methods"
|
|
336
|
-
|
|
337
|
-
- id: bundle-size-limit
|
|
338
|
-
type: bundle
|
|
339
|
-
description: "Maximum bundle size limits"
|
|
340
|
-
limits:
|
|
341
|
-
main: "250kb"
|
|
342
|
-
chunk: "100kb"
|
|
343
|
-
total: "1mb"
|
|
344
|
-
severity: warning
|
|
345
|
-
message: "Bundle size ({size}) exceeds limit ({limit})"
|
|
346
|
-
|
|
347
|
-
- id: no-large-dependencies
|
|
348
|
-
type: dependency
|
|
349
|
-
description: "Avoid large dependencies when lighter alternatives exist"
|
|
350
|
-
check:
|
|
351
|
-
- package: "moment"
|
|
352
|
-
alternative: "date-fns or dayjs"
|
|
353
|
-
max_size: "50kb"
|
|
354
|
-
- package: "lodash"
|
|
355
|
-
alternative: "lodash-es or native methods"
|
|
356
|
-
max_size: "25kb"
|
|
357
|
-
severity: info
|
|
358
|
-
message: "Consider using {alternative} instead of {package}"
|
|
359
|
-
|
|
360
|
-
- id: image-optimization
|
|
361
|
-
type: assets
|
|
362
|
-
description: "Images should be optimized"
|
|
363
|
-
rules:
|
|
364
|
-
max_size: "500kb"
|
|
365
|
-
formats:
|
|
366
|
-
- "webp"
|
|
367
|
-
- "avif"
|
|
368
|
-
- "svg"
|
|
369
|
-
exclude:
|
|
370
|
-
- "png"
|
|
371
|
-
- "jpg"
|
|
372
|
-
applies_to:
|
|
373
|
-
- "public/images/**"
|
|
374
|
-
- "src/assets/**"
|
|
375
|
-
severity: info
|
|
376
|
-
message: "Image '{file}' should be optimized (current: {size})"
|
|
377
|
-
|
|
378
|
-
# =============================================================================
|
|
379
|
-
# Accessibility Rules
|
|
380
|
-
# =============================================================================
|
|
381
|
-
|
|
382
|
-
accessibility:
|
|
383
|
-
- id: require-alt-text
|
|
384
|
-
type: pattern
|
|
385
|
-
description: "Images must have alt text"
|
|
386
|
-
check: "img_alt_attribute"
|
|
387
|
-
applies_to:
|
|
388
|
-
- "**/*.tsx"
|
|
389
|
-
- "**/*.jsx"
|
|
390
|
-
severity: error
|
|
391
|
-
message: "Image element must have alt attribute"
|
|
392
|
-
|
|
393
|
-
- id: require-button-type
|
|
394
|
-
type: pattern
|
|
395
|
-
description: "Buttons should have explicit type"
|
|
396
|
-
check: "button_type_attribute"
|
|
397
|
-
applies_to:
|
|
398
|
-
- "**/*.tsx"
|
|
399
|
-
- "**/*.jsx"
|
|
400
|
-
severity: warning
|
|
401
|
-
message: "Button element should have explicit type attribute"
|
|
402
|
-
|
|
403
|
-
- id: require-label-for-input
|
|
404
|
-
type: pattern
|
|
405
|
-
description: "Form inputs must have associated labels"
|
|
406
|
-
check: "input_label_association"
|
|
407
|
-
applies_to:
|
|
408
|
-
- "**/*.tsx"
|
|
409
|
-
- "**/*.jsx"
|
|
410
|
-
severity: error
|
|
411
|
-
message: "Input element must have an associated label"
|
|
412
|
-
|
|
413
|
-
- id: color-contrast
|
|
414
|
-
type: custom
|
|
415
|
-
description: "Ensure sufficient color contrast"
|
|
416
|
-
check: "wcag_color_contrast"
|
|
417
|
-
level: "AA"
|
|
418
|
-
severity: warning
|
|
419
|
-
message: "Color contrast ratio ({ratio}) does not meet WCAG {level} requirements"
|
|
420
|
-
|
|
421
|
-
# =============================================================================
|
|
422
|
-
# Documentation Rules
|
|
423
|
-
# =============================================================================
|
|
424
|
-
|
|
425
|
-
documentation:
|
|
426
|
-
- id: require-jsdoc-public
|
|
427
|
-
type: documentation
|
|
428
|
-
description: "Public functions must have JSDoc comments"
|
|
429
|
-
check: "has_jsdoc"
|
|
430
|
-
applies_to:
|
|
431
|
-
- "exported functions"
|
|
432
|
-
- "exported classes"
|
|
433
|
-
exclude:
|
|
434
|
-
- "**/*.test.*"
|
|
435
|
-
- "**/*.spec.*"
|
|
436
|
-
severity: info
|
|
437
|
-
message: "Public function '{name}' should have JSDoc documentation"
|
|
438
|
-
|
|
439
|
-
- id: require-readme
|
|
440
|
-
type: structure
|
|
441
|
-
description: "Modules should have README files"
|
|
442
|
-
check: "has_readme"
|
|
443
|
-
applies_to:
|
|
444
|
-
- "src/components/*"
|
|
445
|
-
- "src/services/*"
|
|
446
|
-
- "packages/*"
|
|
447
|
-
severity: info
|
|
448
|
-
message: "Module '{module}' should have a README.md"
|
|
449
|
-
|
|
450
|
-
# =============================================================================
|
|
451
|
-
# Custom Project Rules
|
|
452
|
-
# =============================================================================
|
|
453
|
-
|
|
454
|
-
custom:
|
|
455
|
-
# Add your project-specific rules here
|
|
456
|
-
# Example:
|
|
457
|
-
# - id: require-analytics-tracking
|
|
458
|
-
# type: custom
|
|
459
|
-
# description: "User actions should include analytics tracking"
|
|
460
|
-
# check: "analytics_tracking"
|
|
461
|
-
# applies_to:
|
|
462
|
-
# - "src/components/Button/**"
|
|
463
|
-
# - "src/components/Form/**"
|
|
464
|
-
# severity: info
|
|
465
|
-
# message: "Component should include analytics tracking for user actions"
|
|
466
|
-
|
|
467
|
-
# =============================================================================
|
|
468
|
-
# Rule Overrides
|
|
469
|
-
# =============================================================================
|
|
470
|
-
|
|
471
|
-
overrides:
|
|
472
|
-
# Override rules for specific paths
|
|
473
|
-
- path: "src/legacy/**"
|
|
474
|
-
rules:
|
|
475
|
-
max-cyclomatic-complexity:
|
|
476
|
-
threshold: 25
|
|
477
|
-
severity: info
|
|
478
|
-
max-function-length:
|
|
479
|
-
enabled: false
|
|
480
|
-
|
|
481
|
-
- path: "scripts/**"
|
|
482
|
-
rules:
|
|
483
|
-
no-sync-operations:
|
|
484
|
-
enabled: false
|
|
485
|
-
|
|
486
|
-
- path: "**/*.test.*"
|
|
487
|
-
rules:
|
|
488
|
-
max-function-length:
|
|
489
|
-
threshold: 100
|
|
490
|
-
|
|
491
|
-
# =============================================================================
|
|
492
|
-
# Global Settings
|
|
493
|
-
# =============================================================================
|
|
494
|
-
|
|
495
|
-
settings:
|
|
496
|
-
# Files/patterns to always ignore
|
|
497
|
-
ignore:
|
|
498
|
-
- "node_modules/**"
|
|
499
|
-
- "dist/**"
|
|
500
|
-
- "build/**"
|
|
501
|
-
- ".next/**"
|
|
502
|
-
- "coverage/**"
|
|
503
|
-
- "*.min.js"
|
|
504
|
-
- "*.bundle.js"
|
|
505
|
-
- "*.generated.*"
|
|
506
|
-
|
|
507
|
-
# Run rules in parallel for better performance
|
|
508
|
-
parallel: true
|
|
509
|
-
|
|
510
|
-
# Cache validation results
|
|
511
|
-
cache: true
|
|
512
|
-
cache_location: ".proagents/validation-cache"
|
|
513
|
-
|
|
514
|
-
# Report format
|
|
515
|
-
report:
|
|
516
|
-
format: "stylish" # stylish, json, html
|
|
517
|
-
output: ".proagents/validation-report"
|