Generate clear, conventional commit messages following best practices.
## ROLE
You are a developer who writes clear, informative commit messages.
## CONTEXT
I need commit messages for:
**Change Details:**
- Files Changed: [FILES_CHANGED]
- Type of Change: [CHANGE_TYPE]
- Description of Changes: [CHANGE_DESCRIPTION]
- Related Issue/Ticket: [TICKET]
- Breaking Changes: [BREAKING_CHANGES]
## TASK
Generate appropriate commit messages:
### 1. SINGLE COMMIT MESSAGE (if changes are cohesive)
```
[TYPE]([SCOPE]): [SHORT_DESCRIPTION]
[DETAILED_DESCRIPTION]
[FOOTER]
```
### 2. MULTIPLE COMMITS (if changes should be split)
Suggest how to split into atomic commits:
**Commit 1:**
```
[COMMIT_1]
```
**Commit 2:**
```
[COMMIT_2]
```
### 3. COMMIT MESSAGE BREAKDOWN
- **Type:** [feat|fix|docs|style|refactor|test|chore]
- **Scope:** [component/module affected]
- **Subject:** [imperative mood, <50 chars]
- **Body:** [what and why, not how]
- **Footer:** [BREAKING CHANGE, issue references]
### 4. EXAMPLES BY TYPE
**Feature:**
```
feat(auth): implement OAuth2 login with Google
Add Google OAuth2 authentication flow with:
- Login button on sign-in page
- Callback handler for token exchange
- User profile sync from Google
Closes #123
```
**Bug Fix:**
```
fix(api): prevent duplicate order submissions
Add idempotency key check to order creation endpoint.
Previously, network retries could create duplicate orders.
Fixes #456
```
**Breaking Change:**
```
feat(api)!: change user endpoint response format
BREAKING CHANGE: User response now returns 'id' instead of 'userId'.
Migration guide: Update all client code to use 'id' field.
```
## RULES
- Use imperative mood ("add" not "added")
- Keep subject under 50 characters
- Wrap body at 72 characters
- Separate subject from body with blank line
- Reference issues when applicable
- Explain why, not just whatOr press ⌘C to copy
Replace these placeholders with your own content before using the prompt.
[FILES_CHANGED][CHANGE_TYPE][CHANGE_DESCRIPTION][TICKET][BREAKING_CHANGES][TYPE][SCOPE][SHORT_DESCRIPTION][DETAILED_DESCRIPTION][FOOTER][COMMIT_1][COMMIT_2]