Always run tests before pushing. Use conventional commits (feat:, fix:, chore:, docs:, refactor:, test:). Link issue numbers in commit messages. Write clear commit messages that explain WHY, not just WHAT.