Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 08:44:59 +08:00
commit d675d447fc
4 changed files with 302 additions and 0 deletions

View File

@@ -0,0 +1,12 @@
{
"name": "jmo-development-tools",
"description": "Custom commands, agents, and skills for NixOS, Jujutsu, and documentation workflows",
"version": "0.0.0-2025.11.28",
"author": {
"name": "jmo",
"email": "jmo@example.com"
},
"skills": [
"./skills/SKILL.md"
]
}

3
README.md Normal file
View File

@@ -0,0 +1,3 @@
# jmo-development-tools
Custom commands, agents, and skills for NixOS, Jujutsu, and documentation workflows

44
plugin.lock.json Normal file
View File

@@ -0,0 +1,44 @@
{
"$schema": "internal://schemas/plugin.lock.v1.json",
"pluginId": "gh:ohare93/claude-setup:jmo-development-tools",
"normalized": {
"repo": null,
"ref": "refs/tags/v20251128.0",
"commit": "9857e679528ade5b7c72d0db5c34caca1b4f6054",
"treeHash": "939f54e2c9ae975ca188dd43cbff09006034250cb08f7b4bd5c07102b88877fc",
"generatedAt": "2025-11-28T10:27:26.101657Z",
"toolVersion": "publish_plugins.py@0.2.0"
},
"origin": {
"remote": "git@github.com:zhongweili/42plugin-data.git",
"branch": "master",
"commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390",
"repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data"
},
"manifest": {
"name": "jmo-development-tools",
"description": "Custom commands, agents, and skills for NixOS, Jujutsu, and documentation workflows"
},
"content": {
"files": [
{
"path": "README.md",
"sha256": "5f7126cfe8fda48dbe5dd07c62370d9729f4a7262736139787f791d03c88af16"
},
{
"path": ".claude-plugin/plugin.json",
"sha256": "797eb31c8d7df5b2bbb906009fa2bea38ddaa75669e8c4de37f17c4c3a666b66"
},
{
"path": "skills/SKILL.md",
"sha256": "40fe552b54b81ee245de58774defa6ab708aeeabf202ac530ecaca5c070d18e5"
}
],
"dirSha256": "939f54e2c9ae975ca188dd43cbff09006034250cb08f7b4bd5c07102b88877fc"
},
"security": {
"scannedAt": null,
"scannerVersion": null,
"flags": []
}
}

243
skills/SKILL.md Normal file
View File

@@ -0,0 +1,243 @@
---
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