mirror of
https://github.com/conventional-commits/conventionalcommits.org.git
synced 2025-08-22 13:58:35 +00:00
docs: add LLM reference guide for conventional commits
Add comprehensive LLM-friendly reference file covering the complete Conventional Commits 1.0.0 specification. Includes structured examples, validation rules, and implementation notes optimized for language model consumption.
This commit is contained in:
parent
7bb1084f68
commit
44f76a5835
165
conventional-commits-reference.md
Normal file
165
conventional-commits-reference.md
Normal file
@ -0,0 +1,165 @@
|
||||
# Conventional Commits 1.0.0 Specification - LLM Reference
|
||||
|
||||
## Overview
|
||||
|
||||
Conventional Commits is a lightweight convention for commit messages that creates an explicit commit history, enables automated tooling, and integrates with Semantic Versioning (SemVer).
|
||||
|
||||
## Commit Message Structure
|
||||
|
||||
```
|
||||
<type>[optional scope]: <description>
|
||||
|
||||
[optional body]
|
||||
|
||||
[optional footer(s)]
|
||||
```
|
||||
|
||||
## Core Types and Their SemVer Impact
|
||||
|
||||
### Required Types
|
||||
|
||||
- **`fix:`** - Bug fix (correlates to PATCH in SemVer)
|
||||
- **`feat:`** - New feature (correlates to MINOR in SemVer)
|
||||
|
||||
### Common Additional Types
|
||||
|
||||
- `build:` - Build system or dependency changes
|
||||
- `chore:` - Maintenance tasks
|
||||
- `ci:` - CI/CD changes
|
||||
- `docs:` - Documentation changes
|
||||
- `style:` - Code style changes (formatting, no logic changes)
|
||||
- `refactor:` - Code refactoring (no bug fixes or features)
|
||||
- `perf:` - Performance improvements
|
||||
- `test:` - Test additions or modifications
|
||||
|
||||
## Breaking Changes
|
||||
|
||||
Breaking changes (correlate to MAJOR in SemVer) can be indicated in two ways:
|
||||
|
||||
1. **Footer notation**: `BREAKING CHANGE: description`
|
||||
2. **Exclamation mark**: Add `!` after type/scope (e.g., `feat!:` or `feat(scope)!:`)
|
||||
|
||||
Both methods can be used together. `BREAKING-CHANGE` is synonymous with `BREAKING CHANGE`.
|
||||
|
||||
## Scopes
|
||||
|
||||
- Optional contextual information in parentheses
|
||||
- Must be a noun describing a codebase section
|
||||
- Example: `feat(parser):`, `fix(api):`
|
||||
|
||||
## Specification Rules (RFC 2119 Keywords)
|
||||
|
||||
### MUST Requirements
|
||||
|
||||
- Commits MUST be prefixed with a type + colon + space
|
||||
- `feat` MUST be used for new features
|
||||
- `fix` MUST be used for bug fixes
|
||||
- Description MUST immediately follow the type/scope prefix
|
||||
- Body MUST begin one blank line after description
|
||||
- Footer tokens MUST use `-` instead of spaces (except `BREAKING CHANGE`)
|
||||
- Breaking changes MUST be indicated in type/scope prefix OR footer
|
||||
- Footer breaking changes MUST use uppercase `BREAKING CHANGE:`
|
||||
- `BREAKING CHANGE` MUST be uppercase
|
||||
- Case sensitivity MUST NOT be enforced (except `BREAKING CHANGE`)
|
||||
|
||||
### MAY/OPTIONAL Rules
|
||||
|
||||
- Scope MAY be provided after type
|
||||
- Longer body MAY be provided after description
|
||||
- One or more footers MAY be provided
|
||||
- Footer values MAY contain spaces and newlines
|
||||
- `BREAKING CHANGE:` MAY be omitted from footer if `!` is used
|
||||
- Types other than `feat` and `fix` MAY be used
|
||||
|
||||
## Example Patterns
|
||||
|
||||
### Basic Examples
|
||||
|
||||
```
|
||||
docs: correct spelling of CHANGELOG
|
||||
feat(lang): add Polish language
|
||||
fix: prevent racing of requests
|
||||
```
|
||||
|
||||
### Breaking Changes
|
||||
|
||||
```
|
||||
feat!: send email when product shipped
|
||||
feat(api)!: send email when product shipped
|
||||
chore!: drop Node 6 support
|
||||
|
||||
BREAKING CHANGE: use JavaScript features not available in Node 6.
|
||||
```
|
||||
|
||||
### With Body and Footers
|
||||
|
||||
```
|
||||
fix: prevent racing of requests
|
||||
|
||||
Introduce request id and reference to latest request. Dismiss
|
||||
incoming responses other than from latest request.
|
||||
|
||||
Remove timeouts which were used to mitigate racing but are
|
||||
obsolete now.
|
||||
|
||||
Reviewed-by: Z
|
||||
Refs: #123
|
||||
```
|
||||
|
||||
## Footer Format
|
||||
|
||||
- Must consist of: `<token><separator><value>`
|
||||
- Separators: `:<space>` or `<space>#`
|
||||
- Inspired by git trailer format
|
||||
- Example: `Reviewed-by: Jane Doe`, `Refs: #123`
|
||||
|
||||
## Key Benefits
|
||||
|
||||
- Automatic CHANGELOG generation
|
||||
- Automatic semantic version determination
|
||||
- Clear communication of change nature
|
||||
- Triggers for build/publish processes
|
||||
- Structured commit history for contributors
|
||||
|
||||
## SemVer Integration
|
||||
|
||||
| Commit Type | SemVer Bump | Description |
|
||||
|-------------|-------------|-------------|
|
||||
| `fix:` | PATCH | Bug fixes |
|
||||
| `feat:` | MINOR | New features |
|
||||
| `BREAKING CHANGE` | MAJOR | Breaking changes (any type) |
|
||||
|
||||
## Implementation Notes for Tools
|
||||
|
||||
- Case insensitive parsing (except `BREAKING CHANGE`)
|
||||
- Footer parsing terminates at next valid token/separator pair
|
||||
- Body is free-form, can contain multiple paragraphs
|
||||
- Scope format: noun in parentheses
|
||||
- Breaking change can be in type prefix OR footer (or both)
|
||||
|
||||
## Revert Commits
|
||||
|
||||
No explicit specification provided. Recommended approach:
|
||||
```
|
||||
revert: let us never again speak of the noodle incident
|
||||
|
||||
Refs: 676104e, a215868
|
||||
```
|
||||
|
||||
## Workflow Integration
|
||||
|
||||
- Compatible with squash-merge workflows
|
||||
- Lead maintainers can clean up commit messages during merge
|
||||
- Not all contributors need to use the specification
|
||||
- Tools can process commits that follow the specification
|
||||
|
||||
## Validation Rules Summary
|
||||
|
||||
1. Type is required (noun + colon + space)
|
||||
2. Description is required (after colon + space)
|
||||
3. Scope is optional (noun in parentheses)
|
||||
4. Body is optional (blank line separator required)
|
||||
5. Footers are optional (blank line separator required)
|
||||
6. Breaking changes require `!` in type OR `BREAKING CHANGE:` footer
|
||||
7. Footer tokens use hyphens instead of spaces
|
||||
8. Only `BREAKING CHANGE` is case-sensitive (must be uppercase)
|
Loading…
Reference in New Issue
Block a user