# Git conventions - Never skip hooks with `--no-verify`. Hooks are the automated QA gate; bypassing them breaks the pipeline. - Never force-push main or master. - Commit messages explain why, not what. Written for both humans and changelog generators. - Never commit secrets, credentials, or environment-specific config. - Use conventional commits: `feat:`, `fix:`, `docs:`, `chore:`, `refactor:`, `test:` ## Submodules - When working with submodules: commit and push the submodule first, then update and push the parent repo. Pushing the parent while the submodule commit doesn't exist on the remote breaks `git submodule update` for anyone who pulls. - Always use `rtk git` for parent repo operations; drop into the submodule directory for submodule-specific git commands. - After adding a submodule, check `git status` in both the parent and the submodule — a `-dirty` flag means the submodule has uncommitted local changes that need to be committed before the parent pointer is updated.