From f02faa5368ceae0a4d07fc574b009299b9ca5f07 Mon Sep 17 00:00:00 2001 From: Zhongwei Li Date: Sat, 29 Nov 2025 17:55:28 +0800 Subject: [PATCH] Initial commit --- .claude-plugin/plugin.json | 12 +++++++++ README.md | 3 +++ commands/clean_gone.md | 53 ++++++++++++++++++++++++++++++++++++++ commands/commit-push-pr.md | 20 ++++++++++++++ commands/commit.md | 17 ++++++++++++ plugin.lock.json | 53 ++++++++++++++++++++++++++++++++++++++ 6 files changed, 158 insertions(+) create mode 100644 .claude-plugin/plugin.json create mode 100644 README.md create mode 100644 commands/clean_gone.md create mode 100644 commands/commit-push-pr.md create mode 100644 commands/commit.md create mode 100644 plugin.lock.json diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 0000000..647d381 --- /dev/null +++ b/.claude-plugin/plugin.json @@ -0,0 +1,12 @@ +{ + "name": "commit-commands", + "description": "Commands for git commit workflows including commit, push, and PR creation", + "version": "1.0.0", + "author": { + "name": "Anthropic", + "email": "support@anthropic.com" + }, + "commands": [ + "./commands" + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..623595b --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# commit-commands + +Commands for git commit workflows including commit, push, and PR creation diff --git a/commands/clean_gone.md b/commands/clean_gone.md new file mode 100644 index 0000000..57f0b6e --- /dev/null +++ b/commands/clean_gone.md @@ -0,0 +1,53 @@ +--- +description: Cleans up all git branches marked as [gone] (branches that have been deleted on the remote but still exist locally), including removing associated worktrees. +--- + +## Your Task + +You need to execute the following bash commands to clean up stale local branches that have been deleted from the remote repository. + +## Commands to Execute + +1. **First, list branches to identify any with [gone] status** + Execute this command: + ```bash + git branch -v + ``` + + Note: Branches with a '+' prefix have associated worktrees and must have their worktrees removed before deletion. + +2. **Next, identify worktrees that need to be removed for [gone] branches** + Execute this command: + ```bash + git worktree list + ``` + +3. **Finally, remove worktrees and delete [gone] branches (handles both regular and worktree branches)** + Execute this command: + ```bash + # Process all [gone] branches, removing '+' prefix if present + git branch -v | grep '\[gone\]' | sed 's/^[+* ]//' | awk '{print $1}' | while read branch; do + echo "Processing branch: $branch" + # Find and remove worktree if it exists + worktree=$(git worktree list | grep "\\[$branch\\]" | awk '{print $1}') + if [ ! -z "$worktree" ] && [ "$worktree" != "$(git rev-parse --show-toplevel)" ]; then + echo " Removing worktree: $worktree" + git worktree remove --force "$worktree" + fi + # Delete the branch + echo " Deleting branch: $branch" + git branch -D "$branch" + done + ``` + +## Expected Behavior + +After executing these commands, you will: + +- See a list of all local branches with their status +- Identify and remove any worktrees associated with [gone] branches +- Delete all branches marked as [gone] +- Provide feedback on which worktrees and branches were removed + +If no branches are marked as [gone], report that no cleanup was needed. + diff --git a/commands/commit-push-pr.md b/commands/commit-push-pr.md new file mode 100644 index 0000000..5ebdd02 --- /dev/null +++ b/commands/commit-push-pr.md @@ -0,0 +1,20 @@ +--- +allowed-tools: Bash(git checkout --branch:*), Bash(git add:*), Bash(git status:*), Bash(git push:*), Bash(git commit:*), Bash(gh pr create:*) +description: Commit, push, and open a PR +--- + +## Context + +- Current git status: !`git status` +- Current git diff (staged and unstaged changes): !`git diff HEAD` +- Current branch: !`git branch --show-current` + +## Your task + +Based on the above changes: + +1. Create a new branch if on main +2. Create a single commit with an appropriate message +3. Push the branch to origin +4. Create a pull request using `gh pr create` +5. You have the capability to call multiple tools in a single response. You MUST do all of the above in a single message. Do not use any other tools or do anything else. Do not send any other text or messages besides these tool calls. diff --git a/commands/commit.md b/commands/commit.md new file mode 100644 index 0000000..31ef079 --- /dev/null +++ b/commands/commit.md @@ -0,0 +1,17 @@ +--- +allowed-tools: Bash(git add:*), Bash(git status:*), Bash(git commit:*) +description: Create a git commit +--- + +## Context + +- Current git status: !`git status` +- Current git diff (staged and unstaged changes): !`git diff HEAD` +- Current branch: !`git branch --show-current` +- Recent commits: !`git log --oneline -10` + +## Your task + +Based on the above changes, create a single git commit. + +You have the capability to call multiple tools in a single response. Stage and create the commit using a single message. Do not use any other tools or do anything else. Do not send any other text or messages besides these tool calls. diff --git a/plugin.lock.json b/plugin.lock.json new file mode 100644 index 0000000..b576898 --- /dev/null +++ b/plugin.lock.json @@ -0,0 +1,53 @@ +{ + "$schema": "internal://schemas/plugin.lock.v1.json", + "pluginId": "gh:anthropics-claude/claude-code:plugins/commit-commands", + "normalized": { + "repo": null, + "ref": "refs/tags/v20251128.0", + "commit": "6179ed11355401af63bb4e399e73af833d140c14", + "treeHash": "15eff694181ef6b1a231708a5a8b2843028a9e504157cad42522d08315e3dd17", + "generatedAt": "2025-11-28T10:13:45.310675Z", + "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": "commit-commands", + "description": "Commands for git commit workflows including commit, push, and PR creation", + "version": "1.0.0" + }, + "content": { + "files": [ + { + "path": "README.md", + "sha256": "8888c8e9d444c15fa3ed30b7c7c890bad23abfd490e9e3f3cfe2d4e4b8fdbaae" + }, + { + "path": ".claude-plugin/plugin.json", + "sha256": "24210d1694a24c6633d4d3cac8f20efdd238f9225b625bcda81169a288456d38" + }, + { + "path": "commands/commit-push-pr.md", + "sha256": "3bc3d171939149cbbef141cbced553dce6ba6f97dac4a764f4ef1e055c35064d" + }, + { + "path": "commands/clean_gone.md", + "sha256": "4f07fa2ccf4f81a69c6455bdc563b53a3d3b20aea6e4e82337c52b172ee02344" + }, + { + "path": "commands/commit.md", + "sha256": "d1acbc2bf0c50164f48d6bda872de6a343cd9390954ce903c3431c3119e7f8c4" + } + ], + "dirSha256": "15eff694181ef6b1a231708a5a8b2843028a9e504157cad42522d08315e3dd17" + }, + "security": { + "scannedAt": null, + "scannerVersion": null, + "flags": [] + } +} \ No newline at end of file