[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6QTF6PVTHX2YRG3XAYEFKXM":3,"skill-same:01M6QTF6PVTHX2YRG3XAYEFKXM":73},{"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":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":54,"ownerHtmlUrl":55,"ownerBlogUrl":56,"ownerDescription":57,"updatedAt":58,"install":59,"resources":72},"01M6QTF6PVTHX2YRG3XAYEFKXM","progressive-web-app",null,"Progressive Web Apps with service workers, web manifest, offline support, installation prompts. Use for installable web apps, offline functionality, push notifications, or encountering service worker registration, cache strategy, manifest configuration errors.","VRIL-LABS\u002Fskill-jam","VRIL-LABS","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F272046472?v=4","01M6QR9PNWM28WZYJJASER1RG2","𝗩𝗥𝗜𝗟 𝗟𝗔𝗕𝗦","01M6QR9PT6Q6JDCQ97EQBDX6E4",2,"MIT","https:\u002F\u002Fgithub.com\u002FVRIL-LABS\u002Fskill-jam\u002Fblob\u002Fmain\u002Fskills\u002Fai-ml\u002Fclaude-skills-main\u002Fclaude-skills-main\u002Fplugins\u002Fprogressive-web-app\u002Fskills\u002Fprogressive-web-app\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"progressive web app","web app","app","web","worker","for","service worker","errors","cache strategy","apps","push notifications","progressive web apps","registration","workers","use","strategy","manifest","notifications","cache","push","2026-11-10 10:12:30",false,"---\nname: progressive-web-app\ndescription: Progressive Web Apps with service workers, web manifest, offline support, installation prompts. Use for installable web apps, offline functionality, push notifications, or encountering service worker registration, cache strategy, manifest configuration errors.\nlicense: MIT\n---\n\n# Progressive Web App (PWA)\n\nBuild web applications that work like native apps with offline support and installability.\n\n## Web App Manifest\n\n```json\n{\n  \"name\": \"My Application\",\n  \"short_name\": \"MyApp\",\n  \"start_url\": \"\u002F\",\n  \"display\": \"standalone\",\n  \"background_color\": \"#ffffff\",\n  \"theme_color\": \"#000000\",\n  \"icons\": [\n    { \"src\": \"\u002Ficon-192.png\", \"sizes\": \"192x192\", \"type\": \"image\u002Fpng\" },\n    { \"src\": \"\u002Ficon-512.png\", \"sizes\": \"512x512\", \"type\": \"image\u002Fpng\" }\n  ]\n}\n```\n\n## Service Worker\n\n```javascript\nconst CACHE_NAME = 'app-v1';\nconst STATIC_ASSETS = ['\u002F', '\u002Findex.html', '\u002Fstyles.css', '\u002Fapp.js'];\n\n\u002F\u002F Install\nself.addEventListener('install', event => {\n  event.waitUntil(\n    caches.open(CACHE_NAME).then(cache => cache.addAll(STATIC_ASSETS))\n  );\n});\n\n\u002F\u002F Fetch with cache-first strategy\nself.addEventListener('fetch', event => {\n  event.respondWith(\n    caches.match(event.request).then(cached => {\n      if (cached) return cached;\n\n      return fetch(event.request).then(response => {\n        if (response.status === 200) {\n          const clone = response.clone();\n          caches.open(CACHE_NAME).then(cache => cache.put(event.request, clone));\n        }\n        return response;\n      });\n    })\n  );\n});\n```\n\n## Install Prompt\n\n```javascript\nlet deferredPrompt;\n\nwindow.addEventListener('beforeinstallprompt', e => {\n  e.preventDefault();\n  deferredPrompt = e;\n  showInstallButton();\n});\n\nasync function installApp() {\n  if (!deferredPrompt) return;\n  deferredPrompt.prompt();\n  const { outcome } = await deferredPrompt.userChoice;\n  console.log('Install outcome:', outcome);\n  deferredPrompt = null;\n}\n```\n\n## Push Notifications\n\n```javascript\nasync function subscribeToPush() {\n  const registration = await navigator.serviceWorker.ready;\n  const subscription = await registration.pushManager.subscribe({\n    userVisibleOnly: true,\n    applicationServerKey: VAPID_PUBLIC_KEY\n  });\n  await sendSubscriptionToServer(subscription);\n}\n```\n\n## PWA Checklist\n\n- [ ] HTTPS enabled\n- [ ] Web manifest configured\n- [ ] Service worker registered\n- [ ] Offline fallback page\n- [ ] Responsive design\n- [ ] Fast loading (\u003C3s on 3G)\n- [ ] Installable\n","# Progressive Web App (PWA)\n\nBuild web applications that work like native apps with offline support and installability.\n\n## Web App Manifest\n\n```json\n{\n  \"name\": \"My Application\",\n  \"short_name\": \"MyApp\",\n  \"start_url\": \"\u002F\",\n  \"display\": \"standalone\",\n  \"background_color\": \"#ffffff\",\n  \"theme_color\": \"#000000\",\n  \"icons\": [\n    { \"src\": \"\u002Ficon-192.png\", \"sizes\": \"192x192\", \"type\": \"image\u002Fpng\" },\n    { \"src\": \"\u002Ficon-512.png\", \"sizes\": \"512x512\", \"type\": \"image\u002Fpng\" }\n  ]\n}\n```\n\n## Service Worker\n\n```javascript\nconst CACHE_NAME = 'app-v1';\nconst STATIC_ASSETS = ['\u002F', '\u002Findex.html', '\u002Fstyles.css', '\u002Fapp.js'];\n\n\u002F\u002F Install\nself.addEventListener('install', event => {\n  event.waitUntil(\n    caches.open(CACHE_NAME).then(cache => cache.addAll(STATIC_ASSETS))\n  );\n});\n\n\u002F\u002F Fetch with cache-first strategy\nself.addEventListener('fetch', event => {\n  event.respondWith(\n    caches.match(event.request).then(cached => {\n      if (cached) return cached;\n\n      return fetch(event.request).then(response => {\n        if (response.status === 200) {\n          const clone = response.clone();\n          caches.open(CACHE_NAME).then(cache => cache.put(event.request, clone));\n        }\n        return response;\n      });\n    })\n  );\n});\n```\n\n## Install Prompt\n\n```javascript\nlet deferredPrompt;\n\nwindow.addEventListener('beforeinstallprompt', e => {\n  e.preventDefault();\n  deferredPrompt = e;\n  showInstallButton();\n});\n\nasync function installApp() {\n  if (!deferredPrompt) return;\n  deferredPrompt.prompt();\n  const { outcome } = await deferredPrompt.userChoice;\n  console.log('Install outcome:', outcome);\n  deferredPrompt = null;\n}\n```\n\n## Push Notifications\n\n```javascript\nasync function subscribeToPush() {\n  const registration = await navigator.serviceWorker.ready;\n  const subscription = await registration.pushManager.subscribe({\n    userVisibleOnly: true,\n    applicationServerKey: VAPID_PUBLIC_KEY\n  });\n  await sendSubscriptionToServer(subscription);\n}\n```\n\n## PWA Checklist\n\n- [ ] HTTPS enabled\n- [ ] Web manifest configured\n- [ ] Service worker registered\n- [ ] Offline fallback page\n- [ ] Responsive design\n- [ ] Fast loading (\u003C3s on 3G)\n- [ ] Installable\n",{"name":5,"license":15,"description":7},"main","5b00ad8b9f0787969474ff5e9ec417bb55f23827","skills\u002Fai-ml\u002Fclaude-skills-main\u002Fclaude-skills-main\u002Fplugins\u002Fprogressive-web-app\u002Fskills\u002Fprogressive-web-app",0,"https:\u002F\u002Fgithub.com\u002FVRIL-LABS\u002Fskill-jam","https:\u002F\u002Fvril.li","https:\u002F\u002Fgithub.com\u002FVRIL-LABS","vril.li","𝗥𝗲𝘀𝗲𝗮𝗿𝗰𝗵 𝗮𝗻𝗱 𝗗𝗲𝘃𝗲𝗹𝗼𝗽𝗺𝗲𝗻𝘁 𝗖𝗼𝗻𝘀𝗼𝗿𝘁𝗶𝘂𝗺","2026-08-24 09:21:38",{"source":8,"skillName":5,"commands":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add VRIL-LABS\u002Fskill-jam --skill progressive-web-app",{"tool":65,"command":66},"bunx","bunx skills add VRIL-LABS\u002Fskill-jam --skill progressive-web-app",{"tool":68,"command":69},"pnpm","pnpm dlx skills add VRIL-LABS\u002Fskill-jam --skill progressive-web-app","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FVRIL-LABS\u002Fskill-jam\u002Fblob\u002Fmain\u002Fskills\u002Fai-ml\u002Fclaude-skills-main\u002Fclaude-skills-main\u002Fplugins\u002Fprogressive-web-app\u002Fskills\u002Fprogressive-web-app\u002FSKILL.md",true,[],[74,103,117,130,167,189],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":83,"publishedAt":44},"01M6R2CQRG190P09DAHMF8M5QP","three-best-practices","Three.js performance optimization and best practices guidelines. Use when writing, reviewing, or optimizing Three.js code. Triggers on tasks involving 3D scenes, WebGL\u002FWebGPU rendering, geometries, materials, textures, lighting, shaders, or TSL.","https:\u002F\u002Fgithub.com\u002FVRIL-LABS\u002Fskill-jam\u002Fblob\u002Fmain\u002Fskills\u002Fweb-frontend\u002Fneversight-skills_feed-three-best-practices-1.0.2\u002FSKILL.md",[80],{"categoryNo":81,"categoryName":82,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[84,85,86,87,88,89,90,91,92,93,94,95,38,96,97,98,99,100,101,102],"best practices","three","three best practices","writing","performance","webgpu","guidelines","tasks","code","shaders","Optimization","3D","agent-skills","scenes","lighting","triggers","rendering","when","best practices guidelines",{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":109,"publishedAt":44},"01M6R2BPMDYK9XKWPARY0S5MS3","javascript-best-practices","Modern JavaScript best practices and performance optimization guidelines. Use when writing, reviewing, or refactoring JavaScript code to ensure optimal performance, maintainability, and modern patterns.","https:\u002F\u002Fgithub.com\u002FVRIL-LABS\u002Fskill-jam\u002Fblob\u002Fmain\u002Fskills\u002Fweb-frontend\u002Fneversight-skills_feed-javascript-best-practices-1.0.2\u002FSKILL.md",[],[110,84,111,87,88,90,92,94,112,113,38,114,115,116,101],"javascript","JavaScript Best Practices","refactoring","performance optimization","patterns","maintainability","name",{"skillNo":118,"name":119,"nameZh":6,"description":120,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":121,"categories":122,"keywords":124,"publishedAt":44},"01M6R2B41BN09FYH76BAC5FT7X","css-best-practices","Guidelines for building modern, performant, and accessible CSS using MDN best practices. Use this when styling components, fixing layout shifts, or optimizing CSS performance.","https:\u002F\u002Fgithub.com\u002FVRIL-LABS\u002Fskill-jam\u002Fblob\u002Fmain\u002Fskills\u002Fweb-frontend\u002Fneversight-skills_feed-css-best-practices-1.0.3\u002FSKILL.md",[123],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[125,84,126,88,127,90,38,128,129,29,101],"css","css best practices","components","styling","layout",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":148,"publishedAt":44},"01M6R2A1CEF123TZCNM1XJ2XQ4","frontend-dev","Full-stack frontend development combining premium UI design, cinematic animations,\nAI-generated media assets, persuasive copywriting, and visual art. Builds complete,\nvisually striking web pages with real media, advanced motion, and compelling copy.\nUse when: building landing pages, marketing sites, product pages, dashboards,\ngenerating media assets (image\u002Fvideo\u002Faudio\u002Fmusic), writing conversion copy,\ncreating generative art, or implementing cinematic scroll animations.","https:\u002F\u002Fgithub.com\u002FVRIL-LABS\u002Fskill-jam\u002Fblob\u002Fmain\u002Fskills\u002Fweb-frontend\u002Fminimax-ai-skills-frontend-dev-1.0.1\u002FSKILL.md",[136,137,140,143],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":138,"categoryName":139,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":141,"categoryName":142,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":144,"categoryName":145,"taxonomyType":146,"taxonomyTypeDesc":147},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[149,150,151,152,87,153,125,154,155,156,157,158,159,160,161,162,163,164,165,166],"frontend","dev","frontend dev","design","image","react","ui","Video","Media","Audio","Tailwind","stack","music","aida","framer motion","implementing","framer","generative",{"skillNo":168,"name":169,"nameZh":6,"description":170,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":171,"categories":172,"keywords":173,"publishedAt":44},"01M6R20VQ98KDX4J37TGE0FNHW","exa-rate-limits","Implement Exa rate limiting, backoff, and idempotency patterns.\nUse when handling rate limit errors, implementing retry logic,\nor optimizing API request throughput for Exa.\nTrigger with phrases like \"exa rate limit\", \"exa throttling\",\n\"exa 429\", \"exa retry\", \"exa backoff\".","https:\u002F\u002Fgithub.com\u002FVRIL-LABS\u002Fskill-jam\u002Fblob\u002Fmain\u002Fskills\u002Fsearch-research\u002Fjeremylongshore-claude-code-plugins-plus-skills-exa-rate-limits-1.0.0\u002FSKILL.md",[],[174,175,176,177,178,179,180,181,182,114,183,184,185,31,186,164,29,187,188,101],"exa","exa rate limits","rate","limits","throttling","api","read","write","edit","io","throughput","retry","limit","rate limit","request",{"skillNo":190,"name":191,"nameZh":6,"description":192,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":193,"categories":194,"keywords":198,"publishedAt":44},"01M6R20FV0TM7ZZTZNG7JQ1A82","exa-deploy-integration","Deploy Exa integrations to Vercel, Fly.io, and Cloud Run platforms.\nUse when deploying Exa-powered applications to production,\nconfiguring platform-specific secrets, or setting up deployment pipelines.\nTrigger with phrases like \"deploy exa\", \"exa Vercel\",\n\"exa production deploy\", \"exa Cloud Run\", \"exa Fly.io\".","https:\u002F\u002Fgithub.com\u002FVRIL-LABS\u002Fskill-jam\u002Fblob\u002Fmain\u002Fskills\u002Fsearch-research\u002Fjeremylongshore-claude-code-plugins-plus-skills-exa-deploy-integration-1.0.0\u002FSKILL.md",[195],{"categoryNo":196,"categoryName":197,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",[199,200,174,201,202,203,204,205,206,207,180,181,182,208,209,210,183,211,212,101],"deploy","integration","exa deploy integration","deployment","run","secrets","fly","Bash","integrations","vercel","up","platform","trigger","cloud run"]