wogiflow 1.0.21 → 1.0.22
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/.claude/commands/wogi-bug.md +43 -0
- package/.claude/commands/wogi-bulk.md +144 -0
- package/.claude/commands/wogi-changelog.md +36 -0
- package/.claude/commands/wogi-compact.md +99 -0
- package/.claude/commands/wogi-config.md +50 -0
- package/.claude/commands/wogi-context.md +68 -0
- package/.claude/commands/wogi-correction.md +73 -0
- package/.claude/commands/wogi-debt.md +128 -0
- package/.claude/commands/wogi-deps.md +32 -0
- package/.claude/commands/wogi-epics.md +145 -0
- package/.claude/commands/wogi-export.md +100 -0
- package/.claude/commands/wogi-feature.md +149 -0
- package/.claude/commands/wogi-guided-edit.md +83 -0
- package/.claude/commands/wogi-health.md +43 -0
- package/.claude/commands/wogi-help.md +96 -0
- package/.claude/commands/wogi-hybrid-edit.md +36 -0
- package/.claude/commands/wogi-hybrid-off.md +24 -0
- package/.claude/commands/wogi-hybrid-setup.md +79 -0
- package/.claude/commands/wogi-hybrid-status.md +45 -0
- package/.claude/commands/wogi-hybrid.md +54 -0
- package/.claude/commands/wogi-import.md +44 -0
- package/.claude/commands/wogi-init.md +618 -0
- package/.claude/commands/wogi-log.md +38 -0
- package/.claude/commands/wogi-map-add.md +29 -0
- package/.claude/commands/wogi-map-check.md +35 -0
- package/.claude/commands/wogi-map-index.md +98 -0
- package/.claude/commands/wogi-map-scan.md +38 -0
- package/.claude/commands/wogi-map-sync.md +91 -0
- package/.claude/commands/wogi-map.md +33 -0
- package/.claude/commands/wogi-morning.md +65 -0
- package/.claude/commands/wogi-onboard.md +99 -0
- package/.claude/commands/wogi-plan.md +173 -0
- package/.claude/commands/wogi-ready.md +84 -0
- package/.claude/commands/wogi-resume.md +95 -0
- package/.claude/commands/wogi-review.md +636 -0
- package/.claude/commands/wogi-roadmap.md +241 -0
- package/.claude/commands/wogi-rules.md +104 -0
- package/.claude/commands/wogi-search.md +33 -0
- package/.claude/commands/wogi-session-end.md +49 -0
- package/.claude/commands/wogi-setup-stack.md +151 -0
- package/.claude/commands/wogi-skill-learn.md +66 -0
- package/.claude/commands/wogi-skills.md +87 -0
- package/.claude/commands/wogi-standup.md +28 -0
- package/.claude/commands/wogi-start.md +465 -0
- package/.claude/commands/wogi-status.md +41 -0
- package/.claude/commands/wogi-statusline-setup/skill.md +109 -0
- package/.claude/commands/wogi-story.md +98 -0
- package/.claude/commands/wogi-suspend.md +87 -0
- package/.claude/commands/wogi-test-browser.md +43 -0
- package/.claude/commands/wogi-trace.md +198 -0
- package/.claude/docs/architecture.md +37 -0
- package/.claude/docs/commands.md +343 -0
- package/.claude/docs/knowledge-base/01-setup-onboarding/README.md +177 -0
- package/.claude/docs/knowledge-base/01-setup-onboarding/component-indexing.md +341 -0
- package/.claude/docs/knowledge-base/01-setup-onboarding/framework-detection.md +269 -0
- package/.claude/docs/knowledge-base/01-setup-onboarding/installation.md +146 -0
- package/.claude/docs/knowledge-base/01-setup-onboarding/onboarding-existing.md +317 -0
- package/.claude/docs/knowledge-base/01-setup-onboarding/team-setup.md +346 -0
- package/.claude/docs/knowledge-base/02-task-execution/01-task-planning.md +259 -0
- package/.claude/docs/knowledge-base/02-task-execution/02-execution-loop.md +443 -0
- package/.claude/docs/knowledge-base/02-task-execution/03-verification.md +417 -0
- package/.claude/docs/knowledge-base/02-task-execution/04-completion.md +374 -0
- package/.claude/docs/knowledge-base/02-task-execution/05-session-review.md +170 -0
- package/.claude/docs/knowledge-base/02-task-execution/README.md +173 -0
- package/.claude/docs/knowledge-base/02-task-execution/external-integrations.md +133 -0
- package/.claude/docs/knowledge-base/02-task-execution/model-management.md +202 -0
- package/.claude/docs/knowledge-base/02-task-execution/specification-mode.md +292 -0
- package/.claude/docs/knowledge-base/02-task-execution/sync-daemon.md +96 -0
- package/.claude/docs/knowledge-base/02-task-execution/trade-offs.md +345 -0
- package/.claude/docs/knowledge-base/02-task-execution/workflow-steps.md +357 -0
- package/.claude/docs/knowledge-base/03-self-improvement/README.md +199 -0
- package/.claude/docs/knowledge-base/03-self-improvement/long-input-processing.md +160 -0
- package/.claude/docs/knowledge-base/03-self-improvement/model-learning.md +334 -0
- package/.claude/docs/knowledge-base/03-self-improvement/project-learning.md +301 -0
- package/.claude/docs/knowledge-base/03-self-improvement/skill-learning.md +372 -0
- package/.claude/docs/knowledge-base/03-self-improvement/skill-matching.md +304 -0
- package/.claude/docs/knowledge-base/03-self-improvement/team-learning.md +342 -0
- package/.claude/docs/knowledge-base/04-memory-context/README.md +189 -0
- package/.claude/docs/knowledge-base/04-memory-context/context-management.md +308 -0
- package/.claude/docs/knowledge-base/04-memory-context/memory-commands.md +176 -0
- package/.claude/docs/knowledge-base/04-memory-context/memory-systems.md +359 -0
- package/.claude/docs/knowledge-base/04-memory-context/prd-management.md +115 -0
- package/.claude/docs/knowledge-base/04-memory-context/session-persistence.md +359 -0
- package/.claude/docs/knowledge-base/04-memory-context/team-history.md +317 -0
- package/.claude/docs/knowledge-base/05-development-tools/README.md +84 -0
- package/.claude/docs/knowledge-base/05-development-tools/code-traces.md +278 -0
- package/.claude/docs/knowledge-base/05-development-tools/figma-analyzer.md +253 -0
- package/.claude/docs/knowledge-base/05-development-tools/guided-edit.md +173 -0
- package/.claude/docs/knowledge-base/05-development-tools/mcp-integrations.md +286 -0
- package/.claude/docs/knowledge-base/06-safety-guardrails/README.md +153 -0
- package/.claude/docs/knowledge-base/06-safety-guardrails/checkpoint-rollback.md +302 -0
- package/.claude/docs/knowledge-base/06-safety-guardrails/commit-gates.md +309 -0
- package/.claude/docs/knowledge-base/06-safety-guardrails/damage-control.md +292 -0
- package/.claude/docs/knowledge-base/06-safety-guardrails/security-scanning.md +291 -0
- package/.claude/docs/knowledge-base/README.md +92 -0
- package/.claude/docs/knowledge-base/configuration/README.md +228 -0
- package/.claude/docs/knowledge-base/configuration/all-options.md +1632 -0
- package/.claude/docs/knowledge-base/future-features.md +277 -0
- package/.claude/docs/stack.md +25 -0
- package/.claude/docs/testing.md +71 -0
- package/.claude/rules/README.md +60 -0
- package/.claude/rules/architecture/component-reuse.md +38 -0
- package/.claude/rules/architecture/document-structure.md +76 -0
- package/.claude/rules/architecture/feature-refactoring-cleanup.md +87 -0
- package/.claude/rules/architecture/model-management.md +35 -0
- package/.claude/rules/code-style/naming-conventions.md +55 -0
- package/.claude/rules/security/security-patterns.md +116 -0
- package/.claude/skills/.gitkeep +0 -0
- package/.claude/skills/README.md +131 -0
- package/.claude/skills/_template/commands/.gitkeep +0 -0
- package/.claude/skills/_template/knowledge/anti-patterns.md +49 -0
- package/.claude/skills/_template/knowledge/learnings.md +60 -0
- package/.claude/skills/_template/knowledge/patterns.md +45 -0
- package/.claude/skills/_template/rules/.gitkeep +0 -0
- package/.claude/skills/_template/skill.md +99 -0
- package/.claude/skills/_template/templates/.gitkeep +0 -0
- package/.claude/skills/figma-analyzer/knowledge/anti-patterns.md +216 -0
- package/.claude/skills/figma-analyzer/knowledge/patterns.md +144 -0
- package/.claude/skills/figma-analyzer/skill.md +236 -0
- package/lib/installer.js +59 -19
- package/package.json +5 -1
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
# Verification
|
|
2
|
+
|
|
3
|
+
Verification ensures that each acceptance criterion is actually met before marking it complete. This includes auto-inference, quality gates, and specialized testing.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Auto-Inference Verification
|
|
8
|
+
|
|
9
|
+
Auto-inference automatically verifies certain types of criteria without manual confirmation.
|
|
10
|
+
|
|
11
|
+
### Supported Verifications
|
|
12
|
+
|
|
13
|
+
| Type | Pattern Detected | How Verified |
|
|
14
|
+
|------|-----------------|--------------|
|
|
15
|
+
| **File Exists** | "Create file X" | Check filesystem |
|
|
16
|
+
| **Function Export** | "Export function X from Y" | Parse file content |
|
|
17
|
+
| **Component Exists** | "Component X renders" | Search component directories |
|
|
18
|
+
| **Config Exists** | "Config has X.Y.Z" | Check config.json |
|
|
19
|
+
| **Tests Pass** | "Tests pass" | Run npm test |
|
|
20
|
+
| **Lint Clean** | "No lint errors" | Run linter |
|
|
21
|
+
| **CLI Works** | "Command X works" | Run with --help |
|
|
22
|
+
|
|
23
|
+
### Configuration
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{
|
|
27
|
+
"loops": {
|
|
28
|
+
"autoInferVerification": true, // Enable auto-inference
|
|
29
|
+
"fallbackToManual": true, // Ask user if can't infer
|
|
30
|
+
"suggestBrowserTests": true // Suggest browser tests for UI
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### How It Works
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
Criterion: "Create file src/services/AuthService.ts"
|
|
39
|
+
↓
|
|
40
|
+
Pattern Match: "Create file" → File existence check
|
|
41
|
+
↓
|
|
42
|
+
Verification: fs.existsSync('src/services/AuthService.ts')
|
|
43
|
+
↓
|
|
44
|
+
Result: ✓ File exists: src/services/AuthService.ts
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Verification Results
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
✓ File exists: src/services/AuthService.ts (auto-verified)
|
|
51
|
+
✓ Found "login" in src/services/AuthService.ts (auto-verified)
|
|
52
|
+
⚠️ Could not auto-verify - manual check required (fallback)
|
|
53
|
+
🌐 UI criterion detected - browser test recommended
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Quality Gates
|
|
59
|
+
|
|
60
|
+
Quality gates are requirements that must pass before a task can be completed.
|
|
61
|
+
|
|
62
|
+
### Configuration
|
|
63
|
+
|
|
64
|
+
```json
|
|
65
|
+
{
|
|
66
|
+
"qualityGates": {
|
|
67
|
+
"feature": {
|
|
68
|
+
"require": ["tests", "appMapUpdate", "requestLogEntry"],
|
|
69
|
+
"optional": ["review", "docs"]
|
|
70
|
+
},
|
|
71
|
+
"bugfix": {
|
|
72
|
+
"require": ["tests", "requestLogEntry"],
|
|
73
|
+
"optional": ["review"]
|
|
74
|
+
},
|
|
75
|
+
"refactor": {
|
|
76
|
+
"require": ["tests", "noNewFeatures"],
|
|
77
|
+
"optional": ["review"]
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Available Gates
|
|
84
|
+
|
|
85
|
+
| Gate | What It Checks |
|
|
86
|
+
|------|----------------|
|
|
87
|
+
| `tests` | npm test passes |
|
|
88
|
+
| `lint` | npm run lint passes (with auto-fix) |
|
|
89
|
+
| `typecheck` | npm run typecheck passes |
|
|
90
|
+
| `appMapUpdate` | New components added to app-map.md |
|
|
91
|
+
| `requestLogEntry` | Task logged in request-log.md |
|
|
92
|
+
| `noNewFeatures` | (Refactor) No new functionality added |
|
|
93
|
+
| `review` | Manual code review completed |
|
|
94
|
+
| `docs` | Documentation updated |
|
|
95
|
+
|
|
96
|
+
### Gate Execution
|
|
97
|
+
|
|
98
|
+
When running `/wogi-done TASK-XXX`:
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
Running quality gates...
|
|
102
|
+
|
|
103
|
+
✓ tests passed
|
|
104
|
+
✓ lint passed (auto-fixed)
|
|
105
|
+
✓ typecheck passed
|
|
106
|
+
✓ requestLogEntry (found in request-log)
|
|
107
|
+
○ appMapUpdate (verify manually if components created)
|
|
108
|
+
|
|
109
|
+
All gates passed!
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Failed Gates
|
|
113
|
+
|
|
114
|
+
If a gate fails:
|
|
115
|
+
1. Error output is captured
|
|
116
|
+
2. Failure details saved to `.workflow/state/last-failure.json`
|
|
117
|
+
3. Task completion is blocked
|
|
118
|
+
4. Fix issues and retry `/wogi-done`
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
Running quality gates...
|
|
122
|
+
|
|
123
|
+
✗ tests failed
|
|
124
|
+
Error output:
|
|
125
|
+
FAIL src/services/AuthService.test.ts
|
|
126
|
+
● login › should return user on success
|
|
127
|
+
Expected: { id: 1 }
|
|
128
|
+
Received: undefined
|
|
129
|
+
|
|
130
|
+
✗ typecheck failed
|
|
131
|
+
Type errors:
|
|
132
|
+
src/services/AuthService.ts:15:5
|
|
133
|
+
Property 'user' does not exist on type 'Response'
|
|
134
|
+
|
|
135
|
+
Failed gates: tests, typecheck
|
|
136
|
+
Quality gates failed. Fix issues before completing.
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Validation Commands
|
|
142
|
+
|
|
143
|
+
Run validation commands after file edits or before commits.
|
|
144
|
+
|
|
145
|
+
### Configuration
|
|
146
|
+
|
|
147
|
+
```json
|
|
148
|
+
{
|
|
149
|
+
"validation": {
|
|
150
|
+
"afterFileEdit": {
|
|
151
|
+
"enabled": true,
|
|
152
|
+
"commands": {
|
|
153
|
+
"*.ts": ["npx tsc --noEmit"],
|
|
154
|
+
"*.tsx": ["npx tsc --noEmit", "npx eslint {file} --fix"],
|
|
155
|
+
"*.js": ["npx eslint {file} --fix"],
|
|
156
|
+
"*.jsx": ["npx eslint {file} --fix"]
|
|
157
|
+
},
|
|
158
|
+
"fixErrorsBeforeContinuing": true
|
|
159
|
+
},
|
|
160
|
+
"afterTaskComplete": {
|
|
161
|
+
"enabled": true,
|
|
162
|
+
"commands": ["npm run lint", "npm run typecheck"]
|
|
163
|
+
},
|
|
164
|
+
"beforeCommit": {
|
|
165
|
+
"enabled": true,
|
|
166
|
+
"commands": ["npm run lint", "npm run typecheck", "npm run test"]
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### When Validation Runs
|
|
173
|
+
|
|
174
|
+
1. **After File Edit**: Immediately catch type errors
|
|
175
|
+
2. **After Task Complete**: Full lint/typecheck before commit
|
|
176
|
+
3. **Before Commit**: Final validation including tests
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Regression Testing
|
|
181
|
+
|
|
182
|
+
Test previously completed tasks to ensure new changes don't break them.
|
|
183
|
+
|
|
184
|
+
### Configuration
|
|
185
|
+
|
|
186
|
+
```json
|
|
187
|
+
{
|
|
188
|
+
"regressionTesting": {
|
|
189
|
+
"enabled": true,
|
|
190
|
+
"sampleSize": 3, // Test 3 random completed tasks
|
|
191
|
+
"runOnTaskComplete": true, // Run after each task
|
|
192
|
+
"onFailure": "warn" // "warn" | "block" | "fix"
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### How It Works
|
|
198
|
+
|
|
199
|
+
1. After task completion, randomly select N completed tasks
|
|
200
|
+
2. Re-verify their acceptance criteria
|
|
201
|
+
3. If any fail, report according to `onFailure` setting
|
|
202
|
+
|
|
203
|
+
### Commands
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
# Run regression tests manually
|
|
207
|
+
./scripts/flow regression
|
|
208
|
+
|
|
209
|
+
# Test all completed tasks
|
|
210
|
+
./scripts/flow regression --all
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### Failure Handling
|
|
214
|
+
|
|
215
|
+
| Setting | Behavior |
|
|
216
|
+
|---------|----------|
|
|
217
|
+
| `warn` | Show warning, continue |
|
|
218
|
+
| `block` | Block completion until fixed |
|
|
219
|
+
| `fix` | Attempt automatic fix |
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## Browser Testing
|
|
224
|
+
|
|
225
|
+
For UI tasks, browser testing verifies visual and interactive behavior.
|
|
226
|
+
|
|
227
|
+
### Configuration
|
|
228
|
+
|
|
229
|
+
```json
|
|
230
|
+
{
|
|
231
|
+
"browserTesting": {
|
|
232
|
+
"enabled": true,
|
|
233
|
+
"runOnTaskComplete": true, // Suggest after UI tasks
|
|
234
|
+
"runForUITasks": true, // Auto-detect UI tasks
|
|
235
|
+
"autoRun": false, // Require manual trigger
|
|
236
|
+
"timeout": 30000,
|
|
237
|
+
"screenshotOnFailure": true
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### Test Flow Definition
|
|
243
|
+
|
|
244
|
+
Create test flows in `.workflow/tests/flows/`:
|
|
245
|
+
|
|
246
|
+
```yaml
|
|
247
|
+
# login.yaml
|
|
248
|
+
name: Login Flow
|
|
249
|
+
steps:
|
|
250
|
+
- navigate: /login
|
|
251
|
+
- fill:
|
|
252
|
+
selector: "#email"
|
|
253
|
+
value: "test@example.com"
|
|
254
|
+
- fill:
|
|
255
|
+
selector: "#password"
|
|
256
|
+
value: "password123"
|
|
257
|
+
- click: "#submit-btn"
|
|
258
|
+
- waitFor: ".dashboard"
|
|
259
|
+
- assert:
|
|
260
|
+
selector: ".welcome-message"
|
|
261
|
+
contains: "Welcome"
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### Running Browser Tests
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
# Run specific flow
|
|
268
|
+
/wogi-test-browser login
|
|
269
|
+
|
|
270
|
+
# Run all flows
|
|
271
|
+
/wogi-test-browser --all
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
### When Browser Tests Are Suggested
|
|
275
|
+
|
|
276
|
+
After completing tasks that modify:
|
|
277
|
+
- `.tsx` or `.jsx` files
|
|
278
|
+
- Files in `src/components/`, `src/pages/`, etc.
|
|
279
|
+
- CSS/SCSS files
|
|
280
|
+
|
|
281
|
+
```
|
|
282
|
+
✓ Completed: TASK-015
|
|
283
|
+
|
|
284
|
+
🌐 Browser tests available:
|
|
285
|
+
- login-flow
|
|
286
|
+
- registration-flow
|
|
287
|
+
Run: /wogi-test-browser login-flow
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
## Pattern Enforcement
|
|
293
|
+
|
|
294
|
+
Ensure code follows patterns defined in `decisions.md`.
|
|
295
|
+
|
|
296
|
+
### Configuration
|
|
297
|
+
|
|
298
|
+
```json
|
|
299
|
+
{
|
|
300
|
+
"enforcement": {
|
|
301
|
+
"requirePatternCitation": false, // Require citing patterns
|
|
302
|
+
"citationFormat": "// Pattern: {pattern}"
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### How It Works
|
|
308
|
+
|
|
309
|
+
When `requirePatternCitation` is enabled:
|
|
310
|
+
1. Read patterns from `decisions.md`
|
|
311
|
+
2. Check if new code follows known patterns
|
|
312
|
+
3. Require citation in code comments
|
|
313
|
+
4. Warn on anti-pattern usage
|
|
314
|
+
|
|
315
|
+
### Example
|
|
316
|
+
|
|
317
|
+
```typescript
|
|
318
|
+
// Pattern: API calls use axios wrapper from src/lib/api
|
|
319
|
+
import { api } from '@/lib/api';
|
|
320
|
+
|
|
321
|
+
// Pattern: Error boundaries wrap page components
|
|
322
|
+
export default function LoginPage() {
|
|
323
|
+
return (
|
|
324
|
+
<ErrorBoundary>
|
|
325
|
+
<LoginForm />
|
|
326
|
+
</ErrorBoundary>
|
|
327
|
+
);
|
|
328
|
+
}
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
## Security Scanning
|
|
334
|
+
|
|
335
|
+
Pre-commit security checks prevent vulnerabilities.
|
|
336
|
+
|
|
337
|
+
### Configuration
|
|
338
|
+
|
|
339
|
+
```json
|
|
340
|
+
{
|
|
341
|
+
"security": {
|
|
342
|
+
"scanBeforeCommit": true,
|
|
343
|
+
"blockOnHigh": true,
|
|
344
|
+
"checkPatterns": {
|
|
345
|
+
"secrets": true, // Check for API keys, passwords
|
|
346
|
+
"injection": true, // Check for SQL/XSS injection
|
|
347
|
+
"npmAudit": true // Run npm audit
|
|
348
|
+
},
|
|
349
|
+
"ignoreFiles": ["*.test.ts", "*.spec.ts"]
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
### What's Checked
|
|
355
|
+
|
|
356
|
+
1. **Secrets Detection**: API keys, passwords, tokens in code
|
|
357
|
+
2. **Injection Patterns**: SQL injection, XSS vulnerabilities
|
|
358
|
+
3. **NPM Audit**: Known vulnerabilities in dependencies
|
|
359
|
+
|
|
360
|
+
### Scan Results
|
|
361
|
+
|
|
362
|
+
```
|
|
363
|
+
Security scan results:
|
|
364
|
+
|
|
365
|
+
⚠️ Potential secret detected:
|
|
366
|
+
src/config.ts:15
|
|
367
|
+
const API_KEY = "sk-..."
|
|
368
|
+
|
|
369
|
+
✓ No injection patterns found
|
|
370
|
+
✓ npm audit: 0 vulnerabilities
|
|
371
|
+
|
|
372
|
+
Block commit? Yes (blockOnHigh: true)
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
---
|
|
376
|
+
|
|
377
|
+
## Verification Flow Summary
|
|
378
|
+
|
|
379
|
+
```
|
|
380
|
+
Task Completion Attempt
|
|
381
|
+
↓
|
|
382
|
+
┌────────────────────────────────────────────┐
|
|
383
|
+
│ 1. Auto-Infer Acceptance Criteria │
|
|
384
|
+
│ - File exists? Function exports? etc. │
|
|
385
|
+
├────────────────────────────────────────────┤
|
|
386
|
+
│ 2. Run Quality Gates │
|
|
387
|
+
│ - tests, lint, typecheck │
|
|
388
|
+
├────────────────────────────────────────────┤
|
|
389
|
+
│ 3. Run Regression Tests (if enabled) │
|
|
390
|
+
│ - Sample completed tasks │
|
|
391
|
+
├────────────────────────────────────────────┤
|
|
392
|
+
│ 4. Suggest Browser Tests (if UI task) │
|
|
393
|
+
├────────────────────────────────────────────┤
|
|
394
|
+
│ 5. Security Scan (if enabled) │
|
|
395
|
+
└────────────────────────────────────────────┘
|
|
396
|
+
↓
|
|
397
|
+
All passed? → Complete task
|
|
398
|
+
Any failed? → Block and report
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
---
|
|
402
|
+
|
|
403
|
+
## Best Practices
|
|
404
|
+
|
|
405
|
+
1. **Enable auto-inference** - Saves time on obvious checks
|
|
406
|
+
2. **Configure gates per task type** - Features need more than bugfixes
|
|
407
|
+
3. **Use regression testing** - Catch breakages early
|
|
408
|
+
4. **Write browser test flows** - Cover critical user journeys
|
|
409
|
+
5. **Enable security scanning** - Catch vulnerabilities before commit
|
|
410
|
+
|
|
411
|
+
---
|
|
412
|
+
|
|
413
|
+
## Related
|
|
414
|
+
|
|
415
|
+
- [Execution Loop](./02-execution-loop.md) - How verification fits in the loop
|
|
416
|
+
- [Completion](./04-completion.md) - What happens after verification
|
|
417
|
+
- [Safety & Guardrails](../06-safety-guardrails/) - More on security
|