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