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,180 +1,180 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ts-strict-checker
|
|
3
|
-
description: 'AUTOMATICALLY invoke AFTER editing any .ts file. Triggers: editing .ts files, new .ts file, process.env access. Validates index access, literal types, null checks. PROACTIVELY enforces TypeScript strict mode rules.'
|
|
4
|
-
model: haiku
|
|
5
|
-
tools: Read, Grep, Glob, Bash
|
|
6
|
-
skills: typescript-strict
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# TypeScript Strict Checker Agent
|
|
10
|
-
|
|
11
|
-
You enforce TypeScript strict mode rules in all code.
|
|
12
|
-
|
|
13
|
-
## Project Rules
|
|
14
|
-
|
|
15
|
-
From CLAUDE.md - these are MANDATORY:
|
|
16
|
-
|
|
17
|
-
### Index Access - Use Brackets
|
|
18
|
-
|
|
19
|
-
```typescript
|
|
20
|
-
// CORRECT
|
|
21
|
-
process.env['VARIABLE'];
|
|
22
|
-
object['dynamicKey'];
|
|
23
|
-
|
|
24
|
-
// WRONG - Will fail strict mode
|
|
25
|
-
process.env.VARIABLE;
|
|
26
|
-
object.dynamicKey;
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
### Literal Types - Use `as const`
|
|
30
|
-
|
|
31
|
-
```typescript
|
|
32
|
-
// CORRECT
|
|
33
|
-
source: 'listed' as const;
|
|
34
|
-
status: 'active' as const;
|
|
35
|
-
|
|
36
|
-
// WRONG - Infers string instead of literal
|
|
37
|
-
source: 'listed';
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
### Null/Undefined Checks
|
|
41
|
-
|
|
42
|
-
```typescript
|
|
43
|
-
// CORRECT
|
|
44
|
-
const name = user?.name ?? 'default';
|
|
45
|
-
if (data !== undefined) {
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
// WRONG
|
|
49
|
-
const name = user.name; // Could be undefined
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
## Strict Mode Checks
|
|
53
|
-
|
|
54
|
-
### Check 1: noUncheckedIndexedAccess
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
# Find problematic index access
|
|
58
|
-
grep -rn "process\.env\.[A-Z]" --include="*.ts" src/
|
|
59
|
-
grep -rn "\.[a-z]*Key\]" --include="*.ts" src/
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
### Check 2: Literal Type Assertions
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
# Find strings that should be literals
|
|
66
|
-
grep -rn "source: '" --include="*.ts" src/
|
|
67
|
-
grep -rn "type: '" --include="*.ts" src/
|
|
68
|
-
grep -rn "status: '" --include="*.ts" src/
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
### Check 3: Null Safety
|
|
72
|
-
|
|
73
|
-
```bash
|
|
74
|
-
# Find potential null issues
|
|
75
|
-
grep -rn "\.length" --include="*.ts" src/ | grep -v "?\."
|
|
76
|
-
grep -rn "\.map(" --include="*.ts" src/ | grep -v "?\."
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
## Common Patterns
|
|
80
|
-
|
|
81
|
-
### Object Property Access
|
|
82
|
-
|
|
83
|
-
```typescript
|
|
84
|
-
// Before (error-prone)
|
|
85
|
-
const value = config.setting;
|
|
86
|
-
|
|
87
|
-
// After (strict-safe)
|
|
88
|
-
const value = config['setting'];
|
|
89
|
-
// OR for known properties
|
|
90
|
-
const { setting } = config;
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
### Optional Chaining
|
|
94
|
-
|
|
95
|
-
```typescript
|
|
96
|
-
// Before
|
|
97
|
-
const name = user && user.profile && user.profile.name;
|
|
98
|
-
|
|
99
|
-
// After
|
|
100
|
-
const name = user?.profile?.name;
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
### Nullish Coalescing
|
|
104
|
-
|
|
105
|
-
```typescript
|
|
106
|
-
// Before
|
|
107
|
-
const value = input || 'default';
|
|
108
|
-
|
|
109
|
-
// After (only null/undefined, not falsy)
|
|
110
|
-
const value = input ?? 'default';
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
### Type Narrowing
|
|
114
|
-
|
|
115
|
-
```typescript
|
|
116
|
-
// Before
|
|
117
|
-
function process(data: Data | undefined) {
|
|
118
|
-
console.log(data.value); // Error!
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
// After
|
|
122
|
-
function process(data: Data | undefined) {
|
|
123
|
-
if (!data) return;
|
|
124
|
-
console.log(data.value); // OK - narrowed
|
|
125
|
-
}
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
## Output Format
|
|
129
|
-
|
|
130
|
-
```markdown
|
|
131
|
-
## TypeScript Strict Check
|
|
132
|
-
|
|
133
|
-
### File: [path]
|
|
134
|
-
|
|
135
|
-
### Violations Found
|
|
136
|
-
|
|
137
|
-
| Line | Issue | Fix |
|
|
138
|
-
| ---- | ------------------- | --------------------------------- |
|
|
139
|
-
| 45 | Dot notation on env | Use bracket: `process.env['VAR']` |
|
|
140
|
-
| 78 | Missing `as const` | Add: `'value' as const` |
|
|
141
|
-
| 92 | Possible undefined | Add: `?.` or null check |
|
|
142
|
-
|
|
143
|
-
### Auto-fixable
|
|
144
|
-
|
|
145
|
-
[count] issues can be auto-fixed
|
|
146
|
-
|
|
147
|
-
### Manual Review Required
|
|
148
|
-
|
|
149
|
-
[count] issues need manual review
|
|
150
|
-
|
|
151
|
-
### Suggested Fixes
|
|
152
|
-
|
|
153
|
-
\`\`\`typescript
|
|
154
|
-
// Line 45
|
|
155
|
-
|
|
156
|
-
- process.env.DATABASE_URL
|
|
157
|
-
|
|
158
|
-
* process.env['DATABASE_URL']
|
|
159
|
-
|
|
160
|
-
// Line 78
|
|
161
|
-
|
|
162
|
-
- source: 'api'
|
|
163
|
-
|
|
164
|
-
* source: 'api' as const
|
|
165
|
-
\`\`\`
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
## Validation Command
|
|
169
|
-
|
|
170
|
-
```bash
|
|
171
|
-
bun run typecheck
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
## Critical Rules
|
|
175
|
-
|
|
176
|
-
1. **ALWAYS BRACKET ACCESS** - For dynamic/env properties
|
|
177
|
-
2. **ALWAYS AS CONST** - For literal type strings
|
|
178
|
-
3. **ALWAYS NULL CHECK** - Before property access
|
|
179
|
-
4. **RUN TYPECHECK** - Verify fixes work
|
|
180
|
-
5. **NO ANY** - Use unknown instead
|
|
1
|
+
---
|
|
2
|
+
name: ts-strict-checker
|
|
3
|
+
description: 'AUTOMATICALLY invoke AFTER editing any .ts file. Triggers: editing .ts files, new .ts file, process.env access. Validates index access, literal types, null checks. PROACTIVELY enforces TypeScript strict mode rules.'
|
|
4
|
+
model: haiku
|
|
5
|
+
tools: Read, Grep, Glob, Bash
|
|
6
|
+
skills: typescript-strict
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# TypeScript Strict Checker Agent
|
|
10
|
+
|
|
11
|
+
You enforce TypeScript strict mode rules in all code.
|
|
12
|
+
|
|
13
|
+
## Project Rules
|
|
14
|
+
|
|
15
|
+
From CLAUDE.md - these are MANDATORY:
|
|
16
|
+
|
|
17
|
+
### Index Access - Use Brackets
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
// CORRECT
|
|
21
|
+
process.env['VARIABLE'];
|
|
22
|
+
object['dynamicKey'];
|
|
23
|
+
|
|
24
|
+
// WRONG - Will fail strict mode
|
|
25
|
+
process.env.VARIABLE;
|
|
26
|
+
object.dynamicKey;
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Literal Types - Use `as const`
|
|
30
|
+
|
|
31
|
+
```typescript
|
|
32
|
+
// CORRECT
|
|
33
|
+
source: 'listed' as const;
|
|
34
|
+
status: 'active' as const;
|
|
35
|
+
|
|
36
|
+
// WRONG - Infers string instead of literal
|
|
37
|
+
source: 'listed';
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Null/Undefined Checks
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
// CORRECT
|
|
44
|
+
const name = user?.name ?? 'default';
|
|
45
|
+
if (data !== undefined) {
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// WRONG
|
|
49
|
+
const name = user.name; // Could be undefined
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Strict Mode Checks
|
|
53
|
+
|
|
54
|
+
### Check 1: noUncheckedIndexedAccess
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# Find problematic index access
|
|
58
|
+
grep -rn "process\.env\.[A-Z]" --include="*.ts" src/
|
|
59
|
+
grep -rn "\.[a-z]*Key\]" --include="*.ts" src/
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Check 2: Literal Type Assertions
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# Find strings that should be literals
|
|
66
|
+
grep -rn "source: '" --include="*.ts" src/
|
|
67
|
+
grep -rn "type: '" --include="*.ts" src/
|
|
68
|
+
grep -rn "status: '" --include="*.ts" src/
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Check 3: Null Safety
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# Find potential null issues
|
|
75
|
+
grep -rn "\.length" --include="*.ts" src/ | grep -v "?\."
|
|
76
|
+
grep -rn "\.map(" --include="*.ts" src/ | grep -v "?\."
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Common Patterns
|
|
80
|
+
|
|
81
|
+
### Object Property Access
|
|
82
|
+
|
|
83
|
+
```typescript
|
|
84
|
+
// Before (error-prone)
|
|
85
|
+
const value = config.setting;
|
|
86
|
+
|
|
87
|
+
// After (strict-safe)
|
|
88
|
+
const value = config['setting'];
|
|
89
|
+
// OR for known properties
|
|
90
|
+
const { setting } = config;
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Optional Chaining
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
// Before
|
|
97
|
+
const name = user && user.profile && user.profile.name;
|
|
98
|
+
|
|
99
|
+
// After
|
|
100
|
+
const name = user?.profile?.name;
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Nullish Coalescing
|
|
104
|
+
|
|
105
|
+
```typescript
|
|
106
|
+
// Before
|
|
107
|
+
const value = input || 'default';
|
|
108
|
+
|
|
109
|
+
// After (only null/undefined, not falsy)
|
|
110
|
+
const value = input ?? 'default';
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Type Narrowing
|
|
114
|
+
|
|
115
|
+
```typescript
|
|
116
|
+
// Before
|
|
117
|
+
function process(data: Data | undefined) {
|
|
118
|
+
console.log(data.value); // Error!
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// After
|
|
122
|
+
function process(data: Data | undefined) {
|
|
123
|
+
if (!data) return;
|
|
124
|
+
console.log(data.value); // OK - narrowed
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Output Format
|
|
129
|
+
|
|
130
|
+
```markdown
|
|
131
|
+
## TypeScript Strict Check
|
|
132
|
+
|
|
133
|
+
### File: [path]
|
|
134
|
+
|
|
135
|
+
### Violations Found
|
|
136
|
+
|
|
137
|
+
| Line | Issue | Fix |
|
|
138
|
+
| ---- | ------------------- | --------------------------------- |
|
|
139
|
+
| 45 | Dot notation on env | Use bracket: `process.env['VAR']` |
|
|
140
|
+
| 78 | Missing `as const` | Add: `'value' as const` |
|
|
141
|
+
| 92 | Possible undefined | Add: `?.` or null check |
|
|
142
|
+
|
|
143
|
+
### Auto-fixable
|
|
144
|
+
|
|
145
|
+
[count] issues can be auto-fixed
|
|
146
|
+
|
|
147
|
+
### Manual Review Required
|
|
148
|
+
|
|
149
|
+
[count] issues need manual review
|
|
150
|
+
|
|
151
|
+
### Suggested Fixes
|
|
152
|
+
|
|
153
|
+
\`\`\`typescript
|
|
154
|
+
// Line 45
|
|
155
|
+
|
|
156
|
+
- process.env.DATABASE_URL
|
|
157
|
+
|
|
158
|
+
* process.env['DATABASE_URL']
|
|
159
|
+
|
|
160
|
+
// Line 78
|
|
161
|
+
|
|
162
|
+
- source: 'api'
|
|
163
|
+
|
|
164
|
+
* source: 'api' as const
|
|
165
|
+
\`\`\`
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Validation Command
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
bun run typecheck
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## Critical Rules
|
|
175
|
+
|
|
176
|
+
1. **ALWAYS BRACKET ACCESS** - For dynamic/env properties
|
|
177
|
+
2. **ALWAYS AS CONST** - For literal type strings
|
|
178
|
+
3. **ALWAYS NULL CHECK** - Before property access
|
|
179
|
+
4. **RUN TYPECHECK** - Verify fixes work
|
|
180
|
+
5. **NO ANY** - Use unknown instead
|