the repo carries no .claude/: the run switches move into CONTRIBUTING (#28)

The probe skill was a Claude-only file, and its promises held on one machine: its shield needs an
account named probe and digits, which CONTRIBUTING never asks for, and its long-run advice was
macOS's. The switches every checkout has for an unattended run are plain text in CONTRIBUTING
now, read by any tool; METHOD points there, AGENTS.md drops the skills folder, and .gitignore
leaves .claude/ to each person.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Sam Sung
2026-09-24 09:06:35 +07:00
committed by GitHub
co-authored by Claude Opus 5.5
parent b410ff2055
commit 9649ef9a1b
5 changed files with 19 additions and 54 deletions
-44
View File
@@ -1,44 +0,0 @@
---
name: probe
description: Run the client unattended against the local vmangos server — a live probe, a capture, a leg. Use whenever a session or an agent needs the client logged in without a person at the keyboard.
---
The rules are in `docs/METHOD.md` ("The local server"). This is the how.
**Identity.** The account this checkout declares in `.probe-identity` at the tree root
(`WOW_USER=`, `WOW_PASS=`, `WOW_CHAR=`, one per line, never committed), or the same three in
the environment. A login kicks whoever holds the account, so a probe account is its own, with
the top GM level (the GM commands the probes use all work; `.modify money` is out of reach
even so), and from a checkout that declares one the client refuses the scripted login on any
other account; `WOW_ALLOW_ACCOUNT=1` overrides. `scripts/smoke.sh`, `cine.sh` and
`summon-live.sh` take the identity from `scripts/probe-identity.sh`, which applies this rule.
**Every run:** `WOW_UNATTENDED=1`, which reconnects instead of parking on a dialog and exits
non-zero on a login it cannot pass. An agent adds `WOW_NOSOUND=1`. The three scripts pass
`WOW_UNATTENDED=1`; `smoke.sh` and `summon-live.sh` add `WOW_NOSOUND=1`, and `cine.sh`
silences through a throwaway config with `MasterVolume=0` because the music path is its
subject. A capture (`WOW_CAPTURE`) implies both; a rig (`WOW_RIG`) implies unattended only.
**The body.** A probe cannot die: every world entry sends `.cheat god on`. `.die` clears it for
a death test; `WOW_GOD=off` runs unshielded. GM mode is on by default and makes reaction
colours, nameplates, threat, aggro, fall damage and breath read wrong: `WOW_GM=off` for any of
those. The preflight banner names the body and its state on every entry; read it first.
**A body that is not a level-1 human warrior:** `WOW_RIG="tauren druid 60 gear:heal-preraid-bis
spec:heal-preraid-bis at:ThunderBluff"` finds or creates it on the slot's account and applies
the lot; `WOW_RIG="gear:?"` lists the catalog. `WOW_PROBE_CHAT="<cmd>"` sends a GM command, and
the server's answer is echoed as `net: server says`.
**Wire work is proven from the trace:** `WOW_MOVE_TRACE=<path> WOW_MOVE_TRACE_TAGS="move,snd,in"
WOW_PROBE_EXIT_AT=<secs>`, then grep the file for the `rly` and `snd` lines. An unfiltered trace
in a populated scene stops being a per-frame clock.
**Keep a long run awake:** `caffeinate -u -t 2`, then `caffeinate -dis <command>`. An occluded
window runs at about 1 fps and the live-FPS line stamps `occluded_frames=`; a lock screen
throttles the same way but reads 0 with `p99_ms` near 1020, so check
`ioreg -n Root -d1 -a | grep CGSSessionScreenIsLocked` before an unattended series.
**Captures:** `scripts/visual.sh` wraps a capture run; the recipe, and why a capture goes
through `cargo run` and never a bare binary, is the header of
`crates/benilla-app/src/capture/mod.rs`. Pixel questions go through `benilla-visual crop`,
`series` and `hotspot`.
+2 -4
View File
@@ -32,10 +32,8 @@ trace-*.json
.DS_Store
*.swp
/.idea/
# Claude Code: the skills are shared procedures (AGENTS.md names them); every other file under
# .claude/ is its owner's own settings.
/.claude/*
!/.claude/skills/
# Claude Code: settings and skills under .claude/ are each person's own.
/.claude/
# Python bytecode from the `scripts/` tooling.
__pycache__/
-3
View File
@@ -10,9 +10,6 @@ Read, in this order:
touching anything.
3. `docs/CONTRIBUTING.md` — what gets in and how a change is judged.
Procedures with steps are skills in `.claude/skills/`: `probe` (an unattended run against the
local server).
The rest of the root is code and data: `crates/` the workspace, `reference/` the 1.12 name
catalogues the tests check against, `scripts/` the gates and instruments, `third_party/`
vendored code.
+16
View File
@@ -56,6 +56,22 @@ fork, and forks are welcome.
the environment or in a `.probe-identity` file at the repo root (one per line, never
committed), and `scripts/smoke.sh` (the live login gate) refuses without them. The probes
drive the body with GM commands, so give that account the top GM level.
- **Running it unattended.** The rules are `docs/METHOD.md`, "The local server"; these are the
switches.
- `WOW_UNATTENDED=1` reconnects instead of waiting at a dialog, and exits non-zero on a login
it cannot pass. `WOW_NOSOUND=1` runs silent. A capture (`WOW_CAPTURE`) is both, and a rig
(`WOW_RIG`) is unattended. `WOW_ALLOW_ACCOUNT=1` overrides the account guard.
- On vmangos, `WOW_RIG="tauren druid 60 gear:heal-preraid-bis spec:heal-preraid-bis
at:ThunderBluff"` finds or creates that character on the account and applies the server's
premade sets (`WOW_RIG="gear:?"` lists them). `WOW_PROBE_CHAT="<command>"` sends one GM
command and logs the reply as `net: server says`. An account named `probe` and digits is
shielded: every world entry sends `.cheat god on`, `.die` clears it for a death test, and
`WOW_GOD=off` leaves it off.
- A trace is `WOW_MOVE_TRACE=<file>`, filtered with `WOW_MOVE_TRACE_TAGS` (`"move,snd,in"`) and
ended by `WOW_PROBE_EXIT_AT=<seconds>`; grep it for the `rly` and `snd` lines.
- A capture runs through `scripts/visual.sh`, whose recipe is the header of
`crates/benilla-app/src/capture/mod.rs`. Pixel questions go through `benilla-visual crop`,
`series` and `hotspot`.
- **The loop.** `cargo play` builds and runs the play profile. `scripts/check.sh` verifies a
round of work; `scripts/gates.sh` is the full chain, and it opens a window for the engine boot
checks, so it needs a display. Work on a branch.
+1 -3
View File
@@ -63,8 +63,6 @@ comment naming the reference fact and why we differ. Anything else is a fork.
- git: the history. No changelogs, no status docs, no "what we did" narratives.
- The code: a comment says what the code does and the 1.12 fact behind it, in a line. No
history, no stories.
- `.claude/skills/`: procedures with steps. `probe` runs the client unattended against the local
server.
## Gates
@@ -101,4 +99,4 @@ account. These bind every session and every agent:
`WOW_GM=off`.
- Read the preflight banner before debugging anything else.
The mechanics are the `probe` skill.
The switches for such a run are `docs/CONTRIBUTING.md`, "Running it unattended".