update — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited update (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Update your current branch with changes from the upstream branch, intelligently resolving conflicts when they occur.
Announce: "Using git:update to sync your branch with upstream..."
Philosophy:
git rev-parse --abbrev-ref @{upstream} 2>/dev/nullIf this succeeds, use the result (e.g., origin/main).
If no tracking branch:
gh pr view --json baseRefName -q '.baseRefName' 2>/dev/nullIf this succeeds, use origin/{result}.
If both fail, use AskUserQuestion:
I couldn't detect an upstream branch for this branch.
Which branch should I merge from?
(A) main
(B) master
(C) Other - I'll specifygit fetch origingit rev-list --count HEAD..{upstream}If count is 0, report "Already up to date with {upstream}" and stop.
git merge {upstream} --no-edit| Exit Code | Meaning | Action |
|---|---|---|
| 0 | Clean merge | Push and report success |
| 1 | Conflicts | Proceed to conflict resolution |
On clean merge:
git pushReport:
## Update Complete
Merged `{upstream}` into `{current-branch}`
{N} commits pulled in
Pushed to origingit diff --name-only --diff-filter=URead the conflict:
cat {file} # Shows conflict markersUnderstand "ours" (your branch):
git log --oneline -5 HEAD -- {file}
git show HEAD:{file} # Your versionUnderstand "theirs" (upstream):
git log --oneline -5 {upstream} -- {file}
git show {upstream}:{file} # Their versionGet commit messages for context:
# What your commits were doing
git log --format="%s%n%b" HEAD...$(git merge-base HEAD {upstream}) -- {file}
# What upstream commits were doing
git log --format="%s%n%b" {upstream}...$(git merge-base HEAD {upstream}) -- {file}For each conflict, determine the type:
| Type | Description | Resolution Strategy |
|---|---|---|
| Independent | Changes to different parts of file | Keep both changes |
| Overlapping | Same area, different purposes | Blend changes thoughtfully |
| Contradictory | Mutually exclusive changes | Present options to user |
Analysis approach:
For independent changes:
For overlapping changes:
For contradictory changes:
After resolving, show summary:
## Conflict Resolution Summary
Merged `main` into `feature/my-branch`
### {filename}
**Your changes:** {1-2 sentence summary of what your commits did}
**Upstream changes:** {1-2 sentence summary of what upstream commits did}
**Resolution:** {1-2 sentence explanation of how resolved}
{Show key parts of the resolution}
---
[Repeat for each file]
---
**Verification:**
- [ ] No conflict markers remain
- [ ] File parses correctly (if applicable)
Does this resolution look correct?
(A) Yes, commit and push
(B) Let me review/adjust manually
(C) Show me more context on a specific fileUse AskUserQuestion with these options.
grep -rn "^<<<<<<< \|^=======$\|^>>>>>>> " {resolved_files}If any found, resolution is incomplete - fix before proceeding.
| File Type | Check |
|---|---|
.json | python -m json.tool {file} > /dev/null |
.yaml/.yml | python -c "import yaml; yaml.safe_load(open('{file}'))" |
.ts/.tsx | npx tsc --noEmit {file} (if tsconfig exists) |
.py | python -m py_compile {file} |
git add {resolved_files}
git commit -m "Merge {upstream} into {branch}
Resolved conflicts in:
$(for f in {resolved_files}; do echo "- $f"; done)"
git push## Update Complete
Merged `{upstream}` into `{branch}`
Resolved {N} conflict(s):
- {file1}
- {file2}
Pushed to origin. PR should now be mergeable.| Situation | Handling |
|---|---|
| Binary file conflicts | Flag for manual resolution: "Binary file {file} has conflicts - please resolve manually" |
| Submodule conflicts | Flag with guidance: "Submodule {name} has conflicts. Usually: accept upstream version or update to specific commit" |
| Someone else's branch | Check with gh pr view --json author -q '.author.login'. If not current user, warn: "This is @{author}'s branch. They should be aware of changes. Continue?" |
| Too complex to resolve | Present what was understood, mark specific hunks as needing manual attention |
| Merge already in progress | Detect with git status showing "You have unmerged paths". Offer to continue or abort. |
| Command | Purpose |
|---|---|
git rev-parse --abbrev-ref @{upstream} | Get tracking branch |
git merge --abort | Cancel in-progress merge |
git diff --name-only --diff-filter=U | List conflicted files |
git checkout --ours {file} | Take your version entirely |
git checkout --theirs {file} | Take upstream version entirely |
git show HEAD:{file} | Your version of file |
git show MERGE_HEAD:{file} | Upstream version of file |
git:commit - Commit practices (used after resolution)git:pull-request - Creating/updating PRsgit:triage - Overview of work state~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.