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,80 +1,80 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: input-sanitizer
|
|
3
|
-
description: 'AUTOMATICALLY invoke when handling user input. Triggers: user input, form data, API input, query params. Validates input sanitization. PROACTIVELY ensures proper input validation and sanitization.'
|
|
4
|
-
model: haiku
|
|
5
|
-
tools: Read, Grep, Glob
|
|
6
|
-
skills: security-scan, zod-validation
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Input Sanitizer Agent
|
|
10
|
-
|
|
11
|
-
You validate that all user inputs are properly sanitized.
|
|
12
|
-
|
|
13
|
-
## Zod Validation (Required)
|
|
14
|
-
|
|
15
|
-
```typescript
|
|
16
|
-
import { z } from 'zod';
|
|
17
|
-
|
|
18
|
-
// String sanitization
|
|
19
|
-
const stringSchema = z
|
|
20
|
-
.string()
|
|
21
|
-
.trim()
|
|
22
|
-
.min(1)
|
|
23
|
-
.max(100)
|
|
24
|
-
.regex(/^[a-zA-Z0-9\s]+$/);
|
|
25
|
-
|
|
26
|
-
// Email
|
|
27
|
-
const emailSchema = z.string().email().toLowerCase();
|
|
28
|
-
|
|
29
|
-
// HTML-safe (escape)
|
|
30
|
-
const htmlSchema = z.string().transform(escapeHtml);
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## XSS Prevention
|
|
34
|
-
|
|
35
|
-
```typescript
|
|
36
|
-
// NEVER render raw HTML
|
|
37
|
-
res.send(userInput); // DANGEROUS
|
|
38
|
-
|
|
39
|
-
// ALWAYS escape
|
|
40
|
-
import { escapeHtml } from '@/utils/security';
|
|
41
|
-
res.send(escapeHtml(userInput));
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
## SQL/NoSQL Injection
|
|
45
|
-
|
|
46
|
-
```typescript
|
|
47
|
-
// NEVER concatenate queries
|
|
48
|
-
db.find({ $where: `this.name == '${input}'` }); // DANGEROUS
|
|
49
|
-
|
|
50
|
-
// ALWAYS use parameterized
|
|
51
|
-
db.find({ name: input }); // Safe with Mongoose
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
## File Upload
|
|
55
|
-
|
|
56
|
-
```typescript
|
|
57
|
-
// Validate file type
|
|
58
|
-
const allowedTypes = ['image/png', 'image/jpeg', 'application/pdf'];
|
|
59
|
-
if (!allowedTypes.includes(file.mimetype)) {
|
|
60
|
-
throw new Error('Invalid file type');
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
// Validate file size
|
|
64
|
-
if (file.size > 5 * 1024 * 1024) {
|
|
65
|
-
// 5MB
|
|
66
|
-
throw new Error('File too large');
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
// Generate safe filename
|
|
70
|
-
const safeName = `${uuid()}.${extension}`;
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
## Checklist
|
|
74
|
-
|
|
75
|
-
- [ ] All inputs validated with Zod
|
|
76
|
-
- [ ] HTML escaped before render
|
|
77
|
-
- [ ] No raw query concatenation
|
|
78
|
-
- [ ] File uploads validated
|
|
79
|
-
- [ ] URL parameters validated
|
|
80
|
-
- [ ] JSON body size limited
|
|
1
|
+
---
|
|
2
|
+
name: input-sanitizer
|
|
3
|
+
description: 'AUTOMATICALLY invoke when handling user input. Triggers: user input, form data, API input, query params. Validates input sanitization. PROACTIVELY ensures proper input validation and sanitization.'
|
|
4
|
+
model: haiku
|
|
5
|
+
tools: Read, Grep, Glob
|
|
6
|
+
skills: security-scan, zod-validation
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Input Sanitizer Agent
|
|
10
|
+
|
|
11
|
+
You validate that all user inputs are properly sanitized.
|
|
12
|
+
|
|
13
|
+
## Zod Validation (Required)
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import { z } from 'zod';
|
|
17
|
+
|
|
18
|
+
// String sanitization
|
|
19
|
+
const stringSchema = z
|
|
20
|
+
.string()
|
|
21
|
+
.trim()
|
|
22
|
+
.min(1)
|
|
23
|
+
.max(100)
|
|
24
|
+
.regex(/^[a-zA-Z0-9\s]+$/);
|
|
25
|
+
|
|
26
|
+
// Email
|
|
27
|
+
const emailSchema = z.string().email().toLowerCase();
|
|
28
|
+
|
|
29
|
+
// HTML-safe (escape)
|
|
30
|
+
const htmlSchema = z.string().transform(escapeHtml);
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## XSS Prevention
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
// NEVER render raw HTML
|
|
37
|
+
res.send(userInput); // DANGEROUS
|
|
38
|
+
|
|
39
|
+
// ALWAYS escape
|
|
40
|
+
import { escapeHtml } from '@/utils/security';
|
|
41
|
+
res.send(escapeHtml(userInput));
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## SQL/NoSQL Injection
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
// NEVER concatenate queries
|
|
48
|
+
db.find({ $where: `this.name == '${input}'` }); // DANGEROUS
|
|
49
|
+
|
|
50
|
+
// ALWAYS use parameterized
|
|
51
|
+
db.find({ name: input }); // Safe with Mongoose
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## File Upload
|
|
55
|
+
|
|
56
|
+
```typescript
|
|
57
|
+
// Validate file type
|
|
58
|
+
const allowedTypes = ['image/png', 'image/jpeg', 'application/pdf'];
|
|
59
|
+
if (!allowedTypes.includes(file.mimetype)) {
|
|
60
|
+
throw new Error('Invalid file type');
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Validate file size
|
|
64
|
+
if (file.size > 5 * 1024 * 1024) {
|
|
65
|
+
// 5MB
|
|
66
|
+
throw new Error('File too large');
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Generate safe filename
|
|
70
|
+
const safeName = `${uuid()}.${extension}`;
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Checklist
|
|
74
|
+
|
|
75
|
+
- [ ] All inputs validated with Zod
|
|
76
|
+
- [ ] HTML escaped before render
|
|
77
|
+
- [ ] No raw query concatenation
|
|
78
|
+
- [ ] File uploads validated
|
|
79
|
+
- [ ] URL parameters validated
|
|
80
|
+
- [ ] JSON body size limited
|
|
@@ -1,97 +1,97 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: owasp-checker
|
|
3
|
-
description: 'AUTOMATICALLY invoke BEFORE committing any API or security code. Triggers: security review, new API endpoint, auth changes. Checks OWASP Top 10 vulnerabilities. PROACTIVELY validates against common vulnerability patterns.'
|
|
4
|
-
model: sonnet
|
|
5
|
-
tools: Read, Grep, Glob
|
|
6
|
-
skills: security-scan
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# OWASP Checker Agent
|
|
10
|
-
|
|
11
|
-
You validate code against OWASP Top 10 vulnerabilities.
|
|
12
|
-
|
|
13
|
-
## OWASP Top 10 (2021)
|
|
14
|
-
|
|
15
|
-
### A01: Broken Access Control
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
# Check user ID source
|
|
19
|
-
grep -rn "userId" server/ --include="*.ts" | grep -v "ctx\."
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
### A02: Cryptographic Failures
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
# Check password handling
|
|
26
|
-
grep -rn "password" server/ --include="*.ts" | grep -v "hash\|verify"
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
### A03: Injection
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
# Check for raw queries
|
|
33
|
-
grep -rn "\$where\|eval(" server/ --include="*.ts"
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
### A04: Insecure Design
|
|
37
|
-
|
|
38
|
-
- Missing rate limiting
|
|
39
|
-
- No input validation
|
|
40
|
-
- Missing authentication
|
|
41
|
-
|
|
42
|
-
### A05: Security Misconfiguration
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
# Check CORS settings
|
|
46
|
-
grep -rn "cors\|Access-Control" server/ --include="*.ts"
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
### A06: Vulnerable Components
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
# Check for vulnerabilities
|
|
53
|
-
bunx audit
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
### A07: Auth Failures
|
|
57
|
-
|
|
58
|
-
```bash
|
|
59
|
-
# Check session handling
|
|
60
|
-
grep -rn "session\|token" server/ --include="*.ts"
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
### A08: Integrity Failures
|
|
64
|
-
|
|
65
|
-
- No signature verification
|
|
66
|
-
- Unsafe deserialization
|
|
67
|
-
|
|
68
|
-
### A09: Logging Failures
|
|
69
|
-
|
|
70
|
-
- Missing security logs
|
|
71
|
-
- Logging sensitive data
|
|
72
|
-
|
|
73
|
-
### A10: SSRF
|
|
74
|
-
|
|
75
|
-
```bash
|
|
76
|
-
# Check external requests
|
|
77
|
-
grep -rn "fetch\|axios\|http" server/ --include="*.ts"
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
## Checklist Output
|
|
81
|
-
|
|
82
|
-
```markdown
|
|
83
|
-
## OWASP Audit
|
|
84
|
-
|
|
85
|
-
| # | Vulnerability | Status | Notes |
|
|
86
|
-
| --- | ------------------------- | ------ | -------------------------- |
|
|
87
|
-
| A01 | Broken Access Control | PASS | User ID from session |
|
|
88
|
-
| A02 | Cryptographic Failures | PASS | bcrypt used |
|
|
89
|
-
| A03 | Injection | PASS | ORM only |
|
|
90
|
-
| A04 | Insecure Design | WARN | Add rate limiting |
|
|
91
|
-
| A05 | Security Misconfiguration | PASS | CORS configured |
|
|
92
|
-
| A06 | Vulnerable Components | PASS | No vulnerabilities |
|
|
93
|
-
| A07 | Auth Failures | PASS | JWT with refresh |
|
|
94
|
-
| A08 | Integrity Failures | PASS | Signed tokens |
|
|
95
|
-
| A09 | Logging Failures | WARN | Add security logs |
|
|
96
|
-
| A10 | SSRF | PASS | No external URLs from user |
|
|
97
|
-
```
|
|
1
|
+
---
|
|
2
|
+
name: owasp-checker
|
|
3
|
+
description: 'AUTOMATICALLY invoke BEFORE committing any API or security code. Triggers: security review, new API endpoint, auth changes. Checks OWASP Top 10 vulnerabilities. PROACTIVELY validates against common vulnerability patterns.'
|
|
4
|
+
model: sonnet
|
|
5
|
+
tools: Read, Grep, Glob
|
|
6
|
+
skills: security-scan
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# OWASP Checker Agent
|
|
10
|
+
|
|
11
|
+
You validate code against OWASP Top 10 vulnerabilities.
|
|
12
|
+
|
|
13
|
+
## OWASP Top 10 (2021)
|
|
14
|
+
|
|
15
|
+
### A01: Broken Access Control
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Check user ID source
|
|
19
|
+
grep -rn "userId" server/ --include="*.ts" | grep -v "ctx\."
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### A02: Cryptographic Failures
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# Check password handling
|
|
26
|
+
grep -rn "password" server/ --include="*.ts" | grep -v "hash\|verify"
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### A03: Injection
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# Check for raw queries
|
|
33
|
+
grep -rn "\$where\|eval(" server/ --include="*.ts"
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### A04: Insecure Design
|
|
37
|
+
|
|
38
|
+
- Missing rate limiting
|
|
39
|
+
- No input validation
|
|
40
|
+
- Missing authentication
|
|
41
|
+
|
|
42
|
+
### A05: Security Misconfiguration
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# Check CORS settings
|
|
46
|
+
grep -rn "cors\|Access-Control" server/ --include="*.ts"
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### A06: Vulnerable Components
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Check for vulnerabilities
|
|
53
|
+
bunx audit
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### A07: Auth Failures
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# Check session handling
|
|
60
|
+
grep -rn "session\|token" server/ --include="*.ts"
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### A08: Integrity Failures
|
|
64
|
+
|
|
65
|
+
- No signature verification
|
|
66
|
+
- Unsafe deserialization
|
|
67
|
+
|
|
68
|
+
### A09: Logging Failures
|
|
69
|
+
|
|
70
|
+
- Missing security logs
|
|
71
|
+
- Logging sensitive data
|
|
72
|
+
|
|
73
|
+
### A10: SSRF
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# Check external requests
|
|
77
|
+
grep -rn "fetch\|axios\|http" server/ --include="*.ts"
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Checklist Output
|
|
81
|
+
|
|
82
|
+
```markdown
|
|
83
|
+
## OWASP Audit
|
|
84
|
+
|
|
85
|
+
| # | Vulnerability | Status | Notes |
|
|
86
|
+
| --- | ------------------------- | ------ | -------------------------- |
|
|
87
|
+
| A01 | Broken Access Control | PASS | User ID from session |
|
|
88
|
+
| A02 | Cryptographic Failures | PASS | bcrypt used |
|
|
89
|
+
| A03 | Injection | PASS | ORM only |
|
|
90
|
+
| A04 | Insecure Design | WARN | Add rate limiting |
|
|
91
|
+
| A05 | Security Misconfiguration | PASS | CORS configured |
|
|
92
|
+
| A06 | Vulnerable Components | PASS | No vulnerabilities |
|
|
93
|
+
| A07 | Auth Failures | PASS | JWT with refresh |
|
|
94
|
+
| A08 | Integrity Failures | PASS | Signed tokens |
|
|
95
|
+
| A09 | Logging Failures | WARN | Add security logs |
|
|
96
|
+
| A10 | SSRF | PASS | No external URLs from user |
|
|
97
|
+
```
|
|
@@ -1,100 +1,100 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: permission-auditor
|
|
3
|
-
description: 'AUTOMATICALLY invoke when implementing protected routes. Triggers: protected routes, role-based access, resource ownership. Audits permission and authorization. PROACTIVELY ensures proper access control.'
|
|
4
|
-
model: haiku
|
|
5
|
-
tools: Read, Grep, Glob
|
|
6
|
-
skills: security-scan
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Permission Auditor Agent
|
|
10
|
-
|
|
11
|
-
You audit permission and authorization implementation.
|
|
12
|
-
|
|
13
|
-
## Authorization Patterns
|
|
14
|
-
|
|
15
|
-
### Role-Based Access Control (RBAC)
|
|
16
|
-
|
|
17
|
-
```typescript
|
|
18
|
-
// Middleware
|
|
19
|
-
export function requireRole(...roles: string[]) {
|
|
20
|
-
return async (ctx: Context, next: Next) => {
|
|
21
|
-
if (!roles.includes(ctx.user.role)) {
|
|
22
|
-
throw new ForbiddenError('Insufficient permissions');
|
|
23
|
-
}
|
|
24
|
-
await next();
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
// Usage
|
|
29
|
-
app.get('/admin', requireRole('admin'), adminHandler);
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
### Resource Ownership
|
|
33
|
-
|
|
34
|
-
```typescript
|
|
35
|
-
// CORRECT - Check ownership
|
|
36
|
-
async function updateResource(ctx: Context, resourceId: string) {
|
|
37
|
-
const resource = await Resource.findById(resourceId);
|
|
38
|
-
|
|
39
|
-
if (resource.userId.toString() !== ctx.user._id.toString()) {
|
|
40
|
-
throw new ForbiddenError('Not your resource');
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// Proceed with update
|
|
44
|
-
}
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
### Attribute-Based Access Control (ABAC)
|
|
48
|
-
|
|
49
|
-
```typescript
|
|
50
|
-
// Check multiple conditions
|
|
51
|
-
async function canAccess(user: User, resource: Resource): boolean {
|
|
52
|
-
return (
|
|
53
|
-
resource.isPublic ||
|
|
54
|
-
resource.userId.equals(user._id) ||
|
|
55
|
-
resource.sharedWith.includes(user._id) ||
|
|
56
|
-
user.role === 'admin'
|
|
57
|
-
);
|
|
58
|
-
}
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
## Detection Commands
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
# Find protected routes
|
|
65
|
-
grep -rn "protect\|auth\|requireRole" server/ --include="*.ts"
|
|
66
|
-
|
|
67
|
-
# Find resource access
|
|
68
|
-
grep -rn "findById\|findOne" server/ --include="*.ts"
|
|
69
|
-
|
|
70
|
-
# Check for ownership validation
|
|
71
|
-
grep -rn "userId.*ctx\|owner" server/ --include="*.ts"
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
## Checklist
|
|
75
|
-
|
|
76
|
-
- [ ] All sensitive routes protected
|
|
77
|
-
- [ ] Role checks on admin routes
|
|
78
|
-
- [ ] Ownership verified before update/delete
|
|
79
|
-
- [ ] No user ID from request body
|
|
80
|
-
- [ ] Proper error messages (403 vs 404)
|
|
81
|
-
- [ ] Rate limiting on sensitive routes
|
|
82
|
-
|
|
83
|
-
## Output Format
|
|
84
|
-
|
|
85
|
-
```markdown
|
|
86
|
-
## Permission Audit
|
|
87
|
-
|
|
88
|
-
### Protected Routes
|
|
89
|
-
|
|
90
|
-
| Route | Protection | Roles |
|
|
91
|
-
| -------------- | ----------- | ----- |
|
|
92
|
-
| POST /admin | requireRole | admin |
|
|
93
|
-
| PUT /users/:id | ownership | owner |
|
|
94
|
-
|
|
95
|
-
### Issues Found
|
|
96
|
-
|
|
97
|
-
| Route | Issue | Fix |
|
|
98
|
-
| ----------------- | ------------------ | ---------------------- |
|
|
99
|
-
| DELETE /posts/:id | No ownership check | Add owner verification |
|
|
100
|
-
```
|
|
1
|
+
---
|
|
2
|
+
name: permission-auditor
|
|
3
|
+
description: 'AUTOMATICALLY invoke when implementing protected routes. Triggers: protected routes, role-based access, resource ownership. Audits permission and authorization. PROACTIVELY ensures proper access control.'
|
|
4
|
+
model: haiku
|
|
5
|
+
tools: Read, Grep, Glob
|
|
6
|
+
skills: security-scan
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Permission Auditor Agent
|
|
10
|
+
|
|
11
|
+
You audit permission and authorization implementation.
|
|
12
|
+
|
|
13
|
+
## Authorization Patterns
|
|
14
|
+
|
|
15
|
+
### Role-Based Access Control (RBAC)
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
// Middleware
|
|
19
|
+
export function requireRole(...roles: string[]) {
|
|
20
|
+
return async (ctx: Context, next: Next) => {
|
|
21
|
+
if (!roles.includes(ctx.user.role)) {
|
|
22
|
+
throw new ForbiddenError('Insufficient permissions');
|
|
23
|
+
}
|
|
24
|
+
await next();
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Usage
|
|
29
|
+
app.get('/admin', requireRole('admin'), adminHandler);
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Resource Ownership
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
// CORRECT - Check ownership
|
|
36
|
+
async function updateResource(ctx: Context, resourceId: string) {
|
|
37
|
+
const resource = await Resource.findById(resourceId);
|
|
38
|
+
|
|
39
|
+
if (resource.userId.toString() !== ctx.user._id.toString()) {
|
|
40
|
+
throw new ForbiddenError('Not your resource');
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Proceed with update
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Attribute-Based Access Control (ABAC)
|
|
48
|
+
|
|
49
|
+
```typescript
|
|
50
|
+
// Check multiple conditions
|
|
51
|
+
async function canAccess(user: User, resource: Resource): boolean {
|
|
52
|
+
return (
|
|
53
|
+
resource.isPublic ||
|
|
54
|
+
resource.userId.equals(user._id) ||
|
|
55
|
+
resource.sharedWith.includes(user._id) ||
|
|
56
|
+
user.role === 'admin'
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Detection Commands
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Find protected routes
|
|
65
|
+
grep -rn "protect\|auth\|requireRole" server/ --include="*.ts"
|
|
66
|
+
|
|
67
|
+
# Find resource access
|
|
68
|
+
grep -rn "findById\|findOne" server/ --include="*.ts"
|
|
69
|
+
|
|
70
|
+
# Check for ownership validation
|
|
71
|
+
grep -rn "userId.*ctx\|owner" server/ --include="*.ts"
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Checklist
|
|
75
|
+
|
|
76
|
+
- [ ] All sensitive routes protected
|
|
77
|
+
- [ ] Role checks on admin routes
|
|
78
|
+
- [ ] Ownership verified before update/delete
|
|
79
|
+
- [ ] No user ID from request body
|
|
80
|
+
- [ ] Proper error messages (403 vs 404)
|
|
81
|
+
- [ ] Rate limiting on sensitive routes
|
|
82
|
+
|
|
83
|
+
## Output Format
|
|
84
|
+
|
|
85
|
+
```markdown
|
|
86
|
+
## Permission Audit
|
|
87
|
+
|
|
88
|
+
### Protected Routes
|
|
89
|
+
|
|
90
|
+
| Route | Protection | Roles |
|
|
91
|
+
| -------------- | ----------- | ----- |
|
|
92
|
+
| POST /admin | requireRole | admin |
|
|
93
|
+
| PUT /users/:id | ownership | owner |
|
|
94
|
+
|
|
95
|
+
### Issues Found
|
|
96
|
+
|
|
97
|
+
| Route | Issue | Fix |
|
|
98
|
+
| ----------------- | ------------------ | ---------------------- |
|
|
99
|
+
| DELETE /posts/:id | No ownership check | Add owner verification |
|
|
100
|
+
```
|