start-vibing 2.0.11 → 2.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +177 -177
- package/dist/cli.js +19 -2
- package/package.json +42 -42
- package/template/.claude/CLAUDE.md +174 -174
- package/template/.claude/agents/01-orchestration/agent-selector.md +130 -130
- package/template/.claude/agents/01-orchestration/checkpoint-manager.md +142 -142
- package/template/.claude/agents/01-orchestration/context-manager.md +138 -138
- package/template/.claude/agents/01-orchestration/error-recovery.md +182 -182
- package/template/.claude/agents/01-orchestration/orchestrator.md +114 -114
- package/template/.claude/agents/01-orchestration/parallel-coordinator.md +141 -141
- package/template/.claude/agents/01-orchestration/task-decomposer.md +121 -121
- package/template/.claude/agents/01-orchestration/workflow-router.md +114 -114
- package/template/.claude/agents/02-typescript/bun-runtime-expert.md +197 -197
- package/template/.claude/agents/02-typescript/esm-resolver.md +193 -193
- package/template/.claude/agents/02-typescript/import-alias-enforcer.md +158 -158
- package/template/.claude/agents/02-typescript/ts-generics-helper.md +183 -183
- package/template/.claude/agents/02-typescript/ts-migration-helper.md +238 -238
- package/template/.claude/agents/02-typescript/ts-strict-checker.md +180 -180
- package/template/.claude/agents/02-typescript/ts-types-analyzer.md +199 -199
- package/template/.claude/agents/02-typescript/type-definition-writer.md +187 -187
- package/template/.claude/agents/02-typescript/zod-schema-designer.md +212 -212
- package/template/.claude/agents/02-typescript/zod-validator.md +158 -158
- package/template/.claude/agents/03-testing/playwright-assertions.md +265 -265
- package/template/.claude/agents/03-testing/playwright-e2e.md +247 -247
- package/template/.claude/agents/03-testing/playwright-fixtures.md +234 -234
- package/template/.claude/agents/03-testing/playwright-multi-viewport.md +256 -256
- package/template/.claude/agents/03-testing/playwright-page-objects.md +247 -247
- package/template/.claude/agents/03-testing/test-cleanup-manager.md +248 -248
- package/template/.claude/agents/03-testing/test-data-generator.md +254 -254
- package/template/.claude/agents/03-testing/tester-integration.md +278 -278
- package/template/.claude/agents/03-testing/tester-unit.md +207 -207
- package/template/.claude/agents/03-testing/vitest-config.md +287 -287
- package/template/.claude/agents/04-docker/container-health.md +255 -255
- package/template/.claude/agents/04-docker/deployment-validator.md +225 -225
- package/template/.claude/agents/04-docker/docker-compose-designer.md +281 -281
- package/template/.claude/agents/04-docker/docker-env-manager.md +235 -235
- package/template/.claude/agents/04-docker/docker-multi-stage.md +241 -241
- package/template/.claude/agents/04-docker/dockerfile-optimizer.md +208 -208
- package/template/.claude/agents/05-database/database-seeder.md +273 -273
- package/template/.claude/agents/05-database/mongodb-query-optimizer.md +230 -230
- package/template/.claude/agents/05-database/mongoose-aggregation.md +306 -306
- package/template/.claude/agents/05-database/mongoose-index-optimizer.md +182 -182
- package/template/.claude/agents/05-database/mongoose-schema-designer.md +267 -267
- package/template/.claude/agents/06-security/auth-session-validator.md +68 -68
- package/template/.claude/agents/06-security/input-sanitizer.md +80 -80
- package/template/.claude/agents/06-security/owasp-checker.md +97 -97
- package/template/.claude/agents/06-security/permission-auditor.md +100 -100
- package/template/.claude/agents/06-security/security-auditor.md +84 -84
- package/template/.claude/agents/06-security/sensitive-data-scanner.md +83 -83
- package/template/.claude/agents/07-documentation/api-documenter.md +136 -136
- package/template/.claude/agents/07-documentation/changelog-manager.md +105 -105
- package/template/.claude/agents/07-documentation/documenter.md +76 -76
- package/template/.claude/agents/07-documentation/domain-updater.md +81 -81
- package/template/.claude/agents/07-documentation/jsdoc-generator.md +114 -114
- package/template/.claude/agents/07-documentation/readme-generator.md +135 -135
- package/template/.claude/agents/08-git/branch-manager.md +58 -58
- package/template/.claude/agents/08-git/commit-manager.md +63 -63
- package/template/.claude/agents/08-git/pr-creator.md +76 -76
- package/template/.claude/agents/09-quality/code-reviewer.md +71 -71
- package/template/.claude/agents/09-quality/quality-checker.md +67 -67
- package/template/.claude/agents/10-research/best-practices-finder.md +89 -89
- package/template/.claude/agents/10-research/competitor-analyzer.md +106 -106
- package/template/.claude/agents/10-research/pattern-researcher.md +93 -93
- package/template/.claude/agents/10-research/research-cache-manager.md +76 -76
- package/template/.claude/agents/10-research/research-web.md +98 -98
- package/template/.claude/agents/10-research/tech-evaluator.md +101 -101
- package/template/.claude/agents/11-ui-ux/accessibility-auditor.md +136 -136
- package/template/.claude/agents/11-ui-ux/design-system-enforcer.md +125 -125
- package/template/.claude/agents/11-ui-ux/skeleton-generator.md +118 -118
- package/template/.claude/agents/11-ui-ux/ui-desktop.md +132 -132
- package/template/.claude/agents/11-ui-ux/ui-mobile.md +98 -98
- package/template/.claude/agents/11-ui-ux/ui-tablet.md +110 -110
- package/template/.claude/agents/12-performance/api-latency-analyzer.md +156 -156
- package/template/.claude/agents/12-performance/bundle-analyzer.md +113 -113
- package/template/.claude/agents/12-performance/memory-leak-detector.md +137 -137
- package/template/.claude/agents/12-performance/performance-profiler.md +115 -115
- package/template/.claude/agents/12-performance/query-optimizer.md +124 -124
- package/template/.claude/agents/12-performance/render-optimizer.md +154 -154
- package/template/.claude/agents/13-debugging/build-error-fixer.md +207 -207
- package/template/.claude/agents/13-debugging/debugger.md +149 -149
- package/template/.claude/agents/13-debugging/error-stack-analyzer.md +141 -141
- package/template/.claude/agents/13-debugging/network-debugger.md +208 -208
- package/template/.claude/agents/13-debugging/runtime-error-fixer.md +181 -181
- package/template/.claude/agents/13-debugging/type-error-resolver.md +185 -185
- package/template/.claude/agents/14-validation/final-validator.md +93 -93
- package/template/.claude/agents/_backup/analyzer.md +134 -134
- package/template/.claude/agents/_backup/code-reviewer.md +279 -279
- package/template/.claude/agents/_backup/commit-manager.md +219 -219
- package/template/.claude/agents/_backup/debugger.md +280 -280
- package/template/.claude/agents/_backup/documenter.md +237 -237
- package/template/.claude/agents/_backup/domain-updater.md +197 -197
- package/template/.claude/agents/_backup/final-validator.md +169 -169
- package/template/.claude/agents/_backup/orchestrator.md +149 -149
- package/template/.claude/agents/_backup/performance.md +232 -232
- package/template/.claude/agents/_backup/quality-checker.md +240 -240
- package/template/.claude/agents/_backup/research.md +315 -315
- package/template/.claude/agents/_backup/security-auditor.md +192 -192
- package/template/.claude/agents/_backup/tester.md +566 -566
- package/template/.claude/agents/_backup/ui-ux-reviewer.md +247 -247
- package/template/.claude/config/README.md +30 -30
- package/template/.claude/config/mcp-config.json +344 -344
- package/template/.claude/config/project-config.json +53 -53
- package/template/.claude/config/quality-gates.json +46 -46
- package/template/.claude/config/security-rules.json +45 -45
- package/template/.claude/config/testing-config.json +164 -164
- package/template/.claude/hooks/SETUP.md +126 -126
- package/template/.claude/hooks/run-hook.ts +176 -176
- package/template/.claude/hooks/stop-validator.ts +914 -824
- package/template/.claude/hooks/user-prompt-submit.ts +886 -886
- package/template/.claude/scripts/mcp-quick-install.ts +151 -151
- package/template/.claude/scripts/setup-mcps.ts +651 -651
- package/template/.claude/settings.json +275 -275
- package/template/.claude/skills/bun-runtime/SKILL.md +430 -430
- package/template/.claude/skills/codebase-knowledge/domains/claude-system.md +431 -431
- package/template/.claude/skills/codebase-knowledge/domains/mcp-integration.md +295 -295
- package/template/.claude/skills/debugging-patterns/SKILL.md +485 -485
- package/template/.claude/skills/docker-patterns/SKILL.md +555 -555
- package/template/.claude/skills/git-workflow/SKILL.md +454 -454
- package/template/.claude/skills/mongoose-patterns/SKILL.md +499 -499
- package/template/.claude/skills/nextjs-app-router/SKILL.md +327 -327
- package/template/.claude/skills/performance-patterns/SKILL.md +547 -547
- package/template/.claude/skills/playwright-automation/SKILL.md +438 -438
- package/template/.claude/skills/react-patterns/SKILL.md +389 -389
- package/template/.claude/skills/research-cache/SKILL.md +222 -222
- package/template/.claude/skills/shadcn-ui/SKILL.md +511 -511
- package/template/.claude/skills/tailwind-patterns/SKILL.md +465 -465
- package/template/.claude/skills/test-coverage/SKILL.md +467 -467
- package/template/.claude/skills/trpc-api/SKILL.md +434 -434
- package/template/.claude/skills/typescript-strict/SKILL.md +367 -367
- package/template/.claude/skills/zod-validation/SKILL.md +403 -403
- package/template/CLAUDE.md +117 -117
|
@@ -1,182 +1,182 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: mongoose-index-optimizer
|
|
3
|
-
description: 'AUTOMATICALLY invoke when database queries are slow. Triggers: slow query, index missing, database performance. Optimizes Mongoose indexes. PROACTIVELY analyzes and improves query performance.'
|
|
4
|
-
model: haiku
|
|
5
|
-
tools: Read, Bash, Grep, Glob
|
|
6
|
-
skills: mongoose-patterns
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Mongoose Index Optimizer Agent
|
|
10
|
-
|
|
11
|
-
You optimize database indexes for query performance.
|
|
12
|
-
|
|
13
|
-
## Index Analysis
|
|
14
|
-
|
|
15
|
-
### Check Existing Indexes
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
# Connect to MongoDB and list indexes
|
|
19
|
-
mongosh myapp --eval "db.users.getIndexes()"
|
|
20
|
-
|
|
21
|
-
# Check index sizes
|
|
22
|
-
mongosh myapp --eval "db.users.stats().indexSizes"
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
### Query Analysis
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
# Explain query
|
|
29
|
-
mongosh myapp --eval "db.users.find({email: 'test@test.com'}).explain('executionStats')"
|
|
30
|
-
|
|
31
|
-
# Check if using index
|
|
32
|
-
# Look for: "stage": "IXSCAN" (good) vs "COLLSCAN" (bad)
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
## Index Types
|
|
36
|
-
|
|
37
|
-
### Single Field Index
|
|
38
|
-
|
|
39
|
-
```typescript
|
|
40
|
-
// For queries like: { email: "..." }
|
|
41
|
-
UserSchema.index({ email: 1 });
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
### Compound Index
|
|
45
|
-
|
|
46
|
-
```typescript
|
|
47
|
-
// For queries like: { role: "...", isActive: true }
|
|
48
|
-
// Order matters! Most selective first
|
|
49
|
-
UserSchema.index({ role: 1, isActive: 1 });
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
### Unique Index
|
|
53
|
-
|
|
54
|
-
```typescript
|
|
55
|
-
// Prevents duplicates
|
|
56
|
-
UserSchema.index({ email: 1 }, { unique: true });
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
### Text Index
|
|
60
|
-
|
|
61
|
-
```typescript
|
|
62
|
-
// For text search
|
|
63
|
-
UserSchema.index({ name: 'text', bio: 'text' });
|
|
64
|
-
|
|
65
|
-
// Query with: { $text: { $search: "keyword" } }
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
### TTL Index
|
|
69
|
-
|
|
70
|
-
```typescript
|
|
71
|
-
// Auto-delete after time
|
|
72
|
-
SessionSchema.index({ createdAt: 1 }, { expireAfterSeconds: 86400 }); // 24h
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
### Sparse Index
|
|
76
|
-
|
|
77
|
-
```typescript
|
|
78
|
-
// Only index documents with the field
|
|
79
|
-
UserSchema.index({ nickname: 1 }, { sparse: true });
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
### Partial Index
|
|
83
|
-
|
|
84
|
-
```typescript
|
|
85
|
-
// Index only matching documents
|
|
86
|
-
UserSchema.index({ email: 1 }, { partialFilterExpression: { isActive: true } });
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
## Index Selection Guide
|
|
90
|
-
|
|
91
|
-
| Query Pattern | Index Type |
|
|
92
|
-
| ------------------------------- | ------------------------- |
|
|
93
|
-
| `{ field: value }` | Single `{ field: 1 }` |
|
|
94
|
-
| `{ a: v1, b: v2 }` | Compound `{ a: 1, b: 1 }` |
|
|
95
|
-
| `{ field: { $gt: x } }` | Single `{ field: 1 }` |
|
|
96
|
-
| `.sort({ field: -1 })` | `{ field: -1 }` |
|
|
97
|
-
| `{ field: { $in: [...] } }` | Single `{ field: 1 }` |
|
|
98
|
-
| `{ $text: { $search: "..." } }` | Text index |
|
|
99
|
-
|
|
100
|
-
## Compound Index Order
|
|
101
|
-
|
|
102
|
-
The **ESR Rule** (Equality, Sort, Range):
|
|
103
|
-
|
|
104
|
-
```typescript
|
|
105
|
-
// Query: { status: "active", createdAt: { $gt: date } }.sort({ score: -1 })
|
|
106
|
-
// Index: { status: 1, score: -1, createdAt: 1 }
|
|
107
|
-
// [Equality] [Sort] [Range]
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
## Index Optimization
|
|
111
|
-
|
|
112
|
-
### Remove Unused Indexes
|
|
113
|
-
|
|
114
|
-
```bash
|
|
115
|
-
# Check index usage stats
|
|
116
|
-
mongosh myapp --eval "db.users.aggregate([{$indexStats: {}}])"
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
### Covered Queries
|
|
120
|
-
|
|
121
|
-
```typescript
|
|
122
|
-
// Query that can be answered entirely from index
|
|
123
|
-
// Index: { email: 1, name: 1 }
|
|
124
|
-
// Query: find({email: "..."}, {name: 1, _id: 0})
|
|
125
|
-
// No document fetch needed!
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
### Background Index Creation
|
|
129
|
-
|
|
130
|
-
```typescript
|
|
131
|
-
// Don't block operations
|
|
132
|
-
UserSchema.index({ field: 1 }, { background: true });
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
## Performance Indicators
|
|
136
|
-
|
|
137
|
-
| Metric | Good | Bad |
|
|
138
|
-
| ------------------- | -------------- | ------------ |
|
|
139
|
-
| executionTimeMillis | < 50ms | > 1000ms |
|
|
140
|
-
| stage | IXSCAN | COLLSCAN |
|
|
141
|
-
| totalDocsExamined | ~= nReturned | >> nReturned |
|
|
142
|
-
| indexBounds | Specific range | Full range |
|
|
143
|
-
|
|
144
|
-
## Output Format
|
|
145
|
-
|
|
146
|
-
```markdown
|
|
147
|
-
## Index Optimization Report
|
|
148
|
-
|
|
149
|
-
### Collection: [name]
|
|
150
|
-
|
|
151
|
-
### Current Indexes
|
|
152
|
-
|
|
153
|
-
| Index | Fields | Usage | Size |
|
|
154
|
-
| ------- | ------ | ----- | ---- |
|
|
155
|
-
| _id_ | \_id | HIGH | 10MB |
|
|
156
|
-
| email_1 | email | HIGH | 5MB |
|
|
157
|
-
|
|
158
|
-
### Slow Queries Identified
|
|
159
|
-
|
|
160
|
-
| Query | Time | Issue |
|
|
161
|
-
| --------------------- | ----- | -------- |
|
|
162
|
-
| find({role: "admin"}) | 500ms | No index |
|
|
163
|
-
|
|
164
|
-
### Recommended Indexes
|
|
165
|
-
|
|
166
|
-
\`\`\`typescript
|
|
167
|
-
// Add this index for role queries
|
|
168
|
-
UserSchema.index({ role: 1 });
|
|
169
|
-
\`\`\`
|
|
170
|
-
|
|
171
|
-
### Indexes to Remove
|
|
172
|
-
|
|
173
|
-
- `oldField_1` - Never used (0 ops in 30 days)
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
## Critical Rules
|
|
177
|
-
|
|
178
|
-
1. **ESR ORDER** - Equality, Sort, Range
|
|
179
|
-
2. **SELECTIVE FIRST** - Most unique values first
|
|
180
|
-
3. **COVER QUERIES** - Include projected fields
|
|
181
|
-
4. **MONITOR USAGE** - Remove unused indexes
|
|
182
|
-
5. **BACKGROUND BUILD** - Don't block production
|
|
1
|
+
---
|
|
2
|
+
name: mongoose-index-optimizer
|
|
3
|
+
description: 'AUTOMATICALLY invoke when database queries are slow. Triggers: slow query, index missing, database performance. Optimizes Mongoose indexes. PROACTIVELY analyzes and improves query performance.'
|
|
4
|
+
model: haiku
|
|
5
|
+
tools: Read, Bash, Grep, Glob
|
|
6
|
+
skills: mongoose-patterns
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Mongoose Index Optimizer Agent
|
|
10
|
+
|
|
11
|
+
You optimize database indexes for query performance.
|
|
12
|
+
|
|
13
|
+
## Index Analysis
|
|
14
|
+
|
|
15
|
+
### Check Existing Indexes
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Connect to MongoDB and list indexes
|
|
19
|
+
mongosh myapp --eval "db.users.getIndexes()"
|
|
20
|
+
|
|
21
|
+
# Check index sizes
|
|
22
|
+
mongosh myapp --eval "db.users.stats().indexSizes"
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Query Analysis
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# Explain query
|
|
29
|
+
mongosh myapp --eval "db.users.find({email: 'test@test.com'}).explain('executionStats')"
|
|
30
|
+
|
|
31
|
+
# Check if using index
|
|
32
|
+
# Look for: "stage": "IXSCAN" (good) vs "COLLSCAN" (bad)
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Index Types
|
|
36
|
+
|
|
37
|
+
### Single Field Index
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
// For queries like: { email: "..." }
|
|
41
|
+
UserSchema.index({ email: 1 });
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Compound Index
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
// For queries like: { role: "...", isActive: true }
|
|
48
|
+
// Order matters! Most selective first
|
|
49
|
+
UserSchema.index({ role: 1, isActive: 1 });
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Unique Index
|
|
53
|
+
|
|
54
|
+
```typescript
|
|
55
|
+
// Prevents duplicates
|
|
56
|
+
UserSchema.index({ email: 1 }, { unique: true });
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Text Index
|
|
60
|
+
|
|
61
|
+
```typescript
|
|
62
|
+
// For text search
|
|
63
|
+
UserSchema.index({ name: 'text', bio: 'text' });
|
|
64
|
+
|
|
65
|
+
// Query with: { $text: { $search: "keyword" } }
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### TTL Index
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
// Auto-delete after time
|
|
72
|
+
SessionSchema.index({ createdAt: 1 }, { expireAfterSeconds: 86400 }); // 24h
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Sparse Index
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
// Only index documents with the field
|
|
79
|
+
UserSchema.index({ nickname: 1 }, { sparse: true });
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Partial Index
|
|
83
|
+
|
|
84
|
+
```typescript
|
|
85
|
+
// Index only matching documents
|
|
86
|
+
UserSchema.index({ email: 1 }, { partialFilterExpression: { isActive: true } });
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Index Selection Guide
|
|
90
|
+
|
|
91
|
+
| Query Pattern | Index Type |
|
|
92
|
+
| ------------------------------- | ------------------------- |
|
|
93
|
+
| `{ field: value }` | Single `{ field: 1 }` |
|
|
94
|
+
| `{ a: v1, b: v2 }` | Compound `{ a: 1, b: 1 }` |
|
|
95
|
+
| `{ field: { $gt: x } }` | Single `{ field: 1 }` |
|
|
96
|
+
| `.sort({ field: -1 })` | `{ field: -1 }` |
|
|
97
|
+
| `{ field: { $in: [...] } }` | Single `{ field: 1 }` |
|
|
98
|
+
| `{ $text: { $search: "..." } }` | Text index |
|
|
99
|
+
|
|
100
|
+
## Compound Index Order
|
|
101
|
+
|
|
102
|
+
The **ESR Rule** (Equality, Sort, Range):
|
|
103
|
+
|
|
104
|
+
```typescript
|
|
105
|
+
// Query: { status: "active", createdAt: { $gt: date } }.sort({ score: -1 })
|
|
106
|
+
// Index: { status: 1, score: -1, createdAt: 1 }
|
|
107
|
+
// [Equality] [Sort] [Range]
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Index Optimization
|
|
111
|
+
|
|
112
|
+
### Remove Unused Indexes
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
# Check index usage stats
|
|
116
|
+
mongosh myapp --eval "db.users.aggregate([{$indexStats: {}}])"
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Covered Queries
|
|
120
|
+
|
|
121
|
+
```typescript
|
|
122
|
+
// Query that can be answered entirely from index
|
|
123
|
+
// Index: { email: 1, name: 1 }
|
|
124
|
+
// Query: find({email: "..."}, {name: 1, _id: 0})
|
|
125
|
+
// No document fetch needed!
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Background Index Creation
|
|
129
|
+
|
|
130
|
+
```typescript
|
|
131
|
+
// Don't block operations
|
|
132
|
+
UserSchema.index({ field: 1 }, { background: true });
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Performance Indicators
|
|
136
|
+
|
|
137
|
+
| Metric | Good | Bad |
|
|
138
|
+
| ------------------- | -------------- | ------------ |
|
|
139
|
+
| executionTimeMillis | < 50ms | > 1000ms |
|
|
140
|
+
| stage | IXSCAN | COLLSCAN |
|
|
141
|
+
| totalDocsExamined | ~= nReturned | >> nReturned |
|
|
142
|
+
| indexBounds | Specific range | Full range |
|
|
143
|
+
|
|
144
|
+
## Output Format
|
|
145
|
+
|
|
146
|
+
```markdown
|
|
147
|
+
## Index Optimization Report
|
|
148
|
+
|
|
149
|
+
### Collection: [name]
|
|
150
|
+
|
|
151
|
+
### Current Indexes
|
|
152
|
+
|
|
153
|
+
| Index | Fields | Usage | Size |
|
|
154
|
+
| ------- | ------ | ----- | ---- |
|
|
155
|
+
| _id_ | \_id | HIGH | 10MB |
|
|
156
|
+
| email_1 | email | HIGH | 5MB |
|
|
157
|
+
|
|
158
|
+
### Slow Queries Identified
|
|
159
|
+
|
|
160
|
+
| Query | Time | Issue |
|
|
161
|
+
| --------------------- | ----- | -------- |
|
|
162
|
+
| find({role: "admin"}) | 500ms | No index |
|
|
163
|
+
|
|
164
|
+
### Recommended Indexes
|
|
165
|
+
|
|
166
|
+
\`\`\`typescript
|
|
167
|
+
// Add this index for role queries
|
|
168
|
+
UserSchema.index({ role: 1 });
|
|
169
|
+
\`\`\`
|
|
170
|
+
|
|
171
|
+
### Indexes to Remove
|
|
172
|
+
|
|
173
|
+
- `oldField_1` - Never used (0 ops in 30 days)
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## Critical Rules
|
|
177
|
+
|
|
178
|
+
1. **ESR ORDER** - Equality, Sort, Range
|
|
179
|
+
2. **SELECTIVE FIRST** - Most unique values first
|
|
180
|
+
3. **COVER QUERIES** - Include projected fields
|
|
181
|
+
4. **MONITOR USAGE** - Remove unused indexes
|
|
182
|
+
5. **BACKGROUND BUILD** - Don't block production
|