Agent skill

App It Static

by Christian-Katzmann in 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.

MITAuto-check passed

Install App It Static

skills CLI
$ npx skills add Christian-Katzmann/app-it --skill app-it-static -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Christian-Katzmann/app-it app-it-static --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Christian-Katzmann/app-it.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/app-it-static/skills/app-it-static .claude/skills/app-it-static && rm -rf skills-src

Use ~/.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/

Facts

Skill name
app-it-static
GitHub stars
216
Token cost
~1.3k tokens
SKILL.md length
583 words
Files
25 (incl. references)
Skills in repo
3
Repo updated
First seen
Licence
MIT

At a glance

Turn a finished or buildable web app into a macOS Dock-launchable .app that serves built output instead of a dev server.

  • Works in 5 steps: Inspect → Decide → Build → …
  • The user asks for app-it-static
  • SKILL.md covers Non-Negotiables, Reference Map, Templates and Workflow, plus 2 more sections
  • Runs Shell scripts from its folder; calls npm

What it does

App It Static is an agent skill from 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 app-it-static, a finished site/app launcher, a lightweight Dock app, or a dist/build/out bundle clickable from the Dock. Builds once, serves a snapshot via static-server.py or file://, and routes live projects to app-it. macOS only.

Its SKILL.md is about 1.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 26 other files, including reference files (for example `references/anti-patterns.md`, `references/generated-files.md` and `references/project-inspection.md`).

It works with macOS. The repository describes itself as: Turn your local web projects into Mac apps you can launch from the Dock, with their own window, name and icon. The licence is MIT.

When your agent uses it

  • The user asks for app-it-static
  • A finished site/app launcher
  • A lightweight Dock app
  • A dist/build/out bundle clickable from the Dock

Example prompts

  • “/app-it-static”

Requirements

  • Python 3
  • A Bash shell

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Inspect
  2. Decide
  3. Build
  4. Verify
  5. Report

What it can do on your machine

Read from SKILL.md and the folder at commit 9ad064e. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Ships script files (Shell, from the files we listed), which the agent can run.

    Shell commands in SKILL.md call:

    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

App It Static loads about 1.3k tokens when it runs, and up to ~3.7k if it reads all its reference files. Until then it costs about 99 tokens; SKILL.md has 583 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~99
When it runs · the whole SKILL.md, loaded when a task matches
~1.3k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~3.7k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from Christian-Katzmann/app-it at commit 9ad064e, republished under its MIT licence (© Christian-Katzmann). 583 words, ~1,343 tokens.

Download SKILL.mdSave it as .claude/skills/app-it-static/SKILL.md (or your agent's skills folder). This skill also uses 24 other files; get the full folder from GitHub.
name
app-it-static
description
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 app-it-static, a finished site/app launcher, a lightweight Dock app, or a dist/build/out bundle clickable from the Dock. Builds once, serves a snapshot via static-server.py or file://, and routes live projects to app-it. macOS only.

app-it-static - Make a finished build launchable from the Dock

app-it-static is the no-dev-server companion to app-it: it builds once, serves the finished output, installs beside live apps in ~/Applications/App It/, and keeps the native Swift WebKit window and Dock identity.

Non-Negotiables

  1. Run templates/inspect-static.sh first and read the output before editing.
  2. Confirm before the first project build. It can write files and take time.
  3. Never run npm run dev. If the app needs a live dev server, route to app-it and say why.
  4. Serve a snapshot and say so. Source changes need desktop:rebuild.
  5. Default to serve_mode: "server". Use file only after proving the build is file:// safe.
  6. Copy shipped templates and customize through scripts/app-it.config.json. Do not re-derive launcher patterns.
  7. Verify the built output, app bundle, install path, runtime port, server response, quit cleanup, and human-only GUI limits.

Reference Map

Open only the files needed by the inspection result:

  • references/project-inspection.md - static-servable tests, build/output detection, package managers, monorepos, names, bundle IDs, and tools.
  • references/serve-modes.md - server vs file decisions and the file:// safety checklist.
  • references/generated-files.md - template roster, shared-template rules, allowed target-project files, config JSON, and package scripts.
  • references/verification.md - smoke tests, app-bundle checks, runtime checks, cleanup, and human/deferred buckets.
  • references/report-template.md - exact final report format plus decision history.
  • references/anti-patterns.md - traps that cause broken static launchers.

Templates

Templates live next to this file in templates/. Copy them into the target project; do not rewrite them. See references/generated-files.md for the full roster.

Shared templates are byte-identical to app-it and guarded by repo validation: wrapper.swift, native-run-stub.c, desktop-icons.sh, desktop-icons-preview.sh, desktop-install.sh, info-plist-template.xml, and placeholder-icon-gen.sh. If launcher internals change, edit the app-it copy and re-sync this plugin so marketplace installs stay self-contained.

Workflow

1. Inspect

Run:

bash
/path/to/plugins/app-it-static/skills/app-it-static/templates/inspect-static.sh

Use disk truth: package.json, config files, built output, and actual scripts. Read references/project-inspection.md before deciding whether the app is static-servable, which build command/output dir to use, or whether a monorepo contains multiple apps.

2. Decide

For each user-facing app:

text
Static build or hand-written index.html exists?
  no  -> route to app-it
  yes -> needs http origin, routing fallback, fetch(), or service worker?
           yes -> server mode (default)
           no  -> file mode candidate

When unsure, choose server mode. It costs a tiny Python process and is the safe default for framework builds.

Show full SKILL.md (244 more words)Show less
3. Build

Confirm with the user, run the project build once, then copy templates into the target project and write scripts/app-it.config.json. desktop:build assembles the .app; it must not run the project build. desktop:rebuild is the refresh path that reruns the build command.

Read references/generated-files.md before editing package scripts, generated docs, config JSON, icons, or install paths.

4. Verify

Verification is mandatory. Read references/verification.md and run the checks that apply: built index.html, Mach-O Contents/MacOS/run, executable run.sh, Mach-O wrapper, plist placeholders gone, .icns, installed-path open, server response, and Cmd+Q cleanup for server mode.

Never claim GUI-only checks passed unless a display actually proves them. Put window render and Dock icon identity in the human bucket when needed.

5. Report

Use references/report-template.md for both the chat reply and docs/desktop-launcher.app-it-static-report.md. Include snapshot limitations, refresh command, verification results, known limits, and decision history.

Stage files only when the local convention or user request asks for it. Do not commit unless asked.

Quick Defaults

  • Install destination: ~/Applications/App It/.
  • Bundle ID prefix: com.user.<slug>.
  • Serve mode: server, unless file:// safety is proven.
  • Vite/CRA/Astro/SvelteKit static/Next export/Angular/Nuxt generate: usually server mode.
  • Hand-written index.html with relative assets and no routing/fetch/service worker: file mode candidate.
  • Missing swiftc or python3: stop and say xcode-select --install.

Stop Signs

Stop and explain clearly when the app only works through a live dev server, the build fails before launcher work, the output dir lacks index.html, required tooling is missing, or the environment cannot verify a claim the report would need.

© Christian-Katzmann, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 24 other files (references) in plugins/app-it-static/skills/app-it-static of Christian-Katzmann/app-it.

  • SKILL.md
  • references/anti-patterns.md
  • references/generated-files.md
  • references/project-inspection.md
  • references/report-template.md
  • references/serve-modes.md
  • references/verification.md
  • templates/app-it.config.example.json
  • templates/desktop-build.sh
  • templates/desktop-icons-preview.sh
  • templates/desktop-icons.sh
  • templates/desktop-install.sh
  • templates/desktop-launcher.md.template
  • templates/desktop-quit.sh
  • templates/desktop-rebuild.sh
  • templates/info-plist-template.xml
  • templates/inspect-static.sh
  • templates/native-run-stub.c
  • templates/placeholder-icon-gen.sh
  • … and 6 more

Open the folder on GitHubat commit 9ad064e

Compare with similar skills

App It Static 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.

App It Static compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
App It Static this skillChristian-Katzmann/app-it216—~1.3kAutomated safety check: PassMIT
Site ArchitectureAvdLee/RocketSimApp80611 repos~3.3kAutomated safety check: PassCustom licence
Engine Whats Newflutter/flutter180k—~978Automated safety check: PassBSD-3-Clause
macOS Spm App PackagingDimillian/Skills4k5 repos~1.2kAutomated safety check: PassMIT
Openclaw Live Updateropenclaw/openclaw392k—~3.7kAutomated safety check: PassMIT
Orca iOS Simulator Controlstablyai/orca89k1 repos~584Automated safety check: PassApache-2.0

Similar skills

  • Site Architecture

    AvdLee/RocketSimApp

    When the user wants to plan, map, or restructure their website's page hierarchy, navigation, URL structure, or internal linking.

    806 GitHub starsUsed in 11 repos~3.3k tokens
    Marketing & SEOAuto-check passed
  • Engine Whats New

    flutter/flutter

    Generates the "what's new" release summary and diff file for changes in the Flutter engine (//engine/src/flutter) between two releases (e.g., 3.47 vs 3.44).

    180k GitHub stars~978 tokensUpdated today
    MobileAuto-check passed
  • macOS Spm App Packaging

    Dimillian/Skills

    Scaffold, build, and package SwiftPM-based macOS apps without an Xcode project.

    4k GitHub starsUsed in 5 repos~1.2k tokens
    MobileAuto-check passed
  • Openclaw Live Updater

    openclaw/openclaw

    Maintain the canonical live OpenClaw main checkout, macOS LaunchAgent-managed Gateway, local macOS app, exact-head main CI, and recurring full release validation.

    392k GitHub stars~3.7k tokensUpdated today
    DevOps & CloudAuto-check passed
  • iOS Simulator control from inside Orca, with the live device view in Orca's emulator pane. Use when driving a booted Apple Simulator on macOS: taps, gestures…

    89k GitHub starsUsed in 1 repo~584 tokens
    MobileAuto-check passed
  • A catalog of recurring bug shapes in the Mole Mac cleaner, used to review safety-sensitive diffs for deletion safety, unbounded commands, shell traps and weak tests.

    70k GitHub stars~2k tokensUpdated today
    DevelopmentAuto-check passed

More from Christian-Katzmann/app-it

  • App It

    Christian-Katzmann/app-it

    Turn a local project or a hosted web app (including a published Claude Artifact URL) into a macOS Dock-launchable .app.

    216 GitHub stars~2.4k tokensUpdated 10 days ago
    Auto-check passed
  • App It Windows

    Christian-Katzmann/app-it

    Create Windows beta desktop launchers for local web projects: WPF + WebView2 .exe, Start Menu shortcut, .ico, warm server, quit cleanup.

    216 GitHub stars~1.5k tokensUpdated 10 days ago
    Auto-check passed

Works with

Questions about App It Static

What does App It Static do?

Turn a finished or buildable web app into a macOS Dock-launchable .app that serves built output instead of a dev server. App It Static is an agent skill from Christian-Katzmann/app-it.app that serves built output instead of a dev server.

When should I use App It Static?

App It Static fits situations like: the user asks for app-it-static; A finished site/app launcher; A lightweight Dock app; A dist/build/out bundle clickable from the Dock.

How do I install App It Static in Claude Code?

Run `npx skills add Christian-Katzmann/app-it --skill app-it-static -a claude-code`. Or copy the skill folder (plugins/app-it-static/skills/app-it-static in Christian-Katzmann/app-it) into .claude/skills/app-it-static in your project. Claude Code loads it when a task matches its description.

How do I install App It Static in Codex?

Run `npx skills add Christian-Katzmann/app-it --skill app-it-static -a codex`. Or copy the skill folder (plugins/app-it-static/skills/app-it-static in Christian-Katzmann/app-it) into .agents/skills/app-it-static in your project. Codex loads it when a task matches its description.

Can I use App It Static in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Christian-Katzmann/app-it --skill app-it-static -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/app-it-static, .gemini/skills/app-it-static, .github/skills/app-it-static and .opencode/skills/app-it-static in your project.

What does App It Static need to run?

Going by SKILL.md and its folder, App It Static needs a shell for the scripts in its folder and the command-line tools its instructions call (npm). Our summary lists: Python 3; A Bash shell.

Does App It Static access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is App It Static safe to install?

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.

What licence does App It Static use?

App It Static is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does App It Static use?

About 1.3k tokens (SKILL.md is roughly 5.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.3k tokens, read only when the agent opens those files.

What are the alternatives to App It Static?

Skills that share tags, products or a category with App It Static: Site Architecture (AvdLee/RocketSimApp, 806 stars), Engine Whats New (flutter/flutter, 180k stars), macOS Spm App Packaging (Dimillian/Skills, 4k stars) and Openclaw Live Updater (openclaw/openclaw, 392k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains App It Static?

Christian-Katzmann (a GitHub user) maintains it in Christian-Katzmann/app-it, which has 216 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on September 30, 2026.

Source: Christian-Katzmann/app-it on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.