Skip to main content
ClaudeWave
Skill201 estrellas del repoactualizado 7d ago

app-it-static

>-

Instalar en Claude Code
Copiar
git clone --depth 1 https://github.com/Christian-Katzmann/app-it /tmp/app-it-static && cp -r /tmp/app-it-static/plugins/app-it-static/skills/app-it-static ~/.claude/skills/app-it-static
Después abre una sesión nueva de Claude Code; el skill carga automáticamente.

SKILL.md

# 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.

### 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.