Responsive CSS
TheDecipherist/claude-code-mastery-project-starter-kit
Writing CSS and markup that works on phone and desktop at the same time, the responsive failures Claude repeats.
A skill your agent uses when the user asks to make a site installable, turn it into a PWA, add a service worker, add a web app manifest, enable "add to home screen", or support offline.
$ npx skills add spinspire/pocketbase-sveltekit-starter --skill pwa -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install spinspire/pocketbase-sveltekit-starter pwa --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/spinspire/pocketbase-sveltekit-starter.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/pwa .claude/skills/pwa && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "pwa" agent skill from https://github.com/spinspire/pocketbase-sveltekit-starter/tree/master/.agents/skills/pwa into .claude/skills/pwa/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pwa", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/spinspire/pocketbase-sveltekit-starter/tree/master/.agents/skills/pwaType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add spinspire/pocketbase-sveltekit-starter --skill pwa -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install spinspire/pocketbase-sveltekit-starter pwa --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/spinspire/pocketbase-sveltekit-starter.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/pwa .agents/skills/pwa && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "pwa" agent skill from https://github.com/spinspire/pocketbase-sveltekit-starter/tree/master/.agents/skills/pwa into .agents/skills/pwa/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pwa", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add spinspire/pocketbase-sveltekit-starter --skill pwa -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install spinspire/pocketbase-sveltekit-starter pwa --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/spinspire/pocketbase-sveltekit-starter.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/pwa .cursor/skills/pwa && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "pwa" agent skill from https://github.com/spinspire/pocketbase-sveltekit-starter/tree/master/.agents/skills/pwa into .cursor/skills/pwa/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pwa", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/spinspire/pocketbase-sveltekit-starter.git --path .agents/skills/pwa--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add spinspire/pocketbase-sveltekit-starter --skill pwa -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install spinspire/pocketbase-sveltekit-starter pwa --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/spinspire/pocketbase-sveltekit-starter.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/pwa .gemini/skills/pwa && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "pwa" agent skill from https://github.com/spinspire/pocketbase-sveltekit-starter/tree/master/.agents/skills/pwa into .gemini/skills/pwa/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pwa", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install spinspire/pocketbase-sveltekit-starter pwaInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add spinspire/pocketbase-sveltekit-starter --skill pwa -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/spinspire/pocketbase-sveltekit-starter.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/pwa .github/skills/pwa && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "pwa" agent skill from https://github.com/spinspire/pocketbase-sveltekit-starter/tree/master/.agents/skills/pwa into .github/skills/pwa/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pwa", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add spinspire/pocketbase-sveltekit-starter --skill pwa -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install spinspire/pocketbase-sveltekit-starter pwa --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/spinspire/pocketbase-sveltekit-starter.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/pwa .opencode/skills/pwa && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "pwa" agent skill from https://github.com/spinspire/pocketbase-sveltekit-starter/tree/master/.agents/skills/pwa into .opencode/skills/pwa/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pwa", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
pwaA skill your agent uses when the user asks to make a site installable, turn it into a PWA, add a service worker, add a web app manifest, enable "add to home screen", or support offline.
Pwa is an agent skill from spinspire/pocketbase-sveltekit-starter. Use when the user asks to make a site installable, turn it into a PWA, add a service worker, add a web app manifest, enable "add to home screen", or support offline. Also use when adding favicon/app icons, iOS home-screen support (apple-mobile-web-app meta tags), or verifying PWA installability.
Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Frontend & Design, covering On-page SEO. It works with iOS and SvelteKit. The repository describes itself as: a starter project to build a SvelteKit frontend with PocketBase backend. The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 66f6dee. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
magickbuncurlFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use curl, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Pwa loads about 1.9k tokens when it runs. Until then it costs about 75 tokens; SKILL.md has 593 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from spinspire/pocketbase-sveltekit-starter at commit 66f6dee, republished under its MIT licence (© spinspire). 593 words, ~1,919 tokens.
.claude/skills/pwa/SKILL.md (or your agent's skills folder).Make a web app installable and iOS-friendly with a minimal service worker. Default posture is network-only (no caching) unless the app needs offline — pick a strategy deliberately, never by default.
| Asset | Where it goes | Notes |
|---|---|---|
manifest.webmanifest | site root (static/ for SvelteKit) | name, short_name, start_url, scope, display standalone, theme/background color, icons 192+512 + maskable |
favicon-32/48/64.png | root | browser tab icons; also apple-touch-icon.png 180px for iOS |
icon-192.png, icon-512.png | root | required by Chrome for install |
icon-maskable-512.png | root | full-bleed background, content in center 80% safe zone |
sw.js | root (static/ for SvelteKit) | register from client code; served at site root for correct scope |
offline.html (optional) | root | fallback for failed navigations if offline support is wanted |
self.addEventListener('install', () => {
self.skipWaiting();
});
self.addEventListener('activate', (event) => {
event.waitUntil(clients.claim());
});
self.addEventListener('fetch', (event) => {
event.respondWith(fetch(event.request));
});This makes the app installable and always-fresh. Use for apps where data lives server-side / in a spreadsheet and serving stale data is wrong.
const CACHE = 'capstone-v1';
self.addEventListener('install', (event) => {
event.waitUntil(
caches.open(CACHE).then((c) => c.addAll(['/', '/offline.html', '/manifest.webmanifest', '/icon-192.png', '/icon-512.png']))
);
self.skipWaiting();
});
self.addEventListener('activate', (event) => {
event.waitUntil(
caches.keys().then((keys) => Promise.all(keys.filter((k) => k !== CACHE).map((k) => caches.delete(k)))).then(() => clients.claim())
);
});
self.addEventListener('fetch', (event) => {
const url = new URL(event.request.url);
if (event.request.mode === 'navigate') {
event.respondWith(fetch(event.request).catch(() => caches.match('/offline.html')));
return;
}
if (url.origin === location.origin && ['css', 'js', 'svg', 'png', 'jpg', 'woff2'].some((ext) => url.pathname.endsWith('.' + ext))) {
event.respondWith(caches.match(event.request).then((cached) => cached || fetch(event.request).then((res) => { const clone = res.clone(); caches.open(CACHE).then((c) => c.put(event.request, clone)); return res; })));
return;
}
event.respondWith(fetch(event.request));
});| Strategy | Behavior | Use for |
|---|---|---|
| Network only | Always hit network, never cache | Auth, live/volatile data, spreadsheets, anything where stale is wrong. Default. |
| Cache first | Serve from cache, update in background | Static assets: css/js, fonts, images |
| Network first | Try network, fall back to cache | HTML pages, API reads where offline read > error |
| Stale while revalidate | Serve stale instantly, refresh cache | Semi-static content, lists |
When caching, version the cache name and delete old caches in activate. Never cache POST or auth'd API responses.
Register on mount, not at parse time, so it never delays first paint:
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/sw.js').catch((err) => console.warn('SW registration failed', err));
}In SvelteKit, put this in +layout.svelte onMount. The SW must be at the site root (/sw.js) — static/sw.js ships there via adapter-static.
{
"name": "Capstone — Construction business operations",
"short_name": "Capstone",
"description": "One-line description.",
"start_url": "/",
"scope": "/",
"display": "standalone",
"background_color": "#faf9f6",
"theme_color": "#1f2933",
"icons": [
{ "src": "/icon-192.png", "sizes": "192x192", "type": "image/png" },
{ "src": "/icon-512.png", "sizes": "512x512", "type": "image/png" },
{ "src": "/icon-maskable-512.png", "sizes": "512x512", "type": "image/png", "purpose": "maskable" }
]
}Link it in the HTML head: <link rel="manifest" href="/manifest.webmanifest" />.
magick src.png -resize 192x192 icon-192.png
magick src.png -resize 512x512 icon-512.png
magick -size 512x512 xc:"#1f2933" \( src.png -resize 60% +repage \) -gravity center -composite icon-maskable-512.pngiOS ignores theme_color and needs legacy meta tags:
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="AppName" />
<meta name="theme-color" content="#1f2933" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />Caveats:
beforeinstallprompt — users install via Share → Add to Home Screen.bun run check (or project typecheck) and build pass.curl -s -o /dev/null -w "%{http_code}" localhost:5173/manifest.webmanifest → 200agent-browser eval "navigator.serviceWorker.getRegistration().then(r => ({ scope: r?.scope, active: r?.active?.state }))"rel=icon, rel=apple-touch-icon, rel=manifest, meta[name=theme-color]http://localhost is exempt for SW registration.<head> or at module top-level — delays first paint; use onMount./sw.js only controls the scope beneath it; a SW in /js/sw.js won't control /.© spinspire, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/pwa of spinspire/pocketbase-sveltekit-starter.
Open the folder on GitHubat commit 66f6dee
Pwa next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Pwa this skillspinspire/pocketbase-sveltekit-starter | 511 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Responsive CSSTheDecipherist/claude-code-mastery-project-starter-kit | 338 | — | ~2.2k | Automated safety check: Pass | MIT | |
| Turnstile Spincloudflare/skills | 3k | 4 repos | ~7.2k | Automated safety check: Notes | Apache-2.0 | |
| Sanity Best Practicesrobotostudio/turbo-start-sanity | 183 | — | ~940 | Automated safety check: Pass | MIT | |
| Find Software Developerjeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~3.7k | Automated safety check: Notes | MIT | |
| Site ArchitectureAvdLee/RocketSimApp | 805 | 11 repos | ~3.3k | Automated safety check: Pass | Custom licence |
TheDecipherist/claude-code-mastery-project-starter-kit
Writing CSS and markup that works on phone and desktop at the same time, the responsive failures Claude repeats.
cloudflare/skills
Set up, repair, or migrate to Cloudflare Turnstile bot verification in an existing frontend and backend, including server-side Siteverify.
robotostudio/turbo-start-sanity
Sanity development best practices for schema design, GROQ queries, TypeGen, Visual Editing, images, Portable Text, Studio structure, localization, migrations, Sanity Functions, Blueprints, and…
jeremylongshore/tons-of-skills-marketplace
A skill your agent uses whenever the user wants to find, shortlist, vet, or enrich US software development firms — custom software, web development, mobile app development, backend/API development…
AvdLee/RocketSimApp
When the user wants to plan, map, or restructure their website's page hierarchy, navigation, URL structure, or internal linking.
leepokai/Codync
Make a web app feel native on a phone — the small CSS and meta-tag fixes that separate "a website in a browser" from something that feels installed.
spinspire/pocketbase-sveltekit-starter
Bun as runtime, package manager, bundler, and test runner. An agent skill from spinspire/pocketbase-sveltekit-starter.
spinspire/pocketbase-sveltekit-starter
Operate PocketBase via its REST API. An agent skill from spinspire/pocketbase-sveltekit-starter.
spinspire/pocketbase-sveltekit-starter
Extend PocketBase with custom hooks and routes in JS or Go. An agent skill from spinspire/pocketbase-sveltekit-starter.
spinspire/pocketbase-sveltekit-starter
Create distinctive, production-grade frontend interfaces with high design quality and accessible markup.
spinspire/pocketbase-sveltekit-starter
A skill your agent uses when building a UI component, PocketBase hook, page, or app feature and there is proven code to copy from the reference repos.
spinspire/pocketbase-sveltekit-starter
Docker Compose conventions — short service names, no root, no host ports in base compose, override files for local customisations.
A skill your agent uses when the user asks to make a site installable, turn it into a PWA, add a service worker, add a web app manifest, enable "add to home screen", or support offline. Pwa is an agent skill from spinspire/pocketbase-sveltekit-starter. Use when the user asks to make a site installable, turn it into a PWA, add a service worker, add a web app manifest, enable "add to home screen", or support offline.
Pwa fits situations like: the user asks to make a site installable; turn it into a PWA; add a service worker; add a web app manifest.
Run `npx skills add spinspire/pocketbase-sveltekit-starter --skill pwa -a claude-code`. Or copy the skill folder (.agents/skills/pwa in spinspire/pocketbase-sveltekit-starter) into .claude/skills/pwa in your project. Claude Code loads it when a task matches its description.
Run `npx skills add spinspire/pocketbase-sveltekit-starter --skill pwa -a codex`. Or copy the skill folder (.agents/skills/pwa in spinspire/pocketbase-sveltekit-starter) into .agents/skills/pwa in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add spinspire/pocketbase-sveltekit-starter --skill pwa -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pwa, .gemini/skills/pwa, .github/skills/pwa and .opencode/skills/pwa in your project.
Going by SKILL.md and its folder, Pwa needs the command-line tools its instructions call (magick, bun and curl).
SKILL.md contains no URLs. Its commands use curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Pwa is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Pwa: Responsive CSS (TheDecipherist/claude-code-mastery-project-starter-kit, 338 stars), Turnstile Spin (cloudflare/skills, 3k stars), Sanity Best Practices (robotostudio/turbo-start-sanity, 183 stars) and Find Software Developer (jeremylongshore/tons-of-skills-marketplace, 2.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
spinspire (a GitHub organization) maintains it in spinspire/pocketbase-sveltekit-starter, which has 511 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on August 22, 2026.
Source: spinspire/pocketbase-sveltekit-starter on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.