[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-82733":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":23,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":36,"readmeContent":37,"aiSummary":38,"trendingCount":16,"starSnapshotCount":16,"syncStatus":39,"lastSyncTime":40,"discoverSource":41},82733,"app-it","Christian-Katzmann\u002Fapp-it","Christian-Katzmann","A Claude Code + Codex skill that turns a local project into a macOS Dock-launchable app — native window, its own icon, no Electron. [The Windows version is in BETA]","",null,"Shell",200,19,1,8,0,4,32,72,14,75.1,"MIT License",false,"main",[26,27,28,29,30,31,32,33,34,35],"claude-code","claude-plugin","codex","codex-plugin","developer-tools","dock","macos","plugin","skill","webkit","2026-06-12 04:01:38","# app-it\n\nTurn a local web project into a macOS Dock-launchable `.app` bundle — a native window, its own Dock icon, and clean start\u002Fstop — **without Electron, Tauri, or a rewrite.**\n\n> **Unofficial community project** — not affiliated with, endorsed by, or sponsored by Anthropic or OpenAI. \"Claude Code\" and \"Codex\" are their respective owners' marks, named here only to say which assistants app-it plugs into. This is an independent open-source tool built by one developer.\n\n![A real app-it build in motion: double-click the Fjord demo's Dock icon, its native window opens, ⌘Q quits and frees the port](design\u002Fmotion\u002Fapp-it-lifecycle.gif)\n\n*A real `app-it` build, in motion. `Fjord` is an ordinary local web project (`node server.js`); app-it turns it into a native macOS app — double-click launches it, the window opens with its own Dock icon, and ⌘Q quits the app **and** frees the dev-server port. The actual generated app, not a mockup.*\n\n**Status** — Working, in daily use. The launcher templates are battle-tested across 12+ real projects; `v0.1.0` is the first standalone, marketplace-installable release. macOS only, by design.\n\n**Windows beta** — macOS is in daily use; Windows is an early beta, now with its first real-hardware validation but still needing more. A complete sibling plugin (`plugins\u002Fapp-it-windows\u002F`), gated by a required `windows-latest` CI job (build · PowerShell lint · manifest parse · icon round-trip), mirrors the macOS contract with Windows primitives. The author runs only macOS, so for a long time it had never touched real Windows hardware; that changed with [#8](https:\u002F\u002Fgithub.com\u002FChristian-Katzmann\u002Fapp-it\u002Fpull\u002F8), the first run on an actual Windows machine (fixing a WebView2 window-title bug) — a real first step, not a finish line. If you're on Windows and want to help harden it, the doorway is [docs\u002FWINDOWS.md](docs\u002FWINDOWS.md).\n\n**Local-only** — app-it reads your project *on your machine* to choose a launcher strategy. It uploads nothing, runs no telemetry, adds no runtime dependencies, and never touches your business-logic source. The only thing it produces is an `.app` on your own Dock.\n\n`app-it` is an assistant-agnostic plugin\u002Fskill. It works with **Claude Code** and **Codex**, and builds a small, repeatable launcher around an existing local project so that double-clicking starts the dev server, opens a native window, keeps the Dock icon as *your* app, and cleans up when you quit.\n\n## What app-it is not\n\n- **Not Electron, Tauri, or a native rewrite.** It wraps your existing dev setup; it doesn't replace it, migrate it, or add a bundler to your dependency tree.\n- **Not a way to ship apps to other people.** No notarization, no App Store, no auto-update, no signed distribution. These are personal, ad-hoc-signed, local-use launchers.\n- **Not cross-platform.** macOS only — and on purpose. Windows is a genuinely different problem (WebView2, `.lnk`, `.ico`, SmartScreen), so it belongs in a separate plugin rather than a blurred promise. See [Compatibility](docs\u002FCOMPATIBILITY.md).\n- **Not a hosted service.** Nothing runs in the cloud and there is no live demo to visit — the proof is the apps on your own Dock (the Stack further down is real).\n\n## How it works\n\n```text\n  WHAT YOU HAVE               WHAT APP-IT DOES           WHAT YOU GET\n  ───────────────────────     ──────────────────────     ───────────────────────────\n  a local web project         inspects it from disk,     YourApp.app on your Dock\n  Vite React, SvelteKit,      picks a strategy, then     · its own icon\n  Astro, Next, or static  ──▶ builds & signs a .app  ──▶ · native window, one click\n  sites (`npm run dev`)       around a WebKit shell      · ⌘Q quits & frees the port\n```\n\nUnder the hood, app-it:\n\n- **Inspects before it touches anything** — project type, dev scripts, ports, browser-API needs, icon sources.\n- **Picks a launcher strategy** — a native Swift `WKWebView` shell by default (so the Dock icon stays *yours*), Chrome `--app` mode only when a project needs Chromium-only APIs.\n- **Copies proven, hard-won templates** into the project rather than re-deriving fragile launcher logic each time.\n- **Builds and ad-hoc-signs a real `.app`** — universal (arm64 + x86_64), Gatekeeper-friendly, with a generated `.icns`.\n- **Gets the lifecycle right** — closing the window (⌘W \u002F red-X) leaves the dev server warm for a ~250 ms re-launch; ⌘Q quits the app *and* frees the port.\n- **Writes a report** explaining every change and exactly how to undo it.\n\n> **Finished app? There's a lighter companion.** `app-it` runs your project's dev server — perfect while you're still building. Once an app is *done*, it doesn't need one: the **`app-it-static`** companion serves the built output (`dist\u002F`, `build\u002F`, `out\u002F`, …) so a finished app costs ~15 MB instead of a dev server's ~300–700 MB. Same native window, same Dock Stack — reach for it only when an app is done. [How it works →](plugins\u002Fapp-it-static\u002Fskills\u002Fapp-it-static\u002FSKILL.md)\n\n## Requirements\n\n- macOS.\n- Claude Code or Codex for marketplace installation.\n- `swiftc` (Xcode Command Line Tools) for the native WebKit shell — `xcode-select --install`.\n- `python3` (also from the Xcode Command Line Tools) for `app-it-static`'s server mode.\n- Chrome only if a project needs the Chrome fallback path.\n\n## Install\n\n**Claude Code:**\n\n```text\nclaude plugin marketplace add Christian-Katzmann\u002Fapp-it\nclaude plugin install app-it@app-it\n```\n\n**Codex:**\n\n```text\ncodex plugin marketplace add Christian-Katzmann\u002Fapp-it\ncodex plugin add app-it@app-it\n```\n\nThen, from inside any local web project, ask your assistant:\n\n```text\n\u002Fapp-it\n```\n\nNatural triggers work too: *\"make this clickable from the Dock\"*, *\"give this an icon\"*, *\"dockify this\"*, *\"package this as a local app\"*.\n\n*Optional:* for finished apps, also install the lighter companion — `claude plugin install app-it-static@app-it` (or `codex plugin add app-it-static@app-it`), then run `\u002Fapp-it-static`.\n\n### Local development (before publication)\n\n```text\nclaude plugin marketplace add \u002Fpath\u002Fto\u002Fapp-it\nclaude plugin install app-it@app-it\n\ncodex plugin marketplace add \u002Fpath\u002Fto\u002Fapp-it\ncodex plugin add app-it@app-it\n```\n\n### Manual skill install\n\nMarketplace install is preferred. To copy just the skill folder:\n\n```bash\n.\u002Finstall.sh            # auto-detects Claude Code and\u002For Codex, asks before overwrite\n.\u002Finstall.sh --dry-run  # show what it would do, write nothing\n```\n\n## What it adds to a target project\n\nAll additions are additive and reversible:\n\n- `scripts\u002Fapp-it.config.json` — single source of truth for the app(s)\n- `scripts\u002Fdesktop-build.sh`, `desktop-install.sh`, `desktop-quit.sh`, `wrapper.swift`, …\n- `assets\u002F\u003Cslug>-icon.png` or `.svg`\n- `desktop\u002F\u003CApp Name>.app\u002F` *(gitignored — regenerated by the build)*\n- `docs\u002Fdesktop-launcher.md` and an `app-it-report.md` decision log\n- `package.json` scripts: `desktop:build`, `desktop:install`, `desktop:quit`\n\nInstalled apps land in `~\u002FApplications\u002FApp It\u002F` by default. Drag that folder to the right side of the Dock once and every future appified app appears in its Stack automatically. Override with `APP_IT_INSTALL_DIR`.\n\n![A real MyApps Dock Stack — Mission Control, Campaigns, monëy, Heartbeat, Repo Hunter and more, each with its own icon](design\u002Fscreenshots\u002F01-myapps-stack.jpg)\n\n*A real `MyApps` Stack, not a mockup. Every icon is an ordinary local web project app-it turned into a native app — its own icon, its own window, one click to launch. Do this a dozen times and your Dock fills itself.*\n\n## Safety model\n\n`app-it` only makes additive, reversible changes. It will not rewrite product logic, add runtime dependencies, require a terminal window to stay open, or assume an already-running dev server. It may start and stop local dev-server processes during verification. It never collects telemetry, sends project data anywhere, or handles secrets. See [SECURITY.md](SECURITY.md).\n\n## Validate this repo\n\n```bash\n.\u002Fscripts\u002Fvalidate.sh\n```\n\nThis is the one-command check: it validates manifest shape, shell syntax, template presence, plist syntax, Swift typechecking, and Claude plugin validation (when the `claude` CLI is available). CI runs the same script on `macos-latest`.\n\n## For AI agents\n\nThis repo *is* agent tooling, and agents are expected to work in it. Start with [AGENTS.md](AGENTS.md) — it names the non-obvious conventions (templates are canonical, trust disk over docs, the macOS-only boundary) and the safe first commands. Architectural decisions and their rejected alternatives live in [docs\u002Fdecisions\u002F](docs\u002Fdecisions\u002F).\n\n## More\n\n- [Troubleshooting](docs\u002FTROUBLESHOOTING.md)\n- [Compatibility](docs\u002FCOMPATIBILITY.md)\n- [Changelog](CHANGELOG.md) · [Contributing](CONTRIBUTING.md)\n\n## Community nudge\n\nThe `app-it-static` companion was inspired by feedback from the r\u002FClaudeAI launch thread, and the project keeps growing on community help. Thanks to:\n\n- **`TechExpert2910`** for pointing out that finished apps shouldn't need a full dev server, and that Vercel\u002FPWA-style workflows are far lighter — the nudge that became \"serve the build locally, not a dev server.\"\n- **`K_M_A_2k`** for highlighting that deployed\u002Fstatic proof-of-concepts are often the standard workflow and are easier to share.\n- **`Vo_Mimbre`** for the corporate-environment caveat: external hosting like Vercel isn't always approved, which is exactly why a *local* static launcher earns its place even for finished projects.\n- **`Firnschnee`** for the first real-hardware Windows validation, fixing the WebView2 window-title bug and proving the Windows beta actually runs.\n- **`SohamKela`** for hardening the native window so a restored frame can't open off-screen or postage-stamp sized, and adding first-class Vite + React, SvelteKit, and Astro dev recipes.\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n","app-it 是一个将本地Web项目转换为可在macOS Dock中启动的应用程序的工具，提供原生窗口和自定义图标，无需使用Electron。其核心功能包括生成原生macOS应用程序包，双击Dock图标即可启动应用，并且在退出时自动释放开发服务器端口。该工具不依赖于Electron或Tauri等框架，而是通过简单封装现有开发环境来实现这一目标。适用于需要快速将本地Web项目转变为具有专业外观的macOS应用程序的开发者场景，特别适合个人或小团队进行本地开发和测试。目前支持macOS系统，Windows版本尚处于测试阶段。",2,"2026-06-11 04:09:02","CREATED_QUERY"]