Thanks for your interest in contributing! This project is a read-only AI DevOps troubleshooting engine (CLI + SDK + REST API) built on one shared analysis engine. Contributions of all kinds are welcome: bug fixes, new knowledge-base signatures, docs, and features.
By participating you agree to abide by our Code of Conduct.
devops-ai-toolkit never executes commands, never mutates any system, and never transmits analyzed content off the machine unless the user explicitly enables an external AI provider (Anthropic, OpenAI, Gemini, or a self-hosted Ollama endpoint). Every contribution must preserve this guarantee:
- Do not shell out to mutate infrastructure (no
apply,delete,restart). - Suggested "diagnostic commands" in the knowledge base must be read-only.
- The offline/deterministic core must work with no network access.
If a change cannot honor this, it does not belong in this project.
We use uv for environment and dependency management. Python 3.12+ is required.
# 1. Clone
git clone https://github.com/devopsaitoolkit/devops-ai-toolkit
cd devops-ai-toolkit
# 2. Create a virtual environment
uv venv
# 3. Install the package with all dev + api extras (editable)
uv pip install -e ".[all]"
# 4. Install pre-commit hooks
uv run pre-commit installAll checks mirror CI. Run them before pushing:
uv run ruff check . # lint
uv run ruff format . # format (use --check in CI)
uv run mypy src # strict type checking
uv run pytest # tests
uv run pytest --cov=devops_ai_toolkit --cov-report=term-missing # with coverageYou can run everything at once via pre-commit:
uv run pre-commit run --all-filesThe deterministic knowledge base is the heart of the offline engine. To propose or add a new error signature:
- Read
docs/knowledge-base.mdfor the schema and authoring conventions. - Add the signature data under
src/devops_ai_toolkit/knowledge/data/. - Include: the technology, the error string(s) to match, the likely root causes, read-only diagnostic commands, and references.
- Add a test that proves the signature matches its sample input.
- Confirm all diagnostic commands are read-only.
Not ready to write code? Open a New knowledge-base signature issue instead and a maintainer can pick it up.
- Style & lint: ruff (config in
pyproject.toml, line length 100). Runruff formatbefore committing. - Types: mypy in
strictmode. New code must be fully typed; the package ships apy.typedmarker. - Docstrings: Google convention (enforced by ruff
Drules) on public modules, classes, and functions. - Tests: pytest under
tests/. Add tests for every behavior change. Mark cross-interface end-to-end tests with@pytest.mark.integration. - No secrets in code, tests, or fixtures.
- Fork and create a topic branch off
main. - Make your change with tests and docs.
- Ensure
ruff,mypy, andpytestall pass locally. - Open a PR and fill out the template, including the read-only checklist.
- A maintainer will review. Address feedback by pushing follow-up commits.
- Squash-and-merge once approved and CI is green.
We follow Conventional Commits:
feat: add OpenStack quota-exceeded signature
fix: handle empty Terraform plan input
docs: clarify SDK usage in README
chore: bump ruff to 0.5.7
test: cover Helm release error path
Common types: feat, fix, docs, test, refactor, perf, chore, ci.
Use the issue forms: bug report, feature request, or new signature. For security issues, see SECURITY.md — do not open a public issue.