Add .claude-plugin/marketplace.json with all 10 skills registered as individual plugins under marketplace name 'dontbesilent-skills'. Users can now install via: claude plugin marketplace add dontbesilent2025/dbskill claude plugin install dbs-diagnosis@dontbesilent-skills Categories: business-diagnostics, content-creation, thinking-tools, utilities. Auto-update supported via Claude Code native plugin system. Also includes: - demo.gif showing real installation flow - scripts/record-demo.sh for reproducible demo recording - README updated with plugin marketplace install instructions Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
82 lines
2.5 KiB
Bash
Executable File
82 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Record dbskill plugin marketplace demo GIF
|
|
# Usage: ./scripts/record-demo.sh
|
|
# Output: demo.gif in repo root
|
|
#
|
|
# Auto-detects marketplace repo: uses upstream (dontbesilent2025/dbskill) if its
|
|
# default branch has .claude-plugin/marketplace.json, otherwise falls back to
|
|
# origin fork. After upstream PR merge, re-running this script will automatically
|
|
# produce a demo pointing at the canonical repo.
|
|
#
|
|
# Prerequisites: brew install charmbracelet/tap/vhs gifsicle
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
REPO_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
TAPE_TEMPLATE="$SCRIPT_DIR/demo.tape"
|
|
TAPE_RENDERED="/tmp/demo_rendered.tape"
|
|
OUTPUT_GIF="$REPO_DIR/demo.gif"
|
|
|
|
for cmd in vhs gifsicle; do
|
|
if ! command -v "$cmd" &>/dev/null; then
|
|
echo "Error: $cmd not found."
|
|
echo "Install: brew install charmbracelet/tap/vhs gifsicle"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
# Extract owner/repo from a git remote URL (strips .git suffix and host prefix)
|
|
parse_remote() {
|
|
git -C "$REPO_DIR" remote get-url "$1" 2>/dev/null \
|
|
| sed 's|.*github.com[:/]||; s|\.git$||'
|
|
}
|
|
|
|
# Detect marketplace repo: prefer upstream if it has marketplace.json, else origin
|
|
detect_marketplace_repo() {
|
|
local upstream origin
|
|
upstream=$(parse_remote upstream) || true
|
|
origin=$(parse_remote origin) || true
|
|
|
|
if [[ -n "$upstream" ]] && gh api "repos/$upstream/contents/.claude-plugin/marketplace.json" &>/dev/null; then
|
|
echo "$upstream"
|
|
return
|
|
fi
|
|
if [[ -n "$origin" ]]; then
|
|
echo "$origin"
|
|
return
|
|
fi
|
|
echo "dontbesilent2025/dbskill"
|
|
}
|
|
|
|
# Remove previously installed demo plugins (safe to call when nothing is installed)
|
|
cleanup_plugins() {
|
|
claude plugin uninstall dbs-diagnosis@dontbesilent-skills 2>/dev/null || true
|
|
claude plugin uninstall dbs@dontbesilent-skills 2>/dev/null || true
|
|
claude plugin marketplace remove dontbesilent-skills 2>/dev/null || true
|
|
}
|
|
|
|
MARKETPLACE_REPO=$(detect_marketplace_repo)
|
|
echo "Using marketplace repo: $MARKETPLACE_REPO"
|
|
|
|
# Render tape template: replace MARKETPLACE_REPO placeholder with detected repo
|
|
sed "s|MARKETPLACE_REPO|$MARKETPLACE_REPO|g" "$TAPE_TEMPLATE" > "$TAPE_RENDERED"
|
|
|
|
echo "Cleaning previous plugin state..."
|
|
cleanup_plugins
|
|
|
|
echo "Recording demo..."
|
|
rm -f "$OUTPUT_GIF"
|
|
(cd "$REPO_DIR" && vhs "$TAPE_RENDERED")
|
|
|
|
echo "Speeding up 2x..."
|
|
cp "$OUTPUT_GIF" /tmp/demo_raw.gif
|
|
gifsicle -d2 /tmp/demo_raw.gif "#0-" > "$OUTPUT_GIF"
|
|
|
|
echo "Cleaning up..."
|
|
cleanup_plugins
|
|
rm -f /tmp/demo_raw.gif "$TAPE_RENDERED" /tmp/cw.sh
|
|
|
|
SIZE=$(ls -lh "$OUTPUT_GIF" | awk '{print $5}')
|
|
echo "Done: $OUTPUT_GIF ($SIZE)"
|