Skip to content
Back to skills

Consolidate Branches

ASecurity

Consolidate multiple PR branches onto a target branch using jj multi-parent rebase with intelligent AI-powered conflict resolution

  • 666 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added February 8, 2026
businessgobashgit

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add majiayu000/claude-skill-registry --skill consolidate-branches --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Consolidate Branches?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Consolidate Branches
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-consolidate-branches/badge)](https://www.skillsdirectory.com/skills/majiayu000-consolidate-branches)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: consolidate-branches
description: Consolidate multiple PR branches onto a target branch using jj multi-parent rebase with intelligent AI-powered conflict resolution
---

# Consolidate Branches Skill

**Announce at start**: "I'm using the consolidate-branches skill to merge your PR branches."

## Overview

This skill consolidates multiple PR branches onto a target branch using jj's multi-parent rebase with intelligent conflict resolution. The primary use case is when you have multiple feature branches with expected conflicts that need to be merged together.

**Key principle**: Understand the intent behind each branch's changes and intelligently combine them, not just mechanically merge.

## Workflow

### Phase 1: Discovery

Discover all branches that might need consolidation:

1. Run `jj git fetch` to sync with remote
2. Display branch structure:
   ```bash
   JJ_CONFIG= jj log -r "trunk()..@ | trunk() | @.."
   ```
3. Parse the output to identify candidate branches
4. Show branches with metadata:
   - Branch name
   - Number of commits
   - Last modified date (if available)
   - Brief description from first/last commit

**Output**: Present a clear list of discovered branches to the user.

### Phase 2: Selection

Let the user choose what to consolidate:

1. Use AskUserQuestion tool with:
   - Multi-select question for branch selection
   - Separate question for target branch (suggest "main" as default)

2. Validate selections:
   - At least 2 branches must be selected
   - Target branch must exist
   - Selected branches should differ from target

3. Show confirmation summary:
   ```
   Consolidating branches [branch-a, branch-b, branch-c] onto main
   ```

**Ask**: "Ready to proceed with consolidation?"

### Phase 3: Analysis

Before merging, understand each branch's intent:

For each selected branch:

1. Read commit messages:
   ```bash
   jj log -r <branch>
   ```

2. Examine changes:
   ```bash
   jj diff -r <branch>
   ```

3. Categorize the changes:
   - What files are affected?
   - What type of change? (feature, bugfix, refactor, docs, etc.)
   - What is the goal of this branch?

4. Document intent for later conflict resolution

**Output**: Create a mental model of what each branch is trying to accomplish.

### Phase 4: Consolidation

Perform the multi-parent rebase:

1. Create new working commit on target:
   ```bash
   jj new <target-branch>
   ```

2. Multi-parent rebase to combine all branches:
   ```bash
   jj rebase -r @ -d <branch1> -d <branch2> -d <branch3> ...
   ```

3. Check the result:
   - Did the rebase succeed?
   - Are there conflicts?

### Phase 5: Intelligent Conflict Resolution

**This is the core value of the skill.**

When conflicts occur:

1. **Identify conflicting files**:
   - List all files with conflicts
   - Categorize by severity/complexity

2. **For each conflicting file**:

   a. **Show conflict context**:
      - Display the conflicting sections from each branch
      - Show surrounding code for context

   b. **Analyze intent**:
      - What was each branch trying to accomplish in this file?
      - Are the changes complementary or contradictory?
      - Can both goals be achieved simultaneously?

   c. **Propose resolution**:
      - Draft a merge that preserves both/all intents
      - Explain the reasoning behind the resolution
      - If intents are contradictory, explain the trade-offs and recommend the best approach

   d. **Apply resolution**:
      - Edit the file to implement the proposed merge
      - Remove conflict markers
      - Ensure code is syntactically correct

   e. **Document resolution**:
      - Track what conflict was resolved
      - Record why this resolution was chosen
      - Note any assumptions made

3. **Present resolutions to user**:
   - Summarize all conflicts found
   - Explain how each was resolved
   - Show the reasoning behind decisions
   - Ask for validation: "Do these conflict resolutions look correct?"

4. **Iterate if needed**:
   - If user requests changes, revise resolutions
   - Re-apply and re-validate

**Key Guidelines**:
- Don't just pick one side arbitrarily
- Look for ways to combine both changes
- Preserve functionality from all branches
- Maintain code quality and consistency
- When uncertain, explain options to user

### Phase 6: Verification

Verify all changes from all branches are present:

1. **Code presence check** for each branch:
   ```bash
   jj diff -r <branch>
   ```
   - Compare against final consolidated result
   - Verify the changes are present
   - Report any missing changes

2. **Generate summary report**:
   - List all branches consolidated
   - Show total number of commits included
   - List conflicts resolved with explanations
   - Display final diff of consolidated changes:
     ```bash
     jj diff -r <target-branch>..@
     ```

3. **Sanity checks**:
   - Are there any remaining conflict markers?
   - Does the code appear syntactically correct?
   - Are imports/dependencies resolved?

### Phase 7: Completion

Leave the workspace ready for user review:

1. **Summary message**:
   ```
   Branch consolidation complete!

   Consolidated branches: [list]
   Total commits: [count]
   Conflicts resolved: [count]

   The changes are ready for your review.
   ```

2. **Next steps guidance**:
   - "Review the changes with `jj diff`"
   - "When satisfied, you can:"
     - "Create a commit with `jj commit -m 'your message'`"
     - "Create a PR"
     - "Make further edits"
   - "The workspace is ready for your action"

3. **Don't auto-commit**: User maintains full control

## Error Handling

### If fetch fails
- Report the error
- Ask if user wants to continue without fetching
- Explain risks of stale branch info

### If no branches found
- Report that no branches were found
- Suggest checking if branches are pushed to remote
- Offer to show current branch status

### If multi-parent rebase fails
- Report the specific error
- Check if it's due to conflicts or other issues
- Guide user through resolution

### If conflicts seem irresolvable
- Explain why the conflict is challenging
- Present the conflicting code from each branch
- Ask user for guidance on resolution strategy
- Offer to abort if user prefers manual merge

## Key Principles

1. **Understanding over mechanics**: Always analyze intent before merging
2. **Preserve all functionality**: Don't drop changes from any branch
3. **Clear communication**: Explain what you're doing and why
4. **User control**: Present resolutions for validation, don't auto-commit
5. **Safety first**: Verify changes, check for missing code
6. **Helpful guidance**: Provide clear next steps

## Success Criteria

The consolidation is successful if:
- All selected branches are merged
- All conflicts are intelligently resolved
- All changes from all branches are present
- Code is syntactically correct
- User understands what was done and why
- Workspace is clean and ready for review

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.