superkit-mcp-server 1.2.3 → 1.2.4

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 (161) hide show
  1. package/ARCHITECTURE.md +102 -102
  2. package/README.md +71 -71
  3. package/SUPERKIT.md +168 -168
  4. package/agents/code-archaeologist.md +106 -106
  5. package/agents/coder.md +90 -90
  6. package/agents/data-engineer.md +28 -28
  7. package/agents/devops-engineer.md +242 -242
  8. package/agents/git-manager.md +203 -203
  9. package/agents/orchestrator.md +420 -420
  10. package/agents/penetration-tester.md +188 -188
  11. package/agents/performance-optimizer.md +187 -187
  12. package/agents/planner.md +270 -270
  13. package/agents/qa-automation-engineer.md +103 -103
  14. package/agents/quant-developer.md +32 -32
  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/tools/sessionManager.js +79 -10
  20. package/build/tools/todoTools.js +39 -39
  21. package/build/tools/validators/__tests__/apiSchema.test.js +23 -23
  22. package/build/tools/validators/__tests__/convertRules.test.js +5 -5
  23. package/build/tools/validators/__tests__/frontendDesign.test.js +12 -12
  24. package/build/tools/validators/__tests__/geoChecker.test.js +19 -19
  25. package/build/tools/validators/__tests__/mobileAudit.test.js +12 -12
  26. package/build/tools/validators/__tests__/reactPerformanceChecker.test.js +17 -17
  27. package/build/tools/validators/__tests__/securityScan.test.js +6 -6
  28. package/build/tools/validators/__tests__/seoChecker.test.js +16 -16
  29. package/build/tools/validators/__tests__/typeCoverage.test.js +14 -14
  30. package/commands/README.md +122 -122
  31. package/commands/ask.toml +72 -72
  32. package/commands/brainstorm.toml +119 -119
  33. package/commands/chat.toml +77 -77
  34. package/commands/code-preview.toml +37 -37
  35. package/commands/code.toml +28 -28
  36. package/commands/content.toml +200 -200
  37. package/commands/cook.toml +77 -77
  38. package/commands/copywrite.toml +131 -131
  39. package/commands/db.toml +192 -192
  40. package/commands/debug.toml +166 -166
  41. package/commands/design.toml +158 -158
  42. package/commands/dev-rules.toml +14 -14
  43. package/commands/do.toml +117 -117
  44. package/commands/doc-rules.toml +14 -14
  45. package/commands/docs.toml +148 -148
  46. package/commands/fix.toml +440 -440
  47. package/commands/fullstack.toml +175 -175
  48. package/commands/git.toml +235 -235
  49. package/commands/help.toml +84 -84
  50. package/commands/integrate.toml +127 -127
  51. package/commands/journal.toml +136 -136
  52. package/commands/kit-setup.toml +40 -40
  53. package/commands/mcp.toml +183 -183
  54. package/commands/orchestration.toml +15 -15
  55. package/commands/plan.toml +171 -171
  56. package/commands/pm.toml +148 -148
  57. package/commands/pr.toml +50 -50
  58. package/commands/project.toml +32 -32
  59. package/commands/research.toml +117 -117
  60. package/commands/review-pr.toml +63 -63
  61. package/commands/review.toml +190 -190
  62. package/commands/scout-ext.toml +97 -97
  63. package/commands/scout.toml +79 -79
  64. package/commands/screenshot.toml +65 -65
  65. package/commands/session.toml +102 -102
  66. package/commands/skill.toml +384 -384
  67. package/commands/status.toml +22 -22
  68. package/commands/team.toml +56 -56
  69. package/commands/test.toml +164 -164
  70. package/commands/ticket.toml +70 -70
  71. package/commands/use.toml +106 -106
  72. package/commands/video.toml +83 -83
  73. package/commands/watzup.toml +71 -71
  74. package/commands/workflow.toml +14 -14
  75. package/package.json +35 -35
  76. package/skills/meta/README.md +30 -30
  77. package/skills/meta/api-design/SKILL.md +134 -134
  78. package/skills/meta/code-review/SKILL.md +44 -44
  79. package/skills/meta/code-review/checklists/pre-merge.md +25 -25
  80. package/skills/meta/code-review/workflows/architecture-pass.md +26 -26
  81. package/skills/meta/code-review/workflows/performance-pass.md +27 -27
  82. package/skills/meta/code-review/workflows/security-pass.md +29 -29
  83. package/skills/meta/compound-docs/SKILL.md +133 -133
  84. package/skills/meta/debug/SKILL.md +40 -40
  85. package/skills/meta/debug/templates/bug-report.template.md +31 -31
  86. package/skills/meta/debug/workflows/reproduce-issue.md +20 -20
  87. package/skills/meta/docker/SKILL.md +126 -126
  88. package/skills/meta/examples/supabase/SKILL.md +46 -46
  89. package/skills/meta/examples/supabase/references/best-practices.md +319 -319
  90. package/skills/meta/examples/supabase/references/common-patterns.md +373 -373
  91. package/skills/meta/examples/supabase/templates/migration-template.sql +49 -49
  92. package/skills/meta/examples/supabase/templates/rls-policy-template.sql +77 -77
  93. package/skills/meta/examples/supabase/workflows/debugging.md +260 -260
  94. package/skills/meta/examples/supabase/workflows/migration-workflow.md +211 -211
  95. package/skills/meta/examples/supabase/workflows/rls-policies.md +244 -244
  96. package/skills/meta/examples/supabase/workflows/schema-design.md +321 -321
  97. package/skills/meta/file-todos/SKILL.md +88 -88
  98. package/skills/meta/mobile/SKILL.md +140 -140
  99. package/skills/meta/nextjs/SKILL.md +101 -101
  100. package/skills/meta/performance/SKILL.md +130 -130
  101. package/skills/meta/react-patterns/SKILL.md +83 -83
  102. package/skills/meta/security/SKILL.md +114 -114
  103. package/skills/meta/session-resume/SKILL.md +96 -96
  104. package/skills/meta/tailwind/SKILL.md +139 -139
  105. package/skills/meta/testing/SKILL.md +43 -43
  106. package/skills/meta/testing/references/vitest-patterns.md +45 -45
  107. package/skills/meta/testing/templates/component-test.template.tsx +37 -37
  108. package/skills/tech/alpha-vantage/SKILL.md +142 -142
  109. package/skills/tech/alpha-vantage/references/commodities.md +153 -153
  110. package/skills/tech/alpha-vantage/references/economic-indicators.md +158 -158
  111. package/skills/tech/alpha-vantage/references/forex-crypto.md +154 -154
  112. package/skills/tech/alpha-vantage/references/fundamentals.md +223 -223
  113. package/skills/tech/alpha-vantage/references/intelligence.md +138 -138
  114. package/skills/tech/alpha-vantage/references/options.md +93 -93
  115. package/skills/tech/alpha-vantage/references/technical-indicators.md +374 -374
  116. package/skills/tech/alpha-vantage/references/time-series.md +157 -157
  117. package/skills/tech/financial-modeling/SKILL.md +18 -18
  118. package/skills/tech/financial-modeling/skills/3-statements/SKILL.md +368 -368
  119. package/skills/tech/financial-modeling/skills/3-statements/references/formatting.md +118 -118
  120. package/skills/tech/financial-modeling/skills/3-statements/references/formulas.md +292 -292
  121. package/skills/tech/financial-modeling/skills/3-statements/references/sec-filings.md +125 -125
  122. package/skills/tech/financial-modeling/skills/dcf-model/SKILL.md +1210 -1210
  123. package/skills/tech/financial-modeling/skills/dcf-model/TROUBLESHOOTING.md +40 -40
  124. package/skills/tech/financial-modeling/skills/dcf-model/requirements.txt +8 -8
  125. package/skills/tech/financial-modeling/skills/dcf-model/scripts/validate_dcf.py +292 -292
  126. package/skills/tech/financial-modeling/skills/lbo-model/SKILL.md +236 -236
  127. package/skills/tech/financial-modeling/skills/merger-model/SKILL.md +108 -108
  128. package/skills/workflows/README.md +203 -203
  129. package/skills/workflows/adr.md +174 -174
  130. package/skills/workflows/changelog.md +74 -74
  131. package/skills/workflows/compound.md +323 -323
  132. package/skills/workflows/compound_health.md +74 -74
  133. package/skills/workflows/create-agent-skill.md +138 -138
  134. package/skills/workflows/cycle.md +144 -144
  135. package/skills/workflows/deploy-docs.md +84 -84
  136. package/skills/workflows/development-rules.md +42 -42
  137. package/skills/workflows/doc.md +95 -95
  138. package/skills/workflows/documentation-management.md +34 -34
  139. package/skills/workflows/explore.md +146 -146
  140. package/skills/workflows/generate_command.md +106 -106
  141. package/skills/workflows/heal-skill.md +97 -97
  142. package/skills/workflows/housekeeping.md +229 -229
  143. package/skills/workflows/kit-setup.md +102 -102
  144. package/skills/workflows/map-codebase.md +78 -78
  145. package/skills/workflows/orchestration-protocol.md +43 -43
  146. package/skills/workflows/plan-compound.md +439 -439
  147. package/skills/workflows/plan_review.md +269 -269
  148. package/skills/workflows/primary-workflow.md +37 -37
  149. package/skills/workflows/promote_pattern.md +86 -86
  150. package/skills/workflows/release-docs.md +82 -82
  151. package/skills/workflows/report-bug.md +135 -135
  152. package/skills/workflows/reproduce-bug.md +118 -118
  153. package/skills/workflows/resolve_pr.md +133 -133
  154. package/skills/workflows/resolve_todo.md +128 -128
  155. package/skills/workflows/review-compound.md +376 -376
  156. package/skills/workflows/skill-review.md +127 -127
  157. package/skills/workflows/specs.md +257 -257
  158. package/skills/workflows/triage-sprint.md +102 -102
  159. package/skills/workflows/triage.md +152 -152
  160. package/skills/workflows/work.md +399 -399
  161. package/skills/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
+ ```