AGENTS.md · git:20260929.22df6e7 · 2026-09-29 · sha256 3c07fc47e00ee855

AGENTS.md git:20260929.22df6e7A

Immutable. This exact content never changes and is served at /api/v1/blob/3c07fc47e00ee855.

# Working in this repo (humans and agents)

Sandwalk is a monorepo: `cli/` (Python agent API + CLI), `apps/local-web/`
(React dashboard, Tauri shell), `apps/sandwalk-mac/` (Swift menubar server),
`apps/packaging/` (DMG / signing). Two skills in `.cursor/skills/` carry the
day-to-day workflow — read them before running or testing anything:

- **`sandwalk-dev-loop`** — run the API (`scripts/dev-api.sh`, :8787) and the UI
  (`scripts/dev-ui.sh`, :1420) from this checkout; what hot-reloads; how to get
  the packaged app off :8787.
- **`sandwalk-testing`** — what to run per change (`scripts/verify.sh` mirrors
  the required CI gate), the Playwright e2e + perf harness in
  `apps/local-web/e2e/`, baseline/compare, and the live multi-agent grid bench.

## Ground rules

- Run `scripts/verify.sh` before every commit; grid/terminal/PTY changes also
  need `scripts/verify.sh e2e`; perf-sensitive UI changes need a bench
  baseline → compare table in the PR.
- User-facing strings are English. Code comments may be anything readable,
  but new comments should be English too.
- Never print or commit API keys / tokens (`~/.sandwalk/config.json`,
  `settings.json`, `token=` in URLs). Redact when quoting logs.
- Do not start/restart the packaged "Sandwalk Server" menubar app to test
  checkout code — it runs the bundled API.
- Keep `perfCount()` / `data-pane-*` hooks: the harness depends on them.
- Commit style: `type(scope): imperative summary` (`fix(fas-107): …`,
  `perf(grid): …`, `test(e2e): …`); explain the *why* in the body.
- Coverage thresholds in `apps/local-web/vitest.config.ts` and
  `cli/pyproject.toml` are floors — raise, never lower, to make a test pass.

More: [CONTRIBUTING.md](CONTRIBUTING.md), [.github/TESTING.md](.github/TESTING.md),
[apps/local-web/DESKTOP.md](apps/local-web/DESKTOP.md).