Contributing
June 3, 2026 ยท View on GitHub
First off, thanks for taking the time to contribute! ๐
Bashio is an active open-source project, and we are always open to people who want to use the code or contribute to it. The following is a set of guidelines for contributing; they are not strict rules, so use your best judgment, and feel free to propose changes to this document in a pull request.
Please note we have a code of conduct; please follow it in all your interactions with the project.
Reporting bugs and requesting features
- ๐ Found a bug? Open a bug report. Please search the existing issues first, as your problem may already be known.
- ๐ก Have an idea or feature request? Start a discussion instead of opening an issue, so the community can weigh in.
- ๐ Found a security issue? Please do not open a public issue; see our security policy for responsible disclosure.
Even better: submit a pull request with a fix or improvement!
Development
Bashio is a pure Bash function library; every module lives in the
lib folder, and each function is documented with a comment block
right above it. We use prek to run the same checks locally that run in
our CI.
-
Install prek.
-
Install the Git hooks so the checks run automatically on every commit:
prek install -
You can run all checks against the whole codebase at any time:
prek run --all-files
The following tools run on every pull request and must pass:
- ShellCheck: static analysis of the shell scripts.
- shfmt: shell formatting (
-i 4 -ci). - Prettier: formatting of JSON, Markdown, and YAML files.
- yamllint: linting of YAML files.
- codespell: checks for common misspellings.
- zizmor: security auditing of the GitHub Actions workflows.
Tests
The test suite lives in the tests folder and uses
Bats. After installing Bats, run it from the repository root:
bats tests/
Each module has its own tests/<module>.bats file; tests/test_helper.bash
loads the library so its functions are available to the tests. When you fix a
bug or add a function, please add a test that covers it.
In CI the suite runs under bashcov and coverage is uploaded to both Codecov and GitHub's native code coverage.
Pull request process
- Search the repository for open or closed pull requests that relate to your submission, to avoid duplicating effort.
- Keep your change focused; smaller, well-described pull requests are easier to review and merge.
- Our automation requires every pull request to carry a label describing the type of change. You don't need to add this yourself; only maintainers can apply labels, and one will be added for you during review. The label check may show as failing until then, which is expected.
- Make sure all checks pass; running
prek run --all-fileshelps you catch issues before you push. - A maintainer will review your pull request and merge it once it is ready.