--- name: deploy-gpu description: Sync this repo's working tree to nik-gpu, refresh the flat runtime paths via setup.sh, and optionally smoke-test one task against the live game. Use when the user asks to deploy, push, sync, or ship code to nik-gpu, or wants to try a task live after an edit. disable-model-invocation: true --- # /deploy-gpu Deploys the current working tree to `nik-gpu` and refreshes the runtime paths `~/ba_dailies.sh` actually executes from. See `README.md`'s "Deploying your changes" section and `CLAUDE.md`'s "Deployment model" for the source of truth this skill wraps — if either has changed, follow the doc over this file. Optional task argument (smoke test): $ARGUMENTS ## Why two steps, not just rsync `rsync` only updates the git checkout at `nik-gpu:~/repo/ba-auto-daily/`. The launcher itself runs from separate flat paths (`~/ba_dailies.sh`, `~/ba_daily.py`, `~/ba_auto/`, `~/ba_assets/`) that only `setup.sh` copies into. Skipping the `setup.sh` step means nik-gpu keeps executing old code even though the rsync "succeeded". ## Steps 1. From the repo root, run: ```bash rsync -av --delete \ --exclude='.git/' \ --exclude='__pycache__/' \ --exclude='*.pyc' \ --exclude='.claude/settings.local.json' \ --exclude='graphify-out/' \ --exclude='screenshots/' \ --exclude='scratchpad/' \ ./ nik-gpu:~/repo/ba-auto-daily/ ``` 2. Run: ```bash ssh nik-gpu "cd ~/repo/ba-auto-daily && ./setup.sh" ``` Report any failure here directly (missing host tool, venv/pip error, missing `tesseract`) rather than treating the deploy as done. 3. **Only if a task name was given in `$ARGUMENTS`** (e.g. `/deploy-gpu cafe`), run it live as a smoke test: ```bash ssh nik-gpu "~/ba_dailies.sh " ``` Do not invent a task to run if none was given — several tasks (`story_sweep`, `shop_common`, `shop_tactical`, `lesson`) spend real AP, credits, tactical coin, or lesson tickets, and running one without the user asking for that specific task would be an unrequested spend. Exit code 0 only means the script ran without a Python exception, not that the in-game action succeeded — surface the task's own log lines (e.g. `claiming all`, `nothing to claim`, `patted N sparkle(s)`) to the user, not just the exit code. 4. Summarize what happened: deploy succeeded/failed, and if a task was smoke-tested, what its log output actually said.