Skip to content

Supported Languages

CommitBee uses tree-sitter to parse source files and extract semantic symbols. All 10 languages are enabled by default and individually toggleable via Cargo feature flags.

LanguageFeature FlagWhat It Extracts
Rustlang-rustFunctions, structs, enums, impls, traits, methods
TypeScriptlang-typescriptFunctions, classes, interfaces, methods, types
JavaScriptlang-javascriptFunctions, classes, methods, arrow functions
Pythonlang-pythonFunctions, classes, methods, decorators
Golang-goFunctions, types, methods, interfaces
Javalang-javaClasses, methods, constructors, interfaces, enums
Clang-cFunctions, structs, enums, typedefs
C++lang-cppFunctions, classes, structs, enums, methods
Rubylang-rubyClasses, modules, methods, singleton methods
C#lang-csharpClasses, methods, constructors, interfaces, enums

Custom Language Builds

To build with only the languages you need (reduces binary size):

bash
# Only Rust and TypeScript support
cargo install commitbee --no-default-features --features lang-rust,lang-typescript

# All languages except C++ and C#
cargo install commitbee --no-default-features --features lang-rust,lang-typescript,lang-javascript,lang-python,lang-go,lang-java,lang-c,lang-ruby

Files in unsupported or disabled languages still work — they’re included in the diff context, they just don’t get semantic symbol extraction.
The commit message will still be based on the actual diff content; it just won’t know which specific functions or types changed.

Symbol Tracking

For supported languages, symbols are tracked in three states:

  • Added [+] — New function, struct, class, etc.
  • Removed [-] — Deleted symbol
  • Modified (signature changed) [~] — Symbol exists in both versions but its signature changed

Modified symbols include additional annotations: [docs only] when only documentation/comments changed, [docs + code] when both documentation and code changed.
Methods show their parent scope (e.g., CommitValidator::validate rather than just validate).

This information appears in the prompt as a SYMBOLS CHANGED section. When structural AST diffs are available, a separate STRUCTURED CHANGES section provides
precise details like +param timeout, return Result<()> -> Result<Error>, or +field name.