Initial commit
This commit is contained in:
12
.claude-plugin/plugin.json
Normal file
12
.claude-plugin/plugin.json
Normal 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
3
README.md
Normal 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
44
plugin.lock.json
Normal 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
243
skills/SKILL.md
Normal 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
|
||||
Reference in New Issue
Block a user