Replace the charCount * fontSize * 0.55 text sizing heuristic with canvas-based measurement (graceful fallback when native deps unavailable). Add validate.mjs for automated spatial checks (text overflow, arrow-text collisions, element overlap). Update element format reference with sizing rules, label guidelines, and arrow routing conventions. Add verification step to SKILL.md workflow. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
38 lines
1.1 KiB
Bash
Executable File
38 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# First-time setup for excalidraw-png-export skill.
|
|
# Installs playwright and chromium headless into a dedicated directory.
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
EXPORT_DIR="$SCRIPT_DIR/.export-runtime"
|
|
|
|
if [ -d "$EXPORT_DIR/node_modules/playwright" ]; then
|
|
echo "Runtime already installed at $EXPORT_DIR"
|
|
exit 0
|
|
fi
|
|
|
|
echo "Installing excalidraw-png-export runtime..."
|
|
mkdir -p "$EXPORT_DIR"
|
|
cd "$EXPORT_DIR"
|
|
|
|
# Initialize package.json with ESM support
|
|
cat > package.json << 'PACKAGEEOF'
|
|
{
|
|
"name": "excalidraw-export-runtime",
|
|
"version": "1.0.0",
|
|
"type": "module",
|
|
"private": true
|
|
}
|
|
PACKAGEEOF
|
|
|
|
npm install playwright 2>&1
|
|
npx playwright install chromium 2>&1
|
|
|
|
# canvas provides accurate text measurement for convert.mjs.
|
|
# Requires Cairo native library: brew install pkg-config cairo pango libpng jpeg giflib librsvg
|
|
# Falls back to heuristic sizing if unavailable.
|
|
npm install canvas 2>&1 || echo "WARN: canvas install failed (missing Cairo?). Heuristic text sizing will be used."
|
|
|
|
echo "Setup complete. Runtime installed at $EXPORT_DIR"
|