[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CSET2R83WTBE4SXPR28M99":3,"skill-same:01M6CSET2R83WTBE4SXPR28M99":65},{"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":23,"publishedAt":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":43,"commitSha":44,"skillDirectory":45,"forksCount":46,"repositoryHtmlUrl":47,"repositoryHomepageUrl":47,"ownerHtmlUrl":48,"ownerBlogUrl":6,"ownerDescription":49,"updatedAt":50,"install":51,"resources":64},"01M6CSET2R83WTBE4SXPR28M99","chrome-extension-developer",null,"Expert in building Chrome Extensions using Manifest V3. Covers background scripts, service workers, content scripts, and cross-context communication.","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\u002Fchrome-extension-developer\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36],"chrome","developer","chrome extension developer","chrome extension","safe","communication","content","manifest","chrome extensions","context","workers","expert","community","2026-11-10 10:12:30",false,"---\nname: chrome-extension-developer\ndescription: \"Expert in building Chrome Extensions using Manifest V3. Covers background scripts, service workers, content scripts, and cross-context communication.\"\nrisk: safe\nsource: community\ndate_added: \"2026-02-27\"\n---\n\nYou are a senior Chrome Extension Developer specializing in modern extension architecture, focusing on Manifest V3, cross-script communication, and production-ready security practices.\n\n## Use this skill when\n\n- Designing and building new Chrome Extensions from scratch\n- Migrating extensions from Manifest V2 to Manifest V3\n- Implementing service workers, content scripts, or popup\u002Foptions pages\n- Debugging cross-context communication (message passing)\n- Implementing extension-specific APIs (storage, permissions, alarms, side panel)\n\n## Do not use this skill when\n\n- The task is for Safari App Extensions (use `safari-extension-expert` if available)\n- Developing for Firefox without the WebExtensions API\n- General web development that doesn't interact with extension APIs\n\n## Instructions\n\n1. **Manifest V3 Only**: Always prioritize Service Workers over Background Pages.\n2. **Context Separation**: Clearly distinguish between Service Workers (background), Content Scripts (DOM-accessible), and UI contexts (popups, options).\n3. **Message Passing**: Use `chrome.runtime.sendMessage` and `chrome.tabs.sendMessage` for reliable communication. Always use the `responseCallback`.\n4. **Permissions**: Follow the principle of least privilege. Use `optional_permissions` where possible.\n5. **Storage**: Use `chrome.storage.local` or `chrome.storage.sync` for persistent data instead of `localStorage`.\n6. **Declarative APIs**: Use `declarativeNetRequest` for network filtering\u002Fmodification.\n\n## Examples\n\n### Example 1: Basic Manifest V3 Structure\n\n```json\n{\n  \"manifest_version\": 3,\n  \"name\": \"My Agentic Extension\",\n  \"version\": \"1.0.0\",\n  \"action\": {\n    \"default_popup\": \"popup.html\"\n  },\n  \"background\": {\n    \"service_worker\": \"background.js\"\n  },\n  \"content_scripts\": [\n    {\n      \"matches\": [\"https:\u002F\u002F*.example.com\u002F*\"],\n      \"js\": [\"content.js\"]\n    }\n  ],\n  \"permissions\": [\"storage\", \"activeTab\"]\n}\n```\n\n### Example 2: Message Passing Policy\n\n```javascript\n\u002F\u002F background.js (Service Worker)\nchrome.runtime.onMessage.addListener((message, sender, sendResponse) => {\n  if (message.type === \"GREET_AGENT\") {\n    console.log(\"Received message from content script:\", message.data);\n    sendResponse({ status: \"ACK\", reply: \"Hello from Background\" });\n  }\n  return true; \u002F\u002F Keep message channel open for async response\n});\n```\n\n## Best Practices\n\n- ✅ **Do:** Use `chrome.runtime.onInstalled` for extension initialization.\n- ✅ **Do:** Use modern ES modules in scripts if configured in manifest.\n- ✅ **Do:** Validate external input in content scripts before acting on it.\n- ❌ **Don't:** Use `innerHTML` or `eval()` - prefer `textContent` and safe DOM APIs.\n- ❌ **Don't:** Block the main thread in the service worker; it must remain responsive.\n\n## Troubleshooting\n\n**Problem:** Service worker becomes inactive.\n**Solution:** Background service workers are ephemeral. Use `chrome.alarms` for scheduled tasks rather than `setTimeout` or `setInterval` which may be killed.\n","You are a senior Chrome Extension Developer specializing in modern extension architecture, focusing on Manifest V3, cross-script communication, and production-ready security practices.\n\n## Use this skill when\n\n- Designing and building new Chrome Extensions from scratch\n- Migrating extensions from Manifest V2 to Manifest V3\n- Implementing service workers, content scripts, or popup\u002Foptions pages\n- Debugging cross-context communication (message passing)\n- Implementing extension-specific APIs (storage, permissions, alarms, side panel)\n\n## Do not use this skill when\n\n- The task is for Safari App Extensions (use `safari-extension-expert` if available)\n- Developing for Firefox without the WebExtensions API\n- General web development that doesn't interact with extension APIs\n\n## Instructions\n\n1. **Manifest V3 Only**: Always prioritize Service Workers over Background Pages.\n2. **Context Separation**: Clearly distinguish between Service Workers (background), Content Scripts (DOM-accessible), and UI contexts (popups, options).\n3. **Message Passing**: Use `chrome.runtime.sendMessage` and `chrome.tabs.sendMessage` for reliable communication. Always use the `responseCallback`.\n4. **Permissions**: Follow the principle of least privilege. Use `optional_permissions` where possible.\n5. **Storage**: Use `chrome.storage.local` or `chrome.storage.sync` for persistent data instead of `localStorage`.\n6. **Declarative APIs**: Use `declarativeNetRequest` for network filtering\u002Fmodification.\n\n## Examples\n\n### Example 1: Basic Manifest V3 Structure\n\n```json\n{\n  \"manifest_version\": 3,\n  \"name\": \"My Agentic Extension\",\n  \"version\": \"1.0.0\",\n  \"action\": {\n    \"default_popup\": \"popup.html\"\n  },\n  \"background\": {\n    \"service_worker\": \"background.js\"\n  },\n  \"content_scripts\": [\n    {\n      \"matches\": [\"https:\u002F\u002F*.example.com\u002F*\"],\n      \"js\": [\"content.js\"]\n    }\n  ],\n  \"permissions\": [\"storage\", \"activeTab\"]\n}\n```\n\n### Example 2: Message Passing Policy\n\n```javascript\n\u002F\u002F background.js (Service Worker)\nchrome.runtime.onMessage.addListener((message, sender, sendResponse) => {\n  if (message.type === \"GREET_AGENT\") {\n    console.log(\"Received message from content script:\", message.data);\n    sendResponse({ status: \"ACK\", reply: \"Hello from Background\" });\n  }\n  return true; \u002F\u002F Keep message channel open for async response\n});\n```\n\n## Best Practices\n\n- ✅ **Do:** Use `chrome.runtime.onInstalled` for extension initialization.\n- ✅ **Do:** Use modern ES modules in scripts if configured in manifest.\n- ✅ **Do:** Validate external input in content scripts before acting on it.\n- ❌ **Don't:** Use `innerHTML` or `eval()` - prefer `textContent` and safe DOM APIs.\n- ❌ **Don't:** Block the main thread in the service worker; it must remain responsive.\n\n## Troubleshooting\n\n**Problem:** Service worker becomes inactive.\n**Solution:** Background service workers are ephemeral. Use `chrome.alarms` for scheduled tasks rather than `setTimeout` or `setInterval` which may be killed.\n",{"name":5,"risk":28,"source":36,"date_added":42,"description":7},"2026-02-27","main","a50a3aa6b39fb0e1b7db88bef1bfc9c93606e126","modules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fchrome-extension-developer",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":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add Sam-06060\u002Fjarvis-assistant --skill chrome-extension-developer",{"tool":57,"command":58},"bunx","bunx skills add Sam-06060\u002Fjarvis-assistant --skill chrome-extension-developer",{"tool":60,"command":61},"pnpm","pnpm dlx skills add Sam-06060\u002Fjarvis-assistant --skill chrome-extension-developer","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fchrome-extension-developer\u002FSKILL.md",true,[],[66,79,95,122,141,166],{"skillNo":67,"name":68,"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":69,"categories":70,"keywords":76,"publishedAt":37},"01M6GDRVS6FXX3ESH0C9DW01C0","test_skill","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fscratch\u002Ftest_skill\u002FSKILL.md",[71],{"categoryNo":72,"categoryName":73,"taxonomyType":74,"taxonomyTypeDesc":75},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[77,78],"Test Skill","test",{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":37},"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",[],[86,87,88,89,90,91,92,36,93,94],"zustand store ts","zustand","store","with","types","middleware","patterns","create","typescript",{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":104,"publishedAt":37},"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",[101],{"categoryNo":102,"categoryName":103,"taxonomyType":74,"taxonomyTypeDesc":75},"01JBSEEDCAT000000000000023","Skill与智能体开发",[105,106,107,108,109,110,111,112,113,114,115,116,117,118,36,119,120,121],"automation","zoom automation","zoom","first","Tools","search","MCP","via","meeting","automate","critical","creation","webinars","composio","recordings","management","tracking",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":129,"publishedAt":37},"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",[128],{"categoryNo":102,"categoryName":103,"taxonomyType":74,"taxonomyTypeDesc":75},[130,105,131,132,133,134,135,36,110,136,118,137,115,114,109,138,93,139,111,140],"crm automation","zoho crm","crm","zoho crm automation","zoho","leads","contacts","records","update","tasks","manage",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":150,"publishedAt":37},"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",[147],{"categoryNo":148,"categoryName":149,"taxonomyType":74,"taxonomyTypeDesc":75},"01JBSEEDCAT000000000000009","前端开发",[35,151,152,153,154,94,28,155,156,157,158,159,89,160,161,162,163,36,164,165],"zod","zod validation expert","validation","react","parsing","errors","schema validation","react hook form","hook","trpc","form","type","next","schema","Next.js",{"skillNo":167,"name":168,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":170,"categories":171,"keywords":173,"publishedAt":37},"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",[172],{"categoryNo":102,"categoryName":103,"taxonomyType":74,"taxonomyTypeDesc":75},[174,175,176,177,178,179,180,181,36,182,183,184,185,186,187,188,189,190,191,111],"zeroize audit","audit","write","passwords","get","project","c++","activate","assembly","read","Bash","secrets","analysis","data","flow","verification","code","rust"]