Git Workflow Skill
Purpose
Manage Git workflows including feature branches, commits, pull requests, and GitHub issue tracking with IJACK Roadmap project board integration.
When to Use This Skill
- Creating feature branches
- Committing code changes
- Creating pull requests
- Adding issues to project board
- Git workflow management
- Branch management
- Issue tracking
Critical: IJACK Roadmap Project Board
MANDATORY: All Issues Must Go to Project #12
IJACK Roadmap (Project #12) is the default and only project board for ALL issues:
- Features
- Bugs
- Epics
- User stories
- Service requests
- Ideas
Project URL: https://github.com/orgs/ijack-technologies/projects/12/views/
Add Issue to Project Board
# ALWAYS add every issue to Project #12
gh project item-add 12 --owner ijack-technologies --url <ISSUE_URL>
# Examples
gh project item-add 12 --owner ijack-technologies --url https://github.com/ijack-technologies/rcom/issues/976
gh project item-add 12 --owner ijack-technologies --url https://github.com/ijack-technologies/planning/issues/45
Feature Branch Workflow
Create New Feature Branch
cd /project
bash scripts/new-feature-branch.sh
Interactive prompts:
- Branch type (feature/bugfix/hotfix)
- Brief description
- Automatically creates formatted branch name
Manual Branch Creation
# Create and switch to new branch
git checkout -b feature/user-authentication
# Push to remote with tracking
git push -u origin feature/user-authentication
Branch Naming Convention
feature/<description> # New features
bugfix/<description> # Bug fixes
hotfix/<description> # Urgent production fixes
refactor/<description> # Code refactoring
docs/<description> # Documentation updates
Commit Workflow
Standard Commit Process
# 1. Check status
git status
# 2. Review changes
git diff
# 3. Stage files
git add <files>
# 4. Commit with descriptive message
git commit -m "feat: Add user authentication system
Implements JWT-based authentication with role-based access control.
Includes login, logout, and session management.
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>"
Commit Message Format
<type>: <subject>
<body>
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
Types:
feat: New featurefix: Bug fixrefactor: Code refactoringdocs: Documentationtest: Testschore: Maintenanceperf: Performance improvements
Using Heredoc for Commits
git commit -m "$(cat <<'EOF'
feat: Add user authentication system
Implements JWT-based authentication with role-based access control.
Includes login, logout, and session management.
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
EOF
)"
Pre-Commit Checklist
Code Quality
# Python linting
cd /project
ruff check --fix .
ruff format .
# TypeScript checks
cd /project/flask_app/app/inertia/react
bun run build
bun run lint
Testing
# Run comprehensive tests
cd /project
bash scripts/run_all_tests_comprehensive.sh --coverage
Type Generation
# If FastAPI changes were made
cd /project/flask_app/app/inertia/react
bun run generate-types
Pull Request Creation
Using GitHub CLI
# Create PR with template
gh pr create --title "Add user authentication" --body "$(cat <<'EOF'
## Summary
- Implement JWT-based authentication
- Add role-based access control
- Create login/logout endpoints
## Test Plan
- [ ] Test user login flow
- [ ] Verify token generation
- [ ] Test role permissions
- [ ] Validate session management
🤖 Generated with Claude Code
EOF
)"
PR Workflow
# 1. Ensure on feature branch
git branch --show-current
# 2. Push latest changes
git push
# 3. Create PR
gh pr create --title "Feature: User Authentication" --body "..."
# 4. Get PR URL
gh pr view --web
PR Best Practices
- Clear title: Describe what the PR does
- Summary section: Bullet points of changes
- Test plan: Checklist of testing steps
- Link issues: Reference related issues
- Screenshots: For UI changes
- Claude attribution: Include Claude Code footer
Issue Management
Get Current User and Available Labels
ALWAYS get the current authenticated user dynamically instead of hardcoding usernames:
# Get current GitHub user
CURRENT_USER=$(gh api user --jq '.login')
echo "Current user: $CURRENT_USER"
# List available labels in current repository
gh label list --limit 100
Available Labels in rcom Repository
Common labels you can use (run gh label list --limit 100 to see all):
Issue Types:
🐛 Bug- Something isn't workingenhancement- Enhancement to existing feature📍 Feature- Deliverable functionality (1-4 sprints)💡 Idea- New ideas/suggestions🙋 Service Request- Adhoc work requests🏌️ User Story- Specific user workflow (one sprint)⛳ Epic- High-level objective (multiple releases)
Priority:
🔴 High Priority- Urgent/importantperformance- Performance optimizationsecurity- Security relatedtechnical-debt- Refactoring needs
Tools/Components:
tools:work-orders- Work Order taskstools:inventory- Parts Management taskstools:build-and-price- Warehouse Operationstools:service-dashboard- Service Dashboardtools:sales-dashboard- Sales Dashboardtools:inventory-dashboard- Inventory Dashboardtools:health-dashboard- Health Dashboard
Infrastructure:
infrastructure:database- Database Managementinfrastructure:servers- Security tasksinfrastructure:devops- DevOps tasksdocumentation- Documentation update
Create Issue with Dynamic User
# Get current user first
CURRENT_USER=$(gh api user --jq '.login')
# Create issue with current user as assignee
gh issue create \
--title "Fix login timeout issue" \
--assignee "$CURRENT_USER" \
--label "🐛 Bug,🔴 High Priority" \
--body "Bug description here"
# IMMEDIATELY add to Project #12 (REQUIRED)
ISSUE_URL=$(gh issue list --limit 1 --json url --jq '.[0].url')
gh project item-add 12 --owner ijack-technologies --url "$ISSUE_URL"
Create Issue WITHOUT Assignee or Labels
If you're unsure about the username or labels, it's better to create without them:
# Create issue without assignee or labels
gh issue create \
--title "Issue Title" \
--body "Issue description here"
# IMMEDIATELY add to Project #12 (REQUIRED)
gh project item-add 12 --owner ijack-technologies --url <ISSUE_URL>
You can always add assignees and labels later through the GitHub UI.
Available Issue Templates
Located in .github/ISSUE_TEMPLATE/:
- 🐛 Bug Reports
- 📍 Features
- 💡 Ideas
- 🙋 Service Requests
- 🏌️ User Stories
- ⛳ Epics
Standard Workflow for ALL Issues
# 1. Get current user (optional)
CURRENT_USER=$(gh api user --jq '.login')
# 2. Create issue with appropriate template
gh issue create --title "Issue Title" --body "..."
# 3. IMMEDIATELY add to IJACK Roadmap project (REQUIRED)
gh project item-add 12 --owner ijack-technologies --url <ISSUE_URL>
# 4. Move to appropriate status via project board UI
Common Git Operations
Update from Main
# Update main branch
git checkout main
git pull origin main
# Merge into feature branch
git checkout feature/my-feature
git merge main
# Or rebase
git checkout feature/my-feature
git rebase main
Stash Changes
# Stash current changes
git stash save "WIP: description"
# List stashes
git stash list
# Apply stash
git stash apply
# Pop stash (apply and remove)
git stash pop
Amend Commit
# Amend last commit (ONLY if not pushed!)
git add <files>
git commit --amend
# Amend without changing message
git commit --amend --no-edit
Reset Changes
# Unstage file
git reset HEAD <file>
# Discard changes in working directory
git checkout -- <file>
# Reset to last commit (DANGER!)
git reset --hard HEAD
Branch Management
List Branches
# Local branches
git branch
# Remote branches
git branch -r
# All branches
git branch -a
Delete Branch
# Delete local branch (merged)
git branch -d feature/completed
# Force delete (unmerged)
git branch -D feature/abandoned
# Delete remote branch
git push origin --delete feature/completed
Rename Branch
# Rename current branch
git branch -m new-name
# Rename other branch
git branch -m old-name new-name
Git Configuration
Check Configuration
git config --list
git config user.name
git config user.email
View Remotes
git remote -v
Merge AWS Secrets
Merge Secrets Script
cd /project
bash scripts/merge-aws-secrets.sh
Purpose:
- Fetches secrets from AWS Secrets Manager
- Merges with local environment files
- Updates configuration safely
Git History and Logs
View Commit History
# Recent commits
git log --oneline -10
# Detailed log
git log
# Graph view
git log --graph --oneline --all
View Specific File History
git log --follow <file>
Diff Comparisons
# Unstaged changes
git diff
# Staged changes
git diff --staged
# Compare branches
git diff main..feature/branch
Troubleshooting
Merge Conflicts
# Show conflicts
git status
# Edit conflicting files
# Look for <<<<<<, ======, >>>>>> markers
# Mark as resolved
git add <resolved-files>
# Complete merge
git commit
Undo Last Commit (Not Pushed)
# Keep changes in working directory
git reset --soft HEAD~1
# Discard changes
git reset --hard HEAD~1
Recover Lost Commits
# Show reference log
git reflog
# Checkout lost commit
git checkout <commit-hash>
# Create branch from lost commit
git branch recovery <commit-hash>
Best Practices
- Commit often: Small, focused commits
- Write clear messages: Describe why, not what
- Test before commit: Run tests and linters
- Review changes: Use
git diffbefore committing - Pull before push: Keep branch updated
- Use feature branches: Never commit directly to main
- Add issues to Project #12: ALWAYS add all issues to IJACK Roadmap
- Delete merged branches: Clean up after PR merge
- Protect main branch: Use PRs for all changes
- Document PRs: Include test plans and summaries
Integration
This skill automatically activates when:
- Creating feature branches
- Committing code changes
- Creating pull requests
- Managing git workflows
- Adding issues to project board
- Branch management tasks
- Issue tracking
- Git troubleshooting