## Why The git plugin only covered a partial slice of common git workflows. This adds the remaining skill set (branches, commits, history, remotes, submodules, workflow, worktrees) plus a git-orchestrate agent so the plugin can handle end-to-end git automation instead of a handful of commands. ## Implementation Notes Each new skill was validated against its research docs and org conventions after initial authoring, which surfaced hallucinated version pins, factual errors, and completeness gaps that were corrected in the same pass rather than left for follow-up. ## Impact Bumps the git plugin to 1.3.0. Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
171 lines
4.9 KiB
Markdown
171 lines
4.9 KiB
Markdown
---
|
|
source_keys:
|
|
- conventional-commits-spec
|
|
- commitlint-config-conventional
|
|
---
|
|
|
|
# Conventional Commits Specification (v1.0.0)
|
|
|
|
Conventional Commits is a lightweight convention on top of commit messages that provides a set of rules for creating an explicit commit history. It enables automated tooling (CHANGELOG generation, semantic version bumping) and structured filtering.
|
|
|
|
## Message Format
|
|
|
|
```
|
|
<type>[optional scope]: <description>
|
|
|
|
[optional body]
|
|
|
|
[optional footer(s)]
|
|
```
|
|
|
|
Each section is separated by a blank line. The header is the only required part.
|
|
|
|
## Rules
|
|
|
|
| Element | Rule |
|
|
|---|---|
|
|
| `type` | Required. Lowercase noun. |
|
|
| `scope` | Optional. Noun in parentheses directly after type: `feat(api):`. |
|
|
| `description` | Required. Immediately follows `type/scope: `. Imperative mood, no trailing period. |
|
|
| `body` | Optional. Begins one blank line after description. Free-form prose, multiple paragraphs allowed. Lines max 100 characters. |
|
|
| `footer(s)` | Optional. Begins one blank line after body (or description). `<token>: <value>` format. Lines max 100 characters. |
|
|
| `BREAKING CHANGE` | Must be uppercase. Either a footer token or signalled by `!` before the colon. |
|
|
|
|
## Standard Types
|
|
|
|
The spec itself mandates only `feat` and `fix`. The 11-type set below is the de-facto standard from `@commitlint/config-conventional` (Angular commit message guidelines), not a spec requirement — but it is what this skill validates against.
|
|
|
|
### 11-type set (commitlint/config-conventional)
|
|
|
|
| Type | Meaning | SemVer impact | Appears in CHANGELOG |
|
|
|---|---|---|---|
|
|
| `feat` | New user-visible feature | MINOR | Yes |
|
|
| `fix` | Bug fix | PATCH | Yes |
|
|
| `perf` | Performance improvement, no API change | PATCH | Yes |
|
|
| `revert` | Reverts a previous commit | PATCH | Yes |
|
|
| `docs` | Documentation only | none | No |
|
|
| `style` | Formatting, whitespace — no logic change | none | No |
|
|
| `refactor` | Code restructuring — no feature or fix | none | No |
|
|
| `test` | Adding or fixing tests | none | No |
|
|
| `build` | Build system or external dependency changes | none | No |
|
|
| `ci` | CI configuration and scripts | none | No |
|
|
| `chore` | Anything not fitting above | none | No |
|
|
|
|
A `BREAKING CHANGE` footer or `!` on **any** type always triggers a MAJOR bump.
|
|
|
|
## Breaking Changes
|
|
|
|
Two equivalent notations:
|
|
|
|
**`!` in header** (preferred — visible in `git log --oneline`):
|
|
```
|
|
feat!: drop support for Node 6
|
|
feat(api)!: remove deprecated endpoint
|
|
```
|
|
|
|
**`BREAKING CHANGE` footer** (machine-readable body):
|
|
```
|
|
feat: allow config to extend other configs
|
|
|
|
BREAKING CHANGE: `extends` key now used for extending config files
|
|
```
|
|
|
|
**Both together** (most explicit):
|
|
```
|
|
feat!: drop support for Node 6
|
|
|
|
BREAKING CHANGE: use JavaScript features not available in Node 6.
|
|
```
|
|
|
|
Rules:
|
|
- `BREAKING CHANGE` must be all caps.
|
|
- `BREAKING-CHANGE` (hyphenated) is an accepted synonym.
|
|
- Any type can carry a breaking change, not just `feat`.
|
|
- The footer value must describe what broke.
|
|
|
|
## Footer Token Rules
|
|
|
|
```
|
|
<token>: <value>
|
|
<token> #<value> # for issue references
|
|
```
|
|
|
|
- Tokens use hyphens for word separation: `Reviewed-by`, `Co-authored-by`, `Refs`.
|
|
- Exception: `BREAKING CHANGE` (space allowed, uppercase).
|
|
- Multiple footers allowed, one per line.
|
|
- Blank line required before the footer block.
|
|
|
|
Valid footer examples:
|
|
```
|
|
Reviewed-by: Z
|
|
Refs: #123
|
|
Co-authored-by: Alice <alice@example.com>
|
|
BREAKING CHANGE: the `--format` flag now requires a value
|
|
```
|
|
|
|
## Examples
|
|
|
|
Minimal — no body, no footer:
|
|
```
|
|
docs: correct spelling of CHANGELOG
|
|
```
|
|
|
|
With scope:
|
|
```
|
|
feat(lang): add Polish language
|
|
```
|
|
|
|
Breaking change via `!`:
|
|
```
|
|
feat!: send an email to the customer when a product is shipped
|
|
```
|
|
|
|
Breaking change via footer:
|
|
```
|
|
feat: allow provided config object to extend other configs
|
|
|
|
BREAKING CHANGE: `extends` key in config file is now used for extending other config files
|
|
```
|
|
|
|
Multi-paragraph body with multiple footers:
|
|
```
|
|
fix: prevent racing of requests
|
|
|
|
Introduce a request id and a reference to latest request. Dismiss
|
|
incoming responses other than from latest request.
|
|
|
|
Remove timeouts which were used to mitigate the racing issue but are
|
|
obsolete now.
|
|
|
|
Reviewed-by: Z
|
|
Refs: #123
|
|
```
|
|
|
|
Revert:
|
|
```
|
|
revert: let us never again speak of the noodle incident
|
|
|
|
Refs: 676104e, a215868
|
|
```
|
|
|
|
## commitlint Constraints (config-conventional)
|
|
|
|
| Constraint | Value |
|
|
|---|---|
|
|
| Header max length | 100 characters |
|
|
| Subject must not end with `.` | enforced |
|
|
| Subject must be lowercase (not sentence-case or UPPER-CASE) | enforced |
|
|
| Body / footer line max length | 100 characters |
|
|
| Type must be one of the 11 standard types | error if not |
|
|
| Blank line before body | warning |
|
|
| Blank line before footer | warning |
|
|
|
|
## SemVer Mapping Summary
|
|
|
|
| Condition | SemVer bump |
|
|
|---|---|
|
|
| `fix`, `perf`, `revert` | PATCH |
|
|
| `feat` | MINOR |
|
|
| Any type with `BREAKING CHANGE` or `!` | MAJOR |
|
|
| All other types (`docs`, `style`, `refactor`, `test`, `build`, `ci`, `chore`) | none |
|