superkit-mcp-server 1.2.2 → 1.2.3

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