main
Colby Knox Publish 0.2.58 8c504bd 8h ago
#!/usr/bin/env bash
# Deploy the altium-bridge USER skills into every agent home this container has,
# and install the dock dashboard (`altium-dashboard`) that dockbar.json launches.
set -euo pipefail
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
install_skill() {  # <dest-dir> <src-file>
  mkdir -p "$1" && cp -f "$2" "$1/SKILL.md"
}
for HOME_DIR in "$HOME/.claude/skills" "$HOME/.codex/skills"; do
  install_skill "$HOME_DIR/altium-bridge"        "$HERE/SKILL.md"
  install_skill "$HOME_DIR/altium-bridge-plan"   "$HERE/skills/altium-bridge-plan/SKILL.md"
  install_skill "$HOME_DIR/altium-part-import"   "$HERE/skills/altium-part-import/SKILL.md"
  install_skill "$HOME_DIR/altium-kicad-import"  "$HERE/skills/altium-kicad-import/SKILL.md"
  install_skill "$HOME_DIR/altium-install"       "$HERE/skills/altium-install/SKILL.md"
  install_skill "$HOME_DIR/altium-libraries"     "$HERE/skills/altium-libraries/SKILL.md"
  install_skill "$HOME_DIR/altium-boards"        "$HERE/skills/altium-boards/SKILL.md"
  install_skill "$HOME_DIR/altium-outputs"       "$HERE/skills/altium-outputs/SKILL.md"
  install_skill "$HOME_DIR/altium-instances"      "$HERE/skills/altium-instances/SKILL.md"
  install_skill "$HOME_DIR/altium-licensing"      "$HERE/skills/altium-licensing/SKILL.md"
  install_skill "$HOME_DIR/altium-uia"            "$HERE/skills/altium-uia/SKILL.md"
  install_skill "$HOME_DIR/altium-wiki-import"    "$HERE/skills/altium-wiki-import/SKILL.md"
  install_skill "$HOME_DIR/altium-a365"           "$HERE/skills/altium-a365/SKILL.md"
  install_skill "$HOME_DIR/altium-bom"            "$HERE/skills/altium-bom/SKILL.md"
  install_skill "$HOME_DIR/altium-schematic-edit" "$HERE/skills/altium-schematic-edit/SKILL.md"
done

# Dashboard: the pkg ships it, the dock runs `altium-dashboard serve --print-url`.
# (kicad-bridge once shipped a dockbar.json whose command the pkg never installed;
# every user's dock click died with exit 127. Install what we carry.)
APPDIR="$HOME/.local/share/adom/altium-bridge"
BINDIR="$HOME/.local/bin"
mkdir -p "$APPDIR/dashboard/ui" "$BINDIR"
cp -f "$HERE/dashboard/altium_dashboard.py" "$APPDIR/dashboard/altium_dashboard.py"
for asset in index.html favicon.svg altium-logo.png dock-altium.svg newbie-panel.js; do
  [ -f "$HERE/dashboard/ui/$asset" ] && cp -f "$HERE/dashboard/ui/$asset" "$APPDIR/dashboard/ui/$asset"
done
if [ -d "$HERE/dashboard/ui/assets" ]; then
  rm -rf "$APPDIR/dashboard/ui/assets"
  cp -R "$HERE/dashboard/ui/assets" "$APPDIR/dashboard/ui/assets"
fi
[ -f "$HERE/dockbar.json" ] && cp -f "$HERE/dockbar.json" "$APPDIR/dockbar.json"
cat > "$BINDIR/altium-dashboard" <<EOF
#!/usr/bin/env bash
exec python3 "$APPDIR/dashboard/altium_dashboard.py" "\$@"
EOF
chmod +x "$BINDIR/altium-dashboard"

# The KiCad -> Altium converters the skills (altium-wiki-import, altium-part-import, altium-kicad-import)
# and AI Flow's Altium library step run in the container. They were only in the source repo, so an AI
# with just this package could not follow its own skills (found 2026-10-15). Install them as commands.
mkdir -p "$APPDIR/tools"
for t in kicad2altium symbol_modes kicad_v10_to_v9 bom_tool; do
  cp -f "$HERE/tools/$t.py" "$APPDIR/tools/$t.py"
done
mk() {  # <command> <tool>
  cat > "$BINDIR/$1" <<EOF2
#!/usr/bin/env bash
exec python3 "$APPDIR/tools/$2.py" "\$@"
EOF2
  chmod +x "$BINDIR/$1"
}
mk altium-kicad2altium kicad2altium
mk altium-symbol-modes symbol_modes
mk altium-kicad-downgrade kicad_v10_to_v9
mk altium-bom bom_tool
echo "OK: altium-bridge user skills installed + altium-dashboard + altium-kicad2altium, altium-symbol-modes, altium-kicad-downgrade, altium-bom"