liteagents 2.6.1 → 2.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +58 -0
- package/README.md +4 -2
- package/installer/cli.js +4 -1
- package/package.json +1 -1
- package/packages/ampcode/commands/live-canvas/README.md +38 -47
- package/packages/{claude/skills/live-canvas/templates/demo → ampcode/commands/live-canvas/dev}/post-variants.html +8 -3
- package/packages/ampcode/commands/live-canvas/templates/lab-banner.html +6 -0
- package/packages/ampcode/commands/live-canvas/templates/overlay-vanilla.js +64 -6
- package/packages/ampcode/commands/live-canvas.md +140 -161
- package/packages/ampcode/commands/security.md +50 -12
- package/packages/ampcode/commands/ship.md +33 -11
- package/packages/claude/commands/git-commit.md +1 -1
- package/packages/claude/commands/security.md +50 -12
- package/packages/claude/commands/ship.md +33 -11
- package/packages/claude/plugins/live-canvas-marketplace/plugins/live-canvas-channel/.claude-plugin/plugin.json +1 -1
- package/packages/claude/plugins/live-canvas-marketplace/plugins/live-canvas-channel/README.md +2 -2
- package/packages/claude/plugins/live-canvas-marketplace/plugins/live-canvas-channel/package.json +1 -1
- package/packages/claude/plugins/live-canvas-marketplace/plugins/live-canvas-channel/schema.json +1 -1
- package/packages/claude/plugins/live-canvas-marketplace/plugins/live-canvas-channel/server.js +320 -27
- package/packages/claude/plugins/live-canvas-marketplace/setup.sh +83 -24
- package/packages/claude/skills/live-canvas/README.md +53 -57
- package/packages/claude/skills/live-canvas/SKILL.md +122 -158
- package/packages/{ampcode/commands/live-canvas/templates/demo → claude/skills/live-canvas/dev}/post-variants.html +8 -3
- package/packages/claude/skills/live-canvas/templates/lab-banner.html +6 -0
- package/packages/claude/skills/live-canvas/templates/overlay-vanilla.js +64 -6
- package/packages/droid/commands/live-canvas/README.md +38 -47
- package/packages/droid/commands/live-canvas/{templates/demo → dev}/post-variants.html +8 -3
- package/packages/droid/commands/live-canvas/templates/lab-banner.html +6 -0
- package/packages/droid/commands/live-canvas/templates/overlay-vanilla.js +64 -6
- package/packages/droid/commands/live-canvas.md +140 -161
- package/packages/droid/commands/security.md +50 -12
- package/packages/droid/commands/ship.md +33 -11
- package/packages/opencode/command/live-canvas/README.md +38 -47
- package/packages/opencode/command/live-canvas/{templates/demo → dev}/post-variants.html +8 -3
- package/packages/opencode/command/live-canvas/templates/lab-banner.html +6 -0
- package/packages/opencode/command/live-canvas/templates/overlay-vanilla.js +64 -6
- package/packages/opencode/command/live-canvas.md +140 -161
- package/packages/opencode/command/security.md +50 -12
- package/packages/opencode/command/ship.md +33 -11
- package/packages/ampcode/commands/live-canvas/templates/.claude/settings.local.json +0 -8
- package/packages/ampcode/commands/live-canvas/templates/feedback-react/FeedbackOverlay.tsx +0 -1299
- package/packages/ampcode/commands/live-canvas/templates/feedback-react/format-utils.ts +0 -283
- package/packages/ampcode/commands/live-canvas/templates/feedback-react/index.ts +0 -62
- package/packages/ampcode/commands/live-canvas/templates/feedback-react/selector-utils.ts +0 -423
- package/packages/ampcode/commands/live-canvas/templates/feedback-react/types.ts +0 -118
- package/packages/claude/skills/live-canvas/INTEGRATION_NOTES.md +0 -210
- package/packages/claude/skills/live-canvas/templates/.claude/settings.local.json +0 -8
- package/packages/claude/skills/live-canvas/templates/feedback-react/FeedbackOverlay.tsx +0 -1299
- package/packages/claude/skills/live-canvas/templates/feedback-react/format-utils.ts +0 -283
- package/packages/claude/skills/live-canvas/templates/feedback-react/index.ts +0 -62
- package/packages/claude/skills/live-canvas/templates/feedback-react/selector-utils.ts +0 -423
- package/packages/claude/skills/live-canvas/templates/feedback-react/types.ts +0 -118
- package/packages/droid/commands/live-canvas/templates/.claude/settings.local.json +0 -8
- package/packages/droid/commands/live-canvas/templates/feedback-react/FeedbackOverlay.tsx +0 -1299
- package/packages/droid/commands/live-canvas/templates/feedback-react/format-utils.ts +0 -283
- package/packages/droid/commands/live-canvas/templates/feedback-react/index.ts +0 -62
- package/packages/droid/commands/live-canvas/templates/feedback-react/selector-utils.ts +0 -423
- package/packages/droid/commands/live-canvas/templates/feedback-react/types.ts +0 -118
- package/packages/opencode/command/live-canvas/templates/.claude/settings.local.json +0 -8
- package/packages/opencode/command/live-canvas/templates/feedback-react/FeedbackOverlay.tsx +0 -1299
- package/packages/opencode/command/live-canvas/templates/feedback-react/format-utils.ts +0 -283
- package/packages/opencode/command/live-canvas/templates/feedback-react/index.ts +0 -62
- package/packages/opencode/command/live-canvas/templates/feedback-react/selector-utils.ts +0 -423
- package/packages/opencode/command/live-canvas/templates/feedback-react/types.ts +0 -118
|
@@ -1,61 +1,120 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# Live Canvas channel — one-time setup
|
|
2
|
+
# Live Canvas channel — one-time setup.
|
|
3
3
|
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
4
|
+
# Copies the marketplace into ~/.claude/plugins/, installs the channel
|
|
5
|
+
# plugin's npm deps, and adds a `live-claude` shell function so the user
|
|
6
|
+
# can launch a Live-mode session with one word in a new terminal.
|
|
7
|
+
#
|
|
8
|
+
# Safe to re-run: existing install at ~/.claude/plugins/live-canvas-marketplace/
|
|
9
|
+
# is overwritten; the shell function is replaced in place via marker guards.
|
|
6
10
|
|
|
7
11
|
set -e
|
|
12
|
+
|
|
8
13
|
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
9
|
-
|
|
10
|
-
|
|
14
|
+
DEST_ROOT="${HOME}/.claude/plugins"
|
|
15
|
+
DEST="${DEST_ROOT}/live-canvas-marketplace"
|
|
16
|
+
PLUGIN_DIR="${DEST}/plugins/live-canvas-channel"
|
|
17
|
+
MARKER_BEGIN="# >>> live-canvas: live-claude function (managed by setup.sh) >>>"
|
|
18
|
+
MARKER_END="# <<< live-canvas: live-claude function <<<"
|
|
11
19
|
|
|
12
20
|
bold() { printf '\033[1m%s\033[0m\n' "$*"; }
|
|
13
21
|
ok() { printf '\033[32m✓\033[0m %s\n' "$*"; }
|
|
14
22
|
warn() { printf '\033[33m!\033[0m %s\n' "$*"; }
|
|
23
|
+
err() { printf '\033[31m✗\033[0m %s\n' "$*"; }
|
|
15
24
|
|
|
16
|
-
|
|
17
|
-
|
|
25
|
+
# ---------- prereq checks ----------
|
|
26
|
+
|
|
27
|
+
if [ "$(id -u)" = "0" ] && [ -n "${SUDO_USER:-}" ]; then
|
|
28
|
+
err "Don't run setup.sh with sudo — it would install into root's home (\$HOME=$HOME)."
|
|
29
|
+
err "Rerun as your normal user: bash $0"
|
|
18
30
|
exit 1
|
|
19
31
|
fi
|
|
20
32
|
|
|
33
|
+
if ! command -v node >/dev/null 2>&1; then
|
|
34
|
+
err "Node.js not found. Install Node >= 18: https://nodejs.org"
|
|
35
|
+
exit 1
|
|
36
|
+
fi
|
|
21
37
|
NODE_MAJOR="$(node -p 'process.versions.node.split(".")[0]')"
|
|
22
38
|
if [ "$NODE_MAJOR" -lt 18 ]; then
|
|
23
|
-
|
|
39
|
+
err "Node >= 18 required (found $(node -v))."
|
|
24
40
|
exit 1
|
|
25
41
|
fi
|
|
26
|
-
|
|
27
42
|
if ! command -v npm >/dev/null 2>&1; then
|
|
28
|
-
|
|
43
|
+
err "npm not found. Usually ships with Node."
|
|
29
44
|
exit 1
|
|
30
45
|
fi
|
|
31
46
|
|
|
47
|
+
# ---------- 1. copy marketplace into ~/.claude/plugins ----------
|
|
48
|
+
|
|
49
|
+
bold "Installing marketplace to ${DEST}…"
|
|
50
|
+
mkdir -p "$DEST_ROOT"
|
|
51
|
+
# Overwrite any prior install. Small, self-contained tree — safe to wipe.
|
|
52
|
+
rm -rf "$DEST"
|
|
53
|
+
cp -R "$HERE" "$DEST"
|
|
54
|
+
ok "Copied marketplace files."
|
|
55
|
+
|
|
56
|
+
# ---------- 2. npm install channel plugin deps ----------
|
|
57
|
+
|
|
32
58
|
bold "Installing channel plugin dependencies…"
|
|
33
59
|
cd "$PLUGIN_DIR"
|
|
34
60
|
npm install --silent
|
|
35
61
|
ok "Dependencies installed in $PLUGIN_DIR"
|
|
36
62
|
|
|
37
|
-
|
|
38
|
-
|
|
63
|
+
# ---------- 3. add live-claude function to shell rc files ----------
|
|
64
|
+
|
|
65
|
+
add_to_rc() {
|
|
66
|
+
local rc="$1"
|
|
67
|
+
[ -e "$rc" ] || return 0
|
|
68
|
+
|
|
69
|
+
local tmp
|
|
70
|
+
tmp="$(mktemp)"
|
|
71
|
+
# Strip any prior managed block, preserving the rest of the file verbatim.
|
|
72
|
+
awk -v b="$MARKER_BEGIN" -v e="$MARKER_END" '
|
|
73
|
+
$0 == b { skip = 1; next }
|
|
74
|
+
$0 == e { skip = 0; next }
|
|
75
|
+
!skip { print }
|
|
76
|
+
' "$rc" > "$tmp"
|
|
77
|
+
|
|
78
|
+
{
|
|
79
|
+
cat "$tmp"
|
|
80
|
+
echo ""
|
|
81
|
+
echo "$MARKER_BEGIN"
|
|
82
|
+
echo "live-claude() {"
|
|
83
|
+
echo " claude --dangerously-load-development-channels plugin:live-canvas-channel@live-canvas-marketplace \"\$@\""
|
|
84
|
+
echo "}"
|
|
85
|
+
echo "$MARKER_END"
|
|
86
|
+
} > "$rc.live-canvas.tmp"
|
|
87
|
+
|
|
88
|
+
mv "$rc.live-canvas.tmp" "$rc"
|
|
89
|
+
rm -f "$tmp"
|
|
90
|
+
ok "Updated $rc"
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
bold "Adding live-claude function to your shell rc files…"
|
|
94
|
+
add_to_rc "$HOME/.zshrc"
|
|
95
|
+
add_to_rc "$HOME/.bashrc"
|
|
96
|
+
|
|
97
|
+
# ---------- 4. print remaining manual steps ----------
|
|
98
|
+
|
|
39
99
|
cat <<EOF
|
|
40
100
|
|
|
41
|
-
|
|
42
|
-
|
|
101
|
+
$(bold "Two more steps — run these inside Claude Code:")
|
|
102
|
+
|
|
103
|
+
1. Register the marketplace:
|
|
104
|
+
/plugin marketplace add ${DEST}
|
|
43
105
|
|
|
44
106
|
2. Install the plugin from it:
|
|
45
107
|
/plugin install live-canvas-channel@live-canvas-marketplace
|
|
46
108
|
|
|
47
|
-
|
|
48
|
-
claude --dangerously-load-development-channels plugin:live-canvas-channel@live-canvas-marketplace
|
|
109
|
+
$(bold "Then daily use:")
|
|
49
110
|
|
|
50
|
-
|
|
51
|
-
|
|
111
|
+
• Open a fresh shell (or: source ~/.zshrc) so live-claude is on PATH.
|
|
112
|
+
• Terminal A — your dev server (e.g. npm run dev).
|
|
113
|
+
• Terminal B — run: live-claude
|
|
114
|
+
(this is just: claude --dangerously-load-development-channels …)
|
|
115
|
+
• Inside that Claude session, run /live-canvas.
|
|
52
116
|
|
|
53
|
-
|
|
54
|
-
auto-detect the channel and use Live mode.
|
|
55
|
-
|
|
56
|
-
Tip — save yourself typing with a shell alias in ~/.zshrc or ~/.bashrc:
|
|
57
|
-
alias claude-live='claude --dangerously-load-development-channels plugin:live-canvas-channel@live-canvas-marketplace'
|
|
117
|
+
You'll be asked Live vs JSON mode each time.
|
|
58
118
|
|
|
59
119
|
EOF
|
|
60
|
-
|
|
61
120
|
ok "Setup complete."
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Click-to-annotate UI design tool for Claude Code. Renders N variants of a component or page in your browser, you click an element and type what to change, and Claude edits the variant file while you watch in the browser. No window switching, no pasted JSON.
|
|
4
4
|
|
|
5
|
-
Ships as a Claude Code skill plus an MCP channel plugin. Works in every tool liteagents supports (Claude, Droid, Amp, Opencode), but **Live mode only works in Claude Code** — other tools run in
|
|
5
|
+
Ships as a Claude Code skill plus an MCP channel plugin. Works in every tool liteagents supports (Claude, Droid, Amp, Opencode), but **Live mode only works in Claude Code** — other tools run in JSON mode only (see modes below).
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -11,7 +11,7 @@ Ships as a Claude Code skill plus an MCP channel plugin. Works in every tool lit
|
|
|
11
11
|
```
|
|
12
12
|
┌──────────────────────┐ POST /feedback ┌─────────────────────┐
|
|
13
13
|
│ Overlay in browser │ ─────────────────────────► │ live-canvas-channel │
|
|
14
|
-
│ (vanilla JS
|
|
14
|
+
│ (vanilla JS, ~500 lines)│ │ (Node MCP server) │
|
|
15
15
|
└──────────────────────┘ └──────────┬──────────┘
|
|
16
16
|
▲ │
|
|
17
17
|
│ dev server hot-reloads the page │ notifications/
|
|
@@ -31,28 +31,31 @@ Each Save in the overlay streams into the Claude session as a `<channel>` tag wi
|
|
|
31
31
|
|
|
32
32
|
## Modes
|
|
33
33
|
|
|
34
|
-
The
|
|
34
|
+
The skill asks you which mode you want every time `/live-canvas` runs.
|
|
35
35
|
|
|
36
|
-
| Mode |
|
|
36
|
+
| Mode | Use when | What happens per Save |
|
|
37
37
|
|---|---|---|
|
|
38
|
-
| **Live** |
|
|
39
|
-
| **
|
|
38
|
+
| **Live** | You launched the session with `live-claude` (sets `--dangerously-load-development-channels`) | Comment streams into Claude's context; Claude edits the file; dev server hot-reloads. Toast: "Pushed to Claude ✨". |
|
|
39
|
+
| **JSON** | Any session, any tool (Claude, Droid, Amp, Opencode) | Comment stays local. On Submit it POSTs to a `/feedback-jsonl` route on the channel server, which writes to `<project>/.claude-design/feedback.jsonl`. Falls back to browser download only when the MCP isn't running (e.g. Droid/Amp/Opencode users). |
|
|
40
40
|
|
|
41
|
-
Live
|
|
41
|
+
If you pick Live but the session lacks the channels flag, `channel_open` returns `no_channel_capability` and the skill prints the exact relaunch command — it never silently downgrades to JSON. If another live-canvas session is already holding port 8788, `channel_open` takes over (same plugin + same user = safe) and announces it. Foreign processes on 8788 (e.g. a stray dev server) are refused with the holder's pid so you know what to investigate.
|
|
42
42
|
|
|
43
43
|
---
|
|
44
44
|
|
|
45
45
|
## One-time setup (Live mode, Claude Code only)
|
|
46
46
|
|
|
47
|
-
Run this once per machine. Without it, the skill still works in
|
|
47
|
+
Run this once per machine. Without it, the skill still works in JSON mode.
|
|
48
48
|
|
|
49
|
-
### 1.
|
|
49
|
+
### 1. Run the installer
|
|
50
50
|
|
|
51
51
|
```bash
|
|
52
|
-
bash
|
|
52
|
+
bash packages/claude/plugins/live-canvas-marketplace/setup.sh
|
|
53
53
|
```
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
The installer:
|
|
56
|
+
- copies the marketplace into `~/.claude/plugins/live-canvas-marketplace/` (overwrites any prior install)
|
|
57
|
+
- runs `npm install` inside the channel plugin
|
|
58
|
+
- adds a `live-claude` shell function to `~/.zshrc` and `~/.bashrc` (idempotent — re-runs replace in place)
|
|
56
59
|
|
|
57
60
|
### 2. Register the marketplace in Claude Code
|
|
58
61
|
|
|
@@ -66,21 +69,9 @@ Checks Node >= 18, runs `npm install` inside the plugin dir. Idempotent.
|
|
|
66
69
|
/plugin install live-canvas-channel@live-canvas-marketplace
|
|
67
70
|
```
|
|
68
71
|
|
|
69
|
-
### 4.
|
|
72
|
+
### 4. Open a fresh shell
|
|
70
73
|
|
|
71
|
-
|
|
72
|
-
claude --dangerously-load-development-channels plugin:live-canvas-channel@live-canvas-marketplace
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
Accept the safety prompt (custom channels are in research preview and not on the default allowlist).
|
|
76
|
-
|
|
77
|
-
**Save yourself typing** — add to `~/.bashrc` or `~/.zshrc`:
|
|
78
|
-
|
|
79
|
-
```bash
|
|
80
|
-
alias claude-live='claude --dangerously-load-development-channels plugin:live-canvas-channel@live-canvas-marketplace'
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
From now on, `claude-live` to enable Live mode, plain `claude` for everything else.
|
|
74
|
+
`live-claude` is now available. Use plain `claude` for everything else; use `live-claude` when you want Live mode for this skill.
|
|
84
75
|
|
|
85
76
|
---
|
|
86
77
|
|
|
@@ -88,7 +79,7 @@ From now on, `claude-live` to enable Live mode, plain `claude` for everything el
|
|
|
88
79
|
|
|
89
80
|
### Start a session
|
|
90
81
|
|
|
91
|
-
Either `claude` (
|
|
82
|
+
Either `claude` (JSON only) or `live-claude` (Live available).
|
|
92
83
|
|
|
93
84
|
### Invoke the skill in a project
|
|
94
85
|
|
|
@@ -96,13 +87,16 @@ Either `claude` (Batch only) or `claude-live` (Live available).
|
|
|
96
87
|
/live-canvas
|
|
97
88
|
```
|
|
98
89
|
|
|
99
|
-
Phase 0
|
|
90
|
+
Phase 0 always asks which mode you want — Live channel or JSON file — then calls the MCP tool that binds (or refuses) port 8788:
|
|
100
91
|
|
|
101
|
-
|
|
|
102
|
-
|
|
103
|
-
|
|
|
104
|
-
|
|
|
105
|
-
|
|
|
92
|
+
| Choice | `channel_open` / `batch_open` result | Skill behavior |
|
|
93
|
+
|---|---|---|
|
|
94
|
+
| Live | `opened` | ✨ Live mode — announces it, starts the interview |
|
|
95
|
+
| Live | `opened` + `took_over: <pid>` | ✨ Live mode — announces it and that it took over a sibling live-canvas server (your prior session) |
|
|
96
|
+
| Live | `no_channel_capability` | Stops. Prints the exact `live-claude --continue` command for relaunch |
|
|
97
|
+
| Live | `in_use` (foreign holder) | Stops. Prints the holder pid + `ps -fp <pid>` so you can investigate |
|
|
98
|
+
| JSON | `opened` / `already_listening` | 📝 JSON mode — Submit writes to `.claude-design/feedback.jsonl` |
|
|
99
|
+
| JSON | `in_use` / MCP unavailable | 📝 JSON mode — Submit downloads a JSON file you paste back |
|
|
106
100
|
|
|
107
101
|
### Interview & generation
|
|
108
102
|
|
|
@@ -113,13 +107,15 @@ Skill asks 5 short questions (scope, pain points, inspiration, persona, constrai
|
|
|
113
107
|
Open `http://localhost:<dev-port>/__live_canvas`. Click **Add Feedback** (bottom right), click any element in any variant, type a one-liner, Save.
|
|
114
108
|
|
|
115
109
|
- Live mode: toast says "Pushed to Claude ✨", Claude acknowledges and edits the file, dev server hot-reloads.
|
|
116
|
-
-
|
|
110
|
+
- JSON mode: toast says "Saved — submit when ready", pin stays on the element, counter in the Submit button ticks up.
|
|
111
|
+
|
|
112
|
+
Need the page back? The overlay has a "−" button next to **Add Feedback** that collapses everything to a small circle in the corner — tap to expand again. Useful on mobile where the bar can cover what's underneath.
|
|
117
113
|
|
|
118
114
|
Keep clicking until a winner emerges.
|
|
119
115
|
|
|
120
116
|
### Finish
|
|
121
117
|
|
|
122
|
-
Click the pink **Finish** (Live) or **Submit** (
|
|
118
|
+
Click the pink **Finish** (Live) or **Submit** (JSON) button:
|
|
123
119
|
|
|
124
120
|
1. Type the overall direction: e.g. *"Go with B's layout, A's button styling"*
|
|
125
121
|
2. Click Finish
|
|
@@ -142,12 +138,11 @@ packages/claude/
|
|
|
142
138
|
├── skills/live-canvas/
|
|
143
139
|
│ ├── SKILL.md # Skill instructions (phases, flow)
|
|
144
140
|
│ ├── DESIGN_PRINCIPLES.md # UX/a11y/motion reference
|
|
145
|
-
│ ├── INTEGRATION_NOTES.md # Design-time notes (channel paths explored)
|
|
146
141
|
│ ├── README.md # This file
|
|
142
|
+
│ ├── dev/post-variants.html # Standalone demo for local QA of the overlay
|
|
147
143
|
│ └── templates/
|
|
148
|
-
│ ├── overlay-vanilla.js # Framework-agnostic overlay (~
|
|
149
|
-
│
|
|
150
|
-
│ └── demo/post-variants.html # Standalone demo for testing the overlay
|
|
144
|
+
│ ├── overlay-vanilla.js # Framework-agnostic overlay (~500 lines)
|
|
145
|
+
│ └── lab-banner.html # "This is a temp lab" notice snippet
|
|
151
146
|
└── plugins/
|
|
152
147
|
└── live-canvas-marketplace/
|
|
153
148
|
├── .claude-plugin/marketplace.json
|
|
@@ -188,9 +183,9 @@ The skill checks the cache dir to tell first-time vs returning users apart.
|
|
|
188
183
|
<project-root>/
|
|
189
184
|
└── .claude-design/
|
|
190
185
|
├── lab/variants/VariantA.tsx … VariantE.tsx
|
|
191
|
-
├──
|
|
186
|
+
├── overlay-vanilla.js (copied into the project's public/static dir)
|
|
192
187
|
├── design-brief.json # Structured output from the interview
|
|
193
|
-
└── feedback.jsonl #
|
|
188
|
+
└── feedback.jsonl # JSON mode only; deleted on Finish
|
|
194
189
|
```
|
|
195
190
|
|
|
196
191
|
Plus a temporary route (e.g. `app/__live_canvas/page.tsx` for Next.js App Router). Everything under `.claude-design/` and the temporary route is deleted on Finish or Abort.
|
|
@@ -207,12 +202,11 @@ Plus a temporary route (e.g. `app/__live_canvas/page.tsx` for Next.js App Router
|
|
|
207
202
|
|
|
208
203
|
## The install pipeline, end to end
|
|
209
204
|
|
|
210
|
-
1. **Liteagents installer** copies
|
|
205
|
+
1. **Liteagents installer** copies the skill:
|
|
211
206
|
- `packages/claude/skills/live-canvas/` → `~/.claude/skills/live-canvas/`
|
|
212
|
-
|
|
213
|
-
2. **User, once:** runs `bash ~/.claude/plugins/live-canvas-marketplace/setup.sh` → installs the plugin's npm deps
|
|
207
|
+
2. **User, once:** runs `bash packages/claude/plugins/live-canvas-marketplace/setup.sh` → copies marketplace to `~/.claude/plugins/`, runs `npm install`, adds `live-claude` function to `~/.zshrc` and `~/.bashrc`
|
|
214
208
|
3. **User, once:** in a Claude session, runs `/plugin marketplace add ~/.claude/plugins/live-canvas-marketplace` + `/plugin install live-canvas-channel@live-canvas-marketplace`
|
|
215
|
-
4. **User, every session that wants Live mode:**
|
|
209
|
+
4. **User, every session that wants Live mode:** runs `live-claude` (function installed by step 2)
|
|
216
210
|
5. **User, whenever:** `/live-canvas` in any project
|
|
217
211
|
|
|
218
212
|
Steps 1, 2, 3 are truly one-time. Step 4 is per-session. Step 5 is per-project-use.
|
|
@@ -221,32 +215,34 @@ Steps 1, 2, 3 are truly one-time. Step 4 is per-session. Step 5 is per-project-u
|
|
|
221
215
|
|
|
222
216
|
## Troubleshooting
|
|
223
217
|
|
|
224
|
-
###
|
|
218
|
+
### Port 8788 stuck from a prior session
|
|
225
219
|
|
|
226
|
-
|
|
220
|
+
You shouldn't hit this — `channel_open` now detects sibling live-canvas servers (same uid, same plugin) and takes them over automatically. If you do see `{status: "in_use", holder_pid: <pid>}` from the tool, that means the holder is **not** a live-canvas server (the plugin refuses to kill anything it doesn't own). Investigate with:
|
|
227
221
|
|
|
228
222
|
```bash
|
|
229
|
-
|
|
230
|
-
kill <pid>
|
|
223
|
+
ps -fp <pid> # what is it
|
|
224
|
+
kill <pid> # only if it's safe to stop
|
|
231
225
|
```
|
|
232
226
|
|
|
233
|
-
Then `/
|
|
227
|
+
Then re-run `/live-canvas`.
|
|
228
|
+
|
|
229
|
+
### Skill says `no_channel_capability` and refuses Live mode
|
|
234
230
|
|
|
235
|
-
|
|
231
|
+
The session was started with plain `claude`, which can't receive channel notifications (notifications would be silently dropped). Open a fresh terminal and run `live-claude` — the function added to your shellrc by `setup.sh` runs `claude --dangerously-load-development-channels plugin:live-canvas-channel@live-canvas-marketplace`. Then `/live-canvas` in the new session works.
|
|
236
232
|
|
|
237
|
-
|
|
233
|
+
### Skill says `/mcp` shows the plugin as failed
|
|
238
234
|
|
|
239
|
-
|
|
240
|
-
2. The plugin subprocess died on startup. In the session, run `/mcp` — look for `live-canvas` with its status. "Failed to connect" means a node/dep error: check `~/.claude/debug/<session-id>.txt` for the stderr.
|
|
241
|
-
3. You never ran step 2 of setup. Re-run `bash ~/.claude/plugins/live-canvas-marketplace/setup.sh`.
|
|
235
|
+
The plugin subprocess died on startup (usually a node/dep error). In the session, run `/mcp` — "Failed to connect" means look at `~/.claude/debug/<session-id>.txt` for the stderr. Common fix: re-run `setup.sh` so `npm install` runs again inside the plugin dir.
|
|
242
236
|
|
|
243
237
|
### Overlay loads in the browser but no pills appear
|
|
244
238
|
|
|
245
|
-
The overlay script didn't load. Most common cause: you started
|
|
239
|
+
The overlay script didn't load. Most common cause: you started a static file server inside the wrong directory so the relative `overlay-vanilla.js` path couldn't resolve. Start the server from the directory containing the lab's `index.html` (or `__live_canvas` route).
|
|
246
240
|
|
|
247
|
-
### "Pushed to Claude ✨" toast appears but nothing
|
|
241
|
+
### "Pushed to Claude ✨" toast appears but nothing lands in the terminal
|
|
248
242
|
|
|
249
|
-
|
|
243
|
+
This shouldn't happen with v0.3.0+ — the flag gate refuses bind from plain-claude sessions so the silent black-hole case is impossible. If you do see it, one of:
|
|
244
|
+
- You're on an old plugin (v0.2.0 or earlier). Run `/reload-plugins` in the session; the new in-memory MCP will be v0.5.0+.
|
|
245
|
+
- You're typing in the wrong session. Channel notifications go to whichever Claude session's MCP bound port 8788 — check `ss -lntp | grep 8788`, walk up the parent pid until you find the `claude` process, and switch terminals to that one.
|
|
250
246
|
|
|
251
247
|
### I want to uninstall
|
|
252
248
|
|