diff --git a/claude/commands/clean-gone-branches.md b/claude/commands/clean-gone-branches.md new file mode 100644 index 0000000..d906fd7 --- /dev/null +++ b/claude/commands/clean-gone-branches.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. +source: https://github.com/anthropics/claude-plugins-official/blob/main/plugins/commit-commands/commands/clean_gone.md +--- + +## 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/claude/commands/commit-push-pr.md b/claude/commands/commit-push-pr.md new file mode 100644 index 0000000..d9c0048 --- /dev/null +++ b/claude/commands/commit-push-pr.md @@ -0,0 +1,26 @@ +--- +allowed-tools: Bash(git checkout --branch:*), Bash(git branch:*), Bash(git add:*), Bash(git status:*), Bash(git push:*), Bash(git commit:*), Bash(gh pr create:*) +description: Commit, push, and open a PR, rename branch appropriately if needed +source: https://github.com/anthropics/claude-plugins-official/blob/main/plugins/commit-commands/commands/commit-push-pr.md +--- + +## 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. If already on a non-main branch, + check if the branch name looks randomly generated (e.g. UUIDs, + hex strings, meaningless character sequences, or 1-3 random + unrelated words like "brave-fox" or "purple-mountain") rather than + descriptive of the changes. If so, rename it to something that + aligns with the changes using `git branch -m `. +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/claude/commands/commit.md b/claude/commands/commit.md new file mode 100644 index 0000000..2a05d65 --- /dev/null +++ b/claude/commands/commit.md @@ -0,0 +1,18 @@ +--- +allowed-tools: Bash(git add:*), Bash(git status:*), Bash(git commit:*) +description: Create a git commit +source: https://github.com/anthropics/claude-plugins-official/blob/main/plugins/commit-commands/commands/commit.md +--- + +## 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.