superkit-mcp-server 1.2.4 → 1.2.6

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