web-pwa
PWA: service workers, Cache API, manifest, offline, background sync, push notifications
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o web-pwa.zip https://jpskill.com/download/22301.zip && unzip -o web-pwa.zip && rm web-pwa.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/22301.zip -OutFile "$d\web-pwa.zip"; Expand-Archive "$d\web-pwa.zip" -DestinationPath $d -Force; ri "$d\web-pwa.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
web-pwa.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
web-pwaフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
web-pwa
目的
このスキルは、サービスワーカー、キャッシュ、マニフェスト、オフライン機能、バックグラウンド同期、プッシュ通知を管理することで、プログレッシブウェブアプリ(PWA)の構築を可能にします。ネイティブアプリのように、ウェブアプリをインストール可能で、信頼性が高く、魅力的なものにすることに重点を置いています。
使用する場面
このスキルは、ニュースリーダーやEコマースサイトのようなオフラインアクセスが必要なウェブアプリの開発、チャットアプリのようなプッシュ通知が必要なアプリ、またはデータ更新のためのバックグラウンド同期でユーザーエクスペリエンスを向上させる場合に利用します。ユーザーがモバイルまたはデスクトップブラウザでアプリのような動作を期待するシナリオで適用してください。
主な機能
- サービスワーカー: Cache API を使用してネットワークリクエストを傍受し、レスポンスをキャッシュします(例:
caches.open('my-cache'))。 - マニフェスト: アプリのメタデータを JSON ファイルで定義し(例:
{ "name": "My PWA", "start_url": "/" })、インストールを可能にします。 - オフラインサポート: サービスワーカーと IndexedDB を介して、インターネットなしでアプリが機能できるようにします。
- バックグラウンド同期: Background Sync API を使用して、オンラインになったときに後で実行するタスクをキューに入れます(例:
registration.sync.register('my-sync'))。 - プッシュ通知: Push API と Service Worker API を介してサブスクリプションとメッセージを処理します(例: サーバー通信用の
subscription.endpoint)。
使用パターン
PWA を実装するには、まずサービスワーカーファイル(例: sw.js)を作成し、メインスクリプトで登録します。オフラインキャッシュには、Cache API を使用してアセットを保存します。登録する前に、常にサービスワーカーのサポートを確認してください。インストールプロンプトのためにウェブアプリマニフェストを統合します。ブラウザの開発者ツールの Application タブでパターンをテストしてください。
一般的なコマンド/API
- サービスワーカーの登録: JavaScript ファイルで
if ('serviceWorker' in navigator) { navigator.serviceWorker.register('/sw.js'); }を使用します。 - アセットのキャッシュ:
sw.jsで、リクエストを処理するためにevent.respondWith(caches.match(event.request).then(response => response || fetch(event.request)));を追加します。 - ホーム画面への追加: manifest.json に
"display": "standalone"が含まれていることを確認し、ルートから提供します。 - プッシュ通知の処理:
registration.pushManager.subscribe({ userVisibleOnly: true })で購読し、https://yourserver.com/pushのようなサーバーエンドポイントを介して送信します(認証には $VAPID_PUBLIC_KEY が必要です)。 - バックグラウンド同期:
navigator.serviceWorker.ready.then(reg => reg.sync.register('sync-tag'))で登録します。バンドルにはworkbox-cli buildのような CLI ツールを使用します(例:npx workbox generateSW workbox-config.js)。 マニフェストの構成形式:{ "short_name": "App", "icons": [{ "src": "icon.png", "sizes": "192x192" }] }のような JSON オブジェクトです。
統合に関する注意点
このスキルを既存のウェブプロジェクトに統合するには、サービスワーカーのスクリプトとマニフェストファイルを追加します。プッシュ通知の場合、Web Push ライブラリを使用してサーバーをセットアップし、署名には $VAPID_PRIVATE_KEY のような環境変数を使用します。フレームワークを使用している場合は、React で useEffect(() => { if ('serviceWorker' in navigator) navigator.serviceWorker.register(); }, []); を介してインポートします。キャッシュには Fetch API と組み合わせます。サービスワーカーには HTTPS を確保してください。登録前に既存のワーカーを確認することで、競合を回避します。
エラー処理
サービスワーカーを登録する際、.then(() => console.log('Registered')).catch(err => console.error('Registration failed:', err)) でエラーをキャッチします。キャッシュ操作の場合、プロミスの拒否を処理します(例: caches.open('cache-name').then(cache => cache.addAll(['/'])).catch(err => console.error(err)))。プッシュ購読が失敗した場合は、ユーザーの権限を確認し、まず Notification.requestPermission() を使用します。バックグラウンド同期の場合、サービスワーカーで sync イベントをリッスンし、event.tag を使用して再試行またはログ記録することで失敗を処理します。セキュリティエラーには DOMException のようなブラウザ固有のエラーコードを使用し、アプリにグローバルエラーハンドラを設定します。
具体的な使用例
- 基本的な PWA セットアップ: 静的アセットをキャッシュするためのサービスワーカーを作成します。
index.jsで:if ('serviceWorker' in navigator) { navigator.serviceWorker.register('/sw.js').then(reg => console.log('SW registered')); }。sw.jsで:self.addEventListener('install', event => event.waitUntil(caches.open('static').then(cache => cache.add('/'))));。これにより、ホームページのオフライン読み込みが可能になります。 - プッシュ通知の統合: ユーザーを購読させ、メッセージを処理します。アプリで:
registration.pushManager.subscribe().then(sub => fetch('/subscribe', { method: 'POST', body: JSON.stringify(sub) }));。サーバーでは、$VAPID_PUBLIC_KEY を使用してPOST /subscribeのようなエンドポイントを使用し、Push API を介して通知を送信します。
グラフの関係
- クラスター
web-devに関連しています(例:web-frontend、web-backendのようなスキルと依存関係を共有します)。 - タグを介して接続されています:
pwa(mobile-appにリンク)、service-worker(web-performanceにリンク)、offline(data-syncにリンク)、web(full-stack-devにリンク)。 - 依存関係: ウェブ API が必要です。サービスワーカーの生成には Workbox のようなツールと統合します。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
web-pwa
Purpose
This skill enables building Progressive Web Apps (PWAs) by managing service workers, caching, manifests, offline functionality, background sync, and push notifications. It focuses on making web apps installable, reliable, and engaging like native apps.
When to Use
Use this skill when developing web apps that need offline access, such as news readers or e-commerce sites; for apps requiring push notifications, like chat apps; or when enhancing user experience with background sync for data updates. Apply it in scenarios where users expect app-like behavior on mobile or desktop browsers.
Key Capabilities
- Service Workers: Intercept network requests and cache responses using the Cache API (e.g.,
caches.open('my-cache')). - Manifest: Define app metadata in a JSON file (e.g.,
{ "name": "My PWA", "start_url": "/" }) for installability. - Offline Support: Enable apps to function without internet via service workers and IndexedDB.
- Background Sync: Queue tasks for later execution when online, using the Background Sync API (e.g.,
registration.sync.register('my-sync')). - Push Notifications: Handle subscriptions and messages via the Push API and Service Worker API (e.g.,
subscription.endpointfor server communication).
Usage Patterns
To implement a PWA, first create a service worker file (e.g., sw.js) and register it in your main script. For offline caching, use the Cache API to store assets. Always check for service worker support before registration. Integrate a web app manifest for installation prompts. Test patterns in a browser's dev tools under the Application tab.
Common Commands/API
- Register a service worker: Use
if ('serviceWorker' in navigator) { navigator.serviceWorker.register('/sw.js'); }in your JavaScript file. - Cache assets: In
sw.js, addevent.respondWith(caches.match(event.request).then(response => response || fetch(event.request)));to handle requests. - Add to home screen: Ensure manifest.json includes
"display": "standalone"and serve it from the root. - Handle push notifications: Subscribe with
registration.pushManager.subscribe({ userVisibleOnly: true })and send via a server endpoint likehttps://yourserver.com/push(requires $VAPID_PUBLIC_KEY for authentication). - Background sync: Register with
navigator.serviceWorker.ready.then(reg => reg.sync.register('sync-tag')); use CLI tools likeworkbox-cli buildfor bundling (e.g.,npx workbox generateSW workbox-config.js). Config format for manifest: JSON object like{ "short_name": "App", "icons": [{ "src": "icon.png", "sizes": "192x192" }] }.
Integration Notes
Integrate this skill with existing web projects by adding a service worker script and manifest file. For push notifications, set up a server with the Web Push library and use env vars like $VAPID_PRIVATE_KEY for signing. If using frameworks, import in React via useEffect(() => { if ('serviceWorker' in navigator) navigator.serviceWorker.register(); }, []);. For caching, combine with Fetch API; ensure HTTPS for service workers. Avoid conflicts by checking for existing workers before registration.
Error Handling
When registering service workers, catch errors with .then(() => console.log('Registered')).catch(err => console.error('Registration failed:', err)). For cache operations, handle promise rejections (e.g., caches.open('cache-name').then(cache => cache.addAll(['/'])).catch(err => console.error(err))). If push subscription fails, check user permissions and use Notification.requestPermission() first. For background sync, listen for sync events in the service worker and handle failures by retrying or logging with event.tag. Use browser-specific error codes, like DOMException for security errors, and set up global error handlers in your app.
Concrete Usage Examples
- Basic PWA Setup: Create a service worker to cache static assets. In
index.js:if ('serviceWorker' in navigator) { navigator.serviceWorker.register('/sw.js').then(reg => console.log('SW registered')); }. Insw.js:self.addEventListener('install', event => event.waitUntil(caches.open('static').then(cache => cache.add('/'))));. This enables offline loading of the home page. - Push Notifications Integration: Subscribe users and handle messages. In your app:
registration.pushManager.subscribe().then(sub => fetch('/subscribe', { method: 'POST', body: JSON.stringify(sub) }));. On the server, use an endpoint likePOST /subscribewith $VAPID_PUBLIC_KEY to send notifications via the Push API.
Graph Relationships
- Related to cluster: web-dev (e.g., shares dependencies with skills like web-frontend, web-backend).
- Connected via tags: pwa (links to mobile-app), service-worker (links to web-performance), offline (links to data-sync), web (links to full-stack-dev).
- Dependencies: Requires web APIs; integrates with tools like Workbox for service worker generation.