Much of Bazel’s strength comes from the ability to define new rules which can be used by others. There is a growing and evolving set of rules to support popular languages and packages.

Contact the respective rule set’s maintainers regarding issues and feature requests. To find more Bazel rules, use a search engine or look on GitHub.

Here is a selection of recommended rules:

The repository Skylib contains additional functions that can be useful when writing new rules and new macros.

Native rules that do not apply to a specific programming language

Native rules are shipped with the Bazel binary, they are always available in BUILD files without a load statement.

Embedded non-native rules

Bazel also embeds additional rules written in Starlark. Those can be loaded from the @bazel_tools built-in external repository.