app-it-static
Turn a finished or buildable web app into a macOS Dock-launchable .app that serves built output instead of a dev server. Use when the user asks for…
Turn a local project or a hosted web app (including a published Claude Artifact URL) into a macOS Dock-launchable .app. Use when the user wants a clickable Dock app, local app package, icon, App It install, hosted-URL or Artifact wrapper, or repeatable desktop launcher. Defaults
$ npx -y skills add Christian-Katzmann/app-it --skill app-it --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/app-itContext preview
The summary Claude sees to decide when to auto-load this skill.
Turn a local project or a hosted web app (including a published Claude Artifact URL) into a macOS Dock-launchable .app. Use when the user wants a clickable Dock app, local app package, icon, App It install, hosted-URL or Artifact wrapper, or repeatable desktop launcher. Defaults
name: app-it description: >- Turn a local project or a hosted web app (including a published Claude Artifact URL) into a macOS Dock-launchable .app. Use when the user wants a clickable Dock app, local app package, icon, App It install, hosted-URL or Artifact wrapper, or repeatable desktop launcher. Defaults to native Swift WebKit, shipped templates, and verification of build, launch, ports, quit, warm relaunch, and cleanup.
App It installs local projects under `~/Applications/App It/` as clickable macOS apps: click opens, window close stays warm, Cmd+Q cleans up.
1. Run `templates/inspect.sh` first and read the output before editing. 2. Trust disk over docs. Verify project type from `package.json`, config files, and actual scripts when docs disagree. 3. Decide for the user when the default is defensible. Ask only before a destructive or genuinely ambiguous choice. 4. Copy the shipped templates into the target project and customize through `scripts/app-it.config.json`. Do not re-derive launcher patterns. 5. Keep App It local and reversible. No Electron/Tauri migration unless the project already has one or Strategy A cannot satisfy the requirement. 6. Verify the installed app path, runtime port truth, warm relaunch, Cmd+Q cleanup, and report honestly when GUI-only checks need a human. 7. When wrapping a hosted app, keep auth with the host. Never copy sessions, cookies, API keys, or another user's auth into a local bundle. For a Claude Artifact that uses hosted runtime APIs (`window.claude`, `window.storage`, MCP prompts, or Claude-provided auth), package the published/shared `claude.ai` URL rather than copied source.
Open these only when the inspection or chosen path needs them:
multi-app signals, and framework recipes.
multi-server, A4 CLI, existing Electron/Tauri/NW.js, and Strategy D.
hardcoded/env ports, and framework port cheat sheet.
placeholders, scripts, and generated docs.
placeholders, and replacement.
Chromium-only routing.
human/deferred buckets, and cleanup semantics.
`desktop:doctor`, and anti-patterns.
chat reply and `docs/desktop-launcher.app-it-report.md`.
Copy templates from `templates/`; do not rewrite them. They encode the Mach-O entrypoint, NFC/NFD-safe matching, daemon servers, two-stage cleanup, runtime port fallback, descendant reattach, Finder/Dock `PATH`, menu shortcuts, and doctor checks. See `references/generated-files.md` for the roster.
Run the bundled inspector from the target project root:
/path/to/plugins/app-it/skills/app-it/templates/inspect.sh
Use its output for worktree status, project type, scripts, hardcoded ports, multi-app/cohabiting-server signals, FSA, port collisions, toolchains, runtime paths, and assets.
Read `references/project-inspection.md` before resolving app count, names, bundle IDs, existing desktop configs, or project type. Read `references/ports-and-worktrees.md` for worktrees, hardcoded ports, proxy targets, or cohabiting frontend/backend servers.
For each user-facing app, choose one strategy:
Existing Electron/Tauri/NW.js config?
yes -> Strategy B
no -> native desktop requirements beyond web shell?
yes -> Strategy D
no -> FSA real-I/O or Chromium-only API?
yes -> A1 Chrome fallback
no -> static built bundle, no server?
yes -> A2
no -> cohabiting frontend + backend?
yes -> A3
no -> A1 native WebKit (default)Default to A1 native WebKit. Use Chrome fallback for real File System Access or other Chromium-only APIs. Use Electron/Tauri/NW.js only when the project already owns that path. Read `references/strategies.md` before anything beyond simple A1.
Touch as few target-project files as possible. Read `generated-files` for the allowed surface/config, `assets-and-icons` before icon work, and `fsa-and-chromium` before FSA polyfill or Chrome fallback.
Verification is mandatory. Read `references/verification.md` and run applicable programmatic checks:
Check executable shape, plist/icon validity, installed-path open, runtime port, HTTP response, process and LaunchServices identity, Cmd+Q cleanup via Apple Event, red-X warm state, and warm relaunch. Use `desktop:verify` for the headless loop and `desktop:doctor` for ownership/template drift. Prefer their `--json` modes for automation. `desktop:verify` uses `APP_IT_SMOKE=1` and marks GUI-only checks manual unless a visible app window is actually driven.
Never claim GUI-only checks passed unless you can actually see them. Put window content, Dock icon identity, autoplay, and FSA reconnect into the human bucket when the environment cannot verify them.
End with the `references/report-template.md` report inline and in `docs/desktop-launcher.app-it-report.md`: strategy, changed files, icon source, build/install/quit commands, installed paths, verification, Dock Stack note, limitations, and decisions.
Stage new files with
Turn a local web project — or any hosted web app — into a macOS Dock-launchable .app bundle — a native window, its own Dock icon, and clean start/stop — without Electron, Tauri, or a rewrite.
Repo: Christian-Katzmann/app-it
Turn a finished or buildable web app into a macOS Dock-launchable .app that serves built output instead of a dev server. Use when the user asks for…
Create Windows beta desktop launchers for local web projects: WPF + WebView2 .exe, Start Menu shortcut, .ico, warm server, quit cleanup. Use when the user asks…