diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..22dccf8 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,18 @@ +repos: + - repo: https://github.com/shellcheck-py/shellcheck-py + rev: v0.9.0.6 + hooks: + - id: shellcheck + + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.1.8 + hooks: + - id: ruff + args: [--fix] + - id: ruff-format + + - repo: https://github.com/commitizen-tools/commitizen + rev: v3.2.0 + hooks: + - id: commitizen + stages: [commit-msg] diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7af9dcb..0209792 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -16,6 +16,38 @@ - Test changes before submitting - See [VERSIONING.md](VERSIONING.md) for backport compatibility rules +## Pre-commit Hooks + +This repository uses [pre-commit](https://pre-commit.com/) for linting and commit message enforcement. + +### Setup + +```bash +pip install pre-commit +pre-commit install +``` + +### Hooks + +- **shellcheck** — Lints bash scripts +- **ruff** — Lints and formats Python +- **commitizen** — Enforces [Conventional Commits](https://www.conventionalcommits.org/) format + +### Commit Message Format + +Use Conventional Commits format: + +``` +type(scope): message + +# Examples +fix(session): handle missing session gracefully +feat(pm): add queue daemon for task delegation +docs: update contributing guide +``` + +Types: `fix`, `feat`, `docs`, `refactor`, `chore`, `test` + ## Branches ### Primary Branches