[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CV6RYJ371237W6X6HRHJVR":3,"skill-same:01M6CV6RYJ371237W6X6HRHJVR":61},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":27,"linkOnly":28,"markdownContent":29,"markdownBody":30,"frontMatter":31,"refName":33,"commitSha":34,"skillDirectory":35,"forksCount":36,"repositoryHtmlUrl":37,"repositoryHomepageUrl":37,"ownerHtmlUrl":38,"ownerBlogUrl":6,"ownerDescription":39,"updatedAt":40,"install":41,"resources":54},"01M6CV6RYJ371237W6X6HRHJVR","performance-optimizer",null,"Identifies and fixes performance bottlenecks in code, databases, and APIs. Measures before and after to prove improvements.","Sam-06060\u002Fjarvis-assistant","Sam-06060","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F208600848?v=4","01M6CRKT7C7FXD21V6HXF293S0","Samson Frank Ganta","01M6CRKTBEKYFD8YX5Z1GT99EE",6,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fperformance-optimizer\u002FSKILL.md",[],[19,20,21,22,23,24,25,26],"performance","performance optimizer","safe","development","code","before and after","databases","community","2026-11-10 10:12:30",false,"---\nname: performance-optimizer\ndescription: \"Identifies and fixes performance bottlenecks in code, databases, and APIs. Measures before and after to prove improvements.\"\ncategory: development\nrisk: safe\nsource: community\ndate_added: \"2026-03-05\"\n---\n\n# Performance Optimizer\n\nFind and fix performance bottlenecks. Measure, optimize, verify. Make it fast.\n\n## When to Use This Skill\n\n- App is slow or laggy\n- User complains about performance\n- Page load times are high\n- API responses are slow\n- Database queries take too long\n- User mentions \"slow\", \"lag\", \"performance\", or \"optimize\"\n\n## The Optimization Process\n\n### 1. Measure First\n\nNever optimize without measuring:\n\n```javascript\n\u002F\u002F Measure execution time\nconsole.time('operation');\nawait slowOperation();\nconsole.timeEnd('operation'); \u002F\u002F operation: 2341ms\n```\n\n**What to measure:**\n- Page load time\n- API response time\n- Database query time\n- Function execution time\n- Memory usage\n- Network requests\n\n### 2. Find the Bottleneck\n\nUse profiling tools to find the slow parts:\n\n**Browser:**\n```\nDevTools → Performance tab → Record → Stop\nLook for long tasks (red bars)\n```\n\n**Node.js:**\n```bash\nnode --prof app.js\nnode --prof-process isolate-*.log > profile.txt\n```\n\n**Database:**\n```sql\nEXPLAIN ANALYZE SELECT * FROM users WHERE email = 'test@example.com';\n```\n\n### 3. Optimize\n\nFix the slowest thing first (biggest impact).\n\n## Common Optimizations\n\n### Database Queries\n\n**Problem: N+1 Queries**\n```javascript\n\u002F\u002F Bad: N+1 queries\nconst users = await db.users.find();\nfor (const user of users) {\n  user.posts = await db.posts.find({ userId: user.id }); \u002F\u002F N queries\n}\n\n\u002F\u002F Good: Single query with JOIN\nconst users = await db.users.find()\n  .populate('posts'); \u002F\u002F 1 query\n```\n\n**Problem: Missing Index**\n```sql\n-- Check slow query\nEXPLAIN SELECT * FROM users WHERE email = 'test@example.com';\n-- Shows: Seq Scan (bad)\n\n-- Add index\nCREATE INDEX idx_users_email ON users(email);\n\n-- Check again\nEXPLAIN SELECT * FROM users WHERE email = 'test@example.com';\n-- Shows: Index Scan (good)\n```\n\n**Problem: SELECT ***\n```javascript\n\u002F\u002F Bad: Fetches all columns\nconst users = await db.query('SELECT * FROM users');\n\n\u002F\u002F Good: Only needed columns\nconst users = await db.query('SELECT id, name, email FROM users');\n```\n\n**Problem: No Pagination**\n```javascript\n\u002F\u002F Bad: Returns all records\nconst users = await db.users.find();\n\n\u002F\u002F Good: Paginated\nconst users = await db.users.find()\n  .limit(20)\n  .skip((page - 1) * 20);\n```\n\n### API Performance\n\n**Problem: No Caching**\n```javascript\n\u002F\u002F Bad: Hits database every time\napp.get('\u002Fapi\u002Fstats', async (req, res) => {\n  const stats = await db.stats.calculate(); \u002F\u002F Slow\n  res.json(stats);\n});\n\n\u002F\u002F Good: Cache for 5 minutes\nconst cache = new Map();\napp.get('\u002Fapi\u002Fstats', async (req, res) => {\n  const cached = cache.get('stats');\n  if (cached && Date.now() - cached.time \u003C 300000) {\n    return res.json(cached.data);\n  }\n  \n  const stats = await db.stats.calculate();\n  cache.set('stats', { data: stats, time: Date.now() });\n  res.json(stats);\n});\n```\n\n**Problem: Sequential Operations**\n```javascript\n\u002F\u002F Bad: Sequential (slow)\nconst user = await getUser(id);\nconst posts = await getPosts(id);\nconst comments = await getComments(id);\n\u002F\u002F Total: 300ms + 200ms + 150ms = 650ms\n\n\u002F\u002F Good: Parallel (fast)\nconst [user, posts, comments] = await Promise.all([\n  getUser(id),\n  getPosts(id),\n  getComments(id)\n]);\n\u002F\u002F Total: max(300ms, 200ms, 150ms) = 300ms\n```\n\n**Problem: Large Payloads**\n```javascript\n\u002F\u002F Bad: Returns everything\nres.json(users); \u002F\u002F 5MB response\n\n\u002F\u002F Good: Only needed fields\nres.json(users.map(u => ({\n  id: u.id,\n  name: u.name,\n  email: u.email\n}))); \u002F\u002F 500KB response\n```\n\n### Frontend Performance\n\n**Problem: Unnecessary Re-renders**\n```javascript\n\u002F\u002F Bad: Re-renders on every parent update\nfunction UserList({ users }) {\n  return users.map(user => \u003CUserCard user={user} \u002F>);\n}\n\n\u002F\u002F Good: Memoized\nconst UserCard = React.memo(({ user }) => {\n  return \u003Cdiv>{user.name}\u003C\u002Fdiv>;\n});\n```\n\n**Problem: Large Bundle**\n```javascript\n\u002F\u002F Bad: Imports entire library\nimport _ from 'lodash'; \u002F\u002F 70KB\n\n\u002F\u002F Good: Import only what you need\nimport debounce from 'lodash\u002Fdebounce'; \u002F\u002F 2KB\n```\n\n**Problem: No Code Splitting**\n```javascript\n\u002F\u002F Bad: Everything in one bundle\nimport HeavyComponent from '.\u002FHeavyComponent';\n\n\u002F\u002F Good: Lazy load\nconst HeavyComponent = React.lazy(() => import('.\u002FHeavyComponent'));\n```\n\n**Problem: Unoptimized Images**\n```html\n\u003C!-- Bad: Large image -->\n\u003Cimg src=\"photo.jpg\" \u002F> \u003C!-- 5MB -->\n\n\u003C!-- Good: Optimized and responsive -->\n\u003Cimg \n  src=\"photo-small.webp\" \n  srcset=\"photo-small.webp 400w, photo-large.webp 800w\"\n  loading=\"lazy\"\n  width=\"400\"\n  height=\"300\"\n\u002F> \u003C!-- 50KB -->\n```\n\n### Algorithm Optimization\n\n**Problem: Inefficient Algorithm**\n```javascript\n\u002F\u002F Bad: O(n²) - nested loops\nfunction findDuplicates(arr) {\n  const duplicates = [];\n  for (let i = 0; i \u003C arr.length; i++) {\n    for (let j = i + 1; j \u003C arr.length; j++) {\n      if (arr[i] === arr[j]) duplicates.push(arr[i]);\n    }\n  }\n  return duplicates;\n}\n\n\u002F\u002F Good: O(n) - single pass with Set\nfunction findDuplicates(arr) {\n  const seen = new Set();\n  const duplicates = new Set();\n  for (const item of arr) {\n    if (seen.has(item)) duplicates.add(item);\n    seen.add(item);\n  }\n  return Array.from(duplicates);\n}\n```\n\n**Problem: Repeated Calculations**\n```javascript\n\u002F\u002F Bad: Calculates every time\nfunction getTotal(items) {\n  return items.reduce((sum, item) => sum + item.price * item.quantity, 0);\n}\n\u002F\u002F Called 100 times in render\n\n\u002F\u002F Good: Memoized\nconst getTotal = useMemo(() => {\n  return items.reduce((sum, item) => sum + item.price * item.quantity, 0);\n}, [items]);\n```\n\n### Memory Optimization\n\n**Problem: Memory Leak**\n```javascript\n\u002F\u002F Bad: Event listener not cleaned up\nuseEffect(() => {\n  window.addEventListener('scroll', handleScroll);\n  \u002F\u002F Memory leak!\n}, []);\n\n\u002F\u002F Good: Cleanup\nuseEffect(() => {\n  window.addEventListener('scroll', handleScroll);\n  return () => window.removeEventListener('scroll', handleScroll);\n}, []);\n```\n\n**Problem: Large Data in Memory**\n```javascript\n\u002F\u002F Bad: Loads entire file into memory\nconst data = fs.readFileSync('huge-file.txt'); \u002F\u002F 1GB\n\n\u002F\u002F Good: Stream it\nconst stream = fs.createReadStream('huge-file.txt');\nstream.on('data', chunk => process(chunk));\n```\n\n## Measuring Impact\n\nAlways measure before and after:\n\n```javascript\n\u002F\u002F Before optimization\nconsole.time('query');\nconst users = await db.users.find();\nconsole.timeEnd('query');\n\u002F\u002F query: 2341ms\n\n\u002F\u002F After optimization (added index)\nconsole.time('query');\nconst users = await db.users.find();\nconsole.timeEnd('query');\n\u002F\u002F query: 23ms\n\n\u002F\u002F Improvement: 100x faster!\n```\n\n## Performance Budgets\n\nSet targets:\n\n```\nPage Load: \u003C 2 seconds\nAPI Response: \u003C 200ms\nDatabase Query: \u003C 50ms\nBundle Size: \u003C 200KB\nTime to Interactive: \u003C 3 seconds\n```\n\n## Tools\n\n**Browser:**\n- Chrome DevTools Performance tab\n- Lighthouse (audit)\n- Network tab (waterfall)\n\n**Node.js:**\n- `node --prof` (profiling)\n- `clinic` (diagnostics)\n- `autocannon` (load testing)\n\n**Database:**\n- `EXPLAIN ANALYZE` (query plans)\n- Slow query log\n- Database profiler\n\n**Monitoring:**\n- New Relic\n- Datadog\n- Sentry Performance\n\n## Quick Wins\n\nEasy optimizations with big impact:\n\n1. **Add database indexes** on frequently queried columns\n2. **Enable gzip compression** on server\n3. **Add caching** for expensive operations\n4. **Lazy load** images and heavy components\n5. **Use CDN** for static assets\n6. **Minify and compress** JavaScript\u002FCSS\n7. **Remove unused dependencies**\n8. **Use pagination** instead of loading all data\n9. **Optimize images** (WebP, proper sizing)\n10. **Enable HTTP\u002F2** on server\n\n## Optimization Checklist\n\n- [ ] Measured current performance\n- [ ] Identified bottleneck\n- [ ] Applied optimization\n- [ ] Measured improvement\n- [ ] Verified functionality still works\n- [ ] No new bugs introduced\n- [ ] Documented the change\n\n## When NOT to Optimize\n\n- Premature optimization (optimize when it's actually slow)\n- Micro-optimizations (save 1ms when page takes 5 seconds)\n- Readable code is more important than tiny speed gains\n- If it's already fast enough\n\n## Key Principles\n\n- Measure before optimizing\n- Fix the biggest bottleneck first\n- Measure after to prove improvement\n- Don't sacrifice readability for tiny gains\n- Profile in production-like environment\n- Consider the 80\u002F20 rule (20% of code causes 80% of slowness)\n\n## Related Skills\n\n- `@database-design` - Query optimization\n- `@codebase-audit-pre-push` - Code review\n- `@bug-hunter` - Debugging\n","# Performance Optimizer\n\nFind and fix performance bottlenecks. Measure, optimize, verify. Make it fast.\n\n## When to Use This Skill\n\n- App is slow or laggy\n- User complains about performance\n- Page load times are high\n- API responses are slow\n- Database queries take too long\n- User mentions \"slow\", \"lag\", \"performance\", or \"optimize\"\n\n## The Optimization Process\n\n### 1. Measure First\n\nNever optimize without measuring:\n\n```javascript\n\u002F\u002F Measure execution time\nconsole.time('operation');\nawait slowOperation();\nconsole.timeEnd('operation'); \u002F\u002F operation: 2341ms\n```\n\n**What to measure:**\n- Page load time\n- API response time\n- Database query time\n- Function execution time\n- Memory usage\n- Network requests\n\n### 2. Find the Bottleneck\n\nUse profiling tools to find the slow parts:\n\n**Browser:**\n```\nDevTools → Performance tab → Record → Stop\nLook for long tasks (red bars)\n```\n\n**Node.js:**\n```bash\nnode --prof app.js\nnode --prof-process isolate-*.log > profile.txt\n```\n\n**Database:**\n```sql\nEXPLAIN ANALYZE SELECT * FROM users WHERE email = 'test@example.com';\n```\n\n### 3. Optimize\n\nFix the slowest thing first (biggest impact).\n\n## Common Optimizations\n\n### Database Queries\n\n**Problem: N+1 Queries**\n```javascript\n\u002F\u002F Bad: N+1 queries\nconst users = await db.users.find();\nfor (const user of users) {\n  user.posts = await db.posts.find({ userId: user.id }); \u002F\u002F N queries\n}\n\n\u002F\u002F Good: Single query with JOIN\nconst users = await db.users.find()\n  .populate('posts'); \u002F\u002F 1 query\n```\n\n**Problem: Missing Index**\n```sql\n-- Check slow query\nEXPLAIN SELECT * FROM users WHERE email = 'test@example.com';\n-- Shows: Seq Scan (bad)\n\n-- Add index\nCREATE INDEX idx_users_email ON users(email);\n\n-- Check again\nEXPLAIN SELECT * FROM users WHERE email = 'test@example.com';\n-- Shows: Index Scan (good)\n```\n\n**Problem: SELECT ***\n```javascript\n\u002F\u002F Bad: Fetches all columns\nconst users = await db.query('SELECT * FROM users');\n\n\u002F\u002F Good: Only needed columns\nconst users = await db.query('SELECT id, name, email FROM users');\n```\n\n**Problem: No Pagination**\n```javascript\n\u002F\u002F Bad: Returns all records\nconst users = await db.users.find();\n\n\u002F\u002F Good: Paginated\nconst users = await db.users.find()\n  .limit(20)\n  .skip((page - 1) * 20);\n```\n\n### API Performance\n\n**Problem: No Caching**\n```javascript\n\u002F\u002F Bad: Hits database every time\napp.get('\u002Fapi\u002Fstats', async (req, res) => {\n  const stats = await db.stats.calculate(); \u002F\u002F Slow\n  res.json(stats);\n});\n\n\u002F\u002F Good: Cache for 5 minutes\nconst cache = new Map();\napp.get('\u002Fapi\u002Fstats', async (req, res) => {\n  const cached = cache.get('stats');\n  if (cached && Date.now() - cached.time \u003C 300000) {\n    return res.json(cached.data);\n  }\n  \n  const stats = await db.stats.calculate();\n  cache.set('stats', { data: stats, time: Date.now() });\n  res.json(stats);\n});\n```\n\n**Problem: Sequential Operations**\n```javascript\n\u002F\u002F Bad: Sequential (slow)\nconst user = await getUser(id);\nconst posts = await getPosts(id);\nconst comments = await getComments(id);\n\u002F\u002F Total: 300ms + 200ms + 150ms = 650ms\n\n\u002F\u002F Good: Parallel (fast)\nconst [user, posts, comments] = await Promise.all([\n  getUser(id),\n  getPosts(id),\n  getComments(id)\n]);\n\u002F\u002F Total: max(300ms, 200ms, 150ms) = 300ms\n```\n\n**Problem: Large Payloads**\n```javascript\n\u002F\u002F Bad: Returns everything\nres.json(users); \u002F\u002F 5MB response\n\n\u002F\u002F Good: Only needed fields\nres.json(users.map(u => ({\n  id: u.id,\n  name: u.name,\n  email: u.email\n}))); \u002F\u002F 500KB response\n```\n\n### Frontend Performance\n\n**Problem: Unnecessary Re-renders**\n```javascript\n\u002F\u002F Bad: Re-renders on every parent update\nfunction UserList({ users }) {\n  return users.map(user => \u003CUserCard user={user} \u002F>);\n}\n\n\u002F\u002F Good: Memoized\nconst UserCard = React.memo(({ user }) => {\n  return \u003Cdiv>{user.name}\u003C\u002Fdiv>;\n});\n```\n\n**Problem: Large Bundle**\n```javascript\n\u002F\u002F Bad: Imports entire library\nimport _ from 'lodash'; \u002F\u002F 70KB\n\n\u002F\u002F Good: Import only what you need\nimport debounce from 'lodash\u002Fdebounce'; \u002F\u002F 2KB\n```\n\n**Problem: No Code Splitting**\n```javascript\n\u002F\u002F Bad: Everything in one bundle\nimport HeavyComponent from '.\u002FHeavyComponent';\n\n\u002F\u002F Good: Lazy load\nconst HeavyComponent = React.lazy(() => import('.\u002FHeavyComponent'));\n```\n\n**Problem: Unoptimized Images**\n```html\n\u003C!-- Bad: Large image -->\n\u003Cimg src=\"photo.jpg\" \u002F> \u003C!-- 5MB -->\n\n\u003C!-- Good: Optimized and responsive -->\n\u003Cimg \n  src=\"photo-small.webp\" \n  srcset=\"photo-small.webp 400w, photo-large.webp 800w\"\n  loading=\"lazy\"\n  width=\"400\"\n  height=\"300\"\n\u002F> \u003C!-- 50KB -->\n```\n\n### Algorithm Optimization\n\n**Problem: Inefficient Algorithm**\n```javascript\n\u002F\u002F Bad: O(n²) - nested loops\nfunction findDuplicates(arr) {\n  const duplicates = [];\n  for (let i = 0; i \u003C arr.length; i++) {\n    for (let j = i + 1; j \u003C arr.length; j++) {\n      if (arr[i] === arr[j]) duplicates.push(arr[i]);\n    }\n  }\n  return duplicates;\n}\n\n\u002F\u002F Good: O(n) - single pass with Set\nfunction findDuplicates(arr) {\n  const seen = new Set();\n  const duplicates = new Set();\n  for (const item of arr) {\n    if (seen.has(item)) duplicates.add(item);\n    seen.add(item);\n  }\n  return Array.from(duplicates);\n}\n```\n\n**Problem: Repeated Calculations**\n```javascript\n\u002F\u002F Bad: Calculates every time\nfunction getTotal(items) {\n  return items.reduce((sum, item) => sum + item.price * item.quantity, 0);\n}\n\u002F\u002F Called 100 times in render\n\n\u002F\u002F Good: Memoized\nconst getTotal = useMemo(() => {\n  return items.reduce((sum, item) => sum + item.price * item.quantity, 0);\n}, [items]);\n```\n\n### Memory Optimization\n\n**Problem: Memory Leak**\n```javascript\n\u002F\u002F Bad: Event listener not cleaned up\nuseEffect(() => {\n  window.addEventListener('scroll', handleScroll);\n  \u002F\u002F Memory leak!\n}, []);\n\n\u002F\u002F Good: Cleanup\nuseEffect(() => {\n  window.addEventListener('scroll', handleScroll);\n  return () => window.removeEventListener('scroll', handleScroll);\n}, []);\n```\n\n**Problem: Large Data in Memory**\n```javascript\n\u002F\u002F Bad: Loads entire file into memory\nconst data = fs.readFileSync('huge-file.txt'); \u002F\u002F 1GB\n\n\u002F\u002F Good: Stream it\nconst stream = fs.createReadStream('huge-file.txt');\nstream.on('data', chunk => process(chunk));\n```\n\n## Measuring Impact\n\nAlways measure before and after:\n\n```javascript\n\u002F\u002F Before optimization\nconsole.time('query');\nconst users = await db.users.find();\nconsole.timeEnd('query');\n\u002F\u002F query: 2341ms\n\n\u002F\u002F After optimization (added index)\nconsole.time('query');\nconst users = await db.users.find();\nconsole.timeEnd('query');\n\u002F\u002F query: 23ms\n\n\u002F\u002F Improvement: 100x faster!\n```\n\n## Performance Budgets\n\nSet targets:\n\n```\nPage Load: \u003C 2 seconds\nAPI Response: \u003C 200ms\nDatabase Query: \u003C 50ms\nBundle Size: \u003C 200KB\nTime to Interactive: \u003C 3 seconds\n```\n\n## Tools\n\n**Browser:**\n- Chrome DevTools Performance tab\n- Lighthouse (audit)\n- Network tab (waterfall)\n\n**Node.js:**\n- `node --prof` (profiling)\n- `clinic` (diagnostics)\n- `autocannon` (load testing)\n\n**Database:**\n- `EXPLAIN ANALYZE` (query plans)\n- Slow query log\n- Database profiler\n\n**Monitoring:**\n- New Relic\n- Datadog\n- Sentry Performance\n\n## Quick Wins\n\nEasy optimizations with big impact:\n\n1. **Add database indexes** on frequently queried columns\n2. **Enable gzip compression** on server\n3. **Add caching** for expensive operations\n4. **Lazy load** images and heavy components\n5. **Use CDN** for static assets\n6. **Minify and compress** JavaScript\u002FCSS\n7. **Remove unused dependencies**\n8. **Use pagination** instead of loading all data\n9. **Optimize images** (WebP, proper sizing)\n10. **Enable HTTP\u002F2** on server\n\n## Optimization Checklist\n\n- [ ] Measured current performance\n- [ ] Identified bottleneck\n- [ ] Applied optimization\n- [ ] Measured improvement\n- [ ] Verified functionality still works\n- [ ] No new bugs introduced\n- [ ] Documented the change\n\n## When NOT to Optimize\n\n- Premature optimization (optimize when it's actually slow)\n- Micro-optimizations (save 1ms when page takes 5 seconds)\n- Readable code is more important than tiny speed gains\n- If it's already fast enough\n\n## Key Principles\n\n- Measure before optimizing\n- Fix the biggest bottleneck first\n- Measure after to prove improvement\n- Don't sacrifice readability for tiny gains\n- Profile in production-like environment\n- Consider the 80\u002F20 rule (20% of code causes 80% of slowness)\n\n## Related Skills\n\n- `@database-design` - Query optimization\n- `@codebase-audit-pre-push` - Code review\n- `@bug-hunter` - Debugging\n",{"name":5,"risk":21,"source":26,"category":22,"date_added":32,"description":7},"2026-03-05","main","a50a3aa6b39fb0e1b7db88bef1bfc9c93606e126","modules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fperformance-optimizer",0,"https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant","https:\u002F\u002Fgithub.com\u002FSam-06060","Mobile Application Developer | Kotlin | Flutter, KMP, Swfit, Android,Swift UI | Building at Saar It Resources | Creator of Jarvis (AI Assistant)","2026-06-23 05:13:38",{"source":8,"skillName":5,"commands":42,"prompt":52,"zipAvailable":53},[43,46,49],{"tool":44,"command":45},"npx","npx skills add Sam-06060\u002Fjarvis-assistant --skill performance-optimizer",{"tool":47,"command":48},"bunx","bunx skills add Sam-06060\u002Fjarvis-assistant --skill performance-optimizer",{"tool":50,"command":51},"pnpm","pnpm dlx skills add Sam-06060\u002Fjarvis-assistant --skill performance-optimizer","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fperformance-optimizer\u002FSKILL.md",true,[55],{"path":56,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":59,"sourceHtmlUrl":60},"README.md","REFERENCE","参考文档",465,"https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fperformance-optimizer\u002FREADME.md",[62,75,91,118,137,163],{"skillNo":63,"name":64,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":72,"publishedAt":27},"01M6GDRVS6FXX3ESH0C9DW01C0","test_skill","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fscratch\u002Ftest_skill\u002FSKILL.md",[67],{"categoryNo":68,"categoryName":69,"taxonomyType":70,"taxonomyTypeDesc":71},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[73,74],"Test Skill","test",{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":27},"01M6GDRQ40HX22MA6XWC31RHHK","zustand-store-ts","Create Zustand stores following established patterns with proper TypeScript types and middleware.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzustand-store-ts\u002FSKILL.md",[],[82,83,84,85,86,87,88,26,89,90],"zustand store ts","zustand","store","with","types","middleware","patterns","create","typescript",{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":100,"publishedAt":27},"01M6GDRKEA0WE670SPFWX5GKCN","zoom-automation","Automate Zoom meeting creation, management, recordings, webinars, and participant tracking via Rube MCP (Composio). Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzoom-automation\u002FSKILL.md",[97],{"categoryNo":98,"categoryName":99,"taxonomyType":70,"taxonomyTypeDesc":71},"01JBSEEDCAT000000000000023","Skill与智能体开发",[101,102,103,104,105,106,107,108,109,110,111,112,113,114,26,115,116,117],"automation","zoom automation","zoom","first","Tools","search","MCP","via","meeting","automate","critical","creation","webinars","composio","recordings","management","tracking",{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":125,"publishedAt":27},"01M6GDRFS1452PC71JQ38S24HR","zoho-crm-automation","Automate Zoho CRM tasks via Rube MCP (Composio): create\u002Fupdate records, search contacts, manage leads, and convert leads. Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzoho-crm-automation\u002FSKILL.md",[124],{"categoryNo":98,"categoryName":99,"taxonomyType":70,"taxonomyTypeDesc":71},[126,101,127,128,129,130,131,26,106,132,114,133,111,110,105,134,89,135,107,136],"crm automation","zoho crm","crm","zoho crm automation","zoho","leads","contacts","records","update","tasks","manage",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":146,"publishedAt":27},"01M6GDRCKQBAVTGHX5XBH26KPZ","zod-validation-expert","Expert in Zod — TypeScript-first schema validation. Covers parsing, custom errors, refinements, type inference, and integration with React Hook Form, Next.js, and tRPC.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzod-validation-expert\u002FSKILL.md",[143],{"categoryNo":144,"categoryName":145,"taxonomyType":70,"taxonomyTypeDesc":71},"01JBSEEDCAT000000000000009","前端开发",[147,148,149,150,151,90,21,152,153,154,155,156,85,157,158,159,160,26,161,162],"expert","zod","zod validation expert","validation","react","parsing","errors","schema validation","react hook form","hook","trpc","form","type","next","schema","Next.js",{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":170,"publishedAt":27},"01M6GDR658B08K4MY0RWD4A6EH","zeroize-audit","Detects missing zeroization of sensitive data in source code and identifies zeroization removed by compiler optimizations, with assembly-level analysis, and control-flow verification. Use for auditing C\u002FC++\u002FRust code handling secrets, keys, passwords, or other sensitive data.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzeroize-audit\u002FSKILL.md",[169],{"categoryNo":98,"categoryName":99,"taxonomyType":70,"taxonomyTypeDesc":71},[171,172,173,174,175,176,177,178,26,179,180,181,182,183,184,185,186,23,187,107],"zeroize audit","audit","write","passwords","get","project","c++","activate","assembly","read","Bash","secrets","analysis","data","flow","verification","rust"]