Skip to content

Contributing

Belgie combines Python bindings, Rust runtime code, TypeScript packages, examples, and published documentation. Keep changes narrow and validate the layer you touch.

Set up the repository

Use uv for Python dependencies:

uv sync

The repository targets Python 3.12 or newer within its supported range. The bundled Deno runtime and Rust extension are built through the project’s normal tooling.

Run checks

Run the test suite and repository hooks before opening a pull request:

uv run pytest
uv run prek run --all-files

The hooks include Python checks, TypeScript formatting and linting through Belgie, Markdown formatting and rumdl validation, and Rust checks for relevant changes.

For documentation changes, also build the site strictly:

uv sync --group docs --no-install-project
uv run --no-project mkdocs build --strict

Documentation changes

Follow the repository’s docs/agents.md instructions for documentation information architecture, writing style, code examples, navigation, and validation rules. Keep that file excluded from the published site.

Use current public imports and shipped examples. Add a page to mkdocs.yml when it is intended for the site, and link to the canonical page rather than duplicating configuration tables elsewhere.

Pull requests

Describe the user-visible behavior and the validation you ran. Include focused tests for runtime, MCP, CLI, or package changes. Documentation-only changes should include the strict MkDocs build and prek results.

Open a pull request in the Belgie repository.