makepad/skills/install.sh
Arena Agent fe21c07d84 skills: add Makepad game skills pack ported from threejs-game-skills
Nine agent skills for building Makepad/Rust games, ported from
majidmanzarpour/threejs-game-skills. Same director-routed workflow and
premium bar; runtime rewritten for this fork's game crates.

- makepad-game-director        entrypoint, routing, continuity, asset probe
- makepad-gameplay-systems     loop, movers vs rigid bodies, input, camera, netplay
- makepad-aaa-graphics-builder lighting, shaders, budget, visual scorecard
- makepad-game-ui-designer     HUD, menus, touch and XR UI
- makepad-debug-profiler       defect bisection and profiling
- makepad-qa-release           verification ladder, evidence, packaging
- makepad-3d-generator         CC0 model search, casts, procedural geometry
- makepad-image-generator      texgen textures, palettes, sky, icons
- makepad-audio-generator      sample bank, mixer, material impacts, 3D audio

Written against the real APIs in libs/game/*, libs/sim and apps/arcade:
the game.* verb table, GameRenderer adaptive quality, the packed 6-float
GameMeshVertex layout, script_mod! splash styling, makepad-test driving,
and the BUDGETS.md numbers. No paid generation API is required - the CC0
library plus seeded makepad-game-gen replaces them.

Includes install.sh (Codex/Claude), validate-skills.sh and a repo-aware
probe_assets.sh; both scripts verified against this checkout.
2026-09-05 21:18:58 +00:00

91 lines
2.8 KiB
Bash
Executable file

#!/usr/bin/env bash
set -euo pipefail
usage() {
cat <<'USAGE'
Usage: ./install.sh [--codex] [--claude] [--all] [--agents] [--force] [--list]
Installs the Makepad game skills from this directory into local agent skill
directories.
Recommended:
./install.sh --codex
./install.sh --claude
./install.sh --all
Targets:
--codex Install into ${CODEX_HOME:-$HOME/.codex}/skills
--claude Install into ${CLAUDE_SKILLS_DIR:-$HOME/.claude/skills}
--all Install into Codex and Claude
Advanced:
--agents Install into ${AGENTS_SKILLS_DIR:-$HOME/.agents/skills}
Only for agent surfaces that read .agents/skills without also
reading Codex or Claude skills, otherwise skills can duplicate.
Options:
--force Replace same-named skills in the target directory
--list List the skills in this pack and exit
USAGE
}
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
codex="false"; claude="false"; agents="false"; force="false"; list="false"
while [[ $# -gt 0 ]]; do
case "$1" in
--codex) codex="true" ;;
--claude) claude="true" ;;
--agents) agents="true" ;;
--all) codex="true"; claude="true" ;;
--force) force="true" ;;
--list) list="true" ;;
-h|--help) usage; exit 0 ;;
*) printf 'unknown option: %s\n\n' "$1" >&2; usage >&2; exit 2 ;;
esac
shift
done
mapfile -t skills < <(find "$script_dir" -mindepth 1 -maxdepth 1 -type d -name 'makepad-*' -printf '%f\n' | sort)
if [[ "${#skills[@]}" -eq 0 ]]; then
echo "no makepad-* skills found in $script_dir" >&2
exit 1
fi
if [[ "$list" == "true" ]]; then
printf 'Makepad game skills (%d):\n' "${#skills[@]}"
for s in "${skills[@]}"; do
desc=$(sed -n 's/^description:[[:space:]]*"\{0,1\}\(.\{0,70\}\).*/\1/p' "$script_dir/$s/SKILL.md" | head -1)
printf ' %-32s %s...\n' "$s" "$desc"
done
exit 0
fi
if [[ "$codex" == "false" && "$claude" == "false" && "$agents" == "false" ]]; then
usage >&2
exit 2
fi
install_into() {
local dest="$1" label="$2" installed=0 skipped=0
mkdir -p "$dest"
for s in "${skills[@]}"; do
if [[ -e "$dest/$s" && "$force" != "true" ]]; then
printf ' skip %s (exists; --force to replace)\n' "$s"
skipped=$((skipped + 1))
continue
fi
rm -rf "$dest/$s"
cp -R "$script_dir/$s" "$dest/$s"
printf ' install %s\n' "$s"
installed=$((installed + 1))
done
printf '%s: %d installed, %d skipped -> %s\n\n' "$label" "$installed" "$skipped" "$dest"
}
[[ "$codex" == "true" ]] && install_into "${CODEX_HOME:-$HOME/.codex}/skills" "Codex"
[[ "$claude" == "true" ]] && install_into "${CLAUDE_SKILLS_DIR:-$HOME/.claude/skills}" "Claude Code"
[[ "$agents" == "true" ]] && install_into "${AGENTS_SKILLS_DIR:-$HOME/.agents/skills}" "Agents"
echo "Done. Start with makepad-game-director; it routes the siblings itself."