git-workflow · jezweb — Claude Code skill: what it does, how to install
Guides Git work for pull requests, merged-branch cleanup, conflict resolution, and monorepo release tags in Claude Code.
npx skills add jezweb/claude-skills --skill git-workflow -a claude-codeWhat git-workflow does
This skill lays out a pull request workflow: inspect commits, changed files, and uncommitted work first. It then drafts a title, a change summary, and a test plan before pushing the branch and creating a PR with gh.
For cleanup, it switches to main, finds merged local branches, deletes them, and prunes stale remote refs. Conflict handling starts by identifying affected files, then uses merge or rebase according to the commit history and the scale of the divergence.
It also covers package-scoped tags for monorepos, creating .gitignore before the first git add, and auditing a private repository licence setup. The skill is compatible with Claude Code only, so that limitation matters before adding it to another agent setup.
What it helps with
- prepare a pull request from commit history
- remove local branches merged into
main - resolve a conflict against
origin/main - create a package-scoped monorepo tag
- audit licence files in a private repository
Example prompts for the agent
- Prepare a PR for the current branch and check for uncommitted work.
- Clean up local branches that have already merged into
main. - Resolve the conflict with
origin/mainand review the final diff.
How to install git-workflow
1Skills CLI (Vercel)
npx skills add jezweb/claude-skills --skill git-workflow -a claude-code2Manually: put the files in place
~/.claude/skills/git-workflow/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/git-workflow/
1Skills CLI (Vercel)
npx skills add jezweb/claude-skills --skill git-workflow -a codex2Manually: put the files in place
.agents/skills/git-workflow/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add jezweb/claude-skills --skill git-workflow -a cursor2Manually: put the files in place
.cursor/skills/git-workflow/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install jezweb/claude-skills git-workflow2Manually: put the files in place
.github/skills/git-workflow/SKILL.md1Skills CLI (Vercel)
npx skills add jezweb/claude-skills --skill git-workflow -a gemini-cli2Platform CLI
gemini skills install https://github.com/jezweb/claude-skills --path plugins/dev-tools/skills/git-workflowManually: put the files in place
.devin/skills/git-workflow/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add jezweb/claude-skills --skill git-workflow -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about git-workflow
How do I install git-workflow in Claude Code?
Run npx skills add jezweb/claude-skills --skill git-workflow -a claude-code, then run npx skills add jezweb/claude-skills --skill git-workflow -a claude-code again. The skill file is placed at ~/.claude/skills/git-workflow/SKILL.md.
What does git-workflow do?
It guides an agent through PR preparation, merged-branch cleanup, merge-conflict resolution, and package tags in monorepos. It also includes steps for .gitignore setup and private repository licence checks.
Can I use git-workflow with Codex or Cursor?
No. The skill declares compatibility with Claude Code only.
Source text
SKILL.md · MIT
---
name: git-workflow
description: "Guided git workflows: prepare PRs, clean up branches, resolve merge conflicts, handle monorepo tags, squash-and-merge patterns. Use when asked to prepare a PR, clean branches, resolve conflicts, or tag a release."
compatibility: claude-code-only
---
# Git Workflow
Guided workflows for common git operations that benefit from structured steps.
## PR Preparation
When preparing a pull request:
1. **Gather context**
- `git log main..HEAD --oneline` — list all commits on the branch
- `git diff main...HEAD --stat` — see all changed files
- `git status` — check for uncommitted work
2. **Draft PR content**
- Title: under 70 chars, describes the change (not the branch name)
- Body: summarise the "why", list key changes, add test plan
- Use the commit history to write the summary — don't rely on memory
3. **Push and create**
```bash
git push -u origin HEAD
gh pr create --title "..." --body "$(cat <<'EOF'
## Summary
- ...
## Test plan
- [ ] ...
🤖 Generated with [Claude Code](https://claude.com/claude-code)
EOF
)"
```
4. **Verify** — `gh pr view --web` to open in browser
## Branch Cleanup
Clean up merged branches safely:
1. **Switch to main and pull latest**
```bash
git checkout main && git pull
```
2. **List merged branches** (excludes main/master/develop)
```bash
git branch --merged main | grep -vE '^\*|main|master|develop'
```
3. **Delete local merged branches**
```bash
git branch --merged main | grep -vE '^\*|main|master|develop' | xargs -r git branch -d
```
4. **Prune remote tracking refs**
```bash
git fetch --prune
```
5. **List remote branches with no local tracking** (optional)
```bash
git branch -r --merged origin/main | grep -vE 'main|master|develop|HEAD'
```
## Merge Conflict Resolution
When a PR has conflicts:
1. **Assess the conflict scope**
```bash
git fetch origin
git merge origin/main --no-commit --no-ff
git diff --name-only --diff-filter=U # List conflicted files
```
2. **For each conflicted file**, read the file and resolve:
- Keep both changes if they're in different areas
- If architecturally incompatible, prefer the main branch's approach and re-apply the PR's intent on top
3. **If rebase is cleaner** (few commits, no shared history):
```bash
git rebase origin/main
# Resolve conflicts per commit, then:
git rebase --continue
```
4. **If rebase is messy** (many conflicts, architectural divergence):
- Abort: `git rebase --abort` or `git merge --abort`
- Extract useful code: `git show origin/branch:path/to/file > /tmp/extracted.txt`
- Apply changes manually to main
- Close original PR with explanation
5. **Verify** — run tests, check the diff looks right
## Monorepo Release Tags
In monorepos, scope tags to the package:
```bash
# ❌ Ambiguous in monorepos
git tag v2.1.0
# ✅ Scoped to package
git tag contextbricks-v2.1.0
git push origin contextbricks-v2.1.0
```
Pattern: `{package-name}-v{semver}`
## .gitignore-First Init
When creating a new repo, always create `.gitignore` BEFORE the first `git add`:
```bash
cat > .gitignore << 'EOF'
node_modules/
.wrangler/
dist/
.dev.vars
*.log
.DS_Store
.env
.env.local
EOF
git init && git add . && git commit -m "Initial commit"
```
**If node_modules is already tracked:**
```bash
git rm -r --cached node_modules/
git commit -m "Remove node_modules from tracking"
```
## Private Repo License Audit
Before publishing or sharing a private repo:
```bash
gh repo view --json visibility -q '.visibility'
```
If `PRIVATE`, ensure:
- `LICENSE` contains proprietary notice (not MIT/Apache)
- `package.json` has `"license": "UNLICENSED"` and `"private": true`
- No `CONTRIBUTING.md` or "contributions welcome" in README
© jezweb · MIT · jezweb/claude-skills
Similar skills
All skills for Git and GitHub →git-workflow by other authors comes first.