Initial commit
This commit is contained in:
295
commands/ctx-git-commit.md
Normal file
295
commands/ctx-git-commit.md
Normal file
@@ -0,0 +1,295 @@
|
||||
---
|
||||
name: ctx:git-commit
|
||||
description: Deterministic commit and push workflow using scripts (DRY compliant)
|
||||
keywords:
|
||||
- commit
|
||||
- push
|
||||
- git commit
|
||||
- commit and push
|
||||
- save changes
|
||||
executable: true
|
||||
---
|
||||
|
||||
# Git Commit - Deterministic Commit and Push Workflow
|
||||
|
||||
You are executing a deterministic git commit and push workflow using the `commit_and_push.sh` script.
|
||||
|
||||
**Cost:** ~$0.002 (545 tokens) vs ~$0.037-0.086 (8K-25K tokens) for multi-tool approach
|
||||
**Savings:** 93-97% token reduction
|
||||
|
||||
---
|
||||
|
||||
## Workflow
|
||||
|
||||
**IMPORTANT:** Use the `./scripts/commit_and_push.sh` script. DO NOT use manual git commands.
|
||||
|
||||
### Step 1: Determine What to Commit
|
||||
|
||||
Check git status to understand what files changed:
|
||||
|
||||
```bash
|
||||
git status --short
|
||||
```
|
||||
|
||||
**Analyze the output:**
|
||||
- `M` = Modified files
|
||||
- `A` = Added files
|
||||
- `D` = Deleted files
|
||||
- `??` = Untracked files
|
||||
|
||||
### Step 2: Stage and Commit Using Script
|
||||
|
||||
**Use the deterministic script:**
|
||||
|
||||
```bash
|
||||
./scripts/commit_and_push.sh "<files>" "<message>" "<branch>" "<remote>"
|
||||
```
|
||||
|
||||
**Parameters:**
|
||||
- `<files>` - Files to commit (use `.` for all changes, or specific files)
|
||||
- `<message>` - Commit message (follows conventional commits format)
|
||||
- `<branch>` - Branch name (default: `master`, optional)
|
||||
- `<remote>` - Remote name (auto-detected if not specified, optional)
|
||||
|
||||
**Example 1: Commit all changes**
|
||||
```bash
|
||||
./scripts/commit_and_push.sh "." "feat: add new feature
|
||||
|
||||
Detailed description of changes.
|
||||
|
||||
🤖 Generated with [Claude Code](https://claude.com/claude-code)
|
||||
|
||||
Co-Authored-By: Claude <noreply@anthropic.com>"
|
||||
```
|
||||
|
||||
**Example 2: Commit specific files**
|
||||
```bash
|
||||
./scripts/commit_and_push.sh "src/feature.ts tests/feature.test.ts" "feat: implement feature X"
|
||||
```
|
||||
|
||||
**Example 3: Specify branch and remote**
|
||||
```bash
|
||||
./scripts/commit_and_push.sh "." "fix: resolve bug" "develop" "origin"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Commit Message Format
|
||||
|
||||
Follow conventional commits:
|
||||
|
||||
```
|
||||
<type>: <description>
|
||||
|
||||
[optional body]
|
||||
|
||||
[optional footer]
|
||||
|
||||
🤖 Generated with [Claude Code](https://claude.com/claude-code)
|
||||
|
||||
Co-Authored-By: Claude <noreply@anthropic.com>
|
||||
```
|
||||
|
||||
**Types:**
|
||||
- `feat:` - New feature
|
||||
- `fix:` - Bug fix
|
||||
- `docs:` - Documentation changes
|
||||
- `refactor:` - Code refactoring
|
||||
- `test:` - Test changes
|
||||
- `chore:` - Build/tooling changes
|
||||
|
||||
**Examples:**
|
||||
|
||||
```bash
|
||||
# Feature
|
||||
"feat: add user authentication
|
||||
|
||||
Implemented JWT-based authentication with refresh tokens.
|
||||
|
||||
🤖 Generated with [Claude Code](https://claude.com/claude-code)
|
||||
|
||||
Co-Authored-By: Claude <noreply@anthropic.com>"
|
||||
|
||||
# Bug fix
|
||||
"fix: resolve memory leak in WebSocket handler
|
||||
|
||||
Fixed issue where connections were not properly cleaned up.
|
||||
|
||||
🤖 Generated with [Claude Code](https://claude.com/claude-code)
|
||||
|
||||
Co-Authored-By: Claude <noreply@anthropic.com>"
|
||||
|
||||
# Documentation
|
||||
"docs: update API documentation
|
||||
|
||||
Added examples for new endpoints.
|
||||
|
||||
🤖 Generated with [Claude Code](https://claude.com/claude-code)
|
||||
|
||||
Co-Authored-By: Claude <noreply@anthropic.com>"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## What the Script Does
|
||||
|
||||
The `commit_and_push.sh` script handles:
|
||||
|
||||
1. ✅ `git add <files>` - Stage specified files
|
||||
2. ✅ Check for changes - Skip if nothing to commit
|
||||
3. ✅ `git commit -m "<message>"` - Commit with message
|
||||
4. ✅ Auto-detect remote - Use first remote if not specified
|
||||
5. ✅ `git push <remote> <branch>` - Push to remote
|
||||
6. ✅ Error handling - Clear error messages
|
||||
|
||||
**Script output:**
|
||||
```
|
||||
✅ Committed and pushed to origin/master
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Error Handling
|
||||
|
||||
**If script fails:**
|
||||
|
||||
1. **No changes to commit:**
|
||||
```
|
||||
ℹ️ No changes to commit
|
||||
```
|
||||
- Expected when files are already committed
|
||||
|
||||
2. **No git remotes:**
|
||||
```
|
||||
Error: No git remotes configured
|
||||
```
|
||||
- Add remote: `git remote add origin <url>`
|
||||
|
||||
3. **Permission denied:**
|
||||
```
|
||||
Error: Permission denied
|
||||
```
|
||||
- Check SSH keys or credentials
|
||||
|
||||
4. **Merge conflicts:**
|
||||
```
|
||||
Error: Merge conflict detected
|
||||
```
|
||||
- Pull latest changes first: `git pull <remote> <branch>`
|
||||
- Resolve conflicts manually
|
||||
|
||||
---
|
||||
|
||||
## Why Use the Script?
|
||||
|
||||
### Token Efficiency
|
||||
|
||||
**Multi-tool approach (what NOT to do):**
|
||||
```
|
||||
Tool 1: git status
|
||||
Tool 2: git add .
|
||||
Tool 3: git status --short
|
||||
Tool 4: git diff --cached
|
||||
Tool 5: git commit -m "message"
|
||||
Tool 6: git log -1
|
||||
Tool 7: git push origin master
|
||||
Tool 8: git status
|
||||
|
||||
Cost: ~8K-25K tokens ($0.037-0.086)
|
||||
```
|
||||
|
||||
**Script approach (correct):**
|
||||
```
|
||||
Tool 1: ./scripts/commit_and_push.sh "." "message"
|
||||
|
||||
Cost: ~545 tokens ($0.002)
|
||||
Savings: 93-97% reduction
|
||||
```
|
||||
|
||||
### Reliability
|
||||
|
||||
- ✅ **Deterministic** - Same input → same output
|
||||
- ✅ **Tested** - Script handles edge cases
|
||||
- ✅ **Fast** - Single command, 100-500ms execution
|
||||
- ✅ **Error recovery** - Clear error messages
|
||||
|
||||
### Compliance
|
||||
|
||||
- ✅ Follows UNIFIED_DRY_STRATEGY.md
|
||||
- ✅ Uses scripts for workflows (not multi-tool)
|
||||
- ✅ Automatic remote detection
|
||||
- ✅ Proper error handling
|
||||
|
||||
---
|
||||
|
||||
## Integration with Contextune
|
||||
|
||||
This command is available via:
|
||||
|
||||
1. **Explicit command:** `/ctx:git-commit`
|
||||
2. **Natural language:** Contextune detects and routes automatically:
|
||||
- "commit and push"
|
||||
- "save changes"
|
||||
- "commit these files"
|
||||
|
||||
3. **PreToolUse hook:** Intercepts manual git commands and suggests script
|
||||
|
||||
---
|
||||
|
||||
## Related Commands
|
||||
|
||||
- `/ctx:git-pr` - Create pull request using script
|
||||
- `/ctx:git-merge` - Merge branches using script
|
||||
- `/ctx:cleanup` - Cleanup worktrees and branches
|
||||
|
||||
---
|
||||
|
||||
## Advanced Usage
|
||||
|
||||
### Multiple File Patterns
|
||||
|
||||
```bash
|
||||
# Commit specific directories
|
||||
./scripts/commit_and_push.sh "src/ tests/" "feat: implement feature"
|
||||
|
||||
# Commit specific file types
|
||||
./scripts/commit_and_push.sh "*.ts *.tsx" "refactor: update types"
|
||||
```
|
||||
|
||||
### Multiline Commit Messages
|
||||
|
||||
```bash
|
||||
./scripts/commit_and_push.sh "." "feat: add authentication
|
||||
|
||||
Implemented features:
|
||||
- JWT token generation
|
||||
- Refresh token rotation
|
||||
- User session management
|
||||
|
||||
Breaking changes:
|
||||
- Auth API endpoints changed from /api/v1 to /api/v2
|
||||
|
||||
🤖 Generated with [Claude Code](https://claude.com/claude-code)
|
||||
|
||||
Co-Authored-By: Claude <noreply@anthropic.com>"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Notes
|
||||
|
||||
- Always use the script for commit + push workflows
|
||||
- Single git commands (like `git status`) are OK without script
|
||||
- Script auto-detects remote (no need to specify if only one remote)
|
||||
- Follow conventional commit format for consistency
|
||||
- Include co-authorship footer for Claude-assisted commits
|
||||
|
||||
---
|
||||
|
||||
## See Also
|
||||
|
||||
- `UNIFIED_DRY_STRATEGY.md` - DRY strategy for git operations
|
||||
- `scripts/commit_and_push.sh` - Script source code
|
||||
- `scripts/smart_execute.sh` - Error recovery wrapper
|
||||
- `scripts/create_pr.sh` - Create pull request script
|
||||
- `scripts/merge_and_cleanup.sh` - Merge and cleanup script
|
||||
Reference in New Issue
Block a user