Contributing¶
Thanks for considering a contribution. AMX is an open-source CLI for AI-driven database metadata extraction. This page is the entry point — it covers the development setup, branching, commit message format, and release process.
The full long-form contributor guide also lives in the AMX repo's CONTRIBUTING.md; this page mirrors it for readability and discoverability.
Development setup¶
git clone https://github.com/omeryasirkucuk/amx.git
cd amx
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev,code-intel,postgresql]"
pre-commit install
A local PostgreSQL is convenient for end-to-end testing:
This starts a Postgres on localhost:5432. Credentials are dev-only and live in
docker-compose.yml; do not reuse them anywhere.
Branching and pull requests¶
mainis the release branch and is protected. Direct pushes are not allowed.- Create a short-lived feature branch off
main:feat/setup-wizard,fix/snowflake-comment-fetch, etc. - Open a pull request when ready. CI must pass and at least one approving review is required (you can self-approve when working solo, but the review still gets recorded).
Commit message format¶
We use Conventional Commits so that releases and the changelog are generated automatically. The PR title becomes the merge commit subject and drives the version bump:
| Prefix | Effect on version | Example |
|---|---|---|
feat: |
minor | feat(search): add OpenAI embedding provider |
fix: |
patch | fix(db): surface snowflake auth error |
perf: |
patch | perf(rag): batch chunk encoding |
refactor: |
no bump | refactor(cli): split db commands |
docs: |
no bump | docs: add embeddings guide |
test: |
no bump | test: cover bigquery adapter |
chore: |
no bump | chore: bump pre-commit pin |
ci: |
no bump | ci: cache pip wheels |
build: |
no bump | build: drop python 3.9 support |
A BREAKING CHANGE: footer (or feat!: / fix!:) triggers a major bump.
Tests¶
pytest -ra # run everything (excluding integration/live)
pytest -m "not slow" # skip slow tests
pytest tests/test_search_catalog.py -k embedding # narrow scope
pytest -m "integration or live" # opt-in to slow / real-endpoint tests
pytest -m "" # ignore the default filter and run everything
The suite uses unittest.mock. LLM and DB calls are mocked. Real-endpoint tests live
behind the integration and live markers and are not run by default.
Lint, format, type check¶
Pre-commit runs the lint and format hooks automatically on git commit. If you skipped
install, run pre-commit run --all-files before pushing.
Adding dependencies¶
Add runtime deps to [project.dependencies] in pyproject.toml. Put dev-only tooling
under [project.optional-dependencies].dev. Pin to a sensible lower bound (>=X.Y); avoid
upper caps unless we hit a known incompatibility.
Database drivers go under their own backend-named extra (postgresql, snowflake, …) so
the default install stays lean — see pyproject.toml
for the existing pattern.
Releasing¶
Releases are automated via
python-semantic-release. Cutting a
release is a single tag push from main:
The release.yml workflow then:
- Builds the wheel.
- Publishes to PyPI via OIDC Trusted Publisher (no API token in the repo).
- Creates a GitHub Release with the changelog excerpt for that version.
Version numbers are derived from Conventional Commits — feat: bumps minor, fix: /
perf: bump patch, feat!: bumps major.
Reporting bugs¶
Open an issue at https://github.com/omeryasirkucuk/amx/issues. Please include:
- AMX version (
amx --version). - Python version and OS.
- Steps to reproduce.
- Relevant excerpts from
~/.amx/logs/amx.log(redact secrets). - For DB connector bugs: backend, auth method, and the actionable error AMX printed (not the full traceback unless asked).
Documentation¶
This documentation site lives in a separate repo:
omeryasirkucuk/amx-docs. Edit Markdown
under docs/, push to main, and the GitHub Action publishes to
https://omeryasirkucuk.github.io/amx/.
For local preview:
git clone https://github.com/omeryasirkucuk/amx-docs.git
cd amx-docs
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
mkdocs serve
mkdocs serve prints the local URL it bound to (default http://127.0.0.1:8000/).
Open that link in your browser. The published site lives at
https://amxcli.com.
Security¶
Do not open public issues for security problems. See Security for the disclosure process.