superkit-mcp-server 1.0.2 → 1.1.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 (116) hide show
  1. package/ARCHITECTURE.md +102 -102
  2. package/README.md +67 -63
  3. package/SUPERKIT.md +168 -168
  4. package/agents/code-archaeologist.md +106 -0
  5. package/agents/coder.md +90 -90
  6. package/agents/data-engineer.md +28 -28
  7. package/agents/devops-engineer.md +242 -0
  8. package/agents/git-manager.md +203 -203
  9. package/agents/orchestrator.md +4 -0
  10. package/agents/penetration-tester.md +188 -0
  11. package/agents/performance-optimizer.md +187 -0
  12. package/agents/planner.md +270 -270
  13. package/agents/qa-automation-engineer.md +103 -0
  14. package/agents/quant-developer.md +32 -28
  15. package/agents/reviewer.md +100 -100
  16. package/agents/scout.md +222 -222
  17. package/agents/tester.md +274 -274
  18. package/agents/ui-designer.md +208 -208
  19. package/build/index.js +53 -1
  20. package/build/tools/validators/__tests__/apiSchema.test.js +23 -23
  21. package/build/tools/validators/__tests__/convertRules.test.js +5 -5
  22. package/build/tools/validators/__tests__/frontendDesign.test.js +12 -12
  23. package/build/tools/validators/__tests__/geoChecker.test.js +19 -19
  24. package/build/tools/validators/__tests__/mobileAudit.test.js +12 -12
  25. package/build/tools/validators/__tests__/reactPerformanceChecker.test.js +17 -17
  26. package/build/tools/validators/__tests__/securityScan.test.js +6 -6
  27. package/build/tools/validators/__tests__/seoChecker.test.js +16 -16
  28. package/build/tools/validators/__tests__/typeCoverage.test.js +14 -14
  29. package/package.json +33 -33
  30. package/skills/meta/README.md +30 -30
  31. package/skills/meta/api-design/SKILL.md +134 -134
  32. package/skills/meta/code-review/SKILL.md +44 -37
  33. package/skills/meta/code-review/checklists/pre-merge.md +25 -25
  34. package/skills/meta/code-review/workflows/architecture-pass.md +26 -26
  35. package/skills/meta/code-review/workflows/performance-pass.md +27 -27
  36. package/skills/meta/code-review/workflows/security-pass.md +29 -29
  37. package/skills/meta/compound-docs/SKILL.md +133 -133
  38. package/skills/meta/debug/SKILL.md +40 -40
  39. package/skills/meta/debug/templates/bug-report.template.md +31 -31
  40. package/skills/meta/debug/workflows/reproduce-issue.md +20 -20
  41. package/skills/meta/docker/SKILL.md +126 -126
  42. package/skills/meta/examples/supabase/SKILL.md +46 -46
  43. package/skills/meta/examples/supabase/references/best-practices.md +319 -319
  44. package/skills/meta/examples/supabase/references/common-patterns.md +373 -373
  45. package/skills/meta/examples/supabase/templates/migration-template.sql +49 -49
  46. package/skills/meta/examples/supabase/templates/rls-policy-template.sql +77 -77
  47. package/skills/meta/examples/supabase/workflows/debugging.md +260 -260
  48. package/skills/meta/examples/supabase/workflows/migration-workflow.md +211 -211
  49. package/skills/meta/examples/supabase/workflows/rls-policies.md +244 -244
  50. package/skills/meta/examples/supabase/workflows/schema-design.md +321 -321
  51. package/skills/meta/file-todos/SKILL.md +88 -88
  52. package/skills/meta/mobile/SKILL.md +140 -140
  53. package/skills/meta/nextjs/SKILL.md +101 -101
  54. package/skills/meta/performance/SKILL.md +130 -130
  55. package/skills/meta/react-patterns/SKILL.md +83 -83
  56. package/skills/meta/security/SKILL.md +114 -114
  57. package/skills/meta/session-resume/SKILL.md +96 -96
  58. package/skills/meta/tailwind/SKILL.md +139 -139
  59. package/skills/meta/testing/SKILL.md +43 -43
  60. package/skills/meta/testing/references/vitest-patterns.md +45 -45
  61. package/skills/meta/testing/templates/component-test.template.tsx +37 -37
  62. package/skills/tech/alpha-vantage/SKILL.md +142 -0
  63. package/skills/tech/alpha-vantage/references/commodities.md +153 -0
  64. package/skills/tech/alpha-vantage/references/economic-indicators.md +158 -0
  65. package/skills/tech/alpha-vantage/references/forex-crypto.md +154 -0
  66. package/skills/tech/alpha-vantage/references/fundamentals.md +223 -0
  67. package/skills/tech/alpha-vantage/references/intelligence.md +138 -0
  68. package/skills/tech/alpha-vantage/references/options.md +93 -0
  69. package/skills/tech/alpha-vantage/references/technical-indicators.md +374 -0
  70. package/skills/tech/alpha-vantage/references/time-series.md +157 -0
  71. package/skills/tech/financial-modeling/SKILL.md +18 -0
  72. package/skills/tech/financial-modeling/skills/3-statements/SKILL.md +368 -0
  73. package/skills/tech/financial-modeling/skills/3-statements/references/formatting.md +118 -0
  74. package/skills/tech/financial-modeling/skills/3-statements/references/formulas.md +292 -0
  75. package/skills/tech/financial-modeling/skills/3-statements/references/sec-filings.md +125 -0
  76. package/skills/tech/financial-modeling/skills/dcf-model/SKILL.md +1211 -0
  77. package/skills/tech/financial-modeling/skills/dcf-model/TROUBLESHOOTING.md +40 -0
  78. package/skills/tech/financial-modeling/skills/dcf-model/requirements.txt +8 -0
  79. package/skills/tech/financial-modeling/skills/dcf-model/scripts/validate_dcf.py +292 -0
  80. package/skills/tech/financial-modeling/skills/lbo-model/SKILL.md +236 -0
  81. package/skills/tech/financial-modeling/skills/merger-model/SKILL.md +108 -0
  82. package/skills/tech/intelligent-routing/SKILL.md +5 -5
  83. package/workflows/README.md +191 -191
  84. package/workflows/adr.md +174 -174
  85. package/workflows/changelog.md +74 -74
  86. package/workflows/compound.md +323 -323
  87. package/workflows/compound_health.md +74 -74
  88. package/workflows/create-agent-skill.md +139 -139
  89. package/workflows/cycle.md +144 -144
  90. package/workflows/deploy-docs.md +84 -84
  91. package/workflows/development-rules.md +37 -37
  92. package/workflows/doc.md +95 -95
  93. package/workflows/documentation-management.md +29 -29
  94. package/workflows/explore.md +146 -146
  95. package/workflows/generate_command.md +106 -106
  96. package/workflows/heal-skill.md +97 -97
  97. package/workflows/housekeeping.md +229 -229
  98. package/workflows/kit-setup.md +102 -102
  99. package/workflows/map-codebase.md +78 -0
  100. package/workflows/orchestration-protocol.md +38 -38
  101. package/workflows/plan-compound.md +439 -433
  102. package/workflows/plan_review.md +269 -248
  103. package/workflows/primary-workflow.md +32 -32
  104. package/workflows/promote_pattern.md +86 -86
  105. package/workflows/release-docs.md +82 -82
  106. package/workflows/report-bug.md +135 -135
  107. package/workflows/reproduce-bug.md +118 -118
  108. package/workflows/resolve_pr.md +133 -133
  109. package/workflows/resolve_todo.md +128 -128
  110. package/workflows/review-compound.md +376 -359
  111. package/workflows/skill-review.md +127 -127
  112. package/workflows/specs.md +257 -257
  113. package/workflows/triage-sprint.md +102 -102
  114. package/workflows/triage.md +152 -152
  115. package/workflows/work.md +399 -399
  116. package/workflows/xcode-test.md +93 -93
@@ -1,130 +1,130 @@
1
- # Performance Optimization Skill
2
-
3
- ## Overview
4
- Performance profiling, optimization techniques, and caching strategies.
5
-
6
- ## Core Web Vitals
7
-
8
- ### LCP (Largest Contentful Paint) < 2.5s
9
- ```typescript
10
- // Optimize images
11
- <Image
12
- src="/hero.jpg"
13
- alt="Hero"
14
- priority // Preload
15
- sizes="100vw"
16
- placeholder="blur"
17
- />
18
-
19
- // Preload critical resources
20
- <link rel="preload" href="/fonts/inter.woff2" as="font" crossOrigin="" />
21
- ```
22
-
23
- ### CLS (Cumulative Layout Shift) < 0.1
24
- ```css
25
- /* Reserve space for images */
26
- img {
27
- aspect-ratio: 16 / 9;
28
- width: 100%;
29
- height: auto;
30
- }
31
-
32
- /* Skeleton loaders */
33
- .skeleton {
34
- background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
35
- animation: shimmer 1.5s infinite;
36
- }
37
- ```
38
-
39
- ### INP (Interaction to Next Paint) < 200ms
40
- ```typescript
41
- // Defer non-critical work
42
- import { startTransition } from 'react';
43
-
44
- startTransition(() => {
45
- setExpensiveState(newValue);
46
- });
47
-
48
- // Use web workers for heavy computation
49
- const worker = new Worker('/heavy-task.js');
50
- worker.postMessage(data);
51
- ```
52
-
53
- ## JavaScript Optimization
54
-
55
- ### Code Splitting
56
- ```typescript
57
- // Dynamic imports
58
- const HeavyComponent = lazy(() => import('./HeavyComponent'));
59
-
60
- // Route-based splitting (Next.js does this automatically)
61
- import dynamic from 'next/dynamic';
62
- const Chart = dynamic(() => import('./Chart'), { ssr: false });
63
- ```
64
-
65
- ### Bundle Analysis
66
- ```bash
67
- # Next.js
68
- npx @next/bundle-analyzer
69
-
70
- # Webpack
71
- npx webpack-bundle-analyzer stats.json
72
- ```
73
-
74
- ### Tree Shaking
75
- ```typescript
76
- // ❌ Import entire library
77
- import _ from 'lodash';
78
- _.debounce(fn, 300);
79
-
80
- // ✅ Import specific function
81
- import debounce from 'lodash/debounce';
82
- debounce(fn, 300);
83
- ```
84
-
85
- ## Caching Strategies
86
-
87
- ### HTTP Caching
88
- ```typescript
89
- // Static assets (1 year)
90
- Cache-Control: public, max-age=31536000, immutable
91
-
92
- // API responses (5 minutes with revalidation)
93
- Cache-Control: public, max-age=300, stale-while-revalidate=60
94
- ```
95
-
96
- ### React Query / SWR
97
- ```typescript
98
- const { data } = useQuery({
99
- queryKey: ['users'],
100
- queryFn: fetchUsers,
101
- staleTime: 5 * 60 * 1000, // 5 minutes
102
- cacheTime: 30 * 60 * 1000, // 30 minutes
103
- });
104
- ```
105
-
106
- ### Service Worker
107
- ```typescript
108
- // Cache-first strategy for static assets
109
- self.addEventListener('fetch', (event) => {
110
- event.respondWith(
111
- caches.match(event.request).then((cached) => {
112
- return cached || fetch(event.request);
113
- })
114
- );
115
- });
116
- ```
117
-
118
- ## Database Query Optimization
119
- ```sql
120
- -- Add indexes
121
- CREATE INDEX idx_posts_user_date ON posts(user_id, created_at DESC);
122
-
123
- -- Avoid N+1
124
- SELECT posts.*, users.name
125
- FROM posts
126
- JOIN users ON posts.user_id = users.id;
127
-
128
- -- Use EXPLAIN ANALYZE
129
- EXPLAIN ANALYZE SELECT * FROM posts WHERE user_id = 123;
130
- ```
1
+ # Performance Optimization Skill
2
+
3
+ ## Overview
4
+ Performance profiling, optimization techniques, and caching strategies.
5
+
6
+ ## Core Web Vitals
7
+
8
+ ### LCP (Largest Contentful Paint) < 2.5s
9
+ ```typescript
10
+ // Optimize images
11
+ <Image
12
+ src="/hero.jpg"
13
+ alt="Hero"
14
+ priority // Preload
15
+ sizes="100vw"
16
+ placeholder="blur"
17
+ />
18
+
19
+ // Preload critical resources
20
+ <link rel="preload" href="/fonts/inter.woff2" as="font" crossOrigin="" />
21
+ ```
22
+
23
+ ### CLS (Cumulative Layout Shift) < 0.1
24
+ ```css
25
+ /* Reserve space for images */
26
+ img {
27
+ aspect-ratio: 16 / 9;
28
+ width: 100%;
29
+ height: auto;
30
+ }
31
+
32
+ /* Skeleton loaders */
33
+ .skeleton {
34
+ background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
35
+ animation: shimmer 1.5s infinite;
36
+ }
37
+ ```
38
+
39
+ ### INP (Interaction to Next Paint) < 200ms
40
+ ```typescript
41
+ // Defer non-critical work
42
+ import { startTransition } from 'react';
43
+
44
+ startTransition(() => {
45
+ setExpensiveState(newValue);
46
+ });
47
+
48
+ // Use web workers for heavy computation
49
+ const worker = new Worker('/heavy-task.js');
50
+ worker.postMessage(data);
51
+ ```
52
+
53
+ ## JavaScript Optimization
54
+
55
+ ### Code Splitting
56
+ ```typescript
57
+ // Dynamic imports
58
+ const HeavyComponent = lazy(() => import('./HeavyComponent'));
59
+
60
+ // Route-based splitting (Next.js does this automatically)
61
+ import dynamic from 'next/dynamic';
62
+ const Chart = dynamic(() => import('./Chart'), { ssr: false });
63
+ ```
64
+
65
+ ### Bundle Analysis
66
+ ```bash
67
+ # Next.js
68
+ npx @next/bundle-analyzer
69
+
70
+ # Webpack
71
+ npx webpack-bundle-analyzer stats.json
72
+ ```
73
+
74
+ ### Tree Shaking
75
+ ```typescript
76
+ // ❌ Import entire library
77
+ import _ from 'lodash';
78
+ _.debounce(fn, 300);
79
+
80
+ // ✅ Import specific function
81
+ import debounce from 'lodash/debounce';
82
+ debounce(fn, 300);
83
+ ```
84
+
85
+ ## Caching Strategies
86
+
87
+ ### HTTP Caching
88
+ ```typescript
89
+ // Static assets (1 year)
90
+ Cache-Control: public, max-age=31536000, immutable
91
+
92
+ // API responses (5 minutes with revalidation)
93
+ Cache-Control: public, max-age=300, stale-while-revalidate=60
94
+ ```
95
+
96
+ ### React Query / SWR
97
+ ```typescript
98
+ const { data } = useQuery({
99
+ queryKey: ['users'],
100
+ queryFn: fetchUsers,
101
+ staleTime: 5 * 60 * 1000, // 5 minutes
102
+ cacheTime: 30 * 60 * 1000, // 30 minutes
103
+ });
104
+ ```
105
+
106
+ ### Service Worker
107
+ ```typescript
108
+ // Cache-first strategy for static assets
109
+ self.addEventListener('fetch', (event) => {
110
+ event.respondWith(
111
+ caches.match(event.request).then((cached) => {
112
+ return cached || fetch(event.request);
113
+ })
114
+ );
115
+ });
116
+ ```
117
+
118
+ ## Database Query Optimization
119
+ ```sql
120
+ -- Add indexes
121
+ CREATE INDEX idx_posts_user_date ON posts(user_id, created_at DESC);
122
+
123
+ -- Avoid N+1
124
+ SELECT posts.*, users.name
125
+ FROM posts
126
+ JOIN users ON posts.user_id = users.id;
127
+
128
+ -- Use EXPLAIN ANALYZE
129
+ EXPLAIN ANALYZE SELECT * FROM posts WHERE user_id = 123;
130
+ ```
@@ -1,83 +1,83 @@
1
- # React Patterns Skill
2
-
3
- ## Overview
4
- Modern React patterns, hooks, and state management principles.
5
-
6
- ## Core Principles
7
-
8
- ### 1. Component Composition
9
- - Prefer composition over inheritance
10
- - Use children prop for flexibility
11
- - Create compound components for related UI
12
-
13
- ### 2. Hooks Best Practices
14
- ```tsx
15
- // Custom hook pattern
16
- function useUser(userId: string) {
17
- const [user, setUser] = useState<User | null>(null);
18
- const [loading, setLoading] = useState(true);
19
- const [error, setError] = useState<Error | null>(null);
20
-
21
- useEffect(() => {
22
- fetchUser(userId)
23
- .then(setUser)
24
- .catch(setError)
25
- .finally(() => setLoading(false));
26
- }, [userId]);
27
-
28
- return { user, loading, error };
29
- }
30
- ```
31
-
32
- ### 3. State Management
33
- - **Local state:** useState for component-level
34
- - **Shared state:** Context + useReducer
35
- - **Server state:** React Query, SWR
36
- - **Global state:** Zustand, Jotai
37
-
38
- ### 4. Performance Patterns
39
- ```tsx
40
- // Memoization
41
- const MemoizedComponent = React.memo(({ data }) => {
42
- return <div>{data.name}</div>;
43
- });
44
-
45
- // useMemo for expensive computations
46
- const sortedItems = useMemo(() => {
47
- return items.sort((a, b) => a.name.localeCompare(b.name));
48
- }, [items]);
49
-
50
- // useCallback for stable references
51
- const handleClick = useCallback(() => {
52
- doSomething(id);
53
- }, [id]);
54
- ```
55
-
56
- ### 5. Error Boundaries
57
- ```tsx
58
- class ErrorBoundary extends React.Component {
59
- state = { hasError: false };
60
-
61
- static getDerivedStateFromError(error) {
62
- return { hasError: true };
63
- }
64
-
65
- componentDidCatch(error, errorInfo) {
66
- logError(error, errorInfo);
67
- }
68
-
69
- render() {
70
- if (this.state.hasError) {
71
- return <FallbackUI />;
72
- }
73
- return this.props.children;
74
- }
75
- }
76
- ```
77
-
78
- ## Anti-Patterns to Avoid
79
- - ❌ Prop drilling (use Context instead)
80
- - ❌ Mutating state directly
81
- - ❌ Missing dependency arrays
82
- - ❌ Over-using useEffect
83
- - ❌ Inline function definitions in render
1
+ # React Patterns Skill
2
+
3
+ ## Overview
4
+ Modern React patterns, hooks, and state management principles.
5
+
6
+ ## Core Principles
7
+
8
+ ### 1. Component Composition
9
+ - Prefer composition over inheritance
10
+ - Use children prop for flexibility
11
+ - Create compound components for related UI
12
+
13
+ ### 2. Hooks Best Practices
14
+ ```tsx
15
+ // Custom hook pattern
16
+ function useUser(userId: string) {
17
+ const [user, setUser] = useState<User | null>(null);
18
+ const [loading, setLoading] = useState(true);
19
+ const [error, setError] = useState<Error | null>(null);
20
+
21
+ useEffect(() => {
22
+ fetchUser(userId)
23
+ .then(setUser)
24
+ .catch(setError)
25
+ .finally(() => setLoading(false));
26
+ }, [userId]);
27
+
28
+ return { user, loading, error };
29
+ }
30
+ ```
31
+
32
+ ### 3. State Management
33
+ - **Local state:** useState for component-level
34
+ - **Shared state:** Context + useReducer
35
+ - **Server state:** React Query, SWR
36
+ - **Global state:** Zustand, Jotai
37
+
38
+ ### 4. Performance Patterns
39
+ ```tsx
40
+ // Memoization
41
+ const MemoizedComponent = React.memo(({ data }) => {
42
+ return <div>{data.name}</div>;
43
+ });
44
+
45
+ // useMemo for expensive computations
46
+ const sortedItems = useMemo(() => {
47
+ return items.sort((a, b) => a.name.localeCompare(b.name));
48
+ }, [items]);
49
+
50
+ // useCallback for stable references
51
+ const handleClick = useCallback(() => {
52
+ doSomething(id);
53
+ }, [id]);
54
+ ```
55
+
56
+ ### 5. Error Boundaries
57
+ ```tsx
58
+ class ErrorBoundary extends React.Component {
59
+ state = { hasError: false };
60
+
61
+ static getDerivedStateFromError(error) {
62
+ return { hasError: true };
63
+ }
64
+
65
+ componentDidCatch(error, errorInfo) {
66
+ logError(error, errorInfo);
67
+ }
68
+
69
+ render() {
70
+ if (this.state.hasError) {
71
+ return <FallbackUI />;
72
+ }
73
+ return this.props.children;
74
+ }
75
+ }
76
+ ```
77
+
78
+ ## Anti-Patterns to Avoid
79
+ - ❌ Prop drilling (use Context instead)
80
+ - ❌ Mutating state directly
81
+ - ❌ Missing dependency arrays
82
+ - ❌ Over-using useEffect
83
+ - ❌ Inline function definitions in render
@@ -1,114 +1,114 @@
1
- # Security Skill
2
-
3
- ## Overview
4
- Security audit, vulnerability scanning, and secure coding practices.
5
-
6
- ## OWASP Top 10 Checks
7
-
8
- ### 1. Injection (SQL, NoSQL, Command)
9
- ```typescript
10
- // ❌ Vulnerable
11
- const query = `SELECT * FROM users WHERE id = ${userId}`;
12
-
13
- // ✅ Safe - Parameterized query
14
- const query = 'SELECT * FROM users WHERE id = $1';
15
- await db.query(query, [userId]);
16
- ```
17
-
18
- ### 2. Authentication Flaws
19
- ```typescript
20
- // Password hashing
21
- import bcrypt from 'bcrypt';
22
-
23
- async function hashPassword(password: string) {
24
- return bcrypt.hash(password, 12);
25
- }
26
-
27
- async function verifyPassword(password: string, hash: string) {
28
- return bcrypt.compare(password, hash);
29
- }
30
- ```
31
-
32
- ### 3. XSS Prevention
33
- ```typescript
34
- // ❌ Dangerous
35
- element.innerHTML = userInput;
36
-
37
- // ✅ Safe - Escape output
38
- element.textContent = userInput;
39
-
40
- // React auto-escapes, but avoid dangerouslySetInnerHTML
41
- ```
42
-
43
- ### 4. CSRF Protection
44
- ```typescript
45
- // Use CSRF tokens
46
- import csrf from 'csurf';
47
- const csrfProtection = csrf({ cookie: true });
48
-
49
- app.use(csrfProtection);
50
-
51
- // In form
52
- <input type="hidden" name="_csrf" value={csrfToken} />
53
- ```
54
-
55
- ### 5. Security Headers
56
- ```typescript
57
- // helmet middleware
58
- import helmet from 'helmet';
59
-
60
- app.use(helmet({
61
- contentSecurityPolicy: {
62
- directives: {
63
- defaultSrc: ["'self'"],
64
- scriptSrc: ["'self'", "'unsafe-inline'"],
65
- styleSrc: ["'self'", "'unsafe-inline'"],
66
- },
67
- },
68
- }));
69
- ```
70
-
71
- ## JWT Security
72
-
73
- ```typescript
74
- import jwt from 'jsonwebtoken';
75
-
76
- // ✅ Best practices
77
- const token = jwt.sign(
78
- { userId: user.id },
79
- process.env.JWT_SECRET,
80
- {
81
- algorithm: 'HS256',
82
- expiresIn: '15m', // Short expiry
83
- issuer: 'my-app',
84
- audience: 'my-app-users',
85
- }
86
- );
87
-
88
- // Verify with options
89
- jwt.verify(token, process.env.JWT_SECRET, {
90
- algorithms: ['HS256'], // Prevent algorithm switching
91
- issuer: 'my-app',
92
- });
93
- ```
94
-
95
- ## Secrets Management
96
- ```bash
97
- # Never commit secrets
98
- .env
99
- .env.local
100
- *.pem
101
- *.key
102
- ```
103
-
104
- ## Security Audit Commands
105
- ```bash
106
- # NPM audit
107
- npm audit --audit-level=high
108
-
109
- # Check for leaked secrets
110
- npx secretlint "**/*"
111
-
112
- # Dependency vulnerabilities
113
- npx snyk test
114
- ```
1
+ # Security Skill
2
+
3
+ ## Overview
4
+ Security audit, vulnerability scanning, and secure coding practices.
5
+
6
+ ## OWASP Top 10 Checks
7
+
8
+ ### 1. Injection (SQL, NoSQL, Command)
9
+ ```typescript
10
+ // ❌ Vulnerable
11
+ const query = `SELECT * FROM users WHERE id = ${userId}`;
12
+
13
+ // ✅ Safe - Parameterized query
14
+ const query = 'SELECT * FROM users WHERE id = $1';
15
+ await db.query(query, [userId]);
16
+ ```
17
+
18
+ ### 2. Authentication Flaws
19
+ ```typescript
20
+ // Password hashing
21
+ import bcrypt from 'bcrypt';
22
+
23
+ async function hashPassword(password: string) {
24
+ return bcrypt.hash(password, 12);
25
+ }
26
+
27
+ async function verifyPassword(password: string, hash: string) {
28
+ return bcrypt.compare(password, hash);
29
+ }
30
+ ```
31
+
32
+ ### 3. XSS Prevention
33
+ ```typescript
34
+ // ❌ Dangerous
35
+ element.innerHTML = userInput;
36
+
37
+ // ✅ Safe - Escape output
38
+ element.textContent = userInput;
39
+
40
+ // React auto-escapes, but avoid dangerouslySetInnerHTML
41
+ ```
42
+
43
+ ### 4. CSRF Protection
44
+ ```typescript
45
+ // Use CSRF tokens
46
+ import csrf from 'csurf';
47
+ const csrfProtection = csrf({ cookie: true });
48
+
49
+ app.use(csrfProtection);
50
+
51
+ // In form
52
+ <input type="hidden" name="_csrf" value={csrfToken} />
53
+ ```
54
+
55
+ ### 5. Security Headers
56
+ ```typescript
57
+ // helmet middleware
58
+ import helmet from 'helmet';
59
+
60
+ app.use(helmet({
61
+ contentSecurityPolicy: {
62
+ directives: {
63
+ defaultSrc: ["'self'"],
64
+ scriptSrc: ["'self'", "'unsafe-inline'"],
65
+ styleSrc: ["'self'", "'unsafe-inline'"],
66
+ },
67
+ },
68
+ }));
69
+ ```
70
+
71
+ ## JWT Security
72
+
73
+ ```typescript
74
+ import jwt from 'jsonwebtoken';
75
+
76
+ // ✅ Best practices
77
+ const token = jwt.sign(
78
+ { userId: user.id },
79
+ process.env.JWT_SECRET,
80
+ {
81
+ algorithm: 'HS256',
82
+ expiresIn: '15m', // Short expiry
83
+ issuer: 'my-app',
84
+ audience: 'my-app-users',
85
+ }
86
+ );
87
+
88
+ // Verify with options
89
+ jwt.verify(token, process.env.JWT_SECRET, {
90
+ algorithms: ['HS256'], // Prevent algorithm switching
91
+ issuer: 'my-app',
92
+ });
93
+ ```
94
+
95
+ ## Secrets Management
96
+ ```bash
97
+ # Never commit secrets
98
+ .env
99
+ .env.local
100
+ *.pem
101
+ *.key
102
+ ```
103
+
104
+ ## Security Audit Commands
105
+ ```bash
106
+ # NPM audit
107
+ npm audit --audit-level=high
108
+
109
+ # Check for leaked secrets
110
+ npx secretlint "**/*"
111
+
112
+ # Dependency vulnerabilities
113
+ npx snyk test
114
+ ```