Low-level validation and utility entrypoints live under tools/. Exploratory probes live under tools/scratch/.
uv run python3 tools/diagnostics.py
uv run python3 tools/diagnostics.py --capture-screen
uv run python3 tools/diagnostics.py --send-test-key --test-key j --delay-seconds 5tools/diagnostics.py validates config loading, journal path resolution, bindings parsing, screen capture, and synthetic input delivery.
--send-test-key is a raw input-backend check. It sends the literal key you pass through the active platform backend and does not look up an Elite action from the .binds file. Use it to answer "can EDControlRoom inject input at all on this machine?" not "does SetSpeedZero resolve and fire correctly?".
uv run python3 tools/check_bindings.py
uv run python3 tools/check_bindings.py --verbose
uv run python3 tools/check_bindings.py --json
uv run python3 tools/set_binding.py PitchDownButton --showSee bindings-reference.md for the action names the runtime depends on.
uv run python3 tools/watch_journal.py
uv run python3 tools/run_routine.py --routine jump --log-eventsuv run python3 tools/ship_controls.py --action SetSpeedZero --delay-seconds 3
uv run python3 tools/ship_controls.py --sequence "SetSpeedZero; RollLeftButton total=0.45; SetSpeed100 delay=5"uv run python3 tools/scratch/scratch_cv.py --save-debug /tmp/cv-debug.png
uv run python3 tools/scratch/scratch_rebake.py destination --delay 3 --open
uv run python3 tools/scratch/scratch_market.py --raw
uv run python3 tools/scratch/scratch_cgevent.py x --modifier ctrl --hold 0.2