Dx Devops Conflict Resolve

by forcedotcome5164d94d751No license1K starsListed Oct 8, 2026Updated Oct 8, 2026Repository updated yesterday

Use this skill to diagnose and resolve what blocks a DevOps Center promotion of a work item's feature branch: Git merge conflicts and deployment failures. DevOps Center is Git-backed, so overlapping metadata changes surface as merge conflicts against the target stage branch, resolved with git (detect, resolve markers, commit, push). Deploy failures often cite a missing dependency a full promotion can fix when the component already exists on the branch. TRIGGER when the user wants to check a work item for conflicts before promoting, resolve merge conflicts or leftover conflict markers in metadata files (.xml, .object-meta.xml, .cls), reconcile a feature branch with its target stage branch, or diagnose why a DevOps Center promotion or deployment failed and whether a full promotion or a missing-dependency fix will resolve it. DO NOT TRIGGER for running the promotion itself (use dx-devops-promote), creating or updating work items (use dx-devops-work-item-manage), or deploying metadata directly to an org.

Includes scriptsDevOps & Cloud
AI-generated overview

Diagnoses and resolves Git merge conflicts and deployment failures that block DevOps Center promotions of a work item's feature branch.

What it does
Detects merge conflicts between a work item's feature branch and its target stage branch non-destructively, then guides resolution of conflicted metadata files, commits the merge, and pushes the feature branch. It also diagnoses promotion deploy failures, classifying them as merge conflicts or missing dependencies and determining whether a full promotion can fix them. It produces a conflict-free pushed branch or a deploy-failure diagnosis with a recommended next step.
When to use it
Use it to check a work item for conflicts before promoting, to resolve merge conflicts or leftover conflict markers in metadata files, to reconcile a feature branch with its target stage branch, or to diagnose why a DevOps Center promotion or deployment failed. It is not for running the promotion itself, managing work items, or deploying metadata directly to an org.
Requirements
Requires a local clone of the DevOps Center connected Git repository with a clean working tree, plus git, jq, and the Salesforce CLI (sf). Org authentication and DevOps Center permissions are needed for work-item-to-branch lookups. Ships two executable scripts: detect-conflicts.sh and diagnose-deploy-failure.sh.

DevOps Center Conflict & Deploy-Failure Resolution

Diagnoses and resolves what blocks a DevOps Center promotion of a work item's feature branch. DevOps Center is Git-backed: each work item is a feature branch and each pipeline stage has a target branch. A promotion can fail two ways — a Git merge conflict (two work items changed the same metadata) or a deployment failure (the deploy itself errors, often on a missing dependency). There is no sf devops conflict CLI command; both cases are diagnosed and resolved with standard git against the connected repository. This skill runs in a local clone of that repo.

Scope

  • In scope: (a) Detect merge conflicts between a work item's feature branch and the target stage branch (non-destructively), resolve conflicted files (choose a side or manually merge conflict markers), commit, and push the feature branch DevOps Center tracks; (b) Diagnose a promotion deploy failure — classify it as a merge conflict vs. a deploy error, parse a missing dependency, and determine whether a full promotion can fix it (the component exists on the feature branch) or the component must be added first
  • Out of scope: Running the promotion, full promotion, or combine (use dx-devops-promote), creating/updating work items or their status (use dx-devops-work-item-manage), deploying metadata directly to an org, pipeline or project setup (separate skills)

Required Inputs

Gather or infer before proceeding:

  • Local clone of the DevOps Center connected Git repository (the agent runs git commands here). Confirm the working tree is clean before starting.
  • Feature branch name — the branch backing the work item. If the user gives a work item ID/subject instead, resolve it to its branch (see the Reference File Index for the sf devops work-item lookup).
  • Target stage branch name — the branch of the pipeline stage the work item promotes into (e.g. the integration/UAT branch).
  • Remote name — defaults to origin.
  • Deploy error text (deploy-failure track only) — the promotion's error output/summary. Needed to classify the failure and parse a missing dependency. Capture it to a file or pipe it into the diagnosis script.

Defaults unless specified:

  • Remote: origin
  • Merge direction: merge the target stage branch into the feature branch (reconcile the work item with where it is going)

If the user names both branches ("resolve conflicts on feature/WI-101 against uat"), proceed. If they give a work item, resolve its branch first.


Workflow

DevOps Center promotion blockers are Git-level. Detection and diagnosis are deterministic (scripts); resolving each conflicted file requires judgment (prose). Never resolve without first detecting on a clean tree.

Route first. Pick the track from the user's situation:

  • Merge conflict track — the user wants a pre-promotion conflict check, or a promotion failed and the cause is (or is suspected to be) a merge conflict → Phases 1–4 below.
  • Deploy-failure track — a promotion's deploy failed with an error message and the user wants to know why and how to fix it → Phase D below. If Phase D classifies the failure as a merge conflict, fall through to the merge-conflict track.

Phase 1 — Authenticate and orient

  1. Confirm the local repo and clean tree. Run in the repo clone:
    bash
    git rev-parse --is-inside-work-tree && git status --porcelain
    • If git status --porcelain prints anything, the tree is dirty — instruct the user to commit or stash first. A trial merge on a dirty tree is unsafe.
  2. Resolve a work item to its branch (only if the user gave a work item, not a branch). Verify org auth with sf org display --json; if it fails, tell the user to run sf org login web --set-default --alias <alias>. Then look up the branch — see references/git-conflict-resolution.md.

Phase 2 — Detect (non-destructive)

  1. Run the detection script. It fetches, trial-merges the target branch into the feature branch without committing, lists conflicted files, and aborts the trial so the tree is left untouched:
    bash
    scripts/detect-conflicts.sh <feature-branch> <target-branch> [remote]
    • Exit 0 = clean merge (no conflicts) → report "safe to promote" and STOP.
    • Exit 2 = conflicts found → the script prints the conflicting file list; proceed to Phase 3.
    • Exit 1 = error (dirty tree, unknown branch, fetch failure) → report the error and STOP; do not treat an error as "no conflicts".

Phase 3 — Resolve

  1. Start the real merge to bring conflict markers into the working tree:
    bash
    git checkout <feature-branch>git merge --no-ff <remote>/<target-branch>
    List the conflicted files deterministically:
    bash
    git diff --name-only --diff-filter=U
  2. Resolve each conflicted file — this is the judgment step:
    • When one side is unambiguously correct, take it: git checkout --ours -- <file> (keep the feature branch's version) or git checkout --theirs -- <file> (take the target branch's version). For DevOps Center, "ours" is the feature branch, "theirs" is the target stage branch.
    • When both sides contain needed changes (divergent edits to the same component), open the file and manually merge — reconcile the <<<<<<< / ======= / >>>>>>> regions into a single correct version, preserving both intents. Be especially careful with XML metadata (.xml, .object-meta.xml, .field-meta.xml): keep the file well-formed and do not duplicate elements.
    • Stage each resolved file: git add <file>.
  3. Confirm no markers remain before committing:
    bash
    git diff --checkgit diff --name-only --diff-filter=U
    • git diff --check must report nothing, and the unmerged-file list must be empty. If either shows leftovers, keep resolving — do not commit.

Phase 4 — Finalize and report

  1. Commit and push the resolution to the tracked feature branch so DevOps Center picks it up:
    bash
    git commit --no-edit          # completes the merge with the default merge messagegit push <remote> <feature-branch>
  2. Report the outcome:
    • No conflicts: "No merge conflicts between <feature> and <target>. Safe to promote."
    • Resolved: list the files resolved and how (took a side vs. manual merge), and state that the feature branch was pushed. Then hand off: "Re-validate and promote via dx-devops-promote."

Phase D — Diagnose a deployment failure

Use this track when a promotion's deploy failed with an error and the user wants to know why and how to fix it. Diagnosis is deterministic (a script); do not eyeball the error.

D1. Capture the deploy error text to a file, or pipe it directly into the diagnosis script.

D2. Run the diagnosis script from the repo clone. It classifies the failure, parses any missing dependency, and checks whether that component exists on the feature branch (via git show):

bash
scripts/diagnose-deploy-failure.sh <error-file|-> <feature-branch> [target-branch] [remote]# or:  <deploy command> 2>&1 | scripts/diagnose-deploy-failure.sh - <feature-branch> <target-branch>

Act on the exit code and the printed REASON / RECOMMENDATION:

  • Exit 0 (dependency_in_feature_branch) → the missing component exists on the feature branch but was left out of the deployed set. A full promotion should fix it. Report this, confirm with the user, and hand off to dx-devops-promote to run a full promotion. This skill does not promote.
  • Exit 2 (merge_conflict) → the failure is a merge conflict, not a deploy error. Fall through to the merge-conflict track (Phase 1 onward).
  • Exit 3 (dependency_not_in_feature_branch) → the missing component is not on the feature branch, so promoting cannot supply it. Report that the component must be added and committed to the feature branch (or the owning work item included) before promoting.
  • Exit 4 (no_dependency_parsed) → the error is not a recognizable missing dependency. Report the raw error and advise fixing the underlying issue (e.g. test coverage, invalid metadata); a full promotion will not help.
  • Exit 1 → environment/usage error (not in a git repo, unreadable error file) → report and stop.

D3. Report the diagnosis with the REASON, whether a full promotion can fix it, the missing component (if any) and where it lives, and the concrete next step. Never re-promote blindly — only recommend a full promotion when the diagnosis is dependency_in_feature_branch.


Rules / Constraints

ConstraintRationale
Never trial-merge or merge on a dirty working treeAn in-progress merge on uncommitted changes can clobber the user's work irrecoverably
Always detect (Phase 2) before resolving (Phase 3)Detection is non-destructive; jumping to a live merge without knowing the conflict set risks a messy half-merge
Detect conflicts with the script, not by eyeballingscripts/detect-conflicts.sh produces a deterministic, reproducible conflict list and always cleans up its trial merge
A non-zero detection error is NOT "no conflicts"Only exit 0 (clean) means safe to promote; exit 1 means the check failed and must be reported
Merge the target stage branch INTO the feature branchReconciles the work item with its destination; DevOps Center promotes the feature branch, so the resolution must live there
Verify no conflict markers remain (git diff --check) before committingCommitting unresolved markers corrupts the metadata and the promotion
Preserve XML well-formedness when manually merging metadataMalformed -meta.xml breaks deployment; never leave duplicated or truncated elements
Push only the work item's feature branchThe resolution belongs to the work item's branch; never push to a stage/integration branch directly
This skill does not promote or deployResolution ends at a pushed, conflict-free branch or a diagnosis; promotion (including full promotion) is dx-devops-promote
Diagnose deploy failures with the script, not by eyeballingscripts/diagnose-deploy-failure.sh deterministically classifies the failure and verifies branch presence with git show
Recommend a full promotion ONLY when the missing component is on the feature branchIf the component is absent, promoting the branch cannot supply it — a re-promote just fails again

Gotchas

IssueResolution
No sf devops conflict CLI command existsDevOps Center conflicts are Git conflicts — resolve them with git, not a sf devops subcommand. This skill is git-based by design
Dirty working treegit status --porcelain must be empty; instruct the user to commit or stash before detecting/resolving
User gave a work item, not a branchResolve the work item to its feature branch first via sf devops work-item — see references/git-conflict-resolution.md
Non-zero script exit treated as cleanExit 2 = conflicts, exit 1 = error. Only exit 0 is "safe to promote"
Committing with markers still presentRun git diff --check and confirm the --diff-filter=U list is empty before git commit; leftover <<<<<<</>>>>>>> markers corrupt metadata
--ours / --theirs reversedWhen merging the target INTO the feature branch, --ours = feature branch, --theirs = target stage branch
Manually merged XML is malformedKeep -meta.xml well-formed; do not duplicate elements. Re-check the file parses before staging
Detached HEAD / stale branchgit fetch first; check out the feature branch as a tracking branch before merging (the script fetches for you)
Conflict reappears after promotion still failsThe target branch moved; re-run detection against the current target branch and resolve again
Re-promoting a deploy failure without diagnosingRun scripts/diagnose-deploy-failure.sh first: exit 0 = component on the branch, a full promotion fixes it; exit 2 = it's a merge conflict (switch tracks); exit 3 = component absent, add and commit it (or include the owning work item) before promoting — promotion alone cannot supply it

Output Expectations

This skill produces a conflict-free feature branch or a deploy-failure diagnosis, not org changes:

  • No conflicts: confirmation that the feature branch merges cleanly into the target stage branch — safe to promote
  • Conflicts resolved: a merge commit on the work item's feature branch reconciling it with the target stage branch, pushed to the remote, plus a report of which files were resolved and how (took a side vs. manual merge)
  • Deploy-failure diagnosis: a report stating the failure reason (merge conflict / missing dependency in-branch / missing dependency not-in-branch / unrecognized), whether a full promotion can fix it, the missing component and where it lives, and the concrete next step

No metadata is deployed and no org state is mutated. The deliverable is the pushed, conflict-free branch or the diagnosis and recommended next step.


Cross-Skill Integration

WhenAction
The branch is conflict-free (or resolved and pushed) and ready to advanceDelegate to dx-devops-promote to validate and promote
A work item name/ID must be resolved to its feature branch, or candidate work items listedUse dx-devops-work-item-manage
Work items share metadata and could promote as one unit instead of resolving separatelyConsider combining via dx-devops-promote's combine step rather than a manual merge
A promote deploy already failed on a conflictRe-detect against the current target branch, resolve, push, then re-promote via dx-devops-promote
Diagnosis says a full promotion can fix the failure (dependency_in_feature_branch)Hand off to dx-devops-promote to run the full promotion — this skill does not promote
Missing component must be added to the feature branch before promotingAuthor/commit the component (or include the owning work item) — for metadata generation use the relevant domain skill, then re-promote via dx-devops-promote

Reference File Index

FileWhen to read
scripts/detect-conflicts.shPhase 2 — run it to non-destructively detect merge conflicts between the feature branch and the target stage branch
scripts/diagnose-deploy-failure.shPhase D — run it to classify a promotion deploy failure and decide whether a full promotion (or a missing-dependency fix) resolves it
references/git-conflict-resolution.mdWhen you need the full git command reference, the sf devops work-item-to-branch lookup, or --ours/--theirs and XML-merge guidance
references/deploy-failure-resolution.mdPhase D — when you need the deploy-failure decision tree, the error-parsing patterns, or the full-promotion reasoning behind the diagnosis script
examples/conflict-workflows.mdWhen the user's request matches a common pattern (pre-promotion conflict check, take-a-side resolution, manual XML merge, troubleshooting a failed promotion, or diagnosing a deploy failure)

Source and attribution

Source:forcedotcom/sf-skillsinskills/dx-devops-conflict-resolveat commite5164d9

License: No license

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal

More from forcedotcom/sf-skills

Service Itsm Teams Itservice Configure

forcedotcom

Configure the "Set Up Salesforce IT Service" checklist for Microsoft Teams Employee Service (ITSM) — the employee side, covering app enablement, marketplace install guidance, user access assignment, and Digital Experience Site selection. Use this for: 'turn on Salesforce IT Service', 'set up IT Service on Teams', 'assign Teams for Employee permission set', 'give employees access to Teams for Employee Service', 'manage user access for Teams ITSM', 'grant users the permission sets needed for Teams Employee Service', 'select a digital experience site for Teams', 'install Salesforce IT Service app on Teams', or any request to complete the IT Service half of the Teams ITSM Go page checklist (including the Manage User Access step). DO NOT TRIGGER for the base Teams Salesforce Go page toggle or Azure/Entra app setup (service-itsm-teams-configure) or for the IT Desk/fulfiller half of the checklist (service-itsm-teams-itdesk-configure).

Awaiting classification1Kupdated yesterday

Service Itsm Teams Coordinate

forcedotcom

End-to-end autopilot orchestrator for setting up Microsoft Teams integration in Salesforce Service Cloud ITSM — runs the whole flow (enable the Teams for Employee Service Go feature, register the Microsoft Entra app, populate Named Credentials, configure the IT Desk and IT Service checklists, turn on Swarming, and optionally embed the Agentforce agent) in one continuous pass, stopping only at the points a human must act. Use when the user asks to set up Microsoft Teams for ITSM end to end, 'set up teams for it service', 'do the whole teams itsm setup', 'configure microsoft teams for employee service', or wants a guided Teams ITSM walkthrough. Delegates each stage to a specialized child skill while driving the sequence itself. DO NOT TRIGGER when the user asks to enable Teams alone, configure just the IT Desk or IT Service checklist alone, or enable Swarming alone — delegate directly to the specific child skill in those cases.

Awaiting classification1Kupdated yesterday

Service Itsm Teams Itdesk Configure

forcedotcom

Configure the "Set Up Salesforce IT Desk" checklist for Microsoft Teams Employee Service (ITSM) — the fulfiller/agent side, covering app enablement, marketplace install guidance, user access assignment, and Swarming collaboration-tool setup. Use this for: 'turn on Salesforce IT Desk', 'set up IT Desk on Teams', 'assign Teams for IT Desk permission set', 'set Teams as collaboration tool for swarming', 'install Salesforce IT Desk app on Teams', or any request to complete the IT Desk half of the Teams ITSM Go page checklist. DO NOT TRIGGER for the base Teams Salesforce Go page toggle or Azure/Entra app setup (service-itsm-teams-configure) or for the IT Service/employee half of the checklist (service-itsm-teams-itservice-configure).

Awaiting classification1Kupdated yesterday

Service Itsm Teams Debug

forcedotcom

Diagnoses failing Microsoft Teams for Employee Service (ITSM) setups by running pass/fail configuration checklists against a Salesforce org.

DevOps & Cloud1Kupdated yesterday

Service Itsm Teams Employee Agent Configure

forcedotcom

Configure the embedded Agentforce Employee Agent so it replies inside the Microsoft Teams ITSM custom client ('Salesforce Employee Assist' / 'Ask AI Agent'). Use this for: 'set up employee agent in Teams', 'embed Agentforce agent in Teams', 'make the IT Service Employee Agent reply in Teams', 'Teams Ask AI Agent not responding', 'agent joins then leaves without replying', 'configure MIAW deployment for Teams employee agent', 'Teams embedded messaging agent setup'. Builds the whole stack headlessly (zero Setup-UI clicks): the Web messaging channel with User Verification ON, the Enhanced Chat User Verification Key Set (JWKS_URL) it requires, the Teams_AgentForce custom-client deployment, the routing flow to the agent, and the Agent Access permission set that lets the portal user reach the agent. DO NOT TRIGGER for enabling the Teams feature Salesforce Go page toggle (service-itsm-teams-configure) or for configuring notification preferences.

Awaiting classification1Kupdated yesterday

Service Itsm Swarming Configure

forcedotcom

Enables the Salesforce Swarming ITSM feature and sets the collaboration tool to Teams via Connect API calls.

DevOps & Cloud1Kupdated yesterday