Skip to content

The commit message generator that actually understands your code.

CommitBee parses your code with tree-sitter, maps diff hunks to symbol spans, and gives the LLM structured semantic context.

~/project
$ commitbee
Analyzing 3 staged files...
Extracting symbols (tree-sitter)...
feat(auth): add JWT token refresh with configurable expiry
Commit? (Y/n)

Every other tool just pipes your diff to an LLM and hopes for the best.

What other tools see

- fn validate(&self) -> bool {
-     self.token.len() > 0
- }
+ fn validate(&self) -> Result<(), AuthError> {
+     if self.token.is_empty() {
+         return Err(AuthError::EmptyToken);
+     }
+     self.check_expiry()?;
+     Ok(())
+ }

"update validate function"

What CommitBee sees

Symbol: validate()

Modified signature: bool -> Result<(), AuthError>

Evidence: BREAKING_CHANGE

Public API return type changed

Evidence: BUG_FIX

Error handling added (was ignoring failures)

"fix(auth)!: return Result from validate with expiry check"

A 7-stage pipeline from diff to commit

Watch how CommitBee processes your code, step by step.

Step 1 of 7
Git Service
Tree-sitter
Splitter
Context Builder
LLM
Validator
Sanitizer
📂

Git Service

Reading staged changes...

3 files staged: auth.rs, config.rs, tests/auth_test.rs