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,179 +0,0 @@
|
|
|
1
|
-
# Custom Rules System
|
|
2
|
-
|
|
3
|
-
Define and enforce project-specific rules.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Overview
|
|
8
|
-
|
|
9
|
-
The rules system allows you to define custom validation rules that are enforced during development. Rules can check:
|
|
10
|
-
|
|
11
|
-
- Naming conventions
|
|
12
|
-
- File structure
|
|
13
|
-
- Code patterns
|
|
14
|
-
- Security practices
|
|
15
|
-
- Testing requirements
|
|
16
|
-
- Performance best practices
|
|
17
|
-
- Accessibility standards
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## Quick Start
|
|
22
|
-
|
|
23
|
-
### 1. Create Rules File
|
|
24
|
-
|
|
25
|
-
Create `proagents/rules/custom-rules.yaml`:
|
|
26
|
-
|
|
27
|
-
```yaml
|
|
28
|
-
naming_rules:
|
|
29
|
-
- id: "component-naming"
|
|
30
|
-
pattern: "^[A-Z][a-zA-Z]*$"
|
|
31
|
-
applies_to: "**/*.tsx"
|
|
32
|
-
message: "Components must be PascalCase"
|
|
33
|
-
severity: "error"
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
### 2. Enable Rules
|
|
37
|
-
|
|
38
|
-
In `proagents.config.yaml`:
|
|
39
|
-
|
|
40
|
-
```yaml
|
|
41
|
-
rules:
|
|
42
|
-
enabled: true
|
|
43
|
-
config_file: ".proagents/rules/custom-rules.yaml"
|
|
44
|
-
fail_on_error: true
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
### 3. Run Validation
|
|
48
|
-
|
|
49
|
-
```bash
|
|
50
|
-
pa:rules-check # Check all rules
|
|
51
|
-
pa:rules-check --fix # Auto-fix where possible
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
---
|
|
55
|
-
|
|
56
|
-
## Rule Types
|
|
57
|
-
|
|
58
|
-
### Naming Rules
|
|
59
|
-
Enforce naming conventions for files, variables, and functions.
|
|
60
|
-
|
|
61
|
-
```yaml
|
|
62
|
-
naming_rules:
|
|
63
|
-
- id: "hook-prefix"
|
|
64
|
-
type: "naming"
|
|
65
|
-
pattern: "^use[A-Z]"
|
|
66
|
-
applies_to: "**/hooks/**/*.ts"
|
|
67
|
-
message: "Hooks must start with 'use'"
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
### Structure Rules
|
|
71
|
-
Enforce file organization and imports.
|
|
72
|
-
|
|
73
|
-
```yaml
|
|
74
|
-
structure_rules:
|
|
75
|
-
- id: "no-deep-imports"
|
|
76
|
-
type: "structure"
|
|
77
|
-
rule: "No imports from more than 2 levels deep"
|
|
78
|
-
pattern: "from ['\"]\\.\\..*\\.\\."
|
|
79
|
-
message: "Use path aliases for deep imports"
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
### Pattern Rules
|
|
83
|
-
Detect or require specific code patterns.
|
|
84
|
-
|
|
85
|
-
```yaml
|
|
86
|
-
pattern_rules:
|
|
87
|
-
- id: "no-console"
|
|
88
|
-
type: "pattern"
|
|
89
|
-
pattern: "console\\.log"
|
|
90
|
-
applies_to: "src/**/*.ts"
|
|
91
|
-
exclude: ["**/*.test.ts"]
|
|
92
|
-
message: "Remove console.log statements"
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
### Security Rules
|
|
96
|
-
Enforce security best practices.
|
|
97
|
-
|
|
98
|
-
```yaml
|
|
99
|
-
security_rules:
|
|
100
|
-
- id: "no-eval"
|
|
101
|
-
type: "security"
|
|
102
|
-
pattern: "\\beval\\("
|
|
103
|
-
message: "eval() is a security risk"
|
|
104
|
-
severity: "error"
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
### Testing Rules
|
|
108
|
-
Ensure adequate test coverage.
|
|
109
|
-
|
|
110
|
-
```yaml
|
|
111
|
-
testing_rules:
|
|
112
|
-
- id: "test-coverage"
|
|
113
|
-
type: "coverage"
|
|
114
|
-
minimum: 80
|
|
115
|
-
applies_to: "src/**/*.ts"
|
|
116
|
-
message: "Coverage must be at least 80%"
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
---
|
|
120
|
-
|
|
121
|
-
## Severity Levels
|
|
122
|
-
|
|
123
|
-
| Level | Behavior |
|
|
124
|
-
|-------|----------|
|
|
125
|
-
| `error` | Blocks commits/builds |
|
|
126
|
-
| `warning` | Shows warning, allows proceed |
|
|
127
|
-
| `info` | Informational only |
|
|
128
|
-
| `off` | Rule disabled |
|
|
129
|
-
|
|
130
|
-
---
|
|
131
|
-
|
|
132
|
-
## Configuration Options
|
|
133
|
-
|
|
134
|
-
```yaml
|
|
135
|
-
configuration:
|
|
136
|
-
global:
|
|
137
|
-
fail_on_error: true
|
|
138
|
-
fail_on_warning: false
|
|
139
|
-
auto_fix_enabled: true
|
|
140
|
-
|
|
141
|
-
overrides:
|
|
142
|
-
- path: "src/legacy/**"
|
|
143
|
-
rules:
|
|
144
|
-
some-rule: "off"
|
|
145
|
-
|
|
146
|
-
ignore:
|
|
147
|
-
- "node_modules/**"
|
|
148
|
-
- "dist/**"
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
---
|
|
152
|
-
|
|
153
|
-
## Files
|
|
154
|
-
|
|
155
|
-
| File | Description |
|
|
156
|
-
|------|-------------|
|
|
157
|
-
| `README.md` | This file |
|
|
158
|
-
| `custom-rules.md` | Complete custom rules documentation |
|
|
159
|
-
| `custom-rules-template.yaml` | Full template with all rule types |
|
|
160
|
-
|
|
161
|
-
---
|
|
162
|
-
|
|
163
|
-
## Related Documentation
|
|
164
|
-
|
|
165
|
-
| File | Description |
|
|
166
|
-
|------|-------------|
|
|
167
|
-
| `../standards/override-system.md` | Override hierarchy and configuration |
|
|
168
|
-
| `../standards/architecture-patterns.md` | Architecture pattern definitions |
|
|
169
|
-
|
|
170
|
-
---
|
|
171
|
-
|
|
172
|
-
## Commands
|
|
173
|
-
|
|
174
|
-
| Command | Description |
|
|
175
|
-
|---------|-------------|
|
|
176
|
-
| `pa:rules-check` | Run rule validation |
|
|
177
|
-
| `pa:rules-list` | List all active rules |
|
|
178
|
-
| `pa:rules-add` | Add new rule |
|
|
179
|
-
| `pa:rules-disable [id]` | Disable a rule |
|
|
@@ -1,286 +0,0 @@
|
|
|
1
|
-
# Custom Rules Template
|
|
2
|
-
# Define project-specific rules for code validation and enforcement
|
|
3
|
-
|
|
4
|
-
# =============================================================================
|
|
5
|
-
# NAMING RULES
|
|
6
|
-
# =============================================================================
|
|
7
|
-
naming_rules:
|
|
8
|
-
# Component naming
|
|
9
|
-
- id: "component-naming"
|
|
10
|
-
type: "naming"
|
|
11
|
-
pattern: "^[A-Z][a-zA-Z]*$"
|
|
12
|
-
applies_to: "**/*.tsx"
|
|
13
|
-
exclude: ["**/*.test.tsx", "**/index.tsx"]
|
|
14
|
-
message: "Component names must be PascalCase"
|
|
15
|
-
severity: "error" # error | warning | info
|
|
16
|
-
|
|
17
|
-
# Hook naming
|
|
18
|
-
- id: "hook-naming"
|
|
19
|
-
type: "naming"
|
|
20
|
-
pattern: "^use[A-Z][a-zA-Z]*$"
|
|
21
|
-
applies_to: "**/hooks/**/*.ts"
|
|
22
|
-
message: "Hooks must start with 'use' prefix"
|
|
23
|
-
severity: "error"
|
|
24
|
-
|
|
25
|
-
# Service naming
|
|
26
|
-
- id: "service-naming"
|
|
27
|
-
type: "naming"
|
|
28
|
-
pattern: "^[a-z][a-zA-Z]*Service$"
|
|
29
|
-
applies_to: "**/services/**/*.ts"
|
|
30
|
-
message: "Services should end with 'Service' suffix"
|
|
31
|
-
severity: "warning"
|
|
32
|
-
|
|
33
|
-
# Constant naming
|
|
34
|
-
- id: "constant-naming"
|
|
35
|
-
type: "naming"
|
|
36
|
-
pattern: "^[A-Z][A-Z0-9_]*$"
|
|
37
|
-
applies_to: "**/constants/**/*.ts"
|
|
38
|
-
message: "Constants must be UPPER_SNAKE_CASE"
|
|
39
|
-
severity: "warning"
|
|
40
|
-
|
|
41
|
-
# =============================================================================
|
|
42
|
-
# FILE STRUCTURE RULES
|
|
43
|
-
# =============================================================================
|
|
44
|
-
structure_rules:
|
|
45
|
-
# Components must be in components folder
|
|
46
|
-
- id: "component-location"
|
|
47
|
-
type: "structure"
|
|
48
|
-
rule: "Components (*.tsx with JSX) must be in src/components/ or src/pages/"
|
|
49
|
-
applies_to: "**/*.tsx"
|
|
50
|
-
allowed_paths:
|
|
51
|
-
- "src/components/**"
|
|
52
|
-
- "src/pages/**"
|
|
53
|
-
- "src/features/**/components/**"
|
|
54
|
-
message: "React components should be in designated component directories"
|
|
55
|
-
severity: "warning"
|
|
56
|
-
|
|
57
|
-
# Services must be in services folder
|
|
58
|
-
- id: "service-location"
|
|
59
|
-
type: "structure"
|
|
60
|
-
rule: "Service files must be in src/services/"
|
|
61
|
-
applies_to: "**/*Service.ts"
|
|
62
|
-
allowed_paths:
|
|
63
|
-
- "src/services/**"
|
|
64
|
-
message: "Service files should be in src/services/"
|
|
65
|
-
severity: "warning"
|
|
66
|
-
|
|
67
|
-
# No business logic in components
|
|
68
|
-
- id: "no-logic-in-components"
|
|
69
|
-
type: "structure"
|
|
70
|
-
rule: "Components should not import directly from services"
|
|
71
|
-
pattern: "import.*from.*services"
|
|
72
|
-
applies_to: "src/components/**/*.tsx"
|
|
73
|
-
message: "Use hooks to access services, not direct imports"
|
|
74
|
-
severity: "warning"
|
|
75
|
-
suggestion: "Create a custom hook that wraps the service call"
|
|
76
|
-
|
|
77
|
-
# =============================================================================
|
|
78
|
-
# CODE PATTERN RULES
|
|
79
|
-
# =============================================================================
|
|
80
|
-
pattern_rules:
|
|
81
|
-
# Require error boundary for pages
|
|
82
|
-
- id: "page-error-boundary"
|
|
83
|
-
type: "pattern"
|
|
84
|
-
condition: "file in src/pages/**/*.tsx"
|
|
85
|
-
requires: "ErrorBoundary wrapper or error.tsx file"
|
|
86
|
-
message: "Page components should have error handling"
|
|
87
|
-
severity: "warning"
|
|
88
|
-
|
|
89
|
-
# No console.log in production code
|
|
90
|
-
- id: "no-console-log"
|
|
91
|
-
type: "pattern"
|
|
92
|
-
pattern: "console\\.(log|debug|info)"
|
|
93
|
-
applies_to: "src/**/*.{ts,tsx}"
|
|
94
|
-
exclude: ["**/*.test.ts", "**/*.test.tsx"]
|
|
95
|
-
message: "Remove console statements before committing"
|
|
96
|
-
severity: "warning"
|
|
97
|
-
auto_fix: false
|
|
98
|
-
|
|
99
|
-
# Require loading states
|
|
100
|
-
- id: "require-loading-state"
|
|
101
|
-
type: "pattern"
|
|
102
|
-
condition: "component uses useQuery or useMutation"
|
|
103
|
-
requires: "isLoading or isPending handling"
|
|
104
|
-
message: "Async operations should handle loading states"
|
|
105
|
-
severity: "warning"
|
|
106
|
-
|
|
107
|
-
# Require error handling for async
|
|
108
|
-
- id: "require-error-handling"
|
|
109
|
-
type: "pattern"
|
|
110
|
-
condition: "async function or Promise"
|
|
111
|
-
requires: "try-catch or .catch()"
|
|
112
|
-
message: "Async operations should have error handling"
|
|
113
|
-
severity: "warning"
|
|
114
|
-
|
|
115
|
-
# =============================================================================
|
|
116
|
-
# TESTING RULES
|
|
117
|
-
# =============================================================================
|
|
118
|
-
testing_rules:
|
|
119
|
-
# Components must have tests
|
|
120
|
-
- id: "component-test-required"
|
|
121
|
-
type: "testing"
|
|
122
|
-
rule: "Every component must have a corresponding test file"
|
|
123
|
-
applies_to: "src/components/**/*.tsx"
|
|
124
|
-
requires: "{filename}.test.tsx"
|
|
125
|
-
message: "Component is missing test file"
|
|
126
|
-
severity: "warning"
|
|
127
|
-
|
|
128
|
-
# Minimum test coverage
|
|
129
|
-
- id: "min-coverage"
|
|
130
|
-
type: "coverage"
|
|
131
|
-
minimum: 80
|
|
132
|
-
applies_to: "src/**/*.{ts,tsx}"
|
|
133
|
-
exclude: ["**/*.d.ts", "**/types/**"]
|
|
134
|
-
message: "Code coverage must be at least 80%"
|
|
135
|
-
severity: "error"
|
|
136
|
-
|
|
137
|
-
# Test naming convention
|
|
138
|
-
- id: "test-naming"
|
|
139
|
-
type: "testing"
|
|
140
|
-
rule: "Test descriptions should be descriptive"
|
|
141
|
-
pattern: "^(should|when|given|it)"
|
|
142
|
-
applies_to: "**/*.test.{ts,tsx}"
|
|
143
|
-
message: "Test descriptions should start with 'should', 'when', 'given', or 'it'"
|
|
144
|
-
severity: "info"
|
|
145
|
-
|
|
146
|
-
# =============================================================================
|
|
147
|
-
# SECURITY RULES
|
|
148
|
-
# =============================================================================
|
|
149
|
-
security_rules:
|
|
150
|
-
# No hardcoded secrets
|
|
151
|
-
- id: "no-hardcoded-secrets"
|
|
152
|
-
type: "security"
|
|
153
|
-
patterns:
|
|
154
|
-
- "api[_-]?key\\s*[:=]\\s*['\"][^'\"]+['\"]"
|
|
155
|
-
- "password\\s*[:=]\\s*['\"][^'\"]+['\"]"
|
|
156
|
-
- "secret\\s*[:=]\\s*['\"][^'\"]+['\"]"
|
|
157
|
-
- "token\\s*[:=]\\s*['\"][^'\"]+['\"]"
|
|
158
|
-
applies_to: "**/*.{ts,tsx,js,jsx}"
|
|
159
|
-
exclude: ["**/*.test.*", "**/*.example.*"]
|
|
160
|
-
message: "Potential hardcoded secret detected"
|
|
161
|
-
severity: "error"
|
|
162
|
-
|
|
163
|
-
# No innerHTML
|
|
164
|
-
- id: "no-innerhtml"
|
|
165
|
-
type: "security"
|
|
166
|
-
pattern: "innerHTML|dangerouslySetInnerHTML"
|
|
167
|
-
applies_to: "**/*.{tsx,jsx}"
|
|
168
|
-
message: "Avoid innerHTML to prevent XSS vulnerabilities"
|
|
169
|
-
severity: "warning"
|
|
170
|
-
suggestion: "Use safe alternatives or sanitize input with DOMPurify"
|
|
171
|
-
|
|
172
|
-
# Validate user input
|
|
173
|
-
- id: "validate-user-input"
|
|
174
|
-
type: "security"
|
|
175
|
-
condition: "handling user input (forms, URL params)"
|
|
176
|
-
requires: "input validation (zod, yup, or manual)"
|
|
177
|
-
message: "User input should be validated"
|
|
178
|
-
severity: "warning"
|
|
179
|
-
|
|
180
|
-
# =============================================================================
|
|
181
|
-
# PERFORMANCE RULES
|
|
182
|
-
# =============================================================================
|
|
183
|
-
performance_rules:
|
|
184
|
-
# No unnecessary re-renders
|
|
185
|
-
- id: "use-memo-for-expensive"
|
|
186
|
-
type: "performance"
|
|
187
|
-
condition: "expensive computation in render"
|
|
188
|
-
requires: "useMemo wrapper"
|
|
189
|
-
message: "Expensive computations should be memoized"
|
|
190
|
-
severity: "info"
|
|
191
|
-
|
|
192
|
-
# Lazy load routes
|
|
193
|
-
- id: "lazy-load-routes"
|
|
194
|
-
type: "performance"
|
|
195
|
-
condition: "route component import"
|
|
196
|
-
requires: "React.lazy() wrapper"
|
|
197
|
-
applies_to: "**/router/**/*.tsx"
|
|
198
|
-
message: "Route components should be lazy loaded"
|
|
199
|
-
severity: "info"
|
|
200
|
-
|
|
201
|
-
# Image optimization
|
|
202
|
-
- id: "optimized-images"
|
|
203
|
-
type: "performance"
|
|
204
|
-
condition: "using <img> tag"
|
|
205
|
-
requires: "next/image or optimized image component"
|
|
206
|
-
message: "Use optimized image components"
|
|
207
|
-
severity: "info"
|
|
208
|
-
|
|
209
|
-
# =============================================================================
|
|
210
|
-
# ACCESSIBILITY RULES
|
|
211
|
-
# =============================================================================
|
|
212
|
-
accessibility_rules:
|
|
213
|
-
# Images need alt text
|
|
214
|
-
- id: "img-alt-required"
|
|
215
|
-
type: "accessibility"
|
|
216
|
-
pattern: "<img(?![^>]*alt=)"
|
|
217
|
-
applies_to: "**/*.{tsx,jsx}"
|
|
218
|
-
message: "Images must have alt text"
|
|
219
|
-
severity: "warning"
|
|
220
|
-
|
|
221
|
-
# Buttons need accessible names
|
|
222
|
-
- id: "button-accessible-name"
|
|
223
|
-
type: "accessibility"
|
|
224
|
-
condition: "<button> or Button component"
|
|
225
|
-
requires: "text content or aria-label"
|
|
226
|
-
message: "Buttons must have accessible names"
|
|
227
|
-
severity: "warning"
|
|
228
|
-
|
|
229
|
-
# Form inputs need labels
|
|
230
|
-
- id: "input-label-required"
|
|
231
|
-
type: "accessibility"
|
|
232
|
-
condition: "<input> element"
|
|
233
|
-
requires: "associated <label> or aria-label"
|
|
234
|
-
message: "Form inputs must have labels"
|
|
235
|
-
severity: "warning"
|
|
236
|
-
|
|
237
|
-
# =============================================================================
|
|
238
|
-
# CUSTOM PROJECT RULES
|
|
239
|
-
# =============================================================================
|
|
240
|
-
custom_rules:
|
|
241
|
-
# Example: Require analytics on button clicks
|
|
242
|
-
- id: "analytics-on-buttons"
|
|
243
|
-
type: "custom"
|
|
244
|
-
condition: "Button component with onClick"
|
|
245
|
-
requires: "analytics.track() call"
|
|
246
|
-
message: "Button clicks should be tracked"
|
|
247
|
-
severity: "info"
|
|
248
|
-
enabled: false # Enable if using analytics
|
|
249
|
-
|
|
250
|
-
# Example: Require feature flags for new features
|
|
251
|
-
- id: "feature-flag-required"
|
|
252
|
-
type: "custom"
|
|
253
|
-
condition: "new feature component"
|
|
254
|
-
requires: "feature flag wrapper"
|
|
255
|
-
message: "New features should be behind feature flags"
|
|
256
|
-
severity: "info"
|
|
257
|
-
enabled: false # Enable if using feature flags
|
|
258
|
-
|
|
259
|
-
# =============================================================================
|
|
260
|
-
# RULE CONFIGURATION
|
|
261
|
-
# =============================================================================
|
|
262
|
-
configuration:
|
|
263
|
-
# Global settings
|
|
264
|
-
global:
|
|
265
|
-
fail_on_error: true
|
|
266
|
-
fail_on_warning: false
|
|
267
|
-
auto_fix_enabled: true
|
|
268
|
-
|
|
269
|
-
# Rule overrides by path
|
|
270
|
-
overrides:
|
|
271
|
-
- path: "src/legacy/**"
|
|
272
|
-
rules:
|
|
273
|
-
component-naming: "off"
|
|
274
|
-
no-console-log: "warning"
|
|
275
|
-
|
|
276
|
-
- path: "scripts/**"
|
|
277
|
-
rules:
|
|
278
|
-
no-console-log: "off"
|
|
279
|
-
|
|
280
|
-
# Ignore patterns
|
|
281
|
-
ignore:
|
|
282
|
-
- "node_modules/**"
|
|
283
|
-
- "dist/**"
|
|
284
|
-
- "build/**"
|
|
285
|
-
- ".next/**"
|
|
286
|
-
- "coverage/**"
|