.venv/
__pycache__/
*.pyc
*.egg-info/
dist/
/data/
/examples/*/data/
# Sibling of /data/ under the same global home (see data/data_dir.py's
# get_or_create_machine_id) — the repo's own dev/test TESTERKIT_HOME pin
# (tests/conftest.py) lands it here; never a committed artifact.
/machine_id
/machine_id.lock
# Same reasoning — the credential store (secret machine token from
# `testerkit connect`) and the global config (persisted server URL) also
# land here under the repo's test TESTERKIT_HOME pin; never committed.
/credentials
/config.yaml
.ruff_cache/
.pytest_cache/
.coverage
.claude/settings.local.json
.claude/scheduled_tasks.lock
.tmp/
examples/uv.lock
examples/*/uv.lock
dist/
.playwright-mcp/
report_*.html
*.mp4
*.pdf

# Generated skill refs (built from docs/ and models.py)
testerkit/skills/refs/

# JSON schemas — regenerated via `testerkit schema export` / `testerkit init`
# / `testerkit schema refresh`. The source of truth is the live Pydantic
# models in src/testerkit/models/. Don't commit snapshots.
/schemas/
.benchmarks/

# Transient logs (daemon, serve, stream, uicheck)
*.log

# Local databases and env files
*.duckdb
*.duckdb.wal
.env
.env.local
.env.*.local
