Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 08:41:01 +08:00
commit 3b4f3145ad
13 changed files with 299 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
{
"name": "git",
"description": "Git workflow automation with smart commits, conflict resolution, rebase management, worktree creation, and worktree cleanup",
"version": "0.18.0",
"author": {
"name": "Craig Motlin"
},
"skills": [
"./skills/git-workflow/SKILL.md"
],
"agents": [
"./agents/commit-handler.md",
"./agents/rebaser.md",
"./agents/conflict-resolver.md"
],
"commands": [
"./commands/worktree.md",
"./commands/commit.md",
"./commands/commit-chunks.md",
"./commands/conflicts.md",
"./commands/rebase-all.md",
"./commands/clean-worktrees.md"
]
}

3
README.md Normal file
View File

@@ -0,0 +1,3 @@
# git
Git workflow automation with smart commits, conflict resolution, rebase management, worktree creation, and worktree cleanup

9
agents/commit-handler.md Normal file
View File

@@ -0,0 +1,9 @@
---
name: commit-handler
description: Commit local changes to git
model: haiku
color: red
skills: code:cli
---
See [shared/git-commit-instructions.md](../shared/git-commit-instructions.md) for commit context.

View File

@@ -0,0 +1,9 @@
---
name: conflict-resolver
description: Use this agent to handle git merge conflicts
model: haiku
color: yellow
skills: code:cli
---
See [shared/conflict-resolution-instructions.md](../shared/conflict-resolution-instructions.md) for conflict resolution instructions.

47
agents/rebaser.md Normal file
View File

@@ -0,0 +1,47 @@
---
name: rebaser
description: Use this agent to rebase local commits on top of the upstream remote/branch after committing code to git.\n\n<example>\nContext: The user has just committed code and wants to rebase on upstream changes.\nuser: "Now rebase my changes on the upstream branch"\nassistant: "I'll use the rebaser agent to rebase your commits on top of the upstream branch."\n\n</example>\n\n<example>\nContext: Code has been committed using the commit-handler agent.\nuser: "Implement the new authentication feature"\nassistant: "I've implemented the authentication feature and committed the changes."\n<function call to commit-handler omitted>\nassistant: "Now I'll rebase these changes on the upstream branch to ensure they're up to date."\n<commentary>\nAfter committing, launch the rebaser agent to rebase on upstream.\n</commentary>\n</example>
model: haiku
color: orange
---
Rebase local git commits on upstream branch.
You rebase local git commits on top of the upstream remote/branch.
**Your Primary Responsibilities:**
1. **Pre-rebase Verification**: First, verify there are no uncommitted changes using `git status`. If there are uncommitted changes, stop immediately and report this to the user - do not proceed with the rebase.
2. **Execute Rebase**: Run `${CLAUDE_PLUGIN_ROOT}/scripts/rebase` to perform the rebase operation. This script reads the project's configured upstream remote and branch (usually origin/main) from environment variables.
**CRITICAL**: You MUST use `${CLAUDE_PLUGIN_ROOT}/scripts/rebase`. Do NOT use:
- `git rebase` (doesn't know which upstream to use)
- `git pull --rebase` (uses tracking info, would rebase onto origin/<current-branch>)
- `git rebase @{upstream}` (uses tracking info, not the configured upstream)
- Any other git rebase variant
Do not add any arguments or environment variables to this command.
3. **Handle Outcomes**:
- **Success**: If the rebase completes without errors, report success and exit. Your work is complete.
- **Merge Conflicts**: If the command fails due to merge conflicts, immediately invoke the git-rebase-conflict-resolver agent to handle the conflicts. Do not attempt to resolve conflicts yourself.
- **Other Errors**: If the rebase fails for reasons other than merge conflicts, report the specific error to the user and stop.
**Operational Guidelines:**
- You must execute exactly one rebase attempt per invocation
- Do not modify any files or make any commits yourself
- Do not attempt to continue or abort rebases manually - the conflict resolver agent handles all conflict resolution workflows
- Trust that the rebase script knows how to find the correct upstream
- After delegating to the git-rebase-conflict-resolver agent for conflicts, consider your task complete - that agent will handle the entire conflict resolution process
**Workflow:**
1. Check `git status` for uncommitted changes
2. Execute `${CLAUDE_PLUGIN_ROOT}/scripts/rebase`
3. If successful: Report success and exit
4. If conflicts: Invoke git-rebase-conflict-resolver agent and exit
5. If other error: Report error and exit
You are a focused, single-purpose agent. Once you've either completed the rebase successfully or delegated conflict resolution, your task is complete.

View File

@@ -0,0 +1,13 @@
---
argument-hint: worktree paths
description: Remove git worktrees safely
---
🧹 Remove the following worktrees, as long it is possible to do so without using the `--force` flag.
$ARGUMENTS
- Don't bother checking if the repo has changes with `git -C <worktree> status --porcelain`
- Don't bother checking for unpushed commits with `git -C <worktree> log`
Just run `git worktree remove <worktree>` and git will exit with an error code if it's not safe to do so and if `--force` is correctly ommitted.

View File

@@ -0,0 +1,9 @@
---
description: Split local changes into multiple logical commits
---
📝 Commit the local changes to git. Analyze my local changes and propose splitting them into multiple logical commits.
For each proposed commit, show me the message and the list of files. Show all proposals at once. Wait for my confirmation, then commit all.
See [shared/git-commit-instructions.md](../shared/git-commit-instructions.md) for commit context.

5
commands/commit.md Normal file
View File

@@ -0,0 +1,5 @@
---
description: Commit local changes to git
---
See [shared/git-commit-instructions.md](../shared/git-commit-instructions.md) for commit context.

5
commands/conflicts.md Normal file
View File

@@ -0,0 +1,5 @@
---
description: Fix all merge conflicts and continue the git rebase
---
See [shared/conflict-resolution-instructions.md](../shared/conflict-resolution-instructions.md) for conflict resolution instructions.

20
commands/rebase-all.md Normal file
View File

@@ -0,0 +1,20 @@
---
description: Rebase all branches onto a configurable upstream branch
---
Keep all branches in a repository up-to-date by rebasing them onto a configurable upstream branch.
Initial Rebase Attempt: Run `${CLAUDE_PLUGIN_ROOT}/scripts/git-all` to attempt rebasing all branches.
- If the command fails with merge conflicts, use the `git-rebase-conflict-resolver` agent to resolve all conflicts in the affected branch
- After resolving conflicts run `${CLAUDE_PLUGIN_ROOT}/scripts/git-all` again.
- Continue this cycle until the command completes successfully without errors or conflicts.
When communicating:
- Clearly indicate which branch you're working on.
- Summarize the conflicts found.
- Report progress after each iteration.
- Notify when the entire rebase process is complete.
Remember: Your goal is to ensure all branches are successfully rebased onto the upstream branch, with all conflicts properly resolved.

44
commands/worktree.md Normal file
View File

@@ -0,0 +1,44 @@
---
argument-hint: branch-name
description: Create a git worktree in a peer directory
---
Create a git worktree in a peer directory.
## Arguments
The argument should be a kebab-case task name (e.g., "auth-feature", "database-migration").
The user passed in: `$ARGUMENTS`
If that text is already kebab case, use it directly as the branch name. Otherwise come up with a good kebab-case name based on what the user passed in.
## Steps
- Run `bash ${CLAUDE_PLUGIN_ROOT}/scripts/worktree.sh <branch-name>` from the repository root
- If the command exits with a non-success exit code, stop here and give a good summary to the user
## Conclusion
Run a command to create a new terminal tab in the newly created worktree.
If we are running in iTerm:
```console
osascript -e 'tell application "iTerm"
tell current window
create tab with default profile
tell current tab
tell current session
write text "cd <worktree-absolute-path>"
end tell
end tell
end tell
end tell'
```
If we are running in xfce4-terminal:
```console
xfce4-terminal --tab --working-directory="<worktree-absolute-path>" -x bash -c "cd <worktree-absolute-path>; exec bash"
```

81
plugin.lock.json Normal file
View File

@@ -0,0 +1,81 @@
{
"$schema": "internal://schemas/plugin.lock.v1.json",
"pluginId": "gh:motlin/claude-code-plugins:plugins/git",
"normalized": {
"repo": null,
"ref": "refs/tags/v20251128.0",
"commit": "2ee0fa2c272f9f7802d184b0f401a3c04722b19b",
"treeHash": "8a75099157faa4c9d8deca3733cd174edeaac36e3144a7ece3af3e20253287eb",
"generatedAt": "2025-11-28T10:27:09.891915Z",
"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": "git",
"description": "Git workflow automation with smart commits, conflict resolution, rebase management, worktree creation, and worktree cleanup",
"version": "0.18.0"
},
"content": {
"files": [
{
"path": "README.md",
"sha256": "907d0c37ef618b16700e428c94e9bd89c197311c9772b7ab6014feeef92f4988"
},
{
"path": "agents/commit-handler.md",
"sha256": "ffd95e4ce8ee98c109325b0c48165108e9ff8733d03683c1c44f8ba2b8d2efde"
},
{
"path": "agents/conflict-resolver.md",
"sha256": "491e3e46d07ba766ac2608314fe45c3984b2aed51e867e370440ec865546d18d"
},
{
"path": "agents/rebaser.md",
"sha256": "2c95f9bafcdb1c68f8e47aca594711d0a0f19af7e519976e50a44c90a994eba5"
},
{
"path": ".claude-plugin/plugin.json",
"sha256": "f5a0ad8aa0a7d875e4031c146e01b16de1efd48c4cbb9f0d83b1deef0fb53cde"
},
{
"path": "commands/worktree.md",
"sha256": "478cd3d41cabddbd7ef21e69e4cd33c333ce973f26e7328309242a76e542c739"
},
{
"path": "commands/conflicts.md",
"sha256": "ec3ca4cd7797f6fab043318ee14fd89fb7ec033e3a4d4b9c0d43e2edd91ff7df"
},
{
"path": "commands/clean-worktrees.md",
"sha256": "26151f58ff8a0e716fe02e7fe34060628a7115dea3dd72a1ce324027d63d64fd"
},
{
"path": "commands/rebase-all.md",
"sha256": "aeca10c5f80b06ea6d8335c227f8e2f85ef900eb8bba63ad14bbbc09ec060b11"
},
{
"path": "commands/commit.md",
"sha256": "c22786d637e67a63be1da1368e129fe64e8e5f3a87c87d9c2fc08239c26ae4dd"
},
{
"path": "commands/commit-chunks.md",
"sha256": "c092bb4dddeeb2c5a9b6dc5afdc10f577875e4e4322ba31a1d0ff44e0d73397b"
},
{
"path": "skills/git-workflow/SKILL.md",
"sha256": "ddbfcb4d3745812dfad7f7b3f5218b458bbfc06e2354c4346c5382dcb6f3a5f7"
}
],
"dirSha256": "8a75099157faa4c9d8deca3733cd174edeaac36e3144a7ece3af3e20253287eb"
},
"security": {
"scannedAt": null,
"scannerVersion": null,
"flags": []
}
}

View File

@@ -0,0 +1,30 @@
---
name: git-workflow
description: Git workflow best practices for commits, rebasing, conflict resolution, and branch management. Use when working with git operations, creating commits, resolving conflicts, or managing branches.
---
# Git Workflow Best Practices
This skill provides guidelines for git operations including commits, conflict resolution, and branch management.
## Commit Guidelines
Use the `/git:commit` command or `git:commit-handler` agent.
## Splitting Changes into Multiple Commits
Use the `/git:commit-chunks` command.
## Conflict Resolution
Use the `/git:conflicts` command or `git:conflict-resolver` agent.
## Rebasing All Branches
Use the `/git:rebase-all` command.
## Worktree Management
Use the `/git:worktree` command for creating worktrees.
Use the `/git:clean-worktrees` command for cleaning up worktrees.