__pycache__/
*.py[cod]
*.egg-info/
.coverage
.pytest_cache/
.ruff_cache/
.mypy_cache/
.venv/
venv/
dist/
build/
.DS_Store
.env

# uv lock file — not committed because sumo-qa is a library published to
# PyPI: consumers install via `pip install sumo-qa` and resolve against
# `pyproject.toml` constraints, never reading this lock. The lock is only
# useful for local dev-environment reproducibility, and committing it
# created drift every time `uv run` ran against a newer release tag than
# the lock recorded. Each contributor regenerates locally via `uv sync`.
uv.lock

# IDE config (per-developer, not shipped)
.idea/

# mutmut working directory: mutated source copies + stats cache + results SQLite.
# Per-machine; regenerated on each `mutmut run`. Do not commit.
mutants/

# Per-machine MCP config written by sumo-qa-install
.vscode/mcp.json

# Per-machine plugin manifests for direct-clone install paths (Claude Code
# marketplace, Cursor, Codex). Not shipped to pip users; not part of the
# documented install surface. Kept locally for the maintainer who loads
# sumo-qa as a Claude Code plugin from this checkout.
.claude-plugin/
.codex-plugin/
.cursor-plugin/

# Claude Code config — per-user state stays local; project-shared hooks,
# agents, and skills are re-included below for contributors who clone.
# Personal additions (e.g. user-installed skills) should stay under the
# blanket exclude unless explicitly negated here.
.claude/*
!.claude/README.md
!.claude/settings.json
!.claude/hooks/
!.claude/agents/
!.claude/skills/
.claude/skills/*
!.claude/skills/scaffold-sumo-qa-skill/
!.claude/skills/regen-eval-baseline/

# Internal planning, design specs, and iteration runs — kept locally for
# context but not shipped in the public repo.
docs/superpowers/
docs/qa/
docs/qa-strategy.md
docs/COVERAGE.md

# Team-local test data fixtures. The repo ships domain-neutral samples
# (auth/, billing/) — keep your team's actual catalogue entries local
# rather than committing them. Add a line per domain folder you maintain
# privately.
knowledge/test_data/fulfilment/
knowledge/test_data/stock/

# Eval result writeups / progress reports — local-only narrative, not
# tool functionality. Belongs alongside docs/qa/ (also ignored).
tests/evals/results/

# Promptfoo runtime artifacts: local SQLite cache, output JSON, share data,
# and post-processor outputs (regenerated on every `promptfoo eval` /
# `extract_tests.py` run). Tracked: the source YAML configs under
# tests/evals/promptfoo/ (skill-*.yaml + skill-*.gen.yaml). Local-only
# anything generated FROM them.
.promptfoo/
tests/evals/promptfoo/output*.json
tests/evals/promptfoo/*.cache.json
tests/evals/promptfoo/*.generated-tests.yaml

# Node dependencies for the promptfoo eval harness. package.json +
# package-lock.json are tracked (pins the version); installed modules are not.
node_modules/
/skills-lock.json
