app-it 是一个面向 macOS 的开源 AI 助手技能/插件,用于把本地 Web 项目(或托管 Web 应用)变成可以从 Dock 启动的 .app 桌面应用。它使用原生 Swift WKWebView 外壳,不引入 Electron、Tauri,也不要求重写现有项目——只围绕已有的开发环境生成一个可重复使用的启动器。
主要能力
- 将本地 Web 项目转换为 macOS .app:有自己的窗口、名称、Dock 图标,双击启动,⌘Q 退出并释放端口。
- 使用原生 Swift WKWebView 外壳(默认),确保 Dock 图标保持为用户应用;仅当项目需要 Chromium 专用 API 时才回退到 Chrome --app 模式。
- 支持包装托管 Web 应用:通过 external_url 指定已发布链接(例如已发布的 Claude Artifact),每个用户在应用窗口内用自己的账号登录,不共享密钥。
- 生成真实、通用(arm64 + x86_64)、临时签名且对 Gatekeeper 友好的 .app,并生成 .icns 图标。
- 妥善处理生命周期:关闭窗口(⌘W / 红叉)时开发服务器保持预热,约 250 毫秒可重新启动;⌘Q 退出应用并释放端口。
- 输出报告,说明每一处改动及如何撤销。
- 提供 app-it-static 伴随工具,用于已完成应用:本地静态服务 dist/、build/、out/ 等构建产物,占用约 15 MB,而非开发服务器的约 300–700 MB。
使用方式
- 前置条件:Claude Code 或 Codex(用于市场安装);swiftc(Xcode Command Line Tools)用于原生 WebKit 外壳;python3 用于 app-it-static 的服务器模式;Chrome 仅在需要 Chrome 回退路径时使用。
- 在任意本地 Web 项目中向助手提问即可触发,自然语言触发如:“make this clickable from the Dock”、“give this an icon”、“dockify this”、“package this as a local app”。
- 包装托管 Web 应用:将 app-it 指向其 URL 而非复制源码。Claude Artifact 是常见场景,应使用托管 artifact 链接;原始 .jsx 文件只有在不依赖 Claude 托管运行时(window.claude、window.storage、MCP prompts 或 Claude 提供的认证)时,才能作为普通本地 React 应用工作。
- 可选安装 app-it-static:claude plugin install app-it-static@app-it 或 codex plugin add app-it-static@app-it,然后运行 /app-it-static。
- 开发安装(发布前)或手动技能安装方式可参考仓库说明。
- 安装的 app 默认位于 ~/Applications/App It/,可将该文件夹拖到 Dock 右侧一次,之后所有新 app 会自动出现在 Stack 中。可通过 APP_IT_INSTALL_DIR 覆盖。
- 默认端口模式为 port_mode: "fallback",允许同级本地应用从首选端口向上扫描共存;仅当应用必须停留在某个固定 localhost 源(如浏览器存储或 OAuth 回调)时才使用 port_mode: "fixed"。
适用场景
- 将本地开发的 Web 项目快速变成 macOS 桌面应用,方便日常启动使用。
- 包装已发布的托管 Web 应用(如 Claude Artifact),在独立窗口中登录使用。
- 已完成应用的轻量静态分发:使用 app-it-static 避免启动完整开发服务器。
- 面向 AI 生成的本地软件:仓库提供 app-it compatible 验证,app-it verify --strict 通过即表示应用可构建、可启动、可服务、有独立进程并可干净退出。
限制
- 仅支持 macOS(官方明确设计如此)。Windows 处于早期 beta,使用独立插件,仍需更多实机验证。
- 不是 Electron、Tauri 或原生重写,只是包装现有开发环境,不替换、不迁移、不添加打包器依赖。
- 不是通用签名分发系统:无公证、无 App Store、无自动更新、无安装器。包装托管 Web 应用的自包含包可压缩分享,但仍为临时签名的本地 bundle,接收者需信任该 bundle 并用自己的账号登录。
- 不是托管服务,无云端运行,无在线演示。
- 仅做附加、可撤销的改动,不重写产品逻辑、不添加运行时依赖、不要求终端窗口保持打开。验证期间可能启动和停止本地开发服务器进程。不收集遥测、不发送项目数据、不处理密钥。
许可 MIT,详见仓库 LICENSE。