add quickdesign plugin + CLI; make skills sync rsync-optional for Windows
This commit is contained in:
@@ -18,8 +18,10 @@ included, with deletes). Always `git pull && ./install.sh` **before** working, a
|
||||
`./sync.sh` after — syncing from a machine that hasn't installed the latest pull will
|
||||
remove the other machines' memory/skill files from the repo.
|
||||
|
||||
**CLI dependencies:** `install.sh` also installs the Codex CLI (`npm install -g @openai/codex`) when missing,
|
||||
since the `codex@openai-codex` plugin shells out to it. Requires `npm` on the target machine.
|
||||
**CLI dependencies:** `install.sh` also installs the Codex CLI (`npm install -g @openai/codex`) and the
|
||||
QuickDesign CLI (`npm install -g @quickdesign/cli`) when missing,
|
||||
since the `codex@openai-codex` and `quickdesign@claude-community` plugins shell out to them. Requires `npm` on
|
||||
the target machine. QuickDesign also needs a one-off `quickdesign login` per machine (OAuth; not synced).
|
||||
|
||||
## Install on a new machine
|
||||
|
||||
|
||||
+22
-1
@@ -46,7 +46,13 @@ done
|
||||
# Skills — copy each skill directory into ~/.claude/skills/
|
||||
if [ -d "$SCRIPT_DIR/skills" ]; then
|
||||
mkdir -p "$CLAUDE_DIR/skills"
|
||||
rsync -a "$SCRIPT_DIR/skills/" "$CLAUDE_DIR/skills/"
|
||||
if command -v rsync >/dev/null 2>&1; then
|
||||
rsync -a "$SCRIPT_DIR/skills/" "$CLAUDE_DIR/skills/"
|
||||
else
|
||||
# No rsync (Git Bash on Windows). This direction is a plain overlay with no
|
||||
# --delete, so cp is an exact substitute.
|
||||
cp -R "$SCRIPT_DIR/skills/." "$CLAUDE_DIR/skills/"
|
||||
fi
|
||||
echo " Installed: skills -> ~/.claude/skills/"
|
||||
fi
|
||||
|
||||
@@ -62,6 +68,21 @@ else
|
||||
echo " WARNING: npm not found — install the Codex CLI manually: npm install -g @openai/codex"
|
||||
fi
|
||||
|
||||
# QuickDesign CLI, required by the quickdesign@claude-community plugin to actually run.
|
||||
# The bundled skill only wraps this binary; without it every invocation dies on "command not found".
|
||||
# Auth is per-machine and NOT synced — run `quickdesign login` once per box. Do not run
|
||||
# `quickdesign init`: it copies the skill into ~/.claude/skills/, duplicating the plugin's copy.
|
||||
if command -v quickdesign >/dev/null 2>&1; then
|
||||
echo " QuickDesign CLI already present: $(quickdesign --version 2>/dev/null | head -1)"
|
||||
elif command -v npm >/dev/null 2>&1; then
|
||||
echo " Installing QuickDesign CLI (npm install -g @quickdesign/cli)..."
|
||||
npm install -g @quickdesign/cli >/dev/null 2>&1 \
|
||||
&& echo " Installed: QuickDesign CLI $(quickdesign --version 2>/dev/null | head -1)" \
|
||||
|| echo " WARNING: QuickDesign CLI install failed — run manually: npm install -g @quickdesign/cli"
|
||||
else
|
||||
echo " WARNING: npm not found — install the QuickDesign CLI manually: npm install -g @quickdesign/cli"
|
||||
fi
|
||||
|
||||
# Obsidian vault MCP server (filesystem access).
|
||||
# The vault lives in a different place on every machine: on MINI-S it is inside the
|
||||
# homelab Docker stack (~/docker/obsidian/config/...), on the Macs it is a native
|
||||
|
||||
@@ -26,3 +26,5 @@
|
||||
- [Haunt app](haunt-app.md) — generative horror ambience machine at ~/haunt/ (14 scenes, 36 layers, tension arc + jump scares, FX rack); port 8767, not in git
|
||||
- [Grimoire app](grimoire-app.md) — dark-fantasy keys preset instrument (40 presets, knobs, arp, key lock, textures) at ~/grimoire/; port 8768, not in git
|
||||
- [Nexus app](nexus-app.md) — combined cinematic score workstation (Blade Runner/horror/Alien/drama, 18 scenes, mood pad, arcs, cue pads, split keys, 42 layers) at ~/nexus/; port 8769, not in git
|
||||
- [QuickDesign plugin](quickdesign-plugin.md) — AI media generation (Seedance/Sora2/Kling/Nano Banana); plugin + CLI installed 2026-08-30, still needs `quickdesign login`
|
||||
- [Installing Claude plugins via CLI](claude-plugin-install-cli.md) — use `claude plugin install`, not hand-edited settings.json; marketplace name ≠ repo name
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
name: claude-plugin-install-cli
|
||||
description: Install Claude Code plugins non-interactively with the claude CLI instead of hand-editing settings.json.
|
||||
metadata:
|
||||
type: feedback
|
||||
---
|
||||
|
||||
Add and enable plugins with the CLI, not by editing `~/.claude/settings.json` by hand:
|
||||
|
||||
```
|
||||
claude plugin marketplace add <owner>/<repo>
|
||||
claude plugin install <plugin>@<marketplace-name> --scope user -y
|
||||
```
|
||||
|
||||
**Why:** the CLI writes all three places that must stay in sync — `settings.json` (`enabledPlugins` + `extraKnownMarketplaces`), `plugins/known_marketplaces.json`, and `plugins/installed_plugins.json` (with the resolved version and git SHA) — and clones the plugin into `plugins/cache/`. Hand-editing settings.json sets the flag but leaves the plugin uninstalled and the manifests stale.
|
||||
|
||||
**How to apply:** the `<marketplace-name>` is the `name` field inside the repo's `.claude-plugin/marketplace.json`, which often differs from the repo name (e.g. `anthropics/claude-plugins-community` → `claude-community`). Read it, or take it from the `Successfully added marketplace: <name>` line. `-y` is required when stdout is not a TTY.
|
||||
|
||||
Related: [[quickdesign-plugin]]
|
||||
@@ -17,7 +17,9 @@ The user explicitly wants newly installed plugins propagated to every machine.
|
||||
- From non-official marketplaces (each registered in `extraKnownMarketplaces`):
|
||||
`codex@openai-codex` (`openai/codex-plugin-cc`), `warp@claude-code-warp` (`warpdotdev/claude-code-warp`),
|
||||
`ui-ux-pro-max@ui-ux-pro-max-skill` (`nextlevelbuilder/ui-ux-pro-max-skill`),
|
||||
`impeccable@impeccable` (`pbakaus/impeccable`)
|
||||
`impeccable@impeccable` (`pbakaus/impeccable`), `claude-mem@thedotmack` (`thedotmack/claude-mem`),
|
||||
`quickdesign@claude-community` (`anthropics/claude-plugins-community` — note the marketplace NAME is
|
||||
`claude-community`, not the repo name; `quickdesign@claude-plugins-community` fails)
|
||||
|
||||
**Why:** Plugins are declared in `settings.json` (`enabledPlugins` + `extraKnownMarketplaces`), which the
|
||||
[[user-github]] `claude-config` repo already tracks. The installed plugin *cache* under `~/.claude/plugins/`
|
||||
@@ -27,9 +29,16 @@ is NOT synced and should not be — each server re-fetches plugins from its mark
|
||||
`settings.json` to GitHub. On another server, `git pull && ./install.sh`, then start Claude Code — it auto-installs
|
||||
the enabled plugins from `claude-plugins-official`. UNVERIFIED as of 2026-07-16: whether startup also auto-fetches
|
||||
*non-official* marketplaces from `extraKnownMarketplaces`. If a synced non-official plugin is missing on MINI-S,
|
||||
run the two-step CLI install below there, then note the answer here. CLI dependency: the `codex@openai-codex` plugin shells out to the Codex CLI (`@openai/codex`, binary `codex`).
|
||||
`install.sh` installs it via `npm install -g @openai/codex` when missing, so it propagates to every server that
|
||||
runs the installer (requires npm on the target machine).
|
||||
run the two-step CLI install below there, then note the answer here.
|
||||
|
||||
**CLI dependencies.** Two plugins shell out to a binary and are inert without it: `codex@openai-codex` needs
|
||||
the Codex CLI (`@openai/codex`, binary `codex`), and `quickdesign@claude-community` needs `@quickdesign/cli`
|
||||
(binary `quickdesign`). `install.sh` installs both via `npm install -g` when missing, so they propagate to every
|
||||
server that runs the installer (requires npm on the target machine). `quickdesign` additionally needs a
|
||||
per-machine `quickdesign login` (OAuth browser flow, token at `~/.config/quickdesign/auth.json`, or
|
||||
`--token-stdin`/`QUICKDESIGN_TOKEN` headless) — that part cannot be synced. Do NOT run `quickdesign init`: it
|
||||
copies the same skill into `~/.claude/skills/quickdesign`, duplicating the plugin copy (and `sync.sh` would then
|
||||
commit it into the repo's `skills/`). Use `quickdesign login` alone.
|
||||
|
||||
**Gotcha — hand-editing `extraKnownMarketplaces` does NOT fetch the marketplace.** Adding a marketplace +
|
||||
`enabledPlugins` entry by hand only *declares* it. `/reload-plugins` will NOT pick it up: that command reloads
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
name: quickdesign-plugin
|
||||
description: QuickDesign AI-media plugin and CLI — both installed 2026-08-30; marketplace id is claude-community, and the CLI still needs `quickdesign login`.
|
||||
metadata:
|
||||
type: reference
|
||||
---
|
||||
|
||||
`quickdesign@claude-community` — AI media generation (UGC/talking-avatar video, multi-segment promos, image edits, video upscale) via Seedance 2.0 R2V/I2V, Kling 3 Pro, Sora 2, Nano Banana 2, GPT Image, Topaz upscale.
|
||||
|
||||
- Marketplace: `anthropics/claude-plugins-community`, but its declared **name is `claude-community`**, not the repo name — so the plugin id is `quickdesign@claude-community`. Installing by repo name fails.
|
||||
- Upstream (the actual product): https://github.com/ottasilver/quickdesign-cli — https://quickdesign.io. Community-contributed, not Anthropic-authored.
|
||||
- Installed at user scope, v0.8.0, 2026-08-30. Cache: `~/.claude/plugins/cache/claude-community/quickdesign/0.8.0`.
|
||||
- Wraps a `quickdesign` binary, installed globally 2026-08-30 (`npm install -g @quickdesign/cli`, v0.8.0, at `~/nodejs/quickdesign`). **Not authed yet** — `quickdesign whoami` says "Not logged in"; run `quickdesign login` (OAuth browser flow, token to `~/.config/quickdesign/auth.json`; `--token-stdin` or `QUICKDESIGN_TOKEN` for headless/CI). Hosted paid SaaS backend.
|
||||
- **Do NOT run `quickdesign init`** — it copies the same skill into `~/.claude/skills/quickdesign`, duplicating the plugin copy. Use `quickdesign login` alone.
|
||||
- Skill hard rule worth knowing: `seedance-2.0-r2v` is the default for *all* UGC/avatar/promo work — do not "downgrade" to `seedance-2.0-i2v` just because the clip is short; i2v forfeits multi-`--reference-image` and `--reference-audio` voice continuity.
|
||||
|
||||
Related: [[claude-plugin-install-cli]]
|
||||
+8
-1
@@ -26,7 +26,8 @@
|
||||
"amazon-location-service@claude-plugins-official": true,
|
||||
"ui-ux-pro-max@ui-ux-pro-max-skill": true,
|
||||
"impeccable@impeccable": true,
|
||||
"claude-mem@thedotmack": true
|
||||
"claude-mem@thedotmack": true,
|
||||
"quickdesign@claude-community": true
|
||||
},
|
||||
"extraKnownMarketplaces": {
|
||||
"claude-code-warp": {
|
||||
@@ -58,6 +59,12 @@
|
||||
"source": "github",
|
||||
"repo": "thedotmack/claude-mem"
|
||||
}
|
||||
},
|
||||
"claude-community": {
|
||||
"source": {
|
||||
"source": "github",
|
||||
"repo": "anthropics/claude-plugins-community"
|
||||
}
|
||||
}
|
||||
},
|
||||
"autoUpdatesChannel": "latest",
|
||||
|
||||
@@ -49,8 +49,15 @@ if [ -d "$CLAUDE_DIR/skills" ]; then
|
||||
# into ~/.agents/skills. Copying them as symlinks would commit links that dangle
|
||||
# on every other machine; dereferencing them would vendor someone else's skills.
|
||||
# Only real skill directories belong in this repo.
|
||||
rsync -a --delete --no-links "$CLAUDE_DIR/skills/" "$SCRIPT_DIR/skills/"
|
||||
echo " Copied: skills/"
|
||||
if command -v rsync >/dev/null 2>&1; then
|
||||
rsync -a --delete --no-links "$CLAUDE_DIR/skills/" "$SCRIPT_DIR/skills/"
|
||||
echo " Copied: skills/"
|
||||
else
|
||||
# No rsync (e.g. Git Bash on Windows). Skipping is the safe failure: a plain cp
|
||||
# cannot express --delete or --no-links, and getting it wrong has wiped skills/rpg
|
||||
# from the repo before. Sync skills from a machine that has rsync.
|
||||
echo " Skipped: skills/ — rsync not found on this machine (repo copy left intact)"
|
||||
fi
|
||||
fi
|
||||
|
||||
cd "$SCRIPT_DIR"
|
||||
|
||||
Reference in New Issue
Block a user