- Conventional Commits: All commits must follow Conventional Commits:
<type>(<scope>): <description> - Types:
feat,fix,docs,style,refactor,perf,test,build,ci,chore - Scopes:
(cli),(lib),(extraction),(classification),(container),(output),(types),(docs),(deps),(ci),(build), etc. Required for all commits. - Description:
- Imperative mood ("add", not "added")
- No period at the end
- ≤72 characters, capitalized, clear and specific
- Body (optional):
- Start after a blank line
- Use itemized lists for multiple changes
- Explain what/why, not how
- Footer (optional):
- Start after a blank line
- Use for issue refs (
Closes #123) or breaking changes (BREAKING CHANGE:)
- Breaking Changes:
- Add
!after type/scope (e.g.,feat(api)!: ...) or useBREAKING CHANGE:in footer
- Add
- Examples:
feat(extraction): add UTF-16LE string extraction for PE binariesfix(classification): improve URL pattern matching for edge casesdocs(readme): update installation instructions for Rust 1.85+refactor(container): simplify ELF section parsing interfacetest(classification): add semantic tagging validation testschore(deps): update goblin to v0.10.1 for security patchesperf(extraction): optimize string extraction for large binariesfeat(output): add JSON output format with ranking scoresfeat(cli): add --min-length and --encoding filtersfix(container): handle corrupted PE section headers gracefully
- CI Compatibility:
- Use
chore:for meta or maintenance changes - Use
deps:scope for dependency updates
- Use