start-vibing 2.0.8 → 2.0.10

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.
Files changed (139) hide show
  1. package/README.md +177 -176
  2. package/dist/cli.js +38 -11
  3. package/package.json +42 -42
  4. package/template/.claude/CLAUDE.md +174 -152
  5. package/template/.claude/agents/01-orchestration/agent-selector.md +130 -123
  6. package/template/.claude/agents/01-orchestration/checkpoint-manager.md +142 -131
  7. package/template/.claude/agents/01-orchestration/context-manager.md +138 -124
  8. package/template/.claude/agents/01-orchestration/error-recovery.md +182 -176
  9. package/template/.claude/agents/01-orchestration/orchestrator.md +114 -107
  10. package/template/.claude/agents/01-orchestration/parallel-coordinator.md +141 -130
  11. package/template/.claude/agents/01-orchestration/task-decomposer.md +121 -118
  12. package/template/.claude/agents/01-orchestration/workflow-router.md +114 -111
  13. package/template/.claude/agents/02-typescript/bun-runtime-expert.md +197 -180
  14. package/template/.claude/agents/02-typescript/esm-resolver.md +193 -187
  15. package/template/.claude/agents/02-typescript/import-alias-enforcer.md +158 -149
  16. package/template/.claude/agents/02-typescript/ts-generics-helper.md +183 -165
  17. package/template/.claude/agents/02-typescript/ts-migration-helper.md +238 -227
  18. package/template/.claude/agents/02-typescript/ts-strict-checker.md +180 -162
  19. package/template/.claude/agents/02-typescript/ts-types-analyzer.md +199 -185
  20. package/template/.claude/agents/02-typescript/type-definition-writer.md +187 -183
  21. package/template/.claude/agents/02-typescript/zod-schema-designer.md +212 -197
  22. package/template/.claude/agents/02-typescript/zod-validator.md +158 -153
  23. package/template/.claude/agents/03-testing/playwright-assertions.md +265 -255
  24. package/template/.claude/agents/03-testing/playwright-e2e.md +247 -245
  25. package/template/.claude/agents/03-testing/playwright-fixtures.md +234 -240
  26. package/template/.claude/agents/03-testing/playwright-multi-viewport.md +256 -261
  27. package/template/.claude/agents/03-testing/playwright-page-objects.md +247 -247
  28. package/template/.claude/agents/03-testing/test-cleanup-manager.md +248 -256
  29. package/template/.claude/agents/03-testing/test-data-generator.md +254 -266
  30. package/template/.claude/agents/03-testing/tester-integration.md +278 -278
  31. package/template/.claude/agents/03-testing/tester-unit.md +207 -204
  32. package/template/.claude/agents/03-testing/vitest-config.md +287 -289
  33. package/template/.claude/agents/04-docker/container-health.md +255 -239
  34. package/template/.claude/agents/04-docker/deployment-validator.md +225 -217
  35. package/template/.claude/agents/04-docker/docker-compose-designer.md +281 -268
  36. package/template/.claude/agents/04-docker/docker-env-manager.md +235 -228
  37. package/template/.claude/agents/04-docker/docker-multi-stage.md +241 -229
  38. package/template/.claude/agents/04-docker/dockerfile-optimizer.md +208 -204
  39. package/template/.claude/agents/05-database/data-migration.md +0 -293
  40. package/template/.claude/agents/05-database/database-seeder.md +273 -270
  41. package/template/.claude/agents/05-database/mongodb-query-optimizer.md +230 -219
  42. package/template/.claude/agents/05-database/mongoose-aggregation.md +306 -280
  43. package/template/.claude/agents/05-database/mongoose-index-optimizer.md +182 -174
  44. package/template/.claude/agents/05-database/mongoose-schema-designer.md +267 -267
  45. package/template/.claude/agents/06-security/auth-session-validator.md +68 -65
  46. package/template/.claude/agents/06-security/input-sanitizer.md +80 -81
  47. package/template/.claude/agents/06-security/owasp-checker.md +97 -87
  48. package/template/.claude/agents/06-security/permission-auditor.md +100 -95
  49. package/template/.claude/agents/06-security/security-auditor.md +84 -82
  50. package/template/.claude/agents/06-security/sensitive-data-scanner.md +83 -85
  51. package/template/.claude/agents/07-documentation/api-documenter.md +136 -131
  52. package/template/.claude/agents/07-documentation/changelog-manager.md +105 -96
  53. package/template/.claude/agents/07-documentation/documenter.md +76 -73
  54. package/template/.claude/agents/07-documentation/domain-updater.md +81 -74
  55. package/template/.claude/agents/07-documentation/jsdoc-generator.md +114 -114
  56. package/template/.claude/agents/07-documentation/readme-generator.md +135 -132
  57. package/template/.claude/agents/08-git/branch-manager.md +58 -58
  58. package/template/.claude/agents/08-git/commit-manager.md +63 -61
  59. package/template/.claude/agents/08-git/pr-creator.md +76 -72
  60. package/template/.claude/agents/09-quality/code-reviewer.md +71 -64
  61. package/template/.claude/agents/09-quality/quality-checker.md +67 -67
  62. package/template/.claude/agents/10-research/best-practices-finder.md +89 -82
  63. package/template/.claude/agents/10-research/competitor-analyzer.md +106 -96
  64. package/template/.claude/agents/10-research/pattern-researcher.md +93 -86
  65. package/template/.claude/agents/10-research/research-cache-manager.md +76 -75
  66. package/template/.claude/agents/10-research/research-web.md +98 -91
  67. package/template/.claude/agents/10-research/tech-evaluator.md +101 -94
  68. package/template/.claude/agents/11-ui-ux/accessibility-auditor.md +136 -128
  69. package/template/.claude/agents/11-ui-ux/design-system-enforcer.md +125 -116
  70. package/template/.claude/agents/11-ui-ux/skeleton-generator.md +118 -120
  71. package/template/.claude/agents/11-ui-ux/ui-desktop.md +132 -126
  72. package/template/.claude/agents/11-ui-ux/ui-mobile.md +98 -94
  73. package/template/.claude/agents/11-ui-ux/ui-tablet.md +110 -111
  74. package/template/.claude/agents/12-performance/api-latency-analyzer.md +156 -149
  75. package/template/.claude/agents/12-performance/bundle-analyzer.md +113 -107
  76. package/template/.claude/agents/12-performance/memory-leak-detector.md +137 -126
  77. package/template/.claude/agents/12-performance/performance-profiler.md +115 -108
  78. package/template/.claude/agents/12-performance/query-optimizer.md +124 -116
  79. package/template/.claude/agents/12-performance/render-optimizer.md +154 -148
  80. package/template/.claude/agents/13-debugging/build-error-fixer.md +207 -188
  81. package/template/.claude/agents/13-debugging/debugger.md +149 -137
  82. package/template/.claude/agents/13-debugging/error-stack-analyzer.md +141 -131
  83. package/template/.claude/agents/13-debugging/network-debugger.md +208 -185
  84. package/template/.claude/agents/13-debugging/runtime-error-fixer.md +181 -173
  85. package/template/.claude/agents/13-debugging/type-error-resolver.md +185 -173
  86. package/template/.claude/agents/14-validation/final-validator.md +93 -83
  87. package/template/.claude/agents/_backup/analyzer.md +134 -125
  88. package/template/.claude/agents/_backup/code-reviewer.md +279 -272
  89. package/template/.claude/agents/_backup/commit-manager.md +219 -212
  90. package/template/.claude/agents/_backup/debugger.md +280 -271
  91. package/template/.claude/agents/_backup/documenter.md +237 -220
  92. package/template/.claude/agents/_backup/domain-updater.md +197 -194
  93. package/template/.claude/agents/_backup/final-validator.md +169 -164
  94. package/template/.claude/agents/_backup/orchestrator.md +149 -138
  95. package/template/.claude/agents/_backup/performance.md +232 -228
  96. package/template/.claude/agents/_backup/quality-checker.md +240 -240
  97. package/template/.claude/agents/_backup/research.md +315 -299
  98. package/template/.claude/agents/_backup/security-auditor.md +192 -186
  99. package/template/.claude/agents/_backup/tester.md +566 -564
  100. package/template/.claude/agents/_backup/ui-ux-reviewer.md +247 -242
  101. package/template/.claude/commands/feature.md +48 -48
  102. package/template/.claude/config/README.md +30 -30
  103. package/template/.claude/config/mcp-config.json +344 -330
  104. package/template/.claude/config/project-config.json +53 -53
  105. package/template/.claude/config/quality-gates.json +46 -46
  106. package/template/.claude/config/security-rules.json +45 -45
  107. package/template/.claude/config/testing-config.json +164 -168
  108. package/template/.claude/hooks/SETUP.md +126 -126
  109. package/template/.claude/hooks/run-hook.ts +176 -172
  110. package/template/.claude/hooks/stop-validator.ts +825 -353
  111. package/template/.claude/hooks/user-prompt-submit.ts +886 -794
  112. package/template/.claude/scripts/mcp-quick-install.ts +151 -151
  113. package/template/.claude/scripts/setup-mcps.ts +651 -628
  114. package/template/.claude/settings.json +275 -276
  115. package/template/.claude/skills/bun-runtime/SKILL.md +430 -430
  116. package/template/.claude/skills/codebase-knowledge/SKILL.md +145 -145
  117. package/template/.claude/skills/codebase-knowledge/domains/claude-system.md +431 -403
  118. package/template/.claude/skills/codebase-knowledge/domains/mcp-integration.md +295 -281
  119. package/template/.claude/skills/debugging-patterns/SKILL.md +485 -484
  120. package/template/.claude/skills/docker-patterns/SKILL.md +555 -547
  121. package/template/.claude/skills/docs-tracker/SKILL.md +239 -239
  122. package/template/.claude/skills/final-check/SKILL.md +284 -284
  123. package/template/.claude/skills/git-workflow/SKILL.md +454 -454
  124. package/template/.claude/skills/mongoose-patterns/SKILL.md +499 -512
  125. package/template/.claude/skills/nextjs-app-router/SKILL.md +327 -337
  126. package/template/.claude/skills/performance-patterns/SKILL.md +547 -549
  127. package/template/.claude/skills/playwright-automation/SKILL.md +438 -438
  128. package/template/.claude/skills/quality-gate/SKILL.md +294 -294
  129. package/template/.claude/skills/react-patterns/SKILL.md +389 -376
  130. package/template/.claude/skills/research-cache/SKILL.md +222 -207
  131. package/template/.claude/skills/security-scan/SKILL.md +222 -222
  132. package/template/.claude/skills/shadcn-ui/SKILL.md +511 -520
  133. package/template/.claude/skills/tailwind-patterns/SKILL.md +465 -467
  134. package/template/.claude/skills/test-coverage/SKILL.md +467 -464
  135. package/template/.claude/skills/trpc-api/SKILL.md +434 -435
  136. package/template/.claude/skills/typescript-strict/SKILL.md +367 -368
  137. package/template/.claude/skills/ui-ux-audit/SKILL.md +254 -254
  138. package/template/.claude/skills/zod-validation/SKILL.md +403 -405
  139. package/template/CLAUDE.md +25 -25
@@ -1,81 +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.string()
20
- .trim()
21
- .min(1)
22
- .max(100)
23
- .regex(/^[a-zA-Z0-9\s]+$/);
24
-
25
- // Email
26
- const emailSchema = z.string()
27
- .email()
28
- .toLowerCase();
29
-
30
- // HTML-safe (escape)
31
- const htmlSchema = z.string()
32
- .transform(escapeHtml);
33
- ```
34
-
35
- ## XSS Prevention
36
-
37
- ```typescript
38
- // NEVER render raw HTML
39
- res.send(userInput); // DANGEROUS
40
-
41
- // ALWAYS escape
42
- import { escapeHtml } from '@/utils/security';
43
- res.send(escapeHtml(userInput));
44
- ```
45
-
46
- ## SQL/NoSQL Injection
47
-
48
- ```typescript
49
- // NEVER concatenate queries
50
- db.find({ $where: `this.name == '${input}'` }); // DANGEROUS
51
-
52
- // ALWAYS use parameterized
53
- db.find({ name: input }); // Safe with Mongoose
54
- ```
55
-
56
- ## File Upload
57
-
58
- ```typescript
59
- // Validate file type
60
- const allowedTypes = ['image/png', 'image/jpeg', 'application/pdf'];
61
- if (!allowedTypes.includes(file.mimetype)) {
62
- throw new Error('Invalid file type');
63
- }
64
-
65
- // Validate file size
66
- if (file.size > 5 * 1024 * 1024) { // 5MB
67
- throw new Error('File too large');
68
- }
69
-
70
- // Generate safe filename
71
- const safeName = `${uuid()}.${extension}`;
72
- ```
73
-
74
- ## Checklist
75
-
76
- - [ ] All inputs validated with Zod
77
- - [ ] HTML escaped before render
78
- - [ ] No raw query concatenation
79
- - [ ] File uploads validated
80
- - [ ] URL parameters validated
81
- - [ ] 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,87 +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
- ```bash
17
- # Check user ID source
18
- grep -rn "userId" server/ --include="*.ts" | grep -v "ctx\."
19
- ```
20
-
21
- ### A02: Cryptographic Failures
22
- ```bash
23
- # Check password handling
24
- grep -rn "password" server/ --include="*.ts" | grep -v "hash\|verify"
25
- ```
26
-
27
- ### A03: Injection
28
- ```bash
29
- # Check for raw queries
30
- grep -rn "\$where\|eval(" server/ --include="*.ts"
31
- ```
32
-
33
- ### A04: Insecure Design
34
- - Missing rate limiting
35
- - No input validation
36
- - Missing authentication
37
-
38
- ### A05: Security Misconfiguration
39
- ```bash
40
- # Check CORS settings
41
- grep -rn "cors\|Access-Control" server/ --include="*.ts"
42
- ```
43
-
44
- ### A06: Vulnerable Components
45
- ```bash
46
- # Check for vulnerabilities
47
- bunx audit
48
- ```
49
-
50
- ### A07: Auth Failures
51
- ```bash
52
- # Check session handling
53
- grep -rn "session\|token" server/ --include="*.ts"
54
- ```
55
-
56
- ### A08: Integrity Failures
57
- - No signature verification
58
- - Unsafe deserialization
59
-
60
- ### A09: Logging Failures
61
- - Missing security logs
62
- - Logging sensitive data
63
-
64
- ### A10: SSRF
65
- ```bash
66
- # Check external requests
67
- grep -rn "fetch\|axios\|http" server/ --include="*.ts"
68
- ```
69
-
70
- ## Checklist Output
71
-
72
- ```markdown
73
- ## OWASP Audit
74
-
75
- | # | Vulnerability | Status | Notes |
76
- |---|---------------|--------|-------|
77
- | A01 | Broken Access Control | PASS | User ID from session |
78
- | A02 | Cryptographic Failures | PASS | bcrypt used |
79
- | A03 | Injection | PASS | ORM only |
80
- | A04 | Insecure Design | WARN | Add rate limiting |
81
- | A05 | Security Misconfiguration | PASS | CORS configured |
82
- | A06 | Vulnerable Components | PASS | No vulnerabilities |
83
- | A07 | Auth Failures | PASS | JWT with refresh |
84
- | A08 | Integrity Failures | PASS | Signed tokens |
85
- | A09 | Logging Failures | WARN | Add security logs |
86
- | A10 | SSRF | PASS | No external URLs from user |
87
- ```
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,95 +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
- ```typescript
17
- // Middleware
18
- export function requireRole(...roles: string[]) {
19
- return async (ctx: Context, next: Next) => {
20
- if (!roles.includes(ctx.user.role)) {
21
- throw new ForbiddenError('Insufficient permissions');
22
- }
23
- await next();
24
- };
25
- }
26
-
27
- // Usage
28
- app.get('/admin', requireRole('admin'), adminHandler);
29
- ```
30
-
31
- ### Resource Ownership
32
- ```typescript
33
- // CORRECT - Check ownership
34
- async function updateResource(ctx: Context, resourceId: string) {
35
- const resource = await Resource.findById(resourceId);
36
-
37
- if (resource.userId.toString() !== ctx.user._id.toString()) {
38
- throw new ForbiddenError('Not your resource');
39
- }
40
-
41
- // Proceed with update
42
- }
43
- ```
44
-
45
- ### Attribute-Based Access Control (ABAC)
46
- ```typescript
47
- // Check multiple conditions
48
- async function canAccess(user: User, resource: Resource): boolean {
49
- return (
50
- resource.isPublic ||
51
- resource.userId.equals(user._id) ||
52
- resource.sharedWith.includes(user._id) ||
53
- user.role === 'admin'
54
- );
55
- }
56
- ```
57
-
58
- ## Detection Commands
59
-
60
- ```bash
61
- # Find protected routes
62
- grep -rn "protect\|auth\|requireRole" server/ --include="*.ts"
63
-
64
- # Find resource access
65
- grep -rn "findById\|findOne" server/ --include="*.ts"
66
-
67
- # Check for ownership validation
68
- grep -rn "userId.*ctx\|owner" server/ --include="*.ts"
69
- ```
70
-
71
- ## Checklist
72
-
73
- - [ ] All sensitive routes protected
74
- - [ ] Role checks on admin routes
75
- - [ ] Ownership verified before update/delete
76
- - [ ] No user ID from request body
77
- - [ ] Proper error messages (403 vs 404)
78
- - [ ] Rate limiting on sensitive routes
79
-
80
- ## Output Format
81
-
82
- ```markdown
83
- ## Permission Audit
84
-
85
- ### Protected Routes
86
- | Route | Protection | Roles |
87
- |-------|------------|-------|
88
- | POST /admin | requireRole | admin |
89
- | PUT /users/:id | ownership | owner |
90
-
91
- ### Issues Found
92
- | Route | Issue | Fix |
93
- |-------|-------|-----|
94
- | DELETE /posts/:id | No ownership check | Add owner verification |
95
- ```
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
+ ```