omgkit 2.1.1 → 2.2.0
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/plugin/skills/SKILL_STANDARDS.md +743 -0
- package/plugin/skills/databases/mongodb/SKILL.md +797 -28
- package/plugin/skills/databases/prisma/SKILL.md +776 -30
- package/plugin/skills/databases/redis/SKILL.md +885 -25
- package/plugin/skills/devops/aws/SKILL.md +686 -28
- package/plugin/skills/devops/github-actions/SKILL.md +684 -29
- package/plugin/skills/devops/kubernetes/SKILL.md +621 -24
- package/plugin/skills/frameworks/django/SKILL.md +920 -20
- package/plugin/skills/frameworks/express/SKILL.md +1361 -35
- package/plugin/skills/frameworks/fastapi/SKILL.md +1260 -33
- package/plugin/skills/frameworks/laravel/SKILL.md +1244 -31
- package/plugin/skills/frameworks/nestjs/SKILL.md +1005 -26
- package/plugin/skills/frameworks/rails/SKILL.md +594 -28
- package/plugin/skills/frameworks/spring/SKILL.md +528 -35
- package/plugin/skills/frameworks/vue/SKILL.md +1296 -27
- package/plugin/skills/frontend/accessibility/SKILL.md +1108 -34
- package/plugin/skills/frontend/frontend-design/SKILL.md +1304 -26
- package/plugin/skills/frontend/responsive/SKILL.md +847 -21
- package/plugin/skills/frontend/shadcn-ui/SKILL.md +976 -38
- package/plugin/skills/frontend/tailwindcss/SKILL.md +831 -35
- package/plugin/skills/frontend/threejs/SKILL.md +1298 -29
- package/plugin/skills/languages/javascript/SKILL.md +935 -31
- package/plugin/skills/methodology/brainstorming/SKILL.md +597 -23
- package/plugin/skills/methodology/defense-in-depth/SKILL.md +832 -34
- package/plugin/skills/methodology/dispatching-parallel-agents/SKILL.md +665 -31
- package/plugin/skills/methodology/executing-plans/SKILL.md +556 -24
- package/plugin/skills/methodology/finishing-development-branch/SKILL.md +595 -25
- package/plugin/skills/methodology/problem-solving/SKILL.md +429 -61
- package/plugin/skills/methodology/receiving-code-review/SKILL.md +536 -24
- package/plugin/skills/methodology/requesting-code-review/SKILL.md +632 -21
- package/plugin/skills/methodology/root-cause-tracing/SKILL.md +641 -30
- package/plugin/skills/methodology/sequential-thinking/SKILL.md +262 -3
- package/plugin/skills/methodology/systematic-debugging/SKILL.md +571 -32
- package/plugin/skills/methodology/test-driven-development/SKILL.md +779 -24
- package/plugin/skills/methodology/testing-anti-patterns/SKILL.md +691 -29
- package/plugin/skills/methodology/token-optimization/SKILL.md +598 -29
- package/plugin/skills/methodology/verification-before-completion/SKILL.md +543 -22
- package/plugin/skills/methodology/writing-plans/SKILL.md +590 -18
- package/plugin/skills/omega/omega-architecture/SKILL.md +838 -39
- package/plugin/skills/omega/omega-coding/SKILL.md +636 -39
- package/plugin/skills/omega/omega-sprint/SKILL.md +855 -48
- package/plugin/skills/omega/omega-testing/SKILL.md +940 -41
- package/plugin/skills/omega/omega-thinking/SKILL.md +703 -50
- package/plugin/skills/security/better-auth/SKILL.md +1065 -28
- package/plugin/skills/security/oauth/SKILL.md +968 -31
- package/plugin/skills/security/owasp/SKILL.md +894 -33
- package/plugin/skills/testing/playwright/SKILL.md +764 -38
- package/plugin/skills/testing/pytest/SKILL.md +873 -36
- package/plugin/skills/testing/vitest/SKILL.md +980 -35
|
@@ -1,32 +1,553 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: verification-before-completion
|
|
3
|
-
description: Evidence-based verification
|
|
3
|
+
description: Evidence-based verification with comprehensive checklists, quality gates, and proof-of-work validation
|
|
4
|
+
category: methodology
|
|
5
|
+
triggers:
|
|
6
|
+
- verification
|
|
7
|
+
- before completion
|
|
8
|
+
- quality check
|
|
9
|
+
- validation
|
|
10
|
+
- done criteria
|
|
11
|
+
- acceptance testing
|
|
12
|
+
- sign off
|
|
4
13
|
---
|
|
5
14
|
|
|
6
|
-
# Verification Before Completion
|
|
15
|
+
# Verification Before Completion
|
|
7
16
|
|
|
8
|
-
|
|
9
|
-
Before marking complete:
|
|
17
|
+
Master **evidence-based verification** to ensure work meets quality standards before marking complete. This skill provides comprehensive checklists, automated validation, and proof-of-work documentation.
|
|
10
18
|
|
|
11
|
-
|
|
12
|
-
- [ ] **Manual test** - Verified manually
|
|
13
|
-
- [ ] **Edge cases** - Considered and handled
|
|
14
|
-
- [ ] **Errors** - Error handling works
|
|
15
|
-
- [ ] **Types** - No type errors
|
|
16
|
-
- [ ] **Lint** - No lint errors
|
|
19
|
+
## Purpose
|
|
17
20
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
Ensure quality through systematic verification:
|
|
22
|
+
|
|
23
|
+
- Validate all acceptance criteria are met
|
|
24
|
+
- Prove functionality through evidence
|
|
25
|
+
- Catch issues before they reach production
|
|
26
|
+
- Document verification for audit trails
|
|
27
|
+
- Build confidence in releases
|
|
28
|
+
- Reduce rework and bug reports
|
|
29
|
+
- Enable faster code reviews
|
|
30
|
+
|
|
31
|
+
## Features
|
|
32
|
+
|
|
33
|
+
### 1. Verification Checklist Framework
|
|
34
|
+
|
|
35
|
+
```markdown
|
|
36
|
+
## Universal Verification Checklist
|
|
37
|
+
|
|
38
|
+
### Functional Verification
|
|
39
|
+
- [ ] **Acceptance criteria** - All criteria from ticket met
|
|
40
|
+
- [ ] **Happy path** - Primary use case works correctly
|
|
41
|
+
- [ ] **Edge cases** - Boundary conditions handled
|
|
42
|
+
- [ ] **Error handling** - Errors caught and displayed properly
|
|
43
|
+
- [ ] **Validation** - Input validation works as expected
|
|
44
|
+
|
|
45
|
+
### Technical Verification
|
|
46
|
+
- [ ] **Tests pass** - All unit, integration, and E2E tests green
|
|
47
|
+
- [ ] **Coverage** - Code coverage meets threshold (80%+)
|
|
48
|
+
- [ ] **Type safety** - No TypeScript/type errors
|
|
49
|
+
- [ ] **Lint clean** - No linting errors or warnings
|
|
50
|
+
- [ ] **Build succeeds** - Production build completes
|
|
51
|
+
|
|
52
|
+
### Security Verification
|
|
53
|
+
- [ ] **No secrets exposed** - No hardcoded credentials
|
|
54
|
+
- [ ] **Input sanitized** - User input properly escaped
|
|
55
|
+
- [ ] **Auth/authz** - Permissions checked correctly
|
|
56
|
+
- [ ] **HTTPS only** - No insecure connections
|
|
57
|
+
- [ ] **Dependency audit** - No critical vulnerabilities
|
|
58
|
+
|
|
59
|
+
### Performance Verification
|
|
60
|
+
- [ ] **Response time** - Within acceptable limits
|
|
61
|
+
- [ ] **No N+1 queries** - Database queries optimized
|
|
62
|
+
- [ ] **Memory usage** - No memory leaks detected
|
|
63
|
+
- [ ] **Bundle size** - No significant increase
|
|
64
|
+
|
|
65
|
+
### Documentation Verification
|
|
66
|
+
- [ ] **Code comments** - Complex logic explained
|
|
67
|
+
- [ ] **API docs** - Endpoints documented
|
|
68
|
+
- [ ] **README updated** - Setup instructions current
|
|
69
|
+
- [ ] **Changelog** - Changes documented
|
|
70
|
+
|
|
71
|
+
### Accessibility Verification
|
|
72
|
+
- [ ] **Keyboard navigation** - All actions keyboard accessible
|
|
73
|
+
- [ ] **Screen reader** - Labels and ARIA attributes correct
|
|
74
|
+
- [ ] **Color contrast** - Meets WCAG requirements
|
|
75
|
+
- [ ] **Focus indicators** - Visible focus states
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### 2. Evidence Collection
|
|
79
|
+
|
|
80
|
+
```markdown
|
|
81
|
+
## Evidence Documentation Template
|
|
82
|
+
|
|
83
|
+
### Change Summary
|
|
84
|
+
**Ticket:** [TICKET-ID]
|
|
85
|
+
**Title:** [Brief description]
|
|
86
|
+
**Author:** [Name]
|
|
87
|
+
**Date:** [Date]
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
### Test Evidence
|
|
92
|
+
|
|
93
|
+
#### Unit Tests
|
|
94
|
+
```bash
|
|
95
|
+
$ npm test
|
|
96
|
+
|
|
97
|
+
PASS src/services/UserService.test.ts
|
|
98
|
+
PASS src/components/UserProfile.test.tsx
|
|
99
|
+
|
|
100
|
+
Test Suites: 15 passed, 15 total
|
|
101
|
+
Tests: 87 passed, 87 total
|
|
102
|
+
Snapshots: 5 passed, 5 total
|
|
103
|
+
Time: 12.45s
|
|
104
|
+
|
|
105
|
+
Coverage: 85.2% (target: 80%)
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
#### Integration Tests
|
|
109
|
+
```bash
|
|
110
|
+
$ npm run test:integration
|
|
111
|
+
|
|
112
|
+
PASS tests/api/users.test.ts
|
|
113
|
+
✓ GET /users returns user list (125ms)
|
|
114
|
+
✓ POST /users creates new user (89ms)
|
|
115
|
+
✓ PUT /users/:id updates user (76ms)
|
|
116
|
+
✓ DELETE /users/:id removes user (45ms)
|
|
117
|
+
|
|
118
|
+
All integration tests passed.
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
#### E2E Tests
|
|
122
|
+
```bash
|
|
123
|
+
$ npm run test:e2e
|
|
124
|
+
|
|
125
|
+
Running: cypress/e2e/user-management.cy.ts
|
|
126
|
+
|
|
127
|
+
User Management
|
|
128
|
+
✓ can create new user (3.2s)
|
|
129
|
+
✓ can update user profile (2.8s)
|
|
130
|
+
✓ can delete user (1.5s)
|
|
131
|
+
|
|
132
|
+
3 passing (7.5s)
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
### Manual Verification
|
|
138
|
+
|
|
139
|
+
#### Happy Path
|
|
140
|
+
| Step | Action | Expected | Actual | Status |
|
|
141
|
+
|------|--------|----------|--------|--------|
|
|
142
|
+
| 1 | Navigate to /users | User list displayed | List shows 10 users | ✅ |
|
|
143
|
+
| 2 | Click "Add User" | Form appears | Modal opens | ✅ |
|
|
144
|
+
| 3 | Fill form and submit | User created | Success message shown | ✅ |
|
|
145
|
+
| 4 | Verify in list | New user appears | User at top of list | ✅ |
|
|
146
|
+
|
|
147
|
+
#### Edge Cases
|
|
148
|
+
| Case | Input | Expected | Actual | Status |
|
|
149
|
+
|------|-------|----------|--------|--------|
|
|
150
|
+
| Empty name | "" | Error: Name required | Error displayed | ✅ |
|
|
151
|
+
| Long name | 256 chars | Truncate or error | Error at 100 chars | ✅ |
|
|
152
|
+
| Duplicate email | existing@test.com | Error: Email taken | Error displayed | ✅ |
|
|
153
|
+
| Special chars | O'Brien | Accepted | Works correctly | ✅ |
|
|
154
|
+
|
|
155
|
+
#### Error Cases
|
|
156
|
+
| Case | Action | Expected | Actual | Status |
|
|
157
|
+
|------|--------|----------|--------|--------|
|
|
158
|
+
| Network failure | Disconnect network | Error message | "Connection lost" shown | ✅ |
|
|
159
|
+
| 500 error | Force server error | Graceful handling | Error boundary caught | ✅ |
|
|
160
|
+
| Timeout | Slow response | Loading indicator | Spinner + timeout msg | ✅ |
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
### Screenshots/Recordings
|
|
165
|
+
|
|
166
|
+
#### Feature Demo
|
|
167
|
+

|
|
168
|
+
|
|
169
|
+
#### Mobile View
|
|
170
|
+

|
|
171
|
+
|
|
172
|
+
#### Error States
|
|
173
|
+

|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
### Build Verification
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
$ npm run build
|
|
181
|
+
|
|
182
|
+
> myapp@1.0.0 build
|
|
183
|
+
> next build
|
|
184
|
+
|
|
185
|
+
Creating an optimized production build...
|
|
186
|
+
Compiled successfully.
|
|
187
|
+
|
|
188
|
+
Route (app) Size First Load JS
|
|
189
|
+
─ ○ / 5.2 kB 89.5 kB
|
|
190
|
+
─ ○ /users 3.1 kB 87.4 kB
|
|
191
|
+
─ ○ /users/[id] 2.8 kB 87.1 kB
|
|
192
|
+
|
|
193
|
+
○ (Static) prerendered as static content
|
|
194
|
+
|
|
195
|
+
Build completed successfully.
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
### Performance Metrics
|
|
201
|
+
|
|
202
|
+
| Metric | Baseline | Current | Change | Status |
|
|
203
|
+
|--------|----------|---------|--------|--------|
|
|
204
|
+
| Bundle size | 245 KB | 248 KB | +3 KB | ✅ |
|
|
205
|
+
| First paint | 1.2s | 1.1s | -100ms | ✅ |
|
|
206
|
+
| API response | 150ms | 145ms | -5ms | ✅ |
|
|
207
|
+
| Lighthouse | 92 | 94 | +2 | ✅ |
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
### Verification Sign-off
|
|
212
|
+
- [x] All tests pass
|
|
213
|
+
- [x] Manual testing complete
|
|
214
|
+
- [x] No regressions found
|
|
215
|
+
- [x] Ready for review
|
|
216
|
+
|
|
217
|
+
**Verified by:** [Name]
|
|
218
|
+
**Date:** [Date]
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### 3. Automated Verification Pipeline
|
|
222
|
+
|
|
223
|
+
```typescript
|
|
224
|
+
// scripts/verify.ts
|
|
225
|
+
import { execSync } from 'child_process';
|
|
226
|
+
import chalk from 'chalk';
|
|
227
|
+
|
|
228
|
+
interface VerificationStep {
|
|
229
|
+
name: string;
|
|
230
|
+
command: string;
|
|
231
|
+
required: boolean;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
const verificationSteps: VerificationStep[] = [
|
|
235
|
+
{ name: 'TypeScript Check', command: 'npm run typecheck', required: true },
|
|
236
|
+
{ name: 'Lint Check', command: 'npm run lint', required: true },
|
|
237
|
+
{ name: 'Unit Tests', command: 'npm test', required: true },
|
|
238
|
+
{ name: 'Integration Tests', command: 'npm run test:integration', required: true },
|
|
239
|
+
{ name: 'Build', command: 'npm run build', required: true },
|
|
240
|
+
{ name: 'Bundle Analysis', command: 'npm run analyze', required: false },
|
|
241
|
+
{ name: 'Security Audit', command: 'npm audit --audit-level=high', required: true },
|
|
242
|
+
{ name: 'E2E Tests', command: 'npm run test:e2e', required: false },
|
|
243
|
+
];
|
|
244
|
+
|
|
245
|
+
async function runVerification(): Promise<void> {
|
|
246
|
+
console.log(chalk.blue('\n🔍 Starting Verification Pipeline\n'));
|
|
247
|
+
|
|
248
|
+
const results: { step: string; success: boolean; time: number }[] = [];
|
|
249
|
+
let allPassed = true;
|
|
250
|
+
|
|
251
|
+
for (const step of verificationSteps) {
|
|
252
|
+
const startTime = Date.now();
|
|
253
|
+
process.stdout.write(` ${step.name}... `);
|
|
254
|
+
|
|
255
|
+
try {
|
|
256
|
+
execSync(step.command, { stdio: 'pipe' });
|
|
257
|
+
const time = Date.now() - startTime;
|
|
258
|
+
console.log(chalk.green(`✓ (${time}ms)`));
|
|
259
|
+
results.push({ step: step.name, success: true, time });
|
|
260
|
+
} catch (error) {
|
|
261
|
+
const time = Date.now() - startTime;
|
|
262
|
+
console.log(chalk.red(`✗ (${time}ms)`));
|
|
263
|
+
results.push({ step: step.name, success: false, time });
|
|
264
|
+
|
|
265
|
+
if (step.required) {
|
|
266
|
+
allPassed = false;
|
|
267
|
+
console.log(chalk.red(`\n ❌ ${step.name} failed (required)`));
|
|
268
|
+
console.log(chalk.gray(` Run "${step.command}" for details\n`));
|
|
269
|
+
} else {
|
|
270
|
+
console.log(chalk.yellow(` ⚠ ${step.name} failed (optional)`));
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
// Summary
|
|
276
|
+
console.log(chalk.blue('\n📊 Verification Summary\n'));
|
|
277
|
+
console.log(' Step Status Time');
|
|
278
|
+
console.log(' ' + '─'.repeat(45));
|
|
279
|
+
|
|
280
|
+
for (const result of results) {
|
|
281
|
+
const status = result.success ? chalk.green('PASS') : chalk.red('FAIL');
|
|
282
|
+
const time = `${result.time}ms`.padStart(8);
|
|
283
|
+
console.log(` ${result.step.padEnd(24)} ${status} ${time}`);
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
console.log(' ' + '─'.repeat(45));
|
|
287
|
+
const totalTime = results.reduce((sum, r) => sum + r.time, 0);
|
|
288
|
+
console.log(` Total time: ${(totalTime / 1000).toFixed(2)}s\n`);
|
|
289
|
+
|
|
290
|
+
if (allPassed) {
|
|
291
|
+
console.log(chalk.green('✅ All required verifications passed!\n'));
|
|
292
|
+
process.exit(0);
|
|
293
|
+
} else {
|
|
294
|
+
console.log(chalk.red('❌ Some required verifications failed.\n'));
|
|
295
|
+
process.exit(1);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
runVerification();
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### 4. Type-Specific Verification
|
|
303
|
+
|
|
304
|
+
```markdown
|
|
305
|
+
## Feature Verification Checklist
|
|
306
|
+
|
|
307
|
+
### UI Component
|
|
308
|
+
- [ ] Renders correctly in all supported browsers
|
|
309
|
+
- [ ] Responsive on mobile, tablet, desktop
|
|
310
|
+
- [ ] Loading states implemented
|
|
311
|
+
- [ ] Error states implemented
|
|
312
|
+
- [ ] Empty states implemented
|
|
313
|
+
- [ ] Keyboard accessible
|
|
314
|
+
- [ ] Screen reader compatible
|
|
315
|
+
- [ ] Matches design specs
|
|
316
|
+
- [ ] Animations smooth (60fps)
|
|
317
|
+
- [ ] No console errors
|
|
318
|
+
|
|
319
|
+
### API Endpoint
|
|
320
|
+
- [ ] Returns correct status codes
|
|
321
|
+
- [ ] Response format matches schema
|
|
322
|
+
- [ ] Handles malformed requests
|
|
323
|
+
- [ ] Rate limiting works
|
|
324
|
+
- [ ] Authentication required
|
|
325
|
+
- [ ] Authorization enforced
|
|
326
|
+
- [ ] Input validated
|
|
327
|
+
- [ ] SQL injection protected
|
|
328
|
+
- [ ] Response time acceptable
|
|
329
|
+
- [ ] Documented in OpenAPI
|
|
330
|
+
|
|
331
|
+
### Database Migration
|
|
332
|
+
- [ ] Migration runs successfully
|
|
333
|
+
- [ ] Rollback works correctly
|
|
334
|
+
- [ ] No data loss
|
|
335
|
+
- [ ] Indexes added for queries
|
|
336
|
+
- [ ] Foreign keys correct
|
|
337
|
+
- [ ] Default values set
|
|
338
|
+
- [ ] Tested on production-like data
|
|
339
|
+
- [ ] Performance impact assessed
|
|
340
|
+
|
|
341
|
+
### Bug Fix
|
|
342
|
+
- [ ] Root cause identified
|
|
343
|
+
- [ ] Fix addresses root cause (not symptom)
|
|
344
|
+
- [ ] Regression test added
|
|
345
|
+
- [ ] Related code checked for similar issues
|
|
346
|
+
- [ ] No new bugs introduced
|
|
347
|
+
- [ ] Original reporter can verify
|
|
348
|
+
- [ ] Documentation updated if needed
|
|
349
|
+
|
|
350
|
+
### Performance Optimization
|
|
351
|
+
- [ ] Baseline metrics documented
|
|
352
|
+
- [ ] Improvement measured
|
|
353
|
+
- [ ] No regressions in other areas
|
|
354
|
+
- [ ] Works under load
|
|
355
|
+
- [ ] Memory usage stable
|
|
356
|
+
- [ ] CPU usage reasonable
|
|
357
|
+
- [ ] Tested with realistic data volume
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
### 5. Verification Workflows
|
|
361
|
+
|
|
362
|
+
```yaml
|
|
363
|
+
# .github/workflows/verify.yml
|
|
364
|
+
name: Verification Pipeline
|
|
365
|
+
|
|
366
|
+
on:
|
|
367
|
+
pull_request:
|
|
368
|
+
branches: [main, develop]
|
|
369
|
+
|
|
370
|
+
jobs:
|
|
371
|
+
verify:
|
|
372
|
+
runs-on: ubuntu-latest
|
|
373
|
+
|
|
374
|
+
steps:
|
|
375
|
+
- uses: actions/checkout@v4
|
|
376
|
+
|
|
377
|
+
- name: Setup Node.js
|
|
378
|
+
uses: actions/setup-node@v4
|
|
379
|
+
with:
|
|
380
|
+
node-version: '20'
|
|
381
|
+
cache: 'npm'
|
|
382
|
+
|
|
383
|
+
- name: Install dependencies
|
|
384
|
+
run: npm ci
|
|
385
|
+
|
|
386
|
+
- name: TypeScript Check
|
|
387
|
+
run: npm run typecheck
|
|
388
|
+
|
|
389
|
+
- name: Lint Check
|
|
390
|
+
run: npm run lint
|
|
391
|
+
|
|
392
|
+
- name: Unit Tests
|
|
393
|
+
run: npm test -- --coverage
|
|
394
|
+
|
|
395
|
+
- name: Upload Coverage
|
|
396
|
+
uses: codecov/codecov-action@v3
|
|
397
|
+
with:
|
|
398
|
+
file: ./coverage/lcov.info
|
|
399
|
+
fail_ci_if_error: true
|
|
400
|
+
minimum_coverage: 80
|
|
401
|
+
|
|
402
|
+
- name: Build
|
|
403
|
+
run: npm run build
|
|
404
|
+
|
|
405
|
+
- name: Bundle Size Check
|
|
406
|
+
uses: preactjs/compressed-size-action@v2
|
|
407
|
+
with:
|
|
408
|
+
pattern: '.next/**/*.js'
|
|
409
|
+
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
410
|
+
|
|
411
|
+
- name: Security Audit
|
|
412
|
+
run: npm audit --audit-level=high
|
|
413
|
+
|
|
414
|
+
- name: Integration Tests
|
|
415
|
+
run: npm run test:integration
|
|
416
|
+
|
|
417
|
+
- name: E2E Tests
|
|
418
|
+
run: npm run test:e2e
|
|
419
|
+
|
|
420
|
+
- name: Lighthouse CI
|
|
421
|
+
uses: treosh/lighthouse-ci-action@v10
|
|
422
|
+
with:
|
|
423
|
+
configPath: './lighthouserc.json'
|
|
424
|
+
uploadArtifacts: true
|
|
425
|
+
|
|
426
|
+
verification-summary:
|
|
427
|
+
needs: verify
|
|
428
|
+
runs-on: ubuntu-latest
|
|
429
|
+
if: always()
|
|
430
|
+
|
|
431
|
+
steps:
|
|
432
|
+
- name: Create Summary
|
|
433
|
+
run: |
|
|
434
|
+
echo "## Verification Results" >> $GITHUB_STEP_SUMMARY
|
|
435
|
+
echo "" >> $GITHUB_STEP_SUMMARY
|
|
436
|
+
if [ "${{ needs.verify.result }}" == "success" ]; then
|
|
437
|
+
echo "✅ All verifications passed" >> $GITHUB_STEP_SUMMARY
|
|
438
|
+
else
|
|
439
|
+
echo "❌ Some verifications failed" >> $GITHUB_STEP_SUMMARY
|
|
440
|
+
fi
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
### 6. Pre-Commit Verification
|
|
444
|
+
|
|
445
|
+
```typescript
|
|
446
|
+
// .husky/pre-commit
|
|
447
|
+
#!/bin/sh
|
|
448
|
+
. "$(dirname "$0")/_/husky.sh"
|
|
449
|
+
|
|
450
|
+
echo "🔍 Running pre-commit verification..."
|
|
451
|
+
|
|
452
|
+
# Stage-only verification
|
|
453
|
+
npx lint-staged
|
|
454
|
+
|
|
455
|
+
# Quick verification
|
|
456
|
+
npm run typecheck
|
|
457
|
+
npm run test -- --bail --findRelatedTests $(git diff --cached --name-only)
|
|
458
|
+
|
|
459
|
+
echo "✅ Pre-commit verification passed"
|
|
460
|
+
```
|
|
461
|
+
|
|
462
|
+
```json
|
|
463
|
+
// lint-staged.config.js
|
|
464
|
+
module.exports = {
|
|
465
|
+
'*.{ts,tsx}': [
|
|
466
|
+
'eslint --fix',
|
|
467
|
+
'prettier --write',
|
|
468
|
+
() => 'tsc --noEmit',
|
|
469
|
+
],
|
|
470
|
+
'*.{css,scss}': [
|
|
471
|
+
'stylelint --fix',
|
|
472
|
+
'prettier --write',
|
|
473
|
+
],
|
|
474
|
+
'*.{json,md}': [
|
|
475
|
+
'prettier --write',
|
|
476
|
+
],
|
|
477
|
+
};
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
## Use Cases
|
|
481
|
+
|
|
482
|
+
### Pull Request Verification
|
|
24
483
|
|
|
25
|
-
## Evidence
|
|
26
|
-
Document verification:
|
|
27
484
|
```markdown
|
|
28
|
-
## Verification
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
485
|
+
## PR Verification Report
|
|
486
|
+
|
|
487
|
+
### PR: #1234 - Add user profile editing
|
|
488
|
+
|
|
489
|
+
#### Automated Checks
|
|
490
|
+
| Check | Status | Details |
|
|
491
|
+
|-------|--------|---------|
|
|
492
|
+
| TypeScript | ✅ | No errors |
|
|
493
|
+
| ESLint | ✅ | No warnings |
|
|
494
|
+
| Unit Tests | ✅ | 45/45 passed |
|
|
495
|
+
| Coverage | ✅ | 87.3% (≥80%) |
|
|
496
|
+
| Build | ✅ | 45s |
|
|
497
|
+
| Bundle Size | ✅ | +2.1 KB |
|
|
498
|
+
| Security | ✅ | No vulnerabilities |
|
|
499
|
+
| E2E | ✅ | 12/12 passed |
|
|
500
|
+
|
|
501
|
+
#### Manual Verification
|
|
502
|
+
- [x] Tested profile edit flow
|
|
503
|
+
- [x] Tested validation errors
|
|
504
|
+
- [x] Tested mobile view
|
|
505
|
+
- [x] Tested with slow network
|
|
506
|
+
- [x] Tested accessibility
|
|
507
|
+
|
|
508
|
+
#### Screenshots
|
|
509
|
+
[Profile Edit Flow](./screenshots/profile-edit.png)
|
|
510
|
+
[Mobile View](./screenshots/mobile.png)
|
|
511
|
+
|
|
512
|
+
#### Verification Notes
|
|
513
|
+
- Tested in Chrome, Firefox, Safari
|
|
514
|
+
- Tested on iOS and Android
|
|
515
|
+
- No issues found
|
|
516
|
+
|
|
517
|
+
**Ready for review: YES**
|
|
32
518
|
```
|
|
519
|
+
|
|
520
|
+
## Best Practices
|
|
521
|
+
|
|
522
|
+
### Do's
|
|
523
|
+
|
|
524
|
+
- Run all tests before marking complete
|
|
525
|
+
- Document evidence of verification
|
|
526
|
+
- Test both happy and unhappy paths
|
|
527
|
+
- Verify on multiple browsers/devices
|
|
528
|
+
- Check performance impact
|
|
529
|
+
- Review your own code first
|
|
530
|
+
- Use automated verification where possible
|
|
531
|
+
- Include screenshots for UI changes
|
|
532
|
+
- Test with production-like data
|
|
533
|
+
- Verify accessibility requirements
|
|
534
|
+
|
|
535
|
+
### Don'ts
|
|
536
|
+
|
|
537
|
+
- Don't skip verification steps
|
|
538
|
+
- Don't mark complete without evidence
|
|
539
|
+
- Don't assume tests are enough
|
|
540
|
+
- Don't ignore edge cases
|
|
541
|
+
- Don't skip security checks
|
|
542
|
+
- Don't merge without green CI
|
|
543
|
+
- Don't forget mobile testing
|
|
544
|
+
- Don't ignore performance regressions
|
|
545
|
+
- Don't skip documentation updates
|
|
546
|
+
- Don't rush verification
|
|
547
|
+
|
|
548
|
+
## References
|
|
549
|
+
|
|
550
|
+
- [Definition of Done](https://www.agilealliance.org/glossary/definition-of-done/)
|
|
551
|
+
- [Testing Best Practices](https://testing-library.com/docs/)
|
|
552
|
+
- [CI/CD Best Practices](https://www.atlassian.com/continuous-delivery/principles)
|
|
553
|
+
- [Code Review Guidelines](https://google.github.io/eng-practices/review/)
|