start-vibing 1.1.3 → 1.1.4
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/package.json +1 -1
- package/template/.claude/README.md +126 -135
- package/template/.claude/agents/orchestrator.md +37 -23
- package/template/.claude/agents/research.md +51 -3
- package/template/.claude/agents/ui-ux-reviewer.md +80 -10
- package/template/.claude/config/project-config.json +4 -7
- package/template/.claude/hooks/user-prompt-submit.py +384 -37
- package/template/.claude/settings.json +228 -39
- package/template/.claude/skills/codebase-knowledge/SKILL.md +111 -37
- package/template/.claude/skills/codebase-knowledge/domains/claude-system.md +216 -10
- package/template/.claude/skills/docs-tracker/SKILL.md +206 -30
- package/template/.claude/skills/final-check/SKILL.md +252 -40
- package/template/.claude/skills/quality-gate/SKILL.md +238 -31
- package/template/.claude/skills/research-cache/SKILL.md +162 -28
- package/template/.claude/skills/security-scan/SKILL.md +165 -34
- package/template/.claude/skills/test-coverage/SKILL.md +416 -41
- package/template/.claude/skills/ui-ux-audit/SKILL.md +222 -36
- package/template/.claude/config/domain-mapping.json +0 -55
|
@@ -1,72 +1,284 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: final-check
|
|
3
|
-
description: Final validation before
|
|
3
|
+
description: Final validation before task completion. Verifies all skills were consulted, documentation updated, tests pass. HAS VETO POWER - blocks incomplete tasks.
|
|
4
4
|
allowed-tools: Read, Grep, Glob, Bash
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
# Final Check
|
|
7
|
+
# Final Check - Final Validation System
|
|
8
8
|
|
|
9
9
|
## VETO POWER
|
|
10
10
|
|
|
11
|
-
This skill
|
|
11
|
+
> **WARNING:** This skill HAS VETO POWER.
|
|
12
|
+
> If rule violated, MUST:
|
|
13
|
+
>
|
|
14
|
+
> 1. STOP and list violations
|
|
15
|
+
> 2. REQUIRE fix before approving
|
|
16
|
+
> 3. Re-validate after fixes
|
|
12
17
|
|
|
13
|
-
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Purpose
|
|
21
|
+
|
|
22
|
+
This skill is the LAST check before task completion:
|
|
23
|
+
|
|
24
|
+
- **Validates** all CLAUDE.md rules
|
|
25
|
+
- **Verifies** all skills were consulted
|
|
26
|
+
- **Confirms** documentation was updated
|
|
27
|
+
- **Ensures** nothing was forgotten
|
|
28
|
+
- **Blocks** incomplete tasks
|
|
29
|
+
|
|
30
|
+
---
|
|
14
31
|
|
|
15
|
-
|
|
16
|
-
- When user says task is "done"
|
|
17
|
-
- After all other agents completed
|
|
32
|
+
## Mega Validation Checklist
|
|
18
33
|
|
|
19
|
-
|
|
34
|
+
### 1. CODEBASE-KNOWLEDGE
|
|
20
35
|
|
|
21
|
-
|
|
22
|
-
- [ ] Domain
|
|
23
|
-
- [ ] Domain updated after implementing?
|
|
36
|
+
- [ ] Affected domain consulted BEFORE implementing?
|
|
37
|
+
- [ ] Domain file UPDATED after implementing?
|
|
24
38
|
- [ ] Commit hash added?
|
|
39
|
+
- [ ] Connections verified?
|
|
25
40
|
|
|
26
|
-
### 2.
|
|
27
|
-
- [ ] Documentation updated?
|
|
28
|
-
- [ ] Changelog entry added?
|
|
41
|
+
### 2. DOCS-TRACKER
|
|
29
42
|
|
|
30
|
-
|
|
31
|
-
- [ ] New
|
|
32
|
-
- [ ]
|
|
43
|
+
- [ ] Changes detected via git diff?
|
|
44
|
+
- [ ] New documentation created (if needed)?
|
|
45
|
+
- [ ] Existing documentation updated?
|
|
46
|
+
- [ ] Changelog updated?
|
|
47
|
+
|
|
48
|
+
### 3. TEST-COVERAGE
|
|
49
|
+
|
|
50
|
+
- [ ] New files have test or exemption?
|
|
51
|
+
- [ ] New tRPC routes have unit test?
|
|
52
|
+
- [ ] New pages have E2E spec?
|
|
53
|
+
- [ ] E2E uses `auth.helper.ts` correctly?
|
|
33
54
|
- [ ] No `.skip()` added?
|
|
55
|
+
- [ ] All tests pass?
|
|
56
|
+
|
|
57
|
+
### 4. UI-UX-AUDIT
|
|
34
58
|
|
|
35
|
-
|
|
36
|
-
- [ ]
|
|
37
|
-
- [ ]
|
|
38
|
-
- [ ]
|
|
59
|
+
- [ ] Competitors researched (if UI)?
|
|
60
|
+
- [ ] Accessibility validated?
|
|
61
|
+
- [ ] Responsiveness tested?
|
|
62
|
+
- [ ] Skeleton created (if new component)?
|
|
63
|
+
- [ ] Zero horizontal overflow?
|
|
64
|
+
|
|
65
|
+
### 5. SECURITY-SCAN
|
|
66
|
+
|
|
67
|
+
- [ ] User ID always from session?
|
|
68
|
+
- [ ] Sensitive data not sent to frontend?
|
|
69
|
+
- [ ] Zod validation on all routes?
|
|
70
|
+
- [ ] OWASP Top 10 verified?
|
|
71
|
+
- [ ] No pending VETO?
|
|
72
|
+
|
|
73
|
+
### 6. QUALITY-GATE
|
|
39
74
|
|
|
40
|
-
### 5. Quality Gate
|
|
41
75
|
- [ ] `bun run typecheck` passes?
|
|
42
76
|
- [ ] `bun run lint` passes?
|
|
43
77
|
- [ ] `bun run test` passes?
|
|
78
|
+
- [ ] `bun run test:e2e` passes?
|
|
44
79
|
- [ ] `bun run build` passes?
|
|
45
80
|
|
|
46
|
-
|
|
47
|
-
- [ ] Competitors researched?
|
|
48
|
-
- [ ] Accessibility validated?
|
|
49
|
-
- [ ] All viewports tested?
|
|
81
|
+
---
|
|
50
82
|
|
|
51
|
-
##
|
|
83
|
+
## Checklist by Task Type
|
|
52
84
|
|
|
53
|
-
|
|
54
|
-
|
|
85
|
+
### New Feature
|
|
86
|
+
|
|
87
|
+
```markdown
|
|
88
|
+
### Before Implementation
|
|
89
|
+
|
|
90
|
+
- [ ] Consulted codebase-knowledge domain?
|
|
91
|
+
- [ ] Researched competitors (if UI)?
|
|
92
|
+
|
|
93
|
+
### During Implementation
|
|
94
|
+
|
|
95
|
+
- [ ] Followed code patterns?
|
|
96
|
+
- [ ] Created skeleton for components?
|
|
97
|
+
- [ ] Validated inputs with Zod?
|
|
98
|
+
- [ ] User ID always from session?
|
|
99
|
+
|
|
100
|
+
### After Implementation
|
|
101
|
+
|
|
102
|
+
- [ ] Created unit tests?
|
|
103
|
+
- [ ] Created E2E tests?
|
|
104
|
+
- [ ] Updated codebase-knowledge?
|
|
105
|
+
- [ ] Updated docs/flows (if applicable)?
|
|
106
|
+
- [ ] Ran full quality-gate?
|
|
107
|
+
- [ ] Security-scan approved?
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Bug Fix
|
|
111
|
+
|
|
112
|
+
```markdown
|
|
113
|
+
### Before
|
|
114
|
+
|
|
115
|
+
- [ ] Consulted affected domain?
|
|
116
|
+
- [ ] Identified root cause?
|
|
117
|
+
|
|
118
|
+
### During
|
|
119
|
+
|
|
120
|
+
- [ ] Fix is minimal and focused?
|
|
121
|
+
- [ ] Doesn't introduce regression?
|
|
122
|
+
|
|
123
|
+
### After
|
|
124
|
+
|
|
125
|
+
- [ ] Test covering the bug?
|
|
126
|
+
- [ ] Updated domain with commit?
|
|
127
|
+
- [ ] Quality-gate passes?
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Refactor
|
|
131
|
+
|
|
132
|
+
```markdown
|
|
133
|
+
### Before
|
|
134
|
+
|
|
135
|
+
- [ ] Consulted affected domains?
|
|
136
|
+
- [ ] Mapped all dependencies?
|
|
137
|
+
|
|
138
|
+
### During
|
|
139
|
+
|
|
140
|
+
- [ ] Maintained existing behavior?
|
|
141
|
+
- [ ] Didn't break tests?
|
|
142
|
+
|
|
143
|
+
### After
|
|
144
|
+
|
|
145
|
+
- [ ] All tests pass?
|
|
146
|
+
- [ ] Updated affected domains?
|
|
147
|
+
- [ ] Quality-gate passes?
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Validation Flow
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
TASK COMPLETE? (developer thinks done)
|
|
156
|
+
↓
|
|
157
|
+
1. VERIFY CODEBASE-KNOWLEDGE → Consulted? Updated?
|
|
158
|
+
↓
|
|
159
|
+
2. VERIFY DOCS-TRACKER → Docs updated? Changelog?
|
|
160
|
+
↓
|
|
161
|
+
3. VERIFY TEST-COVERAGE → All files have tests? Pass?
|
|
162
|
+
↓
|
|
163
|
+
4. VERIFY UI-UX-AUDIT (if UI) → Research? Accessibility?
|
|
164
|
+
↓
|
|
165
|
+
5. VERIFY SECURITY-SCAN → No VETO? OWASP OK?
|
|
166
|
+
↓
|
|
167
|
+
6. VERIFY QUALITY-GATE → All checks pass?
|
|
168
|
+
↓
|
|
169
|
+
┌─────────┴─────────┐
|
|
170
|
+
↓ ↓
|
|
171
|
+
VIOLATION ALL OK
|
|
172
|
+
→ VETO → APPROVED
|
|
173
|
+
→ LIST ISSUES → CAN COMMIT
|
|
55
174
|
```
|
|
56
175
|
|
|
57
|
-
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## Output Format
|
|
179
|
+
|
|
180
|
+
### Approved
|
|
181
|
+
|
|
182
|
+
```markdown
|
|
183
|
+
## FINAL CHECK - APPROVED
|
|
184
|
+
|
|
185
|
+
### Task Summary
|
|
186
|
+
|
|
187
|
+
- **Type:** Feature
|
|
188
|
+
- **Domain:** [domain]
|
|
189
|
+
- **Files:** X modified
|
|
190
|
+
|
|
191
|
+
### Verifications
|
|
192
|
+
|
|
193
|
+
- [x] Codebase-Knowledge: Consulted and updated
|
|
194
|
+
- [x] Docs-Tracker: Changelog updated
|
|
195
|
+
- [x] Test-Coverage: Unit 3/3, E2E 2/2 pass
|
|
196
|
+
- [x] UI-UX-Audit: Competitors researched, accessible
|
|
197
|
+
- [x] Security-Scan: No vulnerabilities
|
|
198
|
+
- [x] Quality-Gate: All checks pass
|
|
199
|
+
|
|
200
|
+
**STATUS: APPROVED** - Ready to commit
|
|
201
|
+
```
|
|
58
202
|
|
|
59
|
-
|
|
60
|
-
|
|
203
|
+
### Vetoed
|
|
204
|
+
|
|
205
|
+
```markdown
|
|
206
|
+
## FINAL CHECK - VETOED
|
|
207
|
+
|
|
208
|
+
### Task Summary
|
|
209
|
+
|
|
210
|
+
- **Type:** Feature
|
|
211
|
+
- **Domain:** [domain]
|
|
212
|
+
|
|
213
|
+
### Violations Found
|
|
214
|
+
|
|
215
|
+
#### ❌ Codebase-Knowledge
|
|
216
|
+
|
|
217
|
+
- **Violation:** Domain NOT updated after implementation
|
|
218
|
+
- **Action:** Update domain file with commit hash
|
|
219
|
+
|
|
220
|
+
#### ❌ Test-Coverage
|
|
221
|
+
|
|
222
|
+
- **Violation:** New file without test
|
|
223
|
+
- **File:** `components/NewComponent.tsx`
|
|
224
|
+
- **Action:** Create E2E spec
|
|
225
|
+
|
|
226
|
+
**STATUS: VETOED** - 2 violations. Fix before commit.
|
|
227
|
+
|
|
228
|
+
### Next Steps
|
|
229
|
+
|
|
230
|
+
1. Update domain file
|
|
231
|
+
2. Create test for new component
|
|
232
|
+
3. Re-run final-check
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
---
|
|
61
236
|
|
|
62
237
|
## VETO Rules
|
|
63
238
|
|
|
64
|
-
###
|
|
65
|
-
|
|
66
|
-
-
|
|
67
|
-
-
|
|
68
|
-
|
|
239
|
+
### IMMEDIATE VETO
|
|
240
|
+
|
|
241
|
+
1. Security-scan found critical vulnerability
|
|
242
|
+
2. Quality-gate doesn't pass
|
|
243
|
+
3. Tests failing
|
|
244
|
+
4. Codebase-knowledge not updated
|
|
245
|
+
|
|
246
|
+
### VETO BEFORE MERGE
|
|
247
|
+
|
|
248
|
+
1. Docs not updated
|
|
249
|
+
2. Skeleton missing (if new component)
|
|
250
|
+
3. Changelog not updated
|
|
251
|
+
|
|
252
|
+
### WARNING (No veto)
|
|
253
|
+
|
|
254
|
+
1. Coverage below ideal (but critical tests exist)
|
|
255
|
+
2. Optional docs missing
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
## Quick Command
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
# Run full validation
|
|
263
|
+
bun run typecheck && bun run lint && bun run test && bun run test:e2e && bun run build
|
|
264
|
+
|
|
265
|
+
# If all pass, manually verify:
|
|
266
|
+
# - codebase-knowledge updated?
|
|
267
|
+
# - docs updated?
|
|
268
|
+
# - skeleton created?
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## Critical Rules
|
|
274
|
+
|
|
275
|
+
1. **HAS VETO POWER** - Last barrier before commit
|
|
276
|
+
2. **VERIFIES EVERYTHING** - All skills, all rules
|
|
277
|
+
3. **NO EXCUSES** - Rule is rule
|
|
278
|
+
4. **DOCUMENTS VIOLATIONS** - For learning
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
## Version
|
|
69
283
|
|
|
70
|
-
|
|
71
|
-
- Docs not updated
|
|
72
|
-
- Changelog missing
|
|
284
|
+
- **v2.0.0** - Generic template
|
|
@@ -1,71 +1,278 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: quality-gate
|
|
3
|
-
description:
|
|
3
|
+
description: Automates quality checks (typecheck, lint, tests, build) and blocks commits that don't pass. Use before any commit to validate code quality.
|
|
4
4
|
allowed-tools: Bash, Read, Grep
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
# Quality Gate
|
|
7
|
+
# Quality Gate - Quality Verification System
|
|
8
8
|
|
|
9
|
-
##
|
|
9
|
+
## Purpose
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
- After implementation
|
|
13
|
-
- When user asks to "check", "validate", or "run tests"
|
|
11
|
+
This skill automates quality checks:
|
|
14
12
|
|
|
15
|
-
|
|
13
|
+
- **Typecheck** - TypeScript errors
|
|
14
|
+
- **Lint** - Code patterns (ESLint)
|
|
15
|
+
- **Build** - Build verification
|
|
16
|
+
- **Tests** - Unit and E2E tests
|
|
17
|
+
- **Blocks** commits that don't pass
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Commands
|
|
22
|
+
|
|
23
|
+
### 1. TypeScript Check
|
|
16
24
|
|
|
17
25
|
```bash
|
|
18
|
-
# 1. TypeScript
|
|
19
26
|
bun run typecheck
|
|
27
|
+
# or
|
|
28
|
+
bunx tsc --noEmit
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### 2. ESLint Check
|
|
20
32
|
|
|
21
|
-
|
|
33
|
+
```bash
|
|
22
34
|
bun run lint
|
|
35
|
+
# or
|
|
36
|
+
bunx eslint . --ext .ts,.tsx
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### 3. Build Check
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
bun run build
|
|
43
|
+
```
|
|
23
44
|
|
|
24
|
-
|
|
45
|
+
### 4. Unit Tests
|
|
46
|
+
|
|
47
|
+
```bash
|
|
25
48
|
bun run test
|
|
49
|
+
# or
|
|
50
|
+
bunx vitest run
|
|
51
|
+
```
|
|
26
52
|
|
|
27
|
-
|
|
28
|
-
bun run test:e2e
|
|
53
|
+
### 5. E2E Tests
|
|
29
54
|
|
|
30
|
-
|
|
31
|
-
bun run
|
|
55
|
+
```bash
|
|
56
|
+
bun run test:e2e
|
|
57
|
+
# or
|
|
58
|
+
bunx playwright test
|
|
32
59
|
```
|
|
33
60
|
|
|
34
|
-
### All
|
|
61
|
+
### 6. All Checks (RECOMMENDED)
|
|
35
62
|
|
|
36
63
|
```bash
|
|
37
64
|
bun run typecheck && bun run lint && bun run test && bun run test:e2e && bun run build
|
|
38
65
|
```
|
|
39
66
|
|
|
67
|
+
---
|
|
68
|
+
|
|
40
69
|
## Execution Flow
|
|
41
70
|
|
|
42
71
|
```
|
|
43
|
-
TYPECHECK →
|
|
44
|
-
|
|
45
|
-
|
|
72
|
+
1. TYPECHECK → If fail: STOP and list errors
|
|
73
|
+
↓
|
|
74
|
+
2. LINT → If fail: STOP and list errors
|
|
75
|
+
↓
|
|
76
|
+
3. UNIT TESTS → If fail: STOP and list failures
|
|
77
|
+
↓
|
|
78
|
+
4. E2E TESTS → If fail: STOP and list failures
|
|
79
|
+
↓
|
|
80
|
+
5. BUILD → If fail: STOP and list errors
|
|
81
|
+
↓
|
|
82
|
+
RESULT: ✅ APPROVED or ❌ REJECTED
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Common TypeScript Errors
|
|
88
|
+
|
|
89
|
+
### Type 'X' is not assignable to type 'Y'
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
// ERROR
|
|
93
|
+
const value: string = 123;
|
|
94
|
+
|
|
95
|
+
// FIX
|
|
96
|
+
const value: number = 123;
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Object is possibly 'undefined'
|
|
100
|
+
|
|
101
|
+
```typescript
|
|
102
|
+
// ERROR
|
|
103
|
+
const name = user.name.toUpperCase();
|
|
104
|
+
|
|
105
|
+
// FIX
|
|
106
|
+
const name = user?.name?.toUpperCase() ?? '';
|
|
46
107
|
```
|
|
47
108
|
|
|
48
|
-
|
|
109
|
+
### Property 'X' does not exist on type 'Y'
|
|
49
110
|
|
|
50
|
-
### TypeScript: Object possibly undefined
|
|
51
111
|
```typescript
|
|
52
|
-
//
|
|
53
|
-
const
|
|
112
|
+
// ERROR
|
|
113
|
+
const age = user.age; // age doesn't exist
|
|
114
|
+
|
|
115
|
+
// FIX
|
|
116
|
+
interface User {
|
|
117
|
+
name: string;
|
|
118
|
+
age?: number;
|
|
119
|
+
}
|
|
54
120
|
```
|
|
55
121
|
|
|
56
|
-
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Common ESLint Errors
|
|
125
|
+
|
|
126
|
+
### @typescript-eslint/no-explicit-any
|
|
127
|
+
|
|
57
128
|
```typescript
|
|
58
|
-
//
|
|
129
|
+
// ERROR
|
|
130
|
+
function parse(data: any) {}
|
|
131
|
+
|
|
132
|
+
// FIX
|
|
59
133
|
function parse(data: unknown) {}
|
|
60
134
|
```
|
|
61
135
|
|
|
62
|
-
|
|
136
|
+
### @typescript-eslint/no-unused-vars
|
|
137
|
+
|
|
138
|
+
```typescript
|
|
139
|
+
// ERROR
|
|
140
|
+
const unused = 'value';
|
|
141
|
+
|
|
142
|
+
// FIX - remove or prefix with _
|
|
143
|
+
const _unused = 'value';
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### react-hooks/exhaustive-deps
|
|
147
|
+
|
|
148
|
+
```typescript
|
|
149
|
+
// ERROR
|
|
150
|
+
useEffect(() => {
|
|
151
|
+
fetchData(userId);
|
|
152
|
+
}, []); // missing userId
|
|
153
|
+
|
|
154
|
+
// FIX
|
|
155
|
+
useEffect(() => {
|
|
156
|
+
fetchData(userId);
|
|
157
|
+
}, [userId]);
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Output Format
|
|
163
|
+
|
|
164
|
+
### Approved
|
|
165
|
+
|
|
166
|
+
```markdown
|
|
167
|
+
## QUALITY GATE - APPROVED
|
|
168
|
+
|
|
169
|
+
### Checks Executed
|
|
170
|
+
|
|
171
|
+
| Check | Status | Time |
|
|
172
|
+
| ---------- | ------------- | ----- |
|
|
173
|
+
| TypeScript | ✅ Pass | 3.2s |
|
|
174
|
+
| ESLint | ✅ Pass | 5.1s |
|
|
175
|
+
| Unit Tests | ✅ 42/42 Pass | 8.3s |
|
|
176
|
+
| E2E Tests | ✅ 15/15 Pass | 45.2s |
|
|
177
|
+
| Build | ✅ Pass | 32.1s |
|
|
178
|
+
|
|
179
|
+
**STATUS: APPROVED** - Ready to commit
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### Rejected
|
|
183
|
+
|
|
184
|
+
```markdown
|
|
185
|
+
## QUALITY GATE - REJECTED
|
|
186
|
+
|
|
187
|
+
### Checks Executed
|
|
188
|
+
|
|
189
|
+
| Check | Status |
|
|
190
|
+
| ---------- | ----------- |
|
|
191
|
+
| TypeScript | ❌ 3 errors |
|
|
192
|
+
|
|
193
|
+
### TypeScript Errors
|
|
194
|
+
|
|
195
|
+
#### Error 1: server/routers/example.ts:45
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Type 'string | undefined' is not assignable to type 'string'.
|
|
199
|
+
|
|
200
|
+
````
|
|
201
|
+
|
|
202
|
+
**Suggested fix:**
|
|
203
|
+
```typescript
|
|
204
|
+
const name: string = input.name ?? "";
|
|
205
|
+
````
|
|
206
|
+
|
|
207
|
+
**STATUS: REJECTED** - Fix 3 errors before commit
|
|
208
|
+
|
|
209
|
+
````
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## Quick Checks
|
|
214
|
+
|
|
215
|
+
### Fast Check (typecheck + lint only)
|
|
216
|
+
```bash
|
|
217
|
+
bun run typecheck && bun run lint
|
|
218
|
+
````
|
|
219
|
+
|
|
220
|
+
### Full Check (everything)
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
bun run typecheck && bun run lint && bun run test && bun run test:e2e && bun run build
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### Modified Files Only
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
git diff --name-only | grep -E "\.(ts|tsx)$" | xargs bunx eslint
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
---
|
|
63
233
|
|
|
64
|
-
|
|
65
|
-
|
|
234
|
+
## Pre-Commit Checklist
|
|
235
|
+
|
|
236
|
+
- [ ] `bun run typecheck` passes?
|
|
237
|
+
- [ ] `bun run lint` passes?
|
|
238
|
+
- [ ] `bun run test` passes?
|
|
239
|
+
- [ ] `bun run test:e2e` passes?
|
|
240
|
+
- [ ] `bun run build` passes?
|
|
241
|
+
- [ ] No `any` in code?
|
|
242
|
+
- [ ] No unused variables?
|
|
243
|
+
- [ ] No debug console.log?
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## Scripts (package.json)
|
|
248
|
+
|
|
249
|
+
```json
|
|
250
|
+
{
|
|
251
|
+
"scripts": {
|
|
252
|
+
"typecheck": "tsc --noEmit",
|
|
253
|
+
"lint": "eslint . --ext .ts,.tsx",
|
|
254
|
+
"lint:fix": "eslint . --ext .ts,.tsx --fix",
|
|
255
|
+
"test": "vitest run",
|
|
256
|
+
"test:watch": "vitest",
|
|
257
|
+
"test:e2e": "playwright test",
|
|
258
|
+
"test:e2e:ui": "playwright test --ui",
|
|
259
|
+
"test:all": "bun run typecheck && bun run lint && bun run test && bun run test:e2e",
|
|
260
|
+
"build": "next build"
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
## Critical Rules
|
|
268
|
+
|
|
269
|
+
1. **NEVER commit with errors** - All checks must pass
|
|
270
|
+
2. **RUN IN ORDER** - typecheck → lint → test → e2e → build
|
|
271
|
+
3. **FIX IMMEDIATELY** - Errors cannot accumulate
|
|
272
|
+
4. **DON'T USE --force** - Solve problems, don't ignore
|
|
273
|
+
|
|
274
|
+
---
|
|
66
275
|
|
|
67
|
-
##
|
|
276
|
+
## Version
|
|
68
277
|
|
|
69
|
-
|
|
70
|
-
2. **Run in order** - stop at first failure
|
|
71
|
-
3. **Don't use --force** - solve problems properly
|
|
278
|
+
- **v2.0.0** - Generic template
|