Upgrade Starter Kit
workadventure/map-starter-kit
Upgrade a WorkAdventure map repository to the latest version of the map-starter-kit (github.com/workadventure/map-starter-kit) - refreshes package.json dependencies, vite/tsconfig/build config, CI…
Scaffold a new Vite + LitElement + IDB PWA app hosted on Netlify with a private GitHub repo.
$ npx skills add jackfranklin/dotfiles --skill new-lit-pwa -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jackfranklin/dotfiles new-lit-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/jackfranklin/dotfiles.git skills-src && mkdir -p .claude/skills && cp -r skills-src/claude/skills/new-lit-pwa .claude/skills/new-lit-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 "new-lit-pwa" agent skill from https://github.com/jackfranklin/dotfiles/tree/master/claude/skills/new-lit-pwa into .claude/skills/new-lit-pwa/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-lit-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/jackfranklin/dotfiles/tree/master/claude/skills/new-lit-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 jackfranklin/dotfiles --skill new-lit-pwa -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jackfranklin/dotfiles new-lit-pwa --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jackfranklin/dotfiles.git skills-src && mkdir -p .agents/skills && cp -r skills-src/claude/skills/new-lit-pwa .agents/skills/new-lit-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 "new-lit-pwa" agent skill from https://github.com/jackfranklin/dotfiles/tree/master/claude/skills/new-lit-pwa into .agents/skills/new-lit-pwa/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-lit-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 jackfranklin/dotfiles --skill new-lit-pwa -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jackfranklin/dotfiles new-lit-pwa --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jackfranklin/dotfiles.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/claude/skills/new-lit-pwa .cursor/skills/new-lit-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 "new-lit-pwa" agent skill from https://github.com/jackfranklin/dotfiles/tree/master/claude/skills/new-lit-pwa into .cursor/skills/new-lit-pwa/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-lit-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/jackfranklin/dotfiles.git --path claude/skills/new-lit-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 jackfranklin/dotfiles --skill new-lit-pwa -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jackfranklin/dotfiles new-lit-pwa --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jackfranklin/dotfiles.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/claude/skills/new-lit-pwa .gemini/skills/new-lit-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 "new-lit-pwa" agent skill from https://github.com/jackfranklin/dotfiles/tree/master/claude/skills/new-lit-pwa into .gemini/skills/new-lit-pwa/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-lit-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 jackfranklin/dotfiles new-lit-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 jackfranklin/dotfiles --skill new-lit-pwa -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/jackfranklin/dotfiles.git skills-src && mkdir -p .github/skills && cp -r skills-src/claude/skills/new-lit-pwa .github/skills/new-lit-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 "new-lit-pwa" agent skill from https://github.com/jackfranklin/dotfiles/tree/master/claude/skills/new-lit-pwa into .github/skills/new-lit-pwa/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-lit-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 jackfranklin/dotfiles --skill new-lit-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 jackfranklin/dotfiles new-lit-pwa --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jackfranklin/dotfiles.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/claude/skills/new-lit-pwa .opencode/skills/new-lit-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 "new-lit-pwa" agent skill from https://github.com/jackfranklin/dotfiles/tree/master/claude/skills/new-lit-pwa into .opencode/skills/new-lit-pwa/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-lit-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.
new-lit-pwaScaffold a new Vite + LitElement + IDB PWA app hosted on Netlify with a private GitHub repo.
New Lit Pwa is an agent skill from jackfranklin/dotfiles. Scaffold a new Vite + LitElement + IDB PWA app hosted on Netlify with a private GitHub repo. Use when the user wants to create a new personal web app following this stack.
Its SKILL.md is about 2.1k 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 Development. It works with Vite, GitHub and Netlify. The repository describes itself as: My dotfiles for my dev environment, compromising of tmux, vim, zsh and git. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit cb5501c. 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:
gitnpmghFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, npm and gh, 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.
New Lit Pwa loads about 2.1k tokens when it runs. Until then it costs about 46 tokens; SKILL.md has 659 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 jackfranklin/dotfiles at commit cb5501c, republished under its MIT licence (© jackfranklin). 659 words, ~2,107 tokens.
.claude/skills/new-lit-pwa/SKILL.md (or your agent's skills folder).You are scaffolding a new personal PWA app. These apps follow a strict set of conventions:
idb libraryvite-plugin-pwa (installable on phone)gh CLIIf $ARGUMENTS is not empty, parse it as: <app-name> "<Display Name>" "<Short Name>" "<description>" "<theme-color>"
Otherwise, ask the user for:
#1a1a2e)Confirm all values with the user before proceeding.
Create the project at ~/git/<app-name>/.
package.json{
"name": "<app-name>",
"version": "1.0.0",
"private": true,
"type": "module",
"scripts": {
"dev": "vite",
"build": "tsc && vite build",
"preview": "vite preview"
},
"dependencies": {
"idb": "^8.0.0",
"lit": "^3.0.0"
},
"devDependencies": {
"typescript": "^5.4.0",
"vite": "^5.0.0",
"vite-plugin-pwa": "^0.20.0"
}
}tsconfig.json{
"compilerOptions": {
"target": "ES2022",
"useDefineForClassFields": false,
"lib": ["ES2022", "DOM", "DOM.Iterable"],
"module": "ESNext",
"skipLibCheck": true,
"moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"strict": true,
"experimentalDecorators": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true
},
"include": ["src"]
}vite.config.tsFill in Display Name, Short Name, Description, and theme color from user input.
import { defineConfig } from 'vite';
import { VitePWA } from 'vite-plugin-pwa';
export default defineConfig({
plugins: [
VitePWA({
registerType: 'autoUpdate',
includeAssets: ['icons/*.png'],
manifest: {
name: '<Display Name>',
short_name: '<Short Name>',
description: '<Description>',
theme_color: '<theme-color>',
background_color: '<theme-color>',
display: 'standalone',
orientation: 'portrait',
start_url: '/',
icons: [
{ src: 'icons/icon-192.png', sizes: '192x192', type: 'image/png' },
{ src: 'icons/icon-512.png', sizes: '512x512', type: 'image/png', purpose: 'any maskable' },
],
},
workbox: {
globPatterns: ['**/*.{js,css,html,ico,png,svg}'],
runtimeCaching: [],
},
}),
],
});netlify.toml[build]
command = "npm run build"
publish = "dist"
[[redirects]]
from = "/*"
to = "/index.html"
status = 200index.htmlFill in Display Name, Short Name, and theme color.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<meta name="apple-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="<Short Name>" />
<meta name="theme-color" content="<theme-color>" />
<title><Display Name></title>
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="stylesheet" href="/src/styles/tokens.css" />
<script type="module" src="/src/main.ts"></script>
</head>
<body>
<app-root></app-root>
</body>
</html>.gitignorenode_modules
dist
.netlifysrc/main.tsimport './components/app-root.js';src/styles/tokens.cssUse the user's theme color as --color-bg and --color-surface. Derive a slightly lighter shade for --color-surface-raised. Use a contrasting accent color. Include the full design token set from the reference app:
--color-bg, --color-surface, --color-surface-raised, --color-accent, --color-accent-dim, --color-text, --color-text-muted, --color-border, --color-success, --color-warning, --color-danger--space-xs (4px) through --space-xl (32px)--radius-sm (6px), --radius-md (12px), --radius-lg (20px)env(safe-area-inset-*) for mobile notch support--tap-target: 44px minimum touch targetsrc/types.tsDefine TypeScript interfaces based on the user's described data model. Each record should have:
id: string (UUID)createdAt: string (ISO date)updatedAt: string (ISO date)src/services/db.tsIDB service using the idb library. Database name: <app-name>. Version 1.
id)getAll<Entity>(), save<Entity>(item), get<Entity>(id), delete<Entity>(id)exportData() — serializes all stores to JSON and triggers a file download via a temporary <a> elementimportData(json) — parses JSON and bulk-writes all recordssrc/components/app-root.tsLitElement root component. Should include:
exportData()connectedCallbackGenerate sensible LitElement components for the data model — at minimum:
Keep components focused. Use @property() for public props, @state() for internal state. Emit custom events (this.dispatchEvent(new CustomEvent(...))) to communicate up to the root.
All components should:
tokens.css via :host { } and standard CSS custom property referencesstatic styles defined with css\...`(imported fromlit`)In public/icons/, create placeholder files named icon-192.png and icon-512.png. Also create placeholder favicon.ico, favicon-16x16.png, favicon-32x32.png, and apple-touch-icon.png in public/.
Tell the user: "You'll need to replace the placeholder icons in public/ with real ones before deploying."
Run npm install in the project directory.
Run these commands in order:
cd ~/git/<app-name>
git init
git add .
git commit -m "Initial scaffold"
gh repo create <app-name> --private --source=. --remote=origin --pushTell the user:
cd ~/git/<app-name> && npm run dev<app-name>. Build command is npm run build, publish directory is dist.public/ with real PNG files at the correct sizes.src/types.ts and src/services/db.ts if the generated schema needs adjusting.© jackfranklin, 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 claude/skills/new-lit-pwa of jackfranklin/dotfiles.
Open the folder on GitHubat commit cb5501c
New Lit 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 |
|---|---|---|---|---|---|---|
| New Lit Pwa this skilljackfranklin/dotfiles | 255 | — | ~2.1k | Automated safety check: Pass | MIT | |
| Upgrade Starter Kitworkadventure/map-starter-kit | 157 | — | ~1.3k | Automated safety check: Notes | Custom licence | |
| Investigate Issueanalogjs/analog | 3.2k | — | ~2k | Automated safety check: Pass | MIT | |
| Diy Netlifyswyxio/skills | 176 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Avotokyo Workflowsheyq02/simpleicons.dev | 171 | — | ~1.5k | Automated safety check: Pass | Apache-2.0 | |
| TakeoverPentesterFlow/agent | 1.4k | — | ~3.3k | Automated safety check: Pass | Apache-2.0 |
workadventure/map-starter-kit
Upgrade a WorkAdventure map repository to the latest version of the map-starter-kit (github.com/workadventure/map-starter-kit) - refreshes package.json dependencies, vite/tsconfig/build config, CI…
analogjs/analog
Investigate a GitHub issue end to end — reproduce the reporter's repo or code snippet in an isolated sandbox outside the monorepo, trace the root cause in the source, and draft a reply back to the…
swyxio/skills
Build or audit an isolated Netlify/Vercel-style pull-request preview workflow using GitHub Actions and the project's existing hosting provider.
heyq02/simpleicons.dev
Use avotokyo/workflows reusable GitHub Actions for TypeScript/Vite+ projects.
PentesterFlow/agent
Subdomain takeover playbook — sweep subdomains for dangling CNAMEs / NS records pointing at unclaimed third-party resources (GitHub Pages, S3, Heroku, Azure, Netlify, Shopify, ...), confirm with the…
mizchi/skills
GitHub Actions CD for Cloudflare Workers through cf with automatic traffic rollback on smoke failure, including JSON deployment snapshots, D1 migrations and prebuilt artifacts.
jackfranklin/dotfiles
Perform a thorough, read-only review of one GitHub pull request.
jackfranklin/dotfiles
Capture an Architecture Decision Record (ADR) for a significant decision made in the current project.
jackfranklin/dotfiles
Manage Jack's personal technical reference library at ~/git/references.
jackfranklin/dotfiles
Log items to come back to later — bugs found mid-task, feature ideas, project feedback — as GitHub Issues.
jackfranklin/dotfiles
Define, review, and audit a project's domain vocabulary across code and documentation.
jackfranklin/dotfiles
A skill your agent uses when you need to resolve an in-progress git merge/rebase conflict.
Categories
Scaffold a new Vite + LitElement + IDB PWA app hosted on Netlify with a private GitHub repo. New Lit Pwa is an agent skill from jackfranklin/dotfiles. Scaffold a new Vite + LitElement + IDB PWA app hosted on Netlify with a private GitHub repo.
New Lit Pwa fits situations like: the user wants to create a new personal web app following this stack.
Run `npx skills add jackfranklin/dotfiles --skill new-lit-pwa -a claude-code`. Or copy the skill folder (claude/skills/new-lit-pwa in jackfranklin/dotfiles) into .claude/skills/new-lit-pwa in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jackfranklin/dotfiles --skill new-lit-pwa -a codex`. Or copy the skill folder (claude/skills/new-lit-pwa in jackfranklin/dotfiles) into .agents/skills/new-lit-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 jackfranklin/dotfiles --skill new-lit-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/new-lit-pwa, .gemini/skills/new-lit-pwa, .github/skills/new-lit-pwa and .opencode/skills/new-lit-pwa in your project.
Going by SKILL.md and its folder, New Lit Pwa needs the command-line tools its instructions call (git, npm and gh). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use git, npm and gh, 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.
New Lit Pwa is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.1k tokens (SKILL.md is roughly 8.4k 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 New Lit Pwa: Upgrade Starter Kit (workadventure/map-starter-kit, 157 stars), Investigate Issue (analogjs/analog, 3.2k stars), Diy Netlify (swyxio/skills, 176 stars) and Avotokyo Workflows (heyq02/simpleicons.dev, 171 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
jackfranklin (a GitHub user) maintains it in jackfranklin/dotfiles, which has 255 GitHub stars. The repository holds 20 skills in this directory. The repository was last updated on October 10, 2026.
Source: jackfranklin/dotfiles on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.