Updates the local branch by pulling latest changes from origin/main. Includes conflict resolution guidance and automated post-merge checks.
Install
mkdir -p .claude/skills/pull-karanhudia && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/17470" && unzip -o skill.zip -d .claude/skills/pull-karanhudia && rm skill.zipInstalls to .claude/skills/pull-karanhudia
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Pull latest origin/main into the current local branch and resolve mergeKey capabilities
- →Verify git status is clean or commit/stash changes.
- →Ensure `rerere` is enabled locally.
- →Fetch latest refs from origin.
- →Sync the remote feature branch first with `ff-only`.
- →Merge `origin/main` into the current local branch.
- →Resolve merge conflicts using `zdiff3` style and project-specific checks.
How it works
This skill pulls the latest `origin/main` into the current local branch, resolving merge conflicts using `zdiff3` style and verifying changes with project-specific checks.
Inputs & outputs
When to use pull
- →Syncing a feature branch with main
- →Resolving complex merge conflicts
- →Verifying code health after a branch merge
About this skill
Pull
Workflow
- Verify git status is clean or commit/stash changes before merging.
- Ensure rerere is enabled locally:
git config rerere.enabled truegit config rerere.autoupdate true
- Confirm remotes and branches:
- Ensure the
originremote exists. - Ensure the current branch is the one to receive the merge.
- Ensure the
- Fetch latest refs:
git fetch origin
- Sync the remote feature branch first:
git pull --ff-only origin $(git branch --show-current)- This pulls branch updates made remotely (for example, a GitHub auto-commit)
before merging
origin/main.
- Merge in order:
- Prefer
git -c merge.conflictstyle=zdiff3 merge origin/mainfor clearer conflict context.
- Prefer
- If conflicts appear, resolve them (see conflict guidance below), then:
git add <files>git commit(orgit merge --continueif the merge is paused)
- Verify with Borg UI project checks:
- Always run
git diff --check. - For backend changes, run
ruff check app tests,ruff format --check app tests, and relevantpytesttests. - For frontend changes, run
cd frontend && npm run check:locales && npm run typecheck && npm run lint && npm run build.
- Always run
- Summarize the merge:
- Call out the most challenging conflicts/files and how they were resolved.
- Note any assumptions or follow-ups.
Conflict Resolution Guidance (Best Practices)
- Inspect context before editing:
- Use
git statusto list conflicted files. - Use
git difforgit diff --mergeto see conflict hunks. - Use
git diff :1:path/to/file :2:path/to/fileandgit diff :1:path/to/file :3:path/to/fileto compare base vs ours/theirs for a file-level view of intent. - With
merge.conflictstyle=zdiff3, conflict markers include:<<<<<<<ours,|||||||base,=======split,>>>>>>>theirs.- Matching lines near the start/end are trimmed out of the conflict region, so focus on the differing core.
- Summarize the intent of both changes, decide the semantically correct
outcome, then edit:
- State what each side is trying to achieve (bug fix, refactor, rename, behavior change).
- Identify the shared goal, if any, and whether one side supersedes the other.
- Decide the final behavior first; only then craft the code to match that decision.
- Prefer preserving invariants, API contracts, and user-visible behavior unless the conflict clearly indicates a deliberate change.
- Open files and understand intent on both sides before choosing a resolution.
- Use
- Prefer minimal, intention-preserving edits:
- Keep behavior consistent with the branch’s purpose.
- Avoid accidental deletions or silent behavior changes.
- Resolve one file at a time and rerun tests after each logical batch.
- Use
ours/theirsonly when you are certain one side should win entirely. - For complex conflicts, search for related files or definitions to align with the rest of the codebase.
- For generated files, resolve non-generated conflicts first, then regenerate:
- Prefer resolving source files and handwritten logic before touching generated artifacts.
- Run the CLI/tooling command that produced the generated file to recreate it cleanly, then stage the regenerated output.
- For import conflicts where intent is unclear, accept both sides first:
- Keep all candidate imports temporarily, finish the merge, then run lint/type checks to remove unused or incorrect imports safely.
- After resolving, ensure no conflict markers remain:
git diff --check
- When unsure, note assumptions and ask for confirmation before finalizing the merge.
When To Ask The User (Keep To A Minimum)
Do not ask for input unless there is no safe, reversible alternative. Prefer making a best-effort decision, documenting the rationale, and proceeding.
Ask the user only when:
- The correct resolution depends on product intent or behavior not inferable from code, tests, or nearby documentation.
- The conflict crosses a user-visible contract, API surface, or migration where choosing incorrectly could break external consumers.
- A conflict requires selecting between two mutually exclusive designs with equivalent technical merit and no clear local signal.
- The merge introduces data loss, schema changes, or irreversible side effects without an obvious safe default.
- The branch is not the intended target, or the remote/branch names do not exist and cannot be determined locally.
Otherwise, proceed with the merge, explain the decision briefly in notes, and leave a clear, reviewable commit history.
When not to use it
- →Do not ask for input unless there is no safe, reversible alternative.
- →Do not use `ours/theirs` unless certain one side should win entirely.
- →Do not proceed if the correct resolution depends on product intent not inferable from code.
Limitations
- →The skill will ask the user for input if the correct resolution depends on product intent or behavior not inferable from code.
- →It will ask if the conflict crosses a user-visible contract or API surface.
- →It will ask if a conflict requires selecting between two mutually exclusive designs with equivalent technical merit.
How it compares
This skill standardizes the merge process by enforcing `rerere` for conflict resolution, using `zdiff3` for clearer context, and integrating project-specific validation, which is more reliable than a manual `git pull`.
Compared to similar skills
pull side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| pull (this skill) | 0 | 2mo | No flags | Intermediate |
| dependency-upgrade | 26 | 4mo | Review | Intermediate |
| testing-workflow | 16 | 9mo | Review | Intermediate |
| finishing-a-development-branch | 4 | 2mo | Review | Beginner |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by karanhudia
View all by karanhudia →You might also like
dependency-upgrade
wshobson
Manage major dependency version upgrades with compatibility analysis, staged rollout, and comprehensive testing. Use when upgrading framework versions, updating major dependencies, or managing breaking changes in libraries.
testing-workflow
amo-tech-ai
Comprehensive testing workflow for E2E, integration, and unit tests. Use when testing applications layer-by-layer, validating user journeys, or running test suites.
finishing-a-development-branch
obra
Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for merge, PR, or cleanup
dev
atopile
LLM-focused workflow for working in this repo: compile Zig, run the orchestrated test runner, consume test-report.json/html artifacts, and discover/debug ConfigFlags.
positron-pr-helper
posit-dev
Generates well-structured PR bodies with dynamically fetched e2e test tags
test-script
abhinav
Use when writing or modifying .txt test scripts in testdata/script/ for git-spice - covers txtar format, end-to-end testing, ShamHub forge simulation, interactive prompts, and golden file comparisons for branch operations and stack workflows.