[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6XFATQCYVJ95KT3RA1YQTKZ":3,"skill-same:01M6XFATQCYVJ95KT3RA1YQTKZ":70},{"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":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":50,"commitSha":51,"skillDirectory":52,"forksCount":14,"repositoryHtmlUrl":53,"repositoryHomepageUrl":6,"ownerHtmlUrl":54,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":55,"install":56,"resources":69},"01M6XFATQCYVJ95KT3RA1YQTKZ","chrome-extension-developer",null,"Expert in building Chrome Extensions using Manifest V3. Covers background scripts, service workers, content scripts, and cross-context communication.","sapsapshen\u002Fai-memory-router","sapsapshen","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F20347959?v=4","01M6XDQEF1DP50DKF37H81J3J5","shenmian","01M6XDQEJPE41Y3DT2763X8ZJN",0,"MIT","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fcopilot\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,37,38,39,40,41,42,43],"chrome","developer","chrome extension developer","extension","chrome extension","2026","safe","background","extensions","scripts","v3","service","community","expert","workers","context","chrome extensions","manifest","content","communication","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":30,"source":36,"date_added":49,"description":7},"2026-02-27","main","7a38d8e7073e61c16eda85681cb32fb68a8657a5","skills-store\u002Fcopilot\u002Fchrome-extension-developer","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router","https:\u002F\u002Fgithub.com\u002Fsapsapshen","2026-04-14 21:12:12",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add sapsapshen\u002Fai-memory-router --skill chrome-extension-developer",{"tool":62,"command":63},"bunx","bunx skills add sapsapshen\u002Fai-memory-router --skill chrome-extension-developer",{"tool":65,"command":66},"pnpm","pnpm dlx skills add sapsapshen\u002Fai-memory-router --skill chrome-extension-developer","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fcopilot\u002Fchrome-extension-developer\u002FSKILL.md",true,[],[71,93,119,129,142,161],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":80,"publishedAt":44},"01M71ATQRKG48SH06FQ697T5G9","wechat-search","Search WeChat Official Account articles using OpenClaw's web search and fetch capabilities with compliance-focused design.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fwechat-search-release\u002FSKILL.md",[77],{"categoryNo":78,"categoryName":79,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000037","律师与法务",[81,82,83,84,85,86,87,88,89,90,91,92],"wechat search","wechat","search","capabilities","openclaw","design","web search","compliance","web","official","fetch","with",{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":44},"01M71ATNAVGZB35PFYM2GC5N00","trend-tap","Real-time trending topics aggregator across 7 platforms (X\u002FTwitter, Reddit, Google Trends, Hacker News, Zhihu, Bilibili, Weibo). Trigger: when user says 'trend', 'trends', 'trend tap', '热点', '热搜', or asks what is trending\u002Fhot. Do NOT use web_search — this skill already fetches live data from all platforms with zero API keys.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftrend-tap\u002FSKILL.md",[],[100,101,102,103,104,105,83,106,107,108,109,110,111,112,113,114,115,116,117,118],"trend","trend tap","tap","api keys","Bash","time","trending","hacker","aggregator","do","when","brew","live","data","google","install","read","across","api",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":125,"publishedAt":44},"01M71ATJ9AM5KM15AA8PS302EB","trend-radar","Real-time trending topics aggregator across 7 platforms (X\u002FTwitter, Reddit, Google Trends, Hacker News, Zhihu, Bilibili, Weibo). Trigger: when user says 'trend', 'trends', 'trend pulse', '热点', '热搜', or asks what is trending\u002Fhot. Do NOT use web_search — this skill already fetches live data from all platforms with zero API keys.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftrend-radar\u002FSKILL.md",[],[126,127,100,111,112,113,114,104,83,116,128,117,118,110,108,107,106,115,105,103],"trend radar","radar","pulse",{"skillNo":130,"name":131,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":135,"publishedAt":44},"01M71ATGF095N3EJM9G8SD0BB5","tech-news-daily","每日科技新闻汇——从全球多个 RSS 源抓取最新科技新闻，翻译（英→中）、去重、排版成每日简报。当用户询问科技新闻、科技新鲜事、每日科技、技术动态、Daily Tech News 或类似表达时触发此技能。","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftech-news-daily\u002FSKILL.md",[],[136,137,138,139,140,141],"news","tech","tech news daily","daily","rss","翻译",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":153,"publishedAt":44},"01M71ATFAEAMQ17M70NQNY7SR8","summarize","Summarize URLs or files with the summarize CLI (web, PDFs, images, audio, YouTube).","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fsummarize\u002FSKILL.md",[148],{"categoryNo":149,"categoryName":150,"taxonomyType":151,"taxonomyTypeDesc":152},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",[144,89,154,155,156,92,111,157,158,159,102,160,115],"Audio","cli","youtube","images","https","files","pdfs",{"skillNo":162,"name":163,"nameZh":6,"description":164,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":165,"categories":166,"keywords":167,"publishedAt":44},"01M71ATDNS3R0M4H936PACQAWZ","sonoscli","Control Sonos speakers (discover\u002Fstatus\u002Fplay\u002Fvolume\u002Fgroup).","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fsonoscli\u002FSKILL.md",[],[163,168,169,170,115,171,158,172,173,174,175,176],"status","play","go","latest","github","discover","control","cmd","volume"]