diff --git a/.github/instructions/commit-message.instructions.md b/.github/instructions/commit-message.instructions.md new file mode 100644 index 00000000..b41101d4 --- /dev/null +++ b/.github/instructions/commit-message.instructions.md @@ -0,0 +1,79 @@ +--- +applyTo: "**" +--- +# Commit Message Format + +Use Conventional Commits: `(): ` + +## Types + +| Type | When to use | +|------------|----------------------------------------------------------| +| `feat` | New feature or behaviour | +| `fix` | Bug fix | +| `refactor` | Code change that neither fixes a bug nor adds a feature | +| `chore` | Build, tooling, config, dependency changes | +| `docs` | Documentation only | +| `test` | Adding or fixing tests | +| `perf` | Performance improvement | +| `revert` | Reverts a previous commit | + +## Scopes + +Match the module, domain area, or file group being changed: + +`table`, `auth`, `epg`, `stream`, `vod`, `user`, `bouquet`, `line`, `server`, +`nginx`, `redis`, `cache`, `migrations`, `routing`, `cli`, `admin`, `install`, `tools` + +## Subject + +- Imperative mood, lowercase, no trailing period +- Max 72 characters +- English only + +## Body (optional) + +- Separate from subject with a blank line +- Wrap at 72 characters +- Explain *what* and *why*, not *how* +- Reference MIGRATION.md tasks: `Ref: MIGRATION.md L-3D` + +## Footer (optional) + +- `Closes #` — when resolving a GitHub issue +- `BREAKING CHANGE: ` — when breaking backward compatibility + +## Examples + +``` +feat(table): decompose index() into 45 private handler methods + +Extracts each $rType branch into a dedicated private method. +Dispatcher is now a thin switch() block. + +Ref: MIGRATION.md L-3D +``` + +``` +refactor(table): remove unused globals from handler methods +``` + +``` +fix(stream): prevent duplicate connection spike on auth check + +Ref: mysql-connection-spike-stream-auth +``` + +``` +chore(tools): add cleanup_globals.py for bulk global removal +``` + +``` +docs(migration): close L-3D, mark L-3R as complete +``` + +## Rules + +- One logical change per commit — do not bundle unrelated fixes +- Do not commit generated files, backups (`*.bak.*`), or temp files +- If a commit only touches one file, the scope should reflect the module, not the filename