Files
settled-reach/.claude/skills/pr-push/SKILL.md
T
jpmschweitzerandClaude Opus 4.6 f0bab3999d chore(skills): rename all skills to domain-action convention
Adopts the whatsinagame naming pattern where the domain comes
first and the action second (e.g. pr-review, sprint-start,
audio-gen). Updated all cross-references in settings, agents,
docs, and inter-skill references.

12 renames: commit→git-commit, create-skill→skill-create,
gen-audio→audio-gen, gen-image→image-gen, plan-sprint→sprint-plan,
push-pr→pr-push, render-sprite→sprite-gen, review-pr→pr-review,
search-docs→docs-search, start-sprint→sprint-start,
start-workshop→workshop-start.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 12:51:56 +01:00

3.3 KiB

name, description, user-invocable, allowed-tools
name description user-invocable allowed-tools
pr-push Push commits and create or update a pull request. Use when the user says "push pr", "push and create pr", "update pr", "create a pr", "open a pr", or invokes /pr-push. NOT triggered by plain "push" (that's just git push). Pushes the current branch, creates a PR if none exists, or confirms the existing PR was updated. NEVER merges the PR into main — this skill only pushes to the branch and manages the PR lifecycle. true Bash, Read, Grep, Glob, AskUserQuestion, Skill

Push PR Skill

Push commits to remote and create or update a PR. Operates exclusively on the current branch — never touches main.

Safety Rules (NON-NEGOTIABLE)

  • NEVER merge a PR into main. No tea pr merge, no git merge into main.
  • NEVER checkout or push to main.
  • NEVER force-push unless the user explicitly requests it.
  • NEVER use --no-verify or skip hooks.
  • Only push to the current working branch.

Workflow

1. Validate branch

git branch --show-current

If on main, stop: "You're on main. Switch to a team branch first."

2. Commit uncommitted changes

git status

If there are uncommitted changes (staged or unstaged), run the commit skill first. Use the /git-commit skill to group changes into logical commits with proper conventional commit messages. Wait for commit to complete before proceeding.

If the working tree is clean (no uncommitted changes), skip to step 3.

3. Check for unpushed commits

git fetch --all
git log --oneline origin/<branch>..<branch>

If no unpushed commits, skip to step 5 (PR check).

4. Check for conflicts with main

git merge-tree --write-tree origin/main HEAD 2>&1

If conflicts reported, merge main into current branch:

git merge origin/main --no-edit

If merge conflicts, stop and report — let the user resolve. If clean, continue.

5. Push

git push origin <branch>

If push fails, stop and report. Never force-push without explicit request.

6. Check for existing PR

tea pr list --login schweitz --repo jpmschweitzer/settled-reach --state open --output simple

Match current branch name in PR list.

  • PR exists: Report "Pushed N commits to <branch>. PR #X updated." Done.
  • No PR: Continue to step 7.

7. Create a new PR

git log --oneline main..<branch>
git diff --stat main...<branch>

Draft title (<type>(<scope>): <summary>, max 70 chars) and description.

cat > /tmp/pr-body.md << 'EOF'
## Summary
...
EOF
tea pr create \
  --repo jpmschweitzer/settled-reach \
  --login schweitz \
  --title "<title>" \
  --description "$(cat /tmp/pr-body.md)" \
  --base main \
  --head <branch>

Report PR URL when done.

8. Update ticket status to review

Scan all commit messages in the PR for ticket references (#NNN):

git log --oneline main..<branch>

Extract ticket IDs from #NNN patterns. For each ticket that is currently in_progress, update it to review:

db/connectors/ticket status <id> review

Report which tickets were moved to review. Skip tickets that are already done, review, cancelled, or backlog (only transition in_progressreview).

Arguments

If the user passes arguments (e.g., /pr-push "my title"), use them as the PR title instead of generating one.