omgkit 2.2.0 → 2.3.1
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 +3 -3
- package/package.json +1 -1
- package/plugin/skills/databases/database-management/SKILL.md +288 -0
- package/plugin/skills/databases/database-migration/SKILL.md +285 -0
- package/plugin/skills/databases/database-schema-design/SKILL.md +195 -0
- package/plugin/skills/databases/mongodb/SKILL.md +60 -776
- package/plugin/skills/databases/prisma/SKILL.md +53 -744
- package/plugin/skills/databases/redis/SKILL.md +53 -860
- package/plugin/skills/databases/supabase/SKILL.md +283 -0
- package/plugin/skills/devops/aws/SKILL.md +68 -672
- package/plugin/skills/devops/github-actions/SKILL.md +54 -657
- package/plugin/skills/devops/kubernetes/SKILL.md +67 -602
- package/plugin/skills/devops/performance-profiling/SKILL.md +59 -863
- package/plugin/skills/frameworks/django/SKILL.md +87 -853
- package/plugin/skills/frameworks/express/SKILL.md +95 -1301
- package/plugin/skills/frameworks/fastapi/SKILL.md +90 -1198
- package/plugin/skills/frameworks/laravel/SKILL.md +87 -1187
- package/plugin/skills/frameworks/nestjs/SKILL.md +106 -973
- package/plugin/skills/frameworks/react/SKILL.md +94 -962
- package/plugin/skills/frameworks/vue/SKILL.md +95 -1242
- package/plugin/skills/frontend/accessibility/SKILL.md +91 -1056
- package/plugin/skills/frontend/frontend-design/SKILL.md +69 -1262
- package/plugin/skills/frontend/responsive/SKILL.md +76 -799
- package/plugin/skills/frontend/shadcn-ui/SKILL.md +73 -921
- package/plugin/skills/frontend/tailwindcss/SKILL.md +60 -788
- package/plugin/skills/frontend/threejs/SKILL.md +72 -1266
- package/plugin/skills/languages/javascript/SKILL.md +106 -849
- package/plugin/skills/methodology/brainstorming/SKILL.md +70 -576
- package/plugin/skills/methodology/defense-in-depth/SKILL.md +79 -831
- package/plugin/skills/methodology/dispatching-parallel-agents/SKILL.md +81 -654
- package/plugin/skills/methodology/executing-plans/SKILL.md +86 -529
- package/plugin/skills/methodology/finishing-development-branch/SKILL.md +95 -586
- package/plugin/skills/methodology/problem-solving/SKILL.md +67 -681
- package/plugin/skills/methodology/receiving-code-review/SKILL.md +70 -533
- package/plugin/skills/methodology/requesting-code-review/SKILL.md +70 -610
- package/plugin/skills/methodology/root-cause-tracing/SKILL.md +70 -646
- package/plugin/skills/methodology/sequential-thinking/SKILL.md +70 -478
- package/plugin/skills/methodology/systematic-debugging/SKILL.md +66 -559
- package/plugin/skills/methodology/test-driven-development/SKILL.md +91 -752
- package/plugin/skills/methodology/testing-anti-patterns/SKILL.md +78 -687
- package/plugin/skills/methodology/token-optimization/SKILL.md +72 -602
- package/plugin/skills/methodology/verification-before-completion/SKILL.md +108 -529
- package/plugin/skills/methodology/writing-plans/SKILL.md +79 -566
- package/plugin/skills/omega/omega-architecture/SKILL.md +91 -752
- package/plugin/skills/omega/omega-coding/SKILL.md +161 -552
- package/plugin/skills/omega/omega-sprint/SKILL.md +132 -777
- package/plugin/skills/omega/omega-testing/SKILL.md +157 -845
- package/plugin/skills/omega/omega-thinking/SKILL.md +165 -606
- package/plugin/skills/security/better-auth/SKILL.md +46 -1034
- package/plugin/skills/security/oauth/SKILL.md +80 -934
- package/plugin/skills/security/owasp/SKILL.md +78 -862
- package/plugin/skills/testing/playwright/SKILL.md +77 -700
- package/plugin/skills/testing/pytest/SKILL.md +73 -811
- package/plugin/skills/testing/vitest/SKILL.md +60 -920
- package/plugin/skills/tools/document-processing/SKILL.md +111 -838
- package/plugin/skills/tools/image-processing/SKILL.md +126 -659
- package/plugin/skills/tools/mcp-development/SKILL.md +85 -758
- package/plugin/skills/tools/media-processing/SKILL.md +118 -735
- package/plugin/stdrules/SKILL_STANDARDS.md +490 -0
- package/plugin/skills/SKILL_STANDARDS.md +0 -743
|
@@ -1,553 +1,132 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
3
|
-
description:
|
|
4
|
-
category: methodology
|
|
5
|
-
triggers:
|
|
6
|
-
- verification
|
|
7
|
-
- before completion
|
|
8
|
-
- quality check
|
|
9
|
-
- validation
|
|
10
|
-
- done criteria
|
|
11
|
-
- acceptance testing
|
|
12
|
-
- sign off
|
|
2
|
+
name: verifying-before-completion
|
|
3
|
+
description: AI agent validates work through evidence-based verification with comprehensive checklists, automated validation, and proof-of-work documentation. Use when completing tasks, preparing for review, or ensuring quality.
|
|
13
4
|
---
|
|
14
5
|
|
|
15
|
-
#
|
|
6
|
+
# Verifying Before Completion
|
|
16
7
|
|
|
17
|
-
|
|
8
|
+
## Quick Start
|
|
18
9
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
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
|
|
10
|
+
1. **Functional** - All acceptance criteria met, happy path works, edge cases handled
|
|
11
|
+
2. **Technical** - Tests pass, coverage met, lint clean, build succeeds
|
|
12
|
+
3. **Security** - No secrets exposed, input sanitized, auth verified
|
|
13
|
+
4. **Performance** - Response time acceptable, no N+1, no memory leaks
|
|
14
|
+
5. **Documentation** - Code comments, API docs, README updated
|
|
15
|
+
6. **Evidence** - Collect screenshots, test output, metrics for proof
|
|
30
16
|
|
|
31
17
|
## Features
|
|
32
18
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
- [ ] **Edge cases** - Boundary conditions handled
|
|
42
|
-
- [ ] **Error handling** - Errors caught and displayed properly
|
|
43
|
-
- [ ] **Validation** - Input validation works as expected
|
|
19
|
+
| Feature | Description | Guide |
|
|
20
|
+
|---------|-------------|-------|
|
|
21
|
+
| Universal Checklist | Comprehensive validation | Functional, technical, security, perf, docs |
|
|
22
|
+
| Evidence Collection | Proof of verification | Test output, screenshots, metrics |
|
|
23
|
+
| Automated Pipeline | CI/CD validation | Type check, lint, test, build, audit |
|
|
24
|
+
| Type-Specific Checks | Context-aware validation | UI, API, migration, bug fix, optimization |
|
|
25
|
+
| Pre-Commit Hooks | Catch issues early | lint-staged, related tests |
|
|
26
|
+
| Sign-Off Template | Formal completion record | Verified by, date, evidence links |
|
|
44
27
|
|
|
45
|
-
|
|
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
|
|
28
|
+
## Common Patterns
|
|
51
29
|
|
|
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
30
|
```
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
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%)
|
|
31
|
+
# Universal Verification Checklist
|
|
32
|
+
FUNCTIONAL:
|
|
33
|
+
[ ] All acceptance criteria met
|
|
34
|
+
[ ] Happy path works correctly
|
|
35
|
+
[ ] Edge cases handled
|
|
36
|
+
[ ] Error handling works
|
|
37
|
+
[ ] Input validation works
|
|
38
|
+
|
|
39
|
+
TECHNICAL:
|
|
40
|
+
[ ] Tests pass (unit, integration, E2E)
|
|
41
|
+
[ ] Coverage meets threshold (80%+)
|
|
42
|
+
[ ] No TypeScript/lint errors
|
|
43
|
+
[ ] Build succeeds
|
|
44
|
+
[ ] No security vulnerabilities
|
|
45
|
+
|
|
46
|
+
DOCUMENTATION:
|
|
47
|
+
[ ] Complex logic commented
|
|
48
|
+
[ ] API documentation updated
|
|
49
|
+
[ ] README updated if needed
|
|
106
50
|
```
|
|
107
51
|
|
|
108
|
-
#### Integration Tests
|
|
109
52
|
```bash
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
53
|
+
# Automated Verification Script
|
|
54
|
+
npm run lint # Lint check
|
|
55
|
+
npm run typecheck # Type check
|
|
56
|
+
npm test # Unit tests
|
|
57
|
+
npm run build # Build verification
|
|
58
|
+
npm audit # Security audit
|
|
59
|
+
|
|
60
|
+
# Full verification
|
|
61
|
+
npm run verify # Runs all checks
|
|
119
62
|
```
|
|
120
63
|
|
|
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
64
|
```
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
|
143
|
-
|
|
144
|
-
|
|
|
145
|
-
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
|
149
|
-
|
|
150
|
-
|
|
|
151
|
-
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
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"
|
|
65
|
+
# Evidence Documentation Template
|
|
66
|
+
## Test Evidence
|
|
67
|
+
$ npm test
|
|
68
|
+
Test Suites: 15 passed
|
|
69
|
+
Tests: 87 passed
|
|
70
|
+
Coverage: 85.2%
|
|
71
|
+
|
|
72
|
+
## Manual Verification
|
|
73
|
+
| Step | Expected | Actual | Status |
|
|
74
|
+
|------|----------|--------|--------|
|
|
75
|
+
| Login | Form appears | Works | Pass |
|
|
76
|
+
| Submit | Success msg | Shows | Pass |
|
|
77
|
+
|
|
78
|
+
## Performance Metrics
|
|
79
|
+
| Metric | Baseline | Current | Status |
|
|
80
|
+
|--------|----------|---------|--------|
|
|
81
|
+
| Bundle | 245 KB | 248 KB | Pass |
|
|
82
|
+
| API | 150ms | 145ms | Pass |
|
|
83
|
+
|
|
84
|
+
## Sign-Off
|
|
85
|
+
[x] All tests pass
|
|
86
|
+
[x] Manual testing complete
|
|
87
|
+
[x] Ready for review
|
|
88
|
+
Verified by: [Name] on [Date]
|
|
460
89
|
```
|
|
461
90
|
|
|
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
91
|
```
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
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**
|
|
92
|
+
# Type-Specific Checklists
|
|
93
|
+
UI COMPONENT:
|
|
94
|
+
[ ] Renders in all browsers
|
|
95
|
+
[ ] Responsive mobile/tablet/desktop
|
|
96
|
+
[ ] Loading/error/empty states
|
|
97
|
+
[ ] Keyboard accessible
|
|
98
|
+
[ ] Matches design specs
|
|
99
|
+
|
|
100
|
+
API ENDPOINT:
|
|
101
|
+
[ ] Correct status codes
|
|
102
|
+
[ ] Response matches schema
|
|
103
|
+
[ ] Auth/authz enforced
|
|
104
|
+
[ ] Input validated
|
|
105
|
+
[ ] Documented in OpenAPI
|
|
106
|
+
|
|
107
|
+
BUG FIX:
|
|
108
|
+
[ ] Root cause identified
|
|
109
|
+
[ ] Fix addresses root cause
|
|
110
|
+
[ ] Regression test added
|
|
111
|
+
[ ] No new bugs introduced
|
|
518
112
|
```
|
|
519
113
|
|
|
520
114
|
## Best Practices
|
|
521
115
|
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
-
|
|
538
|
-
-
|
|
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/)
|
|
116
|
+
| Do | Avoid |
|
|
117
|
+
|----|-------|
|
|
118
|
+
| Run all tests before marking complete | Skipping verification steps |
|
|
119
|
+
| Document evidence of verification | Marking complete without evidence |
|
|
120
|
+
| Test both happy and unhappy paths | Assuming tests are enough |
|
|
121
|
+
| Verify on multiple browsers/devices | Ignoring edge cases |
|
|
122
|
+
| Check performance impact | Skipping security checks |
|
|
123
|
+
| Use automated verification | Merging without green CI |
|
|
124
|
+
| Include screenshots for UI | Forgetting mobile testing |
|
|
125
|
+
| Self-review before requesting | Rushing verification |
|
|
126
|
+
|
|
127
|
+
## Related Skills
|
|
128
|
+
|
|
129
|
+
- `finishing-development-branches` - Complete branch preparation
|
|
130
|
+
- `executing-plans` - Quality gates during execution
|
|
131
|
+
- `debugging-systematically` - Verify fixes work
|
|
132
|
+
- `developing-test-driven` - Build verification into process
|