Claude Code Plugins

Community-maintained marketplace

Feedback

Git Advanced Workflow Expert

@Krosebrook/source-of-truth-monorepo
1
1

Expert guidance for advanced Git workflows, trunk-based development, monorepo strategies, and Git automation. Use when implementing Git workflows, managing complex repositories, or automating Git operations.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name Git Advanced Workflow Expert
description Expert guidance for advanced Git workflows, trunk-based development, monorepo strategies, and Git automation. Use when implementing Git workflows, managing complex repositories, or automating Git operations.
version 1.0.0
allowed-tools Bash, Read, Write

Git Advanced Workflow Expert

Advanced Git workflows and automation for modern development teams.

Trunk-Based Development

# Main branch protection
git config branch.main.mergeoptions --no-ff

# Short-lived feature branches
git checkout -b feature/user-auth
# Work on feature (max 2 days)
git commit -m "feat: add user authentication"
git push origin feature/user-auth
# Create PR → Review → Merge → Delete branch

# Feature flags for incomplete features
if (featureFlags.isEnabled('new-ui')) {
  renderNewUI();
} else {
  renderOldUI();
}

Conventional Commits

# Format: <type>(<scope>): <subject>

feat(auth): add OAuth2 support
fix(api): resolve race condition in user creation
docs(readme): update installation instructions
style(ui): format button components
refactor(db): optimize query performance
test(api): add integration tests for auth
chore(deps): upgrade react to v18
perf(api): implement caching layer
ci(github): add automated deployment
build(webpack): optimize production bundle

Git Hooks with Husky

// package.json
{
  "scripts": {
    "prepare": "husky install"
  },
  "lint-staged": {
    "*.{ts,tsx}": ["eslint --fix", "prettier --write"],
    "*.{json,md}": ["prettier --write"]
  }
}
# .husky/pre-commit
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

# Run lint-staged
npx lint-staged

# Run tests on staged files
npm test -- --findRelatedTests --passWithNoTests

# Prevent commits to main
branch="$(git rev-parse --abbrev-ref HEAD)"
if [ "$branch" = "main" ]; then
  echo "Direct commits to main are not allowed"
  exit 1
fi
# .husky/commit-msg
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

# Validate conventional commit format
npx commitlint --edit $1

Monorepo Strategies

Git Sparse Checkout

# Clone only specific directories
git clone --filter=blob:none --sparse https://github.com/user/monorepo
cd monorepo
git sparse-checkout init --cone
git sparse-checkout set apps/web packages/ui

# Add more paths
git sparse-checkout add apps/api

Git Worktrees

# Multiple working directories from same repo
git worktree add ../monorepo-feature feature/new-ui
git worktree add ../monorepo-hotfix hotfix/critical-bug
git worktree list

# Clean up
git worktree remove ../monorepo-feature

Advanced Git Operations

Interactive Rebase

# Clean up commits before PR
git rebase -i HEAD~5

# Squash fixup commits
git commit --fixup HEAD~2
git rebase -i --autosquash HEAD~5

# Edit commit history
pick a1b2c3d feat: add feature
fixup d4e5f6g fix typo
reword g7h8i9j Update message
drop j0k1l2m Remove this commit

Cherry-Pick Workflows

# Apply specific commits
git cherry-pick abc123

# Cherry-pick range
git cherry-pick abc123..def456

# Cherry-pick from another branch
git cherry-pick feature-branch~3..feature-branch

Bisect for Bug Hunting

# Find bug-introducing commit
git bisect start
git bisect bad HEAD
git bisect good v1.0.0

# Mark each commit
git bisect good  # or bad

# Automated bisect
git bisect run npm test

Git Automation Scripts

Auto-sync Script

#!/bin/bash
# auto-sync.sh

MAIN_BRANCH="main"
CURRENT_BRANCH=$(git branch --show-current)

# Fetch latest
git fetch origin

# Check if main has updates
if [ "$(git rev-parse $MAIN_BRANCH)" != "$(git rev-parse origin/$MAIN_BRANCH)" ]; then
  echo "Main branch has updates. Rebasing..."

  # Stash changes
  git stash

  # Update main
  git checkout $MAIN_BRANCH
  git pull --rebase origin $MAIN_BRANCH

  # Rebase current branch
  git checkout $CURRENT_BRANCH
  git rebase $MAIN_BRANCH

  # Restore stash
  git stash pop

  echo "✅ Successfully synced with main"
else
  echo "✅ Already up to date"
fi

Release Automation

#!/bin/bash
# release.sh

VERSION=$1
if [ -z "$VERSION" ]; then
  echo "Usage: ./release.sh <version>"
  exit 1
fi

# Ensure clean working directory
if [[ -n $(git status -s) ]]; then
  echo "❌ Working directory not clean"
  exit 1
fi

# Update version
npm version $VERSION --no-git-tag-version

# Build
npm run build

# Commit
git add package.json package-lock.json
git commit -m "chore: release v$VERSION"

# Tag
git tag -a "v$VERSION" -m "Release v$VERSION"

# Push
git push origin main --tags

echo "✅ Released v$VERSION"

GitHub Actions Integration

# .github/workflows/ci.yml
name: CI

on:
  pull_request:
    branches: [main]
  push:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0  # Full history for better diffs

      - name: Get changed files
        id: changed-files
        uses: tj-actions/changed-files@v40
        with:
          files: |
            **/*.ts
            **/*.tsx

      - name: Run tests on changed files
        if: steps.changed-files.outputs.any_changed == 'true'
        run: |
          npm test -- ${{ steps.changed-files.outputs.all_changed_files }}

  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npm ci
      - run: npm run lint

  semantic-release:
    needs: [test, lint]
    if: github.ref == 'refs/heads/main'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: cycjimmy/semantic-release-action@v4
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Git Aliases

# ~/.gitconfig
[alias]
  # Shortcuts
  co = checkout
  ci = commit
  st = status
  br = branch

  # Logging
  lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
  recent = for-each-ref --count=10 --sort=-committerdate refs/heads/ --format='%(refname:short)'

  # Workflow
  undo = reset --soft HEAD~1
  amend = commit --amend --no-edit
  sync = !git fetch origin && git rebase origin/main
  cleanup = !git branch --merged | grep -v '\\*\\|main\\|develop' | xargs -n 1 git branch -d

  # Review
  diff-staged = diff --staged
  contributors = shortlog --summary --numbered --email

Best Practices

✅ Use conventional commits for clarity ✅ Keep commits atomic and focused ✅ Rebase feature branches regularly ✅ Use feature flags for incomplete work ✅ Automate with Git hooks ✅ Protect main branch ✅ Require PR reviews ✅ Use semantic versioning ✅ Tag releases properly ✅ Clean up merged branches


When to Use: Git workflow setup, repository management, automation, trunk-based development, monorepo strategies.