name: pwa-optimizer
Webアプリを「インストールできる」だけでなく、「継続運用で古くならない」PWAにするためのスキル。
PWA削除→再インストール を前提にしない。manifest メタデータ更新(アイコン名/start_url など)は再インストールが必要になる場合がある。src/app / app / Vite)。pwa-audit.sh で現状監査(support level + quality score)。supportLevel=full かつ品質目標を満たすまで修正。app/manifest.ts または src/app/manifest.tspublic/manifest.jsonname, short_name, start_url, display: "standalone", icons(192/512) を含めるpublic/icons/icon-192x192.pngpublic/icons/icon-512x512.pngpublic/apple-touch-icon.png(iOS推奨)public/sw.js(または同等)を配置navigator.serviceWorker.register(...) を実装registration.update() を起動時に呼ぶupdatefound / waiting)skipWaiting + controllerchange で確実に反映updateViaCache: "none" を使い sw.js 更新の取りこぼしを減らすSW登録のクライアント実装とsw.jsのリファレンスコードは references/sw-registration.md を参照。
supportLevel:
full: manifest + SW file + SW registrationpartial: manifestのみ または SWはあるがregistrationなしnone: 上記を満たさないqualityScore (0-100):
hasManifest: 10hasServiceWorkerFile: 10hasServiceWorkerRegistration: 20hasStartupUpdateCheck: 15hasUpdateViaCacheNone: 10hasSkipWaiting: 10hasControllerChangeReload: 10hasUpdatePromptHook: 15grade:
A: 85+B: 70-84C: 50-69D: 0-49このスキル使用時は必ず以下を返す:
supportLevel, qualityScore, grade./pwa-audit.sh <project-path>./pwa-init.sh <project-path> [--app-name "App Name"] [--theme-color "#000000"]./pwa-batch-audit.shregistration.update() + skipWaiting + controllerchange)を疑う。manifest メタデータ(アイコン名・start_url)の変更は再インストールが必要になる場合があるupdateViaCache 未設定で sw.js が更新されない: navigator.serviceWorker.register('/sw.js') のデフォルトでは SW ファイルがブラウザキャッシュから返されることがある。{ updateViaCache: 'none' } を必ず指定するbeforeinstallprompt を前提にしてしまう: iOS は beforeinstallprompt イベントに非対応。インストール促進UIを iOS 向けに実装する場合はカスタムのバナーやモーダルが必要background_color / theme_color がデフォルトのまま: Next.js のデフォルト #ffffff や #000000 のまま放置すると、スプラッシュ画面やステータスバーがアプリの実際のテーマと乖離する。アプリの bg-cream 等に合わせる