Thanks for your interest in contributing. This document covers bugs, features, documentation, and code contributions.
- Questions →
#kapitanon Kubernetes Slack or GitHub Discussions - Bug reports → Open an issue
- Feature requests → Open an issue
- Documentation fixes → Open an issue or send a PR directly
- Security issues → See SECURITY.md
Kapitan uses uv for dependency management and make for task orchestration.
# Full setup (dependencies, external tools, pre-commit)
make setup
# Install only Python dependencies
make install# Run all tests with coverage
uv run pytest -n auto
# Run a specific test file
uv run pytest tests/test_compile.py
# Run a specific test class or method
uv run pytest tests/test_class_wildcards.py::DiscoverClassesTest::test_discovers_yml_and_yaml
# Skip slow tests
uv run pytest -m "not slow"Before declaring a feature or fix done, run both the focused subset and the full suite:
uv run pytest tests/ --no-covWe use Ruff for linting and formatting. Target Python version is 3.10. Line length is 88.
# Check and auto-fix
make fix
make fix-tests
# Verify formatting
make check_formatPre-commit hooks run on commit. If a hook fails, fix the issue and commit again.
- Branch from
master. - Make focused, reviewable changes.
- Add or update tests for code changes.
- Update documentation if user-facing behavior changes.
- Ensure
make formatandmake lintpass. - Open a PR using the provided template.
- Accuracy over marketing: do not exaggerate capabilities.
- Concrete examples over generic descriptions.
- Small, reviewable PRs over monolithic changes.
- Tests that hit real behavior over mocks where possible.
Current maintainers are listed in MAINTAINERS.md.