skills/git-workflows/skills/merge-main/SKILL.md
Use when merging the main branch into the current feature branch to pick up upstream changes.
npx skillsauth add dtsong/my-claude-setup git-merge-mainInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
.., shell metacharacters, or null bytes.--no-commit accepted. Reject arbitrary strings.Merge the latest main branch into your current feature branch to get updates.
/git-merge-main # Merge main into current branch
/git-merge-main develop # Merge develop instead of main
/git-merge-main --no-commit # Merge but don't commit (for review)
# Get current branch
CURRENT=$(git branch --show-current)
# Cannot merge main into main
if [ "$CURRENT" = "main" ] || [ "$CURRENT" = "master" ]; then
echo "Already on main branch. Nothing to merge."
echo "Did you mean /git-pull?"
exit 1
fi
# Check for uncommitted changes
if ! git diff --quiet || ! git diff --cached --quiet; then
echo "You have uncommitted changes."
echo "Options:"
echo " /git-stash - Stash changes first"
echo " /commit - Commit changes first"
exit 1
fi
# Fetch latest main from remote
git fetch origin main:main 2>/dev/null || git fetch origin main
# Show what will be merged
echo "Commits from main to be merged:"
git log --oneline HEAD..origin/main | head -20
# Preview merge (without committing)
if ! git merge --no-commit --no-ff origin/main 2>/dev/null; then
echo "Merge will have conflicts."
git merge --abort
# Show conflicting files
git diff --name-only --diff-filter=U
fi
# Perform the merge
git merge origin/main --no-ff -m "Merge main into $CURRENT"
# Or without commit for review
git merge origin/main --no-commit --no-ff
Show merge result and any follow-up needed.
Merging main into feat/dark-mode...
Merged 5 commits from main:
abc1234 Fix security vulnerability
def5678 Update dependencies
ghi9012 Improve performance
jkl3456 Add new API endpoint
mno7890 Documentation updates
Files updated:
package.json
src/api/endpoints.ts
src/utils/security.ts
README.md
Merge complete! Your branch now includes all changes from main.
Next steps:
- Test your feature still works
- /git-push to update remote branch
Branch feat/dark-mode is already up to date with main.
No merge needed.
Merge conflicts detected!
Conflicting files:
- src/components/Header.tsx (both modified)
- src/styles/theme.css (both modified)
To resolve:
/git-conflicts # Get help resolving
After resolving:
git add <resolved-files>
git commit
To abort:
/git-abort
When using --no-commit:
Merge staged but not committed.
Changes from main:
M src/api/endpoints.ts
M package.json
A src/utils/newHelper.ts
Review the changes, then:
git commit -m "Merge main into feat/dark-mode"
Or abort:
git merge --abort
/git-rebase instead| Merge | Rebase | |-------|--------| | Preserves complete history | Creates linear history | | Shows when integration happened | Looks like sequential development | | Better for shared branches | Better for personal branches | | Non-destructive | Rewrites commit history |
/git-sync first to see what's on main/git-rebase for cleaner history (alternative)/git-conflicts if merge has conflicts/git-abort to cancel a failed mergetesting
Use to convert a Word .docx file to PDF and/or verify its page count. Triggers on: converting docx to pdf, rendering a document, checking how many pages a docx produces, or asserting a page-count constraint (e.g. a resume must stay 2 pages). Wraps LibreOffice headless conversion.
development
Security audit checklist for web applications. Use when reviewing, auditing, or hardening a web app's security posture. Covers rate limiting, auth headers, IP blocking, CORS, security middleware, input validation, file upload limits, ORM usage, and password hashing. Triggers on requests like "review security", "harden this app", "security audit", "check for vulnerabilities", or when building/reviewing API endpoints.
development
Interactive wizard to craft effective prompts using Claude Code best practices
tools
Use when batch labeling, prioritizing, and assigning GitHub issues during triage sessions.