Thanks for considering a contribution. QueryPilot is an eval-driven SQL reliability toolkit for AI agents — every change is measured against an execution-truth eval suite, so the same standards apply to outside contributions as to maintainer commits.
python3 -m venv .venv
.venv/bin/pip install -e ".[dev,eval]"
.venv/bin/pytest # full test suite
.venv/bin/querypilot eval run \
--suite suites/smoke.yaml \
--generator demo \
--report /tmp/eval-out.json # smoke harness end-to-endOptional extras for provider-specific work:
.venv/bin/pip install -e ".[openai,anthropic,server,mcp]"- Branch off
main. Use a short, scope-prefixed name:eval/<slug>for eval-harness changeslaunch/<slug>for distribution / launch-readiness changesfix/<slug>for bug fixesfeat/<slug>for new features
- One PR per logical change. Keep changes focused — multi-PR sequences are preferred over one large PR. PR-N+1 doesn't start until PR-N is merged.
- Tests are required. New behavior needs a unit test; new validator guards need a safety-suite case; user-facing CLI changes need a CLI test.
- Review before merge. Every PR gets maintainer review, and CI must be green — unit tests, lint, and the smoke eval gate run on every PR.
- Don't break the eval baseline. CI runs
querypilot eval checkagainst.eval/baseline.json. If your change deliberately changes pass/safety/ correctness rates, regenerate the baseline in the same PR and explain why in the description.
- Python 3.11+, full type hints,
from __future__ import annotationsat the top of new modules. - Pydantic v2 for serialized data shapes. Pure dataclasses or plain classes for internal-only data.
- No new mandatory dependencies. New integrations live behind a
[project.optional-dependencies]extra (see[eval],[openai],[anthropic]). - Keep the core (
src/querypilot/core/client.py) clean. New eval, replay, or adapter code should compose existing public methods, not instrument the core.
Don't open public issues for security vulnerabilities. Email
nklos@inceptaanalytics.ai instead. See SECURITY.md for the threat model
and disclosure process.
By contributing, you agree your contributions are licensed under the MIT
License (see LICENSE).