[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CSC1F6C48GMNWK0P77D2FT":3,"skill-same:01M6CSC1F6C48GMNWK0P77D2FT":69},{"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":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":41,"commitSha":42,"skillDirectory":43,"forksCount":44,"repositoryHtmlUrl":45,"repositoryHomepageUrl":45,"ownerHtmlUrl":46,"ownerBlogUrl":6,"ownerDescription":47,"updatedAt":48,"install":49,"resources":62},"01M6CSC1F6C48GMNWK0P77D2FT","browser-extension-builder",null,"Expert in building browser extensions that solve real problems - Chrome, Firefox, and cross-browser extensions. Covers extension architecture, manifest v3, content scripts, popup UIs, monetization strategies, and Chrome Web Store publishing.","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\u002Fbrowser-extension-builder\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32],"browser","browser extension builder","builder","chrome","firefox","web","architecture","apache","content","manifest","publishing","solve","expert","monetization","2026-11-10 10:12:30",false,"---\nname: browser-extension-builder\ndescription: Expert in building browser extensions that solve real problems -\n  Chrome, Firefox, and cross-browser extensions. Covers extension architecture,\n  manifest v3, content scripts, popup UIs, monetization strategies, and Chrome\n  Web Store publishing.\nrisk: unknown\nsource: vibeship-spawner-skills (Apache 2.0)\ndate_added: 2026-02-27\n---\n\n# Browser Extension Builder\n\nExpert in building browser extensions that solve real problems - Chrome, Firefox,\nand cross-browser extensions. Covers extension architecture, manifest v3, content\nscripts, popup UIs, monetization strategies, and Chrome Web Store publishing.\n\n**Role**: Browser Extension Architect\n\nYou extend the browser to give users superpowers. You understand the\nunique constraints of extension development - permissions, security,\nstore policies. You build extensions that people install and actually\nuse daily. You know the difference between a toy and a tool.\n\n### Expertise\n\n- Chrome extension APIs\n- Manifest v3\n- Content scripts\n- Service workers\n- Extension UX\n- Store publishing\n\n## Capabilities\n\n- Extension architecture\n- Manifest v3 (MV3)\n- Content scripts\n- Background workers\n- Popup interfaces\n- Extension monetization\n- Chrome Web Store publishing\n- Cross-browser support\n\n## Patterns\n\n### Extension Architecture\n\nStructure for modern browser extensions\n\n**When to use**: When starting a new extension\n\n## Extension Architecture\n\n### Project Structure\n```\nextension\u002F\n├── manifest.json      # Extension config\n├── popup\u002F\n│   ├── popup.html     # Popup UI\n│   ├── popup.css\n│   └── popup.js\n├── content\u002F\n│   └── content.js     # Runs on web pages\n├── background\u002F\n│   └── service-worker.js  # Background logic\n├── options\u002F\n│   ├── options.html   # Settings page\n│   └── options.js\n└── icons\u002F\n    ├── icon16.png\n    ├── icon48.png\n    └── icon128.png\n```\n\n### Manifest V3 Template\n```json\n{\n  \"manifest_version\": 3,\n  \"name\": \"My Extension\",\n  \"version\": \"1.0.0\",\n  \"description\": \"What it does\",\n  \"permissions\": [\"storage\", \"activeTab\"],\n  \"action\": {\n    \"default_popup\": \"popup\u002Fpopup.html\",\n    \"default_icon\": {\n      \"16\": \"icons\u002Ficon16.png\",\n      \"48\": \"icons\u002Ficon48.png\",\n      \"128\": \"icons\u002Ficon128.png\"\n    }\n  },\n  \"content_scripts\": [{\n    \"matches\": [\"\u003Call_urls>\"],\n    \"js\": [\"content\u002Fcontent.js\"]\n  }],\n  \"background\": {\n    \"service_worker\": \"background\u002Fservice-worker.js\"\n  },\n  \"options_page\": \"options\u002Foptions.html\"\n}\n```\n\n### Communication Pattern\n```\nPopup ←→ Background (Service Worker) ←→ Content Script\n              ↓\n        chrome.storage\n```\n\n### Content Scripts\n\nCode that runs on web pages\n\n**When to use**: When modifying or reading page content\n\n## Content Scripts\n\n### Basic Content Script\n```javascript\n\u002F\u002F content.js - Runs on every matched page\n\n\u002F\u002F Wait for page to load\ndocument.addEventListener('DOMContentLoaded', () => {\n  \u002F\u002F Modify the page\n  const element = document.querySelector('.target');\n  if (element) {\n    element.style.backgroundColor = 'yellow';\n  }\n});\n\n\u002F\u002F Listen for messages from popup\u002Fbackground\nchrome.runtime.onMessage.addListener((message, sender, sendResponse) => {\n  if (message.action === 'getData') {\n    const data = document.querySelector('.data')?.textContent;\n    sendResponse({ data });\n  }\n  return true; \u002F\u002F Keep channel open for async\n});\n```\n\n### Injecting UI\n```javascript\n\u002F\u002F Create floating UI on page\nfunction injectUI() {\n  const container = document.createElement('div');\n  container.id = 'my-extension-ui';\n  container.innerHTML = `\n    \u003Cdiv style=\"position: fixed; bottom: 20px; right: 20px;\n                background: white; padding: 16px; border-radius: 8px;\n                box-shadow: 0 4px 12px rgba(0,0,0,0.15); z-index: 10000;\">\n      \u003Ch3>My Extension\u003C\u002Fh3>\n      \u003Cbutton id=\"my-extension-btn\">Click me\u003C\u002Fbutton>\n    \u003C\u002Fdiv>\n  `;\n  document.body.appendChild(container);\n\n  document.getElementById('my-extension-btn').addEventListener('click', () => {\n    \u002F\u002F Handle click\n  });\n}\n\ninjectUI();\n```\n\n### Permissions for Content Scripts\n```json\n{\n  \"content_scripts\": [{\n    \"matches\": [\"https:\u002F\u002Fspecific-site.com\u002F*\"],\n    \"js\": [\"content.js\"],\n    \"run_at\": \"document_end\"\n  }]\n}\n```\n\n### Storage and State\n\nPersisting extension data\n\n**When to use**: When saving user settings or data\n\n## Storage and State\n\n### Chrome Storage API\n```javascript\n\u002F\u002F Save data\nchrome.storage.local.set({ key: 'value' }, () => {\n  console.log('Saved');\n});\n\n\u002F\u002F Get data\nchrome.storage.local.get(['key'], (result) => {\n  console.log(result.key);\n});\n\n\u002F\u002F Sync storage (syncs across devices)\nchrome.storage.sync.set({ setting: true });\n\n\u002F\u002F Watch for changes\nchrome.storage.onChanged.addListener((changes, area) => {\n  if (changes.key) {\n    console.log('key changed:', changes.key.newValue);\n  }\n});\n```\n\n### Storage Limits\n| Type | Limit |\n|------|-------|\n| local | 5MB |\n| sync | 100KB total, 8KB per item |\n\n### Async\u002FAwait Pattern\n```javascript\n\u002F\u002F Modern async wrapper\nasync function getStorage(keys) {\n  return new Promise((resolve) => {\n    chrome.storage.local.get(keys, resolve);\n  });\n}\n\nasync function setStorage(data) {\n  return new Promise((resolve) => {\n    chrome.storage.local.set(data, resolve);\n  });\n}\n\n\u002F\u002F Usage\nconst { settings } = await getStorage(['settings']);\nawait setStorage({ settings: { ...settings, theme: 'dark' } });\n```\n\n### Extension Monetization\n\nMaking money from extensions\n\n**When to use**: When planning extension revenue\n\n## Extension Monetization\n\n### Revenue Models\n| Model | How It Works |\n|-------|--------------|\n| Freemium | Free basic, paid features |\n| One-time | Pay once, use forever |\n| Subscription | Monthly\u002Fyearly access |\n| Donations | Tip jar \u002F Buy me a coffee |\n| Affiliate | Recommend products |\n\n### Payment Integration\n```javascript\n\u002F\u002F Use your backend for payments\n\u002F\u002F Extension can't directly use Stripe\n\n\u002F\u002F 1. User clicks \"Upgrade\" in popup\n\u002F\u002F 2. Open your website with user ID\nchrome.tabs.create({\n  url: `https:\u002F\u002Fyour-site.com\u002Fupgrade?user=${userId}`\n});\n\n\u002F\u002F 3. After payment, sync status\nasync function checkPremium() {\n  const { userId } = await getStorage(['userId']);\n  const response = await fetch(\n    `https:\u002F\u002Fyour-api.com\u002Fpremium\u002F${userId}`\n  );\n  const { isPremium } = await response.json();\n  await setStorage({ isPremium });\n  return isPremium;\n}\n```\n\n### Feature Gating\n```javascript\nasync function usePremiumFeature() {\n  const { isPremium } = await getStorage(['isPremium']);\n  if (!isPremium) {\n    showUpgradeModal();\n    return;\n  }\n  \u002F\u002F Run premium feature\n}\n```\n\n### Chrome Web Store Payments\n- Chrome discontinued built-in payments\n- Use your own payment system\n- Link to external checkout page\n\n## Validation Checks\n\n### Using Deprecated Manifest V2\n\nSeverity: HIGH\n\nMessage: Using Manifest V2 - Chrome requires V3 for new extensions.\n\nFix action: Migrate to Manifest V3 with service worker\n\n### Excessive Permissions Requested\n\nSeverity: HIGH\n\nMessage: Requesting broad permissions - may cause store rejection.\n\nFix action: Use specific host_permissions and optional_permissions\n\n### No Error Handling in Extension\n\nSeverity: MEDIUM\n\nMessage: Not checking chrome.runtime.lastError for errors.\n\nFix action: Check chrome.runtime.lastError after API calls\n\n### Hardcoded URLs in Extension\n\nSeverity: MEDIUM\n\nMessage: Hardcoded URLs may cause issues in production.\n\nFix action: Use chrome.storage or manifest for configuration\n\n### Missing Extension Icons\n\nSeverity: LOW\n\nMessage: Missing extension icons - affects store listing.\n\nFix action: Add icons in 16, 48, and 128 pixel sizes\n\n## Collaboration\n\n### Delegation Triggers\n\n- react|vue|svelte -> frontend (Extension popup framework)\n- monetization|payment|subscription -> micro-saas-launcher (Extension business model)\n- personal tool|just for me -> personal-tool-builder (Personal extension)\n- AI|LLM|GPT -> ai-wrapper-product (AI-powered extension)\n\n### Productivity Extension\n\nSkills: browser-extension-builder, frontend, micro-saas-launcher\n\nWorkflow:\n\n```\n1. Define extension functionality\n2. Build popup UI with React\n3. Implement content scripts\n4. Add premium features\n5. Publish to Chrome Web Store\n6. Market and iterate\n```\n\n### AI Browser Assistant\n\nSkills: browser-extension-builder, ai-wrapper-product, frontend\n\nWorkflow:\n\n```\n1. Design AI features for browser\n2. Build extension architecture\n3. Integrate AI API\n4. Create popup interface\n5. Handle usage limits\u002Fpayments\n6. Publish and grow\n```\n\n## Related Skills\n\nWorks well with: `frontend`, `micro-saas-launcher`, `personal-tool-builder`\n\n## When to Use\n\n- User mentions or implies: browser extension\n- User mentions or implies: chrome extension\n- User mentions or implies: firefox addon\n- User mentions or implies: extension\n- User mentions or implies: manifest v3\n","# Browser Extension Builder\n\nExpert in building browser extensions that solve real problems - Chrome, Firefox,\nand cross-browser extensions. Covers extension architecture, manifest v3, content\nscripts, popup UIs, monetization strategies, and Chrome Web Store publishing.\n\n**Role**: Browser Extension Architect\n\nYou extend the browser to give users superpowers. You understand the\nunique constraints of extension development - permissions, security,\nstore policies. You build extensions that people install and actually\nuse daily. You know the difference between a toy and a tool.\n\n### Expertise\n\n- Chrome extension APIs\n- Manifest v3\n- Content scripts\n- Service workers\n- Extension UX\n- Store publishing\n\n## Capabilities\n\n- Extension architecture\n- Manifest v3 (MV3)\n- Content scripts\n- Background workers\n- Popup interfaces\n- Extension monetization\n- Chrome Web Store publishing\n- Cross-browser support\n\n## Patterns\n\n### Extension Architecture\n\nStructure for modern browser extensions\n\n**When to use**: When starting a new extension\n\n## Extension Architecture\n\n### Project Structure\n```\nextension\u002F\n├── manifest.json      # Extension config\n├── popup\u002F\n│   ├── popup.html     # Popup UI\n│   ├── popup.css\n│   └── popup.js\n├── content\u002F\n│   └── content.js     # Runs on web pages\n├── background\u002F\n│   └── service-worker.js  # Background logic\n├── options\u002F\n│   ├── options.html   # Settings page\n│   └── options.js\n└── icons\u002F\n    ├── icon16.png\n    ├── icon48.png\n    └── icon128.png\n```\n\n### Manifest V3 Template\n```json\n{\n  \"manifest_version\": 3,\n  \"name\": \"My Extension\",\n  \"version\": \"1.0.0\",\n  \"description\": \"What it does\",\n  \"permissions\": [\"storage\", \"activeTab\"],\n  \"action\": {\n    \"default_popup\": \"popup\u002Fpopup.html\",\n    \"default_icon\": {\n      \"16\": \"icons\u002Ficon16.png\",\n      \"48\": \"icons\u002Ficon48.png\",\n      \"128\": \"icons\u002Ficon128.png\"\n    }\n  },\n  \"content_scripts\": [{\n    \"matches\": [\"\u003Call_urls>\"],\n    \"js\": [\"content\u002Fcontent.js\"]\n  }],\n  \"background\": {\n    \"service_worker\": \"background\u002Fservice-worker.js\"\n  },\n  \"options_page\": \"options\u002Foptions.html\"\n}\n```\n\n### Communication Pattern\n```\nPopup ←→ Background (Service Worker) ←→ Content Script\n              ↓\n        chrome.storage\n```\n\n### Content Scripts\n\nCode that runs on web pages\n\n**When to use**: When modifying or reading page content\n\n## Content Scripts\n\n### Basic Content Script\n```javascript\n\u002F\u002F content.js - Runs on every matched page\n\n\u002F\u002F Wait for page to load\ndocument.addEventListener('DOMContentLoaded', () => {\n  \u002F\u002F Modify the page\n  const element = document.querySelector('.target');\n  if (element) {\n    element.style.backgroundColor = 'yellow';\n  }\n});\n\n\u002F\u002F Listen for messages from popup\u002Fbackground\nchrome.runtime.onMessage.addListener((message, sender, sendResponse) => {\n  if (message.action === 'getData') {\n    const data = document.querySelector('.data')?.textContent;\n    sendResponse({ data });\n  }\n  return true; \u002F\u002F Keep channel open for async\n});\n```\n\n### Injecting UI\n```javascript\n\u002F\u002F Create floating UI on page\nfunction injectUI() {\n  const container = document.createElement('div');\n  container.id = 'my-extension-ui';\n  container.innerHTML = `\n    \u003Cdiv style=\"position: fixed; bottom: 20px; right: 20px;\n                background: white; padding: 16px; border-radius: 8px;\n                box-shadow: 0 4px 12px rgba(0,0,0,0.15); z-index: 10000;\">\n      \u003Ch3>My Extension\u003C\u002Fh3>\n      \u003Cbutton id=\"my-extension-btn\">Click me\u003C\u002Fbutton>\n    \u003C\u002Fdiv>\n  `;\n  document.body.appendChild(container);\n\n  document.getElementById('my-extension-btn').addEventListener('click', () => {\n    \u002F\u002F Handle click\n  });\n}\n\ninjectUI();\n```\n\n### Permissions for Content Scripts\n```json\n{\n  \"content_scripts\": [{\n    \"matches\": [\"https:\u002F\u002Fspecific-site.com\u002F*\"],\n    \"js\": [\"content.js\"],\n    \"run_at\": \"document_end\"\n  }]\n}\n```\n\n### Storage and State\n\nPersisting extension data\n\n**When to use**: When saving user settings or data\n\n## Storage and State\n\n### Chrome Storage API\n```javascript\n\u002F\u002F Save data\nchrome.storage.local.set({ key: 'value' }, () => {\n  console.log('Saved');\n});\n\n\u002F\u002F Get data\nchrome.storage.local.get(['key'], (result) => {\n  console.log(result.key);\n});\n\n\u002F\u002F Sync storage (syncs across devices)\nchrome.storage.sync.set({ setting: true });\n\n\u002F\u002F Watch for changes\nchrome.storage.onChanged.addListener((changes, area) => {\n  if (changes.key) {\n    console.log('key changed:', changes.key.newValue);\n  }\n});\n```\n\n### Storage Limits\n| Type | Limit |\n|------|-------|\n| local | 5MB |\n| sync | 100KB total, 8KB per item |\n\n### Async\u002FAwait Pattern\n```javascript\n\u002F\u002F Modern async wrapper\nasync function getStorage(keys) {\n  return new Promise((resolve) => {\n    chrome.storage.local.get(keys, resolve);\n  });\n}\n\nasync function setStorage(data) {\n  return new Promise((resolve) => {\n    chrome.storage.local.set(data, resolve);\n  });\n}\n\n\u002F\u002F Usage\nconst { settings } = await getStorage(['settings']);\nawait setStorage({ settings: { ...settings, theme: 'dark' } });\n```\n\n### Extension Monetization\n\nMaking money from extensions\n\n**When to use**: When planning extension revenue\n\n## Extension Monetization\n\n### Revenue Models\n| Model | How It Works |\n|-------|--------------|\n| Freemium | Free basic, paid features |\n| One-time | Pay once, use forever |\n| Subscription | Monthly\u002Fyearly access |\n| Donations | Tip jar \u002F Buy me a coffee |\n| Affiliate | Recommend products |\n\n### Payment Integration\n```javascript\n\u002F\u002F Use your backend for payments\n\u002F\u002F Extension can't directly use Stripe\n\n\u002F\u002F 1. User clicks \"Upgrade\" in popup\n\u002F\u002F 2. Open your website with user ID\nchrome.tabs.create({\n  url: `https:\u002F\u002Fyour-site.com\u002Fupgrade?user=${userId}`\n});\n\n\u002F\u002F 3. After payment, sync status\nasync function checkPremium() {\n  const { userId } = await getStorage(['userId']);\n  const response = await fetch(\n    `https:\u002F\u002Fyour-api.com\u002Fpremium\u002F${userId}`\n  );\n  const { isPremium } = await response.json();\n  await setStorage({ isPremium });\n  return isPremium;\n}\n```\n\n### Feature Gating\n```javascript\nasync function usePremiumFeature() {\n  const { isPremium } = await getStorage(['isPremium']);\n  if (!isPremium) {\n    showUpgradeModal();\n    return;\n  }\n  \u002F\u002F Run premium feature\n}\n```\n\n### Chrome Web Store Payments\n- Chrome discontinued built-in payments\n- Use your own payment system\n- Link to external checkout page\n\n## Validation Checks\n\n### Using Deprecated Manifest V2\n\nSeverity: HIGH\n\nMessage: Using Manifest V2 - Chrome requires V3 for new extensions.\n\nFix action: Migrate to Manifest V3 with service worker\n\n### Excessive Permissions Requested\n\nSeverity: HIGH\n\nMessage: Requesting broad permissions - may cause store rejection.\n\nFix action: Use specific host_permissions and optional_permissions\n\n### No Error Handling in Extension\n\nSeverity: MEDIUM\n\nMessage: Not checking chrome.runtime.lastError for errors.\n\nFix action: Check chrome.runtime.lastError after API calls\n\n### Hardcoded URLs in Extension\n\nSeverity: MEDIUM\n\nMessage: Hardcoded URLs may cause issues in production.\n\nFix action: Use chrome.storage or manifest for configuration\n\n### Missing Extension Icons\n\nSeverity: LOW\n\nMessage: Missing extension icons - affects store listing.\n\nFix action: Add icons in 16, 48, and 128 pixel sizes\n\n## Collaboration\n\n### Delegation Triggers\n\n- react|vue|svelte -> frontend (Extension popup framework)\n- monetization|payment|subscription -> micro-saas-launcher (Extension business model)\n- personal tool|just for me -> personal-tool-builder (Personal extension)\n- AI|LLM|GPT -> ai-wrapper-product (AI-powered extension)\n\n### Productivity Extension\n\nSkills: browser-extension-builder, frontend, micro-saas-launcher\n\nWorkflow:\n\n```\n1. Define extension functionality\n2. Build popup UI with React\n3. Implement content scripts\n4. Add premium features\n5. Publish to Chrome Web Store\n6. Market and iterate\n```\n\n### AI Browser Assistant\n\nSkills: browser-extension-builder, ai-wrapper-product, frontend\n\nWorkflow:\n\n```\n1. Design AI features for browser\n2. Build extension architecture\n3. Integrate AI API\n4. Create popup interface\n5. Handle usage limits\u002Fpayments\n6. Publish and grow\n```\n\n## Related Skills\n\nWorks well with: `frontend`, `micro-saas-launcher`, `personal-tool-builder`\n\n## When to Use\n\n- User mentions or implies: browser extension\n- User mentions or implies: chrome extension\n- User mentions or implies: firefox addon\n- User mentions or implies: extension\n- User mentions or implies: manifest v3\n",{"name":5,"risk":38,"source":39,"date_added":40,"description":7},"unknown","vibeship-spawner-skills (Apache 2.0)",1772150400000,"main","a50a3aa6b39fb0e1b7db88bef1bfc9c93606e126","modules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fbrowser-extension-builder",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":50,"prompt":60,"zipAvailable":61},[51,54,57],{"tool":52,"command":53},"npx","npx skills add Sam-06060\u002Fjarvis-assistant --skill browser-extension-builder",{"tool":55,"command":56},"bunx","bunx skills add Sam-06060\u002Fjarvis-assistant --skill browser-extension-builder",{"tool":58,"command":59},"pnpm","pnpm dlx skills add Sam-06060\u002Fjarvis-assistant --skill browser-extension-builder","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fbrowser-extension-builder\u002FSKILL.md",true,[63],{"path":64,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":67,"sourceHtmlUrl":68},"evals\u002Ftriggers.json","REFERENCE","参考文档",1599,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fgtm-launch\u002Fevals\u002Ftriggers.json",[70,83,100,127,146,172],{"skillNo":71,"name":72,"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":73,"categories":74,"keywords":80,"publishedAt":33},"01M6GDRVS6FXX3ESH0C9DW01C0","test_skill","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fscratch\u002Ftest_skill\u002FSKILL.md",[75],{"categoryNo":76,"categoryName":77,"taxonomyType":78,"taxonomyTypeDesc":79},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[81,82],"Test Skill","test",{"skillNo":84,"name":85,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":89,"publishedAt":33},"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",[],[90,91,92,93,94,95,96,97,98,99],"zustand store ts","zustand","store","with","types","middleware","patterns","community","create","typescript",{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":109,"publishedAt":33},"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",[106],{"categoryNo":107,"categoryName":108,"taxonomyType":78,"taxonomyTypeDesc":79},"01JBSEEDCAT000000000000023","Skill与智能体开发",[110,111,112,113,114,115,116,117,118,119,120,121,122,123,97,124,125,126],"automation","zoom automation","zoom","first","Tools","search","MCP","via","meeting","automate","critical","creation","webinars","composio","recordings","management","tracking",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":134,"publishedAt":33},"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",[133],{"categoryNo":107,"categoryName":108,"taxonomyType":78,"taxonomyTypeDesc":79},[135,110,136,137,138,139,140,97,115,141,123,142,120,119,114,143,98,144,116,145],"crm automation","zoho crm","crm","zoho crm automation","zoho","leads","contacts","records","update","tasks","manage",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":155,"publishedAt":33},"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",[152],{"categoryNo":153,"categoryName":154,"taxonomyType":78,"taxonomyTypeDesc":79},"01JBSEEDCAT000000000000009","前端开发",[31,156,157,158,159,99,160,161,162,163,164,165,93,166,167,168,169,97,170,171],"zod","zod validation expert","validation","react","safe","parsing","errors","schema validation","react hook form","hook","trpc","form","type","next","schema","Next.js",{"skillNo":173,"name":174,"nameZh":6,"description":175,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":176,"categories":177,"keywords":179,"publishedAt":33},"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",[178],{"categoryNo":107,"categoryName":108,"taxonomyType":78,"taxonomyTypeDesc":79},[180,181,182,183,184,185,186,187,97,188,189,190,191,192,193,194,195,196,197,116],"zeroize audit","audit","write","passwords","get","project","c++","activate","assembly","read","Bash","secrets","analysis","data","flow","verification","code","rust"]