rebar-mcp 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. package/.claude/agents/template-writer.md +43 -0
  2. package/.claude/agents/test-runner.md +47 -0
  3. package/.claude/mcp.json +9 -0
  4. package/.claude/settings.json +29 -0
  5. package/.claude/skills/ /SKILL.md +21 -0
  6. package/.claude/skills/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/SKILL.md +21 -0
  7. package/.claude/skills/bmmibwetxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/SKILL.md +21 -0
  8. package/.claude/skills/bmmibwjgvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/SKILL.md +21 -0
  9. package/.claude/skills/bmmibwsesxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/SKILL.md +21 -0
  10. package/.claude/skills/bmmibwxufxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/SKILL.md +21 -0
  11. package/.claude/skills/bmmibx3r9xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/SKILL.md +21 -0
  12. package/.claude/skills/bmmji0lrkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/SKILL.md +21 -0
  13. package/.claude/skills/bmmjiniphxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/SKILL.md +21 -0
  14. package/.claude/skills/bmmjio86zxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/SKILL.md +21 -0
  15. package/.claude/skills/bmmjiolfbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/SKILL.md +21 -0
  16. package/.claude/skills/bmmjit1lvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/SKILL.md +21 -0
  17. package/.claude/skills/bmmjita1qxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/SKILL.md +21 -0
  18. package/.claude/skills/bnd-mmibweu3/SKILL.md +21 -0
  19. package/.claude/skills/bnd-mmibwjh4/SKILL.md +21 -0
  20. package/.claude/skills/bnd-mmibwsey/SKILL.md +21 -0
  21. package/.claude/skills/bnd-mmibwxup/SKILL.md +21 -0
  22. package/.claude/skills/bnd-mmibx3rg/SKILL.md +21 -0
  23. package/.claude/skills/bnd-mmji0lrp/SKILL.md +21 -0
  24. package/.claude/skills/bnd-mmjinipm/SKILL.md +21 -0
  25. package/.claude/skills/bnd-mmjio875/SKILL.md +21 -0
  26. package/.claude/skills/bnd-mmjiolfg/SKILL.md +21 -0
  27. package/.claude/skills/bnd-mmjit1m3/SKILL.md +21 -0
  28. package/.claude/skills/bnd-mmjita1x/SKILL.md +21 -0
  29. package/.claude/skills/coercion-test/SKILL.md +50 -0
  30. package/.claude/skills/large-skill/SKILL.md +21 -0
  31. package/.claude/skills/long-desc-skill/SKILL.md +21 -0
  32. package/.claude/skills/mcp-dev/SKILL.md +61 -0
  33. package/.claude/skills/nl-mmibweus/SKILL.md +25 -0
  34. package/.claude/skills/nl-mmibwjhf/SKILL.md +25 -0
  35. package/.claude/skills/nl-mmibwsf7/SKILL.md +25 -0
  36. package/.claude/skills/nl-mmibwxvq/SKILL.md +25 -0
  37. package/.claude/skills/nl-mmibx3rt/SKILL.md +25 -0
  38. package/.claude/skills/nl-mmji0lrz/SKILL.md +25 -0
  39. package/.claude/skills/nl-mmjinipx/SKILL.md +25 -0
  40. package/.claude/skills/nl-mmjio87f/SKILL.md +25 -0
  41. package/.claude/skills/nl-mmjiolfs/SKILL.md +25 -0
  42. package/.claude/skills/nl-mmjit1mc/SKILL.md +25 -0
  43. package/.claude/skills/nl-mmjita26/SKILL.md +25 -0
  44. package/.claude/skills/rapid-1/SKILL.md +21 -0
  45. package/.claude/skills/rapid-2/SKILL.md +21 -0
  46. package/.claude/skills/rapid-3/SKILL.md +21 -0
  47. package/.claude/skills/rapid-4/SKILL.md +21 -0
  48. package/.claude/skills/rapid-5/SKILL.md +21 -0
  49. package/.claude/skills/test/", /"malicious/": /"true/SKILL.md" +69 -0
  50. package/.claude/skills/test-emoji-/360/237/230/200-skill/SKILL.md +69 -0
  51. package/.claude/skills/test-skill/SKILL.md +69 -0
  52. package/.claude/skills/test; rm -rf /; skill/SKILL.md +69 -0
  53. package/.claude/skills/test<script>alert(1)</script>skill/SKILL.md +69 -0
  54. package/.claudeignore +5 -0
  55. package/.mcp.json +3 -0
  56. package/CHANGELOG.md +29 -0
  57. package/CLAUDE.md +76 -0
  58. package/LICENSE +21 -0
  59. package/README.md +149 -0
  60. package/ROADMAP.md +526 -0
  61. package/ccboot-PRD-v1.0.docx.md +732 -0
  62. package/ccboot-v1.2.0-enforcement-spec.md +1272 -0
  63. package/dist/cli.d.ts +3 -0
  64. package/dist/cli.d.ts.map +1 -0
  65. package/dist/cli.js +674 -0
  66. package/dist/cli.js.map +1 -0
  67. package/dist/constants.d.ts +25 -0
  68. package/dist/constants.d.ts.map +1 -0
  69. package/dist/constants.js +118 -0
  70. package/dist/constants.js.map +1 -0
  71. package/dist/index.d.ts +3 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +47 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/schemas/common.d.ts +62 -0
  76. package/dist/schemas/common.d.ts.map +1 -0
  77. package/dist/schemas/common.js +15 -0
  78. package/dist/schemas/common.js.map +1 -0
  79. package/dist/schemas/scaffolding.d.ts +277 -0
  80. package/dist/schemas/scaffolding.d.ts.map +1 -0
  81. package/dist/schemas/scaffolding.js +133 -0
  82. package/dist/schemas/scaffolding.js.map +1 -0
  83. package/dist/services/claudemd-generator.d.ts +16 -0
  84. package/dist/services/claudemd-generator.d.ts.map +1 -0
  85. package/dist/services/claudemd-generator.js +426 -0
  86. package/dist/services/claudemd-generator.js.map +1 -0
  87. package/dist/services/codex-generator.d.ts +6 -0
  88. package/dist/services/codex-generator.d.ts.map +1 -0
  89. package/dist/services/codex-generator.js +35 -0
  90. package/dist/services/codex-generator.js.map +1 -0
  91. package/dist/services/cursor-generator.d.ts +15 -0
  92. package/dist/services/cursor-generator.d.ts.map +1 -0
  93. package/dist/services/cursor-generator.js +134 -0
  94. package/dist/services/cursor-generator.js.map +1 -0
  95. package/dist/services/file-ops.d.ts +48 -0
  96. package/dist/services/file-ops.d.ts.map +1 -0
  97. package/dist/services/file-ops.js +153 -0
  98. package/dist/services/file-ops.js.map +1 -0
  99. package/dist/services/output-formatter.d.ts +57 -0
  100. package/dist/services/output-formatter.d.ts.map +1 -0
  101. package/dist/services/output-formatter.js +88 -0
  102. package/dist/services/output-formatter.js.map +1 -0
  103. package/dist/services/platform-detect.d.ts +14 -0
  104. package/dist/services/platform-detect.d.ts.map +1 -0
  105. package/dist/services/platform-detect.js +63 -0
  106. package/dist/services/platform-detect.js.map +1 -0
  107. package/dist/services/project-analyzer.d.ts +71 -0
  108. package/dist/services/project-analyzer.d.ts.map +1 -0
  109. package/dist/services/project-analyzer.js +595 -0
  110. package/dist/services/project-analyzer.js.map +1 -0
  111. package/dist/services/rules-engine.d.ts +41 -0
  112. package/dist/services/rules-engine.d.ts.map +1 -0
  113. package/dist/services/rules-engine.js +304 -0
  114. package/dist/services/rules-engine.js.map +1 -0
  115. package/dist/services/strictness.d.ts +37 -0
  116. package/dist/services/strictness.d.ts.map +1 -0
  117. package/dist/services/strictness.js +182 -0
  118. package/dist/services/strictness.js.map +1 -0
  119. package/dist/services/template-engine.d.ts +16 -0
  120. package/dist/services/template-engine.d.ts.map +1 -0
  121. package/dist/services/template-engine.js +85 -0
  122. package/dist/services/template-engine.js.map +1 -0
  123. package/dist/services/validation.d.ts +41 -0
  124. package/dist/services/validation.d.ts.map +1 -0
  125. package/dist/services/validation.js +104 -0
  126. package/dist/services/validation.js.map +1 -0
  127. package/dist/services/windsurf-generator.d.ts +15 -0
  128. package/dist/services/windsurf-generator.d.ts.map +1 -0
  129. package/dist/services/windsurf-generator.js +127 -0
  130. package/dist/services/windsurf-generator.js.map +1 -0
  131. package/dist/tests/enforcement.test.d.ts +2 -0
  132. package/dist/tests/enforcement.test.d.ts.map +1 -0
  133. package/dist/tests/enforcement.test.js +541 -0
  134. package/dist/tests/enforcement.test.js.map +1 -0
  135. package/dist/tests/enterprise.test.d.ts +2 -0
  136. package/dist/tests/enterprise.test.d.ts.map +1 -0
  137. package/dist/tests/enterprise.test.js +353 -0
  138. package/dist/tests/enterprise.test.js.map +1 -0
  139. package/dist/tests/fuzzing.test.d.ts +2 -0
  140. package/dist/tests/fuzzing.test.d.ts.map +1 -0
  141. package/dist/tests/fuzzing.test.js +596 -0
  142. package/dist/tests/fuzzing.test.js.map +1 -0
  143. package/dist/tests/knowledge.test.d.ts +2 -0
  144. package/dist/tests/knowledge.test.d.ts.map +1 -0
  145. package/dist/tests/knowledge.test.js +292 -0
  146. package/dist/tests/knowledge.test.js.map +1 -0
  147. package/dist/tests/management.test.d.ts +2 -0
  148. package/dist/tests/management.test.d.ts.map +1 -0
  149. package/dist/tests/management.test.js +338 -0
  150. package/dist/tests/management.test.js.map +1 -0
  151. package/dist/tests/scaffolding.test.d.ts +2 -0
  152. package/dist/tests/scaffolding.test.d.ts.map +1 -0
  153. package/dist/tests/scaffolding.test.js +419 -0
  154. package/dist/tests/scaffolding.test.js.map +1 -0
  155. package/dist/tests/test-utils.d.ts +76 -0
  156. package/dist/tests/test-utils.d.ts.map +1 -0
  157. package/dist/tests/test-utils.js +171 -0
  158. package/dist/tests/test-utils.js.map +1 -0
  159. package/dist/tests/tool-harness.d.ts +18 -0
  160. package/dist/tests/tool-harness.d.ts.map +1 -0
  161. package/dist/tests/tool-harness.js +51 -0
  162. package/dist/tests/tool-harness.js.map +1 -0
  163. package/dist/tools/enterprise.d.ts +8 -0
  164. package/dist/tools/enterprise.d.ts.map +1 -0
  165. package/dist/tools/enterprise.js +571 -0
  166. package/dist/tools/enterprise.js.map +1 -0
  167. package/dist/tools/knowledge.d.ts +7 -0
  168. package/dist/tools/knowledge.d.ts.map +1 -0
  169. package/dist/tools/knowledge.js +120 -0
  170. package/dist/tools/knowledge.js.map +1 -0
  171. package/dist/tools/management.d.ts +10 -0
  172. package/dist/tools/management.d.ts.map +1 -0
  173. package/dist/tools/management.js +1541 -0
  174. package/dist/tools/management.js.map +1 -0
  175. package/dist/tools/scaffolding.d.ts +8 -0
  176. package/dist/tools/scaffolding.d.ts.map +1 -0
  177. package/dist/tools/scaffolding.js +736 -0
  178. package/dist/tools/scaffolding.js.map +1 -0
  179. package/dist/types.d.ts +54 -0
  180. package/dist/types.d.ts.map +1 -0
  181. package/dist/types.js +5 -0
  182. package/dist/types.js.map +1 -0
  183. package/landing/app/layout.tsx +30 -0
  184. package/landing/app/page.tsx +944 -0
  185. package/landing/next-env.d.ts +6 -0
  186. package/landing/next.config.js +6 -0
  187. package/landing/package-lock.json +896 -0
  188. package/landing/package.json +20 -0
  189. package/landing/tsconfig.json +40 -0
  190. package/package.json +49 -0
  191. package/rebar-v2.0.0-platform-spec.md +1567 -0
  192. package/server.json +20 -0
  193. package/src/cli.ts +735 -0
  194. package/src/constants.ts +131 -0
  195. package/src/index.ts +54 -0
  196. package/src/schemas/common.ts +22 -0
  197. package/src/schemas/scaffolding.ts +161 -0
  198. package/src/services/claudemd-generator.ts +481 -0
  199. package/src/services/codex-generator.ts +44 -0
  200. package/src/services/cursor-generator.ts +153 -0
  201. package/src/services/file-ops.ts +172 -0
  202. package/src/services/platform-detect.ts +80 -0
  203. package/src/services/project-analyzer.ts +690 -0
  204. package/src/services/rules-engine.ts +353 -0
  205. package/src/services/strictness.ts +202 -0
  206. package/src/services/template-engine.ts +119 -0
  207. package/src/services/validation.ts +138 -0
  208. package/src/services/windsurf-generator.ts +145 -0
  209. package/src/tests/enforcement.test.ts +794 -0
  210. package/src/tests/enterprise.test.ts +483 -0
  211. package/src/tests/fuzzing.test.ts +690 -0
  212. package/src/tests/knowledge.test.ts +371 -0
  213. package/src/tests/management.test.ts +451 -0
  214. package/src/tests/scaffolding.test.ts +575 -0
  215. package/src/tests/test-utils.ts +206 -0
  216. package/src/tests/tool-harness.ts +70 -0
  217. package/src/tools/enterprise.ts +666 -0
  218. package/src/tools/knowledge.ts +162 -0
  219. package/src/tools/management.ts +1706 -0
  220. package/src/tools/scaffolding.ts +909 -0
  221. package/src/types.ts +93 -0
  222. package/supabase/.temp/cli-latest +1 -0
  223. package/supabase/.temp/gotrue-version +1 -0
  224. package/supabase/.temp/pooler-url +1 -0
  225. package/supabase/.temp/postgres-version +1 -0
  226. package/supabase/.temp/project-ref +1 -0
  227. package/supabase/.temp/rest-version +1 -0
  228. package/supabase/.temp/storage-migration +1 -0
  229. package/supabase/.temp/storage-version +1 -0
  230. package/templates/agents/explore.md +41 -0
  231. package/templates/agents/plan.md +73 -0
  232. package/templates/agents/security-auditor.md +77 -0
  233. package/templates/agents/test-runner.md +60 -0
  234. package/templates/claudemd/fastapi.md +49 -0
  235. package/templates/claudemd/monorepo.md +48 -0
  236. package/templates/claudemd/nextjs.md +52 -0
  237. package/templates/claudemd/react-spa.md +50 -0
  238. package/templates/claudemd/springboot.md +50 -0
  239. package/templates/hooks/danger-blocker.json +11 -0
  240. package/templates/hooks/format-on-write.json +17 -0
  241. package/templates/hooks/lint-on-write.json +16 -0
  242. package/templates/hooks/secret-detector.json +11 -0
  243. package/templates/skills/code-review.md +68 -0
  244. package/templates/skills/documentation.md +62 -0
  245. package/templates/skills/performance-audit.md +80 -0
  246. package/templates/skills/security-scan.md +66 -0
  247. package/templates/skills/test-writer.md +56 -0
  248. package/tsconfig.json +19 -0
@@ -0,0 +1,68 @@
1
+ ---
2
+ name: code-review
3
+ description: Reviews code changes for security, correctness, performance, and maintainability
4
+ invocation: auto
5
+ context: fork
6
+ agent_type: general-purpose
7
+ allowed_tools:
8
+ - Read
9
+ - Grep
10
+ - Glob
11
+ - Bash
12
+ ---
13
+
14
+ # Code Review
15
+
16
+ You are a senior staff engineer performing a thorough code review. Your review should
17
+ catch real bugs before production, not nitpick formatting.
18
+
19
+ ## What to Review
20
+
21
+ ### 1. Security (Critical)
22
+ - SQL injection, XSS, command injection, path traversal
23
+ - Hardcoded secrets, API keys, or credentials
24
+ - Missing authentication/authorization checks
25
+ - Unsafe deserialization of user input
26
+ - Logging sensitive data (passwords, tokens, PII)
27
+
28
+ ### 2. Correctness (Critical)
29
+ - Logic errors, off-by-one mistakes, null dereferences
30
+ - Race conditions in concurrent code
31
+ - Missing error handling for I/O operations
32
+ - Incorrect types or unsafe casts
33
+ - Edge cases: empty arrays, zero values, undefined, null
34
+
35
+ ### 3. Performance (Warning)
36
+ - N+1 database queries (loops that trigger queries)
37
+ - Missing database indexes for common query patterns
38
+ - Unbounded data fetching (no pagination/limits)
39
+ - Memory leaks: unclosed streams, unremoved event listeners
40
+ - Sequential async calls that could be parallelized
41
+
42
+ ### 4. Maintainability (Suggestion)
43
+ - Functions over 50 lines that should be extracted
44
+ - Duplicated logic that should be shared
45
+ - Unclear naming that will confuse future developers
46
+ - Missing type safety that invites runtime errors
47
+
48
+ ## Output Format
49
+
50
+ Group findings by severity. For each finding:
51
+
52
+ ```
53
+ [SEVERITY] file:line — Brief title
54
+ Problem: What's wrong and why it matters
55
+ Fix: Specific code change to make
56
+ ```
57
+
58
+ Severities:
59
+ - **CRITICAL**: Must fix — security vulnerability or data loss risk
60
+ - **BUG**: Likely defect — incorrect behavior in normal use
61
+ - **WARNING**: Should fix — performance issue or code smell
62
+ - **SUGGESTION**: Consider — improvement for readability/maintainability
63
+
64
+ ## Rules
65
+ - Never flag formatting issues (linters handle that)
66
+ - Never suggest adding comments to self-documenting code
67
+ - If the code is clean, say so — don't invent issues
68
+ - Be specific: "Line 42: `userId` can be null here" not "check for null values"
@@ -0,0 +1,62 @@
1
+ ---
2
+ name: documentation
3
+ description: Generates and updates project documentation from code analysis
4
+ invocation: user
5
+ context: inline
6
+ allowed_tools:
7
+ - Read
8
+ - Write
9
+ - Grep
10
+ - Glob
11
+ ---
12
+
13
+ # Documentation
14
+
15
+ Generate useful documentation, not documentation for documentation's sake.
16
+
17
+ ## What to Document
18
+
19
+ ### High Value (always worth documenting)
20
+ - **API endpoints**: Method, path, request/response schemas, auth requirements, examples
21
+ - **Architecture decisions**: Why we chose X over Y (create ADRs for these)
22
+ - **Setup procedures**: How to get the project running from scratch
23
+ - **Non-obvious behavior**: Code that does something surprising or counterintuitive
24
+ - **Domain terminology**: Business terms that appear in the code
25
+
26
+ ### Low Value (skip unless asked)
27
+ - Self-documenting function signatures
28
+ - Trivial getters/setters
29
+ - Framework boilerplate
30
+ - Comments that restate the code
31
+
32
+ ## Documentation Formats
33
+
34
+ ### API Documentation
35
+ ```
36
+ ## POST /api/users
37
+
38
+ Creates a new user account.
39
+
40
+ **Auth**: Bearer token (admin role required)
41
+ **Rate limit**: 10 requests/minute
42
+
43
+ **Request body**:
44
+ | Field | Type | Required | Description |
45
+ |----------|--------|----------|-----------------------|
46
+ | email | string | yes | Valid email address |
47
+ | name | string | yes | Display name (2-100 chars) |
48
+
49
+ **Response**: 201 Created
50
+ **Errors**: 400 (validation), 409 (email taken), 429 (rate limit)
51
+ ```
52
+
53
+ ### Code Comments
54
+ - Use JSDoc/docstrings for public API functions
55
+ - Explain WHY, not WHAT (the code shows what)
56
+ - Link to related ADRs or tickets for complex logic
57
+
58
+ ## Rules
59
+ - Write for someone who just joined the team
60
+ - Include runnable examples, not pseudocode
61
+ - Keep docs next to the code they describe
62
+ - If a doc is wrong, it's worse than no doc — verify accuracy
@@ -0,0 +1,80 @@
1
+ ---
2
+ name: performance-audit
3
+ description: Finds performance bottlenecks — N+1 queries, memory leaks, unnecessary re-renders, bundle bloat
4
+ invocation: user
5
+ context: fork
6
+ agent_type: general-purpose
7
+ allowed_tools:
8
+ - Read
9
+ - Grep
10
+ - Glob
11
+ ---
12
+
13
+ # Performance Audit
14
+
15
+ Find real performance bottlenecks that affect user experience,
16
+ not micro-optimizations that save nanoseconds.
17
+
18
+ ## Checks (by impact)
19
+
20
+ ### Database (High Impact)
21
+ - **N+1 queries**: Database calls inside `for` loops, `.map()`, or `.forEach()`
22
+ ```
23
+ // BAD: 1 + N queries
24
+ const users = await db.users.findAll();
25
+ for (const user of users) {
26
+ user.orders = await db.orders.findByUserId(user.id); // N queries!
27
+ }
28
+
29
+ // GOOD: 2 queries
30
+ const users = await db.users.findAll({ include: ['orders'] });
31
+ ```
32
+ - **Missing indexes**: WHERE/ORDER BY columns without indexes
33
+ - **Unbounded queries**: `SELECT *` without LIMIT on large tables
34
+ - **Unnecessary eager loading**: Loading relations that aren't used
35
+
36
+ ### Frontend (High Impact)
37
+ - **Unnecessary re-renders**: Components re-rendering when props haven't changed
38
+ - Missing `React.memo()` on expensive components
39
+ - Unstable object/array references in props (created inline every render)
40
+ - Missing `useMemo`/`useCallback` for expensive computations
41
+ - **Bundle size**: Large imports that could be lazy-loaded or tree-shaken
42
+ - `import moment from 'moment'` (use `date-fns` or `dayjs`)
43
+ - `import _ from 'lodash'` (use `lodash-es` with tree-shaking)
44
+ - Large components that should use `React.lazy()`
45
+
46
+ ### Async Patterns (Medium Impact)
47
+ - **Sequential awaits** that could be parallelized:
48
+ ```
49
+ // BAD: 600ms total
50
+ const a = await fetchA(); // 200ms
51
+ const b = await fetchB(); // 200ms
52
+ const c = await fetchC(); // 200ms
53
+
54
+ // GOOD: 200ms total
55
+ const [a, b, c] = await Promise.all([fetchA(), fetchB(), fetchC()]);
56
+ ```
57
+ - **Missing connection pooling** for database/HTTP connections
58
+ - **No request deduplication**: Same API called multiple times simultaneously
59
+
60
+ ### Memory (Medium Impact)
61
+ - **Event listener leaks**: `addEventListener` without `removeEventListener`
62
+ - **Timer leaks**: `setInterval` without `clearInterval` on cleanup
63
+ - **Subscription leaks**: Observable subscriptions without unsubscribe
64
+ - **Closure leaks**: Closures holding references to large objects
65
+
66
+ ## Output Format
67
+
68
+ ```
69
+ [IMPACT] Category — Title
70
+ File: path/to/file.ts:42
71
+ Issue: What the problem is
72
+ Evidence: How you identified it (query pattern, import size, etc.)
73
+ Fix: Specific solution with code example
74
+ Savings: Estimated improvement (e.g., "reduces API calls from N+1 to 2")
75
+ ```
76
+
77
+ ## Rules
78
+ - Focus on bottlenecks that affect P95 latency or real users
79
+ - Don't suggest premature optimization ("this loop runs 3 times")
80
+ - Always provide a concrete fix, not "consider optimizing"
@@ -0,0 +1,66 @@
1
+ ---
2
+ name: security-scan
3
+ description: Scans code for OWASP Top 10 vulnerabilities and security anti-patterns
4
+ invocation: auto
5
+ context: fork
6
+ agent_type: general-purpose
7
+ allowed_tools:
8
+ - Read
9
+ - Grep
10
+ - Glob
11
+ ---
12
+
13
+ # Security Scan
14
+
15
+ You are a security engineer performing a targeted vulnerability assessment.
16
+ Focus on exploitable issues, not theoretical concerns.
17
+
18
+ ## OWASP Top 10 Checks
19
+
20
+ ### A01: Broken Access Control
21
+ - Missing authorization checks on endpoints
22
+ - IDOR: User can access other users' resources by changing IDs
23
+ - Missing CORS restrictions on sensitive endpoints
24
+ - Directory traversal in file paths
25
+
26
+ ### A02: Cryptographic Failures
27
+ - Passwords stored in plaintext or with weak hashing (MD5, SHA1)
28
+ - Sensitive data transmitted without TLS
29
+ - Hardcoded encryption keys or IVs
30
+ - Use of deprecated crypto algorithms
31
+
32
+ ### A03: Injection
33
+ - SQL queries built with string concatenation
34
+ - Shell commands with unsanitized user input
35
+ - HTML rendered without escaping (XSS)
36
+ - NoSQL injection vectors
37
+
38
+ ### A05: Security Misconfiguration
39
+ - Debug mode enabled in production configs
40
+ - Default credentials in config files
41
+ - Stack traces exposed in error responses
42
+ - Permissive CORS (`Access-Control-Allow-Origin: *`)
43
+
44
+ ### A07: Authentication Failures
45
+ - No brute-force protection on login
46
+ - Session tokens in URLs or logs
47
+ - JWT without expiration or with `none` algorithm
48
+
49
+ ### A09: Logging Failures
50
+ - Sensitive data in logs (passwords, tokens, SSN, credit cards)
51
+ - Missing audit trail for privileged operations
52
+
53
+ ## Output Format
54
+
55
+ ```
56
+ [SEVERITY] OWASP-Category — Title
57
+ File: path/to/file.ts:42
58
+ Issue: Specific vulnerability description
59
+ Exploit: How an attacker could use this
60
+ Fix: Exact code change needed
61
+ ```
62
+
63
+ ## Rules
64
+ - Only flag real, exploitable vulnerabilities
65
+ - Always include a specific fix, not just "sanitize input"
66
+ - Prioritize: auth bypass > injection > data exposure > misconfiguration
@@ -0,0 +1,56 @@
1
+ ---
2
+ name: test-writer
3
+ description: Generates comprehensive tests matching the project's existing test patterns
4
+ invocation: user
5
+ context: inline
6
+ allowed_tools:
7
+ - Read
8
+ - Write
9
+ - Grep
10
+ - Glob
11
+ - Bash
12
+ ---
13
+
14
+ # Test Writer
15
+
16
+ You write tests that catch real bugs, not tests that just check if the code runs.
17
+
18
+ ## Before Writing
19
+
20
+ 1. **Read existing tests** — find 2-3 test files to understand:
21
+ - Which testing framework (Jest, Vitest, pytest, JUnit, etc.)
22
+ - Test file naming convention (`.test.ts`, `.spec.ts`, `_test.go`, etc.)
23
+ - Test location (colocated vs. `__tests__/` vs. `test/`)
24
+ - Mocking patterns used (jest.mock, vi.mock, unittest.mock, etc.)
25
+ - Setup/teardown patterns (beforeEach, fixtures, etc.)
26
+
27
+ 2. **Read the code under test** — understand:
28
+ - All public functions and their signatures
29
+ - Edge cases: What happens with null/undefined/empty/zero/negative inputs?
30
+ - Error paths: What exceptions can be thrown?
31
+ - Side effects: Database calls, API calls, file system operations
32
+
33
+ ## Test Writing Rules
34
+
35
+ ### Coverage Strategy
36
+ - **Happy path**: Normal inputs produce expected outputs
37
+ - **Edge cases**: Empty strings, empty arrays, zero, negative numbers, max values
38
+ - **Error cases**: Invalid inputs, network failures, permission errors
39
+ - **Boundary conditions**: First item, last item, exactly at limits
40
+
41
+ ### Quality Standards
42
+ - Each test has a descriptive name: `"returns empty array when user has no orders"`
43
+ - One assertion per concept (not one assertion per test)
44
+ - Tests are independent — no test relies on another test's side effects
45
+ - Mock external dependencies (APIs, databases) — never make real calls
46
+ - Use factories/fixtures for complex test data
47
+
48
+ ### Anti-Patterns to Avoid
49
+ - Testing implementation details (internal method calls, private state)
50
+ - Snapshot tests for logic (only use for UI rendering)
51
+ - Tests that pass when the code is broken
52
+ - Copy-pasting the implementation as the expected value
53
+
54
+ ## Output
55
+ Place test files where the project convention expects them.
56
+ Run the tests after writing to verify they pass.
package/tsconfig.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "Node16",
5
+ "moduleResolution": "Node16",
6
+ "outDir": "./dist",
7
+ "rootDir": "./src",
8
+ "strict": true,
9
+ "esModuleInterop": true,
10
+ "skipLibCheck": true,
11
+ "forceConsistentCasingInFileNames": true,
12
+ "resolveJsonModule": true,
13
+ "declaration": true,
14
+ "declarationMap": true,
15
+ "sourceMap": true
16
+ },
17
+ "include": ["src/**/*"],
18
+ "exclude": ["node_modules", "dist"]
19
+ }