Skip to content

Commit 27fd4df

Browse files
Prepare app-it for Claude and Codex
1 parent 05662ad commit 27fd4df

26 files changed

Lines changed: 219 additions & 115 deletions

.agents/plugins/marketplace.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"name": "app-it",
3+
"interface": {
4+
"displayName": "App It"
5+
},
6+
"plugins": [
7+
{
8+
"name": "app-it",
9+
"source": {
10+
"source": "local",
11+
"path": "./plugins/app-it"
12+
},
13+
"policy": {
14+
"installation": "AVAILABLE",
15+
"authentication": "ON_INSTALL"
16+
},
17+
"category": "Productivity"
18+
}
19+
]
20+
}

.claude-plugin/marketplace.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
"$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
33
"name": "app-it",
44
"version": "0.1.0",
5-
"description": "A single-purpose Claude Code plugin for turning local web projects into macOS Dock-launchable .app bundles.",
5+
"description": "A single-purpose assistant plugin for turning local web projects into macOS Dock-launchable .app bundles.",
66
"metadata": {
7-
"description": "A single-purpose Claude Code plugin for turning local web projects into macOS Dock-launchable .app bundles."
7+
"description": "A single-purpose assistant plugin for turning local web projects into macOS Dock-launchable .app bundles."
88
},
99
"owner": {
1010
"name": "Christian Katzmann",
@@ -13,7 +13,7 @@
1313
"plugins": [
1414
{
1515
"name": "app-it",
16-
"source": "./",
16+
"source": "./plugins/app-it",
1717
"version": "0.1.0",
1818
"description": "Turn local web projects into macOS Dock-launchable .app bundles for personal daily use.",
1919
"author": {
@@ -26,6 +26,7 @@
2626
"category": "development",
2727
"keywords": [
2828
"claude-code",
29+
"codex",
2930
"skills",
3031
"macos",
3132
"dock",

CHANGELOG.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
## 0.1.0 - 2026-05-30
44

5-
- Extracted `app-it` into a standalone Claude Code plugin repo.
6-
- Packaged the skill under `skills/app-it/` with templates next to `SKILL.md`.
5+
- Extracted `app-it` into a standalone assistant plugin repo.
6+
- Packaged the plugin under `plugins/app-it/`, with the skill at `plugins/app-it/skills/app-it/`.
77
- Added marketplace metadata, validation script, CI, compatibility docs, and release checklist.
8+
- Added Codex plugin metadata and marketplace metadata so the repo can be installed from Claude Code or Codex.
9+
- Changed the default generated-app install location to `~/Applications/App It/`.
10+
- Namespaced generated-app runtime state under `~/Library/Application Support/app-it/` and logs under `~/Library/Logs/app-it/`.

README.md

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Turn a local web project into a macOS Dock-launchable `.app` bundle.
44

5-
`app-it` is a Claude Code plugin for personal developer workflows. It creates a small, repeatable launcher around an existing local project so double-clicking an app starts the dev server, opens a native window, keeps the Dock icon as your app, and cleans up when you quit.
5+
`app-it` is an assistant-agnostic plugin/skill for local developer workflows. It works with Claude Code and Codex, and creates a small, repeatable launcher around an existing local project so double-clicking an app starts the dev server, opens a native window, keeps the Dock icon as your app, and cleans up when you quit.
66

77
It is not Electron, Tauri, notarization, auto-update, App Store packaging, or a way to distribute finished apps to customers.
88

@@ -13,13 +13,13 @@ It is not Electron, Tauri, notarization, auto-update, App Store packaging, or a
1313
- Copies proven launcher templates into the target project.
1414
- Builds a macOS `.app` bundle with a Swift `WKWebView` shell by default.
1515
- Falls back to Chrome app mode when the project needs Chromium-only browser APIs.
16-
- Installs generated apps into `~/Desktop/MyApps/` by default.
16+
- Installs generated apps into `~/Applications/App It/` by default.
1717
- Writes a report explaining what changed and how to undo it.
1818

1919
## Requirements
2020

2121
- macOS.
22-
- Claude Code for marketplace installation.
22+
- Claude Code or Codex for marketplace installation.
2323
- `swiftc` from Xcode Command Line Tools for the native WebKit shell.
2424
- Chrome only when the project needs the Chrome fallback path.
2525

@@ -31,27 +31,39 @@ xcode-select --install
3131

3232
## Install
3333

34-
After this repo is public on GitHub:
34+
After this repo is public on GitHub, install it in the assistant you use.
35+
36+
Claude Code:
3537

3638
```text
37-
/plugin marketplace add Christian-Katzmann/app-it
38-
/plugin install app-it@app-it
39+
claude plugin marketplace add Christian-Katzmann/app-it
40+
claude plugin install app-it@app-it
41+
```
42+
43+
Codex:
44+
45+
```text
46+
codex plugin marketplace add Christian-Katzmann/app-it
47+
codex plugin add app-it@app-it
3948
```
4049

4150
For local development before publication:
4251

4352
```text
44-
/plugin marketplace add /path/to/app-it
45-
/plugin install app-it@app-it
53+
claude plugin marketplace add /path/to/app-it
54+
claude plugin install app-it@app-it
55+
56+
codex plugin marketplace add /path/to/app-it
57+
codex plugin add app-it@app-it
4658
```
4759

4860
## Manual Skill Install
4961

5062
Marketplace install is preferred. If you only want the skill folder:
5163

5264
```bash
53-
cp -R skills/app-it ~/.claude/skills/app-it
54-
cp -R skills/app-it ~/.codex/skills/app-it
65+
cp -R plugins/app-it/skills/app-it ~/.claude/skills/app-it
66+
cp -R plugins/app-it/skills/app-it ~/.codex/skills/app-it
5567
```
5668

5769
Reload your tool, then ask:
@@ -79,6 +91,8 @@ Typical additions:
7991

8092
The generated `desktop/` bundle and icon build artifacts should be gitignored in the target project.
8193

94+
By default, installed apps are copied to `~/Applications/App It/`. Users who prefer a Dock Stack can drag that folder to the right side of the Dock once. Advanced users can override the destination with `APP_IT_INSTALL_DIR`.
95+
8296
## Safety Model
8397

8498
`app-it` should only make additive, reversible changes. It should not rewrite product logic, add runtime dependencies, require a terminal window to stay open, or assume an already-running dev server.

docs/COMPATIBILITY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
| Primary shell | Swift `WKWebView` wrapper |
1111
| Fallback shell | Chrome `--app` mode |
1212
| Common targets | Vite, Next.js, static sites, local multi-server apps |
13-
| Install destination | `~/Desktop/MyApps/` by default |
13+
| Install destination | `~/Applications/App It/` by default |
1414
| Signing | Ad-hoc local code signing only |
1515

1616
## Not Supported

docs/RELEASE_CHECKLIST.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,21 @@ Before publishing a release:
44

55
- [ ] `./scripts/validate.sh` passes locally.
66
- [ ] `claude plugin validate .` passes with the current Claude Code CLI.
7-
- [ ] `claude plugin validate .claude-plugin/plugin.json` passes with the current Claude Code CLI.
7+
- [ ] `claude plugin validate plugins/app-it/.claude-plugin/plugin.json` passes with the current Claude Code CLI.
8+
- [ ] Codex install smoke passes in a temp home:
9+
`tmp_home="$(mktemp -d)" && HOME="$tmp_home" codex plugin marketplace add . && HOME="$tmp_home" codex plugin add app-it@app-it`.
810
- [ ] `CHANGELOG.md` has an entry for the release.
9-
- [ ] `.claude-plugin/plugin.json` version is bumped.
11+
- [ ] `plugins/app-it/.claude-plugin/plugin.json` version is bumped.
12+
- [ ] `plugins/app-it/.codex-plugin/plugin.json` version is bumped.
1013
- [ ] `.claude-plugin/marketplace.json` version and plugin entry version are bumped.
14+
- [ ] `.agents/plugins/marketplace.json` still points at the repo root plugin.
1115
- [ ] The README install command matches the intended GitHub repo.
1216
- [ ] No local paths, private notes, generated bundles, or test artifacts are tracked.
13-
- [ ] A real local project has been appified and opened from `~/Desktop/MyApps/`.
17+
- [ ] A real local project has been appified and opened from `~/Applications/App It/`.
1418

1519
For the first public GitHub setup:
1620

17-
- [ ] Repo description: `Turn local web projects into macOS Dock-launchable .app bundles with Claude Code.`
21+
- [ ] Repo description: `Turn local web projects into macOS Dock-launchable .app bundles with Claude Code and Codex.`
1822
- [ ] Topics: `claude-code`, `claude-plugin`, `claude-skills`, `macos`, `dock`, `webkit`, `developer-tools`, `local-dev`.
1923
- [ ] Issues enabled.
2024
- [ ] Wiki disabled unless intentionally used.

docs/TROUBLESHOOTING.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Run the target app's documented dev command from the terminal and fix that first
2222
`app-it` records the actual runtime port in:
2323

2424
```text
25-
~/Library/Logs/<App Name>/server.port
25+
~/Library/Application Support/app-it/<slug>/server.port
2626
```
2727

2828
The launcher may choose a nearby free port if the preferred one is already taken. If a project hardcodes a port in `package.json`, `vite.config.*`, or a proxy target, make that port env-driven before rebuilding.
@@ -42,7 +42,7 @@ npm run desktop:build
4242
npm run desktop:install
4343
```
4444

45-
Then verify that the generated app is opening from the install path under `~/Desktop/MyApps/`, not an older build path.
45+
Then verify that the generated app is opening from the install path under `~/Applications/App It/`, not an older build path.
4646

4747
## The App Needs To Be Removed
4848

@@ -58,5 +58,5 @@ rm -f docs/desktop-launcher.md docs/desktop-launcher.app-it-report.md
5858
Then remove the installed app:
5959

6060
```bash
61-
rm -rf ~/Desktop/MyApps/<AppName>.app
61+
rm -rf ~/Applications/App\ It/<AppName>.app
6262
```

install.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ fi
2020

2121
SKILL_NAME="app-it"
2222
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
23-
SRC_DIR="$ROOT_DIR/skills/$SKILL_NAME"
23+
SRC_DIR="$ROOT_DIR/plugins/$SKILL_NAME/skills/$SKILL_NAME"
2424

2525
CLAUDE_TARGET="$HOME/.claude/skills/$SKILL_NAME"
2626
CODEX_TARGET="$HOME/.codex/skills/$SKILL_NAME"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"repository": "https://github.com/Christian-Katzmann/app-it",
1111
"license": "MIT",
1212
"keywords": [
13+
"codex",
1314
"claude-code",
1415
"skills",
1516
"macos",
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
{
2+
"name": "app-it",
3+
"version": "0.1.0",
4+
"description": "Turn local web projects into macOS Dock-launchable .app bundles for personal daily use.",
5+
"author": {
6+
"name": "Christian Katzmann",
7+
"url": "https://github.com/Christian-Katzmann"
8+
},
9+
"homepage": "https://github.com/Christian-Katzmann/app-it",
10+
"repository": "https://github.com/Christian-Katzmann/app-it",
11+
"license": "MIT",
12+
"keywords": [
13+
"codex",
14+
"claude-code",
15+
"skills",
16+
"macos",
17+
"dock",
18+
"app-bundle",
19+
"webkit",
20+
"local-dev"
21+
],
22+
"skills": "./skills/",
23+
"interface": {
24+
"displayName": "App It",
25+
"shortDescription": "Make local web projects launchable from the macOS Dock.",
26+
"longDescription": "App It turns a local web project into a repeatable macOS .app launcher with a native WebKit window, professional app icons, stable port handling, and Dock-friendly install behavior.",
27+
"developerName": "Christian Katzmann",
28+
"category": "Productivity",
29+
"capabilities": [
30+
"Read",
31+
"Write",
32+
"Local"
33+
],
34+
"defaultPrompt": [
35+
"Use app-it to make this project launchable from the Dock.",
36+
"Give this local app a professional icon and macOS launcher.",
37+
"Package this project as a local macOS .app."
38+
],
39+
"brandColor": "#2F6FED"
40+
}
41+
}

0 commit comments

Comments
 (0)